2007年6月16日 星期六

第十三次作業

B94611016胡寅亮

第一題

要先決定組合數

複式齒列可用串聯多個組合之方式達到整體轉速比

而每組之轉速比以10以內為佳,超過此值時則需增加齒輪組數

將125開平方得到11點多大於十

表示光兩組齒輪的組合是不夠的

若將125開立方得5

所以用1:5的齒輪組串連三次,就可得到125的轉速比。


第二題

第四次

因為那次是真正自己寫程式有搞懂的一次

到後來的作業

雖然有懂

但是大多是用講義裡的程式加以修改

所以當然分數也不高

2007年6月15日 星期五

三國時代諸葛亮六出祁山,最後利用木牛流馬大敗魏軍。這段歷史至今仍膾炙人口。舉凡陳壽【三國志】、楊家駱【諸葛亮集】、楊家駱【南齊書-祖沖之傳】等著作,皆或多或少記載木牛流馬之發明,因此其真實性應是無庸置疑。

由於缺乏圖形的佐證,因此木牛流馬究竟為何物,至今仍有很大的爭論。其中較為可靠的說法有三:
一、 流馬即為現今所稱的獨輪車;此種主張的人數最多。高承【事物紀原】、【宋史】與【歷代名臣奏議】等,皆抱持此一論點;而近代之劉仙洲、李約瑟及陸敬嚴等人亦有相同看法。
二、 木牛流馬是步行機器;主張此論點的有【南齊書-祖沖之傳】、羅貫中【三國演義的政治與謀略觀】與李昉【太平御覽】…等,上述著作皆認為木牛流馬是失傳的古機械「奇器」。
三、 木牛是獨輪車、流馬是四輪車。

以下我在”中華古機械研究中心”這個網頁,找到有關學者研究木牛流馬,以及其研究成果的概述,他們是以八連桿步行機器馬的型式呈現的。



中國大陸新疆工學院的學者王湔,基於對中華文物的熱忱,生平致力於失傳古機械的研究。他認為四川棧道並不適合獨輪車的行走,因此木牛流馬應是「由連桿構成之步行機器」。

他根據【諸葛亮集】中的「做木牛流馬法」所述:「木牛者,方腹曲頭,一腳四足…牛仰雙轅,人行六尺,牛行四步,載一歲糧,日行二十里,而人不大勞。…」認為木牛流馬需靠人力扶持前進,且載重能力相當高,並能前進後退,為一對稱機構。王湔先生憑藉其多年的實務經驗,最後做出一能單側同步前進之單側十七桿型木牛流馬。不僅驗證其論點,也對研究失傳古機械做出極大之貢獻。





最上面的圖是支撐段,中間的是跨步段前期,最下面的是跨步段後期

但是王湔所做之木牛流馬是其憑實務經驗所完成,因此,王湔型木牛流馬不論在越野能力的表現上,或是著地時所帶給機架的衝擊力,皆有相當大的改進空間。

基於此點,林寬禮研究的主要目的便在於分析王湔型木牛流馬,並利用田口品質設計方法,修改原機構之設計尺寸,以得到一改良型之木牛流馬。

首先,以實地觀察並收集相關資料,來探討真牛在不同運動速度下的各種步態。由觀察結果得知,因運動速度的不同,真牛在運動型態上,會有步行、慢跑、以及快跑三種步態,且每一種步態的支撐段所佔全週期的時間比,會隨速度的小幅度增加而減少。王湔型木牛流馬是採單側同步前進,雖然真牛無此步態,但可印證古書記載,林寬禮也採用相同步態。

接著,針對單側十七桿型木牛流馬進行分析。此型木牛流馬為左右對稱機構,兩側曲柄成180°,因此兩側之動作型態恰好相反,符合單側前後腿同步前進之方式。單側機構扣除機架本身,後腿以十根連桿構成,前腿則以四桿構成,兩腿之間以兩根等長雙接頭連桿相連接。而在支撐段時,其運動方式符合膝關節暫時鎖定原理,即大小腿無相對運動,髖關節與蹄部的相對運動為一圓弧線。此種運動方式最為省力,能使木牛流馬所需推力降到最小。

最後,林寬禮根據田口品質設計方法,以提高跨步能力與降低足部著地速度為目標,來進行尺寸最佳設計。結果得到多組效果的改善約有兩倍之尺寸數據,兩個設計目標皆有良好的改進。此外,由結果得知,不需大幅改變桿長,就能大幅改善原機構所產生的缺點。

