clc;
clear;
%刀具与面齿轮基本参数
m=6;% 模数 %%%可更改参数
xr=0.25;%变位系数
zs=18;%刀具齿数
z2=248;%面齿轮齿数的齿数 %%%可更改参数
q2s=zs/z2;%面齿轮与刀具传动比
as=20;%直齿轮刀具压力角(角度)
rbs=zs*m/2*cosd(as);%刀具基圆半径
r=zs*m/2;%刀具分度圆半径
thetas0=pi/(2*zs)-tand(as)+as*pi/180;%展角(弧度)
thetas1=thetas0*180/pi;%展角(角度)
has=(1+xr)*m;%直齿轮刀具齿顶高
hfs=(1.25-xr)*m;%直齿轮刀具齿根高
ras=r+has;%直齿轮刀具齿顶圆半径
rfs=r-hfs;%直齿轮刀具齿根圆半径
thetas_up=sqrt(ras*ras-rbs*rbs)/rbs;%渐开线参数上界(弧度)
%面齿轮内外径
rw=760;%面齿轮外径 %%%可更改参数
rn=730;%面齿轮内径 %%%可更改参数
%计算不发生根切的最小半径R1和齿顶不变尖的最大半径R2
syms a;
fun='pi/2/18-x-tand(20)+20*pi/180+sin(x)';%理论公式
a=fzero(fun,0.5);
R1=0.5*m*z2*cosd(as);%不发生根切的最小半径R1
R2=0.5*cosd(as)*m*z2/cos(a);%齿顶不变尖的最大半径R2
%%%设置轨迹线条数与数据点数,越多越精确
L=50;%轨迹线条数
P=10;%每条轨迹线点数
%%面齿轮左侧工作齿面部分,利用工作曲面方程求解,理论参考朱如鹏的博士论文,其中有两个未知参数thetas和fais,分别循环离散求点。
for j=1:L
for i=1:P
xuhao(i)=i;
t(i)=(i-1)/(P-1);
thetas(i)=(sqrt(ras*ras-rbs*rbs)/rbs)*t(i);%刀具渐开线角度参数(弧度)
us(j)=rn+(rw-rn)*(j-1)/(L-1);
faitheta_rad=acos(rbs/(us(j)*q2s));%faitheta(弧度)
fais_l(i)=(faitheta_rad-thetas(i)-thetas0)*180/pi;%刀具转角(角度)
fais_l_rad(i)=fais_l(i)*pi/180;
fai2_l(i)=fais_l(i)*q2s;%左侧面齿轮转角(角度)
fais_l_matrix(i,j)=fais_l(i);
faitheta_deg=faitheta_rad*180/pi;%faitheta(角度)
xl(i)=rbs*(cosd(fai2_l(i))*(sind(faitheta_deg)-thetas(i)*cosd(faitheta_deg))-sind(fai2_l(i))/(q2s*cosd(faitheta_deg)));
yl(i)=-us(j);
zl(i)=-rbs*(cosd(faitheta_deg)+thetas(i)*sind(faitheta_deg));
end
leftprofile(:,(j-1)*4+1)=xuhao;%%%用leftprofile矩阵临时储存工作曲面点数据
leftprofile(:,(j-1)*4+2)=xl;
leftprofile(:,(j-1)*4+3)=yl;
leftprofile(:,(j-1)*4+4)=zl;
plot3(xl,yl,zl,'k')%绘工作曲面的图
hold on
plot3(-xl,yl,zl,'k')
hold on
%%%画出过渡曲线,取工作齿面每条线的最后一个点,然后连成线
[g,h]=size(leftprofile);
xl_t(j)=leftprofile(g,(j-1)*4+2);
yl_t(j)=leftprofile(g,(j-1)*4+3);
zl_t(j)=leftprofile(g,(j-1)*4+4);
plot3(xl_t,yl_t,zl_t,'r')
hold on
plot3(-xl_t,yl_t,zl_t,'r')
hold on
end
fais_l_end=atan(thetas_up)-thetas0-thetas_up;%刀具左侧转角(弧度)
fais_l_end_deg=fais_l_end*180/pi;%刀具左侧转角(角度)
%%面齿轮过渡齿面部分,利用理论的过渡曲面方程求解
for j=1:L
for i=1:P
xuhao(i)=i+P;
t(i)=(i-1)/(P-1);
thetas(i)=thetas_up;%刀具渐开线角度参数(弧度)
us(j)=rn+(rw-rn)*(j-1)/(L-1);
fais_l_t(i)=fais_l_matrix(P,j)+(fais_l_end_deg-fais_l_matrix(P,j))*(i-1)/(P-1);%角度
faitheta_l_rad(i)=fais_l_t(i)/180*pi+thetas0+thetas(i);
fai2_l(i)=fais_l_t(i)*q2s;%面齿左面轮转角(角度)
faitheta_l_deg(i)=faitheta_l_rad(i)*180/pi;%faitheta(角度)
xl1(i)=rbs*(cosd(fai2_l(i))*(sind(faitheta_l_deg(i))-thetas(i)*cosd(faitheta_l_deg(i))))-sind(fai2_l(i))*us(j);
yl1(i)=-us(j);
zl1(i)=-rbs*(cosd(faitheta_l_deg(i))+thetas(i)*sind(faitheta_l_deg(i)));
leftprofile(i+P,(j-1)*4+1)=xuhao(i);
leftprofile(i+P,(j-1)*4+2)=xl1(i);
leftprofile(i+P,(j-1)*4+3)=yl1(i);
leftprofile(i+P,(j-1)*4+4)=zl1(i);
end
xlabel('齿厚方向');
ylabel('齿长方向');
zlabel('齿高方向');
plot3(xl1,yl1,zl1,'r')
hold on
plot3(-xl1,yl1,zl1,'r')
hold on
end
%%%将数据点保存到文件,只有左面数据点,右面镜像
lp=fopen('D:\mianchilunyuanma\youqumian\fg_m3_zs25.ibl','wt');%%%文件地址可以改变
fprintf(lp,'open arclength\n');
for j=1:L
fprintf(lp,'begin section\nbegin curve\n');
for i=1:2*P
for k=1:4
if k==4
fprintf(lp,'%d\n',leftprofile(i,k+(j-1)*4));
else
fprintf(lp,'%d\t',leftprofile(i,k+(j-1)*4));
end
end
end
end
fclose(lp);
- 1
- 2
- 3
- 4
- 5
- 6
前往页