3、增量式编码器原理:ABZ信号解析、编码器分辨率、零位脉冲(Index)的作用
增量式编码器,说白了就是电机控制里最常用的“眼睛”。它不告诉你绝对位置,只告诉你“动了多少”和“往哪动”。我刚开始接触电机控制时,总觉得这东西不如绝对式编码器高级,后来才发现,增量式用好了,性价比极高,而且零位脉冲(Index)才是整个对齐流程的关键。
3.1 ABZ信号到底在说什么?
增量式编码器一般输出三路信号:A相、B相、Z相。咱们一个一个拆开看。
A相和B相:方向和速度
A和B是两路相位差90°的方波信号。你想想看,如果电机正转,A相领先B相90°;反转的话,B相领先A相90°。这就是判断方向的依据。
我在项目中遇到过一个问题:编码器线太长,A、B信号边沿抖动,导致方向判断偶尔出错。后来加了施密特触发器整形,问题就解决了。
Z相:零位脉冲(Index)
Z相信号,也叫Index脉冲。编码器每转一圈,Z相只输出一个脉冲。这个脉冲的位置是固定的,对应编码器内部的某个物理位置。
嗯,这里要注意:Z相不是随便给的,它和编码器的机械安装位置有关。不同品牌的编码器,Z相宽度可能不一样,有的占一个脉冲宽度,有的占90°电角度。
3.2 编码器分辨率:你到底能看多细?
分辨率,说白了就是编码器转一圈能输出多少个脉冲。常见的分辨率有:
- 500线:一圈500个脉冲,适合低速、低成本场合
- 1024线:一圈1024个脉冲,工业伺服常用
- 2048线:一圈2048个脉冲,高精度场合
- 4096线:一圈4096个脉冲,高端伺服
但要注意,分辨率不等于精度。分辨率是你能分辨的最小变化量,精度是实际位置和测量位置的偏差。我见过有人把2048线的编码器当绝对精度用,结果机械间隙一算,误差大得离谱。
| 分辨率(线/圈) | 每脉冲对应机械角度 | 典型应用 |
|---|---|---|
| 500 | 0.72° | 普通电机、风机 |
| 1024 | 0.3516° | 通用伺服 |
| 2048 | 0.1758° | 精密定位 |
| 4096 | 0.0879° | 高端机器人 |
3.3 零位脉冲(Index)的作用:为什么它这么重要?
增量式编码器有个天生的缺点:断电后位置丢失。你想想看,如果电机转了一圈,突然断电,再上电时,MCU不知道电机在哪儿。这时候,Z相就派上用场了。
Z相的作用就是提供一个“绝对参考点”。每次上电后,让电机转一圈,找到Z相脉冲,就知道零位了。之后再用A、B计数,就能知道任意时刻的位置。
我习惯的做法是:上电后先让电机低速找Z相,找到后记录当前位置,然后清零计数器。这样,后续的位置计算就有了基准。
Z相在电角度对齐中的角色
在电机控制中,电角度对齐需要知道转子磁极的绝对位置。Z相脉冲提供了一个机械参考点,但机械零位和电零位往往不重合。所以,我们需要通过算法或标定,把Z相脉冲和电角度对应起来。
具体怎么做?我会在后面的章节详细讲。这里先记住:Z相是“锚点”,电角度对齐是“校准”。
3.4 增量式编码器知识体系
下面这张图,是我自己总结的增量式编码器知识结构。你可以把它当作本章的“地图”。
3.5 实际应用中的注意事项
讲完原理,我再说几个实际项目中容易踩的坑。
- Z相抖动:编码器在低速时,Z相可能因为机械振动产生误触发。我习惯在软件里加一个“Z相确认窗口”,连续检测到两次才确认。
- 分辨率匹配:编码器分辨率和MCU的定时器捕获频率要匹配。我见过有人用4096线编码器配一个8位定时器,结果溢出频繁,位置计算全乱套。
- Z相和电角度偏移:编码器安装时,Z相和电机磁极位置可能有固定偏移。这个偏移量需要在调试时标定,然后补偿到软件里。