
电机控制中的ADC与DAC配置一、一个让我熬夜到凌晨三点的bug去年做一款伺服驱动器,电流环采样频率设了20kHz,理论上ADC转换时间完全够用。结果电机一转起来,电流波形就像被狗啃过——毛刺、跳变、偶尔还出现负值。示波器抓了三个小时,最后发现是ADC采样触发时序和PWM载波没对齐。这个坑让我意识到,ADC和DAC在电机控制里不是“配置完就能跑”的简单外设,它们和PWM、中断、DMA之间的耦合关系,才是真正要命的地方。二、ADC配置:别让采样点落在开关噪声上电机控制里ADC主要干两件事:采样相电流和母线电压。电流采样尤其敏感,因为PWM开关动作会在采样电阻上产生巨大的共模噪声。如果你用STM32或者类似MCU,配置ADC时这几个参数必须死磕:采样时间别用默认值。我习惯把采样时间拉到最大——比如STM32G4的ADC采样周期设到47.5个周期。有人觉得这样会降低采样率,但电机控制里电流环带宽通常也就1-2kHz,采样率10kHz以上完全够用。采样时间短了,噪声会直接混进电流环,导致PI输出抖动,电机嗡嗡响。触发源选择这是最容易翻车的地方。电流采样必须在PWM载波的特定时刻触发,通常选在PWM计数器的下溢事件或者周期匹配事件。为什么?因为这时候上下桥臂都关断(死区时间内),采样电阻上没有开关噪声。我见过有人用定时器溢出直接触发ADC,结果采样点落在开关沿上,电流波形全是毛刺。正确做法:用PWM定时器的TRGO事件触发ADC注入组或规则组。