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.libarm_cortexM4l_math.libarm_cortexM4b_math.libarm_cortexM3l_math.libarm_cortexM3b_math.libarm_cortexM0l_math.libarm_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管柵極驅動波形: