圆柱分度凸轮机构设计计算和运动分析.docx

上传人:b****3 文档编号:10759527 上传时间:2023-05-27 格式:DOCX 页数:17 大小:19.99KB
下载 相关 举报
圆柱分度凸轮机构设计计算和运动分析.docx_第1页
第1页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第2页
第2页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第3页
第3页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第4页
第4页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第5页
第5页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第6页
第6页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第7页
第7页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第8页
第8页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第9页
第9页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第10页
第10页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第11页
第11页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第12页
第12页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第13页
第13页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第14页
第14页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第15页
第15页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第16页
第16页 / 共17页
圆柱分度凸轮机构设计计算和运动分析.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

圆柱分度凸轮机构设计计算和运动分析.docx

《圆柱分度凸轮机构设计计算和运动分析.docx》由会员分享,可在线阅读,更多相关《圆柱分度凸轮机构设计计算和运动分析.docx(17页珍藏版)》请在冰点文库上搜索。

圆柱分度凸轮机构设计计算和运动分析.docx

圆柱分度凸轮机构设计计算和运动分析

%圆柱分度凸轮机构设计计算和运动分析

%函数文件1:

绘制凸轮机构运动曲线(zxjs_ydxt.m)

%函数文件2:

整理圆柱分度凸轮轮廓曲面三维坐标数据(zxjs_3Dzb.m)

disp'用键盘输入已知条件:

'

n=input('凸轮转速(r/min)n=');

disp'*机构中心距C:

凸轮轴线z1到转盘轴线z2的距离'

C=input('机构中心距(mm)C=');

disp'*机构基距A:

凸轮轴线z1到转盘基准端面O2x2y2的距离'

A=input('机构基距(mm)A=');

disp'*选择凸轮头数H=1、2、3、4:

'

H=input('凸轮头数H=');

disp'*选择凸轮分度期转角theta_f=120~240度:

'

theta_f=input('凸轮分度期转角(度)theta_f=');

disp'*选择转盘分度数(按照工作机械工位要求)'

I=input('转盘分度数I=');

disp'*选择凸轮分度廓线旋向(左旋L、右旋R):

'

LXX=input('凸轮分度廓线旋向LXX=','s');

%1-圆柱分度凸轮机构运动分析

%凸轮角速度

omega_1=pi*n/30;

%转盘滚子数

z=H*I;

%凸轮停歇期转角

theta_d=360-theta_f;

%转盘分度期转位角

phi_f=360/I;

%机构分度期时间t_f和停歇期时间t_d

hd=pi/180.0;%角度转换为弧度的系数

t_f=theta_f*hd/omega_1;

t_d=theta_d*hd/omega_1;

%机构动停比k和运动系数tau

k=t_f/t_d;

tau=t_f/(t_f+t_d);

%凸轮分度廓线旋向系数

ifLXX=='L'

p=1;

elseifLXX=='R'

p=-1;

end

disp'========圆柱分度凸轮机构基本数据========'

fprintf('凸轮转速n=%3.4fr/min\n',n)

fprintf('机构中心距C=%3.4fmm\n',C)

fprintf('机构基距A=%3.4fmm\n',A)

fprintf('凸轮头数H=%3.0f\n',H)

fprintf('凸轮分度廓线旋向LXX=%s\n',LXX)

fprintf('转盘分度数I=%3.0f\n',I)

fprintf('转盘滚子数z=%3.0f\n',z)

fprintf('凸轮角速度omega_1=%3.4f1/s\n',omega_1)

fprintf('凸轮分度期转角theta_f=%3.4f度\n',theta_f)

fprintf('凸轮停歇期转角theta_d=%3.4f度\n',theta_d)

fprintf('转盘分度期转角phi_f=%3.4f度\n',phi_f)

fprintf('机构分度期时间t_f=%3.4fs\n',t_f)

fprintf('机构停歇期时间t_d=%3.4fs\n',t_d)

fprintf('机构动停比k=%3.4f\n',k)

fprintf('机构运动系数tau=%3.4f\n',tau)

%计算凸轮机构运动参数

bc_theta=1;%转角分度步长1~2度

%转盘分度期采用正弦加速运动规律

i_zxjs=0;

fortheta=0:

bc_theta:

theta_f

i_zxjs=i_zxjs+1;

