cmxsn 发表于 2014-12-20 21:13:57

平面直动滚子凸轮设计,附算法

目的:设计一个平面凸轮的外轮廓
如下图,从动件为滚针轴承,带导轨,需要确定基圆直径,和升程曲线。
(参考书籍:凸轮算法,80年代的国产货,我也不知道书名;另一本,英文:cam design handbook)


凸轮升程曲线要求运动尽可能平滑,就是加速度平滑,这样电机寿命长,当前比较好的是7段组合式加速度曲线(参考书1),如图,我们知道总升程h,总角度,需要通过计算得出每一段的加速度,速度,和行程(升程)的表达式,进而计算并绘制凸轮外轮廓。

公式如下

因为是举升,重力向下,我们希望加速段比较长,减速段比较短,就是加速段的角度比减速段的多

于是我们需要一个程序,输入角度和升程,以及加减速段的比值,输出每个角度对应的升程数值;
部分程序如下(MATLAB):
rb=45;rt=31;e=0;h=85;
%推程运动角;远休止角;回程运动角;近休止角;推程许用压力角;凸轮转速
ft=155;fs=20;fh=155;fx=30;alpha_p=35;n=60;
%角度和弧度转换系数;机构尺度
hd=pi/180;du=180/pi;se=sqrt(rb^2-e^2);
w=n*2*pi/60; omega=w*du;         % 凸轮角速度(°/s)
p=3; % 加速段角度和减速段角度比值
for f=1:ft
    if (0<=f&&f<=1/4*p/(1+p)*ft)
      %s(f)=0.09724613*h*(4*f/ft-1/pi*sin(4*pi*f/ft));sxs=s(f);   
      s(f)=2*p/(1+p)*h/(2+pi)*(2*f/(2*p/(1+p)*ft)-1/2/pi*sin(4*pi*f/(2*p/(1+p)*ft)));sxs=s(f);
      ds(f)=0.3889845*(2*p/(1+p)*h)/(2*p/(1+p)*ft)*(1-cos(4*pi*f/(2*p/(1+p)*ft)));sxds=ds(f);
      d2s(f)=4.888124*(2*p/(1+p)*h)/(2*p/(1+p)*ft)^2*sin(4*pi*f/(2*p/(1+p)*ft));sxd2s=d2s(f);   
    end
    if (1/4*p/(1+p)*ft<f&&f<=3/4*p/(1+p)*ft)
      %s(f)=(p/(1+p)*h)*(2.444016188*(f/ft)^2-0.22203094*f/ft+0.00723406);sxs=s(f);
      s(f)=(2*p/(1+p)*h)/(2+pi)*(1/4-1/2/pi+2/(2*p/(1+p)*ft)*(f-(2*p/(1+p)*ft)/8)+4*pi/(2*p/(1+p)*ft)^2*(f-(2*p/(1+p)*ft)/8)^2);sxs=s(f);
      ds(f)=(2*p/(1+p)*h)/(2*p/(1+p)*ft)*(4.888124*f/(2*p/(1+p)*ft)-0.222031);sxds=ds(f);
      d2s(f)=4.888124*(2*p/(1+p)*h)/(2*p/(1+p)*ft)^2;sxd2s=d2s(f);   
    end
    if (3/4*p/(1+p)*ft<f&&f<=4/4*p/(1+p)*ft)
      %s(f)=(p/(1+p)*h)*(1.6110155*f/ft-0.0309544*sin(4*pi*f/ft)-0.3055077);sxs=s(f);
      s(f)=(2*p/(1+p)*h)/(2+pi)*(-pi/2+2*(1+pi)*f/(2*p/(1+p)*ft)+1/2/pi*sin(4*pi*f/(2*p/(1+p)*ft)));sxs=s(f);
      ds(f)=(2*p/(1+p)*h)/(2*p/(1+p)*ft)*(1.6110155+0.3889845*cos(4*pi*f/(2*p/(1+p)*ft)));sxds=ds(f);
      d2s(f)=-4.888124*(2*p/(1+p)*h)/(2*p/(1+p)*ft)^2*sin(4*pi*f/(2*p/(1+p)*ft));sxd2s=d2s(f);   
   end
上面的程序最终会计算出,在1-155度中,每一度变化对应的升程数值s;速度ds;加速度d2s。
最终效果(把计算的点给autocad画图)我不用担心睡不着觉了。


