4. 编码器与反馈:关节的“眼睛”

做机器人关节控制,说白了就是两件事:让电机转,和知道电机转到了哪。前者靠驱动器,后者就靠编码器。

我刚开始做关节模组时,觉得编码器不就是个角度传感器嘛,随便选一个就行。结果第一次上电,电机嗡嗡响,位置就是锁不住。查了半天,发现是编码器分辨率不够,加上信号抖动,导致控制器一直在“追”一个不存在的误差。嗯,从那以后我再也不敢小看编码器选型了。

4.1 增量式 vs 式:本质区别在哪?

这两种编码器的核心差异,我习惯用一个比喻来解释:

  • 增量式:像一把只有刻度的尺子。你知道自己走了多少格,但不知道起点在哪。断电再上电,你就得重新找零位。
  • 式:像一把每格都标了数字的尺子。任何时候看一眼,就知道当前位置。断电再上电,位置信息还在。

关键结论:人形机器人关节,必须用式编码器。为什么?因为人形机器人断电后关节会被重力拉动,上电时如果不知道位置,电机一启动就可能“抽风”,轻则抖动,重则伤人。

我在一个协作机器人项目里就踩过这个坑。当时为了省钱,用了增量式编码器加电池备份的方案。结果有一次电池没电了,机器人上电后直接往桌子上砸下去……从那以后,所有关节项目我都是式编码器起步。

4.2 分辨率与精度:别搞混了

这两个概念,我见过太多工程师搞混了。你想想看:

  • 分辨率:编码器能“感知”到的最小角度变化。比如17位编码器,分辨率就是 360° / 2^17 ≈ 0.0027°。这只是一个理论值。
  • 精度:实际测量值与真实值之间的偏差。它受机械安装、温度漂移、信号噪声等因素影响。
参数 分辨率 精度
含义 能分辨的最小变化 测量值与真实值的偏差
单位 位(bit) 或 线数(PPR) 角秒(arcsec) 或 度(°)
影响因素 码盘刻线数、细分电路 机械公差、温度、信号质量
典型关系 高分辨率 ≠ 高精度 高精度需要高分辨率支撑
我的建议 选分辨率比控制精度高 4~8 倍 精度要满足关节重复定位要求

举个例子:你有一个17位编码器,分辨率很高。但如果安装时编码器轴和电机轴有0.1°的偏心,那实际精度可能连0.1°都达不到。分辨率再高也救不了机械误差。

个人经验:我一般选编码器时,先定精度需求(比如关节重复定位精度要0.01°),然后选分辨率比它高一个数量级(0.001°级别,约19~20位)。这样控制环路才有足够的“余量”去处理噪声和延迟。

4.3 多圈编码器:什么时候用?

多圈编码器,就是不仅能记录当前圈内的位置,还能记录转了多少圈。它内部有一个机械齿轮组或电子计数器,可以记录4096圈甚至更多。

用人形机器人来说,多圈编码器主要用在两个场景:

  1. 关节限位保护:有些关节(比如肩关节)可以连续旋转。如果没有多圈记录,一旦超过一圈,控制器就不知道关节实际位置了,可能撞到机械限位。
  2. 断电位置保持:机器人断电后,如果外力推动关节转了多圈,上电时单圈编码器只能知道圈内位置,不知道转了几圈。多圈编码器可以完整恢复。

注意:多圈编码器也有坑。机械多圈编码器内部有齿轮,长时间振动可能导致齿轮磨损或卡死。电子多圈编码器依赖电池或非易失存储器,电池没电或写入次数超限都会丢失圈数。我建议在关键关节(如髋、膝)使用电子多圈+定期回零策略,既可靠又省心。

4.4 SPI vs ABZ:接口怎么选?

编码器跟控制器通信,主流就两种接口。我直接说结论:

接口 特点 适用场景 我的推荐
ABZ 脉冲信号,A/B相差90°判方向,Z脉冲归零 增量式编码器、低成本方案 不推荐用于人形关节
SPI 同步串行,直接读取位置值(二进制) 式编码器、高精度关节 首选

ABZ接口的问题在于:

  • 脉冲计数容易受干扰,长线传输时尤其明显
  • 上电需要找零位(Z脉冲),不适合式需求
  • 分辨率受限于脉冲频率和计数器位数

SPI接口的优势:

  • 直接读取位置,上电即用
  • 数据帧包含CRC校验,抗干扰能力强
  • 可以同时读取温度、诊断信息等附加数据

我个人的习惯是:所有关节都用SPI接口的式编码器。ABZ我只在调试时用来测速,或者在一些非关节的辅助电机上用。

4.5 知识体系总览

下面这张图,把编码器选型的核心逻辑串起来了。你可以把它当作一个决策流程:

编码器选型决策流程 编码器类型选择 增量式编码器 式编码器 接口:ABZ 需上电找零位 接口:SPI 上电即用,带CRC 单圈编码器 多圈编码器 适合有限位关节 (肘、腕、踝) 适合连续旋转关节 (肩、髋) 推荐:式 + SPI + 多圈

4.6 实际选型建议

最后,我总结一下人形机器人关节编码器的选型清单:

  • 类型:式编码器(必须)
  • 分辨率:不低于17位,推荐19~21位
  • 精度:优于0.02°(约72角秒)
  • 圈数:髋、肩关节用多圈(≥4096圈),其他关节单圈即可
  • 接口:SPI(首选),带CRC校验
  • 附加功能:最好内置温度传感器和诊断寄存器

一个小技巧:如果你用的编码器是SPI接口,记得在PCB布局时把SPI时钟线尽量短,并且用地线包围。我遇到过因为时钟线太长导致数据错位的问题,折腾了两天才发现是信号反射。嗯,高速信号布线,细节决定成败。