STM32 電機教程 33 - 無刷電機無感控制快速實現

前言

上一節《STM32 電機教程 32 - 基於ST X-CUBE-SPN7 無刷無感電機庫的電機驅動實現》給大家分享了ST的官方的無刷電機無感控制實現方案(基於NUCLEO-F103RB和X-NUCLEO-IHM07M1 3SH開發板),並給大家簡要地介紹了ST官方源碼工程結構和電機關鍵參數據的配置,給大家演示了基於ST無刷無感電機控制庫實現的電機控制效果。

說實話,個人對於ST官方庫的控制效果還是有些不滿意的,主要有1,電機啓動時有較明顯的停頓,2,啓動成功機率也不是很好(當然這也有可能是個人的一些關鍵參數沒設置好),3,個人覺得ST的官方庫把無刷無感控制方案實現地過於複雜,也不容易看懂,移植起來也很不方便,加上個人並未找到ST無刷無感控制方案官方庫的原理說明文檔。

基於上述因素,本人還是決定自己動手實現無刷電機無感控制方案源碼。該源碼基於《STM32 電機教程 29 - 無刷無感入門1》進行補充實現。開始之前先給大家簡要介紹一下本節無感無刷電機無感控制的大致原理:

在X-NUCLEO-IHM07M1 3SH開發板上,有如下可檢測三相反電動勢的電路圖:

直接使用《STM32 電機教程 29 - 無刷無感入門1》一節的程序以控制步進電機的方式驅動無刷電機,其相電壓OUTX及與之對應的BEMFX的波形如下:

而使用帶hall傳感方式控制無刷電機,程序可以用之前的《STM32 電機教程 11 - BLDC 6 步方波開環速度控制》一節的程序,其相電壓OUTX及與之對應的BEMFX的波形如下:

通過上面的對對,使用hall位置傳感方式下,BEMFX上的反電機勢波形(圖中紅色粗線部分)在6步對應的OUTX關閉時(高阻態)時前後兩個波形大體是對稱,且反電動勢過零點並不對是在所在步的中間位置,電機電流也小了很多。

即然我們有電機可以檢測到反電動勢,那麼就可以通過程序調整電機6步換相時間,以實現反電動勢波形表示出來的特徵與帶HALL位置傳感控制時相似,從而實現相近的控制效果。這也是本節核心思想,類似的控制思想在SILICON LABS的《SENSORLESS BRUSHLESS DC MOTOR REFERENCE DESIGN》也有提到,在本系列教程的第32講附件包含該文檔。

 

接下來就是實現環節,本節所用電機爲2836無刷電機,電機有兩組線(hall傳感器線和電機三相線),工作電壓24V,最大轉速12000rpm:

 

示例詳解

本節用到ST官方推出的NUCLEO-F103RB和X-NUCLEO-IHM07M1 3SH 開發板。

 

 

 

  1. 準備操作

按下圖連接好 NUCLEO-F103RB、X-NUCLEO-IHM07M1和電機根據電機的工作電壓提供正確的電源,如我所演示電機工作電壓是24V,即需給X-NUCLEO-IHM07M1的J1接口提供24V電源,同時X-NUCLEO-IHM07M1一些跳帽設置爲:J5,J6選擇1sh, 兩個FOC跳帽都不接。

先簡要介紹本節項目工程所用到的硬件資源,及其參數配置:

 

上面這個詳細配置可以看附件中的.IOC文件,也可以直接查看對應源代碼的對應模塊文件,關於無感無刷電機實現,核心是BLDC.C 和 stm32f1xx_it.c文件:

BldcMove函數簡單地實現了對電機從空閒到對齊-》啓動-》運行控制狀態機,因本人經歷有限,這裏只是實現了簡單的運動功能,關於更多的如異常保護,出錯檢測等功能還需自行去實現:

在bldc.h文件中定義了一些工程電機控制相關的宏及結構體,代碼量較少,一看便知。

OK,代碼就差不對介紹到這,更多的細節還需同學位自行去閱讀代碼(因個人經歷有限,代碼較爲粗糙,還請大家將就着看!!),同時大家手頭的電機可能各不相同,如果該程序不能直接驅動您的電機,記得適當修改Bldc.H中電機參數中的相關參數。

 

編譯工程後下載到開發板後即可成功驅動電機,按STM32F103RB-Nucleo開發板上的藍色按鍵可以啓動或停止電機,調節X-NUCLEO-IHM07M1 3SH上藍色電位器可以對電機進行調速!

下面給出一些電機成功驅動後的效果圖:

 

 

 

最後,本節完!同時我們的 《STM32 電機教程》第一期系列教程先更新到此,謝謝大家的一路支持。接下來我們將會推出更多的技術教程,也希望大家能一如既往地支持我們,謝謝大家。

 

老規矩,在公衆號裏給十三發送 “下載|STM32 電機教程33” 即可下載文中資料及程序源碼。

微信關注圖中張十三的博客公衆號:

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