【MATLAB习题】双摇杆机构的运动学分析

1.双摇杆机构概述

  1. 双摇杆机构的判别方法:

    1. 最长杆长度+最短杆长度 ≤ 其他两杆长度之和,连杆(机架的对杆)为最短杆时。

    2. 如果最长杆长度+最短杆长度 >其他两杆长度之和,此时不论以何杆为机架,均为双摇杆机构。

  2. 有1到2个死点位置,无急回特性

2.连杆机构组成类型

根据构件之间的相对运动为平面运动或空间运动,连杆机构可分为平面连杆机构和空间连杆机构。根据机构中构件数目的多少分为四杆机构、五杆机构、六杆机构等,一般将五杆及五杆以上的连杆机构称为多杆机构。当连杆机构的自由度为1时,称为单自由度连杆机构;当自由度大于1时,称为多自由度连杆机构。

根据形成连杆机构的运动链是开链还是闭链,亦可将相应的连杆机构分为开链连杆机构(机械手通常是运动副为转动副或移动副的空间开链连杆机构)和闭链连杆机构。单闭环的平面连杆机构的构件数至少为4,因而最简单的平面闭链连杆机构是四杆机构,其他多杆闭链机构无非是在其基础上扩充杆组而成;单闭环的空间连杆机构的构件数至少为3,因而可由三个构件组成空间三杆机构。

3. 连杆机构理论应用

动力机的驱动轴一般整周转动,因此机构中被驱动的主动件应是绕机架作整周转动的曲柄在形成铰链四杆机构的运动链中,a、b、c、d既代表各杆长度又是各杆的符号。当满足最短杆和最长杆之和小于或等于其他两杆长度之和时,若将最短杆的邻杆固定其一,则最短杆即为曲柄。

若铰链四杆机构中最短杆与最长杆长度之和小于或等于其余两杆长度之和,则

  1. 取最短杆的邻杆为机架时,构成曲柄摇杆机构;

  2. 取最短杆为机架时,构成双曲柄机构;

  3. 取最短杆为连杆时,构成双摇杆机构;

若铰链四杆机构中最短杆与最长杆长度之和大于其余两杆长度之和,则无曲柄存在,不论以哪一杆为机架,只能构成双摇杆机构。

3.1 急回系数

在曲柄等速运动、从动件变速运动的连杆机构中,要求从动件能快速返回,以提高效率。即k称为急回系数。

3.2 压力角

曲柄摇杆机构,若不计运动副的摩擦力和构件的惯性力,则曲柄a通过连杆b作用于摇杆c上的力P,与其作用点B的速度vB之间的夹角α称为摇杆的压力角,压力角越大,P在vB方向的有效分力就越小,传动也越困难,压力角的余角γ称为传动角。在机构设计时应限制其最大压力角或最小传动角。

3.3 死点

在曲柄摇杆机构中,若以摇杆为主动件,则当曲柄和连杆处于一直线位置时,连杆传给曲柄的力不能产生使曲柄回转的力矩,以致机构不能起动,这个位置称为死点。机构在起动时应避开死点位置,而在运动过程中则常利用惯性来过渡死点。

4. 平面四杆机构的运动特性

4.1 定理

  • 杆长之和条件:平面四杆机构的最短杆和最长杆的长度之和小于或者等于其余两杆长度之和。

  • 在铰链四杆机构中,如果某个转动副能够成为周转副,则它所连接的两个构件中,必有一个为最短杆,并且四个构件的长度关系满足杆长之和条件。

  • 在有整装副存在的铰链四杆机构中,最短杆两端的转动副均为周转副。此时,

    • 如果取最短杆为机架,则得到双曲柄机构;
    • 若取最短杆的任何一个相连杆为机架,则得到曲柄摇杆机构;
    • 如果取最短杆对面构件为机架,则得到双摇杆机构。
  • 如果四杆机构不满足杆长条件,则不论选取哪个构件为机架,所得到机构均为双摇杆机构。

  • 上述系列结论称为格拉霍夫定理

4.2 急回特性

在曲柄摇杆机构中,当摇杆位于两个极限位置时,曲柄两个对应位置夹的锐角被称为极位夹角。用表示通常用行程速度变化系数K来衡量急回运动的相对程度。偏置曲柄滑块机构和摆动导杆机构同样具有急回特性。对心曲柄滑块机构无急回特性。

文章部分引用工程造价网

5. 双摇杆机构运动分析

5.1 分析过程

双摇杆机构其实还是属于铰链四杆机构,所以运动分析的MATLAB代码和铰链四杆机构大同小异。只要修改一下杆的数据即可。

5.2 双摇杆机构存在的条件

  • 最长杆长度+最短杆长度 ≤ 其他两杆长度之和,此条件称为杆长条件。
  • 如果铰链四杆机构各杆的长度不满足杆长条件,则无周转副,此时不论以何杆为机架,均为双摇杆机构。
  • 在满足杆长条件的四杆机构中,如果以最短杆为连杆(即图中的AB杆,CD杆为机架),则该机构为双摇杆机构。

5.3 matlab 代码

function main
%输入已知数据
clear;
i1=0.60;
i2=0.240;
i3=0.500;
i4=0.400;
omega1=0.001;
alpha1=0; 
hd=pi/180;
%一弧度
du=180/pi;
%2调用子函数求出铰链的机构位移,角速度,角加速度

theta_1=acos((840*840+400*400-500*500)/(2*840*400));  %单位:rad  0.4126
theta_2=acos((600*600+400*400-740*740)/(2*600*400));  %单位:rad  1.6283
% theta_2_2=rad2deg(theta_2);

for n1=1:100
    theta1(n1)=theta_1+((theta_2-theta_1)/100)*n1; %theta_1到theta_2  单位是rad
    [theta,omega,alpha]=crank_cocker(theta1(n1),omega1,alpha1,i1,i2,i3,i4);%返回的是一个确定的值的矩阵
    theta2(n1)=theta(1);theta3(n1)=theta(2);
    omega2(n1)=omega(1);omega3(n1)=omega(2);
    alpha2(n1)=alpha(1);alpha3(n1)=alpha(2);
end

for n1=101:200
    theta1(n1)=theta_2-((theta_2-theta_1)/100)*(n1-100); %theta_1到theta_2  单位是rad
    [theta,omega,alpha]=crank_cocker(theta1(n1),omega1,alpha1,i1,i2,i3,i4);%返回的是一个确定的值的矩阵
    theta2(n1)=theta(1);theta3(n1)=theta(2);
    omega2(n1)=omega(1);omega3(n1)=omega(2);
    alpha2(n1)=alpha(1);alpha3(n1)=alpha(2);
end

%3角位移,角速度,角加速度的图形输出
figure(1);%figure是建立图形的意思。系统自动从1,2,3,4来建立图形,数字代表第几幅图形
n1=1:200;%建立一个行向量
subplot(2,2,1);%绘制位移线图
plot(n1,theta2(n1),n1,theta3(n1),'k');
% set(get(gcf,'CurrentAxes'),'xtick',theta_1:(theta_2-theta_1)/10:theta_2);
% axis([theta_1 theta_2 -1 3])
title('角位移线图')%设置图形标题为。。。
xlabel('曲柄转角\theta_1/rad')%设置x轴标签
ylabel('角位移/rad')
grid on ;%显示坐标轴网格线,grid off则关闭坐标轴网格线
hold on;%hold on是当前轴及图像保持而不被刷新,准备接受此后将绘制的图形,多图共存。hold off(默认)则相反

%绘制角速度线图
subplot(2,2,2);
H2=plot(n1,omega2(n1),n1,omega3(n1),'k');
% set(get(H2,'xlabel'),'xtick',theta_1:(theta_2-theta_1)/10:theta_2);
title('角速度线图')
xlabel('曲柄转角\theta_1/cicr')
ylabel('角速度/rad\cdots^{-1}')
grid on;hold on;

%角加速度线图
subplot(2,2,3);
H3=plot(n1,theta2(n1),n1,alpha3(n1),'k')
% set(get(H3,'xlabel'),'xtick',theta_1:(theta_2-theta_1)/10:theta_2);
title('角加速度线图');
xlabel('曲柄转角\theta_1/\circ')
xlabel('角加速度/rad\cdots^{-2}')
grid on;hold on;
% text(230,244,'\alpha_2')
% set(gca,'xtick',[theta_1:0.1:theta_2]);  %设置x轴的刻度为0:15:100
% text(30,734,'\alpha_3')

