您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 滚子摆动从动件凸轮设计matlab程序
disp'********滚子摆动从动件凸轮设计********'disp'已知条件:'disp'凸轮作顺时针方向转动,从动件做摆动'disp'从动件在推程作等加速/等减速运动,在回程作等加速等减速运动'rb=52;rt=10;qm=15;ft=60;fs=10;fh=60;alp=35;a=140;l=122;q0=asin(rb/a)*180/pi;fprintf(1,'基圆半径rb=%3.4fmm\n',rb)fprintf(1,'滚子半径rt=%3.4fmm\n',rt)fprintf(1,'起始角度q0=%3.4fmm\n',q0)fprintf(1,'最大摆动角度qm=%3.4fmm\n',qm)fprintf(1,'推程运动角ft=%3.4f度\n',ft)fprintf(1,'远休止角fs=%3.4f度\n',fs)fprintf(1,'回程运动角fh=%3.4f度\n',fh)fprintf(1,'推程许用压力角alp=%3.4f度\n',alp)hd=pi/180;du=180/pi;%角度弧度互换d1=ft+fs;d2=ft+fs+fh;disp''disp'计算过程和输出结果:'disp'1-计算凸轮理论轮廓的压力角和曲率半径'disp'1-1推程(等加速/等减速运动)'s=zeros(ft);ds=zeros(ft);d2s=zeros(ft);vt=zeros(ft);st1=zeros(ft);at=zeros(ft);at=zeros(ft);atd=zeros(ft);pt=zeros(ft);forf=1:ftiff=ft/2s(f)=2*(qm/ft^2)*f^2;st1(f)=s(f);s=s(f);%推程加速方程式ds(f)=(qm/ft^2)*f;vt(f)=ds(f);ds=ds(f);d2s(f)=4*qm/ft;at(f)=d2s(f);d2s=d2s(f);elses(f)=qm-2*qm*(ft-f)^2/ft^2;st1(f)=s(f);s=s(f);%推程减速方程式ds(f)=4*qm*(ft-f)/ft^2;vt(f)=ds(f);ds=ds(f);d2s(f)=-4*qm/ft^2;at(f)=d2s(f);d2s=d2s(f);endat(f)=atan((-l*(1-ds))/(a*sin((s+q0)*hd))-(-1)*cos((s+q0)*hd)/sin((s+q0)*hd));atd(f)=at(f)*du;%推程压力角的角度和弧度表达式p1=-a*sin(f*hd)+l*sin((s+q0-f)*hd)*(ds-1);p2=a*cos(f*hd)+l*cos((s+q0-f)*hd)*(ds-1);p3=-a*cos(f*hd)+l*(ds-1)^2*cos((s+q0-f)*hd)+l*d2s*sin((s+q0-f)*hd);p4=-a*sin(f*hd)-l*(ds-1)^2*sin((s+q0-f)*hd)+l*ds*cos((s+q0-f)*hd);pt(f)=(p1^2+p2^2)^1.5/(p1*p4-p2*p3);p=pt(f);endatm=0;forf=1:ftifatd(f)atmatm=atd(f);endendfprintf(1,'最大压力角atm=%3.4f度\n',atm)forf=1:ftifabs(atd(f)-atm)0.1ftm=f;breakendendfprintf(1,'对应的位置角ftm=%3.4f度\n',ftm)ifatmalpfprintf(1,'*凸轮推程压力角超过许用值,需要增大基圆!\n')endptn=rb;ftn=0;forf=1:ftifpt(f)ptnptn=pt(f);endendfprintf(1,'轮廓最小曲率半径ptn=%3.4fmm\n',ptn)forf=1:ftifabs(pt(f)-ptn)0.1ftn=f;breakendendfprintf(1,'对应的位置角ftn=%3.4f度\n',ftn)ifptnrt+5fprintf(1,'*凸轮推程轮廓曲率半径小于许用值,需要增大基圆或减小滚子!\n')enddisp'1-2回程(等加速等减速运动)'s=zeros(fh);ds=zeros(fh);d2s=zeros(fh);ah=zeros(fh);ahd=zeros(fh);ph=zeros(fh);forf=d1:d2k=f-d1;ifk=fh/2s(f)=qm-2*qm*(k)^2/fh^2;st1(f)=s(f);s=s(f);ds(f)=-4*qm*k/fh^2;ds=ds(f);d2s(f)=-4*qm/fh^2;d2s=d2s(f);elses(f)=2*qm*(d2-f)^2/fh^2;st1(f)=s(f);s=s(f);ds(f)=-4*qm*(d2-f)/fh^2;ds=ds(f);d2s(f)=4*qm/fh^2;d2s=d2s(f);endat(f)=atan((-l*(1-ds))/(a*sin((s+q0)*hd))-(-1)*cos((s+q0)*hd)/sin((s+q0)*hd));atd(f)=at(f)*du;%推程压力角的角度和弧度表达式p1=-a*sin(f*hd)+l*sin((s+q0-f)*hd)*(ds-1);p2=a*cos(f*hd)+l*cos((s+q0-f)*hd)*(ds-1);p3=-a*cos(f*hd)+l*(ds-1)^2*cos((s+q0-f)*hd)+l*d2s*sin((s+q0-f)*hd);p4=-a*sin(f*hd)-l*(ds-1)^2*sin((s+q0-f)*hd)+l*ds*cos((s+q0-f)*hd);pt(f)=(p1^2+p2^2)^1.5/(p1*p4-p2*p3);p=pt(f);endatm=0;forf=1:ftifatd(f)atmatm=atd(f);endendfprintf(1,'最大压力角atm=%3.4f度\n',atm)forf=1:ftifabs(atd(f)-atm)0.1ftm=f;breakendendfprintf(1,'对应的位置角ftm=%3.4f度\n',ftm)ifatmalpfprintf(1,'*凸轮推程压力角超过许用值,需要增大基圆!\n')endptn=rb;ftn=0;forf=1:ftifpt(f)ptnptn=pt(f);endendfprintf(1,'轮廓最小曲率半径ptn=%3.4fmm\n',ptn)forf=1:ftifabs(pt(f)-ptn)0.1ftn=f;breakendendfprintf(1,'对应的位置角ftn=%3.4f度\n',ftn)ifptnrt+5fprintf(1,'*凸轮推程轮廓曲率半径小于许用值,需要增大基圆或减小滚子!\n')enddisp'2-计算凸轮理论廓线与实际廓线的直角坐标'n=360;s=zeros(n);ds=zeros(n);r=zeros(n);rp=zeros(n);x=zeros(n);y=zeros(n);dx=zeros(n);dy=zeros(n);xx=zeros(n);yy=zeros(n);xp=zeros(n);yp=zeros(n);xxp=zeros(n);yyp=zeros(n);forf=1:niff=ft/2s(f)=2*(qm/ft^2)*f^2;s=s(f);ds(f)=(qm/ft^2)*f;ds=ds(f);elseiffft/2&f=fts(f)=qm-2*qm*(ft-f)^2/ft^2;s=s(f);ds(f)=4*qm*(ft-f)/ft^2;ds=ds(f);elseiffft&f=d1s=qm;ds=0;elseiffd1&f=(d2-fh/2)k=f-d1;s(f)=qm-2*qm*(k)^2/fh^2;s=s(f);ds(f)=-4*qm*k/fh^2;ds=ds(f);elseiff(d2-fh/2)&f=d2s(f)=2*qm*(d2-f)^2/fh^2;s=s(f);ds(f)=-4*qm*(d2-f)/fh^2;ds=ds(f);elseiffd2&f=ns=0;ds=0;endxx(f)=a*cos(f*hd)-l*cos((s+q0-f)*hd);x=xx(f);yy(f)=a*sin(f*hd)+l*sin((s+q0-f)*hd);y=yy(f);dx(f)=-a*sin(f*hd)+l*sin((s+q0-f)*hd)*(ds-1);dx=dx(f);dy(f)=a*cos(f*hd)+l*cos((s+q0-f)*hd)*(ds-1);dy=dy(f);xp(f)=x-rt*(dy/sqrt(dx^2+dy^2));xxp=xp(f);yp(f)=y+rt*(dx/sqrt(dx^2+dy^2));yyp=yp(f);r(f)=sqrt(x^2+y^2);rp(f)=sqrt(xxp^2+yyp^2);enddisp'2-1推程(等加速/等减速运动)'disp'凸轮转角理论x理论y实际x实际y'forf=10:10:ftnu=[fxx(f)yy(f)xp(f)yp(f)];disp(nu)enddisp'2-2回程(等加速/等减速运动)'disp'凸轮转角理论x理论y实际x实际y'forf=d1:10:d2nu=[fxx(f)yy(f)xp(f)yp(f)];disp(nu)enddisp'2-3凸轮轮廓向径'disp'凸轮转角理论r实际r'forf=10:10:nnu=[fr(f)rp(f)];disp(nu)enddisp'绘制凸轮的理论轮廓和实际轮廓:'plot(xx,yy,'r-.')%理论轮廓(红色,点划线)axis([-(150)(150)-(150)(150)])%横轴和纵轴的下限和上限axisequal%横轴和纵轴的尺度比例相同text(50,0,'X')%标注横轴text(0,50,'Y')%标注纵轴text(-5,5,'O')%标注直角坐标系原点title('摆动从动件盘形凸轮设计')%标注图形标题holdon;%保持图形plot([-(rb)(rb)],[00],'k')%横轴(黑色)plot([00],[-(rb)(rb+rt)],'k')%纵轴(黑色)ct=linspace(0,2*pi);%画圆的极角变化范围plot(rb*cos(ct),rb*sin(ct),'g')%基圆(绿色)plot(xp,yp,'b')%实际轮廓(蓝色)
本文标题:滚子摆动从动件凸轮设计matlab程序
链接地址:https://www.777doc.com/doc-5495337 .html