1、V带传动电算报告Harbin Institute of Technology哈尔滨工业大学 机械设计作业设计计算说明书课程名称: 机械设计 设计题目: V带传动设计 院 系: 机电工程学院 班 级: 0808103 设 计 者: 李宏达 学 号: 1080810306 指导教师: 宋宝玉、敖宏瑞 设计时间: 2010.10.25 哈尔滨工业大学一、程序框图Y图1 V带设计程序框图N二、V带设计程序#include#include#include#define PAI 3.14int TYPE_TO_NUM(char type); /*将输入的字符(不论大小写)转换为数字方便使用*/float
2、Select_Ki(float i); /*查表选择Ki的程序*/float Select_KA(float H,int GZJ,int YDJ); /*查表选择KA的程序*/float Select_KL(float Ld,int TYPE); /*查表选择KL的程序*/float Select_M(int TYPE); /*查表选择m的程序*/float Select_dd1(int TYPE); /*查表选择小轮基准直径dd1的程序*/float Select_dd2(int dd1,float i); /*查表选择大轮直径dd2的程序*/float Compute_P0(float V
3、,int TYPE,float dd1); /*计算P0的程序*/float Compute_DIFP0(int TYPE,float Ki,int n1); /*计算DIFP0的程序*/float Compute_VMAX(int TYPE); /*计算VMAX的程序*/float Compute_KALF(float ALF1); /*计算KALF的程序*/float Compute_B(int TYPE,int z); /*计算带宽B的程序*/float* Compute_LAK(float dd1,float dd2,int TYPE); /*计算Ld,a,KL的程序*/main()
4、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; printf( V带传动设计程序n); printf( 设计者 李宏达 1080810306n);START: printf(请输入原始参数:n); printf(传递功率P(KW):); scanf(%f,&P); printf(小带轮转速n1(r/min):); scanf(%f,&n1); printf(传动比i:); scanf(%f,&i); pr
5、intf(每天工作时间H(h):); scanf(%f,&H); printf(原动机类型(1或2):); scanf(%d,&YDJ); printf(工作机载荷类型:n1,载荷平稳n2,载荷变动较小n3,载荷变动较大n4,载荷变动很大n); scanf(%d,&GZJ); DX: printf(带型:); 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/6000
6、0; while(VVMAX) 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=LAK0; a=LAK1; KL=LAK2; ALF1=180-57.3*(dd2-dd1)/a; KALF=Compute_KALF(ALF1); z=cei
7、l(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(小轮直径:%f mmn大轮直径:%f mmn中心距:%f mmn带长:%f mmn带宽:%f mmn带的根数:%fn初拉力:%f Nn轴压力:%f Nn,dd1,dd2,a,Ld,B,z,F0,Q);X: printf(计算下一组带轮直径按Y,重新开始按
8、S,结束按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) float ka143=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 ka243=1.1,1.2,1.3,1.2,1.3,1.4,1.4,
9、1.5,1.6,1.5,1.6,1.8; float KA; if(YDJ=1) if(H16) KA=ka1GZJ-12; else KA=ka1GZJ-11; if(YDJ=2) if(H16) KA=ka2GZJ-12; else KA=ka2GZJ-11; return KA;float Select_Ki(float i) float m; float Ki10=1.0000,1.0136,1.0276,1.0419,1.0567,1.0719,1.0875,1.1036,1.1202,1.1373; float I10=1.00,1.02,1.05,1.09,1.13,1.19,1
10、.25,1.35,1.52,2.00; int j=9; for(j=9;j=0;j-) m=i-Ij; if(m=0) break; return Kij; int TYPE_TO_NUM(char type) int x; if(type91) 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;
11、 break; case n: x=8; break; return x;float Compute_P0(float V,int TYPE,float dd1) float P0; float K16=0.246,0.449,0.794,1.48,3.15,4.57; float K26=7.44,19.02,50.6,143.2,507.3,951.5; float K36=0.441e-4,0.765e-4,1.31e-4,2.34e-4,4.77e-4,7.06e-4; P0=(K1TYPE*pow(V,-0.09)-K2TYPE/dd1-K3TYPE*V*V)*V; return P
12、0;float Compute_DIFP0(int TYPE,float Ki,int n1) float Kb,DIFP0; float KB6=0.2925e-3,0.7725e-3,1.9875e-3,5.625e-3,19.95e-3,37.35e-3; Kb=KBTYPE; DIFP0=Kb*n1*(1-1/Ki); return DIFP0;float Select_dd1(int TYPE) int i; float dd1; float DD164=50,63,71,80,75,90,100,125,125,140,160,180, 200,250,315,400,355,40
13、0,450,500,500,560,630,710; printf(该带型推荐的小带轮基准直径有(mm):n); for(i=0;i4;i+) printf(%.2f ,DD1TYPEi); printf(n请选择小带轮直径dd1:); scanf(%f,&dd1); 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; fl
14、oat dd2,temp,t; int j=0; temp=i*dd1; for(j=0;j28;j+) t=temp-DD2j; if(t=0) break; if(DD2j-temp)(temp-DD2j-1) dd2=DD2j; else dd2=DD2j-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 LAK3; float kl236=400,0.87,450,0.89,500,0.91, 560,0.
15、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,
16、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(请输入初估中心距a0(范围为%.2fmm%.2fmm):,a1,a2); scanf(%f,&a0); Ld0=2*a0+(dd1+d
17、d2)*PAI/2+(dd2-dd1)*(dd2-dd1)/a0/4; for(j=0;j23;j+) temp=Ld0-klj0; if(temp(klj0-Ld0) Ld=klj0; KL=kljTYPE+1; else Ld=klj-10; KL=klj-1TYPE+1; a=a0+(Ld-Ld0)/2; LAK0=Ld; LAK1=a; LAK2=KL; return LAK;float Compute_VMAX(int TYPE) float VMAX; switch(TYPE) case 0: case 1: case 2: case 3: VMAX=25; break; case
18、 4: case 5: VMAX=30; break; return VMAX;float Select_M(int TYPE) float m; float M6=0.06,0.1,0.17,0.3,0.6,0.9; m=MTYPE; return m;float Compute_B(int TYPE,int z) float f6=8,10,12.5,17,23,29; float e6=12,15,19,25.5,37,44.5; float B; B=(z-1)*eTYPE+2*fTYPE; return B;float Compute_KALF(float ALF1) float kalf214=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;i14;i+) if(ALF1kalf0i+1) KALF=kalf1i+(kalf1i-kalf1i+1)*(ALF1-kalf0i)/10; break; return KALF;三、程序运行截图