机械设计 插床凸轮机构的设计Word格式.docx
《机械设计 插床凸轮机构的设计Word格式.docx》由会员分享,可在线阅读,更多相关《机械设计 插床凸轮机构的设计Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
指导教师:
郝志勇席本强
开始日期:
2011年6月26日完成日期:
2011年6月30日
1.设计任务及要求
2.数学模型的建立
3.程序框图
4.程序清单及运行结果
5.设计总结
6.参考文献
7.中期检查报告
1、设计任务及要求
已知:
从动件的最大摆角
,从动件的长度lo4d从动件的运动规律为等加,等减速运动,凸轮与曲柄共轴。
数据如下:
要求:
1)按许用压力角
确定凸轮的基圆半径r0;
2)求出理论轮廓线外凸的最小曲率半径
3)选取滚子半径r
绘制凸轮实际轮廓线,并动态显示机构;
4)用计算机打印出说明书
2、机构的数学模型
如图选取xOy坐标系,B1点为凸轮轮廓线起始点。
开始时推杆轮子中心处于B1点处,当凸轮转过角度时,摆动推杆角位移为,由反转法作图可看出,此时滚子中心应处于B2点,其直角坐标为:
因为实际轮廓线与理论轮廓线为等距离,即法向距离处处相等,都为滚半径
rT.故将理论廓线上的点沿其法向向内测移动距离rT即得实际廓线上的点B(x1,y1).由高等数学知,理论廓线B点处法线nn的斜率应为
根据上式有:
可得
实际轮廓线上对应的点B(x,y)的坐标为
此即为凸轮工作的实际廓线方程,式中“-”用于内等距线,“+”用于二、根据运动分析写出与运动方程式
1.设从动件起始角
2.1)
升程加速区,其运动方程为:
2)
属于升程减速区,其运动方程为:
3)
,属于远休止区,其运动方程为:
4)
属于回程加速区,其运动方程为:
5)
,属于回程减速区,其运动方程为:
6)
,于近休止区,其运动方程为
外等距线。
3、程序框图
4、程序清单及运行结果
#include<
math.h>
dos.h>
graphics.h>
conio.h>
stdio.h>
#defineI125.0
#defineAa40
#definerb50
#definerr5
#defineK(3.1415926/180)
#definedt0.25
floatQmax,Q1,Q2,Q3;
floatQ_a;
doubleL,pr;
floate[1500],f[1500],g[1500];
voidCal(floatQ,doubleQ_Q[3])
{
Qmax=15,Q1=60,Q2=10,Q3=60;
if(Q>
=0&
&
Q<
=Q1/2)
Q_Q[0]=K*(2*Qmax*Q*Q/(Q1*Q1));
Q_Q[1]=4*Qmax*Q/(Q1*Q1);
Q_Q[2]=4*Qmax/(Q1*Q1);
}
Q1/2&
=Q1)
{
Q_Q[0]=K*(Qmax-2*Qmax*(Q-Q1)*(Q-Q1)/(Q1*Q1));
Q_Q[1]=4*Qmax*(Q1-Q)/(Q1*Q1);
Q_Q[2]=-4*Qmax/(Q1*Q1);
}
=Q1&
=Q1+Q2)
Q_Q[0]=K*Qmax;
Q_Q[1]=0;
Q_Q[2]=0;
Q1+Q2&
=Q1+Q2+Q3/2)
Q_Q[0]=K*(Qmax-2*Qmax*(Q-Q1-Q2)*(Q-Q1-Q2)/(Q3*Q3));
Q_Q[1]=-4*Qmax*(Q-Q1-Q2)/(Q3*Q3);
Q_Q[2]=-4*Qmax/(Q3*Q3);
Q1+Q2+Q3/2&
Q1+Q2+Q3)
Q_Q[0]=K*(2*Qmax*(Q3-Q+Q1+Q2)*(Q3-Q+Q1+Q2)/(Q3*Q3));
Q_Q[1]=-4*Qmax*(Q3-Q+Q1+Q2)/(Q3*Q3);
Q_Q[2]=4*Qmax/(Q3*Q3);
Q1+Q1+Q3&
=360)
Q_Q[0]=K*0;
Q_Q[1]=0;
Q_Q[2]=0;
voidDraw(floatQ_m)
floattt,x,y,x1,y1,x2,y2,x3,x4,y3,y4,dx,dy;
doubleQQ[3];
circle(240,240,5);
circle(240+L*sin(60*K),240-L*cos(60*K),5);
moveto(240,240);
lineto(240+20*cos(240*K),240-20*sin(240*K));
lineto(260+20*cos(240*K),240-20*sin(240*K));
lineto(240,240);
moveto(240+L*sin(60*K),240-L*
cos(60*K));
lineto(240+L*sin(60*K)+20*cos(240*K),240-L*cos(60*K)-20*sin(240*K));
lineto(240+L*sin(60*K)+20*cos(60*K),240-L*cos(60*K)-20*sin(240*K));
lineto(240+L*sin(60*K),240-L*cos(60*K));
for(tt=0;
tt<
=720;
tt=tt+2){Cal(tt,QQ);
/*tulunlunkuoxian*/
x1=L*cos(tt*K-30*K)-I*cos(Q_a+QQ[0]+tt*K-30*K);
y1=I*sin(Q_a+QQ[0]+tt*K-
30*K)-L*sin(tt*K-30*K);
x2=x1*cos(Q_m*K)-y1*sin(Q_m*K);
y2=x1*sin(Q_m*K)+y1*cos(Q_m*K);
putpixel(x2+240,240-y2,2);
dx=(QQ[1]+1)*I*sin(Q_a+QQ[0]+tt*K-30*K)-L*sin(tt*K-30*K);
dy=(QQ[1]+1)*I*cos(Q_a+QQ[0]+tt*K-30*K)-L*cos(tt*K-30*K);
x3=x1+rr*dy/sqrt(dx*dx+dy*dy);
y3=y1-rr*dx/sqrt(dx*dx+dy*dy);
x4=x3*cos(Q_m*K)-y3*sin(Q_m*K);
y4=x3*sin(Q_m*K)+y3*cos(Q_m*K);
putpixel(x4+240,240-y4,YELLOW);
voidCurvel()
intt;
floaty1,y2,y3,a=0;
for(t=0;
t<
=360/dt;
t++)
delay(300);
a=t*dt;
if(a>
a<
y1=(2*Qmax*pow(a,2)/pow(Q1,2))*10;
y2=(4*Qmax*(dt*K)*a/pow(Q1,2))*pow(10,4.8);
y3=(4*Qmax*pow((dt*K),2)/pow(Q1,2))*pow(10,8.5);
putpixel(100+a,300-y1,1);
putpixel(100+a,300-y2,2);
putpixel(100+a,300-y3,4);
line(100+Q1/2,300-y3,100+Q1/2,300);
if((a>
Q1/2)&
(a<
=Q1))
y1=(Qmax-2*Qmax*pow((Q1-a),2)/pow(Q1,2))*10;
y2=(4*Qmax*(dt*K)*(Q1-a)/pow(Q1,2))*pow(10,4.8);
y3=((-4)*Qmax*pow((dt*K),2)/pow(Q1,2))*pow(10,8.5);
putpixel(100+a,300-y1,1);
putpixel(100+a,300-y2,2);
line(100+Q1,300-y3,100+Q1,300);
line(100+Q1/2,300,100+Q1/2,300-y3);
Q1)&
=Q1+Q2))
y1=Qmax*10;
y2=0;
y3=0;
line((100+Q1+Q2),300,(100+Q1+Q2),300-y3);
Q1+Q2)&
=Q1+Q2+Q3/2))
y1=(Qmax-2*Qmax*pow((a-Q1-Q2),2)/pow(Q3,2))*10;
y2=(-4*Qmax*(dt*K)*(a-Q1-Q2)/pow(Q3,2))*pow(10,4.8);
y3=(-4*Qmax*pow((dt*K),2)/pow(Q3,2))*pow(10,8.5);
line((100+Q1+Q2+Q3/2),300,(100+Q1+Q2+Q3/2),300-y3);
line((100+Q1+Q2),300,100+Q1+Q2,300-y3);
Q1+Q2+Q3/2)&
=Q1+Q2+Q3))
y1=(2*Qmax*pow((Q3+Q2+Q1-a),2)/pow(Q3,2))*10;
y2=(-4*Qmax*(dt*K)*(Q3+Q2+Q1-a)/pow(Q3,2))*pow(10,4.8);
y3=(4*Qmax*pow((dt*K),2)/pow(Q3,2))*pow(10,8.5);
line((100+Q1+Q2+Q3),300-y3,(100+Q1+Q2+Q3),300);
Q1+Q2+Q3)&
=360))
y1=0;
putpixel(100+a,300,1);
putpixel(100+a,300,2);
putpixel(100+a,300,4);
e[t]=y1;
f[t]=y2;
g[t]=y3;
main()
intgd=DETECT,gm;
inti,t,choice,x_I,y_I,flag=1;
doubleQQ1[3],aa;
initgraph(&
gd,&
gm,"
"
);
cleardevice();
!
kbhit();
for(;
360;
)
t-=360;
if(flag==1)
for(L=I-rb+70;
L<
I+rb;
L+=2)
Q_a=acos((L*L+I*I-rb*rb)/(2.0*L*I));
Cal(t,QQ1);
aa=atan(1*(1-QQ1[1]-L*cos(Q_a-QQ1[0]))/(L*sin(Q_a+QQ1[0])));
pr=(pow((L*L+I*I*(1+QQ1[1])*(1+QQ1[1])-2.0*L*I*(1+QQ1[1]*cos(Q_a+QQ1[0]))),3.0/2))
/((1+QQ1[1])*(2+QQ1[1])*L*I*cos(Q_a+QQ1[0])+QQ1[2]*L*I*sin(Q_a+QQ1[0])-L*L-I*I*pow(1+QQ1[1],3));
if(aa<
=Aa&
pr>
rr)
flag=0;
break;
if(flag==0)
Cal(t,QQ1);
Draw(t);
x_I=240+L*sin(60*K)-I*cos(Q_a+QQ1[0]-30*K);
y_I=240-L*cos(60*K)-I*sin(Q_a+QQ1[0]-30*K);
circle(x_I,y_I,rr);
line(240+L*sin(60*K),240-L*cos(60*K),x_I,y_I);
delay
(1);
getch();
cleardevice();
line(100,80,100,445);
line(70,300,530,300);
line(100,80,98,90);
line(100,80,102,90);
line(520,298,530,300);
line(520,302,530,300);
setcolor
(2);
outtextxy(300,150,"
"
printf("
\n\n\n\n\n\Q(w,t)"
printf("
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\tt"
Curvel();
getch();
\n\n\n\n\n\n\n\n\n\n"
for(i=0;
i<
=1440;
i=i+20)
{
delay(1000);
%d%f%f%f\n"
i/4,e[i],f[i],g[i]);
}
closegraph();
5、设计总结:
为期一周的课程设计就这样结束了,在这一周里我觉得自己学会了很多东西。
虽然这几天遇到了很多困难,但是在完成了课程设计之后心里特别的激动。
这是一次深入的综合性的总复习,也是一次理论联系实际的训练,我希望能通过这次课程为将来工作奠定一些基础,并从中锻炼自己,为自己以后的生活打下一个良好的基础。
但这次课程设计的确有些力不从心的地方,刚开始的时候心里特别紧张总觉得这么做不行,那么弄也不合适。
心里有种恐惧感,后来随着困难的慢慢解决,这种心态才一点点消失。
虽然在这次设计中自己有所收获,但同时也存在一定的不足和缺陷,我想这正是本次设计的价值所在。
所以,在以后的学习和生活中,无论怎样首先都不能气馁,要对自己有信心,遇事沉着冷静,什么事情都是可以解决的!
6、参考文献
1、机械原理课程设计指导书徐翠萍冷兴聚
2、机械原理(第七版)孙恒陈作模葛文杰
3、c程序设计谭浩强