2007年5月23日

5/23- 第十次作業

作業十 b94611040 廖婉婷




*本週(5/17)有來上課*


Q1:請思考速度與加速度的問題,當一桿以某特定點M等角速度迴轉時,其端點P之速度方向如何?
其加速度方向如何?若該特定點M復以等速水平運動,則同一端點P之速度與加速度方向會變為如何?
若M點同時也有加速度,則點P會有何變化?
若以此推理四連桿的運動,則點P與Q之速度與加速度方向會與桿一(固定桿)之兩端點之關係如何?
與我們前面的作業分析結果有無共通之處?


在分析速度,加速度的問題時
我們可以使用之前的function dyad_draw
以下是函式內容:
function dyad_draw(rho,theta,td,tdd)
% Inputs: rho: 連桿長度
% theta: 連桿水平角度(deg)
% td: 角速度(rad/s)
% tdd: 角加速度(rad/s^2)
clf;
[vec,data] = dyad(rho,theta,td,tdd);
%先由function dyad計算出速度 加速度對應值再繪出
x=[0;cumsum(real(data(:,1)))];y=[0;cumsum(imag(data(:,1)))];
for i=1:length(x)-1
linkshape([x(i) y(i)],[x(i+1) y(i+1)],1);
end
for k=1:length(rho)
x0=x(k+1);y0=y(k+1);
vx=x0+real(data(k,2));vy=y0+imag(data(k,2));
ax=x0+real(data(k,3));ay=y0+imag(data(k,3));
line([x0 vx],[y0 vy],'marker','s','linewidth',2);
line([x0 ax],[y0 ay],'marker','s','color','r','linewidth',3)
end
sdata=sum(data);
ss=[real(sdata(1)) imag(sdata(1))];
vv=[real(sdata(2)) imag(sdata(2))];
aa=[real(sdata(3)) imag(sdata(3))];
line([0 ss(1)],[0 ss(2)],'linestyle',':','linewidth',2)
line([ss(1) ss(1)+vv(1)],[ss(2) ss(2)+vv(2)],...
'marker','d','color','g','linewidth',3)
line([ss(1) ss(1)+aa(1)],[ss(2) ss(2)+aa(2)],...
'marker','d','color','m','linewidth',3)

axis equal;grid on

今設一桿以特定點M作等角速度 ω(rad/s)轉動
則另一端P點有速度v = ωr(m/s)
其方向與M至P之向量垂直,與軌跡路徑相切
用於表示p點之速度快慢
至於加速度一般可分為切線及法線加速度
由於本題作等角速度迴轉,故角加速度為零,切線加速度亦為零
因此加速度僅為法線加速度之值: rω^2 (m/s^2), 其方向為向心
今假設桿長4, 水平角度30deg, 角速度0.5rad/s
結果如下圖所示:
dyad_draw(4,30,.5,.2)


若M為等角加速度0.2rad/s^2旋轉
執行程式
dyad_draw(4,30,.5,.2)
gtext ('切線加速度')
gtext ('法線加速度')
gtext ('合加速度')
%標明加速度及其切線,法線分量之位置

應該如下圖所示:


若該特定點M復以等速水平運動,則需考慮到相對運動之觀念
設如果M點是以Vm(m/s)的速度移動
那P點的速度為Vp = Vm + w x r ,
其中w x r為w和r之外積,r為m至p之相對位置
由於M點速度不影響該桿之角加速度 故加速度值不變
Vp和Vm的關係可由下圖作圖解:

若M點同時也有加速度設為A(m/s^2) 則要考慮到相對加速度
由上式相對速度關係式再對時間t微分
可以得到:Ap = Am + (Ap/m)t + (Ap/m)n
其中(Ap/m)t和(Ap/m)n 為相對加速度之切線及法線分量
因此式子變為Ap = Am + αxr - ω^2r
其關係見下圖:



若推至四連桿運動,因為桿一為固定
因此P與Q點可分別看作一端為固定點之桿作迴轉運動,也就是我們一開始討論的情形
可發現與前面作業所討論相同
首先見下圖

我們假設以下情況皆以桿二驅動
由於桿一固定 也就是0點固定點
若r1作等角速度ω迴轉
則p點有一速度Vp = ωr1, 方向與r垂直
因r1沒有角加速度 p點僅有法線加速度(Ap)n

若r1作等角加速度α迴轉
則p點產生了切線加速度(Ap)t
因此加速度合Ap = (Ap)t + (Ap)n

若要分析Q點速度,加速度
由於是第二桿驅動 p點已具有速度/加速度
因此討論到Q點則需採用相對速度/加速度的觀念
也就是VQ = Vp + w x r ; AQ = Ap + αxr - ω^2r





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


根據機構的定義,任二連桿在相同的平面上運動,應可找到一個瞬心
今天一曲柄滑塊機構,可看作一四連桿
又由甘迺迪定理可推得此機構共有4(4-1)/2 = 6個瞬心
首先由於四連桿之旋轉結即為瞬心 我們可以很快找到四個瞬心
另兩個瞬心則是彼此相對之桿造成的

因此要找出另兩個瞬心
由課本上瞬心定位法我們發現:
點13可由12 23之連線與14 34之連線交點獲得
同理
點24則為23 34連線與12 24之連線的交點

由以上找出了六個瞬心位置
便可由function繪出機構瞬心示意圖
以下為函示內容:
function drawcenter(r2,th2,r3)
%輸入函數為
%r2 = 曲桿長度
%th2 = 曲桿水平角度
%r3 = 連結桿長度
theta2 = th2*pi / 180;
%首先須記得將th2換算為弧度
X12 = 0; Y12 = 0;
X23 = r2*cos(theta2); Y23 = r2*sin(theta2);
X34 = X23+r3*cos(Y23/r3); Y34 = 0;
X13 = X34; Y13 = X34*tan(theta2);
X24 = 0; Y24 = X34*tan(Y23/r3);

% 繪出各部份
draw_inner = [X12 Y12;X23 Y23;X34 Y34;X12 Y12];
draw_outer = [X34 Y34;X13 Y13;X23 Y23;X24 Y24;X12 Y12];
draw_block = [X34-0.5 Y34-0.5;X34-0.5 Y34+0.5;X34+0.5 Y34+0.5;X34+0.5 Y34-0.5;X34-0.5 Y34-0.5];

hold on;
plot(draw_inner(:,1),draw_inner(:,2),'k-');
plot(draw_inner(:,1),draw_inner(:,2),'bo');
plot(draw_outer(:,1),draw_outer(:,2),'r:');
plot(draw_outer(:,1),draw_outer(:,2),'bo');
plot(draw_block(:,1),draw_block(:,2),'k-');
hold off;

%標註
text(X12+0.2,Y12-0.2,'12');
text(X23+0.2,Y23-0.2,'23');
text(X34+0.2,Y34-0.2,'34');
text(X13+0.2,Y13-0.2,'13');
text(X24+0.2,Y24-0.2,'24');

今假設r2 = 60, th2 = 45, r3 = 50
執行程式
>> axis([0 100 0 100])
axis equal;
drawcenter (50,45,60)

得到以下結果:

須特別留意在曲柄滑塊組合中
點14因為滑塊的關係,與接觸面(視為另一桿)運動方向相同
其方向應與地面垂直
亦即點14存在於無窮遠的位置


若要分析瞬心位置與曲柄角間之關係
我們試著將上一題繪出瞬心之function作角度迴圈製成動畫
再製作動畫前
我們先利用之前作業之function sld_angle_limits
算出給定桿長之極限角度 方便跑動畫時之角度範圍
以下為函式內容:
function [Qstart, Qstop]=sld_angle_limits(r,theta1,linkdrive)
%r= 各桿桿長
%theta1= 第一桿水平角度
%linkdrive= 0 第二桿驅動
%linkdrive= 1 第三桿驅動
%linkdrive= 2 滑塊驅動
%例如本題給定條件r = [0 60 50 0]
%r1隨角度改變因此可設為0
%又假設為滑塊驅動情況 故linkdrive = 2
r1=r(1);r2=r(2);r3=r(3);r4=r(4);
g2d=180/pi;
switch linkdrive
case 0 %crank
if r3+r4=0 & r3>r4
Qstart=asin((r4-r3)/r2);Qstop=asin((r4+r3)/r2);
elseif r3+r4>=r2 & r4>=r3 & r3>=0
Qstart=asin((r4-r3)/r2);Qstop=pi-asin((r4-r3)/r2);
elseif r3-r4<=r2 & r4<0 & r3>=-r4
Qstart=asin((r4-r3)/r2);Qstop=asin((r4+r3)/r2);
elseif r3-r4>=r2 & r3>=0 & -r4>=r3
Qstart=-pi-asin((r4+r3)/r2);Qstop=asin((r4+r3)/r2);
else
Qstart=0;Qstop=2*pi;
end
case 1 %coupler
if r2-r4<=r3 & r4>=0 & r2>=r4
Qstart=asin((r4-r2)/r3);Qstop=pi-asin((r4-r2)/r3);
elseif r2+r4=0
Qstart=asin((r4-r2)/r3);Qstop=asin((r4+r2)/r3);
elseif r2+r4<=r3 & r4<=0 & r2+r4>=0
Qstart=-pi-asin((r4+r2)/r3);
Qstop=asin((r4+r2)/r3);
elseif r2-r4 < r3 & r4 <=0
Qstart=asin((r4-r2)/r3);Qstop=asin((r4+r2)/r3);
else %r2>=(r3+abs(r4))
Qstart=0;Qstop=2*pi;
end
case 2 %slider displacement
Qstart=0;Qstop=0;
arg2=(r2+r3)^2-r4^2;
if abs(r2-r3)>=r4
arg1=(r2-r3)^2-r4^2;
if arg1>0,Qstart=sqrt(arg1);end;
Qstop=sqrt(arg2);
else
if arg2<0, return; end
Qstart=sqrt(arg2);Qstop=-sqrt(arg2);
end
theta1=0;g2d=1;
end %case
if Qstop < Qstart,TT=Qstart;Qstart=Qstop;Qstop=TT;end
adjust=(Qstop-Qstart)*1e-8;
Qstart=theta1+(Qstart+adjust)*g2d;
Qstop=theta1+(Qstop-adjust)*g2d;
%Qstart = 驅動桿(二或三桿)之最低限角度 (deg)
%Qstop = 驅動桿(二或三桿)之最高限角度 (deg)

執行程式:
[Qstart, Qstop]=sld_angle_limits([0 60 10 0],0,2)

Qstart =

10.0000


Qstop =

110.0000

得到給定桿長之曲柄滑塊極限角度約為10~110(deg)

讓程式跑角度迴圈製成動畫之指令:
for i = 10:110,
clf;
axis([0 100 -10 90])
axis equal
%在此必須固定座標軸
%不然畫面會隨著瞬心位置遠近而改變
%很難看出與滑塊機構之關係
drawcenter(60,i,50);
pause(0.1);
end;

結果如下:

沒有留言: