HAL STM32F4 +ARM DSP库跑SVPWM开环速度测试
- ✨本篇硬件电路和代码来源于此开源项目:
https://github.com/MengYang-x/STM3F401-FOC/tree/main
- 📍硬件电路和项目介绍,立创开源广场:
https://oshwhub.com/shadow27/tai-yang-neng-wu-ren-chuan
- 🌼测试效果:
- 🌿通过
vofa+
输出的三路马鞍波
波形:
- 📝原作者介绍过的内容,这里就不多做介绍了,详情可以前往立创开源主页了解详情。程序这一块,主要针对stm32F4系列。
📘测试条件
-
🌿STM32F4或者M4内核的相关型号的mcu即可。工程时基于HAL库STM32CubeMX生产的配置工程,移植非常简单。
-
🌿有感或无感无刷电机,个人测试使用的是:
2204-1400KV
无感无刷电机,参数:12N14P(12槽14极),也就是,极对数是14/2=7极对数。(程序中需要填写) -
🌿一块无刷电机驱动板。(可以参考原作者的硬件。)
- ✨由于原作者使用的是EG2133驱动芯片,驱动电路中上下桥是连一块的,3路PWM输出即可实现无刷电机转动,如果自己使用的是上下桥独立驱动(6路输出控制),那么需要将定时器的PWM输出通道配置为互补输出通道,(即3路互补输出),同时需要注意输出极性。
- 🌿SVPWM开环速度测试,工程中所需要的必要驱动文件:
- 🔖
MT6701
这里SVPWM开环速度测试,没有使用到,可以屏蔽掉:
- 🔖DSP库文件,可以自己从安装的Keil软件ARM文件夹内找到相关驱动库文件:例如:
D:\Keil_v5\ARM\CMSIS\DSP_Lib\Source\FastMathFunctions
;或者在STM32CubeMX
,安装的对应pack包解压文件夹内,:C:\Users\Administrator\STM32Cube\Repository\STM32Cube_FW_F4_V1.28.0\Drivers\CMSIS\DSP\Source
或者标准库STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\DSP_Lib
中找到对应的所需驱动文件。
-
- 🔖Keil ARM路径下位置:
- 🔖Keil ARM路径下位置:
- 👉也可以到ARM官方的GitHub账号(
https://github.com/ARM-software/CMSIS
)下载所有ARM Cortex-M内核的DSP外设库。
-
- 🔖STM32CubeMX,pack解压安装文件位置:
- 🔖STM32CubeMX,pack解压安装文件位置:
- 同样在标准外设库中也可以找到:
- 🌿数字信号库包含在路径:
STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\DSP_Lib
和STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\Lib
下,或者Keil安装目录下D:\Keil_v5\ARM\CMSIS\Lib\ARM
将它们拷贝到目标工程文件夹下。其中Lib文件夹中包含的是经过不同编译器编译后能够运行在Cortex-M4内核上的底层数学库,DSP_Lib文件夹中包含的是调用底层函数封装而成的API函数源码: -
- 🍃Lib文件夹中包含的底层库包括:
arm_cortexM4lf_math.lib //---->stm32f4 DSP库跑SVPWM开环速度测试需要使用到的
arm_cortexM4bf_math.lib
arm_cortexM4l_math.lib
arm_cortexM4b_math.lib
arm_cortexM3l_math.lib
arm_cortexM3b_math.lib
arm_cortexM0l_math.lib
arm_cortexM0b_math.lib
-
- 🔰对应工程中所用到的:
arm_cortexM4lf_math.lib
库文件来源。
- 🔰对应工程中所用到的:
- 🎉STM32F4 DSP和标准外设库(STSW-STM32065) ST官网下载地址:
https://www.st.com.cn/zh/embedded-software/stsw-stm32065.html
- 📚当前stm32F4 最新版本:
STSW-STM32065 STM32F4 DSP and standard peripherals library 1.9.0
链接:https://pan.baidu.com/s/1J8VD2re8SRWOGnZXZKcyvQ?pwd=o5an
提取码:o5an
🛠STM32CubeMX配置
- 🌿选择一个高级定时器:(注意这里是按照原作者的EG2133驱动芯片配置的,上下桥驱动控制端连一块,进行配置的)
- 🌿为了查看输出波形,还需要配置一个串口,方便观察波形。
⛳SVPWM开环速度测试工程说明
- 🌿待测试电机参数配置:
motor.c
中修改测试电机的极对数。
📑极对数测量
✨如果知道电机型号,可以找到对应资料查阅多更好。如果无刷电
vofa+
机外转子不是全部密封,看的到外转子内壁上永磁体的,可以直接自己数出来。上门贴了有多少块强磁铁,即可得到此数据。对应外转子密封看不到内壁磁体的测量方法:
- 🌿如果有示波器的情况下,用示波器的探头夹住电机的一根线,另一根接探头,然后旋转电机一圈,截取波形,数下峰的个数(上下峰都算),为偶数值除以2,就是电机的极对数。
- 🌿有低压直流可调电源情况下,限制一定的电流,加载一个小电压到三相中的任意两相,用手转动电机一圈,有稳定位置的个数就是极对。
- 🔧SVPWM开环速度参数设定:
OpenVelocity(6.0f); //数值越大,电机旋转的速度越快
🔬串口数据vofa+观测
-
🔨
vofa+
设置:添加波形图控件到主窗口
-
🔱设置串口端口号以及数据类型:
-
🪓🍭打开串口,并添加数据到波形图控件中:
-
🌟最终测试效果:
- ✨需要注意一点,所测得的马鞍波形,并不代表实际电机真实的驱动转动效果,电机的运转效果与驱动电路和电机参数有关,这个波形是理论推导得来的理想模型。
- 🍁在SVPWM开环速度测试运行下,无刷电机的U-V-W相波形:
- 🧨MCU 定时器对应输出通道的PWM驱动波形:
- 🥕H桥NMOS管栅极驱动波形: