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 開發板。
?
?
?
準備操作
按下圖連接好 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” 即可下載文中資料及程序源碼。
微信關注圖中張十三的博客公眾號:
總結
以上是生活随笔為你收集整理的STM32 电机教程 33 - 无刷电机无感控制快速实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经验教训 | STM32 异常之BFAR
- 下一篇: excel 多项式拟合数据