2. 增量式编码器原理:A/B/Z信号解析、分辨率与线数、倍频技术(1x/2x/4x)
增量式编码器,说白了就是电机控制里的「眼睛」。它不告诉你绝对位置,只告诉你「动了多少」和「往哪动」。我刚开始做伺服驱动时,总觉得这东西简单,不就是两个方波嘛。直到有一次在振动台上调试,信号抖得跟心电图似的,我才意识到——增量编码器的门道,全在细节里。
这一节,咱们就把A/B/Z信号、分辨率、线数、倍频这些概念彻底讲透。你想想看,搞懂这些,换相逻辑才能落地。
2.1 A/B/Z信号解析
增量编码器输出三路信号:A相、B相、Z相。A和B是正交方波,相位差90°。Z相是零位脉冲,每转一圈输出一个。
核心要点: A/B信号的相位关系决定了旋转方向。A超前B是正转,B超前A是反转。Z信号用于归零校准,是绝对位置的参考点。
我在项目中遇到过一个问题:电机上电后第一次找零,Z信号没抓到,结果位置直接跑偏。后来我养成了一个习惯——每次上电后强制让电机转一圈,确保Z信号被捕获。嗯,这个坑踩过就记住了。
A/B信号:正交解码的基础
A和B是两路相位差90°的方波。为什么是90°?因为这样可以用边沿判断方向。你想想看,如果只有一路信号,你只能知道转速,不知道正反转。有了两路,一切就清晰了。
- A超前B 90°:正转(顺时针)
- B超前A 90°:反转(逆时针)
- 边沿触发:每个上升沿或下降沿都可以计数
个人经验: 我建议在硬件设计时,给A/B信号加上施密特触发器。编码器线缆长的时候,信号容易有毛刺,施密特能有效去抖。我曾经因为省了这个,在EMC测试时吃了大亏。
Z信号:零位校准的关键
Z信号每圈只输出一个脉冲,宽度通常为1个A/B周期。它的作用有两个:
- 归零:每次捕获Z信号,将位置计数器清零
- 校准:消除累积误差,确保长期精度
我记得有一次调试龙门同步,两个电机各有一个编码器。Z信号没对齐,结果两个轴的位置基准差了半个脉冲。后来我加了Z信号同步逻辑,问题才解决。所以,Z信号不是摆设,它是精度最后的保险。
2.2 分辨率与线数
线数(PPR,Pulses Per Revolution)是编码器的核心参数。它决定了你能分辨的最小角度。线数越高,精度越高,但成本也越高。
| 线数(PPR) | 每圈脉冲数 | 最小角度(1x) | 典型应用 |
|---|---|---|---|
| 100 | 100 | 3.6° | 简单速度检测 |
| 1000 | 1000 | 0.36° | 通用伺服 |
| 2500 | 2500 | 0.144° | 高精度伺服 |
| 5000 | 5000 | 0.072° | 机器人关节 |
你可能会问:线数是不是越高越好?其实不是。线数高了,信号频率也高,对控制器的主频和输入捕获能力要求更高。我见过有人用5000线的编码器配一个低端MCU,结果脉冲根本数不过来,位置直接飞了。
避坑指南: 我曾经在选型时只看线数,忽略了编码器的最大响应频率。结果电机高速运行时,脉冲频率超过了编码器的电气极限,信号直接丢失。记住:线数 × 最高转速 ≤ 编码器最大响应频率。
2.3 倍频技术:1x / 2x / 4x
倍频技术,说白了就是用更少的线数,获得更高的分辨率。怎么做到的?利用A/B信号的边沿。
- 1x倍频:只检测A相的上升沿。每周期计1个数。
- 2x倍频:检测A相的上升沿和下降沿。每周期计2个数。
- 4x倍频:检测A相和B相的上升沿和下降沿。每周期计4个数。
你想想看,一个周期内,A和B各有1个上升沿和1个下降沿,总共4个边沿。每个边沿都计数,分辨率就提高了4倍。
关键公式: 实际分辨率 = 线数 × 倍频数。例如,1000线编码器用4x倍频,每圈就有4000个计数脉冲,最小角度0.09°。
三种倍频方式的对比
| 倍频方式 | 每周期计数 | 分辨率提升 | 适用场景 |
|---|---|---|---|
| 1x | 1 | 1倍 | 低速、简单计数 |
| 2x | 2 | 2倍 | 中速、通用控制 |
| 4x | 4 | 4倍 | 高速、高精度控制 |
我个人习惯在伺服驱动中默认用4x倍频。为什么?因为4x倍频不仅提高了分辨率,还能在低速时获得更平滑的速度反馈。你想想看,电机在1rpm时,1000线编码器用1x倍频,每秒只有16.7个脉冲,速度环根本没法算。但用4x倍频,每秒有66.7个脉冲,控制效果就好多了。
实现技巧: 在STM32等MCU上,可以用定时器的编码器模式直接实现4x倍频。硬件自动计数,不占CPU。我曾经手写过软件解码,结果CPU占用率飙到30%,后来换成硬件模式,瞬间降到1%。
2.4 知识体系总览
下面这张图把增量编码器的核心逻辑串起来了。从A/B/Z信号到倍频技术,再到分辨率计算,一目了然。
这张图把增量编码器的知识体系串起来了。从A/B/Z信号出发,到线数和分辨率,再到倍频技术,最后输出位置、速度和方向。你想想看,每一步都是环环相扣的。
2.5 实战中的常见问题
讲完了理论,咱们聊聊实战中容易踩的坑。我总结了几个,你对照看看有没有遇到过。
- 信号抖动:编码器线缆长或环境干扰大时,A/B信号会有毛刺。解决方案:加施密特触发器或软件滤波。
- Z信号丢失:电机高速旋转时,Z信号脉冲太窄,控制器没捕获到。解决方案:用Z信号中断,优先级设高。
- 倍频方向错误:4x倍频时,如果A/B接反,计数值会反向。解决方案:上电后先校验方向,不对就交换A/B。
- 累积误差:长时间运行后,位置会漂移。解决方案:定期用Z信号归零,或者用绝对编码器。
我曾经踩过的坑: 有一次在高速冲压机上用增量编码器,电机转速3000rpm,1000线编码器用4x倍频,脉冲频率高达200kHz。结果MCU的输入捕获模块扛不住,丢了不少脉冲。后来我换成了硬件解码的编码器接口,问题才解决。所以,选型时一定要算脉冲频率,别光看线数。