课程设计设计题目:汽车转向梯形机构的设计班 级: 机自 xx姓 名: xxx指导老师: xx2010年10月10日西安交通大学汽车转向梯形机构设计机自84班 李亚敏 08011098设计要求:(1) 设计实现前轮转向梯形机构;(2) 转向梯形机构在运动过程中有良好的传力性能原始数据:车型:无菱兴旺,转向节跨距M:1022mm,前轮距D:1222mm,轴距L:1780mm,最小转弯半径R:4500mm前言:汽车转向系统是用来改变或恢复其行驶方向的专设机构,由转向操纵机构、转向器和转向传动机构三部分组成转向操纵机构主要由方向盘、转向轴、转向管柱等组成:转向器将方向盘的转动变为转向摇臂的摆动或齿条轴的往复运动,并对转向操纵力进行放大的机构:转向传动机构将转向器输出的力和运动传给车轮,并使左右车轮按一定关系进行偏转运动的机构设计过程:一、设计原理简介1采用转向梯形机构转向的机动车辆,左右转弯时应具有相同的特征,因此左右摇臂是等长的2内外侧转向轮偏转角满足无侧滑条件时的关系式为: cotα-cotβ=ML(1) 3.转向过程中转向梯形机构应满足的方程为 cosα+α0=cosβ+β0-aMcosβ+β0-α-α0+2a2-b2+M22Ma(2)且b=M-2acosα0 (3)代人整理得: cosα+α0=-cosβ-α0+aMcosβ-α-2α0+2cosα0-2cos2α0M+aM (4)式中αβ为无侧滑状态下梯形臂转角的对应位置,可视为已知。
由(1)式算出来,因此,方程中有两个独立的未知量需求解,要梯形臂转角的两个对应位置即两个方程来求解4梯形臂转角的两个对应位置的确定由函数逼近理论确定梯形臂转角的两个对应位置的方程为:αi=21-cos2i-14π(i=1,2) (5)式中,为外偏转角的最佳范围值,由计算机逐步搜索获得由汽车的最大转弯半径可得最大转角为23.86度5非线性方程组的求解由梯形臂转角的两个对应位置确定的方程为cosαi+α0+cosβi-α0-aMcosβi-αi-2α0-2cosα0+2cos2α0M-aM=0 (i=1,2)可用最速下降法计算该方程用C++程序实现编程,代码如下double F1(double a,double i)//方程1{ double m=0.01; double n=atan(1/(1/tan(m)-M/L)); double f; f=cos(m+i)+cos(n-i)-(a/M)*cos(n-m-2*i)-2*cos(i)+2*a*cos(i)*cos(i)/M-a/M; return f;}double F2(double a,double i)//方程2{ double m=0.446; double n=atan(1/(1/tan(m)-M/L)); double f; f=cos(m+i)+cos(n-i)-(a/M)*cos(n-m-2*i)-2*cos(i)+2*a*cos(i)*cos(i)/M-a/M; return f;}double SolveF(double a,double i)//最速下降法的目标函数{ double f=F1(a,i)*F1(a,i)+F2(a,i)*F2(a,i); return f;}double Caculate(double t1)//最速下降法求解方程1与方程2的方程组{ double ff[2],t2=0.8; double f=1; while(f>e) { double ei,FF; ff[0]=(SolveF((t1+h*t1),t2)-SolveF(t1,t2))/(t1*h); ff[1]=(SolveF(t1,(t2+h*t2))-SolveF(t1,t2))/(t2*h); FF=ff[0]*ff[0]+ff[1]*ff[1]; ei=SolveF(t1,t2)/FF; t1=t1-ei*ff[0]; t2=t2-ei*ff[1]; f=SolveF(t1,t2); } return t2;}二、设计误差分析根据转向梯形机构主参数的设计值计算出内转向轮的实际偏转角,再通过无侧滑状态下的理想转角的比较,可进行转向梯形机构的误差分析。
内转向轮的实际偏转角βm1.根据已确定的转向梯形机构尺寸,由下式确定转向轮的实际偏转角为 βm=2arctanA±A2+B2-C2B+C-β0式中 A=sin(α+α0) B=cos(α+α0)-M/a C=2a2-b2+M22a2-Mcos(α+α0)a2.内转向轮的理想偏转角β内侧转向轮无侧滑时的理想偏转角: β=arctancotα-Ma3.内转向轮偏转角误差 Δβ=β- βm=arctancotα-Ma-2arctanA±A2+B2-C2B+C-α0+180C++程序代码如下double beta(double a,double i,double m)//计算误差的函数{ double A=sin(m+i); double B=cos(m+i)-M/a; double b=M-2*a*cos(i); double C=(2*a*a-b*b+M*M)/(2*a*a)-M*cos(m+i)/a; double Bm=2*atan((A-sqrt(A*A+B*B-C*C))/(B+C))+i-pi; double beta=atan(1/(1/tan(m)-M/L))-Bm; if(beta<0) beta=-beta; return beta;}double min(double a,double i)//求最大误差的函数{ double min=0; for(int j=0;j<120;j++) { if(beta(a,i,j*pi/900)>min) { min=beta(a,i,j*pi/900); } } return min;}设计结果:设计方法有两种:最速下降法求解和直接搜索法。
直接搜索法利用计算机,选择a和α0的值计算误差,比较从而得出误差最小的a和α0最后C++程序如下:#include#includeusing namespace std;const double M=1022,L=1780,e=10E-5,h=10E-5,pi=3.141592;double F1(double a,double i)//方程1{ double m=0.01; double n=atan(1/(1/tan(m)-M/L)); double f; f=cos(m+i)+cos(n-i)-(a/M)*cos(n-m-2*i)-2*cos(i)+2*a*cos(i)*cos(i)/M-a/M; return f;}double F2(double a,double i)//方程2{ double m=0.446; double n=atan(1/(1/tan(m)-M/L)); double f; f=cos(m+i)+cos(n-i)-(a/M)*cos(n-m-2*i)-2*cos(i)+2*a*cos(i)*cos(i)/M-a/M; return f;}double SolveF(double a,double i){ double f=F1(a,i)*F1(a,i)+F2(a,i)*F2(a,i); return f;}double Caculate(double t1)//最速下降法求解方程1与方程2的方程组{ double ff[2],t2=0.8; double f=1; while(f>e) { double ei,FF; ff[0]=(SolveF((t1+h*t1),t2)-SolveF(t1,t2))/(t1*h); ff[1]=(SolveF(t1,(t2+h*t2))-SolveF(t1,t2))/(t2*h); FF=ff[0]*ff[0]+ff[1]*ff[1]; ei=SolveF(t1,t2)/FF; t1=t1-ei*ff[0]; t2=t2-ei*ff[1]; f=SolveF(t1,t2); } return t2;}double beta(double a,double i,double m)//计算误差的函数{ double A=sin(m+i); double B=cos(m+i)-M/a; double b=M-2*a*cos(i); double C=(2*a*a-b*b+M*M)/(2*a*a)-M*cos(m+i)/a; double Bm=2*atan((A-sqrt(A*A+B*B-C*C))/(B+C))+i-pi; double beta=atan(1/(1/tan(m)-M/L))-Bm; if(beta<0) beta=-beta; return beta;}double min(double a,double i)//求最大误差的函数{ double min=0; for(int j=0;j<120;j++) { if(beta(a,i,j*pi/900)>min) { min=beta(a,i,j*pi/900); } } return min;}int main(){ double max=2; double a,a0;//采用最速下降法求解。
max=min(150,Caculate(150));//a的值取150 a=150; a0=Caculate(150)*180/pi; cout<<"采用最速下降法:"<