六杆机构运动分析

这篇博客探讨了如何使用MATLAB进行六杆机构的运动分析。在已知机构尺寸和初始条件的情况下,计算了杆5和摇杆3的角位移、角速度和角加速度,并通过编程绘制了运动线图。博主分享了数据存储的方法,并指出结果仅供参考,主要用于学习记录。
摘要由CSDN通过智能技术生成

六杆机构运动分析

原题为:已知改机构尺寸为:AB=0.04m,AC=0.1m,a=0.08,初始角为60,原动件1以n=500rpm,原动件1以n=500rpm的转速逆时针转动,计算杆5和摇杆3的角位移,角速度及角加速度,并绘制出运动线图。题目图
对机构进行计算计算过程
使用matlab对矩阵运算编程

在这里插入代码片close all
clear 
clc
angle=200;
s_3ts=zeros(1,angle);theta3_ts=zeros(1,angle);l_1=0.04;
syms x;x_ts=zeros(3,angle);syms y;y_ts=zeros(3,angle);
for theta1=1:1:angle%运转角度变化可自己更改
    s_3 = sqrt(0.04^2+0.1^2-(cosd(90+theta1)*2*0.04*0.1));
    if theta1>90
        theta3 = 90 + acosd((0.1^2 + s_3^2 - 0.04^2)/(2*0.1*s_3));
    else
        theta3 = 90 - acosd((0.1^2 + s_3^2 - 0.04^2)/(2*0.1*s_3));
    end
    l_3 = 0.18/cosd(90-theta3);
    s_3ts(1,theta1)=s_3;theta3_ts(1,theta1)=theta3;
    
    A=[cosd(theta3), -s_3*sind(theta3), 0 ; 
    sind(theta3), s_3*cosd(theta3), 0;
    0, -l_3*sind(theta3), -1; 
    0, l_3*cosd(theta3), 0];
    %一阶导矩阵
    B=[-l_1*sind(theta1);l_1*cosd(theta1);0;0];
    omega = 1;
    x =A\B;
    x_ts(1,theta1)=x(1,:);
    x_ts(2,theta1)=x(2,:);
    x_ts(3,theta1)=x(3,:);%存储结果
    
    omega3=x(2,1);
    C=[cosd(theta3), -s_3*sind(theta3),0;
        sind(theta3), s_3*cosd(theta3),0;
        0, -l_3*sind(theta3), -1;
        0, l_3*sind(theta3),0];
    D=-[-omega3*sind(theta3), -x(1:1)*sind(theta3)-s_3*omega3*cosd(theta3),0;
        omega3*cosd(theta3), x(1,1)*cosd(theta3)-s_3*omega3*sind(theta3),0;
        0, -l_3*omega3*cosd(theta3),0
        0, -l_3*omega3*sind(theta3),0];
    %二阶导矩阵
    E=[-l_1*cosd(theta1);
        -l_1*sind(theta1)
        0;
        0;];
    y= (D*x+E)\C;y=y';
    y_ts(1,theta1)= y(1,:);
    y_ts(2,theta1)= y(2,:);
    y_ts(3,theta1)= y(3,:);%存储结果
end
%输出结果
subplot(1,6,1);plot((1:1:angle)/100,theta3_ts);xlabel("时间");ylabel("角度");title("角3角位移");
subplot(1,6,2);plot((1:1:angle)/100,s_3ts);xlabel("时间");ylabel("长度");title("s_3长度变化");
subplot(1,6,3);plot((1:1:angle)/100,(x_ts(2,:)));xlabel("时间");ylabel("角速度");title("角3角速度");
subplot(1,6,4);plot((1:1:angle)/100,abs(x_ts(3,:)));xlabel("时间");ylabel("速度");title("杆5速度");
subplot(1,6,5);plot((1:1:angle)/100,y_ts(2,:));xlabel("时间");ylabel("加速度");title("角3角加速度");
subplot(1,6,6);plot((1:1:angle)/100,y_ts(3,:));xlabel("时间");ylabel("加速度");title("杆5加速度");

代码可自行更改角度变化的步长,角度变化的起始与终点,变更起始电需要改变存储数据的数组大小,如果嫌预分配数组内存在改变数组大小的情况下使用麻烦,可以参考如下的数据存储方法:

dataset = [];
for i=1:...
	data = ...%这里是每次循环得出的结果
	dataset = [dataset data];%存储结果
end

这个方法可以很方便的存储数据,改变数组大小也不会有影响,但是由于没用预分配内存,速度会变慢。

结果如图:运行结果图
结果其实作者也不能验证对不对,作学习记录用。

参考文献: 孙恒,机械原理[M]. 北京:高等教育出版社,2013.5

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值