STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法
前言
????? 磁場定向控制又稱矢量控制(FOC), 本質(zhì)上為控制定子電流的幅度和相位,使之產(chǎn)生的磁場和轉(zhuǎn)子的磁場正交,以產(chǎn)生最大的扭矩. PMSM的磁場定向控制框圖如下圖所示:
第21講對比分析了基于ST MotorControl Workbench實現(xiàn)的單電阻FOC有感(hall)算法及單電阻FOC無感算法在代碼上的具體差異,知道了其核心差異在MC_Task.C文件中對電機轉(zhuǎn)子位置及轉(zhuǎn)速計算上的差異,那么是否將可將無感FOC的代碼手動修改成有感(HALL或其它位置傳感器)代碼呢,答案是肯定的。本節(jié)就讓我們一起將20講的無感FOC代碼手動修改成19講有感(HALL)算法,并讓電機成功運轉(zhuǎn)起來。
本節(jié)同樣用到Beyond Compare文件對比分析工具,對第19、20講的代碼進行差異分析。并用Beyond Compare工具快速將第20講的代碼修改成有感(HALL)FOC算法,好了,直接進入主題。
上一講我們對比分析后發(fā)現(xiàn)第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六個文件中。
直接復(fù)制第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中一些配置參數(shù)在有感(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工程發(fā)現(xiàn),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文件后重新編譯,編譯成功:
燒錄固件到開發(fā)板,并啟動程序 :
按開發(fā)板上的電機啟動按鍵,可以看到電機成功運轉(zhuǎn):
用MotorControl Workbench工具進行控制與查看波形,功能也正常,電機表機也沒有了之前純無感FOC算法中從正速度切換到負速度時電機易死機問題:
到此,基于ST MCLIB的無感FOC算法代碼變有感(hall)FOC算法實驗就完成了。也歡迎大家留言!!最后喜歡這個公眾號的同學(xué)們記得加關(guān)注了,每天都會有技術(shù)干貨推出!!
?
文中源碼及資料下載,關(guān)注十三公眾號:
在公眾號里給十三發(fā)送 “下載|STM32 電機教程 22” :
?
?
總結(jié)
以上是生活随笔為你收集整理的STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32 电机教程 21 - 基于ST
- 下一篇: STM32 电机教程 23 - ST M