017、电机控制中的采样与滤波技术
电机控制中的采样与滤波技术
一次深夜的调试噩梦
凌晨两点,实验室的示波器上,电流波形像发疯的心电图。我盯着那个本该平滑的正弦波,它却在每个过零点附近剧烈抖动,像被什么东西咬了一口。更诡异的是,电机转速越高,抖动越剧烈,到了3000rpm以上,电流环直接保护停机。
我检查了PWM配置,确认了死区时间,甚至怀疑是IGBT驱动光耦老化。直到我无意中把示波器探头从电流传感器输出端挪到ADC采样引脚——真相大白。采样值本身就在跳,不是硬件坏了,是采样时机和滤波策略一起出了问题。
那次之后,我养成了一个习惯:任何电机控制问题,先看采样原始值,再看滤波后值,最后才怀疑控制算法。
采样时刻的陷阱
很多初学者以为ADC采样就是“定时去读寄存器”,但在电机控制里,采样时刻的选择直接决定系统能否工作。
同步采样 vs 异步采样
三相电流采样必须在PWM载波周期的特定时刻进行。为什么?因为逆变器开关动作会产生巨大的共模干扰,如果采样窗口落在开关瞬态上,读到的就是噪声而非真实电流。
我见过一个项目,工程师用定时器中断触发ADC,频率设成10kHz,PWM载波也是10kHz。结果每次采样都恰好落在开关动作附近,电流波形像被狗啃过。正确的做法是:用PWM定时器的“下溢事件”或“周期匹配事件”触发ADC,确保采样发生在开关管导通稳定之后。
// 以STM32为例,配置ADC触发源为TIM1的TR