机械原理课程设计示例:自动打印机

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

机械原理创新设计
自动打印机
一、总功能及设计参数
自动打印机的功能是将输入的产品包装盒打印上某种标记,然后输出。

自动打印机的设计参数
二、功能分解
主要有两个过程,一是将包装盒传输到某个位置,打印上标记后将其输出,要求实现间歇传动。

二是在包装盒上打印标记。

三、机构选型
对于包装盒的输送和输出,选用皮带传动,间歇传动有不完全齿轮实现。

对包装盒的打印过程先有凸轮实现运动形式的转换再由连杆机构实现打印过程。

四、运动循环图
运动循环时间T=1s。

五、总体方案设计
电动机的转速为1500r/min,由蜗杆蜗轮将转速降为60r/min,偏心轮O2实现杆L1的上下运动,O4上的不完全齿轮实现皮带上的工作台的间歇运动。

六、尺寸确定
蜗杆的头数为2,蜗轮的齿数是50,m=2。

Ro2=40mm,O1O2=20mm。

O1到皮带的距离是64.34mm。

O1,O3、O4上的齿轮是齿数为26,m=2的标准齿轮。

O4上的不完全齿轮的齿数为6,m=4。

滚子的半径为10mm。

L1=300,L2=135mm,L3=L4=90mm,L5=128mm。

七、运动分析
编写程序对O2、L1、L2、L3L4、L5组成的机构进行运动分析。

