1. 编码器信号基础:增量式与绝对式编码器原理、ABZ信号与UVW换相信号定义

做FOC控制,第一关就是编码器。我见过不少新手,一上来就调电流环、调速度环,结果电机要么抖得像筛子,要么干脆转不起来。最后查来查去,发现是编码器信号没搞对。说白了,编码器就是电机的眼睛——眼睛都看不清,你还指望它跑得稳?

这一章,咱们先把编码器的基础打牢。我会把增量式和绝对式的原理、ABZ信号、UVW换相信号这些概念,用我这些年踩过的坑串起来讲。你跟着走一遍,后面处理抗干扰的时候心里就有底了。

1.1 编码器是什么?为什么FOC离不开它?

编码器是一种将旋转位移转换成电信号的传感器。在FOC里,我们需要知道两件事:转子当前在什么位置,以及它转得有多快。没有准确的位置信息,Clark变换和Park变换就是瞎算。

核心要点:FOC的坐标变换依赖转子角度θ。编码器就是提供这个θ的硬件基础。角度不准,转矩就抖;角度丢了,电机就飞车。

我在一个伺服项目里遇到过这种情况:编码器线缆没做屏蔽,电机一跑高速位置就跳变,电流波形像锯齿。后来换了双绞屏蔽线,问题才解决。所以,编码器信号的质量,直接决定了FOC的成败。

1.2 增量式编码器:简单、便宜、但怕丢步

增量式编码器,顾名思义,它只输出相对位置变化。它内部有一个码盘,上面刻着明暗相间的条纹。光通过条纹,被接收器转换成脉冲信号。

它的核心输出是两路正交信号:A相和B相。两路信号相位差90°。通过判断A和B的先后顺序,就能知道电机是正转还是反转。通过计数脉冲个数,就能知道转了多少角度。

我的习惯:在初始化时,我会强制做一次归零动作——让电机转到某个机械限位,然后把计数器清零。这样能避免上电时位置未知的问题。

增量式编码器还有一个Z信号,也叫零位信号。码盘上有一圈特殊的条纹,每转一圈只产生一个脉冲。Z信号用来校准绝对位置。比如,你可以在Z信号到来时,把计数器重置为一个已知值。

但增量式有个致命弱点:断电后位置丢失。你想想看,如果设备突然掉电,再上电时,控制器根本不知道转子在哪儿。必须重新找零。这在一些不允许抖动的场合(比如机械臂),就很麻烦。

信号 功能 特点
A相 主脉冲,每转产生N个脉冲 与B相正交,用于测速和判向
B相 辅助脉冲,相位滞后A相90° 配合A相判断旋转方向
Z相 零位脉冲,每转一个 用于位置校准,消除累积误差

1.3 绝对式编码器:一上电就知道位置

绝对式编码器就解决了增量式的痛点。它输出的不是脉冲,而是二进制编码。每个位置对应一个唯一的码值。一上电,你直接读这个码值,就知道转子在哪儿。不需要找零,不需要归位。

绝对式编码器分两种:单圈和多圈。单圈的只能记录一圈内的位置,多圈的还能记录转了多少圈。多圈编码器内部有齿轮组或磁传感器,能记住圈数,即使断电也能保持。

通信接口上,绝对式编码器常用SSI、BiSS、EnDat、CANopen等协议。这些协议都是串行通信,抗干扰能力比脉冲传输强不少。

注意:绝对式编码器虽然不丢位置,但它的数据更新速率通常比增量式慢。如果你做超高速电机(比如几万转),要仔细算一下通信周期能不能跟上FOC的电流环频率。

我曾经在一个AGV项目里用过绝对式编码器。因为AGV经常断电换电池,如果用增量式,每次上电都要重新找零,太慢了。换了绝对式之后,上电即用,体验好很多。

1.4 ABZ信号详解:你看到的脉冲,其实是时序

