1. 编码器基础与换相原理

做电机控制这些年,我见过太多工程师在编码器选型和换相逻辑上栽跟头。说白了,编码器就是电机的「眼睛」——它看不清楚,你的控制算法再牛也白搭。这一章咱们先把基础打牢,聊聊编码器怎么工作、ABZ和UVW信号到底有啥区别,以及电机换相到底在换什么。

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

编码器分两大类:增量式和绝对式。我刚开始做项目时总觉得绝对式就是增量式的升级版,后来才发现——它们根本是两种思路。

增量式编码器

增量式编码器只输出脉冲。它不告诉你「现在在哪儿」,只告诉你「动了多少」。每次上电,它都不知道自己的位置,必须靠外部信号(比如霍尔传感器)或者手动回零来建立参考点。

核心特点:

  • 输出A、B两路正交脉冲,相位差90°
  • 通过A、B相位关系判断旋转方向
  • 掉电丢失位置信息,上电需重新校准
  • 结构简单,成本低,分辨率可做得很高

我记得有一次调试伺服驱动器,客户反馈电机每次上电都会「抖一下」。查了半天,发现是增量式编码器回零逻辑没处理好——电机先猛转一圈找Z信号,机械结构差点撞坏。嗯,从那以后我养成了习惯:增量式系统一定要设计软启动和限位保护。

绝对式编码器

绝对式编码器就聪明多了。它每个位置都有唯一的编码值,上电就知道自己在哪儿。你想想看,多轴机器人或者数控机床,每次开机都要回零,那得多浪费时间?绝对式编码器就是为这种场景准备的。

对比项 增量式编码器 绝对式编码器
位置记忆 掉电丢失 掉电保持
上电行为 需回零操作 直接读取位置
输出信号 脉冲(A/B/Z) 数字编码(SSI/BiSS等)
抗干扰能力 脉冲易受干扰 数字传输,抗干扰强
成本 低 高

我的建议:如果项目预算允许,且系统对安全要求高(比如医疗设备、协作机器人),优先选绝对式编码器。如果是成本敏感的大批量产品,增量式配合霍尔传感器也能做得很好。

1.2 ABZ信号与UVW信号的区别

很多新手会把ABZ和UVW搞混。其实它们服务的对象完全不同——ABZ是给位置环用的,UVW是给换相用的。

ABZ信号

A和B是两路正交脉冲,用来计算位置和速度。Z信号是零位脉冲,每转一圈输出一个脉冲,用于校准参考点。我习惯把ABZ比作「尺子」——A和B是刻度,Z是零刻度线。

UVW信号

UVW信号是编码器内部集成的霍尔效应信号,专门用于无刷直流电机(BLDC)的换相。它输出三路互差120°的方波信号,每60°电角度变化一次状态,正好对应六步换相法的六个扇区。

注意:不是所有编码器都有UVW信号。如果你用的是纯增量式编码器(只有ABZ),那换相信息必须靠外部霍尔传感器或者无传感器算法(如反电动势检测)来获取。

我做过一个项目,客户把只有ABZ的编码器接到BLDC驱动器上,结果电机转起来一顿一顿的。查了三天才发现——换相逻辑用的是UVW信号,但编码器根本没输出这玩意儿。说白了,选型时一定要确认编码器是否带换相信号。

1.3 电机换相的基本概念

换相,说白了就是「切换电流方向」。BLDC电机没有电刷,转子是永磁体,定子是线圈。要让转子转起来,你得按顺序给不同的线圈通电,产生旋转磁场「推着」转子走。

为什么会需要换相?因为转子转到某个位置时,当前通电的线圈产生的磁场已经「推不动」它了,必须切换到下一组线圈。这个切换时机如果不对,轻则效率低、噪音大,重则电机失步甚至烧毁。

1.4 六步换相法

六步换相法是最经典的BLDC换相策略。它把360°电角度分成6个扇区,每个扇区60°,每个扇区对应一组开关状态。

六步换相的核心逻辑:

  • 每个时刻只有两相导通,一相悬空
  • 每60°电角度切换一次导通组合
  • 通过UVW信号(或霍尔信号)判断当前扇区
  • 根据扇区查表确定MOSFET开关状态

我刚开始写换相程序时,总觉得六步换相很简单——不就是查表嘛。直到有一次在高速电机上测试,换相延迟导致电流波形严重畸变,电机嗡嗡响。后来才明白:换相时机比换相顺序更重要。编码器的精度和响应速度直接决定了换相点准不准。

六步换相法逻辑图 扇区1 0°~60° 扇区2 60°~120° 扇区3 120°~180° 扇区4 180°~240° 扇区5 240°~300° 扇区6 300°~360° 换相顺序:A+B- → A+C- → B+C- → B+A- → C+A- → C+B- → 循环 UVW信号与扇区对应关系 U=1 V=0 W=0 U=1 V=1 W=0 U=0 V=1 W=0 U=0 V=1 W=1 U=0 V=0 W=1 U=1 V=0 W=1 关键说明: • 每个扇区对应一组UVW状态,编码器通过检测UVW电平组合判断当前扇区 • 换相点必须与UVW信号边沿对齐,偏差超过±5°电角度会导致效率下降和转矩脉动 • 编码器分辨率越高,换相点定位越精确,高速运行时优势越明显

六步换相法的实现其实不复杂,但有几个坑要注意:

  • 换相延迟:从检测到UVW变化到实际切换MOSFET,中间有中断响应、查表、PWM更新等延迟。高速电机下,这个延迟可能让换相点偏移好几度电角度。
  • 信号抖动:UVW信号在边沿附近可能有抖动,需要做软件滤波或施密特触发整形。
  • 死区时间:上下桥臂切换时必须插入死区,否则会直通短路。死区太长又会影响换相精度。

避坑指南:我曾经在一个高速风机项目里,换相延迟导致电机在8000rpm时效率骤降。后来在中断里直接查表输出,把换相响应时间从15μs压到3μs,问题就解决了。记住——换相代码要放在最高优先级的中断里,别让其他任务抢了它的时间片。