2007年6月7日 星期四

作業十二

B94611016 胡寅亮
1. 本人5/31有來上課

2.

一、 在老師的課程網頁中有contact_ratio程式
輸入參數:
Pd:徑節=8
n2, n3:兩齒輪之齒數=30,48
phi:壓力角=20

輸出參數:
cr_ratio:接觸比
cr_length:接觸長度
ad:齒冠
pc, pb:周節及基周節
d2, d3:兩齒輪節圓直徑。
ag:兩齒輪之接近角、遠退角及作用角

輸入[c_ratio,c_length,ad,pc,pb,d2,d3,ag]=contact_ratio(8,30,48,20 )得到
c_ratio =1.7005
c_length =0.6275
ad =0.1250
pc =0.3927
pb =0.3690
d2 =3.7500
d3 =6
ag =10.4850 9.9211 20.4061
6.5532 6.2007 12.7538
也就是
接觸比=1.7005
 接觸長度=0.6275吋
  齒冠=0.1250吋
  周節=0.3927
  基周節pb=0.3690
  齒輪節圓直徑齒輪一=3.75吋
        齒輪二=6吋
 齒輪一之接近角=10.4850度
      遠退角=9.9211度
      作用角=20.4061度
  齒輪二之接近角=6.5532度
      遠退角=6.2007度
      作用角=12.7538度

二、 我們可以由定義知道,
節徑*徑節=齒數
 所以齒輪一之節徑為30/8=3.75吋
   齒輪二之節徑為48/8=6吋
 而基圓直徑=節徑*cos(th)
(其中th為壓力角)
 所以齒輪一之基圓直徑為3.75*cos(20)=3.523吋
   齒輪二之基圓直徑為 6*cos(20)=5.638吋

三、 在課本9-39中,有詳細介紹干涉的檢驗並且逐步推導
根據公式我們知道,
N2及N3要滿足
  (N2^2+2N2*N3)sin^2(壓力角) >= 4(1+N3)才不發生干涉
   依照題意N2為30,N3為48,壓力角為20 則
  (20^2+2*20*48)sin^2(20) >= 4*(1+48)
271.1 > 196
   故本組數據將不會發生干涉
可以由
function [x]=isinterf(phi,N1,N2) 來測試
程式碼如下
function [x]=isinterf(phi,N1,N2)
x=0;
sinx=sin(phi*pi/180);
if N2N1,nn=N1;N1=N2;N2=nn;end
if N1*(N1+2*N2)*sinx*sinx<4*(1+N2), x=1;end
(若輸出為1代表有干涉現象,0則否)
所以我們輸入isinterf(20,30,48)

四、 可否利用draw_gear.m繪出其接合情形,並繪出其動畫效果。
draw_gear(8,30,20,360,-2.5,0)可得到接合情形
在螢幕上輸入move2_gear(8,30,48,20,5)
即可得到下面動畫

2007年6月2日 星期六

作業十一

B94611016 胡寅亮
1.本人5/24有來上課。

2.參考上課講義第十章凸輪運動,這題我用老師的給的”function plot_dwell”
程式碼如下
function plot_dwell(ctheta,s,pattern,range)
figure(1);clf;
[y,yy,yyy]=dwell(ctheta,range,pattern)
h1=plot(ctheta,y*s,'b-',ctheta,yy*s,'k-',ctheta,yyy*s,'r-')
legend('Displacement','Velocity','Acceleration',3)
xlabel('Elapsed Angle, degrees')
grid

而各個參數所代表的意義如下:
ctheta = 需要計算之凸輪角度,單位為度數。可以使用矩陣輸入之型式。
pattern = 運動的型式,二元素之列矩陣,其代碼如下:
1:等速運動uniform
2:抛物線parabolic
3:簡諧simple harmonic
4:擺線cycloidal 
5:多項式polynomial motion
range =升程及返程之範圍,三元素列矩陣    
輸出: y:位移
yy 對於凸輪角ctheta之第一導數;
yyy 對於凸輪角ctheta之第二導數。
因此,有了這些function,我們只要在螢幕上輸入plot_dwell(0:10:360,5,[2,3],[100 200 260 360])
就能得到「衝程為5,凸輪旋轉角度在100到200之間為升程且為等加速度拋物線運動,凸輪旋轉角度在260到360之間為回程且自訂為簡諧運動」這樣的運動位置速度加速度與角度之關係圖。

