无刷电机控制 - 基于STM32F405+CubeMX+HAL库+SimpleFOC04,完成霍尔传感器的驱动代码
导言
如上所示,本次实验使用中空三相无刷电机 + STM32F405的FOC电机控制板。
RTT Viewer
项目地址:
- Gitee (国内): https://gitee.com/wallace89/MCU_Develop/tree/main/simplefoc17_stm32f405_hall_sensor
- GitHub: https://github.com/q164129345/MCU_Develop/tree/main/simplefoc17_stm32f405_hall_sensor
一、电路分析
如上所示:
PB4
是M0_ENC_A(连接霍尔传感器的A)PB5
是M0_ENC_B(连接霍尔传感器的B)PC9
是M0_ENC_Z(连接霍尔传感器的C)3.3V
接霍尔传感器的+极GND
接霍尔传感器的-极
二、CubeMX
2.1、GPIO
2.2、NVIC
至此,霍尔传感器的GPIO口配置完毕。
三、移植simpleFOC的HallSensor代码
四、代码
从simpleFOC移植过来的代码没办法直接使用,根本原因是平台的接口不一样。在硬件层上的接口要从Arduino改为STM32的HAL库。
如果后续想改为LL库的话,用LL库的接口替换掉HAL库的接口。另外值得注意的是,HAL库在中断里自动帮我们清除了中断标志,但是LL库的中断回调的话,我们得自己清除中断标志位。
4.1、HallSensor.h
4.2、HallSensor.cpp
4.3、user_main.cpp