2007年6月13日 星期三

HW13


生機二 B84611023 許惠善



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

(1) 決定組合數:

a.對125開根號≒11.180>10,因為每組轉數比維持在10之內較佳,所以由此可見,用兩組組合不佳。

b.我們考慮對125開立方根=5<10,故使用三組齒輪。

(2) 由(1)可知我們僅需串聯三組齒輪即可,其齒數對應可由

小齒輪齒數×5=大齒輪齒數 得知

選用齒輪對應可得

小齒輪齒數 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

對應大齒輪齒數60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150

(3) 當壓力角為25度時,為防止內切,故小齒輪齒數選擇12,故三組齒輪分別為12,60;12,60;12,60




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






其實HW3 HW4 HW5我自己也都很喜歡,因為那幾次作業寫完程式後,仍然不斷更改自己的程式,盡量把我的程式碼的邏輯用的更簡單(ex:HW5的手指,由一開始在跑程式的TEST時描很多點去做修正,自己想像一個拋物線方程式,利用拋物線方程去畫出手指的圖形,節省每個點必須自己INPUT的困擾)





另外,在作業時也將自己的照片、圖片加註很多對於說明自己作業更清楚、淺顯易懂的標記,所以我自己覺得HW3、4、 5,其實都還滿有參考價值的。





然而,HW10雖然沒有很多很難的程式碼要自己寫,這次作業一開始我也盡可能的像以往寫作業一樣,程式碼可以利用老師的程式作修改,也將自己的邏輯整理上去,註解部分盡求詳細、明瞭。



然而我覺得從作業十開始,自己有很大的進步。主要是因為,這篇作業是在和老師小組討論後才發表的。雖然之前有再看大家的BLOG,但並沒有很仔細檢討自己的作業缺失,和老師小組討論以後,我在去參考同學的BLOG,發現自己也有很多可以改善的地方:



(1)李儀珊的BLOG頁面非常詳細易懂,雖然我的BLOG放了很多內容進去,但我覺得儀珊的BLOG因為有套色的關係,所以整個版面讓讀者可以很容易的瞭解重點在哪,也不會看起來那麼雜亂,所以在這次作業我也開始改善自己的版面顏色配置。





(2)小組討論時聽林詠瞬提到,matlab的圖形可以直接在matlab程式中做修改,這次圖片就不像以往在小畫家畫得那麼辛苦,反而在matlab畫完後,整個圖片也比較有質感。





我認為我每次作業都很用心再撰寫,但其實沒想到自己的作業也應該去做的更好,而這次作業因為吸收不同人的長處,也保有自己原先的想法和優點,所以我很喜歡我的HW10。所以我認為多多參考別人的BLOG,會讓自己的作業更充實,BLOG經營的更好!!


2007年6月7日 星期四

HW12

生機二  B94611023 許惠善
我5/31日曾全程來上課。



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

1.試求其接觸線長度,與接觸比。


本題利用老師講義中的contact_ratio function即可求出答案

呼叫方式如下:
[c_ratio, c_length,ad,pc,pb,d2,d3,ag]=contact_ratio(8,30,40,20)

[輸入]
第一項為徑節,由題目所知為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


第一項接觸比:c_ratio = 1.7005
第二項接觸長度:c_length =0.6275

即為所求

2.兩齒輪之節圓、基圓直徑各為如何?請列式計算其結果。

由課本公式可知

節圓直徑=齒數÷徑節
D=N/Pd
[齒輪一]
D1=30/8=3.75
[齒輪二]
D2=48/8=6

由課本公式可知
基圓直徑=節圓直徑×cos(工作壓力角)
D'=D×cos(ψ)

[齒輪一]
D1'=D1×cos(ψ)
D1'=3.75×cos20=3.53
[齒輪二]
D2'=D2×cos(ψ)
D2'=6×cos20=5.64

節圓直徑亦可用第一題的結果第六項及第七項d2,d3得到
另原程式碼中,亦有求rb2以及rb3,即基圓的直徑,我們可以在funtion的輸出中加入rb2,rb3兩項
且由程式結果可知我們的計算無誤

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

由課本公式9.47,測試干涉之條件為:
(N1²+2N1 x N2)sin²ψ≧ 4 + 4N2