主程序如下:
#include "stdio.h"
#include "math.h"
#include "conio.h"
void bark(n1,n2,n3,k,r1,r2,gam,t,w,e,p,vp,ap)
int n1,n2,n3,k;
double r1,r2,gam;
double p[20][2],vp[20][2],ap[20][2];
double t[10],w[10],e[10];
{
double rx2,ry2,rx3,ry3;
if(n2!=0)
{
rx2=r1*cos(t[k]);
ry2=r1*sin(t[k]);
p[n2][1]=p[n1][1]+rx2;
p[n2][2]=p[n1][2]+ry2;
vp[n2][1]=vp[n1][1]-ry2*w[k];
vp[n2][2]=vp[n1][2]+rx2*w[k];
ap[n2][1]=ap[n1][1]-ry2*e[k]-rx2*w[k]*w[k];
ap[n2][2]=ap[n1][2]+rx2*e[k]-ry2*w[k]*w[k];
}
if(n3!=0)
{
rx3=r2*cos(t[k]+gam);
ry3=r2*sin(t[k]+gam);
p[n3][1]=p[n1][1]+rx3;
p[n3][2]=p[n1][2]+ry3;
vp[n3][1]=vp[n1][1]-ry3*w[k];
vp[n3][2]=vp[n1][2]+rx3*w[k];
ap[n3][1]=ap[n1][1]-ry3*e[k]-rx3*w[k]*w[k];
ap[n3][2]=ap[n1][2]+rx3*e[k]-ry3*w[k]*w[k];
}
}
/****************rrpk********************************************/ void rrpk(m,n1,n2,n3,k1,k2,k3,r1,r2,vr2,ar2,t,w,e,p,vp,ap)
int m,n1,n2,n3,k1,k2,k3;
double r1,*r2,*vr2,*ar2;
double p[20][2],vp[20][2],ap[20][2];
double t[10],w[10],e[10];
{
double dx12,dy12,dx31,dy31,dx32,dy32;
double ssq,phi,ep,u,fp,cb,sb,ct,st,q,ev,fv,ea,fa;
t[k2]=t[k3];
dx12=p[n1][1]-p[n2][1];
dy12=p[n1][2]-p[n2][2];
ssq=dx12*dx12+dy12*dy12;
phi=atan2(dy12,dx12);
ep=sqrt(ssq)*cos(phi-t[k3]);
u=sqrt(ssq)*sin(phi-t[k3]);
if((r1-fabs(u))<0)
{
printf("\n RRP can't be assembled.\n");
}
else
{
fp=sqrt(r1*r1-u*u);
if(m>0)
{
*r2=ep+fp;
}
else
{
*r2=ep-fp;
}
cb=cos(t[k3]);
sb=sin(t[k3]);
p[n3][1]=p[n2][1]+(*r2)*cb;
p[n3][2]=p[n2][2]+(*r2)*sb;
dx31=p[n3][1]-p[n1][1];
dy31=p[n3][2]-p[n1][2];
dx32=p[n3][1]-p[n2][1];
dy32=p[n3][2]-p[n2][2];
t[k1]=atan2(dy31,dx31);
ct=cos(t[k1]);
st=sin(t[k1]);
q=dy31*sb+dx31*cb;
ev=vp[n2][1]-vp[n1][1]-(*r2)*w[k3]*sb;
fv=vp[n2][2]-vp[n1][2]+(*r2)*w[k3]*cb;
w[k1]=(-ev*sb+fv*cb)/q;
*vr2=-(ev*dx31+fv*dy31)/q;
vp[n3][1]=vp[n1][1]-r1*w[k1]*st;
vp[n3][2]=vp[n1][2]+r1*w[k1]*ct;
ea=ap[n2][1]-ap[n1][1]+w[k1]*w[k1]*dx31-w[k3]*w[k3]*(*r2)*cb;
ea=ea-2.0*w[k3]*(*vr2)*sb-e[k3]*dy32;
fa=ap[n2][2]-ap[n1][2]+w[k1]*w[k1]*dy31-w[k3]*w[k3]*(*r2)*sb;
fa=fa+2.0*w[k3]*(*vr2)*cb-e[k3]*dx32;
e[k1]=(-ea*sb+fa*cb)/q;
*ar2=-(ea*dx31+fa*dy31)/q;
ap[n3][1]=ap[n1][1]-r1*w[k1]*w[k1]*ct-r1*e[k1]*st;
ap[n3][2]=ap[n1][2]-r1*w[k1]*w[k1]*st+r1*e[k1]*ct;
w[k2]=w[k3];
e[k2]=e[k3];
}
}
/***************rprk*******************************************/ void rprk(m,n1,n2,k1,k2,r1,r2,vr2,ar2,t,w,e,p,vp,ap)
int m,n1,n2,k1,k2;
double r1,*r2,*vr2,*ar2;
double p[20][2],vp[20][2],ap[20][2];
double t[10],w[10],e[10];
{
double dx21,dy21,test,phi,alpha,ct,st,q,vx21,vy21,ea,fa;
dx21=p[n2][1]-p[n1][1];
dy21=p[n2][2]-p[n1][2];
test=dx21*dx21+dy21*dy21-r1*r1;
if(test<0)
{
printf("\n RPR can't be assembled.\n");
}
else
{
*r2=sqrt(test);
phi=atan2(dy21,dx21);
alpha=atan(r1/(*r2));
if(m>0)
{
t[k1]=phi+alpha;
}
else
{
t[k1]=phi-alpha;
}
t[k2]=t[k1];
ct=cos(t[k1]);
st=sin(t[k1]);
q=dx21*ct+dy21*st;
vx21=vp[n2][1]-vp[n1][1];
vy21=vp[n2][2]-vp[n1][2];
w[k1]=(vy21*ct-vx21*st)/q;
w[k2]=w[k1];
*vr2=(vy21*dy21+vx21*dx21)/q;
ea=ap[n2][1]-ap[n1][1]+w[k1]*w[k1]*dx21+2.0*w[k1]*(*vr2)*st; fa=ap[n2][2]-ap[n1][2]+w[k1]*w[k1]*dy21-2.0*w[k1]*(*vr2)*ct; e[k1]=-(ea*st-fa*ct)/q;
e[k2]=e[k1];
*ar2=(ea*dx21+fa*dy21)/q;
}
}
static double p[20][3],vp[20][3],ap[20][3],del,t[10],w[10],e[10];
static int ic;
double r12,r23,r45,r56,r67,l1,l2;
double pi,dr;
double r2,vr2,ar2;
int i,m;
main()
{
FILE *fp;
pi=3.1415926; dr=pi/(180.0);
r12=20; r23=40; r45=135; r56=90; r67=90; l1=300; l2=128;
p[1][1]=0.0; p[1][2]=0.0;
p[5][1]=-135.0; p[5][2]=334.64;
p[8][1]=-265.0; p[8][2]=334.64;
t[1]=0.0; w[1]=2*pi; e[1]=0.0;
t[9]=90.0*dr; w[9]=0.0; e[9]=0.0;
t[8]=-90.0*dr; w[8]=0.0; e[8]=0.0;
del=10.0;
printf("NO THETAI S7 V7 A7\n");
printf(" deg mm mm/s mm/s/s\n");
if((fp=fopen("zuoye","w"))==NULL)
{
printf("can't find\n");
exit(0);
}
fprintf(fp,"NO THETAI S7 V7 A7\n");
fprintf(fp," deg mm mm/s mm/s/s\n");
ic=(int)360.0/del;
for(i=0;i<=ic;i++)
{
t[1]=i*del*dr;
bark(1,2,0,1,r12,0.0,0.0,t,w,e,p,vp,ap); /*调用单级杆件运动分析子程序*/
rrpk(1,2,1,3,2,3,9,r23,&r2,&vr2,&ar2,t,w,e,p,vp,ap); /*调用rrp杆件运动分析子程序*/
p[3][2]+=l1;
rprk(1,5,3,4,5,0.0,&r2,&vr2,&ar2,t,w,e,p,vp,ap); /*调用rpr杆件运动分析子程序*/
t[5]+=pi;
bark(5,6,0,5,r56,0.0,0.0,t,w,e,p,vp,ap);
rrpk(1,6,8,7,7,8,8,r67,&r2,&vr2,&ar2,t,w,e,p,vp,ap);
p[7][2]-=l2;
printf("\n%2d %12.3f %12.3f %12.3f %12.3f",i+1,t[1]/dr,p[7][2],vp[7][2],ap[7][2]); fprintf(fp,"\n%2d %12.3f %12.3f %12.3f %12.3f",i+1,t[1]/dr,p[7][2],vp[7][2],ap[7][2]);
}
fclose(fp);
getch();
}
得到如下数据:
NO THETAI S7 V7 A7 deg mm mm/s mm/s/s
1 0.000 126.017 -83.775 -265.212
2 10.000 123.60
3 -89.418 -134.303
3 20.000 121.087 -90.947 27.645
4 30.000 118.594 -87.804 198.017
5 40.000 116.252 -80.078 354.381
6 50.000 114.182 -68.389 481.583
7 60.000 112.481 -53.647 574.046
8 70.000 111.221 -36.802 633.740
9 80.000 110.448 -18.692 666.134
10 90.000 110.188 0.000 676.270
11 100.000 110.448 18.692 666.134
12 110.000 111.221 36.802 633.740
13 120.000 112.481 53.647 574.046
14 130.000 114.182 68.389 481.583
15 140.000 116.252 80.078 354.381
16 150.000 118.594 87.804 198.017
17 160.000 121.087 90.947 27.645
18 170.000 123.603 89.418 -134.303
19 180.000 126.017 83.775 -265.212
20 190.000 128.229 75.107 -350.903
21 200.000 130.173 64.714 -390.247
22 210.000 131.819 53.767 -392.974
23 220.000 133.163 43.088 -373.340
24 230.000 134.220 33.110 -344.448
25 240.000 135.010 23.950 -315.640
26 250.000 135.557 15.521 -292.468
27 260.000 135.877 7.623 -277.766
28 270.000 135.983 0.000 -272.757
29 280.000 135.877 -7.623 -277.766
30 290.000 135.557 -15.521 -292.468
31 300.000 135.010 -23.950 -315.640
32 310.000 134.220 -33.110 -344.448
33 320.000 133.163 -43.088 -373.340
34 330.000 131.819 -53.767 -392.974
35 340.000 130.173 -64.714 -390.247
36 350.000 128.229 -75.107 -350.903
37 360.000 126.017 -83.775 -265.212
可知打印装置的最低位置为距O1 110.188mm,最高位置为135.983mm。

工作台每次移动的距离为6*4*3.14=75.36mm,于是便可实现工作台每秒钟移动75.36mm打印一个包装盒的功能。

相关文档
最新文档