⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 06-凸轮轮廓的设计计算与绘图.m

📁 MATLAb 机械源码文件好东西啊
💻 M
字号:
    disp '    ******** 偏置移动从动件盘形凸轮设计 ********'
    disp '已知条件:'
    disp '      凸轮作逆时针方向转动,从动件偏置在凸轮轴心的右边'
    disp '      从动件在推程作等加速/等减速运动,在回程作余弦加速度运动'
    rb = 40;rt = 10;e = 15;h = 50;ft = 100;fs = 60;fh = 90;alp = 35;
    fprintf (1,'  基圆半径          rb = %3.4f mm \n',rb)
    fprintf (1,'  滚子半径          rt = %3.4f mm \n',rt)
    fprintf (1,'  推杆偏距           e = %3.4f mm \n',e)
    fprintf (1,'  推程升程           h = %3.4f mm \n',h)
    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;
    se=sqrt( rb^2 - e^2 );
    d1 = ft + fs;d2 = ft + fs + fh;
    disp '  '
    disp '计算过程和输出结果:'
    disp '  1-  计算凸轮理论轮廓的压力角和曲率半径'
    disp '    1-1 推程(等加速/等减速运动)'
    s = zeros(ft);ds = zeros(ft);d2s = zeros(ft);
    at = zeros(ft);atd = zeros(ft);pt = zeros(ft);
    for f = 1 : ft
       if f <= ft / 2 
          s(f)=2 * h * f ^ 2 / ft ^ 2;s = s(f);
          ds(f)=4 * h * f * hd / (ft * hd) ^ 2;ds = ds(f);
          d2s(f)=4 * h / (ft * hd) ^ 2;d2s = d2s(f);
       else
          s(f)=h - 2 * h * (ft - f) ^ 2 / ft ^ 2;s = s(f);
          ds(f)=4 * h * (ft - f) * hd / (ft * hd) ^ 2;ds = ds(f);
          d2s(f)=-4 * h / (ft * hd) ^ 2;d2s = d2s(f);
       end
       at(f)= atan(abs(ds - e) / (se + s));atd(f) = at(f) * du;
       p1=((se + s ) ^ 2 + (ds - e) ^ 2) ^ 1.5;
       p2= abs((se + s) * (d2s - se - s) - (ds - e) * (2 * ds - e));
       pt(f)= p1 /p2;p = pt(f); 
    end
    atm = 0;
    for f = 1 : ft
       if atd(f) > atm  
          atm = atd(f);
       end
    end
    fprintf (1,'          最大压力角            atm = %3.4f 度\n',atm)
    for f = 1 : ft
       if abs(atd(f) - atm) < 0.1 
          ftm = f;break
       end
    end
    fprintf (1,'              对应的位置角      ftm = %3.4f 度\n',ftm)
    if atm > alp 
       fprintf (1,'            * 凸轮推程压力角超过许用值,需要增大基圆!\n')
    end
    ptn = rb + h;
    for f = 1 : ft
       if pt(f) < ptn  
          ptn = pt(f);
       end
    end
    fprintf (1,'          轮廓最小曲率半径      ptn = %3.4f mm\n',ptn)
    for f = 1 : ft
       if abs(pt(f) - ptn) < 0.1  
          ftn = f;break
       end
    end
    fprintf (1,'              对应的位置角      ftn = %3.4f 度\n',ftn)
    if ptn < rt + 5 
       fprintf (1,'      * 凸轮推程轮廓曲率半径小于许用值,需要增大基圆或减小滚子!\n')
    end 
    disp '    1-2 回程(余弦加速度运动)'
    s = zeros(fh);ds = zeros(fh);d2s = zeros(fh);
    ah = zeros(fh);ahd = zeros(fh);ph = zeros(fh);
    for f = d1 : d2
       k = f - d1;
       s(f) = .5 * h * (1 + cos(pi * k / fh)); s = s(f);
       ds(f)=-.5 * pi * h * sin(pi * k / fh) / (fh * hd);ds = ds(f);
       d2s(f)= -.5 * pi ^2 * h * cos(pi * k / fh)/(fh * hd) ^2;d2s = d2s(f);
       ah(f)=atan(abs(ds + e) / (se + s));ahd(f) = ah(f) * du;
       p1=((se + s ) ^ 2 + (ds - e) ^ 2) ^ 1.5;
       p2= abs((se + s) * (d2s - se - s) - (ds - e) * (2 * ds - e));
       ph(f)= p1 /p2;p = ph(f);
    end
    ahm = 0;
    for f = d1 : d2
       if ahd(f) > ahm;
          ahm = ahd(f);
       end
    end
    fprintf (1,'          最大压力角            ahm = %3.4f 度\n',ahm)
    for f = d1 : d2
       if abs(ahd(f)- ahm) < 0.1 
          fhm = f;break
       end
    end
    fprintf (1,'              对应的位置角      fhm = %3.4f 度\n',fhm)
    phn = rb + h;
    for f = d1 : d2
       if ph(f) < phn  
          phn = ph(f);
       end
    end
    fprintf (1,'          轮廓最小曲率半径      phn = %3.4f mm\n',phn)
    for f = d1 : d2
       if abs(ph(f) - phn) < 0.1  
          fhn = f;break
       end
    end
    fprintf (1,'              对应的位置角      fhn = %3.4f 度\n',fhn)
    if phn < rt + 5 
       fprintf (1,'      * 凸轮回程轮廓曲率半径小于许用值,需要增大基圆或减小滚子!\n')
    end
    disp '  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 : n
       if f <= ft/2
          s(f) = 2 * h * f ^ 2 / ft ^ 2; s = s(f);
          ds(f) = 4 * h * f * hd / (ft * hd) ^ 2; ds = ds(f);
       elseif f > ft/2 & f <= ft
          s(f) = h - 2 * h * (ft - f) ^ 2 / ft ^ 2; s = s(f);
          ds(f) = 4 * h * (ft - f) * hd / (ft * hd) ^ 2; ds = ds(f);
       elseif f > ft & f <= d1
          s = h;ds = 0;  
       elseif f > d1 & f <= d2
          k = f - d1;         
          s(f) = .5 * h * (1 + cos(pi * k / fh)); s = s(f);
          ds(f)= -.5 * pi * h * sin(pi * k / fh) / (fh * hd); ds = ds(f);
       elseif f > d2 & f <= n
          s = 0;ds = 0;
       end     
       xx(f) = (se + s) * sin(f * hd) + e * cos(f * hd); x = xx(f);
       yy(f) = (se + s) * cos(f * hd) - e * sin(f * hd); y = yy(f);
       dx(f) = (ds - e) * sin(f * hd) + (se + s) * cos(f * hd); dx = dx(f);
       dy(f) = (ds - e) * cos(f * hd) - (se + s) * sin(f * hd); 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 );     
    end
    disp '    2-1 推程(等加速/等减速运动)'
    disp '  凸轮转角    理论x     理论y     实际x     实际y'
    for f = 10 : 10 :ft
       nu = [f xx(f) yy(f) xp(f) yp(f)];
       disp(nu)
    end
    disp '    2-2 回程(余弦加速度运动)'
    disp '  凸轮转角    理论x     理论y     实际x     实际y'
    for f = d1 : 10 : d2
       nu = [f xx(f) yy(f) xp(f) yp(f)];
       disp(nu)
    end
    disp '    2-3 凸轮轮廓向径'
    disp '  凸轮转角    理论r    实际r'
    for f = 10 : 10 : n
       nu = [f r(f) rp(f)];
       disp(nu)
    end
    disp '绘制凸轮的理论轮廓和实际轮廓:'
    plot(xx,yy,'r-.')                                   % 理论轮廓(红色,点划线)
    axis ([-(rb+h-10) (rb+h+10) -(rb+h+10) (rb+rt+10)]) % 横轴和纵轴的下限和上限
    axis equal                                          % 横轴和纵轴的尺度比例相同
    text(rb+h+3,0,'X')                                  % 标注横轴
    text(0,rb+rt+3,'Y')                                 % 标注纵轴
    text(-5,5,'O')                                      % 标注直角坐标系原点
    title('偏置移动从动件盘形凸轮设计')                 % 标注图形标题
    hold on;                                            % 保持图形
    plot([-(rb+h) (rb+h)],[0 0],'k')                    % 横轴(黑色)
    plot([0 0],[-(rb+h) (rb+rt)],'k')                   % 纵轴(黑色)
    plot([e e],[0 (rb+rt)],'k--')                       % 初始偏置位置(黑色,虚线)
    ct = linspace(0,2*pi);                              % 画圆的极角变化范围
    plot(rb*cos(ct),rb*sin(ct),'g')                     % 基圆(绿色)
    plot(e*cos(ct),e*sin(ct),'c--')                     % 偏距圆(蓝绿色,虚线)   
    plot(e + rt*cos(ct),se + rt*sin(ct),'y')            % 滚子圆(黄色)   
    plot(xp,yp,'b')                                     % 实际轮廓(蓝色)
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -