2007年5月31日 星期四

Homework 12

第12次作業
b94611001 歐陽太閒

5/31日曾全程來上課。

齒輪是機構中最重要的一種元件,可以在很少損失的情況(worm除外)下傳遞動力至任意方向,本次作業要分析的是一組標準全齒輪齒輪之徑節=8,齒數為30T與48T,工作壓力角20度(也分析14.5及25度)


1.接觸線長度,與接觸比



接觸比(Contact ratio)即同時有幾對齒相互嚙合。數值越大力量分散較平均,接觸比最好大於1
以免出現未嚙合等現象

接觸比 mc = 接觸路徑長度/基周節

或者課本的


因此我們可以利用講義中程式:
[c_ratio, c_length,ad,pc,pb,r2,r3,ag]=contact_ratio(徑節,齒數1,齒數2,[壓力角]')

[c_ratio, c_length,ad,pc,pb,r2,r3,ag]=contact_ratio(8,30,48,14.5)
c_ratio = 接觸比
2.0308
c_length = 接觸長度
0.7721
ad = 齒冠
0.1250
pc = 周節
0.3927
pb = 基周節
0.3802
r2 = 齒輪2節圓直徑
3.7500
r3 = 齒輪3節圓直徑
6
ag =
12.6898 11.6797 24.3695 齒輪2的接近角/遠退角/作用角
7.9311 7.2998 15.2309 齒輪3的接近角/遠退角/作用角

[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 = 齒輪2節圓直徑
3.7500
r3 = 齒輪3節圓直徑
6
ag =
10.4850 9.9211 20.4061 齒輪2的接近角/遠退角/作用角
6.5532 6.2007 12.7538 齒輪3的接近角/遠退角/作用角


[c_ratio, c_length,ad,pc,pb,r2,r3,ag]=contact_ratio(8,30,48,25)
c_ratio = 接觸比
1.5028
c_length = 接觸長度
0.5349
ad = 齒冠
0.1250
pc = 周節
0.3927
pb = 基周節
0.3559
r2 = 齒輪2節圓直徑
3.7500
r3 = 齒輪3節圓直徑
6
ag =
9.1921 8.8419 18.0340 齒輪2的接近角/遠退角/作用角
5.7450 5.5262 11.2712 齒輪3的接近角/遠退角/作用角


2.節圓、基圓直徑



根據圖片

節圓(Pitch Circle)節面之正剖面,為代表齒輪的虛擬圓
R=齒數/(徑節)
基圓(Base Circle)用以產生漸開線的虛擬圓
Rb=R*cos(壓力角)


a.首先,節圓的計算
徑節=8,齒數=30,48

R2=30/8=3.7500
R3=48/8=6

b.基圓之計算(稍小於節圓)
1.壓力角=14.5

因此:

Rb2=3.7500*cos(14.5*pi/180)=3.6306
Rb3=6*cos(14.5*pi/180)=5.8089

draw_gear(8,30,14.5,360,0,0)




2.壓力角=20

Rb2=3.7500*cos(20*pi/180)=3.5238
Rb3=6*cos(20*pi/180)=5.6382




3.壓力角=25

Rb2=3.7500*cos(25*pi/180)=3.3987
Rb3=6*cos(25*pi/180)=5.4378



或者根據Gears Encyclopedia
(Pd/cos(helix angle))*cos(atan(tan(正壓力角)/cos(helix angle)))

Gears Encyclopedia

3.齒輪的干涉


根據老師的講義,兩齒輪關係如圖

利用MP>AP,可獲得幾何關係:

因此:



故根據講義/課本中所提供的公式

(N22+2N2 x N3)sin2>= 4 + 4N3

302 + 2(30)(48)sin2(20)> 4 + 4(48)

1236.89>196
不會發生干涉

若利用講義中的[x]=isinterf(phi,N1,N2)

>>[x]=isinterf(20,30,48)
x =
0

function [x]=isinterf(phi,N1,N2)
%% Test if the gear set exists an interference% phi:pressure angle, in degrees
% N1,N2:teeth of both gears
% x=0:no interference; x=1 interence existsx=0;
sinx=sin(phi*pi/180); %先計算好角度
if N2<N1,nn=N1; %判定大小決定是大齒輪或小齒輪
N1=N2;N2=nn;
end
if N1*(N1+2*N2)*sinx*sinx<4*(1+N2), %帶入公式
x=1;
end



4.draw_gear.m與動畫



繪製一齒輪需要極繁雜的程式,在ProE或者AutoCAD中都有plug-ins代勞,但我們這次為了了解程式的應用,故嘗試利用老師的draw_gear.m來繪製


另外,發現一個相當有趣的現象,即在漸開線齒輪繪製時,由於程式的360度重疊的關係(可能由於無法整除),故在轉動時會缺齒,重疊越多缺齒越多,而del(第二齒輪初始偏移量)似乎與徑節有關

function [coords]=draw_gear(Dp,N,phi,range,x0,y0)
Dp=節矩
N=齒數
phi=壓力角
range=繪出之部份
x0,y0=齒輪中心座標

此為一利用漸開線繪製齒輪的程式,因此我們可以暫時註解其plot,輸出其運算值,並寫成另一程式來進行本題目齒數30與齒數48T壓力角20之雙正齒輪運動動畫

因此利用
draw_gear.m
bushing.m
rotate2D.m


我們可以寫出程式如下:

程式結構
1.清除畫面及程式資訊
2.參數引入draw_gear.m
3.建立基本物件
a.利用bushing畫基座
b.建立齒輪
c.利用bushing畫節圓和基圓
4.利用while進行動畫繪製
a.轉角
b.畫出新位置


function move_gear(Dpitch,nn1,nn2,phi,ww)
%12.4 歐陽太閒 b94611001 本程式改寫自老師的 move2_rack.m
%本程式改寫自老師的move2_rack
%Dpitch=節矩,nn1=R2齒數,nn2=R3齒數,phi=壓力角,ww=nn1角速度

clf; %清除畫面

d2r=pi/180;%角徑轉換
unit1=0.01;%動畫單位
phir=phi*d2r;
pc=pi/Dpitch; %計算pc
title('作業12 作者:歐陽太閒 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,畫第二齒輪
xc1=coord(:,1);yc1=coord(:,2); %將計算結果引出
xc2=coord2(:,1);yc2=coord2(:,2);%將計算結果引出
del=3
coord2=rotate2D([coord2(:,1),coord2(:,2)],+del,0,0);
coord=bushing(rp/6,0,0); %利用bushing畫基座
coord2=bushing(rp2/6,rp+rp2,0);
xb1=coord(:,1);yb1=coord(:,2);
xb2=coord2(:,1);yb2=coord2(:,2);
plot(xb1,yb1,'r-'); %畫出大小齒輪基座
plot(xb2,yb2,'r-');
pini=line('xdata',[],'ydata',[],'erasemode','xor','linewidth',1,'color','r'); %建立handler
gear=line('xdata',[],'ydata',[],'erasemode','xor','linewidth',1,'color','b');

[coord3]=bushing(-rp2,rp+rp2,0.2); %利用bushing畫節圓和基圓
plot(coord3(:,1),coord3(:,2),'b:');
[coord4]=bushing(-rb2,rp+rp2,0.2);
plot(coord4(:,1),coord4(:,2),'k:');

[coord5]=bushing(-rp,0,0); %利用bushing畫節圓和基圓
plot(coord5(:,1),coord5(:,2),'b:');
[coord6]=bushing(-rb,0,0);
plot(coord6(:,1),coord6(:,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);
set(pini,'xdata',rot1(:,1),'ydata',rot1(:,2)); %分別畫出大小齒輪
set(gear,'xdata',rot2(:,1),'ydata',rot2(:,2));
drawnow; %繪製
pause(1/ww);
ang=ang+angp;
end
%程式結束


因此我們代入

move_gear(8,30,48,20,100)

可得到
圖片

影片
影片


move_gear(8,30,48,14.5,100)

可得到
圖片

影片
影片



move_gear(8,30,48,25,100)


可得到
圖片

影片

影片

2 則留言:

紫丁香 提到...

b94607012 生機(二)楊善喬

每次看完
都覺得太閒的思路很清晰
而且都考慮到很多很多的情況
實在值得令人請益!

th86 提到...

感謝您的指教,謝謝!