3.要描繪凸輪的工作曲線,參考上課講義的function如下
function [x,y]=pincam(cth,r0,s,e,L,range,pattern,cw)
而各個參數所代表的意義如下:
cth:凸輪角度,度數
r0:凸輪基圓半徑
e:偏置量
s:從動件衝程
L:從動件長度
cw:凸輪轉動方向(反時鐘為正,順時鐘為負)
pattern 運動的型式motion
range 升程及返程之範圍
因此,在螢幕上輸入
[x,y]=pincam([0:10:360],15,5,0,10,[100 200 260 360],[2 3],-1)
即可得到圖形

4.你能讓此凸輪迴轉嗎?
要讓凸輪迴轉,運用第三題的函式再加一些旋轉的程式碼得到”function pincam2”,程式碼如下:
function [x,y]=pincam2(cth,r0,s,e,L,range,pattern,cw)
figure(1);
clf;
th=cth*pi/180;
s0=sqrt(r0*r0-e*e);
for i=1:length(cth)
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);
end
%以下修改後加入的
for n=1:36
a=x+r0*cosd(10*n);
b=y+r0*sind(10*n);
plot([0 a],[0 b],'ro',a,b,'k-');
axis ([-50 50 -50 50]);
pause(0.01);
clf
end
在螢幕上輸入
pincam2([0:10:360],15,5,0,10,[100 200 260],[2 1],-1)即可得動畫

2007年5月27日 星期日

作業十

B94611016 胡寅亮
1.本人5/17有來上課。
2.
藉由老師介紹之瞬心畫法,我們可以得到下圖,瞬心在2、4桿的延長線上,故可得P點的速度以及加速度方向。P的速度方向垂直4桿,而加速度是在沿著4桿的方向。

如上圖所示,假設該桿得長度是L在一複數平面上,旋轉中心M為複數平面上的原點,端點P到旋轉中心M的距離是X,並且以角速度ω逆時針方向旋轉,那麼

P點是iωX*exp(iωt+iθ),加速度是-ω*ω*Xexp(iωt+iθ)。

今在M上提供一水平速度v,則P點的速度會是v+iωX*exp(iωt+iθ),加速度是-ω*ω*Xexp(iωt+iθ)。

若加上水平加速度a,則P點的速度會是v+at+iωX*exp(iωt+iθ),加速度是a-ω*ω*Xexp(iωt+iθ)。

P之速度方向是P與桿一端點連線的垂直方向,加速度方向則為P與桿一端點的連線方向。
Q之速度方向是Q與桿一端點連線的垂直方向,加速度方向則為Q與桿一端點的連線方向。
3.
瞬時中心的畫法在課本中有說明,依照課本的說明,我寫了個function slider_center,程式碼如下:


function slider_center(R,L,e)

th1=0;
if R>L

th2=asind(L/R);
else
th2=90;
end

th=linspace(th1,th2,200 )
[d,th3]=slider_solve(th,R,L,e,1)

x=R*cosd(th),
y=R*sind(th)

for n=1:200

hold on;
line([0,x(n),d(n)],[0,y(n),e]);
line([d(n)-1,d(n)+1,d(n)+1,d(n)-1,d(n)-1],[e-3,e-3,e+3,e+3,e-3]);
ground(0,0,3,0)
anchor(-3,0,0,0)

plot(0,0,'go');
plot(x(n),y(n),'go');
plot(d(n),e,'go');
plot([0,0],[0,e-d(n)*(y(n)-e)/(x(n)-d(n))],'go:');
plot([x(n),0],[y(n),e-d(n)*(y(n)-e)/(x(n)-d(n))],'go:');
plot([x(n),d(n)],[y(n),y(n)*d(n)/x(n)],'go:');
plot([d(n),d(n)],[0,y(n)*d(n)/x(n)],'go:');

axis equal;
axis ([-30 30 -50 50]);

pause(0.001);
clf;

end

若要得到動畫,只要在螢幕上輸入
slider_center(15,6,0)
就可得到下面的動畫

2007年5月16日 星期三

作業九

B94611016 胡寅亮

本人5月3日有來上課
我是五月十號下午兩點的那組

關於滑塊驅動,我的想法如下:

先求出曲桿跟滑塊的座標並連起來,再利用for迴圈製作動畫

