2007年6月16日 星期六

作業十二

B94611003

一.
(1)

一組標準全齒輪齒輪之徑節為8(亦可使用自設值),齒數分別為30T與48T,其工作壓力角為20度(可為14.5或25度,自選)。
試求其接觸線長度,與接觸比。

由老師製作的程式 contact_ratio
代入
徑節=8

齒輪齒數為30及48

工作壓力角為20度
由matlab執行程式後可得以下資料
[c_ratio, c_length,ad,pc,pb,r2,r3,ag]=contact_ratio(8,30,48,20)

>> [c_ratio, c_length,ad,pc,pb,r2,r3,ag]=contact_ratio(8,30,48,20)
c_ratio = 1.7005
c_length = 0.6275
ad = 0.1250
pc = 0.3927
pb = 0.3690
r2 = 3.7500
r3 = 6
ag =
10.4850 9.9211 20.4061
6.5532 6.2007 12.7538

其中
接觸比=1.7005
接觸長度= 0.6275 吋

(2)

兩齒輪之節圓、基圓直徑各為如何?請列式計算其結果。
第一齒輪節圓直徑為 30/8 = 3.75
第二齒輪節圓直徑為 48/8= 6
第一齒輪基圓直徑為3.75 * cos (20) = 3.523
第二齒輪基圓直徑為6 * cos(20) = 5.638吋


(3)

此組齒輪是否會產生干涉現象?試列式證明之。


(N2^2+2*N2*N3)sin^2(壓力角) > = 4
(N3^2+2*N3*N2)sin^2(壓力角) > = 4(1+N2)
代入數值

442.18 > 176
606.41 > 124

所以整個接合的過程皆不會有干涉發生

(4)

可否利用draw_gear.m繪出其接合情形,並繪出其動畫效果。
將draw_gear.m的程式稍作修改
加入第二齒輪的齒數參數 N2 ,以及旋轉角度參數 n

function [coords]=draw_gear(Dp,N,N2,phi,range,x0,y0,n)
% [coords]=draw_gear(Dp,N,phi,range,x0,y0)
% To draw a whole gear
% Inputs:
% Dp: Diametrical pitch
% N: no of teeth in a gear
% N2: no of teeth in second gear
% phi: pressure angle, degrees
% range: the section range to be drawn
% x0,y0: the location of the gear center
% Example [coords]=draw_gear(10,15,20,360,0,0)
% rotate direction

for m=1:360;
clf

[coords1]=draw_gear2(8,30,48,20,360,1,0,m)

pause(0.02)

end

作業十一

B94611003

一.
某凸輪開始時先在0-100∘區間滯留,然後提升後在200至260∘區間滯留,其高度(衝程)為5公分,其餘l由260∘至360∘則為返程。升

程採用等加速度運動,返程之運動型式自定。設刻度區間為10∘,試繪出其高度、速度及加速度與凸輪迴轉角度間之關係。

@設ψ凸輪之迴轉角度,

ψ=100-200∘為升程,轉折點為150∘,起點100∘,令θ = ψ-100,β = 100及h = 5代入公式,可得升程之第一段(θ=100-200∘)

y(θ)=2h(θ/β)²=2(5)[(ψ-100)/100]²

升程之第二段(θ=150-200∘)則仍以ψ-100=θ,β=100及h=5代入公式

