Link

电流检测

Arduino SimpleFOClibrary 的目标是支持至少三种最标准的电流检测方式来实现 FOC:

截至目前(查看版本 ),Arduino SimpleFOClibrary 几乎在所有平台上都支持串联电流检测,在 ESP32 开发板、stm32(f1、f4 和 g4 系列 - 单电机)、SAMD21(单电机)以及基于 STM32 的 B-G431B-ESC1 开发板(单电机)上支持低侧电流检测。

每个电流检测类都将实现 FOC 算法简单且稳健实现所需的所有必要功能:

  • 硬件配置
    • ADC 分辨率和频率
    • 自动零偏移检测
  • 驱动器同步
    • ADC 采集事件触发
    • 与驱动器相位的自适应对齐
  • 读取相电流
    • 电流矢量幅度计算
    • FOC 的 D 和 Q 电流计算

每个已实现的类都可以作为独立类使用,并且可以用于在 Arduino SimpleFOClibrary 范围之外读取 BLDC 驱动器输出的电流值,参见 utils > current_sense_test 中的示例代码。 为了使 FOC 算法工作,电流检测类会链接到 BLDCMotor 类,该类使用驱动器读取 FOC 电流。

🎯 我们的实现目标

电流检测代码的编写方式将尽可能支持市面上的各种不同驱动器,并且完全可互换。由于不同 MCU 架构的 ADC 采集在硬件实现上存在很大差异,以及不同电流检测方法对驱动器/ADC 同步的要求也大不相同,因此这项任务可能是 SimpleFOClibrary 迄今为止最复杂的挑战之一。因此,这项工作将分阶段进行,每个版本都会提供更好的支持。请务必关注我们的 github 并查看版本

另外,也请关注我们的社区论坛,那里有很多关于电流检测及其应用的讨论!

各 MCU 架构的电流检测支持情况

MCU串联式低侧高侧
Arduino(8 位)✔️
Arduino DUE✔️
stm32(一般而言)✔️
stm32f1 系列✔️✔️(单电机)
stm32f4 系列✔️✔️(单电机)
stm32g4 系列✔️✔️(单电机)
stm32l4 系列✔️✔️(单电机)
stm32f7 系列✔️✔️(单电机)
stm32h7 系列✔️✔️(单电机)
stm32 B_G431B_ESC1✔️(单电机)
esp32/esp32s3✔️✔️
esp32s2/esp32c3✔️
esp8266
samd21✔️✔️(单电机)
samd51✔️
teensy3✔️
teensy4✔️✔️(单电机)
Raspberry Pi Pico✔️
Portenta H7✔️
nRF52✔️
Renesas(UNO R4)

注:未来版本将添加对 Renesas MCU 的电流检测支持。

深入了解

有关电流检测及其与 FOC 和运动集成的更多理论解释和源代码实现,请查看深入了解部分