求助平面渐开线共轭曲线求解问题
坐标系示意如图所示,是 我们最常见的平行轴齿轮啮合,已知一个齿轮的渐开线方程,通过啮合方程求与坐标变换求与之共轭的曲线,我调了很久这个程序发现还是不对,请做过这个方面的高手帮忙指点 源程序如下:mn=6 %齿轮模数
z1=45%齿轮齿数
alfa_fendu=20*pi/180%分度圆上的压力角
ha_c=1.4%齿顶高系数
c_c=0.25 %顶隙系数
ha=ha_c.*mn%齿顶高
hf=(ha_c+c_c).*mn %齿根高
d=mn.*z1%分度圆直径
db=d.*cos(alfa_fendu)%基圆直径
da=d+2.*ha%齿顶圆直径
df=d-2.*hf%齿根圆直径
rb=db/2 %基圆半径
alfa_a=acos(db/da) %齿顶圆压力角(角度表示)
B=62;%齿宽
Beta=19.*pi/180 %分度圆螺旋角
p=(d/2).*cot(Beta)%节距
H=2.*pi.*p %螺旋面导程
r1=d/2;%齿轮1分度圆半径
z2=29;%齿轮2齿数
a=210;%中心距
E=a;%中心距
r2=a-r1;%齿轮2节圆半径
i21=z1/z2;%传动比
w1=1;%齿轮1旋转角速度
w2=i21*w1;%在后面的计算推导中已经考虑了正负号
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
disp('===================渐开线基圆===========================')
theta_any=0:pi/20:2.*pi; %角度范围
x0=rb.*sin(theta_any); %基圆x坐标
y0=rb.*cos(theta_any); %基圆y坐标
plot(x0,y0,'k-') %绘制圆
hold on
alfa=0:pi/50:alfa_a;
u=tan(alfa);
x1=rb.*sin(u)-rb.*cos(u).*u;
y1=rb.*cos(u)+rb.*sin(u).*u;
plot(x1,y1,'b');%绘制第一条渐开线
hold on
disp('===================单个渐开线===========================')
for i=1:50
fai_1=(((2*pi/z1)/19)*(i-1)-((2*pi/z1)/49)*(i-1));%对fai_1角进行初值的选择
fai_2=i21.*fai_1;
for j=1:20
alfa=(0+((alfa_a)/19)*(j-1));%压力角从0增加到齿顶压力角
%alfa=0:pi/50:alfa_a;
u=tan(alfa);
Q=u.*rb.*a.*i21.*cos(u-fai_1)-u.*rb^2-u.*rb^2.*i21%啮合方程
if Q==0
x2=cos(fai_1+fai_2).*(rb*sin(u)-rb.*cos(u).*u)-sin(fai_1+fai_2).*(rb.*cos(u)+rb.*sin(u).*u);
y2=sin(fai_1+fai_2).*(rb*sin(u)-rb.*cos(u).*u)+cos(fai_1+fai_2).*(rb.*cos(u)+rb.*sin(u).*u);
plot(x2,y2,'s');
hold on
%+++++++++++++++++++++++++++++++啮合线方程++++++++++++++++++++++++++++++++++
x=cos(fai_1).*(rb.*sin(u)-rb.*cos(u).*u)-sin(fai_1).*(rb.*cos(u)+rb.*sin(u).*u);
y=sin(fai_1).*(rb.*sin(u)-rb.*cos(u).*u)+cos(fai_1).*(rb.*cos(u)+rb.*sin(u).*u);
plot(x,y,'d');
hold on
end
end
end
%end
回复 沙发 pearce 的帖子
没有语法错误?其他错误只能你自己调了 运行结果明显不对,不知道这样的程序流程问题出在哪 原帖由 sigma665 于 2008-12-18 09:10 发表 http://www.chinavib.com/forum/images/common/back.gif
没有语法错误?
其他错误只能你自己调了
语法错误应该是没有的,只有可能是针对共轭曲线求法出现的问题 另外参考书上推荐的解法,我编制了另外一条程序,就是先通过给定一个u然后求解fai_1然后fai_2,最后把两个曲线画出来,但是感觉结果还是有问题。
源程序及结果如下:
mn=6 %齿轮模数
z1=45%齿轮齿数
alfa_fendu=20*pi/180%分度圆上的压力角
ha_c=1.4%齿顶高系数
c_c=0.25 %顶隙系数
ha=ha_c.*mn%齿顶高
hf=(ha_c+c_c).*mn %齿根高
d=mn.*z1%分度圆直径
db=d.*cos(alfa_fendu)%基圆直径
da=d+2.*ha%齿顶圆直径
df=d-2.*hf%齿根圆直径
rb=db/2 %基圆半径
alfa_a=acos(db/da) %齿顶圆压力角(角度表示)
B=62;%齿宽
Beta=19.*pi/180 %分度圆螺旋角
p=(d/2).*cot(Beta)%节距
H=2.*pi.*p %螺旋面导程
r1=d/2;%齿轮1分度圆半径
z2=29;%齿轮2齿数
a=210;%中心距
E=a;%中心距
r2=a-r1;%齿轮2节圆半径
i21=z1/z2;%传动比
w1=1;%齿轮1旋转角速度
w2=i21*w1;%在后面的计算推导中已经考虑了正负号
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
disp('===================渐开线基圆===========================')
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
theta_any=0:pi/20:2.*pi; %角度范围
x0=rb.*sin(theta_any); %基圆x坐标
y0=rb.*cos(theta_any); %基圆y坐标
plot(x0,y0,'k-') %绘制圆
hold on
alfa=0:pi/50:alfa_a;
u=tan(alfa);
x1=rb.*sin(u)-rb.*cos(u).*u;
y1=rb.*cos(u)+rb.*sin(u).*u;
plot(x1,y1,'b');
hold on
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
disp('===================单个渐开线===========================')
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
for j=1:20
alfa=(0+((alfa_a)/19)*(j-1));
u=tan(alfa);
fai_1=u-acos((u.*rb^2-u.*rb^2.*i21)/(u.*rb.*a.*i21))
fai_2=i21.*fai_1;
%+++++++++++++++++++++++++++++++共轭齿轮渐开线++++++++++++++++++++++++++++++
x2=cos(fai_1+fai_2).*(rb*sin(u)-rb.*cos(u).*u)-sin(fai_1+fai_2).*(rb.*cos(u)+rb.*sin(u).*u);
y2=sin(fai_1+fai_2).*(rb*sin(u)-rb.*cos(u).*u)+cos(fai_1+fai_2).*(rb.*cos(u)+rb.*sin(u).*u);
plot(x2,y2,'d');
hold on
%+++++++++++++++++++++++++++++++啮合线方程++++++++++++++++++++++++++++++++++
x=cos(fai_1).*(rb.*sin(u)-rb.*cos(u).*u)-sin(fai_1).*(rb.*cos(u)+rb.*sin(u).*u);
y=sin(fai_1).*(rb.*sin(u)-rb.*cos(u).*u)+cos(fai_1).*(rb.*cos(u)+rb.*sin(u).*u);
plot(x,y,'s');
hold on
end
%end
回复 6楼 pearce 的帖子
设置断点,跟踪重要变量,找到错误。
页:
[1]