%铰链四杆机构图形输出
subplot(2,2,4);
x(1)=0;y(1)=0;
x(2)=i1*cos(theta1(50));y(2)=i1*sin(theta1(50));
x(3)=i4+i3*cos(theta3(50));y(3)=i3*sin(theta3(50));
x(4)=i4;y(4)=0;
x(5)=0;y(5)=0;
grid on;hold on;
plot(x,y)
plot(x(1),y(1),'o')
plot(x(2),y(2),'o')
plot(x(3),y(3),'o')
plot(x(4),y(4),'o')%描点,点的格式是小圆
title('铰链四杆机构')

xlabel('m');
xlabel('m');
axis([0 1 0 1]);
gtext('杆1');
gtext('杆2');
gtext('杆3');
gtext('杆4');

%4 铰链四杆机构运动仿真
figure(2)
%创建电影动画的开始
m=moviein(20)%这个函数在2014版本之后已经无效了
j=0;
for n1=1:5:200
    j=j+1;
    clf;
    x(1)=0;
    y(1)=0;
    x(2)=i1*cos(theta1(n1));
    y(2)=i1*sin(theta1(n1));
    x(3)=i4+i3*cos(theta3(n1));
    y(3)=i3*sin(theta3(n1));
    x(4)=i4;
    y(4)=0;
    x(5)=0;
    y(5)=0;
    plot(x,y);
    grid on;
    hold on;
    plot(x(1),y(1),'o');
    plot(x(2),y(2),'o');
    plot(x(3),y(3),'o');
    plot(x(4),y(4),'o');
  
    axis([-1 1 -1 1]);%axis([xmin xmax ymin ymax]) [ ]中分别给出x轴和y轴的最大值、最小值
    title('铰链四杆机构');
    xlabel('m');ylabel('m');
    %以上都是用来生成图形的,画n1=X时的图形
    m(j)=getframe;
                  %{该函数格式有:
                    % (1)F=gefframe,从当前图形框中得到动画帧
                    % (2)F=gefframe(h),从图形句柄h中得到动画帧
                    % (3)F=getframe(h,rect),从图形句柄h的指定区域rec中得到动画帧 
end
movie(m,2);
        % 该函数的主要格式有:
        % (1)movie(M),将矩阵M中的动画帧播放一次
        % (2)movie(M,n),将矩阵M中的动画帧播放n次
        % (3)movie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次
    %movie2avi()
end
%创建动画电影的步骤:
%001——》调用moviein函数对内存进行初始化(该步骤在Matlab5.3以上均可省略),
%         创建一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一系列指定的图形(此处称为帧)。
%002——》%使用getframe调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量,
         %就可以创建一个电影动画矩阵.
%003——》调用movie函数按照指定的速度和次数运行该电影动画。
%004——》调用movie2avi函数可以将矩阵中的一系列动画帧转换成视频文件avi文件。
%         这样,即使脱离了matlab环境都可以播放动画。


function[theta,omega,alpha]=crank_cocker(theta1,omega1,~,i1,i2,i3,i4)
%1.计算从动件角位移
L=sqrt(i4*i4+i1*i1-2*i1*i4*cos(theta1));
phi=asin((i1./L)*sin(theta1));
beta=acos((L*L+i3*i3-i2*i2)/(2*i3*L));
if beta<0
    beta=beta+pi;
end
theta3=pi-phi-beta;%theta3是杆3转过的角度
theta2=asin((i3*sin(theta3)-i1*sin(theta1))/i2);%theta2是杆2转过的角度
theta=[theta2;theta3];

%2.计算从动件的角速度
A=[-i2*sin(theta2),i3*sin(theta3);
    i2*cos(theta2),-i3*cos(theta3)];%机构从动件位置参数矩阵
B=[i1*sin(theta1);-i1*cos(theta1)];  %原动件位置参数矩阵
omega=A\(omega1*B);
omega2=omega(1);omega3=omega(2);

%3.计算从动件的角加速度
A=[-i2*sin(theta2),i3*sin(theta3);
   i2*cos(theta2),-i3*cos(theta3)];
At=[-omega2*i2*cos(theta2),omega3*i3*cos(theta3);
    -omega2*i2*sin(theta2),omega3*i3*sin(theta3)];
B=[i1*sin(theta1);
    -i1*cos(theta1)];
Bt=[omega1*i1*cos(theta1);
    omega1*i1*sin(theta1)];
alpha=[A\(-At*omega+omega1*Bt)];

end

4.分析结果

posted @ 2022-12-29 23:41  FE-有限元鹰  阅读(1147)  评论(0编辑  收藏  举报