运动控制(二)直流电机PWM控制

让我们进行一次测试,以在不同电压下获取电机的速度常数。

在这里我们将遇到一个问题:Adruino 是一个数字控制器,所有的微控制器现在都是数字的。这意味着这个装置内部基本上是由开关组成的。Adruino上的每个引脚要么处于开启状态,要么处于关闭状态,但不能处于中间状态。所以我们如何改变电压来测试电机在例如 4 伏特或 3 伏特下的速度呢?

为了解释我们如何做到这一点,让我们深入思考一下当我们突然打开电机的开关时会发生什么。当我们突然从 0 伏特变为 5 伏特时,电机不会立刻从 0 RPM 增加到 350 RPM,因为电机具有一定的惯性。电机开始转动并需要一些时间才能达到速度。当我们关闭开关时,反向的过程发生,电机开始减速,它不会立即停止。实际上,当我们关闭开关时,电机减速的速度比加速的速度更慢。

图片

这里的时间尺度非常快,一般肉眼看不到,电机似乎突然达到全速。但假设我们可以非常快地开关这个开关,使得我们在电机尚未达到速度之前就关闭了开关,然后在电机尚未停止之前再打开开关,再关闭,如此循环。如果我们这么做,电机会以什么速度旋转呢?

实际上,有一个简单的方法来计算这一点。我们用来打开和关闭电机的比例就是电机旋转速度的比例。例如,假设我们知道如果给电机提供恒定的 6 伏特电压,它将以 500 RPM 旋转;也假设我们知道如果给电机提供 3 伏特电压,它将以 350 RPM 旋转。那么如果我们将 6 伏特的信号打开一半时间,关闭一半时间,电机将以与恒定 3 伏特电压相同的速度旋转,即 350 RPM。

换句话说,将 6 伏特的信号以一半的时间开启和关闭,与给定恒定的 3 伏特电压是一样的。我们也可以为其他比例这么做。假设我们想知道电机在只有 1 伏特的情况下会旋转多快,我们可以将 6 伏特的信号以 1/6 的时间开启,5/6 的时间关闭,电机将表现得像是它接收了恒定的 1 伏特电压。

这种方法被称为脉宽调制(Pulse Widith Modification -PWM)。我们之前实际上已经使用过这种方法来控制 RC 伺服,现在我们可以稍微不同地使用这种方法来控制直流电机的速度。我们需要学习一些术语。当我们开关一个脉冲时,从脉冲开始到再次开始的时间称为周期(Period)。脉冲打开的时间称为比较值(Compare Value)。

图片

在我们的 PWM 设置中,让我们将周期设置为 100。这个值的单位是定时器的“刻度”,我们可以通过时钟速度来计算这个时间。假设我们的时钟速度是 12 兆赫兹,这意味着时钟每秒滴答 1200 万次。如果我们用每秒 1/12,000,000 秒/刻度乘以 100 个刻度,我们得到 8.33 微秒。这非常快。现在让我们将比较值设置为 255,这只是一个初始化值,我们将在代码中更改比较值。

让我们创建一个表格来记录电机转速与比较值的关系。第一个数字是我们写入 PWM 的比较值,第二个数字是电机的速度,以 RPM 为单位。然后再创建一列名为电压。

首先,让我们看看能否填充这个电压列。我们知道,使用 PWM 信号时,等效电压和最大电压之间的关系是,脉冲电压与比较值和周期值的比例是相同的。因此,在我们的情况下,当比较值为255时,电压是恒定的6 伏;当比较值为 230 时,这意味着我们关闭电机 10% 的时间,换句话说,我们的电压是最大电压的 90%。

Compare valueVoltageSpeed
2556258
2305.4233
2044.8209
1794.2185
1533.6160
1283125
1022.4108
771.875

让我们单击数据,然后右键单击并添加趋势线。我们将绘制线性趋势线,然后选择在图表上显示方程。通过这个方程,我们可以通过查看斜率来看到电机的速度常数,因为 y = mx + b。

图片

这个值 43 是我们线的斜率,这是我们电机的每伏特 RPM 值。这个跟上一篇文章中的计算结果是一样的。

我们现在已经学到了很多关于电压与电机速度之间关系的知识,但我们对速度与扭矩之间的关系了解不多。在下一篇文章中,我们将研究这种关系。