phi_2=phi_f*hd*(theta/theta_f-sin(2*pi*theta/theta_f)/(2*pi));

omega_2=omega_1*phi_f/theta_f*(1-cos(2*pi*theta/theta_f));

epsilon_2=omega_1^2*2*pi*phi_f/theta_f^2*sin(2*pi*theta/theta_f);

zeta_2=omega_1^3*4*pi^2*phi_f/theta_f^3*cos(2*pi*theta/theta_f);

omega_2_1=omega_2/omega_1;

epsilon_2_1=epsilon_2/omega_1^2;

zxjs(i_zxjs,:

)=[thetaphi_2omega_2epsilon_2zeta_2omega_2_1epsilon_2_1];

end

fprintf('正弦加速运动参数数组行数i_zxjs=%3.0f\n',i_zxjs)

%输出圆柱分度凸轮机构运动参数

['凸轮转角','转盘角位移','角速度','角加速度','跃度','角速度比','角加速度比']

[zxjs(:

1),zxjs(:

2)/hd,zxjs(:

3),zxjs(:

4),zxjs(:

5),zxjs(:

6),zxjs(:

7)]

disp'圆柱分度凸轮机构运动参数的最大值'

Vm=2.00;Am=6.28;Jm=39.5;%正弦加速运动加速运动部分的特征值

omega_2_1_max=Vm*phi_f/theta_f;

omega_2_max=Vm*phi_f/theta_f*omega_1;

epsilon_2_max=Am*phi_f/theta_f^2*omega_1^2;

zeta_2_max=Jm*phi_f/theta_f^3*omega_1^3;

fprintf('最大角速度比omega_2_1_max=%3.4f\n',omega_2_1_max);

fprintf('最大角速度omega_2_max=%3.4f\n',omega_2_max);

fprintf('最大角加速度epsilon_2_max=%3.4f\n',epsilon_2_max);

fprintf('最大跃度zeta_2_max=%3.4f\n',zeta_2_max);

%绘制凸轮机构运动曲线(调用正弦加速绘图M文件:

zxjs_ydxt.m)

zxjs_ydxt(zxjs,hd,theta_f)

%导出fig图形命令:

openfig('YZ200-H1-I16-R_ydxt');

%2-圆柱分度凸轮机构几何尺寸计算

disp'圆柱分度凸轮机构许用压力角一般为30~40度'

alpha_p=input('确定许用压力角(度)alpha_p=');

%转盘节圆半径

Rp_2j=2*C/(1+cos(phi_f*hd/2));%转盘节圆半径计算值

Rp_2=round(Rp_2j+0.5);%对转盘节圆半径计算值四舍五入圆整

%凸轮节圆半径

Rp_1j=Vm*Rp_2*phi_f/theta_f/tan(alpha_p*hd);%凸轮节圆半径计算值

fprintf('凸轮节圆半径计算值Rp_1j=%3.4fmm\n',Rp_1j);

Rp_1=input('确定凸轮节圆半径(mm)Rp_1=');

%转盘滚子中心角

phi_z=360/z;

%转盘滚子半径(fix是朝0方向取整函数)

fprintf('转盘滚子半径最小值Rrmin=%3.4fmm\n',fix(0.4*Rp_2*sin(pi/z)));

fprintf('转盘滚子半径最大值Rrmax=%3.4fmm\n',fix(0.6*Rp_2*sin(pi/z)));

Rr=input('确定滚子半径(mm)Rr=');

%转盘滚子宽度

fprintf('转盘滚子宽度最小值bmin=%3.4fmm\n',fix(Rr));

fprintf('转盘滚子宽度最大值bmax=%3.4fmm\n',fix(1.4*Rr));

b=input('确定滚子宽度(mm)b=');

%转盘滚子与凸轮槽底之间的间隙

fprintf('转盘滚子与凸轮槽底间隙的最小值emin=%3.4fmm\n',fix(0.2*b));

fprintf('转盘滚子与凸轮槽底间隙的最大值emax=%3.4fmm\n',fix(0.4*b));

disp'转盘滚子与凸轮槽底至少取间隙值e=5~10mm'

e=input('确定滚子与凸轮槽底的间隙(mm)e=');

%凸轮定位环面的径向深度

h=b+e;

%凸轮定位环面的外圆直径

Do=2*Rp_1+b;

