2007年5月25日 星期五

HW10

B94611023 生機二 許惠善
本週我有上課

1.請思考速度與加速度的問題,當一桿以某特定點M等角速度迴轉時,其端點P之速度方向如何? 其加速度方向如何?

由下圖可見,我們取特定點o作為迴轉時:

端點p的速度:

即為vp=ω×r,由內積的結果,其量值為ωr,方向則為切線方向,也就是垂直op這條線的方向。

端點p的加速度:

切線方向上,因為並無角加速度,故其切線方向並無加速度。然而在做迴轉的同時,有一法線加速度是朝內的,an=ω×(ω×r),內積的結果,量值為(ω^2)r,方向則由o朝p方向。






然而,若是今天迴轉的中心不在端點O而是桿上任一點M,我們就要取該點M與P的距離作為新的r',仍然適用於上列分析。 即vp'=ω×r'以及an'=ω×(ω×r')。其結果方向仍然與上述分析相同,唯量值改變。


若該特定點M復以等速水平運動,則同一端點P之速度與加速度方向會變為如何?


端點p的速度:

p受Vo影響,所以Vp=ω×r+Vo,其向量和在圖中所示為咖啡色線段,其水平分量為Vo+ωrcosθ,垂直分量為ωrsinθ

端點p的加速度:

不受Vo影響,an=ω×(ω×r),內積的結果,量值為(ω^2)r,方向則由o朝p方向。

若M點同時也有加速度,則點P會有何變化?

P點的速度:
如前述所分析,不受ao所影響, Vp=ω×r+Vo,其水平分量為Vo+ωrcosθ,垂直分量為ωrsinθ

P點的加速度:
除原先an=ω×(ω×r),然而整個ap要加上ao的加速度,所以ap=ao+an(rad/s^2)的和向量,如下圖粉紅色線段所示。
可分為垂直分量和水平分量。垂直分量=ω^2*rcosα水平分量=ao+ω^2*rsinα


若以此推理四連桿的運動,則點P與Q之速度與加速度方向會與桿一(固定桿)之兩端點之關係如何?與我們前面的作業分析結果有無共通之處?(參看第六章之四連桿機構之運動分析)

本題一開始我想用瞬心的觀念來解,然而後來想到加速度無法用順心的觀念解,故僅先列出瞬心的速度部分。


由圖上可見,若op桿以ω開始運動,則p的速度顯而易見的,速度垂直r1,然而也可知道q點速度必垂直r2。
而瞬心由做圖的方式,由pq兩點做延伸線(因恰分別垂直於r1,r2)而可求得Ic的位置
接著求Vp:因o點以及IC速度皆為零,故Vp=r1*ω1=r1'*ω2
由上式我們可以求得ω2,再以Vq=r2'*ω2解出Vq

但求速度及加速度則必須去求出p、q間的關係。
首先,o及R兩點皆為固定點。所以可列出:
Vp=ω × r1
ap=αx r1+ω×(ω×r1)

其為向量式,內積的結果Vp會垂直r1,然而ap分成兩部分,第一項為切線加速度,故垂直於r1,第二項由向量外積的結果,恰延r1指向o點,量值為ω^2×r1

計算Q點的速度與加速度,較為麻煩,必須考慮pq的相對關係
Vq=Vp+ω2× rq/p
aq= ap+α2x rq/p+ω2× (ω2 × rq/p)

我們必須求出相對於P點的角速度及角加速度,才可求出Vq及Aq,其分析等同於前述單單op一桿且o點有速度及加速度的分析。故我們求出q相對於p的速度(即ω2× rq/p)及加速度(即α2x rq/p+ω2× (ω2 × rq/p) )後,應再加上p點的速度及加速度才為所求。 (ω2應可用前述瞬心的求法得到Vq再帶回本式求ω2)



設有一運動之曲柄滑塊連桿組合,設滑塊之偏置量為零,且在水平方向移動,
試以此機構之曲桿長度及角度,以及連結桿之長度為輸入項,
利用matlab寫出一程式計算在不同曲柄角度時,六點瞬心之對應位置。
可順便探討六點瞬心與曲柄角間之關係。

本題以drawslidlinks做更改為程式function [values]=drawsldIC(r,th1,th2,sigma,driver)
(僅加入IC部分,原連桿曲趕不做更動,故在此指標住IC部分的註解,並將程式碼更動部分套咖啡色)

程式碼如下:

function [values]=drawsldIC(r,th1,th2,sigma,driver)
%function drawlinks(r,th1,th2,sigma,driver)
%draw the positions of four-bar links
%call f4bar funcion
%r: row vector for four links
%th1: frame angle
%th2: crank angle or couple angle
%sigma: assembly mode
%driver: 0 for crank, 1 for coupler
%
% Example:
% drawsldlinks([1 2 3 4],0,60,1,0)
%clf;
[values b]=sldlink(r,th1,th2,10,0,sigma,driver);
rr=values(:,1)
rr(3)=rr(3)+rr(2);
rx=real(rr);
rx(4)=0;
ry=imag(rr);
ry(4)=0;


if rx(1)>0
theta2=th2;
else
theta2=180-th2;
end;
theta3=-values(3,2);

%瞬心IC13由課本5-22可看出IC13 IC12 IC34組成一三角形
%所以IC13的x座標即為IC34
%y座標則可由值角三角形取底邊*tan(theta2)可得
IC13x=rx(1);
IC13y=rx(1)*tand(theta2);



%瞬心IC24由課本5-22可看出IC13 IC12 IC34組成另一三角形
%所以IC24的x座標即為IC12=0
%y座標則可由值角三角形取底邊*tan(theta3)可得
IC24x=0;
IC24y=rx(1)*tand(theta3);


if b==1 plot([0 rx(1)],[0 0],'k-','LineWidth',4);
%ground line
hold on;
plot([0 rx(1)],[0 ry(1)],'g-','LineWidth',1.5);


if driver==0
plot([0 rx(2)],[0 ry(2)],'b-','LineWidth',1.5);
plot([rx(2) rx(3)],[ry(2) ry(3)],'r-','LineWidth',2);
else
plot([0 rx(2)],[0 ry(2)],'r-','LineWidth',2);
plot([rx(2) rx(3)],[ry(2) ry(3)],'b-','LineWidth',1.5);
end

%原程式碼部分不動,但另外整理標出瞬心的部分

%標出IC13
plot(IC13x,IC13y,'ms');
text(IC13x+1,IC13y,'IC13');

%此部分是在畫出與IC13相關的直角三角形軌跡
plot([rx(1) IC13x],[ry(1) IC13y],'c:','LineWidth',1.5);
plot([rx(2) IC13x],[ry(2) IC13y],'c:','LineWidth',1.5);


%標出IC24
plot(IC24x,IC24y,'ms');
text(IC24x+1,IC24y,'IC24');

%此部分是在畫出與IC24相關的直角三角形軌跡
plot([0 IC24x],[0 IC24y],'c:','LineWidth',1.5);
plot([rx(2) IC24x],[ry(2) IC24y],'c:','LineWidth',1.5);



plot([rx(1) rx(3)],[ry(1) ry(3)],'k-');
plot(rx,ry,'bo');


%IC12與o重合 在此加註
text(0,0,' O IC12');
text(rx(1),ry(1),' R');

%IC23與p重合 IC34與P重合 在此加註
text(rx(2),ry(2),' P IC23');
text(rx(3),ry(3),' Q IC34');
length=max(abs(values(2:3,1)));
len=.20*length;ww=.15*length;
[coords] = sldbox(len,ww,rx(3),ry(3),th1);
plot(coords(:,1),coords(:,2),'r-','LineWidth',2);
[coords] = sldbox(len*3,0,rx(3),ry(3)-ww/2,th1);
plot(coords(:,1),coords(:,2),'r:','LineWidth',1.5);
else
fprintf('Combination of links fails at degrees %6.1f\n',th2);
end
axis equal
axis ([-100 100 -100 100])

grid on

我們以drawslidIC做動畫,已觀察IC的位置
呼叫為:
for i=0:10:360
drawsldIC([0 33 38 0],0,i,1,0)
pause(0.1)
clf
end;
動畫如下:


[分析]
首先,滑塊機構中IC 12、23、34、14為四個基本瞬心,然而本機構中IC14在無限遠處,所以我不標出。

又瞬心IC12固定在O點,恆不動

瞬心IC24及13隨PQ點改變
我們可以觀察驅動桿的角度的改變造成IC24及13的改變
0<theta2<90:
IC24及IC13在OR上方
90<theta2<180:
IC24及IC13分別位於OR兩側(IC24在OR上方,IC13在OR下方)
180<theta2<270:
IC24及IC13分別位於OR兩側(IC24在OR下方,IC13在OR上方)
270<theta2<360:
IC24及IC13在OR下方

2007年5月15日 星期二

HW9

B94611023 生機二 許惠善


我本週(5/3)有來上課。
詳細作業請參考我的部落格



本次作業我以課本的程式為基礎來作為分析。自己再寫了一支程式draw_slider,用來讓使用者將RLe三值輸入,程式就會自動跑其極限位置的動畫。

運用到的課本程式是slider_limit()以及slider_solve(),基本上對於slider_limit()這支程式碼並無做異動,所以我只放在作業最後供各位同學參考,可以試著在自己電腦跑跑看。

然而slider_solve我對其做了少許變更,可以由原本的程式看出,利用基本的三角關係,我們求出了滑塊所可移動的距離,然而以A點為座標原點的話,這個滑塊的移動距離其實就是其在座標平面上的x值,故在此利用座標x,y值皆求出來,以做圖形。


程碼如下式如下:

(1)draw_slider()
function draw_slider(R,L,e)

%將輸入帶入slider_limit()中計算,先求出其極限位置
%藉此我們就可以做出滑塊的運動動畫
[s theta1 theta2]=slider_limit(R,L,e)

%theta值只能介於theta1 theta2之間,所以for迴圈的上下線是theta1,theta2

for theta=theta1:1:theta2

%所以用thetax角做出一迴圈
%讓theta介於由slider_limit()所求出的兩個極限角中間
%然而不寫在同個for迴圈內,是因為希望B的軌跡可以一直就在圖上

for thetax=theta1:1:theta2%畫出驅動桿B點可走的軌跡

plot(R.*cosd(thetax),R.*sind(thetax),'r-','LineWidth',2)
axis ([-2 70 -2 35]);
grid on;
hold on;
end
%開始化滑塊運動的動畫,利用做更改後的slider_solve()做動畫
[d,theta3]=slider_solve(theta,R,L,e)
pause(0.01);
clf
end

(2)slider_solve()

function [d,theta3]=slider_solve(theta2,R,L,e,mode)
if nargin<5 mode="0;" d2g="pi/180;" theta="theta2*d2g;" cc="(e-R.*sin(theta))./L;">=0
theta3=asin(cc);
else
theta3=asin(-cc)*pi;
end
%由課本p 4-37圖4-21可見A B C三點的三角關係
d=L.*cos(theta3)+R.*cos(theta);


% B就是以A點為圓心,轉動theta角
text(0,0,'A')
hold on;
Bx=R.*cos(theta)
By=R.*sin(theta)
text(Bx,By,'B');
hold on;
plot([0 Bx],[0 By],'b-','LineWidth',2)
hold on;
plot(Bx,By,'ro');
hold on;

% C就是以B點為圓心,轉動theta3角
%但要記得我們一開始是以A點作為座標平面的原點
%所以別忘了把他加上Bx,By值做平移
%此處Cx其實就等於d,但因d為老師原有的程式,表示滑塊的水平距離,在此不做刪除

Cx=Bx+L.*cos(theta3)
Cy=By+L.*sin(theta3)
text(Cx,Cy,'C');
plot([Bx Cx],[By Cy],'k-','LineWidth',2)
hold on;
plot(Cx,Cy,'ro')
hold on;

%最後將theta3換回degree
theta3=theta3/d2g;


呼叫執行:

%R=10+23=33
%L=R+5=38
%e=10

draw_slider(33,38,10)
影片如下:


[附一]slider_limit()
function [s,theta21,theta22]=slider_limit(R,L,e)
d2g=pi/180;
th1=asin(e./(R+L));
th2=asin(e./abs(R-L));
s=(R+L).*cos(th1)-abs(R-L).*cos(th2);
theta21=th1/d2g;
theta22=th2/d2g;

2007年5月5日 星期六

HW8


問題一:設桿2角度theta2=45度時,求各點之位置、速度與加速度為何?

本題利用f4bar函數執行即可

呼叫為:f4bar([4 3 3 5],0,45,10,0,-1,0)

桿長分別為[4 3 3 5]
由於第一桿是水平桿,所以theta1=0
第二桿由題目限定為theta2=45
角速度為td2=10(rad/s)
角加速度為tdd2=0
因為為閉合型,所以mode組合模數=-1
由第二桿驅動,所以linkdive選擇0


以下為matlab執行過程:

>> [val,form]=f4bar([3 2 4 2],0,60,10,0,-1,0)

val =

1.0e+002 *

Columns 1 through 4

0.0300 0 0 0
0.0100 + 0.0173i 0.6000 0.1000 0
0.0387 - 0.0102i -0.1475 0.0541 -1.2758
0.0187 + 0.0071i 0.2091 0.1655 -2.3627

Columns 5 through 6

0.1000 + 0.1732i 0.0100 + 0.0173i
0.3092 + 0.1181i 0.0487 + 0.0071i
-1.0000 - 1.7321i 0
-3.4302 - 6.3693i 0

%form = 1表示可以構成四連桿。
form =

1
%跑出來的答案仍然為複數形式,所以利用abs去求各項的值

%第一項為各桿向量值
>> abs(val(:,1))

ans =

4
3
3
5

%第二項為各桿之角度
%第二桿符合題目所要求的45度
>> abs(val(:,2))

ans =

0
45.0000
69.4856
99.5246

%第三項為各桿之角速度
%第二桿符合題目所要求的10 rad/s
>> abs(val(:,3))

ans =

0
10.0000
16.2681
4.9677

%各桿之角加速度
>> abs(val(:,4))

ans =

0
0
491.4428
383.6120

>> abs(val(:,5))

ans =


0.0300 %此為Q點的線速度
0.0248 %此為P點的線速度
0.3000 %此為Q點的線加速度
1.9220 %此為P點的線加速度




問題二:繪出此四連桿之相關位置及標明各點之速度方向及大小(以程式為之)。

本題利用drawlinks程式執行即可

呼叫為
>> drawlinks([4 3 3 5],0,45,-1,0)
桿長分別為[4 3 3 5]
由於第一桿是水平桿,所以th1=0
第二桿由題目限定為th2=45
因為為閉合型,所以mode組合模數=-1
由第二桿驅動,所以linkdive選擇0


唯需更改原drawlinks程式碼,將題目所要求的速度及加速度標明上去
其中V及a由上題所求代入

程式碼如下:

%取Vp的實部做v方向的x座標(對原點)
Ap=real(values(1,5))
%取Vp的虛部做v方向的y座標(對原點)
Bp=image(values(1,5))

%取Vq的實部做v方向的x座標(對原點)
Aq=real(values(2,5))
%取Vq的虛部做v方向的y座標(對原點)
Bq=image(values(2,5))

%因為此向量太常,所以稍微做修正除以三百,圖形才會清楚
%並且必須平移至P點及Q點
Ap=Ap/300+rx(2)
Bp=Bp/300+ry(2)
Aq=Aq/300+rx(3)
Bq=Bq/300+ry(3)

%標出速度的方向,並加註其速度以及加速度
plot(Ap,Bp,'o')
text(Ap,Bp,' Vp=0.0248 ap=1.9220 ');
plot([rx(2) Ap],[ry(2) Bp]);
plot(Aq,Bq,'o')
text(Aq,Bq,' Vq=0.0300 aq=0.3000 ');
plot([rx(3) Aq],[ry(3) Bq]);
圖片如下:


問題三:當桿2迴轉時,求出此組四連桿之限制角度,並繪出其位置(以程式為之)。
∵4+3≦3+5,4-3≦3-5。

∴無法做完整迴轉,必定有限制
其中 θmin=cos-1{[r12+r22-(r3-r4)2]/[2r1r2]}=28.9550
θmax=2π-cos-1{[r12+r22-(r3-r4)2]/[2r1r2]}=331.0450
呼叫 drawlimits([4 3 3 5],0,-1,0)

得圖如下:




問題四:設theta2=[0:20:360],試繪出此組四連桿之重疊影像,解釋為何有些沒有值。

程式碼如下:
>>for i=0:20:360
drawlinks([4 3 3 5],0,i,-1,0)
hold on

end

圖如下:

其中沒有值的部份可由第三題看出,其以到達極限點後就無法再繼續旋轉,若把這張圖以第五題的動畫方式來觀察,更為明顯。


問題五:若將問題三考慮在內,只在可迴轉的範圍內迴轉,請問你能讓此組四連桿作成動畫方式迴轉嗎?

利用講義中 move_4path2,body,draw4links,f4limits函數即可完成

呼叫方式如下:

move_4paths([4 3 3 5],0,0,3,0,10,0,1,0,4,150)
%r取[4 3 3 5]
%本題中r6 th6皆等於0
%nlink取3
%th1由題意為0
%td2=10
%tdd2=0
%總共做四次運動
%分割成150個片段

影片如下: