电机的启停瞬间工作电流比较大,也会产生一些干扰信号
解决问题之前先要定位问题在哪里。电机启动瞬间电流特别大,如果电源供电不足,会把电压瞬间拉低,导致单片机发生低电压复位。如果电机启停瞬间产生的EMI干扰信号通过VDD窜入单片机,也会使单片机程序跑飞或者复位。
示波器测量单片机VDD
用示波器测量单片机VDD,可以有效的发现问题,观察电机启停瞬间VDD有波形。如果VDD在电机启停瞬间有拉低,很大可能是单片机发生了低电压复位。可以把单片机连接到仿真器,在程序里设置断点,进一步确定电机启停瞬单片机是否发生复位。
如果在电机启停瞬间有尖峰出现,说明电机发生的EMI干扰信号已经通过传导或者辐射干扰到单片机的电源VDD了。同样可以把单片机连接到仿真器,在程序里设置断点,进一步确定电机启停瞬单片机程序跑飞还是受干扰复位了。
避免单片机低电压复位
如果电压的变化不是太大,可以给单片机的VDD增加一个容量较大的电容。电压拉低一瞬间,电容会给单片机维持供电,避免发生低电压复位;如果电压拉低实在太严重,就需要检查电源的设计是否合理了。
滤除电机产生的EMI干扰
针对电机产生的EMI干扰信号的频率,加入适合的高频电容、电感、磁珠。滤除窜进单片机VDD的干扰信号。
单片机复位后自恢复参数
经过改善,消除了低电压复位或者EMI干扰是最好的解决方法。如果实在没办法解决问题,还可以通过软件来处理。打开单片机的看门狗,程序执行电机启、停指令前先把重要的参数保存下来;单片机发生复位后,根据状态标志位判断是否是电机启停产生的非正常复位,如果是非正常的复位,恢复之前保存的参数再继续运行程序。