前言
上一節給大講演示瞭如何用ST MotorControl Workbench創建基本STM32F103C8T6芯片的FOC工程並根據實際電路成功創建了工程,但是實際電路使用的是絕對式磁編碼器作爲電機位置及速度檢測傳感器,而ST MotorControl Workbench工程中並沒有對應的選項可選,因此上一節所創建的工程是無位置傳感方式的FOC工程,本節將基於上一節的工程,給大家講解如何手動將工程修改成絕對式位置傳感器方案FOC,本節操作過程及原理可參看《STM32 電機教程 22 - 基於ST MCLIB無感FOC算法變有感(HALL)FOC算法》,或《如何在 MCSDK 5.x 中增加絕對位置編碼器https://mp.weixin.qq.com/s/9uqYjkZMgRmzcfkU2j59hQ》。
下面直接進入正題,上一節已經介紹過原理圖所用的磁編碼芯片是TLE5012B,關於芯片的使用和說明大家可以自行去英飛凌官網下載相應資料。
針對TLE5012B芯片事件寫好其驅動,本示例示事先準好幾個文件:
abs_encoder_pos_fdbk.h
spi_pwm_encoder.h
mc_position.h
tle5012b.h
abs_encoder_pos_fdbk.c
spi_pwm_encoder.c
mc_position.c
tle5012b.c
其中tle5012b.c 和tle5012b.h是TLE5012b芯片驅動,spi_pwm_encoder.c 是基於tle5012b.c中接口完成電機電角度與機械角度的獲取,abs_encoder_pos_fdbk.c則是基於spi_pwm_encoder.c進一步封裝,完成電機轉速計算等功能,mc_position.c是電機位置控制功能代碼。將上面四個文件手動加入工程中(.c放在SRC文件夾下,.h放在INC文件夾下,並在Keill中手動加入四個C文件):
接下來按照《STM32 電機教程 22 - 基於ST MCLIB無感FOC算法變有感(HALL)FOC算法》,或《如何在 MCSDK 5.x 中增加絕對位置編碼器》內容,修改MC_tasck.c文件:
1,在MC_tasck.c文件頭部加入對應頭文件:
2,在MC_Boot函數中,將無感部分的初始化功能代碼夫換成絕對多磁編碼器的初媽化相關代碼:
3.在TSK_MediumFrequencyTaskM1函數中:
3.在TSK_FOC_CalcCurrRef函數中做如下修改:
3.在TSK_HighFrequencyTask函數中做如下修改:
最後在MAIN.C中加入如下代碼:
編譯,成功,如果你運動好,電機接線參數等都沒有問題的話,差不多就可以順利轉動起來了,如果還不行,也不要擔心,下面的章節將一點點教大家怎麼調試讓電機轉動起來:
到此,將其無感方式變成絕對式磁編碼位置檢測方式內容就完成了。也歡迎大家留言!!最後喜歡這個公衆號的同學們記得加關注了,每天都會有技術乾貨推出!!
文中源碼及資料下載,關注十三公衆號:
在公衆號裏給十三發送 “下載|STM32 電機教程 24” :