斜齿轮变位系数分配-C程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include"stdio.h"
#include"math.h"
void main()
{
int z1,z2,Zh,A;
float M,a,Zh2,u;
float Xn,x1;
double a1,a2; /*a1=端面啮合角(实数)a2=端面啮合角(角度)*/ double xishuhe(float,double); /*函数声明*/
float fenpei(float u,float x); /*函数声明*/
printf("请输入两齿轮齿数:\n");
scanf("%d %d",&z1,&z2);
printf("请输入齿轮模数:\n");
scanf("%f",&M);
printf("请输入圆整后中心距:\n");
scanf("%d",&A);
Zh=z1+z2;
Zh2=Zh/0.797; /*Zh=齿数和Zh2=当量齿数和*/
u=z2/(z1+0.0); /*u=传动比(z1+0.0)是为了得到非整数的u*/
a=M*Zh/1.8544;
printf("z1=%d z2=%d Zh=%d Zh2=%f M=%.2f A=%d a=%.4f\n",z1,z2,Zh,Zh2,M,A,a);
a1=acos(a/A*0.9308);
a2=a1/3.1415926*180;
printf("端面啮合角(角度)=%.3f\n",a2);
Xn=xishuhe(Zh2,a2);
printf("变位系数和=%.3f\n",Xn);
x1=fenpei(u,Xn);
printf("齿轮1变位系数=%.3f\n",x1);
}
double xishuhe(float z,double a) /*求变位系数和的函数*/
{
float Xn;
if(a>=20.5&&a<21)
Xn=(z/300-0.00163*z)/0.5*(a-20.5)+0.00163*z;
if(a>=21&&a<21.5)
Xn=(z/200-z/300)/0.5*(a-21)+z/300;
if(a>=21.5&&a<22)
Xn=(0.007*z-z/200)/0.5*(a-21.5)+z/200;
if(a>=22&&a<22.5)
Xn=(0.00898*z-0.007*z)/0.5*(a-22)+0.007*z;
if(a>=22.5&&a<23)
Xn=(z/90-0.00898*z)/0.5*(a-22.5)+0.00898*z;
if(a>=23&&a<23.5)
Xn=(z/75-z/90)/0.5*(a-23)+z/90;
if(a>=23.5&&a<24)
Xn=(z/64-z/75)/0.5*(a-23.5)+z/75;
if(a>=24&&a<24.5)
Xn=(z/55-z/64)/0.5*(a-24)+z/64;
if(a>=24.5&&a<25)
Xn=(0.0207*z-z/55)/0.5*(a-24.5)+z/55;
if(a>=25&&a<25.5)
Xn=(0.02325*z-0.0207*z)/0.5*(a-25)+0.0207*z;
if(a>=25.5&&a<26)
Xn=(0.02641*z-0.02325*z)/0.5*(a-25.5)+0.02325*z;
return Xn;
}
float fenpei(float i,float x) /*变位系数分配函数*/
{
float x1;
if(i>=0.7&&i<1)
x1=0.5251*x-0.0339;
if(i>=1&&i<1.2)
x1=0.4473*x+0.0581;
if(i>=1.2&&i<1.6)
x1=0.375*x+0.1375;
if(i>=1.6&&i<2.2)
x1=0.2759*x+0.2552;
if(i>=2.2&&i<3.0)
x1=0.2105*x+0.3369;
if(i>=3.0)
x1=0.1361*x+0.4243;
return x1;
}