要知道曲桿的座標,必須先知道曲桿跟水平夾角的極限值(th1、th2)
要知道滑塊的座標,必須先知道滑塊到原點的水平距離(d)以及偏置量(e)

th1、th2可由以下的function求出:
function [s,th1,th2]=slider_limit(R,L,e)
th1=asind(e./(R+L));
th2=180+asind((L-e)/R);
s=(R+L).*cosd(th1)-abs(R-L).*cosd(th2);

d可由以下的function求出:
function [d,theta3]=slider_solve(theta2,R,L,e,mode)
if nargin<5, mode=0;end
theta=theta2*d2g;
cc=(e-R.*sind(theta))./L;
if mode>=0,
theta3=asind(cc);
else
theta3=asind(-cc)+pi;
end
d=L.*cosd(theta3)+R.*cosd(theta);

因此我寫一個slider function說明曲桿的驅動方式如下,
function slider(R,L,e)

[s,th1,th2]=slider_limit(R,L,e)
th=linspace(th1,th2,300 )
[d,th3]=slider_solve(th,R,L,e,1)

x=R*cosd(th),
y=R*sind(th)
for n=1:300

line([0,x(n),d(n)],[0,y(n),e]);
line([d(n)-1,d(n)+1,d(n)+1,d(n)-1,d(n)-1],[e-3,e-3,e+3,e+3,e-3]);
ground(0,0,3,0)
anchor(-3,0,0,0)
pause(0.01);
axis ([-100 100 -100 100]);
axis equal;
clf;

end

關於滑塊驅動,我的想法如下:
建立一個function slider2
function slider2(R,L,e)

[s,th1,th2]=slider_limit(R,L,e)
th=linspace(th1,th2,300 )
[d,th3]=slider_solve(th,R,L,e,1)

x=R*cosd(th)
y=R*sind(th)
for n=1:300

line([0,x(n),d(n)],[0,y(n),e]);
line([d(n)-1,d(n)+1,d(n)+1,d(n)-1,d(n)-1],[e-3,e-3,e+3,e+3,e-3]);
ground(0,0,3,0)
anchor(-3,0,0,0)
pause(0.01);
axis ([-100 100 -100 100]);
axis equal;
clf;

end

th=linspace(th2,180-th1,300)
[d,th3]=slider_solve(th,R,L,e,-1)

x=R*cosd(th),
y=R*sind(th)
for n=1:300

line([0,x(n),d(n)],[0,y(n),e]);
line([d(n)-1,d(n)+1,d(n)+1,d(n)-1,d(n)-1],[e-3,e-3,e+3,e+3,e-3]);
ground(0,0,3,0)
anchor(-3,0,0,0)
pause(0.01);
axis ([-100 100 -100 100]);
axis equal;
clf;

end

因為滑塊驅動會滑到第二象限,所以mode輸入包括1和-1。
所以角度要從th2跑到180-th1,其他的跟前面一樣


輸入slider (26,31,10)可得曲桿驅動的情形


而輸入slider2(26,31,10)可得到滑塊驅動的情形

2007年5月9日 星期三

作業八

8-1

參考老師上課講義

並輸入f4bar([4 3 3 5],0,45,10,0,-1,0)後

得到以下資料:
0.0040 0 0 0 0.0212+0.0212i 0.0021+0.0021i
0.0021+0.0021i 0.0450 0.0100 0 0.0041-0.0245i 0.0032+0.0049i
0.0011+0.0028i 0.0695 -0.0163 0.4914 -0.2121-0.2121i 0
-0.0008+0.0049i 0.0995 -0.0050 0.3836 -1.8712-0.4391i 0

由於結果為向量而非點

經由計算的結果,各點之位置、速度與加速度為:
[位置] / [速度] / 加速度
O:[0 0] /[0 0] /[0 0]
P:[2.1 2.1] /[4.1 -24.5] /[-187.2 -439.1]
Q:[3.2 4.9] /[21.2 21.2] /[-212.1 -212.1]
R:[4 0] /[0 0] /[0 0]

8-2

如圖,其中灰色代表速度且縮小十倍,桃紅色代表加速度且縮小一百倍

8-3

參考範例程式

輸入指令fb_angle_limits([4 3 3 5],0,0)

得到對限制角度為28.955跟360-28.955

如右圖



8-4

因為4+3,3+5且|4-3|<|3-5|為一個雙搖桿連桿,而有值的範圍是[29,331]

如右圖







8-5