外观
踩坑Robotics Stack Exchange2017-07-28
低速时霍尔测速未更新导致PID读到旧值
本文由 AI 根据公开内容整理,可能有误,请以原文为准:Handling PID DC motor control at low speeds(Robotics Stack Exchange #12847)
状态:已解决
问题
4轮车后轮用PID控制直流电机,霍尔传感器每转2个脉冲;低速时PID以50Hz运行但捕获比较未更新,可能在电机停转后仍返回上次频率。
环境
STM32 Cortex-M3;霍尔传感器;PID 50Hz;100%占空比240Hz,低速约14.33Hz。
解决办法
- 配置STM32每1ms触发一次
systick中断,在该ISR中将全局超时变量递减到0。 - 在霍尔脉冲捕获比较ISR中,将同一全局变量设置为超时值,例如
100。 - 查询霍尔频率时先检查该变量;若为0则返回0,否则返回上次测得频率。
- 原文中最慢检测周期约73.2ms,使用100ms超时作为缓冲。
原问题作者:Dibly;采纳答案作者:Dibly。原内容依 CC BY-SA 4.0 授权,本页摘要同样依 CC BY-SA 4.0 授权。
来源
本页事实对应的公开页面,以原文为准。