Skip to content

踩坑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。

解决办法 ​

  1. 配置STM32每1ms触发一次systick中断,在该ISR中将全局超时变量递减到0。
  2. 在霍尔脉冲捕获比较ISR中,将同一全局变量设置为超时值,例如100。
  3. 查询霍尔频率时先检查该变量;若为0则返回0,否则返回上次测得频率。
  4. 原文中最慢检测周期约73.2ms,使用100ms超时作为缓冲。

原问题作者:Dibly;采纳答案作者:Dibly。原内容依 CC BY-SA 4.0 授权,本页摘要同样依 CC BY-SA 4.0 授权。

来源

本页事实对应的公开页面,以原文为准。

  1. Robotics Stack Exchange #12847:Handling PID DC motor control at low speeds访问 2026-10-22