• 大小: 9KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-07-19
  • 语言: Matlab
  • 标签: MATLAB  

资源简介

本MATLAB程序实现偏置移动从动件盘形凸轮的设计绘图和运动分析,包含计算过程和输出结果、推程及回程的位移线图、速度线图、加速度线图。

资源截图

代码片段和文件信息

%  ******** 偏置移动从动件盘形凸轮设计绘图和运动分析 ********
disp ‘                ######## 已知条件 ########‘
disp ‘      凸轮作逆时针方向转动从动件偏置在凸轮轴心的右边‘
disp ‘      从动件在推程作等加速/等减速运动在回程作余弦加速度运动‘
%  基圆半径;滚子半径;从动件偏距;从动件升程
rb=22;rt=5;e=10;h=30;
%  推程运动角;远休止角;回程运动角;推程许用压力角;凸轮转速
ft=140;fs=20;fh=120;alpha_p=20;n=200;
%  角度和弧度转换系数;机构尺度
hd=pi/180;du=180/pi;se=sqrt(rb^2-e^2);
w=n*pi/30; omega=w*du;         % 凸轮角速度(°/s)
fprintf(‘          基圆半径               rb = %3.4f mm \n‘rb)
fprintf(‘          滚子半径               rt = %3.4f mm \n‘rt)
fprintf(‘          推杆偏距                e = %3.4f mm \n‘e)
fprintf(‘          推程升程                h = %3.4f mm \n‘h)
fprintf(‘          推程运动角             ft = %3.4f 度 \n‘ft)
fprintf(‘          远休止角               fs = %3.4f 度 \n‘fs)
fprintf(‘          回程运动角             fh = %3.4f 度 \n‘fh)
fprintf(‘          推程许用压力角    alpha_p = %3.4f 度 \n‘alpha_p)
fprintf(‘          凸轮转速                n = %3.4f r/min \n‘n)
fprintf(‘          凸轮角速度(弧度)        w = %3.4f rad/s \n‘w)
fprintf(‘          凸轮角速度(度)      omega = %3.4f 度 /s \n‘omega)
disp ‘  ‘
disp ‘             @@@@@@  计算过程和输出结果  @@@@@@‘
disp ‘  ‘
%  (1)---校核凸轮机构的压力角和轮廓曲率半径‘
disp ‘         *** 计算凸轮理论轮廓的压力角和曲率半径 ***‘
disp ‘                 1 推程(等加速/等减速运动)‘
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);
        vt(f)=4*h*omega*f/ft^2;                  % 等加速-速度方程
    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);
        vt(f)=4*h*omega*(ft-f)/ft^2;             % 等减速-速度方程
    end
    alpha_t(f)=atan(abs(ds-e)/(se+s));           % 推程压力角(弧度)
    alpha_td(f)=alpha_t(f)*du;                   % 推程压力角(度)
    pt1=((se+s)^2+(ds-e)^2)^1.5;
    pt2=abs((se+s)*(d2s-se-s)-(ds-e)*(2*ds-e));
    rho_t(f)=pt1/pt2;                            % 推程曲率半径
    st(f)=s;
end
alpha_tm=max(alpha_td);
fprintf(‘            推程最大压力角 alpha_tm = %3.4f 度\n‘alpha_tm)
for f=1:ft
     if alpha_td(f)==alpha_tm;ftm=f;break;end
end
fprintf (‘              对应的位置角      ftm = %3.4f 度\n‘ftm)
if alpha_tm>alpha_p 
    fprintf(‘            * 凸轮推程压力角超过许用值需要增大基圆!\n‘)
end
rho_tn = min(rho_t);
fprintf (‘              最小曲率半径   rho_tn = %3.4f mm\n‘rho_tn)
for f=1:ft
     if rho_t(f)==rho_tn;ftn=f;break;end
end
fprintf(‘              对应的位置角      ftn = %3.4f 度\n‘ftn)
if rho_tn    fprintf(‘   * 凸轮推程轮廓曲率半径小于许用值需要增大基圆或减小滚子!\n‘)
end 
disp ‘                 2 回程(余弦加速度运动-简谐运动)‘
d1=ft+fs;d2=ft+fs+fh;                            % 回程运动角范围
for f=d1:d2
    k=f-d1;
    s(f)=0.5*h*(1+cos(pi*k/fh));s=s(f);          % 简谐运动-位移方程
    ds(f)=-0.5*pi*h*sin(pi*k/fh)/(fh*hd);ds=ds(f);
    d2s(f)=-0.5*pi^2*h*cos(pi*k/fh)/(fh*hd)^2;d2s=d2s(f);
    alpha_h(f)=atan(abs(ds+e)/(se+s));           % 回程压力角(弧度)
    alpha_hd(f)=alpha_h(f)*du;                   % 回程压力角(度)
    

评论

共有 条评论