资源描述
Harbin Institute of Technology
大作业设计说明书
课程名称: 机械设计
设计题目: V带传动电算
院 系: 机电学院
班 级: 1208106
设 计 者: 张文奇
学 号: 1120810610
指导老师: 张锋
设计时间: 2014.10.24
哈尔滨工业大学
目录
一、 普通V带传动的内容和任务..............................
二、 变量标识符 ...........................................
三、 程序框图 .............................................
四、 V带设计程序...........................................
五、 程序运行截图..........................................
六、 设计总结..............................................
七、参考文献..............................................
一、普通V带传动的内容和任务
1、 普通V带传动设计内容:
给定原始数据:传递的功率P,小带轮转速 n1 传动比i及工作条件
设计内容:带型号,基准长度Ld,根数Z,传动中心距a,带轮基准直径dd1、dd2,带轮轮缘宽度B,初拉力F0和压轴力Q
2、 CAD任务:
① 编制V带传动设计程序框图;
② 编制V带传动设计源程序;
③ 按习题或作业中数据运行程序,要求对每一组数据各按三种V带型号计算,对每一种带型号选三种小带轮直径进行计算并输出所有结果;
④ 比较结果,从9种方案中选择一个最佳方案并按照此方案提供的几何和结构参数利用AutoCAD软件绘制大带轮零件工作图。
3、设计思路
输入原始数据:P,n1,i ,包括已给定和人为假定的数据。人为给定的一些条件代号,如Z、A、B、C、D、E六种带型号可使用变量TYPE来表示,TYPE=1—6分别对应六种型号。然后通过编程计算得出其余参数的标识符及合理数值。
2
二、变量标识符
为了使程序具有较好的可读性易用性,应采用统一的变量标识符,如表1所示。表1变量标识符表
表1 变量标识符表
序号
名称
代号
标识符
单位
1
名义功率
P
P
kW
2
设计功率
Pd
Pd
kW
3
工作情况系数
KA
KA
4
小带轮转速
n1
n1
r/min
5
工作机载荷特性
GZJ
6
原动机类型
YDJ
7
带型号
Z、A—E
TYPE
8
小带轮基准直径
dd1
dd1
mm
9
大带轮基准直径
dd2
dd2
mm
10
最小带轮直径
ddmin
ddMIN
mm
11
带速
V
m/s
12
最大带速
VMAX
m/s
13
中心距
a
a
mm
14
基准长度
Ld
Ld
mm
15
小带轮包角
ALF1
度
16
V带根数
Z
Z
17
额定功率
P0
P0
kW
18
功率增量
DIFP0
kW
19
弯曲影响系数
Kb
Kb
20
传动比系数
Ki
Ki
21
长度系数
KL
KL
22
包角系数
KALF
23
初拉力
F0
F0
N
24
压轴力
Q
Q
N
25
圆周率
PAI
26
轮缘宽度
B
B
mm
三、程序框图
a1=0.7(dd1+dd2),a2=2(dd1+dd2)
输入初估中心距a0,计算 Ld0
A
dd2=
查标准带轮直径表确定dd2
Y
V<Vmax ?
根据型号确定最大带速Vmax,
额定功率P0中系数K1,K2,K3,
弯曲影响系数Kb
V=
输出该型号带轮系列直径,选择输入小带轮基准直径dd1
输入带型号
查表求传动比系数Ki
查KA,计算Pd,选型
查表求KA, 计算Pd
输入P, n1,i
输入各原始数据
开始
减小直径
图1 V带设计程序框图
B
查标准长度确定Ld,同时
查取KL,计算实际中心距a
A
计算小带轮包角查表确定包角系数
计算Po,
Z<10 ?
计算Fo, Q,B ( 取整)
输出结果
计算下一型号带 ?
结束
计算下一种带轮直径?
Y
Y
Y
N
N
N
N
B
四、V带设计程序
#include<stdio.h>
#include<math.h>
#include<string.h>
#define PAI 3.14
int TYPE_TO_NUM(char type);
float Select_Ki(float i);
float Select_KA(float H,int GZJ,int YDJ);
float Select_KL(float Ld,int TYPE);
float Select_M(int TYPE);
float Select_dd1(int TYPE);
float Select_dd2(int dd1,float i);
float Compute_P0(float V,int TYPE,float dd1);
float Compute_DIFP0(int TYPE,float Ki,int n1);
float Compute_VMAX(int TYPE);
float Compute_KALF(float ALF1);
float Compute_B(int TYPE,int z);
float* Compute_LAK(float dd1,float dd2,int TYPE);
main()
{
float P,H,i,n1,KA,Ki,dd1,dd2,V,P0,DIFP0,Pd,VMAX,*LAK,m,Ld,KALF,a,KL,z,F0,ALF1,Q,B;
int YDJ,GZJ,TYPE,ANS;
char type,ans;
START: printf(" 欢迎使用普通V带传动设计电算软件\n");
printf(" 机械设计电算 \n 张文奇 1120810610 \n
V带传动设计程序\n");
printf("\n");
printf(" 请输入各项原始参数\n");
printf("1.传递功率P(单位KW):");
printf("\n");
scanf("%f",&P);
IF5: if(P>10)
{
printf("警告:传递功率过大,请重新输入\n");
printf("1.传递功率P(单位KW):");
printf("\n");
scanf("%f",&P);
goto IF5;
}
printf("\n");
printf("2.小带轮转速n1(单位r/min):");
printf("\n");
scanf("%f",&n1);
IF4: if(n1>10000)
{
printf("警告:输入转速达到高速带传动,请降低转速并重新输入\n");
printf("2.小带轮转速n1(单位r/min):");
printf("\n");
scanf("%f",&n1);
goto IF4;
}
printf("\n");
printf("3.传动比i:");
printf("\n");
scanf("%f",&i);
IF6: if(i>4)
{
printf("警告:输入传动比过高,请重新输入\n");
printf("3.传动比i:");
printf("\n");
scanf("%f",&i);
goto IF6;
}
printf("\n");
printf("4.原动机类型(I(1)或II(2)):\n说明:I类-普通鼠笼式电机、同步电机、直流电机(并激),n>600r/min内燃机\n II类-交流电动机、直流电动机、单缸发动机、n<600r/min内燃机\n");
scanf("%d",&YDJ);
IF1: if(YDJ!=2 && YDJ!=1)
{
printf("输入错误!请重新输入!\n");
printf("4.原动机类型(I(1)或II(2)):\n说明:I类-普通鼠笼式电机、同步电机、直流电机(并激),n>600r/min内燃机\n II类-交流电动机、直流电动机、单缸发动机、n<600r/min内燃机\n");
scanf("%d",&YDJ);
goto IF1;
}
printf("\n");
printf("5.载荷类型:\n0:载荷平稳\n1:载荷变动较小\n2:载荷变动较大\n3:载荷变动很大\n");
scanf("%d",&GZJ);
IF2: if(GZJ!=0 && GZJ!=1 && GZJ!=2 && GZJ!=3)
{
printf("输入错误!请重新输入!\n");
printf("5.载荷类型:\n0:载荷平稳\n1:载荷变动较小\n2:载荷变动较大\n3:载荷变动很大\n");
scanf("%d",&GZJ);
goto IF2;
}
printf("\n");
printf("6.每天的工作时间:\n0:<10h(一班制)\n1:10h~16h(两班制)\n2:>16h(三班制)\n");
scanf("%f",&H);
IF3: if(H!=0 && H!=1 && H!=2)
{
printf("输入错误!请重新输入!\n");
printf("6.每天的工作时间:\n0:<10h(一班制)\n1:10h~16h(两班制)\n2:>16h(三班制)\n");
scanf("%f",&H);
goto IF3;
}
printf("\n");
DX: printf("7.请选择V带带型(Z、A、B、C、D、E):\n");
scanf(" %c",&type);
TYPE=TYPE_TO_NUM(type);
KA= Select_KA(H,GZJ,YDJ);
Pd=KA*P;
VMAX=Compute_VMAX(TYPE);
DD1:dd1=Select_dd1(TYPE);
V=PAI*dd1*n1/60000;
while(V>VMAX)
{
printf("\n");
printf("警告:所选小轮基准直径过小!请重新选择!\n");
dd1=Select_dd1(TYPE);
V=PAI*dd1*n1/60000;
}
dd2=Select_dd2(dd1,i);
P0=Compute_P0(V,TYPE,dd1);
Ki=Select_Ki(i);
DIFP0=Compute_DIFP0(TYPE,Ki,n1);
LAK=Compute_LAK(dd1,dd2,TYPE);
Ld=LAK[0];
a=LAK[1];
KL=LAK[2];
ALF1=180-57.3*(dd2-dd1)/a;
KALF=Compute_KALF(ALF1);
z=ceil(Pd/(KALF*KL*(P0+DIFP0)));
if(z>=10)
goto DX;
m=Select_M(TYPE);
F0=500*Pd*(2.5-KALF)/(z*V*KALF)+m*V*V;
Q=2*z*F0*sin(ALF1*PAI/360);
B= Compute_B(TYPE,z);
printf("\n");
printf(" 计算结果\n");
printf("\n");
printf("小轮直径:%f mm\n\n大轮直径:%f mm\n\n中心距:%f mm\n\n带长:%f mm\n\n带宽:%f mm\n\n带的根数:%f\n\n初拉力:%f N\n\n轴压力:%f N\n\n",dd1,dd2,a,Ld,B,z,F0,Q);
printf("\n");
X: printf("请选择:\nY:计算下一组带轮\nS:重新开始\nN:结束\n");
scanf(" %c",&ans);
ANS=TYPE_TO_NUM(ans);
if(ANS==6)
goto DD1;
else if(ANS==7)
goto START;
else if(ANS==8)
printf("程序结束");
else
{
printf("输入错误,请重新输入");
goto X;
}
}
/*工作情况系数选择*/
float Select_KA(float H,int GZJ,int YDJ)
{
/*表5.7工作情况系数KA*/
float ka1[4][3]={{1.0,1.1,1.2},{1.1,1.2,1.3},{1.2,1.3,1.4},{1.3,1.4,1.5}};
float ka2[4][3]={{1.1,1.2,1.3},{1.2,1.3,1.4},{1.4,1.5,1.6},{1.5,1.6,1.8}};
float KA;
if(YDJ==1)
{
if(H==0)
KA=ka1[GZJ][0];
else if(H==2)
KA=ka1[GZJ][2];
else
KA=ka1[GZJ][1];
}
if(YDJ==2)
{
if(H==0)
KA=ka2[GZJ][0];
else if(H==2)
KA=ka2[GZJ][2];
else
KA=ka2[GZJ][1];
}
return KA;
}
/*传动比系数*/
float Select_Ki(float i)
{
float m;
/*表5.6传动比系数Ki*/
float Ki[10]={1.0000,1.0136,1.0276,1.0419,1.0567,1.0719,1.0875,1.1036,1.1202,1.1373};
float I[10]={1.00,1.02,1.05,1.09,1.13,1.19,1.25,1.35,1.52,2.00};
int j=9;
for(j=9;j>=0;j--)
{
m=i-I[j];
if(m>=0)
break;
}
return Ki[j];
}
/*确定选择带型*/
int TYPE_TO_NUM(char type)
{
int x;
if(type<91)
{
type+=32;
}
switch(type)
{
case 'z':
x=0;
break;
case 'a':
x=1;
break;
case 'b':
x=2;
break;
case 'c':
x=3;
break;
case 'd':
x=4;
break;
case 'e':
x=5;
break;
case 'y':
x=6;
break;
case 's':
x=7;
break;
case 'n':
x=8;
break;
}
return x;
}
/*计算额定功率*/
float Compute_P0(float V,int TYPE,float dd1)
{
float P0;
float K1[6]={0.246,0.449,0.794,1.48,3.15,4.57};
float K2[6]={7.44,19.02,50.6,143.2,507.3,951.5};
float K3[6]={0.441e-4,0.765e-4,1.31e-4,2.34e-4,4.77e-4,7.06e-4};
P0=(K1[TYPE]*pow(V,-0.09)-K2[TYPE]/dd1-K3[TYPE]*V*V)*V;
return P0;
}
/*表5.5弯曲影响系数Kb*/
float Compute_DIFP0(int TYPE,float Ki,int n1)
{
float Kb,DIFP0;
float KB[6]={0.2925e-3,0.7725e-3,1.9875e-3,5.625e-3,19.95e-3,37.35e-3};
Kb=KB[TYPE];
DIFP0=Kb*n1*(1-1/Ki);
return DIFP0;
}
/*小带轮基准直径*/
float Select_dd1(int TYPE)
{
int i;
float dd1;
float DD1[6][4]={{50.0,63.0,71.0,80.0},{75.0,90.0,100.0,125.0},{125.0,140.0,160.0,180.0},
{200.0,250.0,315.0,400.0},{355.0,400.0,450.0,500.0},{500.0,560.0,630.0,710.0}};
printf("\n");
printf("所选型号小带轮系列直径有(mm):\n");
for(i=0;i<4;i++)
{
printf("%f ",DD1[TYPE][i]);
}
printf("\n8.请选择输入小带轮基准直径dd1:");
scanf("%f",&dd1);
IF12: if(dd1!=DD1[TYPE][0] && dd1!=DD1[TYPE][1] && dd1!=DD1[TYPE][2] && dd1!=DD1[TYPE][3])
{
printf("警告:未输入有效数据,请重新输入");
printf("\n8.请选择输入小带轮基准直径dd1:");
scanf("%f",&dd1);
goto IF12;
}
return dd1;
}
/*大带轮基准直径*/
float Select_dd2(int dd1,float i)
{
float DD2[]={50,56,63,71,80,90,100,112,125,140,150,160,180,200,224,
250,280,315,355,400,425,450,500,560,600,630,710,800};
float dd2,temp,t;
int j=0;
temp=i*dd1;
for(j=0;j<28;j++)
{
t=temp-DD2[j];
if(t<=0)
break;
}
if((DD2[j]-temp)<(temp-DD2[j-1]))
dd2=DD2[j];
else
dd2=DD2[j-1];
return dd2;
}
/*估计中心距*/
float* Compute_LAK(float dd1,float dd2,int TYPE)
{
int j=0;
float a1,a2,a0,Ld0,temp,KALF,Ld,a,KL;
float LAK[3];
float kl[23][6]={{400,0.87},{450,0.89},{500,0.91},
{560,0.94},{630,0.96,0.81},{710,0.99,0.83},{800,1.00,0.85,0.82},{900,1.03,0.87,0.84,0.83},{1000,1.06,0.89,0.86,0.86,0.83},
{1120,1.08,0.91,0.88,0.88,0.86},{1250,1.10,0.93,0.90,0.91,0.89},{1400,1.14,0.96,0.92,0.93,0.91},{1600,1.16,0.99,0.95,0.95,0.93},
{1800,1.18,1.01,0.98,0.97,0.96},{2000,0,1.03,1.00,0.99,0.98},{2240,0,1.06,1.03,1.02,1.00},{2500,0,1.09,1.05,1.04,1.03},
{2800,0,1.11,1.07,1.07,1.06},{3150,0,1.13,1.09,1.09,1.08},{3550,0,1.17,1.13,1.12,1.11},{4000,0,1.19,1.15,1.15,1.14},{4500,0,0,1.18,1.18,1.17},{5000,0,0,0,1.21,1.20}};
a1=0.7*(dd1+dd2);
a2=2*(dd1+dd2);
printf("\n");
printf("9.请选择输入初估中心距a0(范围为%.2fmm~%.2fmm):",a1,a2);
scanf("%f",&a0);
IF11: if(a0<a1 || a0>a2)
{
printf("输入中心距超出范围,请重新输入\n");
printf("9.请选择输入初估中心距a0(范围为%.2fmm~%.2fmm):",a1,a2);
scanf("%f",&a0);
goto IF11;
}
Ld0=2*a0+(dd1+dd2)*PAI/2+(dd2-dd1)*(dd2-dd1)/a0/4;
for(j=0;j<23;j++)
{
temp=Ld0-kl[j][0];
if(temp<=0)
break;
}
if((Ld0-kl[j-1][0])>(kl[j][0]-Ld0))
{ Ld=kl[j][0];
KL=kl[j][TYPE+1];
}
else
{ Ld=kl[j-1][0];
KL=kl[j-1][TYPE+1];
}
a=a0+(Ld-Ld0)/2;
LAK[0]=Ld;
LAK[1]=a;
LAK[2]=KL;
return LAK;
}
/*最大带速*/
float Compute_VMAX(int TYPE)
{
float VMAX;
switch(TYPE)
{
case 0:
case 1:
case 2:
case 3:
VMAX=25;
break;
case 4:
case 5:
VMAX=30;
break;
}
return VMAX;
}
float Select_M(int TYPE)
{
float m;
float M[6]={0.06,0.1,0.17,0.3,0.6,0.9};
m=M[TYPE];
return m;
}
float Compute_B(int TYPE,int z)
{
float f[6]={8,10,12.5,17,23,29};
float e[6]={12,15,19,25.5,37,44.5};
float B;
B=(z-1)*e[TYPE]+2*f[TYPE];
return B;
}
float Compute_KALF(float ALF1)
{
float kalf[2][14]={220,210,200,190,180,170,160,150,140,130,120,110,100,90,1.20,1.15,1.10,1.05,1.00,0.98,0.95,0.92,
0.89,0.86,0.82,0.78,0.73,0.68},KALF;
int i;
for(i=0;i<14;i++)
{
if(ALF1<kalf[0][i]&&ALF1>kalf[0][i+1])
{
KALF=kalf[1][i]+(kalf[1][i]-kalf[1][i+1])*(ALF1-kalf[0][i])/10;
break;
}
}
return KALF;
}
五、程序运行截图
合理运行结果:
输入中心距350mm,选择小带轮直径75mm,输出结果
六、设计总结
通过这段时间的V带传动设计电算上机,一方面我对V带传动设计过程有了更深的了解,另一方面也让我对程序设计的一般过程与规范以及注意事项有了一定的认识。同时在程序设计的过程中,我对这款软件有了一定的了解,学习了一些基本的应用。通过这次设计,锻炼了我们各方面的能力,使我们受益匪浅!
七、参考文献
【1】 宋宝玉 王黎钦 《机械设计》————高等教育出版社 2010.5
【2】 王连明 宋宝玉 《机械课程设计》——哈尔滨工业大学出版社 2010.1
22
展开阅读全文