%凸轮定位环面的内圆直径

Di=Do-2*h;

%凸轮宽度

fprintf('凸轮宽度的最小值Lmin=%3.4fmm\n',fix(2*Rp_2*sin(phi_f*hd/2)));

fprintf('凸轮宽度的最大值Lmax=%3.4fmm\n',fix(2*Rp_2*sin(phi_f*hd/2)+2*Rr));

L=input('确定凸轮宽度(mm)L=');

%转盘的外圆直径

fprintf('转盘外圆直径的最小值D_2min=%3.4fmm\n',2*(Rp_2+Rr));

D_2=input('确定转盘外圆直径(mm)D_2=');

%转盘基准端面到滚子宽度中点的轴向距离

rG=A-Rp_1;

%转盘基准端面到滚子上端面的轴向距离

rO=rG-b/2;

%转盘基准端面到滚子下端面的轴向距离

re=rG+b/2;

%输出圆柱分度凸轮机构几何尺寸计算结果

disp'========圆柱分度凸轮机构几何尺寸========'

fprintf('许用压力角alpha_p=%3.4f度\n',alpha_p);

fprintf('凸轮节圆半径Rp_1=%3.4fmm\n',Rp_1);

fprintf('转盘节圆半径Rp_2=%3.4fmm\n',Rp_2);

fprintf('转盘滚子中心角phi_z=%3.4f度\n',phi_z);

fprintf('滚子半径Rr=%3.4fmm\n',Rr);

fprintf('滚子宽度b=%3.4fmm\n',b);

fprintf('转盘滚子与凸轮槽底间隙e=%3.4fmm\n',e);

fprintf('凸轮定位环面的径向深度h=%3.4fmm\n',h);

fprintf('凸轮定位环面的外圆直径Do=%3.4fmm\n',Do);

fprintf('凸轮定位环面的内圆直径Di=%3.4fmm\n',Di);

fprintf('凸轮宽度L=%3.4fmm\n',L);

fprintf('转盘外圆直径D_2=%3.4fmm\n',D_2);

fprintf('转盘基准端面到滚子上端面的轴向距离rO=%3.4fmm\n',rO);

fprintf('转盘基准端面到滚子宽度中点轴向距离rG=%3.4fmm\n',rG);

fprintf('转盘基准端面到滚子上端面的轴向距离re=%3.4fmm\n',re);

%3-圆柱分度凸轮机构压力角的计算

%1#、2#、3#滚子的起始位置角(单位:

度)

phi0_1=-p*0.5*phi_z;

phi0_2=p*0.5*phi_z;

phi0_3=p*1.5*phi_z;

%计算1#、2#、3#滚子位置角(单位:

度)

phi=zeros(i_zxjs,3);%变量初始化

phi1=phi0_1-p.*zxjs(:

2);%zxjs(:

2)存储转盘角位移phi_2

phi2=phi0_2-p.*zxjs(:

2);

phi3=phi0_3-p.*zxjs(:

2);

phi=[phi1phi2phi3];%行-theta,列-滚子位置角

%转盘节圆半径处的压力角

%机构的角速度比(omega_2/omega_1)—数组zxjs(:

6)

alpha_fz=Rp_2.*zxjs(:

6);%计算压力角的分子数组

alpha_fm_1=C-Rp_2.*cos(phi(:

1));%计算1#滚子压力角的分母数组

alpha_1=atan2(alpha_fz,alpha_fm_1);

alpha_fm_2=C-Rp_2.*cos(phi(:

2));%计算2#滚子压力角的分母数组

alpha_2=atan2(alpha_fz,alpha_fm_2);

alpha_fm_3=C-Rp_2.*cos(phi(:

3));%计算3#滚子压力角的分母数组

alpha_3=atan2(alpha_fz,alpha_fm_3);

%绘制转盘节圆半径处与1#、2#、3#滚子相啮合的压力角变化线图

figure

(2);

subplot(3,1,1);

plot(zxjs(:

1),alpha_1/hd);

title('转盘节圆半径处与1号滚子相啮合的压力角变化线图');

grid;

xlabel('凸轮转角\theta(^。

)');

ylabel('机构压力角\alpha(^。

)');

subplot(3,1,2);

plot(zxjs(:

1),alpha_2/hd)

title('转盘节圆半径处与2号滚子相啮合的压力角变化线图');

