matlab解析法画凸轮轮廓线

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

班级:姓名:学号:

基于matlab的凸轮轮廓设计

一、设计凸轮机构的意义

在工业生产中,经常要求机器的某些部件按照规定的准确路线运动,仅应用连杆机构已难以满足这个要求,所以需要利用工作表面具有一定形状的凸轮。凸轮在所有基本运动链中,具有易于设计和能准确预测所产生的运动的优点。如果设计其他机构来产生给定的运功、速度、和加速度,其设计工作是很复杂的,但是设计凸轮机构则比较容易,而且运动准确、有效。所以在许多机器中,如纺织机、包装机、自动机床、自动化专用机床、数控机床、印刷机、内燃机、建筑机械、矿山机械、计算机的辅助装备及农业机具等,都可以找到凸轮机构。

在进行研究时,先设计一个简单的凸轮,在给定的旋转角度内有一定的总升距。设计凸轮轮廓的基本方法是把凸轮固定,使从动件以其与凸轮的相关位置绕凸轮回转而形成凸轮轮廓。因此设计凸轮时,必须画出足够多的点,使凸轮轮廓平滑可靠。

Matlab软件提供了强大的矩阵处理和绘图功能,具有核心函数工具箱。其编程代码接近数学推导公式,简洁直观,操作简易,人机交互性能好。因此,基于matlab软件进行凸轮机构的设计可以解决设计工作量大的问题。运用解析法进行设计,matlab可以精确的计算出轮廓上每一点的坐标,然后更为精确的绘制出凸轮轮廓曲线。

二、设计凸轮机构的已知条件

凸轮做逆时针方向转动,从动件偏置在凸轮轴心右边。从动件在推程做等加/减速运动,在回程做余弦加速运动。基圆半径rb=50mm,滚子半径rt=10mm,推杆偏距e=10mm,推程升程h=50mm,推程运动角ft=100º,远休止角fs=60º,回程运动角fh=90º。

三、分析计算

1、建立坐标系

以凸轮轴心为坐标原点建立平面直角坐标系XOY,取杆件上升方向为Y轴正方向。

2、推杆运动规律计算

凸轮运动一周可分为5个阶段:推程加速阶段、推程减速阶段、远休止阶段、回程阶段、进休止阶段。

根据已知条件,推程阶段为等加/减速,故推程阶段的运动方程为:

推程加速阶段(0~f t/2)

{s(f)=

2∗ℎ∗f2

f

t

2

v(f)=ds(f)=4∗ℎ∗f

f

t

2

推程减速阶段(f t/2~f t)

{

s(f)=ℎ−

2∗ℎ∗(f t−f)2

f

t

2

v(f)=ds(f)=

4∗ℎ∗(f t−f)

f

t

2

远休止阶段(f t~(f t+f s))推杆运动方程为

{s(f)=0

v(f)=ds(f)=0

根据已知条件,在回程做余弦加速运动,因此回程阶段((f t+f s)~(f t+f s+fℎ))的运动方程为

{s(f)=

ℎ∗[1+cos(

π∗(f−f t−f s)

fℎ)]

2

v(f)=ds(f)=−π∗ℎ∗sin(

π∗(f−f t−f s)

fℎ)

2∗fℎ

近休止阶段((f t+f s+fℎ)~360°)的运动方程为

{s(f)=0

v(f)=ds(f)=0 3、凸轮理论轮廓线计算

{x(f)=[s e+s(f)]∗sin(f)+e∗cos(f) y(f)=[s e+s(f)]∗cos(f)−e∗sin(f)

式中s e=√r b2−e2,为推杆滚子中心到X轴的垂直距离。

4、实际轮廓线计算根据3的计算结果有

{dx(f)=(ds(f)−e)∗sin(f)+(s e+s(f))∗cos(f)

dy(f)=(ds(f)−e)∗cos(f)−(s e+s(f))∗sin(f)可得

{sin(k)=

dx(f)

√dx2+dy2

cos(k)=−

dy(f)√dx2+dy2

凸轮实际轮廓线为

{xp(f)=x(f)−r∗cos(k) yp(f)=y(f)−r∗sin(k)

四、程序代码

rb = 50;

rt = 10;

e = 10;

h = 50;

ft = 100;

fs = 60;

fh = 90;

hd= pi / 180;

du = 180 / pi;

se=sqrt( rb^2 - e^2 );

d1 = ft + fs;

d2 = ft + fs + fh;

n = 360;

s = zeros(n);

ds = 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);

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);

相关文档
最新文档