当前位置:文档之家› 滚子摆动从动件凸轮设计matlab程序

滚子摆动从动件凸轮设计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.4f mm \n',rb)fprintf (1,' 滚子半径 rt = %3.4f mm \n',rt)fprintf (1,' 起始角度 q0= %3.4f mm \n',q0)fprintf (1,' 最大摆动角度 qm = %3.4f mm \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);for f = 1 : ftif f <= 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;for f = 1 : ftif atd(f) > atmatm = atd(f);endendfprintf (1,' 最大压力角 atm = %3.4f 度\n',atm)for f = 1 : ftif abs(atd(f) - atm) < 0.1ftm = f;breakendendfprintf (1,' 对应的位置角 ftm = %3.4f 度\n',ftm)if atm > alpfprintf (1,' * 凸轮推程压力角超过许用值,需要增大基圆!\n')endptn = rb ;ftn=0;for f = 1 : ftif pt(f) < ptnptn = pt(f);endendfprintf (1,' 轮廓最小曲率半径 ptn = %3.4f mm\n',ptn)for f = 1 : ftif abs(pt(f) - ptn) < 0.1ftn = f;breakendendfprintf (1,' 对应的位置角 ftn = %3.4f 度\n',ftn)if ptn < rt + 5fprintf (1,' * 凸轮推程轮廓曲率半径小于许用值,需要增大基圆或减小滚子!\n') enddisp ' 1-2 回程(等加速等减速运动)'s = zeros(fh);ds = zeros(fh);d2s = zeros(fh);ah = zeros(fh);ahd = zeros(fh);ph = zeros(fh);for f = d1 : d2k = f - d1;if k<=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;for f = 1 : ftif atd(f) > atmatm = atd(f);endendfprintf (1,' 最大压力角 atm = %3.4f 度\n',atm)for f = 1 : ftif abs(atd(f) - atm) < 0.1ftm = f;breakendendfprintf (1,' 对应的位置角 ftm = %3.4f 度\n',ftm)if atm > alpfprintf (1,' * 凸轮推程压力角超过许用值,需要增大基圆!\n')endptn = rb ;ftn=0;for f = 1 : ftif pt(f) < ptnptn = pt(f);endendfprintf (1,' 轮廓最小曲率半径 ptn = %3.4f mm\n',ptn)for f = 1 : ftif abs(pt(f) - ptn) < 0.1ftn = f;breakendendfprintf (1,' 对应的位置角 ftn = %3.4f 度\n',ftn)if ptn < rt + 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);for f = 1 : nif f <= ft/2s(f)=2*(qm/ft^2)*f^2;s = s(f);ds(f)=(qm/ft^2)*f;ds = ds(f);elseif f > ft/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);elseif f > ft & f <= d1s = qm;ds = 0;elseif f > d1 & 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);elseif f>(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);elseif f > d2 & 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'for f = 10 : 10 :ftnu = [f xx(f) yy(f) xp(f) yp(f)];disp(nu)enddisp ' 2-2 回程(等加速/等减速运动)'disp ' 凸轮转角理论x 理论y 实际x 实际y'for f = d1 : 10 : d2nu = [f xx(f) yy(f) xp(f) yp(f)];disp(nu)enddisp ' 2-3 凸轮轮廓向径'disp ' 凸轮转角理论r 实际r'for f = 10 : 10 : nnu = [f r(f) rp(f)];disp(nu)enddisp '绘制凸轮的理论轮廓和实际轮廓:'plot(xx,yy,'r-.') % 理论轮廓(红色,点划线)axis ([-(150) (150) -(150) (150)]) % 横轴和纵轴的下限和上限 axis equal % 横轴和纵轴的尺度比例相同text(50,0,'X') % 标注横轴text(0,50,'Y') % 标注纵轴text(-5,5,'O') % 标注直角坐标系原点title('摆动从动件盘形凸轮设计') % 标注图形标题hold on; % 保持图形plot([-(rb) (rb)],[0 0],'k') % 横轴(黑色)plot([0 0],[-(rb) (rb+rt)],'k') % 纵轴(黑色)ct = linspace(0,2*pi); % 画圆的极角变化范围 plot(rb*cos(ct),rb*sin(ct),'g') % 基圆(绿色)plot(xp,yp,'b') % 实际轮廓(蓝色)。

相关主题