一种基于脉宽判定的电机霍尔反馈抗干扰方法
电机霍尔反馈线被干扰后,最直接的问题是计数乱跳。中断只看到边沿,不知道这个边沿来自真实霍尔信号,还是来自线束、电源、地弹噪声带来的窄毛刺。
处理规则:边沿触发后先判断目标电平持续时间。脉宽合格再计数,脉宽太窄直接丢弃。
适用场景
定时器输入滤波适合通道少、引脚固定的场景。多电机项目里,一个电机可能有多路霍尔输入,几台电机加起来很快就超过定时器通道数量。还有一些 IO 映射不到定时器输入,定时器本身也可能已经用于 PWM、编码器或周期任务。
这种情况下,可以把霍尔输入当普通 IO 处理,使用上下边沿中断,再配一个独立的微秒级时间基准。
实现思路
每一路霍尔输入只需要保存两类信息:当前状态,以及进入目标电平的时间。
以低电平有效为例:下降沿记录时间,上升沿计算低电平持续时间。脉宽达标,计数加一;脉宽太窄,直接丢弃。

不要只比较当前边沿和上一次有效边沿的间隔。两个窄干扰脉冲之间可能隔得很久,边沿间隔看起来合格,单个脉冲宽度仍然非法。要检查脉冲本身的宽度。
多电机、多霍尔输入时,每一路独立判断。不同电机、不同输入可以使用不同的目标电平和阈值。
阈值设置原则
阈值按最高转速来定。电机转得越快,真实霍尔脉冲越窄。
调试时先让电机跑到允许的最高转速,用示波器看霍尔反馈。把余晖开到较长时间或最大余晖,找真实霍尔脉冲里最短的低电平宽度。阈值要低于这个宽度,并留出余量,避免转速波动、负载变化和测量误差造成误判。
阈值定完后,用示波器脉宽触发复查。触发条件设在阈值附近,观察是否还能抓到真实霍尔脉冲。还能抓到,阈值可能偏大;只抓到窄毛刺,阈值基本可用。
软件里可以保留一个拒绝计数,只做调试诊断,不参与控制。
和硬件滤波配合
软件判定只是计数入口的保护。上拉、下拉、线束屏蔽、接口保护、RC 处理、施密特输入仍然要按硬件问题处理。
硬件先减少干扰,软件再过滤非法计数。多电机、多路霍尔反馈、定时器资源紧张时,这个结构比较好扩展。
本文由 AI 辅助生成,可能存在错误或遗漏,请以实际资料和官方文档为准。