3、传感器与反馈:编码器原理、霍尔传感器、电流采样与调理电路

做电机控制,说白了就是在跟三个东西打交道:位置、速度、电流。这三个量你测不准,环就调不好。我见过太多人算法写得漂亮,结果一上电机就抖,最后发现是传感器信号没处理好。

这一章,咱们就聊聊这些传感器。我会把我在项目中踩过的坑、积累的经验,一并讲给你听。

3.1 编码器原理

编码器是位置环和速度环的眼睛。没有它,你根本不知道转子转到哪儿了。

3.1.1 增量式编码器

增量式编码器,输出的是脉冲信号。它不告诉你绝对位置,只告诉你「动了多少」。你需要一个计数器来累加这些脉冲。

它通常有三路信号:

  • A相、B相:相位差90°,用来判断方向
  • Z相(零位):每转一圈输出一个脉冲,用于归零校准

我个人习惯,在电机上电后先做一次Z相寻零。这样能消除累计误差。你想想看,如果计数器丢了一个脉冲,位置就永远偏了。

关键参数:

  • 线数(PPR):比如2500线,经过4倍频后就是10000个脉冲/圈
  • 最大响应频率:决定了你能跑多快

3.1.2 绝对式编码器

绝对式编码器就省心多了。上电就知道当前位置,不用找零位。它通过SSI、BiSS、EnDat等协议,直接输出一个二进制或格雷码的位置值。

我在一个协作机器人项目里用过绝对式编码器。当时调试了半天,发现位置数据总是跳变。后来查出来是通信线太长,信号反射导致的。加了个终端电阻就解决了。

注意:绝对式编码器的分辨率通常用位(bit)表示。17位就是2^17 = 131072个位置/圈。别买太低的,否则位置环精度不够。

3.2 霍尔传感器

霍尔传感器,是直流无刷电机(BLDC)的标配。它用来检测转子磁极的位置,说白了就是告诉你「该换相了」。

一个BLDC电机里,通常装三个霍尔元件,间隔120°电角度。它们输出三个高低电平信号,组合成6种状态,对应6个换相时刻。

嗯,这里要注意:霍尔传感器的安装位置很关键。装偏了,换相时序就乱了,电机效率会下降,甚至抖动。

我的经验:调试霍尔传感器时,先用手慢慢转动电机,用示波器看三路霍尔信号的波形。它们应该是标准的方波,且相位差120°。如果波形有毛刺,可能是霍尔元件离磁钢太远了。

3.2.1 霍尔与编码器的配合

有些场合,霍尔和编码器会一起用。霍尔负责换相,编码器负责速度和位置控制。我建议你这样做:

  • 霍尔信号用于启动时的初始换相
  • 一旦编码器有了稳定的速度反馈,就切换到编码器换相(也叫无感切换)

我曾经在一个项目中,直接用霍尔信号做速度环。结果低速时还行,高速时霍尔信号的延迟导致速度波动很大。后来换成编码器反馈,问题就解决了。

3.3 电流采样与调理电路

电流环是电机控制的最内环。它的响应速度直接决定了整个系统的动态性能。而电流采样的质量,决定了电流环能调多好。

3.3.1 采样方式

常用的电流采样方式有三种:

方式 原理 优点 缺点
采样电阻 在母线上串一个小电阻,测其压降 成本低、简单 有损耗、不隔离
霍尔电流传感器 利用霍尔效应测量电流产生的磁场 隔离、无损耗 成本高、带宽有限
电流互感器 利用电磁感应原理 隔离、适合大电流 体积大、低频响应差

在低压电机驱动中,采样电阻用得最多。我个人习惯用下桥臂三电阻采样,配合ADC同步采样,能同时得到三相电流。

3.3.2 调理电路设计

采样电阻上的信号很小,通常只有几十毫伏到几百毫伏。直接送给ADC是不行的,必须经过调理电路。

调理电路的核心任务:

  1. 放大:用差分放大器将小信号放大到ADC的满量程范围
  2. 偏置:因为电流有正负,需要加一个直流偏置,把信号抬到ADC的中间电平
  3. 滤波:用低通滤波器滤掉高频噪声

给你一个典型的调理电路代码示例(伪代码):

// 假设ADC参考电压为3.3V,12位分辨率
// 采样电阻0.01Ω,放大倍数50倍
// 电流范围:-10A ~ +10A

float adc_value = read_adc(channel);  // 读取ADC原始值
float voltage = (adc_value / 4096.0) * 3.3;  // 转为电压
float current = (voltage - 1.65) / 50.0 / 0.01;  // 减去偏置,除以放大倍数和电阻值

避坑指南:我曾经在调理电路上吃过亏。当时用了普通的运放,结果共模抑制比不够,电机一启动,采样值就飘。后来换成仪表放大器,问题才解决。记住,电流采样一定要用差分输入,别用单端。

3.3.3 采样时序

电流采样不是随时都能采的。在PWM开关瞬间,母线上有巨大的尖峰噪声。如果你在那个时刻采样,结果肯定是错的。

我建议的做法是:

  • 在PWM的中间时刻(开关管导通稳定后)触发ADC采样
  • 使用ADC的同步采样功能,同时采集三相电流
  • 采样完成后,立即启动DMA传输,不占用CPU时间

你想想看,如果三相电流不是同时采的,Clark变换算出来的结果就是错的。那电流环还怎么调?

3.4 小结

这一章的内容,说白了就是一句话:传感器是控制系统的基石。编码器给你位置和速度,霍尔给你换相时机,电流采样给你力矩信息。任何一个环节出了问题,整个系统都会崩溃。

下一章,咱们开始讲电流环的PID设计。到时候你会发现,如果电流采样没做好,PID参数调得再好也没用。

课后思考:如果你的编码器线数只有500线,而电机最高转速是3000rpm,你能算一下速度环的最小可检测速度变化吗?