009、PWM信号与电机驱动基础一、一次深夜的调试事故凌晨两点,示波器屏幕上跳动的波形让我后背发凉。一个直流电机在低速运行时发出刺耳的啸叫,电流波形像被狗啃过一样参差不齐。我盯着代码里那个占空比寄存器——0x00FF,理论上应该输出50%占空比,但实际电机却在剧烈抖动。这不是我第一次在PWM上栽跟头。三年前刚入行时,我甚至以为PWM就是简单的“高电平时间除以周期”,直到一块价值两千块的驱动板在我面前冒了烟。从那以后,我养成了一个习惯:写PWM代码前,先画波形图,再算寄存器值,最后才动键盘。二、PWM不是你想的那样很多人把PWM理解成“开关电源”,这没错,但太粗糙了。真正的PWM信号有三个核心参数:频率、占空比、分辨率。这三个参数互相制约,就像三根绳子拴在同一根柱子上,拉紧一根必然影响另外两根。频率决定了电机转动的“颗粒度”。频率太低,电机会一顿一顿地走,像得了帕金森;频率太高,MOS管的开关损耗会让你散热片烫得能煎鸡蛋。我常用的经验值:直流有刷电机1kHz-20kHz,步进电机20kHz-40kHz,无刷电机8kHz-16kHz。注意,超过人耳听觉上限的20kHz可以避免电机啸叫,但代价是驱动芯片的功耗会上升15%-20%。占空比就是电压的“平均值”。50%占空比在12V电源下等效6V,但这里有个坑——电机是感性负载,电流不会突变。实际有效电压不是简单的Vcc×D,还要考虑死区时间和MOS管导通压降。我见过有人用万用表量电机两端电压,发现和计算值差了0.7V,然后怀疑人生。别这样写代码,老老实实加补偿。分辨率