STM32 电机教程 24 - ST MCLIB实战之无感变绝对式位置传感器
前言
上一節(jié)給大講演示了如何用ST MotorControl Workbench創(chuàng)建基本STM32F103C8T6芯片的FOC工程并根據(jù)實(shí)際電路成功創(chuàng)建了工程,但是實(shí)際電路使用的是絕對式磁編碼器作為電機(jī)位置及速度檢測傳感器,而ST MotorControl Workbench工程中并沒有對應(yīng)的選項(xiàng)可選,因此上一節(jié)所創(chuàng)建的工程是無位置傳感方式的FOC工程,本節(jié)將基于上一節(jié)的工程,給大家講解如何手動(dòng)將工程修改成絕對式位置傳感器方案FOC,本節(jié)操作過程及原理可參看《STM32 電機(jī)教程 22 - 基于ST MCLIB無感FOC算法變有感(HALL)FOC算法》,或《如何在 MCSDK 5.x 中增加絕對位置編碼器https://mp.weixin.qq.com/s/9uqYjkZMgRmzcfkU2j59hQ》。
?
下面直接進(jìn)入正題,上一節(jié)已經(jīng)介紹過原理圖所用的磁編碼芯片是TLE5012B,關(guān)于芯片的使用和說明大家可以自行去英飛凌官網(wǎng)下載相應(yīng)資料。
針對TLE5012B芯片事件寫好其驅(qū)動(dòng),本示例示事先準(zhǔn)好幾個(gè)文件:
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芯片驅(qū)動(dòng),spi_pwm_encoder.c 是基于tle5012b.c中接口完成電機(jī)電角度與機(jī)械角度的獲取,abs_encoder_pos_fdbk.c則是基于spi_pwm_encoder.c進(jìn)一步封裝,完成電機(jī)轉(zhuǎn)速計(jì)算等功能,mc_position.c是電機(jī)位置控制功能代碼。將上面四個(gè)文件手動(dòng)加入工程中(.c放在SRC文件夾下,.h放在INC文件夾下,并在Keill中手動(dòng)加入四個(gè)C文件):
接下來按照《STM32 電機(jī)教程 22 - 基于ST MCLIB無感FOC算法變有感(HALL)FOC算法》,或《如何在 MCSDK 5.x 中增加絕對位置編碼器》內(nèi)容,修改MC_tasck.c文件:
1,在MC_tasck.c文件頭部加入對應(yīng)頭文件:
2,在MC_Boot函數(shù)中,將無感部分的初始化功能代碼夫換成絕對多磁編碼器的初媽化相關(guān)代碼:
3.在TSK_MediumFrequencyTaskM1函數(shù)中:
3.在TSK_FOC_CalcCurrRef函數(shù)中做如下修改:
3.在TSK_HighFrequencyTask函數(shù)中做如下修改:
最后在MAIN.C中加入如下代碼:
編譯,成功,如果你運(yùn)動(dòng)好,電機(jī)接線參數(shù)等都沒有問題的話,差不多就可以順利轉(zhuǎn)動(dòng)起來了,如果還不行,也不要擔(dān)心,下面的章節(jié)將一點(diǎn)點(diǎn)教大家怎么調(diào)試讓電機(jī)轉(zhuǎn)動(dòng)起來:
到此,將其無感方式變成絕對式磁編碼位置檢測方式內(nèi)容就完成了。也歡迎大家留言!!最后喜歡這個(gè)公眾號(hào)的同學(xué)們記得加關(guān)注了,每天都會(huì)有技術(shù)干貨推出!!
?
文中源碼及資料下載,關(guān)注十三公眾號(hào):
在公眾號(hào)里給十三發(fā)送 “下載|STM32 電機(jī)教程 24” :
?
?
總結(jié)
以上是生活随笔為你收集整理的STM32 电机教程 24 - ST MCLIB实战之无感变绝对式位置传感器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32 电机教程 23 - ST M
- 下一篇: STM32 电机教程 25 - ST M