凸轮机构设计大作业
发布时间:2014-01-19 21:10:40
发布时间:2014-01-19 21:10:40
大作业(二)
凸轮机构设计
(题号:8)
班 级:
姓 名 、学 号:
成 绩:
完 成 日 期:
1.凸轮机构大作业题目……………………………………2
2.推杆运动规律及凸轮廓线方程…………………………3
3.程序流程图………………………………………………3
4.源程序 …………………………………………………^5
5.计算结果…………………………………………………14
6.凸轮机构图………………………………………………16
7.体会及建议………………………………………………19
8.参考资料…………………………………………………20
一、凸轮机构大作业题目
试用计算机辅助设计完成下列摆动滚子推杆盘形凸轮机构的设计,已知数据如下表所示,凸轮沿着逆时针方向做匀速转动。
表1 凸轮机构的推杆运动规律
推程运动规律 | 正弦加速度运动 |
回程运动规律 | 等加速等减速运动 |
表2 两种凸轮机构的推杆在近休、推程、远休及回程阶段的凸轮转角
题号 | 近休凸轮转角 | 推程凸轮转角 | 远休凸轮转角 | 回程凸轮转角 |
A | 0゜~60゜ | 60゜~180゜ | 180゜~270゜ | 270゜~360゜ |
B | 0゜~45゜ | 45゜~210゜ | 210゜~260゜ | 260゜~360゜ |
C | 0゜~30゜ | 30゜~210゜ | 210゜~280゜ | 280゜~360゜ |
表3 摆动滚子推杆盘形凸轮机构的已知参数
题号 | 初选基圆半径r0/mm | 机架长度lOA/mm | 摆杆长度lAB/mm | 滚子半径 rr/mm | 推杆摆角 | 许用压力角 | 许用最小曲率半径[ρamin] | |
[α1] | [α2] | |||||||
A | 15 | 60 | 55 | 10 | 24゜ | 35゜ | 70゜ | 0.3rr |
B | 20 | 70 | 65 | 14 | 26゜ | 40゜ | 70゜ | 0.3rr |
C | 22 | 7275 | 68 | 18 | 28゜ | 45゜ | 65゜ | 0.35rr |
要求:每组(每三人为一组,每人一题)至少打印出一份源程序,每人打印出原始数据;凸轮理论轮廓和实际轮廓的坐标值;推程和回程的最大压力角,以及出现最大压力角时凸轮的相应转角;凸轮实际轮廓曲线的最小曲率半径,以及相应的凸轮转角;和最后说确定的基圆半径。计算点数N=72~120。
绘出凸轮的理论轮廓和实际轮廓(可用计算机绘图)。
二、推杆运动规律及凸轮廓线方程:
推程(正弦加速度):s=h[(δ/δ0)-sin(2πδ/δ0)/(2π)]
回程(等加速段):s=h-2hδ2/δ'02
回程(等减速段):s=2h(δ'0-δ)2/δ'02
凸轮理论廓线方程:x=lOAsinδ-lABsin(δ+φ+φ0)
y=lOAcosδ-lABcos(δ+φ+φ0)
式中,φ0为推杆的初始位置角,其值为:
φ0=arccos
三、程序流程图
四、源程序
clear;
r0=22;%初选的基圆半径
dr0=0.05;
a=72; %机架长度
L=68;%摆杆长度
rr=18;%滚子半径
fai=28*pi/180;%推杆摆角
PI=3.141592653;
alpha1=45;%许用压力角α1
alpha2=65;%许用压力角阿尔法2
lambda=6.3;%许用最小曲率半径
N=120;%取用点的个数
delta1=180*pi/180;%推程凸轮最大转角
delta2=70*pi/180; %远休凸轮最大转角
delta3=80*pi/180;%回程凸轮最大转角
delta4=30*pi/180;%近休凸轮最大转角
alphamax1=0;% 推程最大压力角初值
alphamax2=0; %回程最大压力角初值
roumin=100; %凸轮最小曲率半径初值
X=ones(1,121);
Y=ones(1,121);
XP=ones(1,121);
YP=ones(1,121);
FAI=ones(1,121);
I=0;
%初始化
while(I<=N)
F0=acos((a*a+L*L-r0*r0)/(2*a*L));
delta=3*I*pi/180;
if(delta<180*pi/180&delta>=0) %正弦推程
F0=acos((a*a+L*L-r0*r0)/(2*a*L));
F=fai* ((delta/delta1)-sin(2*pi*delta/delta1)/(2*pi));
x=a*sin(delta)-L*sin(delta+F+F0);
y= a*cos(delta)-L*cos(delta+F+F0);
dF= fai*(1/delta1-cos(2*pi*delta/delta1)/delta1);
ddF=fai*2*pi*sin(2*pi*delta/delta1)/(delta1*delta1);
dx=a*cos(delta)-L*cos(delta+F+F0)*(1+dF);
ddx=-a*sin (delta)+L* sin(delta+F+F0)*(1+dF)^2-L*cos(delta+F+F0)*ddF;
dy=-a*sin(delta)+L*sin(delta+F+F0)*(1+dF);
ddy=-a*cos (delta)+L* cos(delta+F+F0)*(1+dF)^2+ L*sin(delta+F+F0)*ddF;
stheta=dx/sqrt(dx*dx+dy*dy);
ctheta=-dy/sqrt(dx*dx+dy*dy);
xp=x-rr*ctheta;
yp=y-rr*stheta;
alpha=atan((L*abs(dF)+(a*cos(F+F0)-L))/(a* sin(F+F0)))*180/pi;
alpha=abs(alpha);
if (alpha>alphamax1)
alphamax1=alpha;
deltamax1=delta*180/pi;
end
end
if(delta>=180*pi/180&delta<250*pi/180)%远休
F0=acos((a*a+L*L-r0*r0)/(2*a*L));
F=fai;
x=a*sin(delta)-L*sin(delta+F+F0);
y= a*cos(delta)-L*cos(delta+F+F0);
dF=0;
ddF=0;
dx=a*cos(delta)-L*cos(delta+F+F0)*(1+dF);
ddx=-a*sin (delta)+L* sin(delta+F+F0)*(1+dF)^2-L*cos(delta+F+F0)*ddF;
dy=-a*sin(delta)+L*sin(delta+F+F0)*(1+dF);
ddy=-a*cos (delta)+L* cos(delta+F+F0)*(1+dF)^2+ L*sin(delta+F+F0)*ddF;
stheta=dx/sqrt(dx*dx+dy*dy);
ctheta=-dy/sqrt(dx*dx+dy*dy);
xp=x-rr*ctheta;
yp=y-rr*stheta;
end
if(delta>=250*pi/180&delta<290*pi/180)%等加速回程
F0=acos((a*a+L*L-r0*r0)/(2*a*L));
F=fai-2*fai*(delta -250*pi/180)*(delta-250*pi/180)/(delta3*delta3);
x=a*sin(delta)-L*sin(delta+F+F0);
y=a*cos(delta)-L*cos(delta+F+F0);
dF=-4*fai*(delta-250*pi/180)/(delta3*delta3);
ddF=-4*fai/(delta3*delta3);
dx=a*cos(delta)-L*cos(delta+F+F0)*(1+dF);
ddx=-a*sin (delta)+L* sin(delta+F+F0)*(1+dF)^2-L*cos(delta+F+F0)*ddF;
dy=-a*sin(delta)+L*sin(delta+F+F0)*(1+dF);
ddy=-a*cos (delta)+L* cos(delta+F+F0)*(1+dF)^2+ L*sin(delta+F+F0)*ddF;
stheta=dx/sqrt(dx*dx+dy*dy);
ctheta=-dy/sqrt(dx*dx+dy*dy);
xp=x-rr*ctheta;
yp=y-rr*stheta;
alpha=atan((L*abs(dF) -(a*cos(F+F0)-L))/(a* sin(F+F0))) *180/pi;
alpha=abs(alpha);
if (alpha>alphamax2)
alphamax2=alpha;
deltamax2=delta*180/pi;
end
end
if(delta>=290*pi/180&delta<330*pi/180)%等减速回程
F0=acos((a*a+L*L-r0*r0)/(2*a*L));
F=2*fai*(delta3-(delta-250*pi/180))*(delta3-(delta-250*pi/180))/(delta3*delta3);
dF=-4*fai*(delta3-(delta-250*pi/180))/(delta3*delta3);
ddF=4*fai/(delta3*delta3);
x=a*sin(delta)-L*sin(delta+F+F0);
y=a*cos(delta)-L*cos(delta+F+F0);
dx=a*cos(delta)-L*cos(delta+F+F0)*(1+dF);
ddx=-a*sin (delta)+L* sin(delta+F+F0)*(1+dF)^2-L*cos(delta+F+F0)*ddF;
dy=-a*sin(delta)+L*sin(delta+F+F0)*(1+dF);
ddy=-a*cos (delta)+L* cos(delta+F+F0)*(1+dF)^2+ L*sin(delta+F+F0)*ddF;
stheta=dx/sqrt(dx*dx+dy*dy);
ctheta=-dy/sqrt(dx*dx+dy*dy);
xp=x-rr*ctheta;
yp=y-rr*stheta;
alpha=atan((L*abs(dF)-(a*cos(F+F0)-L))/(a*sin(F+F0)))*180/pi;
alpha=abs(alpha);
if (alpha>alphamax2)
alphamax2=alpha;
deltamax2=delta*180/pi;
end
end
if(delta>=330*pi/180&delta<=360*pi/180) %近休
F0=acos((a*a+L*L-r0*r0)/(2*a*L));
F=0;
x=a*sin(delta)-L*sin(delta+F+F0);
y=a*cos(delta)-L*cos(delta+F+F0);
dF=0;
ddF=0;
dx=a*cos(delta)-L*cos(delta+F+F0)*(1+dF);
ddx=-a*sin (delta)+L* sin(delta+F+F0)*(1+dF)^2-L*cos(delta+F+F0)*ddF;
dy=-a*sin(delta)+L*sin(delta+F+F0)*(1+dF);
ddy=-a*cos (delta)+L* cos(delta+F+F0)*(1+dF)^2+ L*sin(delta+F+F0)*ddF;
stheta=dx/sqrt(dx*dx+dy*dy);
ctheta=-dy/sqrt(dx*dx+dy*dy);
xp=x-rr*ctheta;
yp=y-rr*stheta;
end
if (alphamax1>alpha1)||(alphamax2>alpha2) %优化条件
r0=r0+dr0;
I=0;
alphamax1=0;
alphamax2=0;
continue
end
rou=((dx^2+dy^2)^(3/2))/(dx*ddy-dy*ddx); %计算曲率半径
if (rou<0)
rou=-rou;
if ((rou-rr)<(0.35*rr)) %优化条件
r0=r0+dr0;
I=0;
alphamax1=0;
alphamax2=0;
continue
end
if(rou
roumin=rou;
deltamin=delta *180/pi;
roumina=roumin-rr;
end
end
X(I+1)=x;
Y(I+1)=y;
XP(I+1)=xp;
YP(I+1)=yp;
I=I+1;
end
figure(1);
axis equal
hold on
t=0:3:360;
X_1=r0*cosd(t); %画基圆
Y_1=r0*sind(t);
X_2=rr*cosd(t)+X(10); %画滚子
Y_2=rr*sind(t)+Y(10);
plot(X_1,Y_1,'m--',X,Y,':',XP,YP,'k',X_2,Y_2,'c--');
legend('基圆','理论轮廓','实际轮廓');
plot(0,0,'ko'); %固定凸轮点
plot(X(10),Y(10),'ko'); %固定滚子点
title('凸轮轮廓曲线图');
xlabel('X/mm');
ylabel('Y/mm');
hold off
disp('推程最大压力角:');
alphamax1
disp('推程最大压力角相应转角:');
deltamax1
disp('回程最大压力角:');
alphamax2
disp('回程最大压力角相应转角:');
deltamax2
disp('凸轮最小曲率半径:');
roumin
disp('凸轮最小曲率半径相应转角:');
roumina
disp('最后确定的凸轮基圆半径:');
r0
五、计算结果
A组:
推程最大压力角:
alphamax1 =34.9492
推程最大压力角相应转角:
deltamax1 =45
回程最大压力角:
alphamax2 =46.7626
回程最大压力角相应转角:
deltamax2 = 255
凸轮最小曲率半径:
roumin =15.0000
凸轮最小曲率半径相应转角:
roumina =5.0000
最后确定的凸轮基圆半径:
r0 =19.7000
B组:
推程最大压力角:
alphamax1 =24.2568
推程最大压力角相应转角:
deltamax1 = 177.0000
回程最大压力角:
alphamax2 = 51.9666
回程最大压力角相应转角:
deltamax2 = 291.0000
凸轮最小曲率半径:
roumin = 24.3000
凸轮最小曲率半径相应转角:
roumina =6.3000
最后确定的凸轮基圆半径:
r0 =32.8000
C组:
推程最大压力角:
alphamax1 =24.2568
推程最大压力角相应转角:
deltamax1 = 177.0000
回程最大压力角:
alphamax2 = 51.9666
回程最大压力角相应转角:
deltamax2 = 291.0000
凸轮最小曲率半径:
roumin = 24.3000
凸轮最小曲率半径相应转角:
roumina =6.3000
最后确定的凸轮基圆半径:
r0 =32.8000
六、凸轮机构图
A组:
B组:
C组:
七、体会及建议
本次凸轮机构的设计,我们熟悉了解析法在机构设计中的应用,锻炼了编程能力。这次大作业用到了非常多的MATLAB编程知识,我们查阅了大量资料,也请教了不少同学,最后编出来程序实属不易。通过这次亲手设计实践,我们也认识到具体的操作远远比想象中的难,尤其是工程问题,涉及到方方面面的知识,这一点在以后的学习生活中也应该引起注意,注重细节才能做得更好。另外,大作业带给我们最大的好处就是我们更加熟悉凸轮的运动规律,这比起上课老师的讲解印象更深,因为加入了自己的思考和亲手设计,我们也能更加熟练地理解凸轮的设计实践,我想这是大作业带给我们最大的好处。
这次凸轮设计的大作业也引起了我们的思考,因为这实在是涉及到太多的编程知识,C语言、MATLAB等都可能用到,然而我们平常的教学过程中没有怎么教到这些知识,尤其是MATLAB,我们想学校应该给大家开设这样的课程,这对于同学们的科研能力和综合水平都是由很大提高和帮助的。
八、参考资料
孙桓 陈作模 葛文杰,等,机械原理【M】,8版,北京:高等教育出版社,2013
苏金明,等,MATLAB高级编程【M】2版,电子工业出版社,2008