又題目所給N1=30T,N2=48T,Φ=20 則
(30²+2x30x48)*sin²(20)>4+4x48

∴不會產生干涉。

此題亦可使用老師講義中範例9.20 function [x]=isinterf(phi,N1,N2)計算
執行結果如下:

>> [x]=isinterf(20,30,48)
x = 0
[輸入]
第一項為壓力角為20
第二項為齒輪一齒數,30齒
第三項為齒輪二齒數,48齒

[輸出]
x=1表示產生干涉
x=0表示不產生干涉

∵ans=0
∴不產生干涉,與計算結果吻合。


另外,此題產生干涉的最低齒數可由課本公式(9.48)
N=2k/sin²ψ

已知20度時,k=1
N=18,故小齒輪的最低齒數為18

亦可由老師講義上的function min_teeth執行
執行如下:
>> [minT, value]=min_teeth(20,1)
minT = 18 %最小齒數=18,與我們計算結果吻合
value =17.0973

4.可否利用draw_gear.m繪出其接合情形,並繪出其動畫效果。
此題利用老師所提供的function move2_gear(Dpitch,nn1,nn2,phi,omega1)其實就可以解這題了,事實上老師的function中,其實不難看出本程式碼與draw_gear其實在畫出齒輪的部分概念大致相同。

其呼叫如下:
move2_gear(8,30,48,20,10)

[輸入]
第一項為徑節,由題目所知為8
第二項為齒輪一的齒數,由題目所知為30
第三項為齒輪二的齒數,由題目所知為48
第四項為壓力角,由題目所知為20
第五項為齒輪一的角速度,,自訂為10

輸出動畫如下:


[本題作業心得]
本題我起初自己改寫draw_gear改寫,然而動畫一直無法跑對,錯誤的動畫如下:

後來比對老師的程式碼function move2_gear(Dpitch,nn1,nn2,phi,omega1),
才發現自己的錯誤在於兩個齒輪在轉動時,相同的並不是他們角速度,而我在跑迴圈時,卻利用角速度做迴圈的條件,在去旋轉圖形,當然跑出了的齒輪不會吻合了。

另外,看見老師的輸出動畫標題打了「按ctrl+c停止」。我才知道有這個功能,之前在做作業的時候,往往因為邏輯上的疏失,常常錯誤的動畫必須耗很久時間讓他跑完,然而現在學會了終止動畫的方法,其實對於在寫程式的時候,要debug是很大的一項幫助

2007年6月1日 星期五

HW11

B94611023生機二許惠善

我本週(5/24)有來上課。

1.某凸輪開始時先在0-100∘區間滯留,然後提升後在200至260∘區間滯留,其高度(衝程)為5公分,其餘l由260∘至360∘則為返程。升程採用等加速度運動,返程之運動型式自定。設刻度區間為10∘,試繪出其高度、速度及加速度與凸輪迴轉角度間之關係。

本題利用老師網路上的程式即可作答。唯dwell函數有部分錯誤,dwell內的parabolicm函數需做修改,方可使用,其錯誤不大,所以僅附在本次作業之後,不再說明。

我所設定的突輪返程運動形式仍選擇用等加速度運動。
函數呼叫為 plot_dwell(0:10:360,5,[2 2],[100 200 260])

[說明]
第一項表示角度:選擇0-360度之區間做圖,故input0:10:360
第二項表示從動件衝程:題目設定為5cm,故input 5
第三項表示形式:因為皆為等加速度運動,所以應選擇2:parabolic 曲
第四項表示運動始末的角度:升程由100度開始運動且200度終止,故前兩項各為100、200,返程始於260度,故第三項為360




由圖可見,其函數圖形在紫色框框範圍內時,雖然速度值仍為斜直線,即加速度值應為水平線,然而加速度值卻掉下來了。原因是因為我們取間隔10度做變化,於是連線變為斜直線。

故我先對plot_dwell稍做更改,將原程式h1=plot(ctheta,y*s,'b-',ctheta,yy*s,'k-',ctheta,yyy*s,'r-')部分,
改為h1=plot(ctheta,y*s,'bo',ctheta,yy*s,'ko',ctheta,yyy*s,'ro'),再重新存成plot_dwell_point,目的是將這十個數據標示成點。

