MATLAB之机械原理之解析法之直角坐标法之曲柄摇杆机构运动仿真设计

通用matlab设计一个曲柄摇杆机构,该程序主要依据机械原理解析法中的直角坐标法设计,(位移矩阵法还在研究,感觉更难),并作出运动仿真效果图。

给定设计参数:

需要实现的动画效果大致如下:

曲柄摇杆设计参数

其中A,D处为固定铰链,初始Lab与水平为60°(pi/3)夹角。点A位置设定为(0,0),点D位置设定为(80,0),运动方向为Lab绕着A点匀速转动。各杆长度如图所示,且符合杆长条件(最短杆+最长杆=<中间两杆长),Lab为曲柄,Lcd为摇杆。

设计思路:

通过机械原理对机构设计的解析法里面的直角坐标法为设计方法。

已知A的坐标和D的坐标,且不发生改变,需求B的坐标(Xb,Yb),和C的坐标(Xc,Yc)

通过A点坐标以及Lab杆长不变,列出B点关于A点的位置方程。   

Xb(i)=Xa+Lab*cos(M(i));//其中Xb(i)代表绕A点转动过程中到不同位置的坐标
Yb(i)=Ya+Lab*sin(M(i)); //其中Yb(i)代表绕A点转动过程中到不同位置的坐标

再通过Lbc杆长不变和Lcd杆长不变列出C的两个独立方程(两个方程两个未知数(Xc,Yc))

 eq1=(a-Xd).^2+(b-Yd).^2-Lcd.^2;
eq2=(a-Xb(q)).^2+(b-Yb(q)).^2-Lbc.^2;

其中a,b为设定的两个未知数,代表在某一确定位置下,C点的位置信息,但具体C点坐标的确定还要进行其他一些操作,因为C是不断变化的,总的位置信息通过一个矩阵记录。还不排除方程得出多解的情况,要在进行分析处理。

最后得到相关全部的位置信息后,进行绘图处理,通过clf;getframe;moviein;将画面每一帧连续的播放后删除再播放,实现动画效果,具体见编程。

具体编程:

syms a b;

Xa=0;
Ya=0;    
Xb=zeros(1,126);
Yb=zeros(1,126);
Xc=zeros(1,126);
Yc=zeros(1,126);
Xd=80;
Yd=0;

Lab=40;
Lbc=70;
Lcd=60;

Wa=0.05;
theatA=pi/3;
f=1:1:126;
M=zeros(1,126);
M(f)=theatA+Wa*(f-1);

上述代码中设定了具体的参数,并且将B,C的位置信息提前设定为1×126的零矩阵(126是因为设定Lab转动角速度为0.05rad/s,经过试验转一圈会有126个解,提前设定为1×126的零矩阵是因为可以提高迭代的运行效率,具体原因有待研究)。M(f)是记录Lab转动时不同位置的角度信息。

for i=1:1:126

    Xb(i)=Xa+Lab*cos(M(i));
    Yb(i)=Ya+Lab*sin(M(i)); 

end

上述代码通过for循环,求解出转动到这126个位置时,B的位置信息,并依次带入到B的位置矩阵中,实现对B位置信息的确定。且方程没有多解情况。


for q=1:1:126
 eq1=(a-Xd).^2+(b-Yd).^2-Lcd.^2;
eq2=(a-Xb(q)).^2+(b-Yb(q)).^2-Lbc.^2;
[A,B]=solve([eq1==0,eq2==0],[a,b]);
Xc(q)=real(A(2));

Yc(q)=real(B(2));

end
上述代码通过设定a,b两个未知数,来记录一个位置中的C的位置信息,使用solve来进行求解,后将a,b的信息依次带入C的位移矩阵之中。需要注意的是,也是困扰了我很久的是,联立方程进行求解时,得到a,b会有多解的情况,数学上理解是因为有平方存在,求解时会有正和负两种情况,在机械四杆机构中理解,则是会出现BC杆位于AD下方的情况

 figure(1)
v=moviein(100);


for w=1:1:126
    clf;   
    hold on
    plot(Xa,Ya,'*r',Xb(w),Yb(w),'*g')
    line([Xa,Xb(w)],[Ya ,Yb(w)]);
    plot(Xb(w),Yb(w),'*',Xc(w),Yc(w),'*')
    line([Xb(w),Xc(w)],[Yb(w),Yc(w)]);
    plot(Xd,Yd,'*r',Xc(w),Yc(w),'*g')
    line([Xd,Xc(w)],[Yd ,Yc(w)]);
 
    axis([-80 160 -80 160])
 v(w)=getframe;

end
 grid
  movie(v)
 hold off
上述代码为绘图具体程序,不做具体分析,可通过查询函数用法自行领悟

运行结果:

实现给定的设计要求,并成功得到运动仿真动画。

曲柄摇杆机构运动仿真

拓展思考:

通过改变设定的参数,包括各杆长信息,初始角度,角速度,A,D位置,以及选取a,b中另一组解作为C点坐标等等,此程序也可以设计为其他参数的曲柄摇杆机构,但如果想以此设计其他如双曲柄机构,貌似会出现一些点连续失效甚至突变的情况,暂时没有解决方法,需要后续研究。

是否可以通过matlab的gui设计成一个曲柄摇杆生成器,貌似也可行,有待后续研究,若有成果,再与大家交流。

本人学习MATLAB时间较短,许多程序还不清楚具体注意事项,肯定存在比我所写的程序更方便效率更高的程序,如果读者对此有兴趣,欢迎对我所写的代码提出建议与优化步骤,感谢

  • 31
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值