080 堵转检测与处理——从一次电机冒烟事故说起那是一个周五下午,实验室里弥漫着淡淡的焦糊味。我盯着示波器上那条诡异的电流波形,手边的无刷电机外壳已经烫得不敢碰。事后复盘,问题出得极其简单——转子被一根掉落的螺丝卡住,而我的堵转检测代码,在“检测到堵转”之后,居然还在以50%的占空比持续输出。电机没烧,算我运气好。那次之后,我花了整整两周重写了堵转检测与处理的逻辑。今天这篇笔记,就是那两周踩过的坑和最终沉淀下来的东西。堵转的本质:不是“转不动”,而是“电流失控”很多人把堵转简单理解为“电机不转了”。在嵌入式层面,更准确的描述应该是:给定转速指令后,实际转速反馈长时间为零或远低于目标值,同时相电流急剧上升。堵转发生时,反电动势消失,电机绕组相当于纯电阻负载。这时候如果PWM占空比不变,电流会按照I = V/R迅速飙升。R是绕组直流电阻,通常只有零点几欧姆,12V供电下理论电流能到几十安培。MOS管和绕组的热容量有限,几秒钟就能冒烟。我见过最蠢的写法是:if(speed_feedbackSPEED_THRESHOLD)