grid;

xlabel('凸轮转角\theta(^。

)');

ylabel('机构压力角\alpha(^。

)');

subplot(3,1,3);

plot(zxjs(:

1),alpha_3/hd);

title('转盘节圆半径处与3号滚子相啮合的压力角变化线图');

grid;

xlabel('凸轮转角\theta(^。

)');

ylabel('机构压力角\alpha(^。

)');

%保存的fig图形可以用openfig('YZ200-H1-I16-R_ylj123')命令导出

%转盘节圆半径处与1号滚子相啮合的最大压力角

alpha_1_max=max(alpha_1)/hd;

theta_alpha_1=[zxjs(:

1),alpha_1/hd];%合成凸轮转角和对应压力角数组

theta_1m_xh=find(theta_alpha_1(:

2)==alpha_1_max);%查找最大压力角对应凸轮转角数列的序号

theta_1m=theta_alpha_1(theta_1m_xh,1);

fprintf('转盘节圆半径处与1号滚子相啮合的最大压力角alpha_1_max=%3.4f度\n',alpha_1_max);

fprintf('与最大压力角对应的凸轮转角值theta_1m=%3.4f度\n',theta_1m);

ifalpha_1_max<=alpha_p

disp'*转盘节圆半径处与1号滚子相啮合的最大压力角小于许用压力角'

else

disp'*转盘节圆半径处与1号滚子相啮合的最大压力角大于许用压力角'

end

%转盘节圆半径处与2号滚子相啮合的最大压力角

alpha_2_max=max(alpha_2)/hd;

theta_alpha_2=[zxjs(:

1),alpha_2/hd];

theta_2m_xh=find(theta_alpha_2(:

2)==alpha_2_max);

theta_2m=theta_alpha_2(theta_2m_xh,1);

fprintf('转盘节圆半径处与2号滚子相啮合的最大压力角alpha_2_max=%3.4f度\n',alpha_2_max);

fprintf('与最大压力角对应的凸轮转角值theta_2m=%3.4f度\n',theta_2m);

ifalpha_2_max<=alpha_p

disp'*转盘节圆半径处与2号滚子相啮合的最大压力角小于许用压力角'

else

disp'*转盘节圆半径处与2号滚子相啮合的最大压力角大于许用压力角'

end

%转盘节圆半径处与3号滚子相啮合的最大压力角

alpha_3_max=max(alpha_3)/hd;

theta_alpha_3=[zxjs(:

1),alpha_3/hd];

theta_3m_xh=find(theta_alpha_3(:

2)==alpha_3_max);

theta_3m=theta_alpha_3(theta_3m_xh,1);

fprintf('转盘节圆半径处与3号滚子相啮合的最大压力角alpha_3_max=%3.4f度\n',alpha_3_max);

fprintf('与最大压力角对应的凸轮转角值theta_2m=%3.4f度\n',theta_3m);

ifalpha_3_max<=alpha_p

disp'*转盘节圆半径处与3号滚子相啮合的最大压力角小于许用压力角'

else

disp'*转盘节圆半径处与3号滚子相啮合的最大压力角大于许用压力角'

end

%输出与凸轮转角对应的:

转盘角位移,转盘1#、2#、3#滚子位置角,转盘节圆半径处的压力角(单位:

度)

['凸轮转角','转盘角位移','1#位置角','2#位置角','3#位置角','1#压力角','2#压力角','3#压力角']

[zxjs(:

1),zxjs(:

2)/hd,phi(:

1),phi(:

2),phi(:

3),alpha_1/hd,alpha_2/hd,alpha_3/hd]

%4-圆柱分度凸轮轮廓曲面三维坐标计算

%1)计算滚子圆柱面啮合点的三维坐标值(x2,y2,z2)

bc_r=1;%滚子圆柱面参数r的步长1~2mm

r=rO:

bc_r:

re;%r是滚子圆柱面啮合点到转盘基准面的距离

kr=re-rO+1;%单列r数组的行数

%变量初始化—三维数组(凸轮转角0:

i_zxjs,滚子曲面参数1:

kr,滚子序号1:

3)

%第三维数作为数据平面(plane),存储顺序是:

第1个plane,第2个plane,...

Phi=zeros(i_zxjs,kr,3);x2=zeros(i_zxjs,kr,3);y2=zeros(i_zxjs,kr,3);z2=zeros(i_zxjs,kr,3);