有兴趣的可以一起聊这个曲线。
附书1的部分目录,可以帮助找到同一本书






fmdd 发表于 2014-12-20 23:45:33

”当前比较好的是7段组合式加速度曲线“

为何是这种曲线?

我喜欢用正弦余弦曲线,我的速度比较慢

机械汪双洋 发表于 2014-12-21 10:55:53

谢谢

阳光MAN 发表于 2014-12-21 11:44:25

晚上回家试一下

hoot6335 发表于 2014-12-21 18:52:17

本帖最后由 hoot6335 于 2014-12-21 21:42 编辑

哈哈,大侠用的是标准的修正梯形再变形。
按照机构的设定“ft=155;fs=20;fh=155;fx=30;alpha_p=35;n=60”。
“p=3; % 加速段角度和减速段角度比值”。表述不严谨,会误解。
因为推程和回程都有加速段和减速段。

实际上,“加速度是时间的函数”这样理解更合适。
为了达到“我们希望加速段比较长,减速段比较短,就是加速段的角度比减速段的多;”这一目的
设定一个系数=p/(1+p),那么:
推程:用的是1/4 *系数 ,3/4*系数 ,   1*系数。
回程:没下载大侠的程序,由于上面的误解,不好妄下结论。
按我的理解,推程取一系列T值,回程再取一系列T值,完全可以实现LZ的设计目的。

另外,大侠的程序好像没有体现文中所说“7段组合”。不知大侠能否把各曲线补齐。
要求过分了点,哈哈:lol
给个建议,不等式两边可以约去“*p/(1+p)*ft”,把“f&&f”改成时间T,不要用角度。这样,你的程序将有极大的通用性。

对应的中文目录

739046455 发表于 2014-12-25 09:07:16

感谢分享啊

georgemcu 发表于 2015-11-5 19:55:26

本帖最后由 georgemcu 于 2015-11-5 19:58 编辑

hoot6335 发表于 2014-12-21 18:52 static/image/common/back.gif
哈哈,大侠用的是标准的修正梯形再变形。
按照机构的设定“ft=155;fs=20;fh=155;fx=30;alpha_p=35;n=60”。 ...
Cam design handbook,2011年看过,也受益匪浅。
就是由于看了这本书,让我在那一年完成自己的第一版凸轮设计程序,在11年公司工作需要用的凸轮都可以完成!

上个月由于遇到了凸轮设计的新问题,所以又重新阅读了多本凸轮著作。
不过对凸轮优化,感觉快要抓住了可以还是没有抓住。
意思就是没有透彻。
hoot前辈一个对凸轮曲线的优化应该算是比较精通了吧!

对与那些著作里提到的30几中曲线,上个月,我也是已经全部收纳成功:)
自己做个程序,自己用!
就像你在其他贴中说的一样,自己建的数学模型,自己写的代码,用的放心!
出错,立马查得到!
哈哈!

pacelife 发表于 2015-11-7 17:38:47

盘式凸轮算是比较简单的了,而且也有现成的软件可以使用,复杂的是三维凸轮,这个才是考验功底的

georgemcu 发表于 2015-11-9 21:27:09

pacelife 发表于 2015-11-7 17:38 static/image/common/back.gif
盘式凸轮算是比较简单的了,而且也有现成的软件可以使用,复杂的是三维凸轮,这个才是考验功底的

三维弧面。。。想当初2011年接触分度凸轮indexing的时候,没有看过正规的书籍,就凭网上的几篇论文,硬着头皮去研究,做INDEXING的设计程序,影响中程序做到了可以展开到平面的曲线部分,剩下只能通过手工包覆到凸轮曲面去生成槽,不过还不是弧面,没有读书多可怕,当时真的是犀利糊涂的,呵呵,不过现在也忘记了,有空等我手头上的事处理完,可以去完成我的那部分了

georgemcu 发表于 2015-11-12 18:01:42

问楼主一个问题,里面的公式有自己推导过吗?我今天自己推了一下,发现有一个地方,为什么是 -3/8beta 和 1/2beta,而不是-3/8beta 和 3/8beta, cam design hand book,第63页。具体请见附件!
页: [1] 2
查看完整版本: 平面直动滚子凸轮设计,附算法