STM32 电机教程 33 - 无刷电机无感控制快速实现
前言
上一節(jié)《STM32 電機(jī)教程 32 - 基于ST X-CUBE-SPN7 無刷無感電機(jī)庫的電機(jī)驅(qū)動實現(xiàn)》給大家分享了ST的官方的無刷電機(jī)無感控制實現(xiàn)方案(基于NUCLEO-F103RB和X-NUCLEO-IHM07M1 3SH開發(fā)板),并給大家簡要地介紹了ST官方源碼工程結(jié)構(gòu)和電機(jī)關(guān)鍵參數(shù)據(jù)的配置,給大家演示了基于ST無刷無感電機(jī)控制庫實現(xiàn)的電機(jī)控制效果。
說實話,個人對于ST官方庫的控制效果還是有些不滿意的,主要有1,電機(jī)啟動時有較明顯的停頓,2,啟動成功機(jī)率也不是很好(當(dāng)然這也有可能是個人的一些關(guān)鍵參數(shù)沒設(shè)置好),3,個人覺得ST的官方庫把無刷無感控制方案實現(xiàn)地過于復(fù)雜,也不容易看懂,移植起來也很不方便,加上個人并未找到ST無刷無感控制方案官方庫的原理說明文檔。
基于上述因素,本人還是決定自己動手實現(xiàn)無刷電機(jī)無感控制方案源碼。該源碼基于《STM32 電機(jī)教程 29 - 無刷無感入門1》進(jìn)行補充實現(xiàn)。開始之前先給大家簡要介紹一下本節(jié)無感無刷電機(jī)無感控制的大致原理:
在X-NUCLEO-IHM07M1 3SH開發(fā)板上,有如下可檢測三相反電動勢的電路圖:
直接使用《STM32 電機(jī)教程 29 - 無刷無感入門1》一節(jié)的程序以控制步進(jìn)電機(jī)的方式驅(qū)動無刷電機(jī),其相電壓OUTX及與之對應(yīng)的BEMFX的波形如下:
而使用帶hall傳感方式控制無刷電機(jī),程序可以用之前的《STM32 電機(jī)教程 11 - BLDC 6 步方波開環(huán)速度控制》一節(jié)的程序,其相電壓OUTX及與之對應(yīng)的BEMFX的波形如下:
通過上面的對對,使用hall位置傳感方式下,BEMFX上的反電機(jī)勢波形(圖中紅色粗線部分)在6步對應(yīng)的OUTX關(guān)閉時(高阻態(tài))時前后兩個波形大體是對稱,且反電動勢過零點并不對是在所在步的中間位置,電機(jī)電流也小了很多。
即然我們有電機(jī)可以檢測到反電動勢,那么就可以通過程序調(diào)整電機(jī)6步換相時間,以實現(xiàn)反電動勢波形表示出來的特征與帶HALL位置傳感控制時相似,從而實現(xiàn)相近的控制效果。這也是本節(jié)核心思想,類似的控制思想在SILICON LABS的《SENSORLESS BRUSHLESS DC MOTOR REFERENCE DESIGN》也有提到,在本系列教程的第32講附件包含該文檔。
?
接下來就是實現(xiàn)環(huán)節(jié),本節(jié)所用電機(jī)為2836無刷電機(jī),電機(jī)有兩組線(hall傳感器線和電機(jī)三相線),工作電壓24V,最大轉(zhuǎn)速12000rpm:
?
示例詳解
本節(jié)用到ST官方推出的NUCLEO-F103RB和X-NUCLEO-IHM07M1 3SH 開發(fā)板。
?
?
?
準(zhǔn)備操作
按下圖連接好 NUCLEO-F103RB、X-NUCLEO-IHM07M1和電機(jī)根據(jù)電機(jī)的工作電壓提供正確的電源,如我所演示電機(jī)工作電壓是24V,即需給X-NUCLEO-IHM07M1的J1接口提供24V電源,同時X-NUCLEO-IHM07M1一些跳帽設(shè)置為:J5,J6選擇1sh, 兩個FOC跳帽都不接。
先簡要介紹本節(jié)項目工程所用到的硬件資源,及其參數(shù)配置:
?
上面這個詳細(xì)配置可以看附件中的.IOC文件,也可以直接查看對應(yīng)源代碼的對應(yīng)模塊文件,關(guān)于無感無刷電機(jī)實現(xiàn),核心是BLDC.C 和 stm32f1xx_it.c文件:
BldcMove函數(shù)簡單地實現(xiàn)了對電機(jī)從空閑到對齊-》啟動-》運行控制狀態(tài)機(jī),因本人經(jīng)歷有限,這里只是實現(xiàn)了簡單的運動功能,關(guān)于更多的如異常保護(hù),出錯檢測等功能還需自行去實現(xiàn):
在bldc.h文件中定義了一些工程電機(jī)控制相關(guān)的宏及結(jié)構(gòu)體,代碼量較少,一看便知。
OK,代碼就差不對介紹到這,更多的細(xì)節(jié)還需同學(xué)位自行去閱讀代碼(因個人經(jīng)歷有限,代碼較為粗糙,還請大家將就著看!!),同時大家手頭的電機(jī)可能各不相同,如果該程序不能直接驅(qū)動您的電機(jī),記得適當(dāng)修改Bldc.H中電機(jī)參數(shù)中的相關(guān)參數(shù)。
?
編譯工程后下載到開發(fā)板后即可成功驅(qū)動電機(jī),按STM32F103RB-Nucleo開發(fā)板上的藍(lán)色按鍵可以啟動或停止電機(jī),調(diào)節(jié)X-NUCLEO-IHM07M1 3SH上藍(lán)色電位器可以對電機(jī)進(jìn)行調(diào)速!
下面給出一些電機(jī)成功驅(qū)動后的效果圖:
?
?
?
最后,本節(jié)完!同時我們的 《STM32 電機(jī)教程》第一期系列教程先更新到此,謝謝大家的一路支持。接下來我們將會推出更多的技術(shù)教程,也希望大家能一如既往地支持我們,謝謝大家。
?
老規(guī)矩,在公眾號里給十三發(fā)送 “下載|STM32 電機(jī)教程33” 即可下載文中資料及程序源碼。
微信關(guān)注圖中張十三的博客公眾號:
總結(jié)
以上是生活随笔為你收集整理的STM32 电机教程 33 - 无刷电机无感控制快速实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经验教训 | STM32 异常之BFAR
- 下一篇: excel 多项式拟合数据