重新呼叫一次:
plot_dwell(0:1:360,5,[2 2],[100 200 260]) %線段部分改為一度一數據
hold on;
plot_dwell_point(0:10:360,5,[2 2],[100 200 260])
%將十個點以o表現出來

如此一來圖形清楚且正確多了



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

此題仍然依老師程式pincam呼叫即可得到

[x y]=pincam([0:10:360],15,5,0,10,[100 200 260],[2 2],-1);

[說明]
第一項表示角度:選擇0-360度之區間做圖,故input0:10:360
第二項表示突輪基圓半徑:題目要求為15cm,故input為15
第三項表示從動件衝程:題目設定為5cm,故input 5
第四項表示偏置量:設為0
第五項表示從動件長度:題目設定為10cm,故input 10
第六項表示運動始末的角度:升程由100度開始運動且200度終止,故前兩項各為100、200,返程始於260度,故第三項為360
第七項表示形式:因為皆為等加速度運動,所以應選擇2:parabolic 曲線
第八項表示凸輪轉動方向順時針為-1,逆時針為+1,題目所求為順時針,故input -1


圖形表示突輪與從動件的關係

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

本題由老師題目程式pincam做更改即可,原程式碼是將所有突輪上的點與從動件的關係依突輪固定表示之。

簡單的來思考這個問題,這支程式碼原先是先繪出所有線段,最後再迴圈外把突輪畫出來。所以我們可以先將從動件底端與圓心的線(這條是跑動畫不需要的線段)刪除。再者,我們無論圖形如何轉動,都應該有所有突輪的數據(也就是輪廓),最後我們去思考在轉動時,一次只能有一條從動件的關係在圖上。

所以應該不難想出,大致上的想法是利用兩組迴圈組成此程式,第一次迴圈中先將整個突輪的形狀相對關係求出,第二次在去做繪圖及旋轉

程式碼如下:

function [x,y]=pincam_rotate(cth,r0,s,e,L,range,pattern,cw)

figure(4);
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);

%原先此處line出圖形,在此刪除,否則所有的線會同時留在圖上
%line(X(1,1:2),X(2,1:2));
%line(X(1,2:3),X(2,2:3),'linewidth',3,'color','red')



end

%本angle是為了旋轉圖形90度之用
angle=[cosd(90) -sind(90);sind(90) cosd(90)];

%第二次迴圈才是真正要畫出圖形以及執行動畫
for i=1:length(cth)
clf ;
t=th(i)*cw;
[ym,yy,yyy]=dwell(cth(i),range,pattern);

%因為圖形在迴轉,所以應該和桿接觸點會固定在某一軸上
%所以我們先旋轉突輪
%因為xy(突輪外觀)是在上一個迴圈裡出現,所以我們每次更改數值時並不會影響xy的值


%原程式設計為圖形基準為x方向,但旋轉到了突輪各角度的方向,所以我一開始先將圖形轉回至正x方向(水平)
o=x*cos(-t)+y*sin(-t)
p=x*sin(-t)-y*cos(-t)


%然而題目所求為y方向(垂直),故我應將圖形旋轉至y方向上
m=o*cosd(90)+p*sind(90)
n=o*sind(90)-p*cosd(90)

%先畫出整個突輪的外型
plot([0 m],[0 n],'ro',m,n,'k-')
axis([-50 50 -50 50])
grid on;

%運算從動件位置
x0=s0+ym*s;
Sx=[0 x0 x0+L;e e e];

%本處老師程式原設計為旋轉某角度到突輪的各點使從動桿連接,然而現在我們不需要,只需要由水平轉回垂直向即可。
X=angle*Sx;

%為使圖形清楚,我仍然把從動桿底端到突輪中心線刪除
%line(X(1,1:2),X(2,1:2));

%畫線成為動畫
line(X(1,2:3),X(2,2:3),'linewidth',3,'color','red')
pause(0.5)

end
hold on;
grid on


呼叫為:
[x y]=pincam_rotate([0:10:360],15,5,0,10,[100 200 260],[2 2],-1);
(各項說明同上題)

動畫如下: