3. 电流采样与调理电路设计
做电机控制,电流采样是第一步,也是最容易出问题的一步。
我刚开始做PMSM驱动时,总觉得算法才是核心,电路嘛,能采到电流就行。结果呢?板子一上电,电流波形全是毛刺,FOC根本跑不起来。后来才明白——采样电路没设计好,再牛的算法也是白搭。
这一章,咱们就聊聊电流采样与调理电路。说白了,就是怎么把电机绕组里的电流,变成ADC能读的电压信号。
3.1 相电流采样电阻选型
采样电阻,也叫分流电阻。它串联在电机相电流回路里,电流流过时产生压降,我们测这个压降就知道电流了。
选型时,我主要看四个参数:
- 阻值:不能太大,否则发热严重;也不能太小,否则信号太弱。一般取毫欧级,比如5mΩ、10mΩ。
- 功率:根据最大电流算。P = I²R,留1.5~2倍余量。
- 精度:1%是底线,0.5%更好。
- 温漂:这个容易被忽略。我踩过坑——常温下采样挺准,跑半小时后电流就偏了。后来换成低TCR(温度系数)的电阻才解决。
我的经验值:对于10A以内的电机驱动,我习惯用5mΩ/2W/1%的合金电阻,温漂控制在50ppm/℃以内。
另外,采样电阻的布局也很关键。走线要短,要宽,要用开尔文接法——也就是把采样电压的走线单独引出来,别跟大电流走线混在一起。否则,PCB铜箔的电阻会引入额外误差。
3.2 运放电路设计
采样电阻上的电压通常只有几十毫伏,ADC没法直接读。这时候就需要运放来放大。
3.2.1 差分放大 vs 同相放大
两种方案我都用过,说说我的感受。
差分放大:
- 优点:共模抑制比高,能抑制电机PWM开关带来的共模噪声。
- 缺点:电阻匹配要求高,四个电阻稍有偏差,共模抑制比就下降。
- 典型电路:用INA180这类专用电流检测运放,内部已经匹配好了。
同相放大:
- 优点:电路简单,输入阻抗高。
- 缺点:共模电压直接加在运放输入端,对运放的共模输入范围要求高。
我个人习惯用差分方案。为什么?因为电机驱动环境噪声大,差分天生抗干扰。我曾在某款伺服驱动器上试过同相放大,结果PWM开关瞬间,运放输出直接饱和了——共模电压太高。
小技巧:如果非要用同相放大,记得在运放输入端加一个RC低通滤波,把PWM高频分量滤掉。
3.2.2 运放选型要点
| 参数 | 要求 | 说明 |
|---|---|---|
| 失调电压 | < 1mV | 失调大了,小电流测不准 |
| 带宽 | > 1MHz | 要能跟上PWM开关频率 |
| 压摆率 | > 5V/μs | 响应要快,不能拖泥带水 |
| 共模抑制比 | > 80dB | 越高越好 |
常用的型号有:OPA2333、AD8606、MCP6002。我比较偏爱OPA2333,零漂移,温漂小,适合电流采样这种精密应用。
3.3 ADC采样时序与同步
采样时序,是很多新手容易忽略的坑。
PMSM控制中,电流采样必须在PWM周期的特定时刻进行。为什么?因为电机相电流是连续的,但采样电阻上的电压只在PWM开关管导通时才有。
举个例子:下桥臂导通时,电流流过采样电阻;上桥臂导通时,电流不经过采样电阻。如果你在错误的时间采样,采到的就是零或者噪声。
正确的做法是:
- 在PWM载波周期的中点或谷底触发ADC采样。
- 此时,三相下桥臂都导通,电流回路完整,采样值最准确。
- 用定时器或PWM模块的触发信号,直接启动ADC转换,实现硬件同步。
我曾经犯过的错:用软件延时来等待采样时刻。结果PWM频率一高,延时不准,采样点偏移,电流波形出现周期性畸变。后来改用硬件触发,问题立刻解决。
具体到STM32,可以用TIM1的TRGO事件触发ADC注入组转换。代码大概这样:
// 配置PWM定时器触发ADC
TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Update);
ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_T1_TRGO);
嗯,这里要注意:触发时刻要避开PWM开关边沿,因为开关瞬间有尖峰干扰。一般建议在PWM周期的中间点采样,也就是计数器值等于ARR/2的时候。
3.4 硬件滤波与抗混叠
采样信号进ADC之前,一定要滤波。不滤波的话,高频噪声会折叠到低频段,这就是所谓的混叠。
混叠有多可怕?我举个例子:电机运行时,PWM开关频率是20kHz,采样频率是10kHz。那么20kHz的噪声会折叠到10kHz - 20kHz = -10kHz,也就是10kHz的假信号。这个假信号会混入电流反馈,导致FOC控制紊乱。
抗混叠滤波,通常用一阶RC低通滤波器:
- 截止频率 f_c = 1 / (2πRC)
- 一般取采样频率的1/3到1/5
- 比如采样频率10kHz,截止频率取2~3kHz
电阻和电容的取值也有讲究:
- R不能太大,否则运放驱动能力不够,信号建立时间变长。
- C不能太大,否则充放电慢,影响采样速度。
我常用的组合是:R=1kΩ,C=10nF,截止频率约16kHz。这个值对于10kHz采样率来说,够用。
注意:RC滤波会引入相位延迟。如果延迟太大,会影响电流环的带宽。所以滤波器的截止频率不能设得太低,要跟控制带宽做权衡。
另外,有些工程师喜欢在运放输出端加一个TVS管或肖特基二极管,把电压钳位在ADC输入范围内。这个做法我建议加上——万一运放输出异常,ADC不至于烧掉。
好了,电流采样电路这块,核心就是这些。总结一下:
- 采样电阻选低阻值、低温漂的合金电阻
- 运放用差分方案,选低失调、高CMRR的型号
- 采样时序用硬件触发,在PWM中点采样
- 加RC低通滤波,防止混叠
下一章,咱们聊聊位置传感器——没有准确的位置信号,FOC就是盲人摸象。
个人建议:第一次打板时,多留几个调试焊盘。把采样电阻两端、运放输出端、ADC输入端都引出来,方便用示波器看波形。调试阶段,这些测试点能帮你省下大量时间。