机械原理Matlab辅助分析(第二版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第二节 铰链四杆机构的运动分析

在图1-2所示的铰链四杆机构中,已知各构件的尺寸及原动件1的方位角θ1和匀角速度ω1,需对其位置、速度和加速度进行分析。

一、数学模型的建立

为了对机构进行运动分析,先如图1-2建立直角坐标系,并将各构件表示为杆矢,为了求解方便,将各杆矢用指数形式的复数表示。

图1-2 铰链四杆机构

1.位置分析

如图1-2所示,由封闭图形ABCDA可写出机构各杆矢所构成的封闭矢量方程

  (1-1)

其复数形式表示为

  (1-2)

将式(1-2)的实部和虚部分离,得

  (1-3)

由于式(1-3)是一个非线性方程组,直接求解比较困难,在这里借助几何方法进行求解,在图中连接BD,由此得

  (1-4)

2.速度分析

将式(1-2)对时间t求一次导数, 得速度关系

  (1-5)

将式(1-5)的实部和虚部分离,得

  (1-6)

若用矩阵形式来表示,则式(1-6)可写为

  (1-7)

解式(1-7)即可求得两个角速度ω2ω3

3.加速度分析

将式(1-2)对时间t求二次导数,可得加速度关系表达式

  (1-8)

解式(1-6)即可求得两个角加速度α2α3

二、计算实例

【例1-1】 如图1-2所示,已知铰链四杆机构各构件的尺寸为:l1=101.6mm,l2=254mm,l3=177.8mm,l4=304.8mm,原动件1以匀角速度ω1=250rad/s逆时针转动,计算构件2和构件3的角位移、角速度及角加速度,并绘制出运动线图。

三、程序设计

铰链四杆机构MATLAB程序由主程序crank_rocker_main和子函数crank_rocker两部分组成。

1.主程序crank_rocker_main文件

*************************************************

%1.输入已知数据

clear;

l1=101.6; l2=254; l3=177.8; l4=304.8;

omega1=250;

alpha1=0;

hd=pi/180; du=180/pi;


%2.调用子函数 crank_rocker 计算铰链四杆机构位移,角速度,角加速度

for n1=1:361

 theta1=(n1-1)*hd;

 [theta,omega,alpha]=crank_rocker(theta1,omega1,alpha1,l1,l2,l3,l4);

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

n1=1∶361;

subplot(2,2,1);  % 绘位移线图

plot(n1,theta2*du,n1,theta3*du,'k');

title('角位移线图');

xlabel('曲柄转角 \theta_1/\circ')

ylabel('角位移/\circ')

grid on; hold on;

text(140,170,'\theta_3')

text(140,30,'\theta_2')


subplot(2,2,2);  % 绘角速度线图

plot(n1,omega2,n1,omega3,'k')

title('角速度线图');

xlabel('曲柄转角 \theta_1/\circ')

ylabel('角速度/rad\cdots{-1}')

grid on;hold on;

text(250,130,'\omega_2')

text(130,165,'\omega_3')


subplot(2,2,3); % 绘角加速度线图

plot(n1,alpha2,n1,alpha3,'k')

title('角加速度线图');

xlabel('曲柄转角 \theta_1/\circ')

ylabel('角加速度/rad\cdots{-2}')

grid on;hold on;

text(230,2e4,'\alpha_2')

text(30,7e4,'\alpha_3')


subplot(2,2,4); % 铰链四杆机构图形输出

x(1)=0;

y(1)=0;

x(2)=l1*cos(70*hd);

y(2)=l1*sin(70*hd);

x(3)=l4﹢l3*cos(theta3(71));

y(3)=l3*sin(theta3(71));

x(4)=l4;

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

title('铰链四杆机构');

xlabel('mm')

ylabel('mm')

axis([-50 350-20 200]);%


%4.铰链四杆机构运动仿真

figure(2)

m=moviein(20);

j=0;

for n1=1:5:360

  j=j﹢1;

  clf;

  x(1)=0;

  y(1)=0;

  x(2)=l1*cos((n1-1)*hd);

  y(2)=l1*sin((n1-1)*hd);

  x(3)=l4﹢l3*cos(theta3(n1));

  y(3)=l3*sin(theta3(n1));

  x(4)=l4;

  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([-150 350 -150 200]);

  title('铰链四杆机构'); xlabel('mm'); ylabel('mm')

  m(j)=getframe;

end

movie(m);

2.子函数crank_rocker 文件

*************************************************

function [theta,omega,alpha]=crank_rocker(theta1,omega1,alpha1,l1,l2,l3,l4)

%1.计算从动件的角位移

L=sqrt(l4*l4﹢l1*l1-2*l1*l4*cos(theta1));

phi=asin((l1./L)*sin(theta1));

beta=acos((-l2*l2﹢l3*l3﹢L*L)/(2*l3*L));

if beta<0

  beta=beta﹢pi;

end

theta3=pi-phi-beta;               % theta3 表示杆3转过角度

theta2=asin((l3*sin(theta3)-l1*sin(theta1))/l2);     % theta2 表示杆2转过角度

theta=[theta2;theta3]


%2.计算从动件的角速度

A=[-l2*sin(theta2), l3*sin(theta3);          % 机构从动件的位置参数矩阵

  l2*cos(theta2), -l3*cos(theta3)];

B=[l1*sin(theta1); -l1*cos(theta1)];         % 机构原动件的位置参数列阵

omega=A\(omega1*B);              % 机构从动件的速度列阵

omega2=omega(1); omega3=omega(2);


%3.计算从动件的角加速度

A=[-l2*sin(theta2), l3*sin(theta3);

  l2*cos(theta2), -l3*cos(theta3)];

At=[-omega2*l2*cos(theta2), omega3*l3*cos(theta3);

  -omega2*l2*sin(theta2), omega3*l3*sin(theta3)];

B=[l1*sin(theta1); -l1*cos(theta1)];        % 机构原动件的位置参数列阵

Bt=[omega1*l1*cos(theta1); omega1*l1*sin(theta1)];  % Bt=dB/dt

alpha=A\(-At*omega﹢alpha1*B﹢omega1*Bt);     % 机构从动件的加速度列阵

  ***********************************************

四、运算结果

图1-3为铰链四杆机构的运动线图和机构运动仿真图。

图1-3 铰链四杆机构运动线图和机构运动仿真图