ABZ信号是增量式编码器的标准输出。很多人以为它就是三个独立的脉冲,其实不是。它们之间有严格的时序关系。

咱们先看A和B。A和B是正交的,也就是相位差90°。正转时,A领先B 90°;反转时,B领先A 90°。你可以在MCU里用定时器的编码器模式,或者用外部中断+GPIO来捕获这个相位差。

Z信号呢?它只在特定位置出现一次。通常,Z信号的宽度等于一个A脉冲的宽度。但有些编码器的Z信号宽度更宽,或者更窄。这个要看数据手册。

避坑指南:我曾经在调试时发现,Z信号偶尔会多出一个毛刺脉冲。后来用示波器一看,是电源纹波耦合到了Z信号线上。解决办法是在Z信号线上加一个RC低通滤波,或者用MCU的施密特触发器输入引脚。

ABZ信号的电气特性也要注意。常见的有:差分输出(RS-422,A+/A-、B+/B-、Z+/Z-)和单端输出(集电极开路或推挽)。差分输出的抗干扰能力远强于单端。如果你在工业现场用,我强烈建议选差分输出。

1.5 UVW换相信号:无刷电机的“换相地图”

UVW信号,也叫霍尔换相信号。它通常来自电机内部的三个霍尔传感器。这三个传感器相隔120°电角度安装。当转子磁极经过时,霍尔输出高或低电平。

三个霍尔信号组合起来,一共可以表示6个状态。每个状态对应一个60°的电角度区间。这就是无刷电机方波控制的基础——根据UVW状态,决定哪一相通电。

但在FOC里,UVW信号的作用不一样。它不直接用于换相,而是用来确定转子的初始位置。因为FOC需要精确到每个电角度的位置,而UVW只能给出60°的粗粒度区间。所以,FOC通常用UVW做初始定位,然后切换到编码器的高精度位置。

U V W 电角度区间 说明
1 0 1 0° ~ 60° 区间1
1 0 0 60° ~ 120° 区间2
1 1 0 120° ~ 180° 区间3
0 1 0 180° ~ 240° 区间4
0 1 1 240° ~ 300° 区间5
0 0 1 300° ~ 360° 区间6

我的做法:上电后,我先读一次UVW状态,确定转子在哪个60°区间。然后给一个小的定位电流,让转子转到这个区间的中间位置。这样,编码器的初始角度误差不会超过30°电角度。后面再用PLL或者观测器收敛到精确角度。

1.6 知识体系总览:一张图看懂编码器信号

下面这张图,我把增量式和绝对式的核心概念、信号类型、以及它们在FOC中的角色串在了一起。你保存下来,后面学抗干扰处理时,随时回来对照。

编码器信号知识体系总览 增量式编码器 绝对式编码器 A/B 正交脉冲 Z 零位脉冲 二进制编码 SSI/BiSS协议 UVW 换相信号(霍尔) FOC 坐标变换(Clark/Park) 关键问题:抗干扰 • 脉冲毛刺 → 位置跳变 • 共模噪声 → 信号误判 • 线缆衰减 → 脉冲丢失

这张图你看懂了吗?从上往下看:增量式和绝对式是两条路,但它们最终都汇入FOC的坐标变换。而UVW信号,是两者都需要的辅助信息。最下面那层,就是我们这门课要解决的核心——抗干扰。

1.7 小结:这一章你该记住什么?

  • 增量式编码器输出ABZ脉冲,便宜但断电丢位置,适合连续供电的场合。
  • 绝对式编码器输出二进制码,上电即知位置,适合频繁断电或高可靠性场景。
  • ABZ信号有严格的时序关系,A和B正交,Z是零位校准。差分传输抗干扰更好。
  • UVW换相信号提供60°粗粒度位置,用于FOC初始定位。不能直接替代编码器的高精度角度。
  • 编码器信号质量是FOC的基石。信号不好,算法再牛也白搭。