韩正阳 发表于 2023-10-10 11:18

分享一个圆柱齿轮廓形计算程序吧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























woodykissme 发表于 2023-10-10 19:40



给大家运行一下,没什么特殊的

woodykissme 发表于 2023-10-10 19:41

还是感谢分享,绘图还是值得借鉴的{:1_224:}

lori_aba 发表于 2024-1-6 10:36

不错{:rsoso_e11:}{:rsoso_e11:}{:rsoso_e11:}{:rsoso_e11:}{:rsoso_e11:}{:rsoso_e11:}

tianw2008 发表于 2024-1-8 08:08

还是感谢分享,绘图还是值得借鉴的

jssqzcly 发表于 2024-1-11 08:39

当量齿数错了,应该有一个除以基圆螺旋角,zd=z/(cos(beta)*cos(beta)*cos(betb))

宿醉 发表于 2024-1-11 21:26

感谢分享,不错
页: [1]
查看完整版本: 分享一个圆柱齿轮廓形计算程序吧MATLAB