运动控制(四)直流电机扭力计算与选型

在这篇文章中,我们将探讨基于扭矩和速度需求为串联机械手的关节选择电机。今天我们将只考虑两个因素来计算扭矩需求:第一,连杆的角加速度;第二,机器人负载和连杆本身的重力。让我们从最简单的情况开始,一个电机连接到一个连杆上,使得连杆的运动方向垂直于重力,就像我在这里展示的这样。

图片

在这种情况下,我们的扭矩需求完全不依赖于重力,因为重力的方向总是垂直于运动方向,所以我们可以将这种情况下的扭矩需求写成

T= I*α

I 是质量惯性矩(mass moment of inertial),定义为质量乘以距离的平方的积分,这个距离是质量到它旋转的点的距离。

图片

最容易理解这个概念的方法是查找一些方程式并做一些计算,首先,我们来计算质量惯性矩。电机本身有一些惯性,这将在电机数据表中给出,如果电机的惯性量显著,你必须在这里考虑它,因为杆的角加速度和电机轴的角加速度将是相同的,因为电机轴与杆是耦合的。如果我们查找杆绕其一端旋转的质量矩,我们可以看到它是 mL^2/3。现在,我将把 m 和 l 保留为变量。

图片

要完成这个计算,我们还需要计算角加速度α。这里有一种常见的方法。假设在我们的应用中,我们需要这个连杆在0°和90°之间旋转,并且连杆必须在两个位置都停止移动。这是拾放应用中的一个常见情况。现在我们指定我们将允许这个动作发生的时间,在这种情况下,让我们假设我们想要在半秒内完成这个90°的动作。为了计算完成这种动作所需的加速度量,我将绘制一个时间在 x 轴上,旋转速度 ω(以弧度每秒为单位)在 y 轴上的图表。我知道动作将在时间等于零秒时开始,我希望动作在 0.5 秒时完成。我之所以将 y 轴绘制为旋转速度,是因为从旋转速度的图表中我可以同时得到加速度和位移,或者是在这次移动期间移动的距离。位移将是曲线下面的面积,而加速度将是这个曲线的斜率。

这次移动期间的速度可以采取任何形状,我可以有一个这样的速度,或者我可以有一个这样的速度,任何形状的速度都是可能的,但如果我想要最小化所需的加速度,以最小化我需要的扭矩量,最小加速度移动将包括一个恒定的斜率上升到一个点,然后以恒定的斜率回落下来,以这样的方式,这里一半是峰值速度。这种移动将给我最小的加速度。现在,我将把这个峰值点称为 ωmax。

图片

从这个图表中,我们可以计算出所需的加速度量,给定我需要移动的距离,距离是这个曲线下面的面积。因为我们说这个动作必须是90°,这必须等于 π/2,所以 ωmax 是 2π 弧度每秒。

ωmax * 1/2 = π/2

ωmax = π

给定 ωmax 是 PI 弧度每秒,我们可以计算这个动作的 α 吗?我们知道电机必须在 0.5 秒内从 0 加速到ωmax。

α = ωmax/t = 2π

现在我们有了α,我们可以将其重新插入我们的方程中,得到总的扭矩量。让我们代入一些杆的质量和长度的值,假设杆的长度是 1/2 m,假设这个杆的质量是 1 kg。这给我们大约0.52Nm的扭矩。

T = I*α = mL^2/3*2π = 0.52

让我们来看看一些电机。在这里,我在一个叫做 Pololu 的网站上,它销售许多不同类型的电机,它们都有详细的文档。这里有一组带有不同齿轮箱的电机,他们在这里列出了无负载速度和堵转扭矩。

图片

现在,诱惑是挑选一个有超过5.3Kgcm(1.047Nm)堵转扭矩的电机,但这是不正确的,原因如下:如果我们回顾我们的时间和旋转速度的图表,我们可以看到我们需要施加这个量的扭矩,记住扭矩是这个速度时间曲线的斜率,我们需要在整个动作期间的所有速度上施加这个量的扭矩,而电机的堵转扭矩是电机在速度等于零时可以施加的扭矩量。对于我们的应用,我们需要电机能够在所有这些速度上,包括 ωmax。我们需要挑选一个电机,其速度ωmax和扭矩 5.3Kgcm落在电机的扭矩速度曲线下方。

所以让我们再次看看我们的电机,我们知道扭矩少于 5.3Kgcm的电机都不会工作,所以让我们挑选一个扭矩更多的,让我们看看这个电机是否真的适合我们的需求。让我们最后这个有 100 RPM 和8.5kgcm扭矩的电机。这里我们将绘制出电机的扭矩速度曲线。我们实际上不知道这条线在堵转扭矩和无负载速度之间的路径是什么,但我们可以安全地假设它是一条直线,因为它不会小于一条直线。

图片

我们需要的是 21Kgcm的扭矩,但我们在什么速度需要这个扭矩?ωmax这个速度换算成rpm是 30。回到我们的扭矩速度曲线,现在我们知道我们需要的点是 5.3Kgcm和 30 RPM,要在这个曲线下面。

图片

画出来这个点非常接近曲线,不确定这个电机适不适用,让我们来计算一下。很容易求得曲线方程为y=-0.085x+8.5,当x=30时y=5.95>5.3。这个电机会工作,但它的扭矩量非常接近我们所需的量,我们可能实际上不会选择这个电机。记住,我们没有在这些计算中考虑电机本身的惯性,我们还没有考虑机器人可能持有的任何类型的负载。所以一般来说,一旦我们在所需速度下计算出扭矩,并找到一个可以工作的电机,我们希望至少稍微过度规格电机,以考虑我们计算中的不准确之处。

接下来,让我们使这种情况稍微复杂一些。这次我们将旋转关节定位成这样:

图片

这更复杂,因为现在我们必须考虑重力的影响。这里我们有由于连杆加速度产生的扭矩(T1=I*α),但我们也有由于重力产生的扭矩(T2=Fgxr)。在这里,我使用变量 r 来表示从旋转中心到连杆质心的距离。如果连杆的质量分布是相等的,我们可以近似 r 为 L/2,即连杆长度的一半。

现在注意这里的乘法(T2=FgXr)实际上是叉积(cross product),换句话说,我们只想计算平行于连杆运动方向的重力。在此处绘制的位置,整个重力都平行于运动方向的任何瞬间,由重力产生的扭力计算如下:

T2=FgXr = mg*L/2*sin(90+θ) = 1*9.81*0.5/2*1 = 2.45Nm

所以请注意,在这种情况下,由于重力所需的扭矩量远远大于仅仅由于加速度所需的扭矩量。当然,这并不总是如此,如果我们假设了一个更大的加速度值,那么那个扭矩需求的来源就会占主导地位。然而,这解释了为什么 SCARA类型的机械手通常用于拾放操作,因为将连杆和负载在垂直于重力的方向上移动所需的扭矩量远远小于将物体在平行于重力的方向上移动所需的扭矩量。

图片

SCARA机械臂(来源:wikipedia)

为了克服重力移动连杆所需的总扭矩量是两个扭矩量的总和。所以我们有0.52Nm,这是我们以指定的加速度移动连杆所需的,我们还有大约2.45Nm,这是克服重力所需的。所以对于这个应用,我们需要指定一个能够产生大约3Nm的电机。

在我们结束今天之前,让我们回顾一下这个设置的另一个复杂情况。假设我们的机械手在其末端执行器中持有一些物体作为负载(payload),我们称机械手将要移动的任何物体为负载。

负载对我们电机所需扭矩量的影响是什么?在第一种设置中,负载的唯一影响是在我们计算质量矩时。由于连杆的惯性不会改变,但现在我们也有由于负载而产生的一些惯性。通常可以安全地假设负载是一个点质量(Point mass)。如果你的负载有一些复杂或大的几何形状,那么你将无法假设负载是一个点质量。在这种情况下,你必须考虑物体的形状,你可以使用一个称为平行轴(parallel axis theorem)的定理,将已知的围绕负载质心的矩,然后使用平行轴定理将旋转轴延伸回关节的旋转轴。我们不会在这篇文章中介绍。如果你可以将负载简化为一个点质量,我们可以将其矩计算为质量乘以距离平方。

图片

重新计算这种情况下所需扭力:

T=(Ilink+Ipayload)*α = (4/3*mL^2)*2π = 2.094Nm.

所以你可以看到,负载的影响是非常显著的(0.52->2.09)。

接下来,让我们考虑运动方向平行于重力的情况下负载的影响。

图片

T2=I*α+FgXr+FgXL = 0.52+2.45+4.9 = 7.87Nm

所以你可以看到,负载的影响是非常显著的,即使在这些计算中,负载的质量与连杆的质量相同,负载的影响也大于连杆的影响。在所有这些例子中,我们只考虑了机械手中的单个连杆。我们可以将这些计算扩展到也考虑下一个关节对我们串联链路中这个关节的影响,但那是另一天的话题,我们今天就到这里。