四连杆速度和传动角怎么分析?从位置结果继续往下算
机构仿真实验室
编辑于 2026年05月31日 10:56

上一篇我们解决了四连杆的位置问题:

给定曲柄角 theta,通过两个圆的交点求出活动铰点 C 的位置。

但工程上只知道“机构能动”还不够。我们还要继续问:

  • 摇杆是不是匀速摆动?

  • 哪些位置速度变化最剧烈?

  • 有没有加速度突变风险?

  • 传动角是否太小?

这一篇就基于上一篇的位置结果,继续计算速度、加速度和传动角。

1. 从位置结果继续往下算

上一篇我们已经能得到每一帧的 A、B、C、D 坐标。

接下来可以从 C 点和 D 点求摇杆角:

代码块
PlainText
自动换行
复制代码
beta = atan2(C_y - D_y, C_x - D_x)
复制成功

这里的 beta 就是摇杆相对于水平轴的角度。

如果曲柄角 theta 是输入,那么我们可以把摇杆角写成:

代码块
PlainText
自动换行
复制代码
beta = beta(theta)
复制成功

也就是说,输入曲柄转到不同角度时,输出摇杆会到不同角度。

2. 角速度和角加速度

在真实时间里,角速度应该是:

代码块
PlainText
自动换行
复制代码
omega = d beta / d t
复制成功

但这里我们先做一个更简单的分析:假设曲柄输入角速度恒定,那么 theta 和时间成正比。

这时可以先看:

代码块
PlainText
自动换行
复制代码
d beta / d theta
复制成功

它代表输入曲柄角变化一点时,输出摇杆角变化多少。

如果这个值变化很大,说明机构的输出运动不是匀速的;如果局部变化特别剧烈,后续做动力学或控制时就需要特别注意。

核心代码如下:

代码块
Python
自动换行
复制代码
theta = np.array(theta_list)
beta = np.unwrap(np.array(rocker_angle_list))

omega = np.gradient(beta, theta)
alpha = np.gradient(omega, theta)
复制成功

这里的 np.unwrap 很重要。因为角度通常会在 -pi 和 pi 之间跳变,如果不展开角度,求导时会出现假的速度尖峰。

3. 看曲线,而不只是看动画

动画能告诉我们机构“怎么动”,但曲线能告诉我们“动得怎么样”。

这张图里有四条曲线:

  • 摇杆角度 beta(theta)

  • 摇杆角速度趋势 d beta / d theta

  • 摇杆角加速度趋势

  • 传动角 mu(theta)

从这些曲线可以看出,四连杆输出并不是简单的匀速摆动。即使曲柄以恒定角速度转动,摇杆的速度和加速度也会随位置变化。

这就是很多机构设计里常见的问题:

输入很平稳,不代表输出也平稳。

4. 传动角为什么重要?

传动角通常指连杆和摇杆之间的夹角。它反映的是力从连杆传到摇杆时,方向是否“顺手”。

直观理解:

  • 传动角接近 90°,力传递比较理想。

  • 传动角太小,力臂变差,机构容易效率低、受力大。

  • 接近死点时,传动角问题尤其明显。

所以在做四连杆设计时,我们不只看轨迹是否满足要求,还要看整个运动范围内的传动角是否合理。

一个机构如果轨迹对了,但某些位置传动角太差,实际设备里可能会出现:

  • 卡滞

  • 冲击

  • 电机负载突然变大

  • 关节受力异常

  • 寿命下降

5. 为什么这一篇仍然只做运动学?

这一篇没有加入质量、惯量、摩擦和外载荷,所以还不是完整动力学仿真。

但它已经比“画一个会动的机构”多走了一步:

代码块
PlainText
自动换行
复制代码
位置 -> 角度 -> 速度 -> 加速度 -> 传动角
复制成功

这条链路是后面继续做动力学、尺寸优化和控制仿真的基础。

6. 下一篇准备做什么

下一篇我准备继续做四连杆的一个关键问题:

死点和运动范围。

我们会看:

  • 为什么有些曲柄角度没有解?

  • 什么情况下两个圆没有交点?

  • 死点和传动角有什么关系?

  • 杆长组合如何影响可运动范围?

第 001 篇:四连杆位置求解。

第 002 篇:四连杆速度、加速度和传动角。

第 003 篇:四连杆死点和运动范围。