%凸轮转角theta=0~theta_f的每一个分度值,对应一系列滚子圆柱面参数r值(r=rO~re)

%根据凸轮与滚子共轭接触方程式计算啮合角Phi

i=0;

fortheta=0:

bc_theta:

theta_f%外循环变量-凸轮转角分度值

i=i+1;

forj=1:

kr%中循环变量-滚子圆柱面参数

fork=1:

3%内循环变量-1#、2#和3#滚子

%1#、2#和3#滚子的啮合角Phi

Phi(i,j,k)=atan2(p*(Rp_2*(zxjs(j,6)*hd)/((A-r(j))*cos(phi(i,k)*hd))-tan(phi(i,k)*hd)),C);

%滚子圆柱面啮合点的三维坐标值(x2,y2,z2)

x2(i,j,k)=Rp_2+Rr*cos(Phi(i,j,k));

y2(i,j,k)=sin(Phi(i,j,k));

z2(i,j,k)=-r(j);

end

end

end

%2)计算圆柱分度凸轮轮廓曲面三维坐标值(x1,y1,z1)

%变量初始化—三维数组(凸轮转角0:

i_zxjs,滚子曲面参数1:

kr,滚子序号1:

3)

x1=zeros(i_zxjs,kr,3);y1=zeros(i_zxjs,kr,3);z1=zeros(i_zxjs,kr,3);

i=0;

fortheta=0:

bc_theta:

theta_f%外循环变量-凸轮转角分度值

i=i+1;

forj=1:

kr%中循环变量-滚子圆柱面参数

fork=1:

3%内循环变量-1#、2#和3#滚子

%凸轮轮廓曲面三维坐标值(x1,y1,z1)

x1(i,j,k)=(x2(i,j,k)*cos(phi(i,k)*hd)+p*y2(i,j,k)*sin(phi(i,k)*hd)-C)*cos(theta*hd)+(z2(i,j,k)+A)*sin(theta*hd);

y1(i,j,k)=(-x2(i,j,k)*cos(phi(i,k)*hd)-p*y2(i,j,k)*sin(phi(i,k)*hd)+C)*cos(theta*hd)+(z2(i,j,k)+A)*sin(theta*hd);

z1(i,j,k)=p*x2(i,j,k)*sin(phi(i,k)*hd)-y2(i,j,k)*cos(phi(i,k)*hd);

end

end

end

'========输出圆柱分度凸轮轮廓曲面三维坐标值(x1,y1,z1)========'

theta=input('*选择需要输出轮廓曲面三维坐标值对应的凸轮转角(度)theta=');

['滚子参数','1#滚子对应的凸轮廓面三维坐标','2#滚子对应的凸轮廓面三维坐标','3#滚子对应的凸轮廓面三维坐标']

['r','1#-x1','1#-y1','1#-z1','2#-x1','2#-y1','2#-z1','3#-x1','3#-y1','3#-z1']

[r',x1(theta,:

1)',y1(theta,:

1)',z1(theta,:

1)',x1(theta,:

2)',y1(theta,:

2)',z1(theta,:

2)',x1(theta,:

3)',y1(theta,:

3)',z1(theta,:

3)']

%3)将圆柱分度凸轮轮廓曲面三维坐标存储为mat数据文件(在work工作空间)

xyz1_1=[x1(:

:

1),y1(:

:

1),z1(:

:

1)];%1#滚子对应的凸轮廓面三维坐标

xyz1_2=[x1(:

:

2),y1(:

:

2),z1(:

:

2)];%2#滚子对应的凸轮廓面三维坐标

xyz1_3=[x1(:

:

3),y1(:

:

3),z1(:

:

3)];%3#滚子对应的凸轮廓面三维坐标

%存储命令save()格式如下(数据文件名和数组名需要用单撇号括起来,中间用逗号分隔)

save('YZ200-H1-I16-R_三维坐标','xyz1_1','xyz1_2','xyz1_3');

%导入mat数据文件命令:

load('YZ200-H1-I16-R_三维坐标','xyz1_1','xyz1_2','xyz1_3');

%在命令窗口:

File/ImportData...,打开数据输入导向窗口ImportWizard中显示数据文件的三个数组xyz1_1,xyz1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2