b94611001 歐陽太閒
6/7全程上課
一、複式齒輪之設計
實際運用齒輪時,必須建立一齒列(train),才能夠發揮齒輪的加減速,以及調整扭矩的功能,而且在較複雜的機構如行星齒輪系或者是差速器等,齒列分析是不可避免的.
本次作業題目為設計一轉速比125的複式齒輪齒列.
首先我們利用課本所教導的方法,將VR=125開根號
>>sqrt(125)
ans =
11.1803
顯然大於10,會使齒輪負荷過大且製造不便因此不適於以兩個齒輪組成的齒列,
因此我們嘗試開三次方根
>>125^(1/3)
ans =
5
可以得到一個漂亮的整數比,因此我們可以得到
ω1/ω2=5
ω2/ω3=5
ω3/ω4=5
因此VR=ω1/ω4=125
由此也可以得到齒數比:
N2/N1=5
N3/N2=5
N4/N3=5
1.因此考慮複式齒輪組
同樣的,齒輪的徑節(Dp),周節(Pc)和壓力角必須相同才能正常旋轉
也限制最小齒數為14齒,徑節=8,壓力角=25
得到
N1=14
N2=14*5=70
N3=14
N4=14*5=70
以contact_ratio(徑節,齒數1,齒數2,[壓力角])程式來計算接觸比,其中N2,N3共軸(coaxial)
>>[c_ratio,c_length,ad,pc,pb,r2,r3,ag]=contact_ratio(8,14,70,25)
c_ratio =接觸比
1.4565
c_length =接觸長度
0.5184
ad =齒冠
0.1250
pc =周節
0.3927
pb =基周節
0.3559
r2 =齒輪2節圓直徑
1.7500
r3 =齒輪3節圓直徑
8.7500
ag =
20.1547 17.2971 37.4518齒輪2的接近角/遠退角/作用角
4.0309 3.4594 7.4904 齒輪3的接近角/遠退角/作用角
因此我們可以得到c_ratio=1.4565大於1不會過載,且齒輪G1直徑1.7500,G2直徑8.7500,G3直徑1.7500,G4直徑8.7500
就算水平排列也可以得到
>>1.75+(8.75/2)+(1.75/2)+(8.75/2)+(1.75/2)+8.75
ans =
21
遠小於簡單齒列的最終端齒輪節圓直徑218.75,大幅度節省空間,也可以大幅節省成本,
另外
徑節(Dp)=8
周節(Pc)=0.3927
壓力角=25
齒冠=0.1250
也都合乎標準,不至於造成損壞.
然而,複式齒輪組較特殊的是由於有共軸,因此在撰寫程式時要較為小心.
故我們可以得到如下
只顯示節圓與基圓時
所以我們可以寫出以下結果
程式結構
1.清除畫面及程式資訊
2.參數引入draw_gear.m
3.建立基本物件
a.利用bushing畫基座
b.建立齒輪
c.利用bushing畫節圓和基圓
4.利用while進行動畫繪製
a.轉角
b.畫出新位置
function geartrain2(Dpitch,nn1,nn2,nn3,nn4,nn5,nn6,phi,ww)
%13.1 歐陽太閒b94611001 本程式改寫自老師的 move2_rack.m
%本程式改寫自老師的move2_rack %Dpitch=節矩,nn1=R2齒數,nn2=R3齒數,nn3=R3齒數,phi=壓力角,ww=nn1角速度
clf;
%清除畫面
d2r=pi/180;
%角徑轉換
unit1=0.01;
%動畫單位
phir=phi*d2r; pc=pi/Dpitch;
%計算pc
title('作業13 作者:歐陽太閒b94611001');
%資訊
xlabel('x-axis cm'); ylabel('y-axis cm');
hold on;
[coord,rp,rb]=draw_gear(Dpitch,nn1,phi,360,0,0);%將參數引入draw_gear.m,畫第一齒輪
[coord2,rp2,rb2]=draw_gear(Dpitch,nn2,phi,360,0,0);
%將參數引入draw_gear.m,畫第二齒輪
[coord3,rp3,rb3]=draw_gear(Dpitch,nn3,phi,360,0,0);
%將參數引入draw_gear.m,畫第三齒輪
[coord4,rp4,rb4]=draw_gear(Dpitch,nn4,phi,360,0,0);
%將參數引入draw_gear.m,畫第四齒輪
[coord5,rp5,rb5]=draw_gear(Dpitch,nn5,phi,360,0,0);
%將參數引入draw_gear.m,畫第五齒輪
[coord6,rp6,rb6]=draw_gear(Dpitch,nn6,phi,360,0,0);
%將參數引入draw_gear.m,畫第六齒輪
del=2.5;
coord2=rotate2D([coord2(:,1),coord2(:,2)],+del,0,0);
coord3=rotate2D([coord3(:,1),coord3(:,2)],+del,0,0);
coord4=rotate2D([coord4(:,1),coord4(:,2)],+del,0,0);
coord5=rotate2D([coord5(:,1),coord5(:,2)],+del,0,0);
coord6=rotate2D([coord6(:,1),coord6(:,2)],+del,0,0);
xc1=coord(:,1);yc1=coord(:,2);%將計算結果引出
xc2=coord2(:,1);yc2=coord2(:,2);%將計算結果引出
xc3=coord3(:,1);yc3=coord3(:,2);%將計算結果引出
xc4=coord4(:,1);yc4=coord4(:,2);%將計算結果引出
xc5=coord5(:,1);yc5=coord5(:,2);%將計算結果引出
xc6=coord6(:,1);yc6=coord6(:,2);%將計算結果引出
coord=bushing(rp/6,0,0);%利用bushing畫基座
coord2=bushing(rp2/6,rp+rp2,0);
coord4=bushing(rp4/6,rp+rp2+rp3+rp4,0);
coord5=bushing(rp4/6,rp+rp2+rp3+rp4+rp5+rp6,0);
xb1=coord(:,1);yb1=coord(:,2);
xb2=coord2(:,1);yb2=coord2(:,2);
xb4=coord4(:,1);yb4=coord4(:,2);
xb5=coord5(:,1);yb5=coord5(:,2);
plot(xb1,yb1,'r-');%畫出大小齒輪基座
plot(xb2,yb2,'r-');
plot(xb4,yb4,'r-');
plot(xb5,yb5,'r-');
pini=line('xdata',[],'ydata',[],'erasemode','xor','linewidth',1,'color','r');
%建立handler
gear=line('xdata',[],'ydata',[],'erasemode','xor','linewidth',1,'color','b');
gear2=line('xdata',[],'ydata',[],'erasemode','xor','linewidth',1,'color','b');
gear3=line('xdata',[],'ydata',[],'erasemode','xor','linewidth',1,'color','g');
gear4=line('xdata',[],'ydata',[],'erasemode','xor','linewidth',1,'color','g');
gear5=line('xdata',[],'ydata',[],'erasemode','xor','linewidth',1,'color','r');
[coord4]=bushing(-rp2,rp+rp2,0.2);%利用bushing畫節圓和基圓
plot(coord4(:,1),coord4(:,2),'b:');
[coord5]=bushing(-rb2,rp+rp2,0.2);
plot(coord5(:,1),coord5(:,2),'k:');
[coord6]=bushing(-rp,0,0);
%利用bushing畫節圓和基圓
plot(coord6(:,1),coord6(:,2),'b:');
[coord7]=bushing(-rb,0,0);
plot(coord7(:,1),coord7(:,2),'k:');
[coord8]=bushing(-rp3,rp+rp2,0); plot(coord8(:,1),coord8(:,2),'b:');
[coord9]=bushing(-rb3,rp+rp2,0); plot(coord9(:,1),coord9(:,2),'k:');
[coord10]=bushing(-rp4,rp+rp2+rp3+rp4,0); plot(coord10(:,1),coord10(:,2),'b:');
[coord11]=bushing(-rb4,rp+rp2+rp3+rp4,0); plot(coord11(:,1),coord11(:,2),'k:');
axis equal;
ang=0;
angp=ww*unit1;
while 1%利用while進行動畫繪製
rot1=rotate2D([xc1,yc1],ang,0,0);%進行轉角,產生新座標
rot2=rotate2D([xc2,yc2],-ang*(nn1/nn2),rp+rp2,0);
rot3=rotate2D([xc3,yc3],-ang*(nn1/nn2),rp+rp2,0);
rot4=rotate2D([xc4,yc4],ang*((nn1/nn2)^2),rp+rp2+rp3+rp4,0);
rot5=rotate2D([xc5,yc5],ang*((nn1/nn2)^2),rp+rp2+rp3+rp4,0);
rot6=rotate2D([xc6,yc6],-ang*((nn1/nn2)^3),rp+rp2+rp3+rp4+rp5+rp6,0);
set(pini,'xdata',rot1(:,1),'ydata',rot1(:,2));%分別畫出大小齒輪
set(gear,'xdata',rot2(:,1),'ydata',rot2(:,2));
set(gear2,'xdata',rot3(:,1),'ydata',rot3(:,2));
set(gear3,'xdata',rot4(:,1),'ydata',rot4(:,2));
set(gear4,'xdata',rot5(:,1),'ydata',rot5(:,2));
set(gear5,'xdata',rot6(:,1),'ydata',rot6(:,2));
drawnow; %繪製
pause(1/ww);
ang=ang+angp;
end %程式結束
代入以下指令,其中驅動齒輪角速度=300rad/s
>>geartrain2(8,14,70,14,70,14,70,25,300)
可得到以下影片
影片