y(θ)=h[1-2(1-θ/β)²]=(5)[1-2(1-{ψ-100}/100]²

返程之區間為260∘至360∘,轉折點為(260+360)/2=310∘,而β=360-260=100∘。設ψ-260=θ,代入返程一段的位移公式則第一區段(

θ=260-310∘):

y(θ)=h[1-2(θ/β)²]=(5)[1-2({ψ-260}/100]²


返程第二段之區間為310至360度,其轉折點與β均與第上列相同,代入返程二段的位移公式,可以得到:

y(θ)=2h[1-(θ/β)²]=2(5)[1-({ψ-260}/100]²


利用電腦程式運算升程與返程

計算升程
theta=100:10:200;
for i=1:length(theta)
[ss(i), vv(i), aa(i)]=parabol_cam(theta(i),100,100,1,5,0);
end;

計算返程
theta=260:10:360;
for i=1:length(theta)
[ss(i), vv(i), aa(i)]=parabol_cam(theta(i),260,100,-1,5,0);
end;




















二.
設凸輪之半徑為15公分,以順時針方向旋轉,其從動件為梢型,垂直接觸,長為10公分
從動件之運動係依照第二項之運動型式。試繪出此凸輪之工作曲線。

@
以function [x,y]=pincam(cth,r0,s,e,L,range,pattern,cw)
為基礎,淘汰不可處理的範圍直接使用pincam.m,依照上題的分析acccam.m計算結果,可得此凸輪之工作曲線‧
s :衝程
r0:為桿長
e :偏置量
L :桿長
range 也使用[100 200 260]
pattern代入[2 1]
cw 是凸輪轉動方向逆時鐘使用-1
偏至量為零
[x y]=pincam([0:10:360],15,5,0,10,[100 200 260],[2 1],-1)




















三.
你能讓此凸輪迴轉嗎?

@依照原設定資料和pincam函式繪製如下

在裡面多加入一迴圈

function [x,y]=pincam(cth,r0,s,e,L,range,pattern,cw)
for m=0:12:360
clf
ctheta=cth+m
figure(1);
clf;
th=ctheta*pi/180;
s0=sqrt(r0*r0-e*e);
for i=1:length(ctheta)
t=th(i)*cw;
A=[cos(t) -sin(t);sin(t) cos(t)];
[ym,yy,yyy]=dwell(cth(i),range,pattern);
x0=s0+ym*s;
Sx=[0 x0 x0+L;e e e];
X=A\Sx;
x(i)=X(1,2);y(i)=X(2,2);
line(X(1,1:2),X(2,1:2));
end
hold on;
plot([0 x],[0 y],'ro',x,y,'k-')
axis equal
axis ([-25 25 -25 30])
pause(0.02)
end

這樣座標軸每格12作一次紀錄
固定座標系統也會比較容易觀察
動畫繪製方程式

作業十

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

加速度就是速度的變化率,假想一捷運進站減速,其速度表會以某個頻率變化,加速度可以顯示此頻率,

當一桿以某特定點M等角速度迴轉時,其端點P之速度方向在桿之垂直方向上。

與速度和離心力方向垂直概念類似,加速度的方向為向著另一端點 如有角加速度,則加速度方向為加速度與向心力的合力方向。

如M點等速移動,則依據相對運動,p點的速度向量要加上M點的速度向量,加完就是新的方向,加速度的方向則可以用為分的方式求出極接近兩點間的速度改變量,求出加速度的值和量
當p點在M點等速時的運動有M點移動方向的分率,則P點的加速度要用向心向量加上M向量在P方向上的分率。

若M也有加速度,就很有趣了P點所加的M速度向量隨時間而改變,加速度所要加成的M向量在P方向上的分率也隨時間而改變,就要知道當下的速度是多少..才能算出P的速度和方向 知道當下的加速度 才能算p加速度的值和量,基本上速度同向的話加分率 加速度同向的話也是加上分率

點P與Q跟之前的四連桿有許多相同之處,因在其原理中連接桿的前接點被前一個連桿控制著隨著前連桿而擺動,所以第二連桿的點會隨自己的前端點不同而有不同的擺動狀況如同前面幾個問題,設有一運動之曲柄滑塊連桿組合,設滑塊之偏置量為零,且在水平方向移動,試以此機構之曲桿長度及角度,以及連桿長

設連桿長: l
角速度: ω(rad/s)

則速度: ωl(m/s)
法線加速度: lω^2 (m/s^2)

設M等速移動: V(m/s)
P點的速度為 V + w X l , 其中 w X l為w和 l之外積
M點速度不影響該桿之角加速度

設M點加速移動: a(m/s^2)
P點的速度=v+at+iωl*exp(iωt+iθ)
P點的加速度=a-ω*ω*l exp(iωt+iθ)


@結桿之長度為輸入項,利用matlab寫出一程式計算在不同曲柄角度時,六點瞬心之對應位置。可順便探討六點瞬心與曲柄角間之關係。

偏置量為零就為零吧 這樣可以是同三連桿 然後滑塊在水平方向移動

輸入
slider_draw(8,8,0)


function slider_draw(R,L,e)

ang=linspace(0,360,100);
[d,theta3]=slider_solve(ang,R,L,e,1)
x=R*cosd(ang);
y=R*sind(ang);
for n=1:100
link_plot([0,x(n),d(n)],[0,y(n),e],2);
line([d(n)-3,d(n)+3,d(n)+3,d(n)-3,d(n)-3],[e-2,e-2,e+2,e+2,e-2]);
hold on
plot(0,0,'ro')
plot(x(n),y(n),'ro')
plot(d(n),e,'ro')
plot([0,0],[0,e-d(n)*(y(n)-e)/(x(n)-d(n))],'ro:')
plot([x(n),0],[y(n),e-d(n)*(y(n)-e)/(x(n)-d(n))],'ro:')
plot([x(n),d(n)],[y(n),y(n)*d(n)/x(n)],'ro:')
plot([d(n),d(n)],[0,y(n)*d(n)/x(n)],'ro:')
axis equal
axis ([-45 45 -30 30]);
pause(0.000001)
clf
end

作業九

B94611003

5/3 全程上課

一.
請就教科書中第四章第五節之偏置機構作另類分析,分析過程可採你所知的方式(包括講義中所列的方法)。運動中分以曲桿驅動及滑塊驅動的方式,並說明運動的 界限或範圍。設此機構之曲桿長Rcm , 連桿Lcm,滑塊之偏置量為10cm等數據作分析。其中,R=10+(學號末二碼),L=R+5 。


偏置機構主要建立在四連桿結構上,
因為偏置結構的其中一個運動結採用滑塊形式。
ㄧ般運動結雖只能傳遞一個自由度,
但還可在二維空間作動,
滑塊的作動比較特殊,
他必須在一個平面上,
與接地節點不太ㄧ樣,
它不必ㄧ定在地面的直線上運動,
我們可以給定空間中任何一個平滑直線代表滑塊的運動方向,

曲桿為固定桿旁之桿,之後的題目會討論到以此桿作動將如何導引四連桿機構作動,
偏置機構定義將連桿四垂直固定桿與滑塊運動方向,
也就是滑塊的運動方向與固定桿平行,
當連桿四也就是搖桿長度為零,
則固定桿直接作用於滑塊上,
滑塊也將在圓心作動,
以此為主要的軸心出發寫這道題目,
分析過程使用到很多角度的計算

曲桿R = 10 + 3 = 13 (cm)
連桿L = 13 + 5 = 18 (cm)
偏置量代表第四桿長 = 10 (cm)

有偏置量之四連桿其滑塊動作不在圓心,
所以可以想見偏置量的計算感覺

我的偏置量與 e = 10cm相當
曲桿不能完成360度的迴轉
利用slider_limit() 可以計算出衝程和界限距離













利用slider_solve()
輸入曲桿 連桿 連桿與水平線的夾角 偏置量
可以計算出任意曲桿角度之對應連結桿角度及水平距離

再利用slider_draw() 可做出動畫

function slider_draw(R,L,e)
theta1=slider_limit(R,L,e)
theta2=asind((L-e)/R)+180
ang=linspace(theta1,theta2,100);
d=slider_solve(ang,R,L,e,1)

x=R*cosd(ang)
y=R*sind(ang)
for n=1:100
line([0,x(n),d(n)],[0,y(n),e])
line([d(n)-3,d(n)+3,d(n)+3,d(n)-3,d(n)-3],[e-2,e-2,e+2,e+2,e-2])
axis equal
axis ([-120 120 -120 120])
pause(0.01)
clf
end
ang=linspace(theta2,180-theta1,100);
d=slider_solve(ang,R,L,e,-1)
x=R*cosd(ang)
y=R*sind(ang)
for n=1:100
line([0,x(n),d(n)],[0,y(n),e])
line([d(n)-3,d(n)+3,d(n)+3,d(n)-3,d(n)-3],[e-2,e-2,e+2,e+2,e-2])
axis equal
axis ([-120 120 -120 120])
pause(0.01)
clf
end

作業八

B94611003

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

本題採用講義上之f4bar函式
分析出四連趕各桿位置,速度,加速度,然後取值

以下為函式的內容:

function [data,form] = f4bar(r,theta1,theta2,td2,tdd2,mode,linkdrive)
%輸入參數為
%r= [r1 r2 r3 r4]: 各桿之長度
%theta1= 桿一之水平角度
%theta2= 驅動桿(可為桿2或3)之水平角度
%td2= 驅動桿之角速度(rad/sec)
%tdd2= 驅動桿之角加速度(rad/sec^2)
%mode= +1 or -1 組合模數,負值表閉合型;正值表分支型
%linkdrive = 0表示驅動桿為第二桿; 1表示驅動桿為第三桿
if nargin<7,linkdrive=0;end mode="1;end" data="zeros(4,6);" linkdrive="=" r="[r(1)" rr="r.*r;d2g=" t1="theta(1);tx=" s1="sin(t1);c1=" sx="sin(tx);cx=" a="2*r(1)*r(4)*c1-2*r(2)*r(4)*cx;" c="rr(1)+rr(2)+rr(4)-rr(3)-2*r(1)*r(2)*(c1*cx+s1*sx);" b="2*r(1)*r(4)*s1-2*r(2)*r(4)*sx;" pos="B*B-C*C+A*A;">=0,
form=1;
% Check for the denominator equal to zero
if abs(C-A)>=1e-5
t4=2*atan((-B+mode*sqrt(pos))/(C-A));
s4=sin(t4);c4=cos(t4);
t3=atan2((r(1)*s1+r(4)*s4-r(2)*sx),(r(1)*c1+r(4)*c4-r(2)*cx));
s3=sin(t3);c3=cos(t3);
else
% If the denominator is zero, compute theta(3) first
A=-2*r(1)*r(3)*c1+2*r(2)*r(3)*cx;
B=-2*r(1)*r(3)*s1+2*r(2)*r(3)*sx;
C=rr(1)+rr(2)+rr(3)-rr(4)-2*r(1)*r(2)*(c1*cx+s1*sx);
pos=B*B-C*C+A*A;
if pos>=0,
t3=2*atan((-B-mode*sqrt(pos))/(C-A));
s3=sin(t3); c3=cos(t3);
t4=atan2((-r(1)*s1+r(3)*s3+r(2)*sx),...
(-r(1)*c1+r(3)*c3+r(2)*cx));
s4=sin(t4);c4=cos(t4);
end
end
theta(3)=t3;theta(4)=t4;
%velocity calculation
td(2)=td2;
AM=[-r(3)*s3, r(4)*s4; -r(3)*c3, r(4)*c4];
BM=[r(2)*td(2)*sx;r(2)*td(2)*cx];
CM=AM\BM;
td(3)=CM(1);td(4)=CM(2);

%acceleration calculation

tdd(2)=tdd2;
BM=[r(2)*tdd(2)*sx+r(2)*td(2)*td(2)*cx+r(3)*td(3)*td(3)*c3-...
r(4)*td(4)*td(4)*c4;r(2)*tdd(2)*cx-r(2)*td(2)*td(2)*sx-...
r(3)*td(3)*td(3)*s3+r(4)*td(4)*td(4)*s4];
CM=AM\BM;
tdd(3)=CM(1);tdd(4)=CM(2);
%store results in array data
% coordinates of P and Q
if linkdrive==1,
c2=c3;c3=cx;s2=s3;s3=sx;
r(2:3)=[r(3) r(2)];theta(2:3)=[theta(3) theta(2)];
td(2:3)=[td(3) td(2)];tdd(2:3)=[tdd(3) tdd(2)];
else
c2=cx;s2=sx;
end
for j=1:4,
data(j,1:4)=[r(j)*exp(i*theta(j)) theta(j)/d2g td(j) tdd(j)] ;
end % position vectors
data(1,5)=r(2)*td(2)*exp(i*theta(2));%velocity for point Q
data(2,5)=r(4)*td(4)*exp(i*theta(4));%velocity for point P
data(3,5)=r(2)*(i*tdd(2)-td(2)*td(2))*exp(i*theta(2));%acc of Q
data(4,5)=r(4)*(i*tdd(4)-td(4)*td(4))*exp(i*theta(4));%acc of P
data(1,6)=data(2,1);%position of Q, again
data(2,6)=data(1,1)+data(4,1);% position of P

%find the accelerations
else
form=0;
if linkdrive==1,
r=[r(1) r(3) r(2) r(4)];
for j=1:4, data(j,1)=r(j).*exp(i*theta(j));end % positions
end
end



%給定條件執行程式
>> [data,form]=f4bar([4 3 3 5],0,45,10,0,-1,0)

data =

1.0e+003 *

Columns 1 through 5

0.0040 0 0 0 0.0212 + 0.0212i
0.0021 + 0.0021i 0.0450 0.0100 0 0.0041 - 0.0245i
0.0011 + 0.0028i 0.0695 -0.0163 0.4914 -0.2121 - 0.2121i
-0.0008 + 0.0049i 0.0995 -0.0050 0.3836 -1.8712 - 0.4391i

Column 6

0.0021 + 0.0021i
0.0032 + 0.0049i
0
0

function dyad_draw([4 3 3 5],[0 45 69 99],[0 10 16.3 5],[0 0 491.4 383.6])

%column1: 各桿之位置向量(複數型式)
%column2: 各桿之水平夾角
%column3: 各桿之角速度
%column4: 各桿之角加速度
%column5-1: Q點之速度
%column5-2: P點之速度
%column5-3: Q點之加速度
%column5-4: P點之加速度
%column6-1: Q點之位置向量
%column6-2: P點之位置向量

form =

1

%form=1 表示此四連桿可構成,若為0 則表不行


由程式結果得到
O點位置: 0 + 0i
Q點位置: 0.0021 + 0.0021i
P點位置: 0.0032 + 0.0049i
R點位置: 0.0040 + 0i(同桿一)


>> abs(data(:,5))

ans =

1.0e+003 *

0.0300
0.0248
0.3000
1.9220

又對column5取絕對值後
Q點速度為0.03
P點速度為0.0248
R點和O點速度為0(因桿1為固定桿)
(速度單位為: 長度/時間)

同理
Q點加速度為0.3
p點加速度為1.9220
R點和O點加速度為0
(加速度為: 長度/時間^2)

第一桿:0.0040
第二桿:0.0021 + 0.0021i
第三桿:0.0011 + 0.0028i
第四桿:-0.0008 + 0.0049i
速度如下:
第一桿:0(rad/s)
第二桿:10.0000(rad/s)
第三桿:16.2681(rad/s)
第四桿:4.9677(rad/s)
加速度:
第一桿:0(rad/s*s)
第二桿:0(rad/s*s)
第三桿:491.4428(rad/s*s)
第四桿:383.6120(rad/s*s)

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

本題使用講義上function drawlinks函式
繪出給定條件drawlinks([4 3 3 5],0,45,1,0)之四連桿

以下為函式內容:
function [values]=drawlinks(r,th1,th2,mode,linkdrive)
%function drawlinks(r,th1,th2,mode,linkdrive)
%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
%mode: assembly mode
%linkdrive: 0 for crank, 1 for coupler
%clf;
if nargin<5,linkdrive=0;end mode="1;end" rr="values(:,1);" rx="real(rr(:,1));rx(4)=" ry="imag(rr(:,1));ry(4)=" b="=" linkdrive="=">> axis([-1 5 -1 5]);
axis equal;
drawlinks([4 3 3 5],0,45,-1,0)
%在顯示畫面上標明三點速度方向及大小
gtext ('速度方向0.0212 + 0.0212i 大小0.03)
gtext ('速度方向0.0041 - 0.0245i 大小0.0248)
gtext ('速度方向0 + 0 大小0')
gtext ('速度方向0 + 0 大小0')


ans =

Columns 1 through 5

4.0000 0 0 0 0
2.1213 + 2.1213i 45.0000 0 0 0
1.0513 + 2.8098i 69.4856 0 0 0
-0.8274 + 4.9311i 99.5246 0 0 0

Column 6

2.1213 + 2.1213i
3.1726 + 4.9311i
0
0

%Q速度方向0.0212 + 0.0212i 大小0.03
%P速度方向0.0041 - 0.0245i 大小0.0248
%R及0速度方向0 + 0 大小0

三.
當桿2迴轉時,求出此組四連桿之限制角度,並繪出其位置(以程式為之)。

老師第六章講義function drawlimits在角度限制上的運用下
求出當桿2迴轉時,此組四連桿之限制角度
再運用fb_angle_limits求之

function [theta]=deadangle(r,mode)
% Finding the max. and min. angles of link 4.
% Input: r: linkage matrix.
% Output:theta:angles of link 2 & link 4.
% Examples:
rr=r.*r;d2g=pi/180;if nargin<2,mode=1;end ph1="acos(((r(2)-r(3))^2-rr(1)-rr(4))/(2*r(1)*r(4)));" ph2="acos(((r(2)+r(3))^2-rr(1)-rr(4))/(2*r(1)*r(4)));" th1="acos((rr(1)+rr(2)-(r(3)+r(4))^2)/(2*r(1)*r(2)));" th2="acos((rr(1)+rr(2)-(r(3)-r(4))^2)/(2*r(1)*r(2)));" th1="0;end" th2="2*pi;end">th2,temp=th1;th1=th2;th2=temp;end
if th1==pi&th2==2*pi,th1=0;end
if th1==0&th2==pi,th2=2*pi;end
if th1==0&th2==0,th2=2*pi;end
if ~isreal(ph1),ph1=0;end
if ~isreal(ph2),ph2=2*pi;end
if ph1>ph2,temp=ph1;ph1=ph2;ph2=temp;end
if ph1==0&ph2==0,ph2=2*pi;end
theta=[th1,th2;ph1,ph2]/d2g;


將theta=deadangle([4 3 3 5])執行後
可以得到:
theta =

0 28.9550
0 97.1808

上死點:















四.

這三個角度是無法繪製出來的,因theta2只能介於28.9550與97.1808之間,

三個角度都超過死點,所以東西出不來。















五.

需要用到下列函式(drawlinkscg.m)

function [values]=drawlinks(r,th1,th2,mode,linkdrive)
if nargin<5,linkdrive=0;end
if nargin<4,mode=1;end
[values b]=f4bar(r,th1,th2,0,0,mode,linkdrive);
rr=values(:,1);
rr(3,1)=rr(1,1)+rr(4,1);
rx=real(rr(:,1));rx(4)=0;
ry=imag(rr(:,1));ry(4)=0;
if b==1
plot([0 rx(1)],[0 ry(1)],'k-','LineWidth',4);
hold on;
if linkdrive==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
plot([rx(1) rx(3)],[ry(1) ry(3)],'g-','LineWidth',1.5);
plot(rx,ry,'bo');
text(0,0,' O');text(rx(1),ry(1),' R');
text(rx(2),ry(2),' P');text(rx(3),ry(3),' Q');
else
fprintf('Combination of links fail at degrees %6.1f\n',th2);
end
title('Hit Ctrl+C to stop');
axis([-5 5 -5 5]);
grid on

以主程式來呼叫
閉合型
for t=1:6
for i=29:331
clf;drawlinkscg([4 3 3 5],0,i,-1,0);
pause(0.0000001);
end;for i=29:331
clf;drawlinkscg([4 3 3 5],0,360-i,-1,0);
pause(0.0000001);
end;

分支型
for t=1:6
for i=29:331
clf;drawlinkscg([4 3 3 5],0,i,1,0);
pause(0.0000001);
end;for i=29:331
clf;drawlinkscg([4 3 3 5],0,360-i,1,0);
pause(0.0000001);
end;

作業七

B94611003

一.
第一秒


















第二秒:



















第三秒:



















第四秒:



















第五秒:




















二.

第一桿的
(1)速度 : http://homepage.ntu.edu.tw/~b94611003/7/1v.jpg
(2)加速度 : http://homepage.ntu.edu.tw/~b94611003/7/1a.jpg

第二桿的
(1)速度 : http://homepage.ntu.edu.tw/~b94611003/7/2v.jpg
(2)加速度 : http://homepage.ntu.edu.tw/~b94611003/7/2a.jpg

第三桿的
(1)速度 : http://homepage.ntu.edu.tw/~b94611003/7/3v.jpg
(2)加速度 : http://homepage.ntu.edu.tw/~b94611003/7/3a.jpg


三.

動畫: http://homepage.ntu.edu.tw/~b94611003/7/flash.html


本次作業的函式:

function dyad_run(rho,theta,td,tdd,time)
set(gca,'xlim',[0 100],'ylim',[0 100],...
'NextPlot','replace','Visible','off')
tdT=td;
thetaT=theta;
thetaTEMP=theta;
mov = avifile('walk.avi')
for n=1:length(time)
for p=1:length(rho)
tdT(p)=td(p)+tdd(p)*(n-1);
thetaT(p)=theta(p)+td(p)*(n-1)+0.5*tdd(p)*(n-1)^2;
end
[v,a]=dyad_draw(rho,thetaT,tdT,tdd)
if n > 1
for q=1:length(rho)
vv(q,n-1)=v(q);
aa(q,n-1)=a(q);
end
end
pause(1)
F = getframe(gca);
mov = addframe(mov,F);
end
mov = close(mov);

作業六

B94611003

一.
(1)
總共有12個連桿 14個節點

圖:




















(2)
 M=3*(N-J-1)+F
 N=12 J=15 
 F為12個旋轉結+1個滑動結+2個滑槽
 F=12*1+1*1+2*2=17
 M=-12+17=5 自由度為5

(3)
函式為
gruebler(12,[12 1 2])
自由度為5

(4)
滑槽因有轉動與滑動兩動作,計算自由度要多2。
滑塊因會與地面產生滑動,使之多出了一滑動結。


二.

圖:

















(1)
c,e,f為球節,自由度3
a,b為旋轉節,自由度1
d為圓柱節,自由度2

(2)
 m=6(N-J-1)+F=6(6-6-1)+13
 m=7 其自由度為7
(3)
 函式為
 gruebler(6,[2 0 0 3 1])
 自由度為7
(4)
 本題是有惰性自由度的,經觀察,4號桿與6號桿可以自轉,因此本題的惰性自由度為2,總自由度為7-2=5
 惰性自由度對系統的影響為總自由度的減少,因為可以自轉的軸在決定系統外型時,其自轉角度並不影響系統之外型。


三.
(1)
 在一四連桿組中,最短桿與最長桿之和小於其他兩桿之和時,則至少有一桿為可旋轉桿。稱為葛拉索第一類型
 相對的,最短桿與最長桿之和大於其他兩桿之和時,所有的活動連桿必為搖桿(三搖桿機構),為葛拉索第二類型

(2)
 第一組中,7+4=6+5,屬葛拉索第三類桿,或稱中立連桿組
 函式如下
grashof(1,[7 4 6 5])
ans =Neutral Linkage

 第二組中,8+3.6>5.1+4.1,屬於葛拉索第二類桿
 函式如下
grashof(1,[8 3.6 5.1 4.1])
ans =Non-Grashof Linkage

 第三組中,6.6+3.1<5.4+4.7,屬葛拉索第一類桿
 至少有一桿為曲柄,其接地桿鄰近最短桿,故為曲柄搖桿型
 函式
grashof(1,[5.4 3.1 6.6 4.7])
ans =Crank-Rocker Linkage

(3)
 觀察以上三組數據,僅第二組四連桿為非葛拉索型,若要將其改成葛拉索型機構,可考慮將最長桿火最短桿減短,或將第二和第三長的連桿長度增加,以達成葛拉索機構最長與 最短之和小於另外兩桿之和的要求。

作業五

B94611003

作業五
以人體為例,其手臂的動作可以視為三支桿,分別由上手臂,下手臂及手掌等三部份組成。其連結點分別為BCD,上手臂長為L1,下手臂長為L2,手掌長為L3,分別為三連桿,其連結點均屬旋轉結。

一.
  1. 試分別以一線畫繪出上手臂,下手臂及手掌的外形,令其座標組合名稱分別為arm1, arm2, palm,各組合之起點與終點分別為其連結點(注意:每人所做的應該不同,請勿抄襲)。
  2. 寫 出一程式函數function body(L1,L2,L3,theta1,theta2,theta3),令其繪出整個手臂的外型。其對應角度除第一個上手臂之水平角度為theta1 外,theta2為下手臂對上手臂的角度,theta3為手掌對下手臂之夾角,後二者反時針方向為正,順時針方向為負。其連桿連結角度關係如圖二。試就所 撰寫之程式結構作一說明。
  3. 試量自己的手臂尺寸作為輸入,當theta1=90度,theta2=-45度,theta3=-30度時,其位置如何。
  4. 設theta1角度在-90度與-75度間變動,theta2在-45度至-35度間變動,而theta3則在-30度至-10度間變動。試將其變動區間分為十等分,模擬其動畫,並在部落格中顯示其動作

製作繪製手臂外型的函式:
function arm(A,B,e)
e=abs(e);
AB=(B(1)+j*B(2))-(A(1)+j*A(2));
D=abs(AB);th=angle(AB);
t=linspace(pi/2,2.5*pi,20);
Cout=max(d/2,0.2)*exp(j*t');Cin=Cout/2;
if d>0,
P=[Cout;Cout(1:10);D+Cout(11:20);D+Cout;D+Cout(20);Cout(1)];
else
P=[Cin;0;D;D+Cin];
end;
xx=real(P);yy=imag(P);
x=xx*cos(th)-yy*sin(th)+A(1);
y=xx*sin(th)+yy*cos(th)+A(2);
line(x,y);
axis equal;
function draw_palm(A,B,c,d)
d=abs(d);
AB=(B(1)+j*B(2))-(A(1)+j*A(2));
D=abs(AB);th=angle(AB);
t=linspace(pi/2,2.5*pi,17);
Cout=max(d/2,0.2)*exp(j*t');Cin=Cout/2;
if d>0,
P=[Cout;Cout(1:9);
D+Cout(9);D+Cout(9)+f;D+Cout(9);D+Cout(9:11);
D+Cout(11);D+Cout(11)+f;D+Cout(11);D+Cout(11:13);
D+Cout(13);D+Cout(13)+f;D+Cout(13);D+Cout(13:15);
D+Cout(15);D+Cout(15)+f;D+Cout(15);D+Cout(15:17);
D+Cout(17);D+Cout(17)+f;D+Cout(17);
D+Cout;D+Cout(9);D+Cout(17);Cout(1)];
else
P=[Cin;0;D;D+Cin];
end;
xx=real(P);yy=imag(P);
x=xx*cos(th)-yy*sin(th)+A(1);
y=xx*sin(th)+yy*cos(th)+A(2);
line(x,y);
axis equal;


axis([0 100 -50 50]);
axis equal;
L1 = 25;
L2 = 23;
L3 = 10;
theta1 = 55;
theta2 = 235;
theta3 = 200;
a = L1*cosd(theta1);
b = -L1*sind(theta1);
c = a+L2*cosd(theta2-theta1-180);
d = b+L2*sind(theta2-theta1-180);
theta4 = theta3+theta2-theta1-360;
e = c+L3*cosd(theta4)/2;
f = d+L3*sind(theta4)/2;
arm1 = [0 0;a b];
arm2 = [a b;c d];
palm = [c d;e f];
arm(arm1(1,:), arm1(2,:), 7);
arm(arm2(1,:), arm2(2,:), 5);
finger =L3/2;
draw_palm(palm(1,:), palm(2,:), 8,finger);
繪製完成

二.

設出手指每個關節的函數意義
程式如下:
function hand(a,b,c)
clf
axis equal
for n=0:6
palm=[0 0;6 0;6 0.5;0 0.5;0 0]
patch(palm(:,1),palm(:,2),'k')

first=[6 0;
6+a*cosd(15*n) a*sind(-15*n);
6+a*cosd(15*n)+0.5*cosd(15*n-90) a*sind(-15*n)-0.5*sind(-15*n-90);
6+a*cosd(15*n)+0.5*cosd(15*n-90)+a*cosd(15*n+180) a*sind(-15*n)-0.5*sind(-15*n-90)+a*sind(-15*n+180);
6+a*cosd(15*n)+0.5*cosd(15*n-90)+a*cosd(15*n+180)+0.5*cosd(15*n-270) a*sind(-15*n)-0.5*sind(-15*n- 90)+a*sind(-15*n+180)-0.5*sind(-15*n-270) ]

patch(first(:,1),first(:,2),'b')
pause(0.6)
second=[6+a*cosd(15*n) a*sind(-15*n);
6+a*cosd(15*n)+b*cosd(15*n*2) a*sind(-15*n)+b*sind(-15*n*2);
6+a*cosd(15*n)+b*cosd(15*n*2)+0.5*cosd(15*n*2-90) a*sind(-15*n)+b*sind(-15*n*2)-0.5*sind(15*n*2-90);
6+a*cosd(15*n)+b*cosd(15*n*2)+0.5*cosd(15*n*2-90)+b*cosd(15*n*2+180) a*sind(-15*n)+b*sind(-15*n*2)-0.5*sind(15*n*2-90)-b*sind(15*n*2+180);
6+a*cosd(15*n)+b*cosd(15*n*2)+0.5*cosd(15*n*2-90)+b*cosd(15*n*2+180)+0.5*cosd(15*n*2-270) a*sind(-15*n)+b*sind(-15*n*2)-0.5*sind(15*n*2-90)-b*sind(15*n*2+180)-0.5*sind(15*n*2-270)]
patch(second(:,1),second(:,2),'b')

third=[6+a*cosd(15*n)+b*cosd(15*n*2) a*sind(-15*n)+b*sind(-15*n*2);
6+a*cosd(15*n)+b*cosd(15*n*2)+c*cosd(15*n*3) a*sind(-15*n)+b*sind(-15*n*2)-c*sind(15*n*3);
6+a*cosd(15*n)+b*cosd(15*n*2)+c*cosd(15*n*3)+0.5*cosd(15*n*3-90) a*sind(-15*n)+b*sind(-15*n*2)-c*sind(15*n*3)-0.5*sind(15*n*3-90);
6+a*cosd(15*n)+b*cosd(15*n*2)+c*cosd(15*n*3)+0.5*cosd(15*n*3-90)+c*cosd(15*n*3+180) a*sind(-15*n)+b*sind(-15*n*2)-c*sind(15*n*3)-0.5*sind(15*n*3-90)-c*sind(15*n*3+180)]
patch(third(:,1),third(:,2),'b')

end

將手指的長度輸入function 即可得到答案
食指 2.5 1.5 0.8
中指 3 2 1
無名指 2.7 2 1
小指 2.2 1.3 0.6

作業四

B94611003
一.
以講義第二章之圖2.5之正三角形為例,試寫出matlab程式,分別就三個頂
點作動態旋轉(正三角形之邊長L=(你的學號末二碼)+10)。




















程式如下:

No=3;
P=No+10;

axis equal;
a=[P/2 0 -P/2 P/2];
b=[0 3^(1/2)*P/2 0 0];
T=line(a',b');
for i=0:1:120;
rotate(T,[0 0 1],3,[P/2 0 0]);
pause(0.01);
end;
for j=0:1:120;
rotate(T,[0 0 1],3,[0 3^(1/2)*P/2 0]);
pause(0.01);
end;
for k=0:1:120;
rotate(T,[0 0 1],3,[-P/2 0 0]);

pause(0.01);
end;

二.
設一連桿長度為10cm,厚度為4cm,繞於原點旋轉,其另一端則以一條彈簧固定於(15,0)cm的位置,試利用matlab寫出一程式,並繪圖顯示出該桿迴轉一圈時之位置。



















程式如下:

a=[0 10 10 0 0];
b=[2 2 -2 -2 2];
line(a,b);
for i=0:30:360
a1=x*cosd(i)+y*sind(i);
a2=[10*cosd(-i) 15];
b1=-x*sind(i)+y*cosd(i);
b2=[10*sind(-i) 0];

line(a1,b1);
line(a2,b2);
axis equal;
pause(0.01);
end;

三.
有一四連桿,其ABCD四點之座標分別為A(0,0);B(3,4);C(13,4);D(10,0),其單位為cm,若AD為固定桿,AB為第二桿BC與CD分別為第三與第四桿,各桿厚度分別為2cm,3cm,1.5cm,2cm。試繪出其相關位置。




















程式如下:
axis equal
linkshape([0 0],[3 4],3)
linkshape([3 4],[13 4],1.5)
linkshape([13 4],[10 0],2)
linkshape([10 0],[0 0],2)

若AB為主動迴轉桿,則其每間隔30度間之對應位置會如何?




















程式如下:
axis equal
for i=0:12
m=acos(3/5)
n=asin(4/5)
x=5*cos(m+i*pi/6)
y=5*sin(n+i*pi/6)
linkshape([0 0],[x y],2)
linkshape([x y],[10+x y],3)
linkshape([10+x y],[10 0],1.5)
linkshape([10 0],[0 0],2)
pause(0.01)
end

作業三

B94611003 林瑋倫

一.

程式碼:
a=35;
tohand=35;
h=35:5:70;
axis equal
de=acosd((a.^2.+h.^2.-tohand.^2)./(2.*a.*h));
y=a*sind(90-de);
t=a*cosd(90-de);
for i=1:8;

line([0,t(i)],[0,y(i)]);
line([t(i),0],[y(i),h(i)]);
end

圖:



















問題答:
我拳頭的範圍大概在以肩胛為中心半徑70公分內
依據的是手肘35公分的範圍最長加上下手臂也是35公分


二.





















旋轉對;
銅管樂器轉閥;
機車軸承;
硬碟軸承;
風扇陶瓷軸承;

全都是以一個中間軸做軸心
外部連接部分以此軸新做旋轉















低對:

銅管長號轉閥上方的連接桿
此是以原球形包覆金屬小球一起做平移和轉動的過程










高對:
腳踏車的輪胎

雨傘桿

腳踏車與地面接觸接近一條線
雨傘桿上也是小面積的接觸平移


























形式閉合結:
銅管樂器調音管
調音管調整的過程中被外管控制在內部運動
與長號又稱伸縮號的滑管相同
不過滑管大家都知道且只有長號具有
調音管只要是管樂器都會有

















外力閉合結:
銅管按鍵(活塞)
按鍵樂器的活塞下方以彈簧施力使按鍵位在上方的位置
當演奏者下壓後彈簧將按鍵上推回原來的位置




















三.
程式碼:
message=('xxxx')
heigh=input(message);
hheigh=heigh/2;

st=72:72:432;
circ=0:1:360;

for j=0:12;
t0=j*hheigh*pi/6;
t=hheigh*sind(circ)+t0;
y=hheigh*cosd(circ);

for st=72:72:360;
t5=hheigh*sind(st+j*30)+t0;
y5=hheigh*cosd(st+j*30);
line([t0 t5'],[0 y5']);
end

line(t,y);
end

圖:



















問題回答:
若人頭到腰部為身高的一半
則人每個接觸到圓周的點約相隔72度

作業二

第一題︰



為運動端
就如圖一的運動端皆於另一連桿
此為膝蓋的運動區域,連桿的聯接主要靠軟骨組織









下顎不知道可不可以算一種連桿
不過他是兩端接於頭骨上的可動骨頭
運動端為頭骨左端或右端的下方







髖骨與大腿骨相連接的地方就是運動節
大腿骨為link。



此處出現了幾個連桿和運動節
包括了手腕 手肘和肩膀在圖中也出現了四個連桿



















第二題︰


就如同生物科學中的演化,雖有路可循,卻還是得依賴
所謂的”變異”,突變這檔事卻是完全無法預料且大部分
都不是好的結果。並須靠時間的推進才會有演化的發生。
發明與發現應該都得從一開始的構想出發,生活中的什麼
事情激發了創意,由創意的構思產生了一連串的計畫,並
讓這些計畫成為一堆的實驗,順利的話,將會實驗出可以
開發的東西。如果以一個有機構基礎的人來說,碰到任何
機構都可以做分析,並找出更理想的機構運作方式,而且
在這樣的背景下,構思幾乎都可以實踐,發明的步調會很
具有邏輯性~,但在缺乏原始創造的進程下,這樣的發明步
調缺乏創造力,也不是一個可以讓人振奮的進步,知識走
到哪,發明就跟到哪,應該不是我或全人類希望的創造方
式吧!



第三題︰

>> x=3+10;
>> M=3+10;
>> x=1:1:10;
>> y=x.^(1/M);
>> plot(x,y)

http://2.bp.blogspot.com/_SiVOqZP1-5c/RfgFX35gatI/AAAAAAAAACA/ttLqOdsqYro/s200/b94611003.jpg

作業一

姓名:林瑋倫
學號:B94611003
聯絡電話:0919984071
電子郵件:masiglar@yahoo.com.tw

清大動力機械系網站
http://www.pme.nthu.edu.tw/index_c.php
有許多相關課程介紹,相關學生作品發表,定期的演講時間

動力機械課程
http://home.pchome.com.tw/school/einrobot/spm1.html
有各種機器人的教程

作業十三

b94611003

1.試設計一組複式齒輪,使其轉速比為125(請說明思考步驟及結果)。

我的想法是使用幾組齒輪達到轉速比125的目標,一般的齒輪組大概能負荷的轉速比大概以十為分界吧好像,大過十就建議紛出另一組齒輪組達成這個目標。

課本上有提到用開方或開立方的方式來大約找出一組齒輪組的轉速比配額,那麼125的轉速比很容易得到一組齒輪比5,然後配合三組齒輪組來達成一整組複式齒輪。

先求小輪(驅動輪需使用的大小)
5 * 12 = 60
5 * 13 = 65
5 * 14 = 70
5 * 15 = 75
5 * 16 = 80

因自己平常有在操作兩齒輪的齒輪組,發現11T的齒輪在高壓力下損壞率極高,12~14T的齒輪損壞率也不低,又因為都是整數,所以選用齒輪15T的驅動輪。

那麼一組齒輪組的比數就是 15:75;

所以這組複式齒輪組的接法我選用

15:75 ; 15:75 ; 15:75 三組

雖然都是一樣的,有可能造成製造機械的脫序,也有可能在驅動過程中產生共振破壞齒輪結構,但因這組配合毫無誤差且數字漂亮,我還是這樣選用齒輪組。

2.請指出本學期中你自己最感得意的一次作業(請說明其原因,且該作業必須在自己的部落格內)。

我還蠻喜歡我第二次作業,因為我這項作業使用到了很多生活看的到的東西,而且在探索實際例子的時候,看到了很多身邊的東西原來充滿了這樣的元件,因對於元件的定位至此才很清楚,而且可以把自己喜歡的東西拿來做一番介紹,實際上也是非常可貴的經驗。往常不是很能區分各項機構的範疇,會覺得很迷惘,但透過了使用運動結和連桿的方式,可以大致上定位出連桿與運動節之間的互動與結構的鑲嵌,可以將這類的機構透過各種分析而定義成我們我們熟悉的樣子,這樣的過程還蠻好的,在實用上又上了一個層次,讓我覺得獲益非常多,雖然程式的使用上也有很多收穫,但在系統上的收穫卻令人更為驚奇而引發季動,畢竟這世界的知識就像超大的資料庫,對目錄非常收悉以後,要去哪一頁都很容易了!

2007年6月1日 星期五

作業十一

一.
某凸輪開始時先在0-100∘區間滯留,然後提升後在200至260∘區間滯留,其高度(衝程)為5公分,其餘l由260∘至360∘則為返程。升

程採用等加速度運動,返程之運動型式自定。設刻度區間為10∘,試繪出其高度、速度及加速度與凸輪迴轉角度間之關係。

@設ψ凸輪之迴轉角度,

ψ=100-200∘為升程,轉折點為150∘,起點100∘,令θ = ψ-100,β = 100及h = 5代入公式,可得升程之第一段(θ=100-200∘)

y(θ)=2h(θ/β)²=2(5)[(ψ-100)/100]²

升程之第二段(θ=150-200∘)則仍以ψ-100=θ,β=100及h=5代入公式

y(θ)=h[1-2(1-θ/β)²]=(5)[1-2(1-{ψ-100}/100]²

返程之區間為260∘至360∘,轉折點為(260+360)/2=310∘,而β=360-260=100∘。設ψ-260=θ,代入返程一段的位移公式則第一區段(

θ=260-310∘):

y(θ)=h[1-2(θ/β)²]=(5)[1-2({ψ-260}/100]²


返程第二段之區間為310至360度,其轉折點與β均與第上列相同,代入返程二段的位移公式,可以得到:

y(θ)=2h[1-(θ/β)²]=2(5)[1-({ψ-260}/100]²


利用電腦程式運算升程與返程

計算升程
theta=100:10:200;
for i=1:length(theta)
[ss(i), vv(i), aa(i)]=parabol_cam(theta(i),100,100,1,5,0);
end;

計算返程
theta=260:10:360;
for i=1:length(theta)
[ss(i), vv(i), aa(i)]=parabol_cam(theta(i),260,100,-1,5,0);
end;




















二.
設凸輪之半徑為15公分,以順時針方向旋轉,其從動件為梢型,垂直接觸,長為10公分
從動件之運動係依照第二項之運動型式。試繪出此凸輪之工作曲線。

@
以function [x,y]=pincam(cth,r0,s,e,L,range,pattern,cw)
為基礎,淘汰不可處理的範圍直接使用pincam.m,依照上題的分析acccam.m計算結果,可得此凸輪之工作曲線‧
s :衝程
r0:為桿長
e :偏置量
L :桿長
range 也使用[100 200 260]
pattern代入[2 1]
cw 是凸輪轉動方向逆時鐘使用-1
偏至量為零
[x y]=pincam([0:10:360],15,5,0,10,[100 200 260],[2 1],-1)




















三.
你能讓此凸輪迴轉嗎?

@依照原設定資料和pincam函式繪製如下

在裡面多加入一迴圈

function [x,y]=pincam(cth,r0,s,e,L,range,pattern,cw)
for m=0:12:360
clf
ctheta=cth+m
figure(1);
clf;
th=ctheta*pi/180;
s0=sqrt(r0*r0-e*e);
for i=1:length(ctheta)
t=th(i)*cw;
A=[cos(t) -sin(t);sin(t) cos(t)];
[ym,yy,yyy]=dwell(cth(i),range,pattern);
x0=s0+ym*s;
Sx=[0 x0 x0+L;e e e];
X=A\Sx;
x(i)=X(1,2);y(i)=X(2,2);
line(X(1,1:2),X(2,1:2));
end
hold on;
plot([0 x],[0 y],'ro',x,y,'k-')
axis equal
axis ([-25 25 -25 30])
pause(0.02)
end

這樣座標軸每格12作一次紀錄
固定座標系統也會比較容易觀察
動畫繪製方程式

[x y]=pincam([0:10:360],15,5,0,10,[110 220 270],[2 3],-1)