tag:blogger.com,1999:blog-14806047713544399602024-03-14T13:46:08.302+08:00b94611029b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.comBlogger15125tag:blogger.com,1999:blog-1480604771354439960.post-30558466340035317712007-08-29T23:07:00.000+08:002008-12-10T09:04:08.828+08:00<a href="http://3.bp.blogspot.com/_N1_g09wqZas/RtWRJodx8cI/AAAAAAAAAFU/Pd4v3SeMTkM/s1600-h/ç
§ç+261.jpg"><img id="BLOGGER_PHOTO_ID_5104145347361501634" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_N1_g09wqZas/RtWRJodx8cI/AAAAAAAAAFU/Pd4v3SeMTkM/s320/%E7%85%A7%E7%89%87+261.jpg" border="0" /></a><br /><div><a href="http://3.bp.blogspot.com/_N1_g09wqZas/RtWOXodx8bI/AAAAAAAAAFM/RqoHWqqKmsc/s1600-h/ç
§ç+259.jpg"><img id="BLOGGER_PHOTO_ID_5104142289344786866" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_N1_g09wqZas/RtWOXodx8bI/AAAAAAAAAFM/RqoHWqqKmsc/s320/%E7%85%A7%E7%89%87+259.jpg" border="0" /></a> </div><br /><div></div><br /><div><br /></div><br /><div></div>b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com1tag:blogger.com,1999:blog-1480604771354439960.post-66519365314945842892007-07-29T20:19:00.000+08:002008-12-10T09:04:09.058+08:00<a href="http://2.bp.blogspot.com/_N1_g09wqZas/RqyF8l-ZePI/AAAAAAAAAFE/0kbp2p35Y8I/s1600-h/111.JPG"><img id="BLOGGER_PHOTO_ID_5092592554681661682" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_N1_g09wqZas/RqyF8l-ZePI/AAAAAAAAAFE/0kbp2p35Y8I/s320/111.JPG" border="0" /></a><br /><div></div>b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com0tag:blogger.com,1999:blog-1480604771354439960.post-4142735401618509132007-06-16T21:14:00.001+08:002007-06-16T21:14:38.425+08:00機動學第十三次作業1.<br />開始時,假設要設計一組複式齒輪使其轉速比為125。其考慮的因素及過程如下:<br />i 決定組合數:複式齒列可用串聯多個組合之方式達到整體轉速比。設計總是由最簡單的結構開始,由於每組之轉速比以維持在10以內為佳,超過此值時則需考慮增加齒輪組數。而轉速比125很明顯可以看出開平方的結果比10大,而剛好125又是5的三次方,所以直接開立方。<br /><br />ii 設驅動之小齒輪數最小為12齒(N2>=12)*,則依序可以得到對應大齒輪之齒數如下:<br /><br />N3=5x12=60<br />N3=5x13=65<br />N3=5x14=70<br />N3=5x15=75<br /><br />與網頁上例子不同的地方在於,網頁上的複式齒輪的齒數並非整數,所以要選最接近整數的,而作業中的齒輪剛好都為整數<br />故不用再加以討論<br /><br />可選用60:12<br /> 65:13<br /> 70:14<br /> 75:15等<br /><br />依此類推,選出60:12;60:12;60:12三組(或改用其他數字)<br /><br /><br />2.<br /><br />我覺得讓我覺得做的作好的一次作業就是第五次作業吧!<br />因為當時為了這個作業把整個假日,兩天的時間都花在<br />這個作業上,雖然做出來的手並不是非常的漂亮,但是<br />其在實際功能的說明對於沒有學過機動學的人也是相當<br />清楚,我想寫出來程式的那一瞬間應該是那幾天最快樂<br />的事情吧!b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com0tag:blogger.com,1999:blog-1480604771354439960.post-40865668645296931392007-06-08T00:03:00.000+08:002007-06-08T00:35:00.508+08:00機動學第十二次作業B94611029 林軍耀<br />1.<br /><br />5/31日曾全程來上課。<br /><br />2.1~2一組標準全齒輪齒輪之徑節為8(亦可使用自設值),<br />齒數分別為30T與48T,其工作壓力角為20度(可為<br />14.5或25度,自選)。<br /><br />設其徑節為8,<br />齒數為30T和48T<br />工作壓力角20度<br />使用程式function [c_ratio,c_length,ad,pc,pb,d2,d3,ag]=contact_ratio(pd,n2,n3, phi)<br /><br />其中pd=8<br />n2=30<br />n3=48<br />phi=20<br />可得<br /><br />接觸比c_ratio=1.7005<br />接觸長度c_length =0.6275<br />齒冠ad =0.1250<br />周節pc =0.3927<br />基周節pb = 0.3690<br />齒輪一節圓直徑d2 = 3.7500<br />齒輪二節圓直徑d3 = 6<br />齒輪一之接近角、遠退角及作用角ag = 10.4850 9.9211 20.4061<br />齒輪二之接近角、遠退角及作用角 6.5532 6.2007 12.7538<br /><br />其中<br /><br />齒輪一的節徑為30/8=3.75<br />齒輪二的節徑為48/8=6<br /><br />齒輪一的基圓直徑為3.75*cos(20)=3.523<br />齒輪二的基圓直徑為 6*cos(20)=5.638<br /><br />單位皆為吋<br /><br /><br />2.3此組齒輪是否會產生干涉現象?試列式證明之。<br /><br />(N2²+2N2 x N3)sin²>= 4 + 4N3<br />滿足此式就不會產生干涉<br /><br />利用講義中公式可以知道<br /><br />(20^2+2*20*48)(sin(20))^2 >= 4*(1+48)<br />271.1 > 196<br /><br />故可知,不會產生干涉現象<br /><br />2.4<br /><br />使用draw_gear和move2_gear<br />利用move2_gear(8,30,48,20,5)<br />產生動畫<br /><embed src="http://www.youtube.com/v/rHjZmMYGxY0" width="425" height="350" type="application/x-shockwave-flash"></embed><br /><br />附上draw_gear和move2_gear程式<br /><br /><span style="color:#ff0000;">function</span><span style="color:#ff0000;"> move2_</span><span style="color:#ff0000;">gear(Dpitch,nn1,nn2,phi,omega1)<br /></span><span style="color:#33cc00;">% move2_gear(Dpitch,nn1,nn2,phi,omega1)<br />% To draw a whole gear<br />% Inputs:<br />% Inputs:<br />% Dpitch:dimetral pitch<br />% nn1,nn2: no. of teeth for both gears<br />% phi:pressure angle, degrees<br />% omega1: angular velocity of gear 1<br />% Example move2_gear(10,15,20,20,10)<br /></span>clf;<br />d2r=pi/180;delt=0.01;<br />[coord1,r1,rb1]=one_tooth(Dpitch,nn1,phi,360,0,0);<br />[coord2,r2,rb2]=one_tooth(Dpitch,nn2,phi,360,0,0);<br />st=180/nn2;if nn1+nn2>2*fix((nn1+nn2)/2),st=0;end<br />coord2=rotate2D(coord2,180+st,0,0);<br />xc1=coord1(:,1);yc1=coord1(:,2);<br />xc2=coord2(:,1);yc2=coord2(:,2);<br />height=max(r1,r2)*1.2;<br />ar=min(abs(r1),abs(r2));<br />coord=bushing(ar/5,0,0); % Get the coordinates of 1st bushing<br />xb1=coord(:,1)-r1;yb1=coord(:,2);<br />xb2=coord(:,1)+r2;yb2=coord(:,2);<br />coord=bushing(-r1,-r1,0);%Get the 1st pitch circle<br />xp1=coord(:,1);yp1=coord(:,2);<br />coord=bushing(-r2,r2,0);% Get the 2nd pitch circle<br />xp2=coord(:,1);yp2=coord(:,2);<br />plot(xb1,yb1,'r-');hold on;<br />plot(xb2,yb2,'k-');<br />plot(xp1,yp1,'r:');<br />plot(xp2,yp2,'k:');<br />plot([-r1,r2]',[0,0]','r:');<br />xx1=min([r1,r2])/2;phir=(90-phi)*d2r;<br />plot([0,0]',[-xx1*2,xx1*2]','b:');<br />plot([-xx1 xx1]',[-xx1*tan(phir), xx1*tan(phir)]','b:');<br /><br />cir1=line('xdata',[],'ydata',[],'erasemode','xor','linewidth',1,'color','r');<br />cir2=line('xdata',[],'ydata',[],'erasemode','xor','linewidth',1,'color','k');<br />line1=line('xdata',[],'ydata',[],'erasemode','xor','linewidth',2,'color','r');<br />line2=line('xdata',[],'ydata',[],'erasemode','xor','linewidth',2,'color','k');<br />lx1=[0 -r1]';ly1=[0,0]';<br />lx2=[r2,0]';ly2=[0,0]';<br />axis([-2.5*r1 2.5*r2 -height height]);<br />axis equal;<br />title('Press Ctl-C to stop');<br />theta1=180;theta2=180;s1=omega1*delt/d2r;<br />while 1,<br />z1=rotate2D([xc1,yc1],theta1,-r1,0);<br />z2=rotate2D([xc2,yc2],theta2,r2,0);<br />L1=rotate2D([lx1,ly1],theta1,-r1,0);<br />L2=rotate2D([lx2,ly2],theta2,r2,0);<br />set(cir1,'xdata',z1(:,1),'ydata',z1(:,2)); % For 1st circle moving<br />set(cir2,'xdata',z2(:,1),'ydata',z2(:,2)); % For 2nd circle moving<br />set(line1,'xdata',L1(:,1),'ydata',L1(:,2)); % For 1st line<br />set(line2,'xdata',L2(:,1),'ydata',L2(:,2)); % For 2nd line<br />drawnow;<br />pause(1/s1); %Stop for a while so we can see the graph<br />theta1=theta1+s1;<br />theta2=theta2-s1*r1/r2;<br />if theta1>360, theta1=theta1-360;end; %Reverse the direction at bondary line<br />if theta2>360,theta2=theta2-360;end;<br />end<br /><br /><br /><br /><br /><span style="color:#33cc00;">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><br /><span style="color:#ff0000;">function [coords,rp,rb]=one_tooth</span><span style="color:#ff0000;">(Dp,N,phi,range,x0,y0)<br /></span><span style="color:#33cc00;">% [coords]=draw_gear(Dp,N,phi,range,x0,y0)<br />% To draw a whole gear<br />% Inputs:<br />% Dp: Diametrial pitch<br />% N: no of teeth in a gear<br />% phi: pressure angle, degrees<br />% range: the section range to be drawn<br />% Example one_tooth(10,10,20,360)<br /></span>nn=10;<br />d2r=pi/180;<br />phir=phi*d2r;<br />rp=N/Dp/2;<br />pc=pi/Dp;<br />ra=rp+1/Dp;<br />rb=rp*cos(phir);<br />rd=rp-1.25/Dp;<br />thpb=pc/rp;% angle respect to one pitch<br />tp=pc/2;<br />rr=linspace(rb,ra,nn)';<br />invphi=tan(phir)-phir;<br />for i=1:nn<br />beta=acos(rp/rr(i)*cos(phir));<br />tt(i)=(tp/rp/2+invphi-tan(beta)+beta);<br />end<br />coord1=[rr.*cos(tt') rr.*sin(tt')];<br />coord3=reverse(coord1);<br />th1=linspace(thpb/2,thpb/2-tt(nn),nn)';<br />coord0=[cos(th1) sin(th1)]*rd;<br />th2=linspace(tt(nn),-tt(nn),nn)';<br />coord2=[cos(th2) sin(th2)]*ra;<br />coord4=reverse(coord0);<br />coord=[coord0;coord1;coord2;coord3;coord4];<br />theta=thpb/d2r;<br />coords=[];i=0;<br />while i<range> coord1=rotate2D(coord,-i,x0,y0);<br />coords=[coords;coord1];<br />i=i+theta;<br />end<br /><br />function [B]=reverse(A)<br />nn=length(A); B=A;<br />for i=1:nn,B(i,:)=A(nn-i+1,:);end<br />B=[B(:,1) -B(:,2)];<br /><br /><span style="color:#33cc00;">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<br /></span><span style="color:#ff0000;">function [coords] = bushing(rr,x0,y0)</span><br />d2r=pi/180;<br />theta=[360:-10:0]*d2r;<br />r=abs(rr);<br />rx=r*cos(theta);ry=r*sin(theta);<br />if rr<0, rx=rx+x0; ry=ry+y0; coords=[rx' ry']; return; end; rx1=rx/2;rx2=-rx1; ry1=ry/2;ry2=-ry1; r4=r+r/4;r3=r/3; bx=[ 0 0 0 -r -r -r4 -r4 r4 r4 -r r r]; by=[r3 -r3 0 0 -r -r -r4 -r4 -r -r -r 0]; coords(:,1)=[bx rx rx1 rx2]'+x0; coords(:,2)=[by ry ry1 ry2]'+y0;<br /><span style="color:#33cc00;">%%%%%%%%%%%%%%%%%%% </span><br /><span style="color:#ff0000;">function [coords]=rotate2D(coord,theta,x0,y0)</span><br /> th=theta*pi/180; c=cos(th);<br />s=sin(th);fact=[c s;-s c];<br /> coords=coord*fact;<br /> coords(:,1)=coords(:,1)+x0; coords(:,2)=coords(:,2)+y0;<br /> <span style="color:#ff0000;">function [coords]=draw_gear(Dp,N,phi,range,x0,y0)</span><br /><span style="color:#33cc00;">% [coords]=draw_gear(Dp,N,phi,range,x0,y0) </span><br /><span style="color:#33cc00;">%To draw a whole gear % Inputs: % Dp: Diametrical pitch </span><br /><span style="color:#33cc00;">% N: no of teeth in a gear % phi: pressure angle, degrees </span><br /><span style="color:#33cc00;">% range: the section range to be drawn % x0,y0: the location of the gear center </span><br /><span style="color:#33cc00;">% Example [coords]=draw_gear(10,15,20,360,0,0) </span><br />[coord,theta,rp,rb]=tooth(Dp,N,phi); coords=[];<br />i=0; while i<range> coord1=rotate2D(coord,-i,x0,y0);<br />coords=[coords;coord1];<br />i=i+theta;<br />end<br />plot(coords(:,1),coords(:,2));hold on;<br />[coord]=bushing(rp/8,x0,y0);<br />plot(coord(:,1),coord(:,2),'b-');<br />[coord]=bushing(-rp,x0,y0);<br />plot(coord(:,1),coord(:,2),'r:');<br />[coord]=bushing(-rb,x0,y0);<br />plot(coord(:,1),coord(:,2),'b:');<br />axis equal;<br /><br /><br /><br /><br /><span style="color:#33cc00;">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% </span><br /><span style="color:#ff0000;">function [coords,theta,rp,rb]=tooth(Dp,N,phi)<br /></span><span style="color:#33cc00;">% Example tooth(10,10,20)<br /></span>nn=10;<br />d2r=pi/180;<br />phir=phi*d2r;<br />rp=N/Dp/2;<br />pc=pi/Dp;<br />ra=rp+1/Dp;<br />rb=rp*cos(phir);<br />rd=rp-1.25/Dp;<br />thpb=pc/rp;% angle respect to one pitch<br />tp=pc/2;<br />rr=linspace(rb,ra,nn)';<br />invphi=tan(phir)-phir;<br />for i=1:nn<br />beta=acos(rp/rr(i)*cos(phir));<br />tt(i)=(tp/rp/2+invphi-tan(beta)+beta);<br />end<br />coord1=[rr.*cos(tt') rr.*sin(tt')];<br />coord3=reverse(coord1);<br />th1=linspace(thpb/2,thpb/2-tt(nn),nn)';<br />coord0=[cos(th1) sin(th1)]*rd;<br />th2=linspace(tt(nn),-tt(nn),nn)';<br />coord2=[cos(th2) sin(th2)]*ra;<br />coord4=reverse(coord0);<br />coords=[coord0;coord1;coord2;coord3;coord4];<br />theta=thpb/d2r;<br /><br /><span style="color:#33cc00;">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<br /></span><span style="color:#ff0000;">function [B]=reverse(A)<br /></span>nn=length(A); B=A;<br />for i=1:nn,B(i,:)=A(nn-i+1,:);end<br />B=[B(:,1) -B(:,2)];<br /><br /><span style="color:#33cc00;">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<br /></span><span style="color:#ff0000;">function [coords] = bushing(rr,x0,y0)<br /></span>d2r=pi/180;<br />theta=[360:-10:0]*d2r;<br />r=abs(rr);<br />rx=r*cos(theta);ry=r*sin(theta);<br />if rr<0,<br />rx=rx+x0;<br />ry=ry+y0;<br />coords=[rx' ry'];<br />return;<br />end;<br />rx1=rx/2;rx2=-rx1;<br />ry1=ry/2;ry2=-ry1;<br />r4=r+r/4;r3=r/3;<br />bx=[ 0 0 0 -r -r -r4 -r4 r4 r4 -r r r];<br />by=[r3 -r3 0 0 -r -r -r4 -r4 -r -r -r 0];<br />coords(:,1)=[bx rx rx1 rx2]'+x0;<br />coords(:,2)=[by ry ry1 ry2]'+y0;<br /><br /><span style="color:#33cc00;">%%%%%%%%%%%%%%%%%%%%%%%%<br /></span><br /><span style="color:#ff0000;">function [coords]=rotate2D(coord,theta,x0,y0)</span><br />th=theta*pi/180;<br />c=cos(th);s=sin(th);fact=[c s;-s c];<br />coords=coord*fact;<br />coords(:,1)=coords(:,1)+x0;<br />coords(:,2)=coords(:,2)+y0;b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com2tag:blogger.com,1999:blog-1480604771354439960.post-61152894493381291302007-05-30T21:12:00.001+08:002008-12-10T09:04:09.756+08:00機動學第十一次作業b94611029林軍耀<br /><br />1.本人本週(5/24)有來上課。<br /><br />2.<br />使用程式<br />function plot_dwell(ctheta,s,pattern,range)<br />%ctheta = cam angle (deg)--can be a matrix<br />%pattern = denote the type of motion used(a 3 element-row matrix)<br />% 1:uniform 2:parabolic 3:simple harmonic 4: cycloidal<br />% 5:polynomial motion<br />% example [4 3]%range =the degrees the specific motion starts<br />% Output: y is for displacement, yy is the derivative of the displacement with<br />% respect to theta, and yyy the second derivative with respect <br />% to theta.<br />% Example plot_dwell(0:10:360,2,[4 3],[90 180 240]);figure(1);<br />clf;<br />[y,yy,yyy]=dwell(ctheta,range,pattern);<br />h1=plot(ctheta,y*s,'b-',ctheta,yy*s,'k-',ctheta,yyy*s,'r-');<br />legend('Displacement','Velocity','Acceleration',3);<br />xlabel('Elapsed Angle, degrees');<br />grid;<br /><br /><br /><br />因為等加速度的位移軌跡<br />就是拋物線<br />所以在pattern中輸入2<br /><br /><br />返程等速<br />plot_dwell(0:10:360,5,[2 1],[100 200 260]);<br /><a href="http://1.bp.blogspot.com/_N1_g09wqZas/Rl14a4wi4cI/AAAAAAAAAEQ/rufoC-S3ehc/s1600-h/%E8%BF%94%E7%A8%8B%E7%AD%89%E9%80%9F.jpg"><img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_N1_g09wqZas/Rl14a4wi4cI/AAAAAAAAAEQ/rufoC-S3ehc/s320/%E8%BF%94%E7%A8%8B%E7%AD%89%E9%80%9F.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5070341158796976578" /></a><br /><br />返程等加速度<br />plot_dwell(0:10:360,5,[2 2],[100 200 260]);<br /><a href="http://4.bp.blogspot.com/_N1_g09wqZas/Rl14nowi4dI/AAAAAAAAAEY/TQbszUAnOd0/s1600-h/%E8%BF%94%E7%A8%8B%E7%AD%89%E5%8A%A0%E9%80%9F%E5%BA%A6.jpg"><img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_N1_g09wqZas/Rl14nowi4dI/AAAAAAAAAEY/TQbszUAnOd0/s320/%E8%BF%94%E7%A8%8B%E7%AD%89%E5%8A%A0%E9%80%9F%E5%BA%A6.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5070341377840308690" /></a><br /><br />返程簡諧<br />plot_dwell(0:10:360,5,[2 3],[100 200 260]);<br /><a href="http://1.bp.blogspot.com/_N1_g09wqZas/Rl14x4wi4eI/AAAAAAAAAEg/E42zvX0tmFo/s1600-h/%E8%BF%94%E7%A8%8B%E7%B0%A1%E8%AB%A7.jpg"><img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_N1_g09wqZas/Rl14x4wi4eI/AAAAAAAAAEg/E42zvX0tmFo/s320/%E8%BF%94%E7%A8%8B%E7%B0%A1%E8%AB%A7.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5070341553933967842" /></a><br /><br />返程擺線<br />plot_dwell(0:10:360,5,[2 4],[100 200 260]);<br /><a href="http://3.bp.blogspot.com/_N1_g09wqZas/Rl15LYwi4fI/AAAAAAAAAEo/Ez2OcDLhIWE/s1600-h/%E8%BF%94%E7%A8%8B%E6%93%BA%E7%B7%9A.jpg"><img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_N1_g09wqZas/Rl15LYwi4fI/AAAAAAAAAEo/Ez2OcDLhIWE/s320/%E8%BF%94%E7%A8%8B%E6%93%BA%E7%B7%9A.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5070341992020632050" /></a><br /><br />返程多項式<br />plot_dwell(0:10:360,5,[2 5],[100 200 260]);<br /><a href="http://2.bp.blogspot.com/_N1_g09wqZas/Rl15UIwi4gI/AAAAAAAAAEw/s8lgNMwLUMQ/s1600-h/%E8%BF%94%E7%A8%8B%E5%A4%9A%E9%A0%85%E5%BC%8F.jpg"><img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_N1_g09wqZas/Rl15UIwi4gI/AAAAAAAAAEw/s8lgNMwLUMQ/s320/%E8%BF%94%E7%A8%8B%E5%A4%9A%E9%A0%85%E5%BC%8F.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5070342142344487426" /></a><br /><br /><br />求出各種返程型態之圖形<br /><br />其中<br />1:等速運動uniform 2:抛物線parabolic 3:簡諧simple harmonic<br />4:擺線cycloidal 5:多項式polynomial motion<br /><br />使用function [y,yy,yyy]=dwell(ctheta,range,pattern)<br /><br /><pre><br />function [y,yy,yyy]=dwell(ctheta,range,pattern)<br />%<br />% This function determines the follower displacement and derivatives<br />% for a full rotation cam. The routine is set up for the displacement<br />% schedule in Examples 6.7 and 6.8% The input values are:<br />%ctheta = individual cam angles (deg)--can be a matrix to be processed<br />%pattern = denote the types of motion used(a 2 element-row matrix). types<br />% are:<br />% 1:uniform 2:parabolic 3:simple harmonic 4: cycloidal<br />% 5:polynomial motion% e.g. [4 3]:cycloidal motion for rise and harmonic motion for<br />% return%range =the degrees the specific motion starts(array of 3 elements), e.g.<br />% [90 180 240] starts to rise at 90 deg. and ends at 180 deg.<br />% starts to return at 240 deg. and ends at 360 deg.<br />% Output: y is for displacement, yy is the derivative of the displacement with<br />% respect to theta, and yyy the second derivative with respect to theta.<br />% Example dwell(60,[90 180 240],[4 3]);<br />% Author:DSFon, BIME, NTU Revise Date:May 18, 2007<br />d2r=pi/180;<br />theta=ctheta*d2r;range=range*d2r;<br />dim=length(ctheta);y=zeros(size(ctheta));<br />yy=y;yyy=y;<br />for i=1:dim<br /> if theta(i)>=range(3) %for the last motion(downward)<br /> mode=pattern(2);<br /> betax=2*pi-range(3);<br /> switch mode, <br /> case 1, [y(i),yy(i),yyy(i)]=uniform(theta(i), range(3),betax,-1);<br /> case 2, [y(i),yy(i),yyy(i)]=parabolicm(theta(i), range(3),betax,-1);<br /> case 3, [y(i),yy(i),yyy(i)]=harmonicm(theta(i), range(3),betax,-1);<br /> case 4, [y(i),yy(i),yyy(i)]=cycloidm(theta(i), range(3),betax,-1);<br /> case 5, [y(i),yy(i),yyy(i)]=polynorm(theta(i), range(3),betax,-1);<br /> end;<br /> elseif theta(i)>=range(2) % dewell on the top<br /> y(i)=1;elseif theta(i)>=range(1) % for the 1st motion(upward)<br /> mode=pattern(1);betax=range(2)-range(1);<br /> switch mode,<br /> case 1, [y(i), yy(i), yyy(i)]=uniform(theta(i), range(1),betax,+1);<br /> case 2, [y(i), yy(i), yyy(i)]=parabolicm(theta(i), range(1),betax,+1);<br /> case 3, [y(i), yy(i), yyy(i)]=harmonicm(theta(i), range(1),betax,+1);<br /> case 4, [y(i), yy(i), yyy(i)]=cycloidm(theta(i), range(1),betax,+1);<br /> case 5, [y(i), yy(i), yyy(i)]=polynorm(theta(i), range(1),betax,+1);end<br /> end<br />end<br />%*********************************************<br />function [t1, t2, t3]=uniform(th, thinit,beta,direct)<br />% code = 1 for uniform motion<br />%th=cam angle, radians%beta=motion range, radians<br />%thinit=starting cam angle, radians%beta=motion range, radians<br />%direct=motion type; +1 for upward, -1 for downward<br />theta=th-thinit;t1=theta/beta;<br />if direct==-1,t1=1-t1;end;<br />t2=direct*1/beta;t3=0;<br />%*********************************************<br />function [t1, t2, t3]=parabolicm(th,thinit,beta,direct)<br />% code = 2 for parabolic motion%th=cam angle, radians<br />%beta=motion range, radians%thinit=starting cam angle, radians<br />%beta=motion range, radians%direct=motion type; +1 for upward, -1 for downward<br />theta=th-thinit;thmed=thinit+beta/2;thx=theta/beta;<br />if direct==1,<br /> if th<thmed<br /> t1=2*thx^2;<br /> t3=4/beta/beta;<br /> t2=t3*th;<br /> else<br /> t1=1-2*(1-thx)^2;<br /> t2=4/beta*(1-thx);<br /> t3=-4/beta/beta;<br /> end<br />else<br /> if th<thmed<br /> t1=1-2*thx^2;<br /> t3=-4/beta/beta;<br /> t2=t3*th;<br /> else<br /> t1=2*(1-thx)^2;<br /> t2=-4/beta*(1-th/beta);<br /> t3=4/beta/beta;<br /> end<br />end<br /> %*********************************************<br /> function [t1, t2, t3]=harmonicm(th,thinit,beta,direct)<br /> % code = 3 for harmonic motion%th=cam angle, radians<br /> %beta=motion range, radians%thinit=starting cam angle, radians<br /> %beta=motion range, radians%direct=motion type; +1 for upward, -1 for downward<br /> theta=th-thinit;t1=0.5*(1-cos(pi*theta/beta));<br /> if direct==-1, t1=1-t1;end;<br /> t2=direct*(0.5*pi/beta)*sin(pi*theta/beta);<br /> t3=direct*0.5*(pi/beta)^2*cos(pi*theta/beta);<br /> %*********************************************<br /> function [t1, t2, t3]=cycloidm(th,thinit,beta,direct)<br /> %% code = 4 for cycloidal motion%th=cam angle, radians<br /> %thinit=starting cam angle, radians%beta=motion range, radians<br /> %direct=motion type; +1 for upward, -1 for downward<br /> theta=th-thinit;<br /> t1=theta/beta-(0.5/pi)*sin(2*pi*theta/beta);<br /> if direct==-1,t1=1-t1;end;<br /> t2=direct*(1-cos(2*pi*theta/beta));<br /> t3=direct*2*pi/beta/beta*sin(2*pi*theta/beta);<br /> %*********************************************<br /> function [t1, t2, t3]=polynorm(th,thinit,beta,direct)<br /> %% code = 5 for polynormial motion%th=cam angle, radians<br /> %thinit=starting cam angle, radians<br /> %beta=motion range, radians%direct=motion type; +1 for upward, -1 for downward<br /> theta=th-thinit;<br /> thx=theta/beta;t1=thx*thx*thx*(10+thx*(-15+thx*6));<br /> if direct==-1, t1=1-t1;end;<br /> t2=direct*(30/beta)*thx*thx*(1+thx*(-2+thx));<br /> t3=direct*(60/beta/beta)*thx*(1+thx*(-3 +2*thx));<br /></pre><br /><br />3.<br /><br />利用[x y]=pincam([0:10:360],15,s,0,10,[100 200 260],[2 1],-1)<br /> 以及[s]=drawcam(15,y,1)<br /> 作出圖形<br /> 與第四小題的動畫一同呈現<br /><br />4.<br /><br />利用上面的程式<br />[s]=drawcam(15,y,1)<br /><br />再用<br />for i=1:1:360<br />x2=s(:,1);<br />y2=s(:,2);<br /> x3=x2*cosd(i)-y2*sind(i);<br /> y3=x2*sind(i)+y2*cosd(i);<br /> axis([-30 30 -30 30]);<br /> plot(x3,y3);<br /> pause(0.01);<br /> axis([-30 30 -30 30]);<br /> axis equal;<br /> grid on;<br />end;<br /><br />作出動畫<br /><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/gzLlpx0ihPQ"></param><embed src="http://www.youtube.com/v/gzLlpx0ihPQ" type="application/x-shockwave-flash" width="425" height="350"></embed></object><br /><br />附件1<br />function [x,y]=pincam(cth,r0,s,e,L,range,pattern,cw)<br />%Find the pin type cam with an offsect e%Inputs:<br />% cth:angle of cam, degrees% r0:radius of base circle<br />% e:offset% s:stroke<br />% L:length of pin<br />% cw:rotation direction of cam(-counterclockwise,+clockwise<br />%pattern = denote the type of motion used(a 3 element-row matrix)<br />% 1:uniform 2:parabolic 3:simple harmonic 4: cycloidal<br />% 5:polynomial motion% example [4 3]<br />%range =the degrees the specific motion starts, eg.[90 180 240]<br />% Example: [x y]=pincam([10 60],5,2,1,10,[90 180 240],[4 3],-1)<br />figure(1);<br />clf;<br />th=cth*pi/180;<br />s0=sqrt(r0*r0-e*e);<br />for i=1:length(cth)<br /> t=th(i)*cw;<br /> A=[cos(t) -sin(t);sin(t) cos(t)];<br /> [ym,yy,yyy]=dwell(cth(i),range,pattern);<br /> x0=s0+ym*s;<br /> Sx=[0 x0 x0+L;e e e];<br /> X=A\Sx;<br /> x(i)=X(1,2)<br /> y(i)=X(2,2)<br /> line(X(1,1:2),X(2,1:2));<br /> line(X(1,2:3),X(2,2:3),'linewidth',3,'color','red')<br />end<br /> hold on;<br /> plot([0 x],[0 y],'ro',x,y,'k-')<br /> <br />附件2<br />function [rp,rb]=drawcam(r0,y,direct)<br />% To draw a cam profile with base radius of r0 and rise in y<br />% The program may work with P8_11% Input: direct: +1 for clockwise; -1 for counterclockwise<br />%<br />% Example: [s,T]=drawcam(35,y)<br />d2r=pi/180;nn=length(y);<br />LM=max(y+r0);figure(2);<br />line([-LM LM]',[0 0]');<br />line([0 0]',[-LM LM]');<br />if direct==1,<br /> theta=linspace(0,360,nn)'*d2r;<br />else<br /> theta=linspace(360,0,nn)'*d2r;<br />end<br /> theta=theta+pi/2;<br /> rb=[r0*cos(theta) r0*sin(theta)];<br /> rp=[(r0+y').*cos(theta) (r0+y').*sin(theta)];<br /> line(rb(:,1),rb(:,2),'color','r');<br /> line(rp(:,1),rp(:,2));<br /> axis equal;<br /> grid on;b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com1tag:blogger.com,1999:blog-1480604771354439960.post-47092575579841133302007-05-26T23:05:00.000+08:002008-12-10T09:04:09.858+08:00機動學第十次作業本週(5/17)有來上課。<br /><br />10.2<br /><a href="http://4.bp.blogspot.com/_N1_g09wqZas/RlhOY4wi4bI/AAAAAAAAAEI/E0-rZChgPP0/s1600-h/10-1.JPG"><img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_N1_g09wqZas/RlhOY4wi4bI/AAAAAAAAAEI/E0-rZChgPP0/s320/10-1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5068887570065318322" /></a><br /><br /><br />當一桿以桿上一點M做等角速度迴轉運動時,端點之速度為端點至M點之距離乘以角速度w<br />若M點為桿外一點,V=仍然為端點至M點之距離*ω<br /> a=端點至M之距離*ω*ω<br /><br />假若M以V等速水平移動<br />θ為桿與水平面之夾角<br />圖請見網頁<br />則P點此時之速度為<br /><br />V+r*ω*sinθ - r*ω*cosθ<br /><br />加速度維持不變<br /><br /><br /><br />假若M又具有加速度a)時<br />則P點之速度假設與上述相同,<br />則加速度為<br /><br />V+r*ω^2*cosθ + r*ω^2*sinθ<br /><br /><br />10.3<br /><br />function sldwork(R,L,e)<br />th1=slider_limit1(R,L,e); <br />th2=90; <br />angle=linspace(th1,th2,100);<br />d=slider_solved(angle,R,L,e,1); <br />x=R*cosd(angle); <br />y=R*sind(angle);<br /><br />for i=1:100<br />hold on<br />plot([0,x(i),d(i)],[0,y(i),e],'linewidth',4); <br />plot([d(i)-2,d(i)+2,d(i)+2,d(i)-2,d(i)-2],[e-2,e-2,e+2,e+2,e-2]); <br />plot([x(i),0],[y(i),e-d(i)*(y(i)-e)/(x(i)-d(i))],'b.','linewidth',8) <br />plot([d(i),d(i)],[0,y(i)*d(i)/x(i)],'b.') <br />axis equal;<br />axis ([-10 50 -10 50]);<br />pause(0.03);<br />end<br /><br />程式如上<br /><br />動畫中出現的兩個點為瞬心<br />還有三個瞬心分別出現在旋轉結以及滑塊與桿之連結點上<br />第六個瞬心在無限遠的地方<br />為滑塊的瞬心<br /><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/KSTh0WCJfDA"></param><embed src="http://www.youtube.com/v/KSTh0WCJfDA" type="application/x-shockwave-flash" width="425" height="350"></embed></object>b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com1tag:blogger.com,1999:blog-1480604771354439960.post-84322164901207797072007-05-16T20:57:00.001+08:002008-12-10T09:04:10.197+08:00機動學第九次作業本人本週(5/3)有來上課<br /><br />b94611029 林軍耀<br /><br /><br />由於偏置量會影響滑桿之活動範圍<br />所以都曲柄如果要轉360度時<br />其連桿與曲桿及滑塊三者必須構成<br />某種三角形的關係<br /><br />連桿長-曲桿長 大於 偏置量<br /><br />由課本4-35頁的slider_limit程式可知道,<br />由於偏置量e大於連桿與曲桿之差,<br />所以會產生極限點<br />在theta = 6.9199度時,有右極限角<br /> <br />令R=29+10=39<br /> L=39+5=44<br /> e=10<br />參考下圖<br /><a href="http://1.bp.blogspot.com/_N1_g09wqZas/Rkx9_Iwi4aI/AAAAAAAAAEA/9R4tQiUiv8M/s1600-h/9-1.jpg"><img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_N1_g09wqZas/Rkx9_Iwi4aI/AAAAAAAAAEA/9R4tQiUiv8M/s320/9-1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5065562204521292194" /></a><br /><br />以及利用move_sldpaths([10,R,L,10],0,0,3,10,10,0,1,0,4,100)以及<br />slider_draw(39,44,10)做出動畫<br /><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/5IEmSaF_4g8"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/5IEmSaF_4g8" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com0tag:blogger.com,1999:blog-1480604771354439960.post-67681923806833609202007-05-09T20:24:00.000+08:002008-12-10T09:04:10.761+08:00機動學第八次作業本人(4/26)曾來上課。<br />8-1<br />利用f4bar程式<br /><br />function [data,form] = f4bar(r,theta1,theta2,td2,tdd2,mode,linkdrive)<br />%<br />%function [data,form] = f4bar(r,theta1,theta2,td2,tdd2,mode,linkdrive)<br />% This function analyzes a four-bar linkage when the crank is the<br />% driving link. The input data are:<br />% theta1,theta2 are angles in degrees<br />% r=[r1 r2 r3 r4]= lengths of links(1=frame)<br />%td2 = crank or coupler angular velocity (rad/sec)<br />%tdd2 = crank or coupler angular acceleration (rad/sec^2)<br />%mode = +1 or -1. Identifies assembly mode<br />%linkdrive = 0 for crank as driver; 1 for coupler as driver<br />%data (1:4,1) = link positions for 4 links<br />%data (1:4,2) = link angles in degrees<br />%data (1:4,3) = link angular velocities<br />%data (1:4,4) = link angular accelerations<br />%data (1,5) = velocity of point Q<br />%data (2,5) = velocity of point P<br />%data (3,5) = acceleration of point Q<br />%data (4,5) = acceleration of point P<br />%data (1,6) = position of Q<br />%data (2,6) = position of P<br />%form = assembly status. form = 0, mechanism fails to<br />% assemble.<br />% program revised from Waldron's Textbook<br />% Revised:DSFON, BIME, NTU. Date: Feb. 7, 2007<br />if nargin<7,linkdrive=0;end<br />if nargin<6,mode=1;end<br />data=zeros(4,6);<br />% if coupler is the driver, interchange the vetor 3 & 2<br />if linkdrive==1,r=[r(1) r(3) r(2) r(4)];end<br />rr=r.*r;d2g=pi/180;<br />[theta,td,tdd]=deal(zeros(4,1));<br />theta(1:2)=[theta1 theta2]*d2g;<br />t1=theta(1);tx=theta(2);<br />s1=sin(t1);c1=cos(t1);<br />sx=sin(tx);cx=cos(tx);<br />% position calculations<br />A=2*r(1)*r(4)*c1-2*r(2)*r(4)*cx;<br />C=rr(1)+rr(2)+rr(4)-rr(3)-2*r(1)*r(2)*(c1*cx+s1*sx);<br />B=2*r(1)*r(4)*s1-2*r(2)*r(4)*sx;<br />pos=B*B-C*C+A*A;<br />if pos>=0,<br />form=1;<br />% Check for the denominator equal to zero<br />if abs(C-A)>=1e-5<br /> t4=2*atan((-B+mode*sqrt(pos))/(C-A));<br /> s4=sin(t4);c4=cos(t4);<br /> t3=atan2((r(1)*s1+r(4)*s4-r(2)*sx),(r(1)*c1+r(4)*c4-r(2)*cx));<br /> s3=sin(t3);c3=cos(t3);<br />else<br />% If the denominator is zero, compute theta(3) first<br /> A=-2*r(1)*r(3)*c1+2*r(2)*r(3)*cx;<br /> B=-2*r(1)*r(3)*s1+2*r(2)*r(3)*sx;<br /> C=rr(1)+rr(2)+rr(3)-rr(4)-2*r(1)*r(2)*(c1*cx+s1*sx);<br /> pos=B*B-C*C+A*A;<br /> if pos>=0,<br /> t3=2*atan((-B-mode*sqrt(pos))/(C-A));<br /> s3=sin(t3); c3=cos(t3);<br /> t4=atan2((-r(1)*s1+r(3)*s3+r(2)*sx),...<br /> (-r(1)*c1+r(3)*c3+r(2)*cx));<br /> s4=sin(t4);c4=cos(t4);<br /> end<br />end<br />theta(3)=t3;theta(4)=t4;<br />%velocity calculation<br /> td(2)=td2;<br /> AM=[-r(3)*s3, r(4)*s4; -r(3)*c3, r(4)*c4];<br /> BM=[r(2)*td(2)*sx;r(2)*td(2)*cx];<br /> CM=AM\BM;<br /> td(3)=CM(1);td(4)=CM(2);<br /><br />%acceleration calculation<br /><br />tdd(2)=tdd2;<br />BM=[r(2)*tdd(2)*sx+r(2)*td(2)*td(2)*cx+r(3)*td(3)*td(3)*c3-...<br /> r(4)*td(4)*td(4)*c4;r(2)*tdd(2)*cx-r(2)*td(2)*td(2)*sx-...<br /> r(3)*td(3)*td(3)*s3+r(4)*td(4)*td(4)*s4];<br />CM=AM\BM;<br />tdd(3)=CM(1);tdd(4)=CM(2);<br />%store results in array data<br />% coordinates of P and Q<br />if linkdrive==1,<br /> c2=c3;c3=cx;s2=s3;s3=sx;<br /> r(2:3)=[r(3) r(2)];theta(2:3)=[theta(3) theta(2)];<br /> td(2:3)=[td(3) td(2)];tdd(2:3)=[tdd(3) tdd(2)];<br />else<br /> c2=cx;s2=sx;<br />end<br />for j=1:4,<br /> data(j,1:4)=[r(j)*exp(i*theta(j)) theta(j)/d2g td(j) tdd(j)] ;<br />end % position vectors<br />data(1,5)=r(2)*td(2)*exp(i*theta(2));%velocity for point Q<br />data(2,5)=r(4)*td(4)*exp(i*theta(4));%velocity for point P<br />data(3,5)=r(2)*(i*tdd(2)-td(2)*td(2))*exp(i*theta(2));%acc of Q<br />data(4,5)=r(4)*(i*tdd(4)-td(4)*td(4))*exp(i*theta(4));%acc of P<br />data(1,6)=data(2,1);%position of Q, again<br />data(2,6)=data(1,1)+data(4,1);% position of P<br /><br />%find the accelerations<br />else<br /> form=0;<br /> if linkdrive==1,<br /> r=[r(1) r(3) r(2) r(4)];<br /> for j=1:4, data(j,1)=r(j).*exp(i*theta(j));end % positions<br /> end<br />end<br /><br /><br />輸入[val,form]=f4bar([4 3 3 5],0,45,10,0,-1,0)<br /><br /><br /> <br /> 位置 角速度 角加速度<br /><br />I (0.0,0.0) 0 0<br />II (2.1,2.1) 10.0000 0<br />III (3.2,4.9) 16.2681 491.4428<br />IV (4.0,0.0) 4.9677 383.6120<br /><br />8-2<br />利用drawlinks程式為之<br />此程式有利用到f4bar的值<br />所以在程式中只要設定好桿長以及角度<br />再加上模式與驅動桿的設定,就可以完成<br /><br />function [values]=drawlinks(r,th1,th2,mode,linkdrive)<br />if nargin<5,linkdrive=0;end<br />if nargin<4,mode=1;end<br />[values b]=f4bar(r,th1,th2,0,0,mode,linkdrive);<br />rr=values(:,1);<br />rr(3,1)=rr(1,1)+rr(4,1);<br />rx=real(rr(:,1));rx(4)=0;<br />ry=imag(rr(:,1));ry(4)=0;<br />if b==1<br /> plot([0 rx(1)],[0 ry(1)],'k-','LineWidth',4);<br /> hold on;<br /> if linkdrive==0<br /> plot([0 rx(2)],[0 ry(2)],'b-','LineWidth',1.5);<br /> plot([rx(2) rx(3)],[ry(2) ry(3)],'r-','LineWidth',2);<br /> else<br /> plot([0 rx(2)],[0 ry(2)],'r-','LineWidth',2);<br /> plot([rx(2) rx(3)],[ry(2) ry(3)],'b-','LineWidth',1.5);<br /> end<br /> plot([rx(1) rx(3)],[ry(1) ry(3)],'g-','LineWidth',1.5);<br /> plot(rx,ry,'bo');<br /> text(0,0,' O');text(rx(1),ry(1),' R');<br /> text(rx(2),ry(2),' P');text(rx(3),ry(3),' Q');<br />else<br /> fprintf('Combination of links fail at degrees %6.1f\n',th2);<br />end<br /> axis equal<br /> grid on<br /><br /><a href="http://2.bp.blogspot.com/_N1_g09wqZas/RkHCvLz65PI/AAAAAAAAADo/nAHc0LTt42Q/s1600-h/8-2.jpg"><img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_N1_g09wqZas/RkHCvLz65PI/AAAAAAAAADo/nAHc0LTt42Q/s320/8-2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5062541572021347570" /></a><br /><br /><br />8-3<br />利用drawlimits程式<br />function drawlimits(r,th1,sigma,driver)<br />[Qstart, Qstop]=fb_angle_limits(r,th1,driver)<br />clf;<br />[values b]=f4bar(r,th1,Qstart,0,0,sigma,driver);<br />rr=values(:,1);<br />rr(3)=rr(1)+rr(4);<br />rx=real(rr);rx(4)=0;<br />ry=imag(rr);ry(4)=0;<br />if b==1<br /> plot([0 rx(1)],[0 ry(1)],'k-','LineWidth',4);<br /> hold on;<br /> if driver==0<br /> plot([0 rx(2)],[0 ry(2)],'b-','LineWidth',1.5);<br /> plot([rx(2) rx(3)],[ry(2) ry(3)],'r-','LineWidth',2);<br /> else<br /> plot([0 rx(2)],[0 ry(2)],'r-','LineWidth',2);<br /> plot([rx(2) rx(3)],[ry(2) ry(3)],'b-','LineWidth',1.5);<br /> end<br /> plot([rx(1) rx(3)],[ry(1) ry(3)],'-g');<br /> plot(rx,ry,'bo');<br /> text(0,0,' O');text(rx(1),ry(1),' R');<br /> text(rx(2),ry(2),' P');text(rx(3),ry(3),' Q');<br /> text(rx(2)/2,ry(2)/2,['s1=' num2str(Qstart,'%6.1f')]);<br />else<br /> fprintf('Combination of links fails at degrees %6.1f\n',Qstart);<br />end<br /> [values b]=f4bar(r,th1,Qstop,0,0,sigma,driver);<br /> rr=values(:,1);<br /> rr(3)=rr(1)+rr(4);<br /> rx=real(rr);rx(4)=0;<br /> ry=imag(rr);ry(4)=0;<br /> if b==1<br /> if driver==0<br /> plot([0 rx(2)],[0 ry(2)],'b-','LineWidth',1);<br /> plot([rx(2) rx(3)],[ry(2) ry(3)],'r-','LineWidth',1.5);<br /> else<br /> plot([0 rx(2)],[0 ry(2)],'r-','LineWidth',1.5);<br /> plot([rx(2) rx(3)],[ry(2) ry(3)],'b-','LineWidth',1);<br /> end<br /> plot([rx(1) rx(3)],[ry(1) ry(3)],'g-');<br /> plot(rx,ry,'bo');<br /> text(rx(2),ry(2),' p');text(rx(3),ry(3),' q');<br /> text(rx(2)/2,ry(2)/2,[' s2=' num2str(Qstop,'%6.1f')]);<br /> else<br /> fprintf('Combination of links fail at degrees %6.1f\n',Qstop);<br /> end<br /> axis equal<br /> grid on<br /><br />輸入drawlimits([4 3 3 5],0,1,0)<br /><br />Qstart = 28.9550<br /><br /><br />Qstop = 331.0450<br /><br /><br />如圖所示<br /><a href="http://1.bp.blogspot.com/_N1_g09wqZas/RkHDu7z65QI/AAAAAAAAADw/X-R6f5tnozM/s1600-h/8-3.jpg"><img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_N1_g09wqZas/RkHDu7z65QI/AAAAAAAAADw/X-R6f5tnozM/s320/8-3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5062542667238008066" /></a><br /><br /><br />8-4<br />for i=0:20:360<br />drawlinks([4 3 3 5],0,i,-1,0);<br />pause(1)<br />end<br />Combination of links fail at degrees 0.0<br />Combination of links fail at degrees 20.0<br />Combination of links fail at degrees 340.0<br />Combination of links fail at degrees 360.0<br /><br />我們會發現在某些角度譬如說20,340,360等沒有值<br />因為在旋轉四連桿的過程中,必須符合葛拉索定理<br />其實也就是連桿之間要構成封閉三角形的樣子<br />如果沒有構成封閉三角刑,那麼四連桿當然無法運作<br /><br />r1 + r2 < r3 +r4 <br />|r1 -r2|>|r3 - r4|<br /><br />如下圖<br /><a href="http://1.bp.blogspot.com/_N1_g09wqZas/RkHES7z65RI/AAAAAAAAAD4/W8DWTxl83aI/s1600-h/8-4.jpg"><img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_N1_g09wqZas/RkHES7z65RI/AAAAAAAAAD4/W8DWTxl83aI/s320/8-4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5062543285713298706" /></a><br /><br /><br /><br />8-5<br />利用網頁上講義的程式move_4paths<br />此程式必須用到相當多其他的子程式<br />例如f4bar.m funcion, f4limits.m, fb_angle_limits.m<br />等等,可以說是一個整合的結果<br />function move_4paths(r,r6,th6,nlink,th1,td2,tdd2,sigma,driver,ntimes,npts)<br />%<br />%function move_4paths(r,r6,th6,nlink,th1,td2,tdd2,sigma,driver,ntimes,npts)<br />%<br />%draw the positions of four-bar links<br />%call f4bar.m funcion, f4limits.m, fb_angle_limits.m, body.m<br />%<br />%Inputs:<br />% r: row vector for four links<br />% th1: frame angle<br />% th2: crank angle or couple angle<br />% td2,tdd2:angular velocity and acceleration of the driving link.<br />% sigma: assembly mode<br />% driver: 0 for crank, 1 for coupler<br />% ntimes: no. of cycles<br />% npts: number of points divided<br />% r6,rh6,nlink:additional length and angle for nlink link.<br />%example:<br />% move_4paths([4 2 3 4],2,-30,3,0,10,0,1,0,4,100)<br />%<br />%clf;<br />if nargin<10, ntimes=3;npts=100;end;<br />figure(1);<br />[Qstart, Qstop]=fb_angle_limits(r,th1,driver);<br />npoint=abs(npts);<br />th2=linspace(Qstart,Qstop,npoint);<br />val=zeros(6,npoint);<br />for i=1:npoint,<br />[vr b]=f4bar(r,th1,th2(i),td2,tdd2,sigma,driver);<br />[para]=body(r6,th6,vr,nlink);<br />val(1:3,i)=[vr(1,1);vr(2,1);vr(1,1)+vr(4,1)];<br />val(4:6,i)=[para(1);para(3);para(2)];<br />end<br />x=real(val);y=imag(val);<br />h=f4limits(r,th1,sigma,driver);<br />line(x(5,:)',y(5,:)','color','r','linestyle',':');<br />line(x(4,:)',y(4,:)','color','b','linestyle','-.');<br />line(x(6,:)',y(6,:)','color','k','linestyle',':');<br />range=1.2*([min(min(x)) max(max(x)) min(min(y)) max(max(y))]);<br />axis(range);axis equal;grid off;<br />for i=2:4,set(h(i),'erasemode','xor');end<br />h0=patch('xdata',[],'ydata',[],'erasemode','xor','facecolor','r',...<br /> 'marker','o');<br />i=0;s=-1;axis off;<br />for m=1:ntimes<br /> s=-s;<br /> if abs(Qstop-Qstart-360)<1,i=0;s=1;end;<br /> while 1,<br /> i=i+s;<br /> if i>npoint|i==0,break;end;<br /> set(h(2),'xdata',[0 x(2,i)], 'ydata',[0 y(2,i)]);%crank<br /> set(h(3),'xdata',[x(2,i) x(3,i)], 'ydata',[y(2,i) y(3,i)]);%coupler<br /> set(h(4),'xdata',[x(1,i) x(3,i)], 'ydata',[y(1,i) y(3,i)]);%Rocker<br /> set(h0,'xdata',[x(4:6,i)], 'ydata',[y(4:6,i)]);<br /> drawnow; %flush the draw buffer<br /> pause(0.1);<br /> end<br />end % for m loop<br />function h=f4limits(r,th1,sigma,driver)<br /> [Qstart, Qstop]=fb_angle_limits(r,th1,driver)<br /> [values b]=f4bar(r,th1,Qstart,0,0,sigma,driver);<br /> if b==1,<br /> h=draw4link(values,driver);<br /> else<br /> fprintf('Combination of links fails at degrees %6.1f\n',Qstart);<br /> end<br /> [values b]=f4bar(r,th1,Qstop,0,0,sigma,driver);<br /> if b==1,<br /> h=draw4link(values,driver);<br /> else<br /> fprintf('Combination of links fails at degrees %6.1f\n',Qstart);<br /> end<br /> axis equal<br /> grid on<br /><br /><br />輸入<br />move_4paths([4 3 3 5],0,45,3,0,0,0,1,0,4,100)<br /><br />可得下面的影片<br /><br /><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/L-oxu_qd-4o"></param><embed src="http://www.youtube.com/v/L-oxu_qd-4o" type="application/x-shockwave-flash" width="425" height="350"></embed></object>b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com2tag:blogger.com,1999:blog-1480604771354439960.post-85340261299358941862007-04-25T22:53:00.000+08:002008-12-10T09:04:11.986+08:00機動學第七次作業本人(4/19)有上課<br /><br />1&3<br /><br />把動畫做出來即可看出每一秒<br />桿對應的位置<br /><br />影片請參照網頁<br /><br /><a href="http://www.youtube.com/watch?v=40aLqXwNxgQ">影片</a><br /><br />2<br /><br />第一桿之速度<br /><a href="http://1.bp.blogspot.com/_N1_g09wqZas/Ri9rvbz65JI/AAAAAAAAAC4/csJEthVniQk/s1600-h/2.jpg"><img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_N1_g09wqZas/Ri9rvbz65JI/AAAAAAAAAC4/csJEthVniQk/s320/2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5057379369223906450" /></a><br />第二桿之速度<br /><a href="http://3.bp.blogspot.com/_N1_g09wqZas/Ri9r77z65KI/AAAAAAAAADA/0VOnENkv5MI/s1600-h/4.jpg"><img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_N1_g09wqZas/Ri9r77z65KI/AAAAAAAAADA/0VOnENkv5MI/s320/4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5057379583972271266" /></a><br /><br />第三桿之速度<br /><a href="http://4.bp.blogspot.com/_N1_g09wqZas/Ri9sGLz65LI/AAAAAAAAADI/_-si6ijdB9s/s1600-h/6.jpg"><img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_N1_g09wqZas/Ri9sGLz65LI/AAAAAAAAADI/_-si6ijdB9s/s320/6.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5057379760065930418" /></a><br /><br /><br />第一桿之加速度<br /><a href="http://2.bp.blogspot.com/_N1_g09wqZas/Ri9sWrz65MI/AAAAAAAAADQ/jWHJ-JdgRP4/s1600-h/3.jpg"><img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_N1_g09wqZas/Ri9sWrz65MI/AAAAAAAAADQ/jWHJ-JdgRP4/s320/3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5057380043533771970" /></a><br /><br />第二桿之加速度<br /><a href="http://2.bp.blogspot.com/_N1_g09wqZas/Ri9serz65NI/AAAAAAAAADY/lEsSFqj756M/s1600-h/5.jpg"><img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_N1_g09wqZas/Ri9serz65NI/AAAAAAAAADY/lEsSFqj756M/s320/5.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5057380180972725458" /></a><br /><br />第三桿之加速度<br /><a href="http://4.bp.blogspot.com/_N1_g09wqZas/Ri9smLz65OI/AAAAAAAAADg/31LFLWadrzM/s1600-h/7.jpg"><img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_N1_g09wqZas/Ri9smLz65OI/AAAAAAAAADg/31LFLWadrzM/s320/7.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5057380309821744354" /></a>b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com2tag:blogger.com,1999:blog-1480604771354439960.post-62711688060494915262007-04-24T00:04:00.000+08:002008-12-10T09:04:12.395+08:00機動學第六次作業6.1<br /><br />(i)<br />如圖所示,每個節根據課本3-8一桿多結之算法<br />總共有15個節,其中o是滑塊跟地面的滑動結<br />以及圖中紅色數字代表桿,共有12個桿<br /><a href="http://3.bp.blogspot.com/_N1_g09wqZas/RizZYriSyeI/AAAAAAAAACo/iKISLm5oV4Y/s1600-h/6.1.1"><img id="BLOGGER_PHOTO_ID_5056655499656874466" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_N1_g09wqZas/RizZYriSyeI/AAAAAAAAACo/iKISLm5oV4Y/s320/6.1.1" border="0" /></a><br /><br />(ii)<br />根據課本公式(3.2)<br />M=3(N-J-1)+fi<br />N為桿數,在此為12<br />J為結數,在此為15<br />fi是運動節連結度的總合<br />fi=12*1+2*2+1*1=17<br />12個旋轉結,2個滑槽結,1個滑動結<br /><br />綜合上述<br />M=3(12-15-1)+17=5 自由度=5<br /><br />(iii)<br />利用網頁第四張講義的古魯伯公式<br />輸入gruebler(12,[12 1 2])<br />可得ans=5<br /><br />(iv)<br /> 滑塊與地面形成一個滑動結,其自由度為一<br /> 而滑槽因為有轉動和滑動的兩個自由度<br /> 所以自由度為二<br /><br />6.2<br /><br />(i)<br /> 同6.1紅色數字代表桿,藍色英文代表結<br /> a,b為旋轉結,自由度為1<br /> c,e,f為球結,自由度為3<br /> d為圓柱結,自由度為2<br /><a href="http://4.bp.blogspot.com/_N1_g09wqZas/RizZl7iSyfI/AAAAAAAAACw/8F9raOOGEj0/s1600-h/6.2.2"><img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_N1_g09wqZas/RizZl7iSyfI/AAAAAAAAACw/8F9raOOGEj0/s320/6.2.2" border="0" alt=""id="BLOGGER_PHOTO_ID_5056655727290141170" /></a><br /><br />(ii)<br /> 用課本公式(3.5)空間機構的自由度<br />m=6(N-J-1)+F<br />=6(6-6-1)+13=7<br /> 所以自由度為7<br /><br />(iii)<br />gruebler(6,[2 0 0 3 1])<br />跟6.1的過程很像<br />可得ans=7<br /><br />(iv)<br />我們可以經過觀察發現<br />4桿和6桿都可以自轉,產生了所謂的惰性自由度<br /> 所以總自由度=7-2=5<br /><br />我們發現具有惰性自由度的桿在旋轉時並不影響<br />系統之外形,計算自由度的結果也跟實際上有差<br />異,所以我們應該避免設計出這樣的連桿<br /><br /><br />6.3<br /><br />(i)第一組:7+4=5+6<br /><br />屬於葛拉所型之特殊情況或是稱第三型,即最短桿加最長<br />桿會等於其餘兩桿之和<br /><br />grashof(1,[7 4 6 5])<br />ans=Neutral Linkage<br />也就是中性桿<br /><br />此時的連桿處於重疊位置,其運動往前或是後退是一種不<br />可預知的情況<br /><br /><br />(ii)第二組:8+3.6>5.1+4.1<br /><br />參考課本公式(4.2),此類型屬於葛拉索第二型<br /><br />grashof(1,[8 3.6 5.1 4.1])<br />ans=Non-Grashof Linkage<br /><br />由函式可以看出也就是非葛拉所型,四連桿均屬於雙搖桿型<br />,因為任何桿皆無法產生完整的迴轉運動<br /><br /><br />(iii)<br />第三組:6.6+3.1<5.4+4.7<br /><br />此類型屬於葛拉索第一型<br /><br />grashof(1,[5.4 3.1 6.6 4.7])<br />ans=Crank-Rocker Linkage<br /><br />上述三組連桿的(i)與(ii)不是葛拉索型如果要調<br />整成葛拉索型可以將最短桿+最長桿縮小,或是將<br />其餘兩桿伸長,已達成葛拉索型之定義b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com0tag:blogger.com,1999:blog-1480604771354439960.post-22779305240752786262007-04-10T00:58:00.001+08:002008-12-10T09:04:12.616+08:00機動學第五次作業之二<pre><br />function finger(L1,th1)</pre><p><br />finger=[-L1/3 0;0 L1/6;L1 L1/6;L1*4/3 0;L1 -L1/6;0 -L1/6;-L1/3 0];<br />f=line(finger(:,1),finger(:,2));<br />rotate(f,[0 0 1],th1,[0 0 0]);<br /><br />function finger2(L1,L2,th1,th2)<br />finger2=[ L1*cosd(th1)-L2*1/3 L1*sind(th1);<br /> L1*cosd(th1) L1*sind(th1)+L2*1/6;<br /> L1*cosd(th1)+L2 L1*sind(th1)+L2*1/6;<br /> L1*cosd(th1)+L2*4/3 L1*sind(th1);<br />L1*cosd(th1)+L2 L1*sind(th1)-L2*1/6;<br />L1*cosd(th1) L1*sind(th1)-L2*1/6;<br />L1*cosd(th1)-L2*1/3 L1*sind(th1)];<br />f2=line(finger2(:,1),finger2(:,2));<br />rotate(f2,[0 0 1],th1+th2,[L1*cosd(th1) L1*sind(th1) 0]);<br /><br /><br />function fingertip(L1,L2,L3,th1,th2,th3)<br />finger=[L1*cosd(th1)+L2*cosd(th1+th2)-L3*1/3 L1*sind(th1)+L2*sind(th1+th2);<br />L1*cosd(th1)+L2*cosd(th1+th2) L1*sind(th1)+L2*sind(th1+th2)+L3*1/6;<br />L1*cosd(th1)+L2*cosd(th1+th2)+L3 L1*sind(th1)+L2*sind(th1+th2+L3*1/6;<br />L1*cosd(th1)+L2*cosd(th1+th2)+L3*4/3 L1*sind(th1)+L2*sind(th1+th2);<br />L1*cosd(th1)+L2*cosd(th1+th2)+L3 L1*sind(th1)+L2*sind(th1+th2)-L3*1/6;<br />L1*cosd(th1)+L2*cosd(th1+th2) L1*sind(th1)+L2*sind(th1+th2)-L3*1/6;<br />L1*cosd(th1)+L2*cosd(th1+th2)-L3*1/3 L1*sind(th1)+L2*sind(th1+th2)];<br /><br />f=line(finger(:,1),finger(:,2));<br />rotate(f,[0 0 1],th1+th2+th3, [L1*cosd(th1)+L2*cosd(th1+th2) L1*sind(th1)+L2*sind(th1+th2) 0]);<br /><br />function body2(L1,L2,L3,th1,th2,th3)<br />finger(L1,th1);<br />finger2(L1,L2,th1,th2);<br />fingertip(L1,L2,L3,th1,th2,th3);<br /><br />p5-2.3<br />以三根連桿大概表示出手指頭的三節,如何有最大的極限動作,<br />假設在座標原點(0,0)是手指固定的那一端我的假設是關節的部<br />分都是尖的,因為要畫出接近弧形的關節必須要描很多點,所以<br />在這裡我就用比較方正的畫法,可以減少描點的數量<br /><a href="http://4.bp.blogspot.com/_N1_g09wqZas/RiONZfRpt4I/AAAAAAAAACg/E6kGZ8rh3ic/s1600-h/p5-2.jpg"><img id="BLOGGER_PHOTO_ID_5054038675871610754" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_N1_g09wqZas/RiONZfRpt4I/AAAAAAAAACg/E6kGZ8rh3ic/s320/p5-2.jpg" border="0" /></a></p><p></p><p><br /><br /><br />p5-2.4<br /><br />假設棒球選手的球速投出時有144km/h,換算成公制單位也就是40m/s,假設在投出的時候之速度就等於<br />手指向下的切線速度,那麼我們會發現向心加速度(假設手指大約10公分長)<br />a=v.v/r=40*40/0.1=16000m/s.s 這個加速度假如乘上質量(設手大約200克重)得到的結果<br />就有3200牛頓,大約接近300公斤的力,由這裡我們很明顯看出來棒球選手投球絕對不只有用到手指<br />,用手臂可以讓r變大,讓所承受的力變小,如果要再加上腰力或是腿的全身平衡就更複雜了,超出這次的範圍在這裡就不討論了<br /><br /></p>b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com0tag:blogger.com,1999:blog-1480604771354439960.post-58020963502075380412007-04-10T00:39:00.000+08:002008-12-10T09:04:13.085+08:00機動學第五次作業之一<div align="left"><pre></div><div align="left"> </div><div align="left">p5-1.1 </div><div align="left"></div><div align="left"><br />function arm1(L1,th1) <strong><span style="color:#009900;">%建立一個叫做arm1的函數</span></strong></div><div align="left">axis equal; <strong><span style="color:#009900;">%裡面有L1及th1分別代表上臂長和其轉動角度</span> </strong></div><div align="left">for i=90:1:270 <strong><span style="color:#009900;">%大致上畫出肩膀的球窩關節</span></strong></div><div align="left">arm1upx=5*cosd(i); <strong><span style="color:#009900;">%量自己的手發現寬度的一半大約為五公分</span></strong></div><div align="left">arm1upy=5*sind(i); </div><div align="left">arm1upx1=5*cosd(i)*cosd(-th1)-5*sind(i)*sind(-th1);</div><div align="left">arm1upy1=5*cosd(i)*sind(-th1)+5*sind(i)*cosd(-th1);</div><div align="left">line(arm1upx1,arm1upy1);</div><div align="left">end;</div><div align="left"></div><div align="left">for j=-90:1:90</div><div align="left">arm1lowx=3*cosd(j)+L1; <strong><span style="color:#009900;">%這是手肘部分的關節</span></strong></div><div align="left">arm1lowy=3*sind(j); <strong><span style="color:#009900;">%與肩膀關節假設差不多,只是寬度不同</span></strong></div><div align="left">arm1lowx1=(3*cosd(j)+L1)*cosd(-th1)-3*sind(j)*sind(-th1);</div><div align="left">arm1lowy1=(3*cosd(j)+L1)*sind(-th1)+3*sind(j)*cosd(-th1);</div><div align="left">line(arm1lowx1,arm1lowy1);</div><div align="left">end;</div><div align="left"></div><div align="left"><strong><span style="color:#009900;">%分別寫出連接幾個點的</span></strong></div><div align="left"><strong><span style="color:#009900;">%X和Y座標,把手的部分</span></strong></div><div align="left"><strong><span style="color:#009900;">%跟上面關節的部分接起來</span></strong></div><div align="left">p1x=5*cosd(90)*cosd(-th1)-5*sind(90)*sind(-th1); </div><div align="left">p1y=5*cosd(90)*sind(-th1)+5*sind(90)*cosd(-th1); </div><div align="left">p2x=5*cosd(270)*cosd(-th1)-5*sind(270)*sind(-th1); </div><div align="left">p2y=5*cosd(270)*sind(-th1)+5*sind(270)*cosd(-th1);</div><div align="left">p3x=(3*cosd(-90)+L1)*cosd(-th1)-3*sind(-90)*sind(-th1);</div><div align="left">p3y=(3*cosd(-90)+L1)*sind(-th1)+3*sind(-90)*cosd(-th1);</div><div align="left">p4x=(3*cosd(90)+L1)*cosd(-th1)-3*sind(90)*sind(-th1);</div><div align="left">p4y=(3*cosd(90)+L1)*sind(-th1)+3*sind(90)*cosd(-th1); </div><div align="left"><br />qua=[p1x p1y;p2x p2y;p3x p3y;p4x p4y;p1x p1y]; <strong><span style="color:#009900;">%一筆劃線</span></strong></div><div align="left">line(qua(:,1),qua(:,2)); </div><div align="left"></div><div align="left"></div><div align="left"></div><div align="left">function arm2(L1,L2,th1,th2) <strong><span style="color:#009900;">%這是下臂的函數</span><br /></strong>axis equal; <strong><span style="color:#009900;">%假設大致與上臂相同,比較不一樣的地方<br /></span></strong>for i=90:1:270 <span style="color:#009900;"><strong>%在因為下臂必須跟手肘連接,所以要用到</strong></span></div><div align="left">arm2upx=3*cosd(i)+L1; <strong><span style="color:#009900;">%有關上臂的參數像L1,th1</span><br /></strong>arm2upy=3*sind(i);<br />arm2upx1=arm2upx*cosd(-th2)-arm2upy*sind(-th2);<br />arm2upy1=arm2upx*sind(-th2)+arm2upy*cosd(-th2);<br />line(arm2upx1,arm2upy1);%end;%for j=-90:1:90<br />arm2lowx=2*cosd(j)+L2+L1;<br />arm2lowy=2*sind(j);<br />arm2lowx1=arm2lowx*cosd(-th2)-arm2lowy*sind(-th2);<br />arm2lowy1=arm2lowx*sind(-th2)+arm2lowy*cosd(-th2);<br />line(arm2lowx1,arm2lowy1);<br />end; </div><div align="left"><br />p1x=(3*cosd(90)+L1)*cosd(-th1)-3*sind(90)*sind(-th1);<br />p1y=(3*cosd(90)+L1)*sind(-th1)+3*sind(90)*cosd(-th1);<br />p2x=(3*cosd(270)+L1)*cosd(-th1)-3*sind(270)*sind(-th1);<br />p2y=(3*cosd(270)+L1)*sind(-th1)+3*sind(270)*cosd(-th1);<br />p3x=(2.5*cosd(-90)+L2+L1)*cosd(-th1)-2.5*sind(-90)*sind(-th1);<br />p3y=(2.5*cosd(-90)+L2+L1)*sind(-th1)+2.5*sind(-90)*cosd(-th1);<br />p4x=(2.5*cosd(90)+L2+L1)*cosd(-th1)-2.5*sind(90)*sind(-th1);<br />p4y=(2.5*cosd(90)+L2+L1)*sind(-th1)+2.5*sind(90)*cosd(-th1);<br />qua=[p1x p1y;p2x p2y;p3x p3y;p4x p4y;p1x p1y];</div><div align="left"><strong><span style="color:#009900;">%最後畫出下臂的外形</span></strong></div><div align="left"><br />h=line(qua(:,1),qua(:,2));<br />rotate(h,[0 0 1],th2,[L1*cosd(-th1) L1*sind(-th1) 0]) </div><div align="left"><strong><span style="color:#009900;">%加了rotate就可以讓<br />%下臂繞著手肘旋轉<br /></span></strong><br />function palm(L1,L2,L3,th1,th2,th3) <strong><span style="color:#009900;">%手掌的函數</span></strong></div><div align="left"></div><div align="left"><strong><span style="color:#009900;">%手掌要跟下臂連接,所以起始點連接是 </span></strong></div><div align="left"><strong><span style="color:#009900;">%手腕的部分 </span></strong></div><div align="left">p1x=L1*cosd(-th1)+L2*cosd(-90+th2);</div><div align="left">p1y=L1*sind(-th1)+L2*sind(-90+th2); </div><div align="left"><span style="color:#009900;"><strong>%大致上假設大拇指根部在1/3手掌長的地方 </strong></span></div><div align="left"><span style="color:#009900;"><strong>%其他描點大約都按照手掌比例而成 </strong></span></div><div align="left">p2x=p1x+L3/3; </div><div align="left">p2y=p1y; </div><div align="left">p3x=p1x+2/3*L3;<br />p3y=p1y+L3/4;<br />p4x=p1x+L3/2;<br />p4y=p1y;<br />p5x=p1x+L3;<br />p5y=p1y;<br />p6x=p1x+L3;<br />p6y=p1y-1;<br />p7x=p1x+L3/2;<br />p7y=p1y-1;<br />p8x=p1x+L3/2;<br />p8y=p1y-1.3;<br />p9x=p1x+L3;<br />p9y=p1y-1.3;<br />p10x=p1x+L3;<br />p10y=p1y-2.3;<br />p11x=p1x+L3/2;<br />p11y=p1y-2.3;<br />p12x=p1x+L3/2;<br />p12y=p1y-2.6;<br />p13x=p1x+L3;<br />p13y=p1y-2.6;<br />p14x=p1x+L3;<br />p14y=p1y-3.6;<br />p15x=p1x+L3/2;<br />p15y=p1y-3.6;<br />p16x=p1x+L3/2;<br />p16y=p1y-3.9;<br />p17x=p1x+L3;<br />p17y=p1y-3.9;<br />p18x=p1x+L3;<br />p18y=p1y-5;<br />p19x=p1x;<br />p19y=p1y-5;<br />hand=[p1x p1y;p2x p2y;p3x p3y;p4x p4y;p5x p5y;p6x p6y;p7x p7y;p8x p8y;p9x p9y;p10x p10y;p11x p11y;p12x p12y;p13x p13y;p14x p14y;p15x p15y;p16x p16y;p17x p17y;p18x p18y;p19x p19y;p1x p1y];<br /><br />h=line(hand(:,1),hand(:,2)); </div><div align="left">rotate(h,[0 0 1],th3,[p1x p1y 0]) </div><div align="left"><span style="color:#009900;"><strong>%最後把線全部連起來 </strong></span></div><div align="left"><span style="color:#009900;"><strong>%同樣這個函數讓圖形旋轉<br /></strong></span>axis equal<br /><br /><br /><br />p5-1.2<br /><br /><strong><span style="color:#009900;">%一個body的函數要能畫出三部分,就要有對應的參數<br />%上臂只需要上臂長,自己旋轉的角度 下臂和手掌需要</span></strong></div><div align="left"><strong><span style="color:#009900;">%它們上面的function的參數,因為轉動會影響座標的變化<br /></span></strong>function body(L1,L2,L3,th1,th2,th3) </div><div align="left">arm1(L1,th1); </div><div align="left">arm2(L1,L2,th1,th2); </div><div align="left">palm(L1,L2,L3,th1,th2,th3); </div><div align="left"><br />由於手掌及arm2的位置都會受到arm1的影響,所以其中所含有的變數必須包含前面的變數,例如L1,L2th1,th2等等<br /><br /><br /><br />p5-1.3<br /><br />由於手掌的角度不可能彎成作業平台上所示的-30度,所以我個人認為教授所敘述的應該是相對於arm2的30度,也就是以手往前延伸當作水平線來算,手掌往逆時針方向旋轉30度,如我認知錯誤,煩請教授指正<br /><br /><a href="http://1.bp.blogspot.com/_N1_g09wqZas/RhpukJJUn2I/AAAAAAAAAB8/1h3VyPxahuU/s1600-h/p5-1.3.jpg"><img id="BLOGGER_PHOTO_ID_5051471499258797922" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_N1_g09wqZas/RhpukJJUn2I/AAAAAAAAAB8/1h3VyPxahuU/s320/p5-1.3.jpg" border="0" /></a><br />p5-1.4<br />我根據上一題的解釋,所畫出的人類手臂的轉動的模式<br /><br /><br /><a href="http://3.bp.blogspot.com/_N1_g09wqZas/RhpwFpJUn3I/AAAAAAAAACE/9hM95kuOysk/s1600-h/p5-1.4.jpg"><img id="BLOGGER_PHOTO_ID_5051473174296043378" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_N1_g09wqZas/RhpwFpJUn3I/AAAAAAAAACE/9hM95kuOysk/s320/p5-1.4.jpg" border="0" /></a></div><div align="left"> </div><div align="left"></pre></div>b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com1tag:blogger.com,1999:blog-1480604771354439960.post-49058574698328667192007-03-27T00:33:00.000+08:002008-12-10T09:04:13.366+08:00機動學第四次作業p4-1<br /><br />L=29+10;<br />triangle=[0 0;L 0;L/2 L/2*3^(1/2);0 0];<br />h=line(triangle(:,1),triangle(:,2));<br />axis equal;<br />for i=1:1:360;<br />axis([-100 100 -100 100]);<br />rotate(h,[0 0 1],1,[0 0 0]);<br />pause(0.0001);<br />end;<br />for i=1:1:360;<br />axis([-100 100 -100 100]);<br />rotate(h,[0 0 1],1,[L 0 0]);<br />pause(0.0001);<br />end;<br />for i=1:1:360;<br />axis([-100 100 -100 100]);<br />rotate(h,[0 0 1],1,[L/2 L/2*3^(1/2) 0]);<br />pause(0.0001);<br />end;<br /><br />p4-2<br /><br />for thera=1:1:360;<br />x=10*cosd(thera);<br />y=10*sind(thera);<br />linkshape([0 0],[x y],4);<br />axis([-20 20 -20 20]);<br />line([15 x],[0 y]);<br />pause(0.001);<br />end;<a href="http://4.bp.blogspot.com/_N1_g09wqZas/Rgf4aGrWd_I/AAAAAAAAABs/-XpU6VfzcoA/s1600-h/p4-2.jpg"></a><br /><div>以線代表彈簧</div><br /><div></div><br /><div><br />p4-3<br /><br />for thera=1:30:360;<br />bx=3*cosd(thera);<br />by=4*sind(thera);<br />cx=3*cosd(thera)+10;<br />cy=4*sind(thera);<br />hold on;<br />linkshape([0 0],[bx by],2)<br />linkshape([bx by],[cx cy],3)<br />linkshape([cx cy],[10 0],1.5)<br />linkshape([10 0],[0 0],2)<br />pause(0.001);<br />end;</div><a href="http://2.bp.blogspot.com/_N1_g09wqZas/Rgf4nmrWeAI/AAAAAAAAAB0/IVJQ8TWOIgQ/s1600-h/p4-3.jpg"><img id="BLOGGER_PHOTO_ID_5046275266772891650" style="CURSOR: hand" height="249" alt="" src="http://2.bp.blogspot.com/_N1_g09wqZas/Rgf4nmrWeAI/AAAAAAAAAB0/IVJQ8TWOIgQ/s320/p4-3.jpg" width="322" border="0" /></a><br /><div></div>b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com0tag:blogger.com,1999:blog-1480604771354439960.post-74937258024535447492007-03-21T21:40:00.000+08:002008-12-10T09:04:15.805+08:00機動學作業三P3-1<br /><div><div><div><div><div><div><div><div><p>for i=1:7;<br />L1=37;<br />L2=28;<br />head(i)=25+5*i;<br />thera=acosd((L2.^2+head(i).^2-L1.^2)./(2*L2*head(i)));<br />x=L2.*cosd(90-thera);<br />y=L2.*sind(90-thera);<br />triangle=[0 0;x y;0 head(i)];<br />line(triangle(:,1),triangle(:,2)) ;<br />end; </p><br /><p><br /><a href="http://3.bp.blogspot.com/_N1_g09wqZas/RgE2zWrWd2I/AAAAAAAAAAk/eGYWtg9dwxg/s1600-h/3-1.jpg"><img id="BLOGGER_PHOTO_ID_5044373313520301922" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_N1_g09wqZas/RgE2zWrWd2I/AAAAAAAAAAk/eGYWtg9dwxg/s320/3-1.jpg" border="0" /></a><br />2.拳頭最多可以舉到頭頂正上方30cm,也就是i=7的時候。<br /><br />3.假設拳頭為一個質點,而且拳頭和手肘與頭頂一值都在同一平面上,<br /> 並且也忽略了肩膀的寬度</p><br /><br /><div>p3-2</div><br /><br /><div>1.旋轉對:例如門閂 、軸承,旋轉對也是一種平面低對。</div><br /><div><br /></div><br /><div><a href="http://1.bp.blogspot.com/_N1_g09wqZas/RgE3h2rWd3I/AAAAAAAAAAs/--J13y5mGrY/s1600-h/éé.jpg"><img id="BLOGGER_PHOTO_ID_5044374112384218994" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_N1_g09wqZas/RgE3h2rWd3I/AAAAAAAAAAs/--J13y5mGrY/s320/%E9%96%80%E9%96%82.jpg" border="0" /></a><a href="http://2.bp.blogspot.com/_N1_g09wqZas/RgE3nGrWd4I/AAAAAAAAAA0/6CLYG_OBpis/s1600-h/軸æ¿.gif"><img id="BLOGGER_PHOTO_ID_5044374202578532226" style="WIDTH: 150px; CURSOR: hand; HEIGHT: 122px" height="136" alt="" src="http://2.bp.blogspot.com/_N1_g09wqZas/RgE3nGrWd4I/AAAAAAAAAA0/6CLYG_OBpis/s320/%E8%BB%B8%E6%89%BF.gif" width="150" border="0" /></a></div> 門閂 軸承<br /><br /><br /><div>2.高對與低對運動結:例如平面對是一種低對,而滾珠則屬於高對。</div><br /><br /><div><a href="http://4.bp.blogspot.com/_N1_g09wqZas/RgE4KmrWd5I/AAAAAAAAAA8/PeWKASZj9Hk/s1600-h/å¹³é¢å°.gif"><img id="BLOGGER_PHOTO_ID_5044374812463888274" style="WIDTH: 254px; CURSOR: hand; HEIGHT: 195px" height="195" alt="" src="http://4.bp.blogspot.com/_N1_g09wqZas/RgE4KmrWd5I/AAAAAAAAAA8/PeWKASZj9Hk/s320/%E5%B9%B3%E9%9D%A2%E5%B0%8D.gif" width="185" border="0" /></a><a href="http://3.bp.blogspot.com/_N1_g09wqZas/RgE4dWrWd6I/AAAAAAAAABE/-O4B5eFGcWU/s1600-h/滾ç"><img id="BLOGGER_PHOTO_ID_5044375134586435490" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_N1_g09wqZas/RgE4dWrWd6I/AAAAAAAAABE/-O4B5eFGcWU/s320/%E6%BB%BE%E7%8F%A0%E8%AD%B7%E5%9C%88.jpg" border="0" /></a></div><br /><div> 平面對 滾珠護圈</div><br /><div></div><br /><div>3.型式閉合結或外力閉合結:形式閉合結例如連桿組;外利閉合的例子則有凸輪系統</div><br /><div><a href="http://3.bp.blogspot.com/_N1_g09wqZas/RgE5DWrWd9I/AAAAAAAAABc/GgI-OHNdsDM/s1600-h/å¸è¼ª.png"><img id="BLOGGER_PHOTO_ID_5044375787421464530" style="WIDTH: 207px; CURSOR: hand; HEIGHT: 170px" height="170" alt="" src="http://3.bp.blogspot.com/_N1_g09wqZas/RgE5DWrWd9I/AAAAAAAAABc/GgI-OHNdsDM/s320/%E5%87%B8%E8%BC%AA.png" width="184" border="0" /></a></div><div>凸輪 </div><div><a href="http://3.bp.blogspot.com/_N1_g09wqZas/RgE45WrWd8I/AAAAAAAAABU/bRAnzkayyws/s1600-h/é£æ¡¿çµ.jpg"><img id="BLOGGER_PHOTO_ID_5044375615622772674" style="CURSOR: hand" height="164" alt="" src="http://3.bp.blogspot.com/_N1_g09wqZas/RgE45WrWd8I/AAAAAAAAABU/bRAnzkayyws/s320/%E9%80%A3%E6%A1%BF%E7%B5%84.jpg" width="185" border="0" /></a></div><div>連桿組</div><div><a href="http://1.bp.blogspot.com/_N1_g09wqZas/RgE4s2rWd7I/AAAAAAAAABM/8xOBtsDtRFA/s1600-h/å¸è¼ªç³»çµ±.jpg"><img id="BLOGGER_PHOTO_ID_5044375400874407858" style="CURSOR: hand" height="166" alt="" src="http://1.bp.blogspot.com/_N1_g09wqZas/RgE4s2rWd7I/AAAAAAAAABM/8xOBtsDtRFA/s320/%E5%87%B8%E8%BC%AA%E7%B3%BB%E7%B5%B1.jpg" width="229" border="0" /></a></div><div>凸輪系統</div><br /><div></div><br /><div></div><br /><div></div><br /><div>p3-3</div><br /><div></div><br /><div>message=('輸入身高')<br /><br />h=input(message);<br />r=h/2; %設半徑為身高之一半<br />circle=0:1:360;<br /><br />for thera=0:12; %旋轉的角度<br /><br />x0=thera*r*pi/6; %畫圓<br />x=r*sind(circle)+x0;<br />y=r*cosd(circle);<br /><br />for body=[0 90 150 210 270 360]; %畫一個大字型(人)<br /><br />x1=r*sind(body+thera*30)+x0; %人旋轉<br />y1=r*cosd(body+thera*30);<br /><br />axis equal;<br />line([x0 x1'],[0 y1']); %畫出圓和人<br />hold on;<br />end;<br /><br />line(x,y);<br /><br />end;</div><br /><div><a href="http://3.bp.blogspot.com/_N1_g09wqZas/RgE6gWrWd-I/AAAAAAAAABk/PZFxb3JE7sc/s1600-h/p3-3.jpg"><img id="BLOGGER_PHOTO_ID_5044377385149298658" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_N1_g09wqZas/RgE6gWrWd-I/AAAAAAAAABk/PZFxb3JE7sc/s320/p3-3.jpg" border="0" /></a></div></div></div></div></div></div></div></div></div>b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com0tag:blogger.com,1999:blog-1480604771354439960.post-55196853759861813142007-03-13T23:52:00.000+08:002008-12-10T09:04:15.934+08:00機動學第二次作業<a href="http://wappingersschools.org/RCK/staff/teacherhp/johnson/visualvocab/BallSocketJoint.jpg"></a>P2-1<br /><br /><div>以人體的關節來說,可以分為不可動關節、少動關節與可動關節,而我們今天討論的部分主要是可動關節的部分,依序可以分為下列幾種:</div><br /><br /><div>1.球臼型(Ball and Socket Joint):可以旋轉但是不能移動,有三個自由度,如肩關節及髖關節。</div><a href="http://wappingersschools.org/RCK/staff/teacherhp/johnson/visualvocab/BallSocketJoint.jpg">球臼型</a><br /><br /><div></div><br /><div>2.樞軸型(Pivot Joint):能有旋轉的動作,如前臂的尺股可以讓手掌做翻轉的動作。</div><br /><div><a href="http://www.botany.uwc.ac.za/sci_ed/grade10/manphys/images/man/pivot.gif">樞軸型</a></div><br /><div></div><br /><div>3.鉸鏈型(Hinge Joint):可以作屈伸方向上的動作,如圖所示,只有一個自由度。• 如肘關節、膝關節、踝關節及手指間的關節。 </div><br /><div><a href="http://commons.bcit.ca/biology/articulations/pics/hinge.jpg">鉸鏈型</a></div><br /><div><a href="http://www.esd.k12.ca.us/Matsumoto/TM30/Science/tsa/art/AJh.jpg">鉸鏈型2</a></div><br /><div>4.馬鞍型(Saddle-shaped Joint): 可做前後左右的活動,但無法旋轉,所以有兩個自由度,如腕關節及拇指之基底關節。 </div><br /><div><a href="http://www.esd.k12.ca.us/Matsumoto/TM30/Science/tsa/art/AJs.jpg">馬鞍型</a></div><br /><div>5.滑動型 (Gliding Joint): 這種關節僅允許少量的活動,如脊椎骨間的關節等。 </div><br /><div><a href="http://www.botany.uwc.ac.za/sci_ed/grade10/manphys/images/man/glid.gif">滑動型1</a></div><br /><div><a href="http://www.esd.k12.ca.us/Matsumoto/TM30/Science/tsa/art/AJg.jpg">滑動型2</a></div><br /><div></div><br /><div></div><br /><div>P2-2</div><br /><div></div><br /><div> 在現代文明的發展當中,有些發現或發明其實都是意想不到的,比如說牛頓在形成萬有引力理論之時,覺得需要發展一套數學工具,於是微積分就發明了,但是要發明或創造東西也是要有先決條件或是一些基本的理論基礎。</div><br /><div> 舉例而言:當工業革命興起之後,就發明了火車,然而這個發明並不是一蹴可及的,要發明火車最重要,但也是最基本的東西也就是要有輪子,如果古時候的人類沒有發明輪子這種省力的工具,那相信我們現在的生活一定是相當的不方便,或者可以說是非常痛苦的;有了輪子還不夠,當時火車的動力來源是蒸汽機,雖然在瓦特隻前就有人先發展出蒸氣機的雛型,但如果瓦特沒有將其改良,使蒸汽機的效率更加提高的話,也是不太可能將蒸汽機應用在各種工業活動上;這兩個是相對比較重要的,當然其他例如連接火車車廂之間的結構也是不可或缺的,上述少了任何一個都沒有辦法造出火車,所以說創造和發明必須要歸納起來,才能夠形成有用的工具,如此一來,我們人類的生活才能邁向更進步的未來。</div><br /><div>P2-3</div><br /><div></div><br /><div>>> m=29+10<br />m = 39 </div><div><br />>> x=[1 2 3 4 5 6 7 8 9 10]<br />x = 1 2 3 4 5 6 7 8 9 10 </div><div><br />>> y=power(x,1/m)<br />y = 1.0000 1.0179 1.0286 1.0362 1.0421 1.0470 1.0512 1.0548 1.0580 1.0608 </div><div><br />>> plot(x,y)</div><br /><div><a href="http://4.bp.blogspot.com/_N1_g09wqZas/RfbadSJmeHI/AAAAAAAAAAc/cmYaxxUNvOM/s1600-h/p2-3.jpg"><img id="BLOGGER_PHOTO_ID_5041457029511018610" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_N1_g09wqZas/RfbadSJmeHI/AAAAAAAAAAc/cmYaxxUNvOM/s320/p2-3.jpg" border="0" /></a></div>b94611029http://www.blogger.com/profile/16028795054091148267noreply@blogger.com0