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

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

📁 机械原理、设计matlab程序,01-连杆机构的运动设计-1.m__.htm 等
💻 HTM
字号:
<html><head><title>MATLAB.rar 06-凸轮轮廓的设计计算与绘图.m</title>
<LINK href="/inc/read_style.css" type=text/css rel=stylesheet></head>
<body>
<p><a href=http://www.pudn.com>www.pudn.com</a> &gt; <a href="http://www.pudn.com/downloads111/sourcecode/graph/detail461284.html">MATLAB.rar</a> &gt 06-凸轮轮廓的设计计算与绘图.m</p><!-- saved from http://www.pudn.com -->
<script src="/inc/gg_read1.js"></script><BR>
<pre name="code" class="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')                                     % 实际轮廓(蓝色) 
    </pre>
<script src="/inc/gg_read2.js"></script><BR>
<script src="http://s117.cnzz.com/stat.php?id=1236358&web_id=1236358&show=pic" language="JavaScript" charset="gb2312"></script>
</body></html>

⌨️ 快捷键说明

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