编码器原理:增量式与绝对式、霍尔换相逻辑、ABZ与UVW信号解析

各位做电机控制的同行,今天咱们来聊聊编码器。说实话,编码器这东西看着简单,但坑是真不少。我最早做伺服驱动时,就被ABZ信号的毛刺坑过一回——电机低速抖动,查了三天才发现是编码器安装间隙导致的信号跳变。从那以后,我对编码器的原理就格外上心。

编码器说白了就是电机的「眼睛」。没有它,控制器就是个瞎子,不知道转子转到哪了,更别提换相和SVPWM了。这一章咱们把增量式、绝对式、霍尔传感器,还有ABZ和UVW信号,一次性讲透。

核心认知:编码器选型决定了整个驱动系统的精度和可靠性。增量式适合速度控制,绝对式适合位置控制,霍尔传感器则是低成本换相方案。三者各有各的战场。

2.1 增量式编码器 vs 绝对式编码器

先看一张对比表,心里有个底:

特性 增量式编码器 绝对式编码器
输出信号 A、B、Z 脉冲 格雷码 / SSI / BiSS 数据
断电记忆 不记忆位置 记忆绝对位置
精度 取决于线数(如 2500线) 取决于位数(如 17位)
抗干扰 脉冲易受干扰 数字通信,抗干扰强
成本 低 高
典型应用 速度环、低成本伺服 机器人关节、高端伺服

增量式编码器的工作原理,其实很简单。码盘上刻着均匀的透光/遮光条纹,光耦一照,就输出脉冲。A相和B相相差90度电角度,用来判断正反转。Z相每转一圈出一个脉冲,用来找零位。

我习惯在项目初期先问一个问题:断电后需要记住位置吗?如果不需要,增量式就够了。需要的话,老老实实上绝对式。

绝对式编码器就高级一些。码盘上刻的不是均匀条纹,而是一圈一圈的格雷码。每个位置对应唯一的二进制码。上电就能知道当前角度,不需要找零。

举个例子:17位绝对式编码器,分辨率是 2^17 = 131072 线/圈。换算成角度,每个脉冲对应 360°/131072 ≈ 0.0027°。这个精度,做机器人关节完全够用。

我的经验:增量式编码器上电后必须执行「寻零」操作。我见过有人忘了这一步,电机直接飞车。绝对式编码器虽然贵,但省心。预算允许的话,尽量上绝对式。

2.2 霍尔传感器换相逻辑

霍尔传感器,说白了就是三个开关。它们安装在电机定子上,相隔120度电角度。转子磁钢经过时,霍尔输出高电平;离开时,输出低电平。

三个霍尔信号组合起来,就是6种状态(还有2种非法状态)。这6种状态对应6个换相时刻。咱们用一张表来看清楚:

霍尔状态 (Ha:Hb:Hc) 转子电角度范围 应导通功率管
101 0° ~ 60° Q1, Q4
100 60° ~ 120° Q1, Q6
110 120° ~ 180° Q3, Q6
010 180° ~ 240° Q3, Q2
011 240° ~ 300° Q5, Q2
001 300° ~ 360° Q5, Q4

你想想看,霍尔信号每变化一次,就说明转子转过了60度电角度。控制器检测到这个变化,立刻切换功率管导通组合。这就是最基础的「六步换相法」。

不过要注意,霍尔传感器只能提供60度分辨率。做方波控制还行,做正弦波控制就太粗糙了。所以霍尔通常只用来做初始换相,或者配合编码器做低速段的位置估算。

避坑指南:霍尔传感器的安装角度必须精确。我曾经遇到过霍尔安装偏差5度,结果电机在低速时换相噪声特别大。后来用示波器量霍尔信号和反电动势波形,才发现是安装问题。重新校准后,噪声立刻消失。

2.3 ABZ信号与UVW信号解析

ABZ信号是增量式编码器的标准输出。咱们一条一条说:

  • A相和B相:相位差90度。A超前B是正转,B超前A是反转。通过检测上升沿和下降沿,可以做4倍频,提高分辨率。
  • Z相:每圈一个脉冲,宽度通常为1个A相脉冲宽度。用来做零位校准。

举个例子:2500线的增量式编码器,不做倍频时每圈2500个脉冲。做4倍频后,每圈10000个脉冲。角度分辨率就是 360°/10000 = 0.036°。这个精度做速度环足够了。

UVW信号呢?它其实是编码器内部的「虚拟霍尔信号」。有些编码器会额外输出三路UVW信号,每路占180度电角度,三路互差120度。这有什么用?

说白了,UVW信号就是给控制器做初始换相用的。上电时,控制器读一下UVW的状态,就知道转子在哪个60度扇区。然后结合ABZ的精细位置,就能实现平滑启动。

我见过不少工程师把ABZ和UVW搞混。记住一句话:ABZ管精细位置,UVW管粗定位。两者配合,才能实现从零速到高速的无缝切换。

关键点:UVW信号的扇区划分和霍尔信号完全一致。如果你用霍尔传感器做换相,那UVW信号就是编码器版的霍尔信号。两者可以互换,但不能同时用——否则会打架。

2.4 知识体系总览

下面这张图,把本章的核心逻辑串起来了。我建议你保存下来,做项目时对照着看:

编码器与霍尔传感器知识体系 增量式编码器 绝对式编码器 霍尔传感器 输出信号 A相 / B相 / Z相 4倍频 → 高分辨率 输出信号 格雷码 / SSI / BiSS 断电记忆绝对位置 输出信号 Ha / Hb / Hc 6种状态 → 60°扇区 应用场景 速度环 / 低成本伺服 应用场景 机器人关节 / 高端伺服 应用场景 六步换相 / 初始定位 与SVPWM配合:提供转子角度 θ 和速度 ω 说明:增量式+霍尔可组合使用,绝对式可独立工作。选型时根据精度、成本和断电记忆需求决定。

2.5 实战中的信号处理要点

理论说完了,咱们聊聊实战中容易踩的坑。

第一,信号毛刺。增量式编码器的A/B信号,在电机振动时容易产生毛刺。我建议在硬件上加RC滤波,时间常数选1μs左右。软件上做去抖,连续采样3次一致才认为信号有效。

第二,Z相丢失。Z相脉冲很窄,如果电机转速高,MCU可能漏采。我习惯用输入捕获中断来抓Z相,而不是轮询。这样即使转速到10000rpm,也不会丢脉冲。

第三,霍尔信号抖动。霍尔传感器在换相边界附近,信号会抖动。这是因为转子磁钢的边缘磁场不稳定。解决办法是加施密特触发器,或者软件上做滞回比较。

我的习惯:每次上电后,先读UVW信号确定初始扇区,然后用ABZ做精细位置。如果发现UVW和ABZ推算的位置不一致,就报错。这个自检逻辑,帮我挡掉过好几次编码器松动的故障。