机械原理课程设计牛头刨床凸轮机构.docx
《机械原理课程设计牛头刨床凸轮机构.docx》由会员分享,可在线阅读,更多相关《机械原理课程设计牛头刨床凸轮机构.docx(17页珍藏版)》请在冰豆网上搜索。
机械原理课程设计牛头刨床凸轮机构
装订线
机械原理课程设计
设计题目牛头刨床凸轮机构
班级加工06-1
姓名李龙
指导教师席本强何凡
1.设计任务及要求------------------------------
2.数学模型的建立------------------------------
3.程序框图---------------------------------------
4.程序清单及运行结果------------------------
5.设计总结---------------------------------------
6.参考文献--------------------------------------
1设计任务与要求
已知摆杆9为等加速等减速运动规律,其推程运动角φ=70,远休止角φs=10,回程运动角φ?
=70,摆杆长度l09D=125,最大摆角φmax=15,许用压力角[α]=40,凸轮与曲线共轴。
(1)要求:
计算从动件位移、速度、加速度并绘制线图(用方格纸绘制),也可做动态显示。
(2)确定凸轮的基本尺寸,选取滚子半径,画出凸轮的实际廓线,并按比例绘出机构运动简图。
(3)编写计算说明书。
2机构的数学模型
(1)推程等加速区
当
时
(角位移)
(角速度)
(角加速度)
(2)推程等减速区
当
时
(角位移)
(角速度)
(角加速度)
(3)远休止区
当
时
(角位移)
(角速度)
(角加速度)
(4)回程等加速区
当
时
(角位移)
(角速度)
(角加速度)
(5)回程等减速区
当
时
(角位移)
(角速度)
(角加速度)
(6)近休止区
(角位移)
(角速度)
(角加速度)
如图选取xOy坐标系,B1点为凸轮轮廓线起始点。
开始时推杆轮子中心处于B1点处,当凸轮转过角度时,摆动推杆角位移为,由反转法作图可看出,此时滚子中心应处于B点,其直角坐标为:
因为实际轮廓线与理论轮廓线为等距离,即法向距离处处相等,都为滚半径
rT.故将理论廓线上的点沿其法向向内测移动距离rr即得实际廓线上的点B(x1,y1).由高等数学知,理论廓线B点处法线nn的斜率应为
根据上式有:
可得
实际轮廓线上对应的点B(x,y)的坐标为
此即为凸轮工作的实际廓线方程,式中“-”用于内等距线,“+”用于外等距线。
3程序框图
4程序清单及运行结果
#include<>
#include<>
#include<>
#include<>
#include<>
#definel
#defineAa40
#definer_b50
#definerr6
#defineK180)
#definedt
floatQ_max,Q_t,Q_s,Q_h;
floatQ_a;
doubleL,pr;
floate[1500],f[1500],g[1500];
voidCal(floatQ,doubleQ_Q[3])
{
Q_max=15,Q_t=70,Q_s=10,Q_h=70;
if(Q>=0&&Q<=Q_t/2)
{
Q_Q[0]=K*(2*Q_max*Q*Q/(Q_t*Q_t));
Q_Q[1]=4*Q_max*Q/(Q_t*Q_t);
Q_Q[2]=4*Q_max/(Q_t*Q_t);
}
if(Q>Q_t/2&&Q<=Q_t)
{
Q_Q[0]=K*(Q_max-2*Q_max*(Q-Q_t)*(Q-Q_t)/(Q_t*Q_t));
Q_Q[1]=4*Q_max*(Q_t-Q)/(Q_t*Q_t);
Q_Q[2]=-4*Q_max/(Q_t*Q_t);
}
if(Q>Q_t&&Q<=Q_t+Q_s)
{
Q_Q[0]=K*Q_max;
Q_Q[1]=0;
Q_Q[2]=0;
}
if(Q>Q_t+Q_s&&Q<=Q_t+Q_s+Q_h/2)
{
Q_Q[0]=K*(Q_max-2*Q_max*(Q-Q_t-Q_s)*(Q-Q_t-Q_s)/(Q_h*Q_h));
Q_Q[1]=-4*Q_max*(Q-Q_t-Q_s)/(Q_h*Q_h);
Q_Q[2]=-4*Q_max/(Q_h*Q_h);
}
if(Q>Q_t+Q_s+Q_h/2&&Q<=Q_t+Q_s+Q_h)
{
Q_Q[0]=K*(2*Q_max*(Q_h-Q+Q_t+Q_s)*(Q_h-Q+Q_t+Q_s)/(Q_h*Q_h));
Q_Q[1]=-4*Q_max*(Q_h-Q+Q_t+Q_s)/(Q_h*Q_h);
Q_Q[2]=4*Q_max/(Q_h*Q_h);
}
if(Q>Q_t+Q_s+Q_h&&Q<=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,y3,x4,y4,dx,dy;
doubleQQ[3];
circle(240,240,3);
circle(240+L*sin(50*K)+4*cos(240*K),240+L*cos(50*K)-4*sin(240*K),3);
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(50*K)+4*cos(240*K),240+L*cos(50*K)-4*sin(240*K));
lineto(240+L*sin(50*K)+20*cos(240*K),240+L*cos(50*K)-20*sin(240*K));
lineto(255+L*sin(50*K)+20*cos(240*K),240+L*cos(50*K)-20*sin(240*K));
lineto(240+L*sin(50*K)+4*cos(240*K),240+L*cos(50*K)-4*sin(240*K));
for(tt=0;tt<=720;tt=tt+2)
{
Cal(tt,QQ);
x1=L*cos(tt*K)-l*cos(Q_a+QQ[0]-tt*K);
y1=l*sin(Q_a+QQ[0]-tt*K)+L*sin(tt*K);
x2=x1*cos(Q_m*K+40*K)+y1*sin(Q_m*K+40*K);
y2=-x1*sin(Q_m*K+40*K)+y1*cos(Q_m*K+40*K);
putpixel(x2+240,240-y2,2);
dx=(QQ[1]-1)*l*sin(Q_a+QQ[0]-tt*K)-L*sin(tt*K);
dy=(QQ[1]-1)*l*cos(Q_a+QQ[0]-tt*K)+L*cos(tt*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+40*K)+y3*sin(Q_m*K+40*K);
y4=-x3*sin(Q_m*K+40*K)+y3*cos(Q_m*K+40*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>=0)&&(a<=Q_t/2))
{
y1=(2*Q_max*pow(a,2)/pow(Q_t,2))*10;
y2=(4*Q_max*(dt*K)*a/pow(Q_t,2))*pow(10,;
y3=(4*Q_max*pow((dt*K),2)/pow(Q_t,2))*pow(10,;
putpixel(100+a,300-y1,1);
putpixel(100+a,300-y2,2);
putpixel(100+a,300-y3,4);
line(100+Q_t/2,300-y3,100+Q_t/2,300);
}
if((a>Q_t/2)&&(a<=Q_t))
{
y1=(Q_max-2*Q_max*pow((Q_t-a),2)/pow(Q_t,2))*10;
y2=(4*Q_max*(dt*K)*(Q_t-a)/pow(Q_t,2))*pow(10,;
y3=((-4)*Q_max*pow((dt*K),2)/pow(Q_t,2))*pow(10,;
putpixel(100+a,300-y1,1);
putpixel(100+a,300-y2,2);
putpixel(100+a,300-y3,4);
line(100+Q_t,300-y3,100+Q_t,300);
line(100+Q_t/2,300,100+Q_t/2,300-y3);
}
if((a>Q_t)&&(a<=Q_t+Q_s))
{
y1=Q_max*10;
y2=0;
y3=0;
putpixel(100+a,300-y1,1);
putpixel(100+a,300-y2,2);
putpixel(100+a,300-y3,4);
line((100+Q_t+Q_s),300,(100+Q_t+Q_s),300-y3);
}
if((a>Q_t+Q_s)&&(a<=Q_t+Q_s+Q_h/2))
{
y1=(Q_max-2*Q_max*pow((a-Q_t-Q_s),2)/pow(Q_h,2))*10;
y2=((-4)*Q_max*(dt*K)*(a-Q_t-Q_s)/pow(Q_h,2))*pow(10,;
y3=((-4)*Q_max*pow((dt*K),2)/pow(Q_h,2))*pow(10,;
putpixel(100+a,300-y1,1);
putpixel(100+a,300-y2,2);
putpixel(100+a,300-y3,4);
line((100+Q_t+Q_s+Q_h/2),300,(100+Q_t+Q_s+Q_h/2),300-y3);
line((100+Q_t+Q_s),300,(100+Q_t+Q_s),300-y3);
}
if((a>Q_t+Q_s+Q_h/2)&&(a<=Q_t+Q_s+Q_h))
{
y1=(2*Q_max*pow((Q_h-a+Q_t+Q_s),2)/pow(Q_h,2))*10;
y2=((-4)*Q_max*(dt*K)*(Q_h-a+Q_t+Q_s)/pow(Q_h,2))*pow(10,;
y3=(4*Q_max*pow((dt*K),2)/pow(Q_h,2))*pow(10,;
putpixel(100+a,300-y1,1);
putpixel(100+a,300-y2,2);
putpixel(100+a,300-y3,4);
line((100+Q_t+Q_s+Q_h),300-y3,(100+Q_t+Q_s+Q_h),300);
line((100+Q_t+Q_s+Q_h/2),300,(100+Q_t+Q_s+Q_h/2),300-y3);
}
if((a>Q_t+Q_s+Q_h)&&(a<=360))
{
y1=0;
y2=0;
y3=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_1,y_1,flag=1;
doubleQQ1[3],aa;
FILE*f1;
if((f1=fopen("","w"))==NULL)
{
printf("cannotopen!
\n");
exit(0);
}
initgraph(&gd,&gm,"");
cleardevice();
for(t=0;!
kbhit();t++)
{
for(;t>360;)
t-=360;
if(flag==1)
for(L=l-r_b+70;L{
Q_a=acos((L*L+l*l-r_b*r_b)/*L*l));
Cal(t,QQ1);
aa=atan(l*(1-QQ1[1]-L*cos(Q_a-QQ1[0]))/(L*sin(Q_a+QQ1[0])));/*压力角*/
pr=(pow((L*L+l*l*(1+QQ1[1])*(1+QQ1[1])*L*l*(1+QQ1[1]*cos(Q_a+QQ1[0]))),2))/*曲率半径*//((1+QQ1[1])*(2+QQ1[1])*L*l*cos(Q_a+QQ1[0])+QQ1[2]*L*l*sin(Q_a+QQ1[0])-L*L-l*l*pow((1+QQ1[1]),3));
if(aa<=Aa&&pr>rr)
flag=0;
break;
}
if(flag==0)
Cal(t,QQ1);
Draw(t);
cleardevice();
x_1=240+L*sin(50*K)-l*cos(Q_a+QQ1[0]+40*K);
y_1=240+L*cos(50*K)-l*sin(Q_a+QQ1[0]+40*K);
circle(x_1,y_1,rr);
line(240+L*sin(50*K),240+L*cos(50*K),x_1,y_1);
moveto(240+L*sin(50*K),240+L*cos(50*K));
lineto(240+L*sin(50*K)+l*cos(Q_a+QQ1[0]+40*K),480+2*L*cos(50*K)-y_1);
lineto(140+L+l*cos(Q_a+QQ1[0])*2,480+2*L*cos(50*K)-y_1);
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,"Theanalysisofthewormgear'smovement");
printf("\n\n\n\n\nQ(w,a)");
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();
printf("\n\n\n\n\n\n\n\n\n\n");
for(i=0;i<=1440;i=i+20)
{
delay(1000);
printf("%d%f%f%f\n",i/4,e[i],f[i],g[i]);
fprintf(f1,"%d%f%f%f\n",i/4,e[i],f[i],g[i]);
}
getch();
fclose(f1);
closegraph();
}
角度10倍角位移倍角速度倍角加速度
235-360
5总结
这次机械原理课程设计是对这学期所学的有关《机械原理》知识的一次检验,更是一次实践,它让我们去亲自动手,去运用各种工具来解决问题,是一次比较综合的测试。
在设计之前,我也浏览了《机械原理》并且仔细看了连杆及凸轮机构和齿轮机构,认为齿轮的最简单,不过老师分了凸轮机构(我认为最难的),也只好迎难而上,在设计的过程中反复翻看这部分内容,了解推杆的运动规律及凸轮的基圆半径r0磙子半径rr的选取和确定。
感到所学的知识不能完全解决老师所布置的任务,所以又上网查找了有关这方面的知识,例如任意点压力角的公式,理论廓线任意点的曲率半径的公式等。
而在推导了推杆的运动规律之后,用C语言编制程序是我们一大难题,这完全暴露了我们在大一时所学的C语言知识残缺。
幸运的是,老师帮助了我们,他们加班加点的指导我们的设计,有的老师还说晚上也可以到他家里问,这让我感到了老师的伟大。
这次设计还培养了我的合作意识,在实际设计中,确实存在着一个人不太可能完成的事情。
一贯独立的我也获得了许多同学的帮助和好几名老师的指导,并且深深的感到了责任的重大,想做一名优秀的设计者,需要多方面的知识以及对问题的深入思考,从这次设计中也学到了一些课本以外的知识。
这次课程设计对我大三学习的规划大有益处。
6参考文献
《机械原理》孙恒,陈作模,葛文杰,高等教育出版社,
《机械原理课程设计》,辽宁工程技术大学机械设计基础教研室,
《机械原理课程设计指导书》徐萃萍冷兴聚
《机械原理电算课程设计指导书》冷兴聚
《C程序设计》谭浩强
《C语言典型零件CAD》王占勇
《计算机图形学》罗笑南王若梅