STM32 電機教程 22 - 基於ST MCLIB無感FOC算法變有感(HALL)FOC算法

前言

      磁場定向控制又稱矢量控制(FOC, 本質上爲控制定子電流的幅度和相位,使之產生的磁場和轉子的磁場正交,以產生最大的扭矩. PMSM的磁場定向控制框圖如下圖所示:

第21講對比分析了基於ST MotorControl Workbench實現的單電阻FOC有感(hall)算法及單電阻FOC無感算法在代碼上的具體差異,知道了其核心差異在MC_Task.C文件中對電機轉子位置及轉速計算上的差異,那麼是否將可將無感FOC的代碼手動修改成有感(HALL或其它位置傳感器)代碼呢,答案是肯定的。本節就讓我們一起將20講的無感FOC代碼手動修改成19講有感(HALL)算法,並讓電機成功運轉起來。

本節同樣用到Beyond Compare文件對比分析工具,對第19、20講的代碼進行差異分析。並用Beyond Compare工具快速將第20講的代碼修改成有感(HALL)FOC算法,好了,直接進入主題。

上一講我們對比分析後發現第19講的有感FOC算法和第20講的無感FOC算法在程序代碼上的差異主要集中於INC和SRC兩個文件夾中,其中inc文件夾中的主要不同集中在drive_parameters.h、main.h、mc_config.h、parameters_conversion.h、pmsm_motor_parameters.h五個文件;Src文件夾中的主要不同集中在main.c、mc_config.c、mc_tasks.c、stm32f1xx_hal_msp.c、stm32f10x_mc_it.c、user_interface.c六個文件中

直接複製第20講的工程文件夾,並重命名爲Motor22,將其中的文件名也改成Motor22:

用Beyond Compare工具以文件夾比如方式載入motor19和motor20兩個文件夾:

以motor19中main.h爲模板文件,完成對Motor22中main.h文件的修改:

按照main.h的修改模式,完成mc_config.h、parameters_conversion.h兩個文件的修改操作drive_parameters.h和pmsm_motor_parameters.h中一些配置參數在有感(HALL)FOC算法中同樣適用,所以這兩個文件可以不進行修改即可。

      以同樣的方式對Src文件夾中的main.c、mc_config.c、mc_tasks.c、stm32f1xx_hal_msp.c、stm32f10x_mc_it.c、user_interface.c進行修改,其中user_interface.c不進行修改亦可

修改完成後打開KEILL工程文件,將工程目標名改成Motor22(非必需):

直接編譯工程,提示一些鏈接錯誤:

對於motor19的KEILL工程發現,motor19KEILL工程比motor22KEILL工程多包含了Hall_speed_pos_fdbk.c文件,該文件位置/MCSDK_v5.3.3/MotorControl/MCSDK/MCLib/Any/Src/文件夾中:

手動給motor12KEILL工程增加Hall_speed_pos_fdbk.c文件:

給motor22KEILL工程增加Hall_speed_pos_fdbk.C文件後重新編譯,編譯成功:

燒錄固件到開發板,並啓動程序 :

按開發板上的電機啓動按鍵,可以看到電機成功運轉:

用MotorControl Workbench工具進行控制與查看波形,功能也正常,電機表機也沒有了之前純無感FOC算法中從正速度切換到負速度時電機易死機問題:

到此,基於ST MCLIB的無感FOC算法代碼變有感(hall)FOC算法實驗就完成了。也歡迎大家留言!!最後喜歡這個公衆號的同學們記得加關注了,每天都會有技術乾貨推出!!

 

文中源碼及資料下載,關注十三公衆號:

在公衆號裏給十三發送 “下載|STM32 電機教程 22” :

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章