跳转到内容

机器人/反馈传感器/编码器

来自维基教科书,开放世界中的开放书籍

在机器人中,无论是手臂或机械臂轴运动还是驱动轮速度,都需要有关旋转的信息,这并不罕见。旋转编码器有多种类型,最常见的是机械式或使用光电探测器。在机械式编码器中,电触点周期性地连接,通常用于驱动终端高电平或低电平。然后,这些电脉冲用于获取信息。光电探测器编码器可以做得更小,运行速度更快。通常,反射式传感器会照射到标记的反射表面上,或者光中断器会穿过带有透明和不透明部分的圆盘,以便接收到的光的幅度会在接收器中产生高电平和低电平的电脉冲。然后,这些脉冲由外部电路解码。

根据所需信息类型和可靠性,旋转编码器上的图案会越来越复杂。如果只需要转速,则可以使用简单的交替模式,但如果需要速度和方向,则需要更多编码信息。位置编码本身会产生有关速度和方向的信息,因为比较位置变化的方向将给出旋转方向,其中位置相对于时间的变化(根据定义)将指示速度。特定类型的位置编码将取决于所需的精度以及可靠性:在应用中,由于读编码信息时出错而导致的测量旋转位置的误差有多大是可以接受的。

测量转速

[编辑 | 编辑源代码]
简单的速度检测旋转编码器示例

对于某些应用,只需要考虑转速。如果要测量机械上限制为单向旋转的齿轮,则方向已知,只剩下速度。也许正在为机器人的驱动速度开发一个反馈系统,并且车轴上的编码器将使控制器能够通过改变 PWM 值来校准速度;如果控制器使电机以特定方向旋转,它只需要旋转速度。测量速度所需的一切就是一个单一的交替模式,导致探测器发出脉冲串。脉冲速率将与转速成正比;测量连续上升(或下降)沿之间的时间,并将该时间除以一个脉冲代表的旋转角度,将得出旋转速率。

如果速率在测量时间内发生变化,则计算出的速率将是近似瞬时速率的平均值。这就是精度发挥作用的地方 - 每转脉冲越多,测量之间的时间就越短,近似值就越接近正确值。任何熟悉微积分的人都会认识到位置相对于时间的变化率是导数,导数的定义指出,随着用于近似测量的时步接近零,结果等于该时间的导数。






测量连续脉冲的计算速度差,也可以近似得到旋转加速度。

测量方向

[edit | edit source]
双排编码器用于查找速度和方向

假设一台机器正在调整其用于驱动车轮的 PWM 程序。控制器显然需要知道车轮的旋转速度,以便它可以确定给定占空比的速度输出。但是如果机器放在山坡上呢?它开始向后滚动,控制器发现没有输入的情况下有相当大的旋转速度,这会弄乱整个校准过程。如果控制器能够确定车轮正在向后旋转,它就会知道忽略速度信息。为了使用旋转编码器确定方向,光盘上必须至少有两个图案,以便有一个方向变化的参考。实现这一点的最简单方法是使用两个交替的图案,它们彼此相位差半个脉冲。

如果光盘以特定方向旋转(在本例中,图案向左滑动),则通道 A 的上升(或下降)沿将在通道 B 的上升沿之前被检测到;如果旋转方向相反,则通道 B 的上升沿将首先被检测到。通过测试哪个图案的边沿首先被检测到,可以确定旋转方向。可以测量单个通道的脉冲之间的时间来近似旋转速度。但是,组合来自两个通道的检测会使有效脉冲速率是单个通道的两倍,这将测量时间减半并将精度提高一倍。还有一种方法可以使用单个通道测量速度和方向。在单个通道上放置两个接收器,它们之间的距离为半个脉冲宽度,因此当光盘旋转时,一个传感器处于状态,而另一个传感器则过渡。两个传感器过渡到状态的顺序取决于光盘的旋转方向。

测量位置

[edit | edit source]
简单的二进制编码器示例
简单的格雷码编码器示例

确定旋转编码器上角度位置的最简单方法是将光盘分成多个部分,并在每个部分上印上独特的图案。光盘分割成的部分越多,在特定时间知道位置的精度就越高(每个部分将覆盖一定角度范围,因此会存在不确定性,但更多的部分会使每个部分的度数更少)。但是,更多的部分需要更多唯一的标识符,这意味着更复杂的方案。本讨论仅限于数字信号编码器,其中任何给定通道的可能输出仅限于 0 或 1。这有利于二进制编码方案,其中每个部分都印有唯一的二进制数字。所需的唯一 ID 数量取决于部分数量;通道数量等于 log2(n),其中 n 是部分数量。一个有 8 个部分的光盘的分辨率为 360° / 8 = 45° 每个部分,需要 log2(8) = 3 个单独的通道。对于部分数量的两倍,精度翻倍,但只增加一个模式通道。

可靠性

[edit | edit source]

使用二进制编码方案的一个问题是检测器误差。无法保证所有通道都将在同一时间转换,这会导致对段 ID 的误读。如果检测器下方的磁盘部分正在从一个段转换到下一个段,解码器可能会短暂地只正确读取一部分位。假设一个标准的八段二进制编码方案,其中段从 0 到 8 按顺序编号:如果从段 000 到段 001 的转换没有正确读取上升沿,则读取结果会偏移一个位置,暂时来说可以忽略。然而,如果它正在从段 011 转换到段 100,并且最低有效位首先被读取,则控制器会短暂地认为它已经转换到 010,方向完全相反。如果最高有效位首先被读取,它会认为它从 011 跳到 111,位于轮子的完全相反的一侧。当单个位发生变化时,转换错误通常可以忽略不计,因为计算位置的误差为 1。来自多位转换的错误可能是灾难性的。

格雷码

[编辑 | 编辑源代码]
4 位格雷码
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000

格雷码是一种特殊的二进制模式,其中从一个元素到下一个元素的转换过程中只有一位发生变化。作为一种二进制模式,格雷码使用相同数量的通道来表示相同数量的特定模式,只是它们的顺序不同。二进制使用数字顺序的模式;格雷码则不是。使用这种方法对位置进行编码将需要额外的软件或硬件来解码 ID(因为简单的二进制转换不会产生按顺序排列的段集),但硬件可靠性的优势是巨大的——由于在每次转换中只有一位发生变化,因此检测位置模式接收错误时的最大误差为 1 段。格雷码可以像二进制一样按位写出。在二进制中,最低有效位每一步都从 0 变化到 1;下一个位每两步变化一次,下一个每四步变化一次,依此类推。在格雷码中,每一位都包含一个 0-1-1-0 的模式;最低位每一步都保持一个元素;下一个位每两步保持一个元素,下一个每四步保持一个元素,依此类推。可以注意到,二通道格雷码与用于查找旋转方向的二通道模式相同。

华夏公益教科书