分享一个圆柱齿轮廓形计算程序吧MATLAB
外齿,随便写的...
%圆柱齿轮外齿
function tongyong
clear all;
clc;
global rb mt alfat m z beta ha hc xn
% int_out=1; %+1为外齿轮 -1为内齿轮
alfa=25/180*pi;%法向压力角
z=28; %齿数
m=5; %模数
beta=5/180*pi;%螺旋角
B=20; %宽度
B0=-1; %齿宽起始位置
lie=20;%齿长方向
hang=19;%齿高方向
xn=0;%变位系数(内外齿轮有正负之分)
ha=1;%齿顶高系数
hc=0.25;%顶系系数
d=m*z/cos(beta); %分度圆直径
mt=m/cos(beta); %端面模数
alfat=atan(tan(alfa)/cos(beta));%端面压力角
zd=z/(cos(beta)*cos(beta)*cos(beta)); %当量齿数
rb=m*z/cos(beta)*cos(alfat)/2; %基圆半径
L=pi*m*z/cos(beta)/tan(beta);%导程
xt=xn*cos(beta); %端面变位系数
sr=xt*tan(alfat)*mt; %分度圆上单边距标准齿轮的弧长
sit=2*pi/z/4+tan(alfat)-alfat+2*sr/d;%调整两面相对X轴对称的角度
sit_int_out=-2*pi/z;
fitop=fsolve(@topfi,tan(alfa),optimset('fsolve'))+10/180*pi;
% judge=mt*z/2-m*(ha-xn+hc)-rb;
fibot=0;
for tt=1:2
if tt==1
facechange=1;
fid=fopen('XYZ_1.DAT','w');
M43=[cos(sit_int_out) sin(sit_int_out) 0 0;
-sin(sit_int_out) cos(sit_int_out) 0 0;
0 0 1 0;
0 0 0 1];
else
facechange=-1;
fid=fopen('XYZ_2.DAT','w');
M43=[1 0 0 0;
0 1 0 0;
0 0 1 0;
0 0 0 1];
end
i=1;
row=1;
for z_B=B0:B/(lie-1):B+B0
fprintf(fid,'ROW%d\r\n',row);
j=1;
for fi=fibot:(fitop-fibot)/(hang-1):fitop
x1=rb*(cos(fi)+fi*sin(fi));% rb 基圆半径
y1=facechange*rb*(sin(fi)-fi*cos(fi));% fi 展角
z1=0; % ds 渐开线任一点轴向坐标
zs=z_B*2*pi/L;
M21=[cos(sit),facechange*sin(sit),0,0;% sit
-facechange*sin(sit),cos(sit),0,0;
0,0,1,0;
0,0,0,1];
M32=[cos(zs),-sin(zs),0,0;
sin(zs),cos(zs),0,0;
0,0,1,z_B;
0,0,0,1];
xyz1=M43*M32*M21*;
fprintf(fid,'%f %f %f\r\n',xyz1(1),xyz1(2),xyz1(3));
xp(j,i)=xyz1(1);
yp(j,i)=xyz1(2);
zp(j,i)=xyz1(3);
j=j+1;
end
row=row+1;
i=i+1;
end
fclose(fid);
%%%%%绘制齿面%%%%%
mesh(xp,yp,zp)
hold on;
end
axis equal
end
function F=topfi(h)
global rb m z beta ha xn
fi=h;
x1=rb*(cos(fi)+fi*sin(fi));% rb 基圆半径
y1=rb*(sin(fi)-fi*cos(fi));% fi 展角
F=x1*x1+y1*y1-(m*z/2/cos(beta)+m*(ha+xn))^2;
end
给大家运行一下,没什么特殊的
还是感谢分享,绘图还是值得借鉴的{:1_224:} 不错{:rsoso_e11:}{:rsoso_e11:}{:rsoso_e11:}{:rsoso_e11:}{:rsoso_e11:}{:rsoso_e11:} 还是感谢分享,绘图还是值得借鉴的 当量齿数错了,应该有一个除以基圆螺旋角,zd=z/(cos(beta)*cos(beta)*cos(betb)) 感谢分享,不错
页:
[1]