▲ 點擊上方藍字關注我們,不錯過任何一篇干貨文章!
談起電機驅動器,可以稱作芯片廠商的“秀場”,幾乎每家廠商都會在其投入大量的精力和資金。但八仙過海各顯神通,每家廠商都對電機驅動有著不同的理解,電機驅動算法也是每個控制器廠商的獨門秘笈,尤其在最近有很多值得關注的新產品。
這些新產品所應對場景并不相同,采用的前沿技術也鮮有人接觸,因此,我們邀請到了工程師,對三款產品進行了全面的測評,看看具體的表現如何。
ADI TMC2208 步進電機評估板測評
更多相關測評: https://www.eeworld.com.cn/a4ePSWL
一、準備工作
這次購買有邏輯分析儀TOL-18627、電機評估板TMC2208SILENTSTEPSTICK還有一個外置按鍵。
本次評測使用的步進電機,本人珍藏的大大小小不同類型步進電機,全部可以5V工作,可以滿足TMC2208的評測要求
評測大致規劃:
1、介紹二相四線步進電機的結構及驅動原理及驅動方式的優劣性
2、介紹TMC2208的串口通訊原理及指令集,連接ESP32/藍牙模塊與手機進行藍牙通訊,直接用手機發送指令控制步進電機的運動
3、TMC2208正弦控制控制原理,優勢運用在二相四線的優勢,同時關注步進電機運行工程的噪聲和溫升
4、通過串口轉USB模塊讓TMC2208連接到電腦上位機,通過電腦控制步進電機的工作以及模式選擇
5、更換步進電機型號,觀察TMC2208驅動能力及TMC2208表面溫度情況,評估是否需要選配散熱器
二、深入淺出步進電機驅動原理
步進電機示意圖與實物演示
驅動示意圖:
每個四節拍旋轉角度:
步進電機種類很多,大概可分為
問題一:步進電機是否可以發電
步進電機可以直接驅動步進電機(同類型電機,大功率帶動小功率)
步進電機驅動波形
問題二:H橋直驅逆變原理
步進電機驅動,可以看做兩個直流電機控制,通過H橋可以將直流電轉換交流電,從而控制電機的正轉、反轉
步進電機驅動邏輯:
通常步進電機內部是由兩組線圈組成,因此需要將兩個 H 橋分別連接到兩組線圈的端子上,從而可以形成兩相四線的控制方式。在兩個線圈中,我們習慣性地把他們分別稱為 A 相和 B 相,而 A 相的兩個端子又分別記為 A+、A-,同理 B 相的兩個端子稱為 B+、B-。通過給 A 相和 B 相施加一定的電流,從而可以形成一個矢量合成的磁場,由于磁場的存在,所以可以把步進電機的轉子進行旋轉控制。使用 NSUC1610 的橋臂輸出MOUT0 和 MOUT1 分別連接步進電機的 A+ 相、A- 相,使用橋臂輸出 MOUT2 和 MOUT3 分別連接到步進電機的 B+ 相、B- 相,通過控制 A 相和 B 相的電流可以組成四個象限
全步模式下,只需要在每一步調整一個相位的電流方向,就可以實現簡單的全步控制。例如在第一象限電流方向為 A+, B+; 在第二象限為 A-, B+; 第三象限為 A-, B-; 第四象限為 A+, B-; 依次循環往復,這樣每一步的電流矢量即為 45°,135°,225°,315°,具體波形如圖
半步模式下, 是基于全步控制中間插入一個 0 電流狀態, 再配合 A+,B+, A-, B- 進行組合, 即可以得到 8 個矢量狀態, 這八個狀態分別是 0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°, 具體波形如圖
縮放模式是針對半步控制進行的一種優化,由于半步控制的矢量大小不在一個圓內,因此會產生轉矩脈動和運轉不均衡的情況。為了能夠減小這個脈動,我們需要將大小不為1的矢量除以√2,經過這個操作以后,每一步的轉矩大小就都一樣從而避免了轉矩突破而產生的脈動,具體波形如圖
微步控制是將 A, B 兩相的電流分別設置成正弦、余弦電流, 正余弦的電流分辨率直接影響步進電機控制的噪音以及旋轉的絲滑程度。典型的微步控制是指在每一個象限細分的步數,可支持每個象限最多 32 步細分,在一個步進角范圍內則可以實現最多到 128 細分,具體電流控制波形如圖
問題三:步進電機細分驅動原理
需要明確一點,步進電機最好的驅動電壓電流信號為交流正弦信號,可以減少噪聲、發熱等問題
問題四:步進電機正反轉原理
步進電機正反轉實際上就是控制驅動邏輯時序,將正轉驅動邏輯逆過來
問題五:步進電機驅動器
步進電機驅動器的工作原理主要基于將控制系統發出的脈沖信號轉化為步進電機的角位移,即每接收到一個脈沖信號,步進電機就旋轉一步距角。具體來說,步進電機驅動器通過其內部的邏輯電路和功率電路,根據外來的控制脈沖和方向信號,控制步進電機的繞組以一定的時序正向或反向通電,從而實現電機的正向/反向旋轉或鎖定。在工作過程中,步進電機驅動器通常由控制器、驅動器和與電機連接的電路組成,可實現對步進電機的精確位置和速度控制。當步進驅動器接收到一個脈沖信號時,它就可以驅動步進電機按設定的方向轉動一個固定的角度,稱為“步距角”。這種控制方式使得步進電機的轉速與脈沖信號的頻率成正比,可以通過控制脈沖信號的頻率對電機進行精確調速;同時,還可以控制脈沖的個數來對電機進行精確定位。此外,步進電機驅動器的設計還涉及到多種工作模式,如半步、基本步距和兩相激勵等,這些模式通過不同的邏輯關系和工作方式來實現對步進電機的精細控制。例如,L297/L298步進電動機控制器-驅動器采用固定斬波頻率的PWM恒流斬波方式工作,并具有三種不同的工作模式。綜上所述,步進電機驅動器的工作原理是通過接收并處理來自控制系統的脈沖信號,利用其內部的邏輯電路和功率電路,按照特定的時序和模式控制步進電機的繞組通電,從而實現對步進電機的精確控制,包括轉速、位置和方向。
三、驅動步進電機轉動
框架示意圖
采用ESP32 UNO D1 R32開發板
實物照片
使用邏輯分析儀測試波形如下:
方波為100us
四、手機藍牙控制步進電機運動
ESP32自帶藍牙功能,通過無線藍牙即可與手機進行通訊,通過手機發出的指令即可控制,為方便演示,通過簡單指令控制步進電機正反轉運動
藍牙指令
運動狀態
指令A
正轉運動
藍牙發送“A”
指令B
反轉運動
藍牙發送“B”
程序代碼
打開案例庫
案例程序代碼,在此基礎進行修改
實物演示:
使用的藍牙APP叫作SPP藍牙串口助手,可以自定義發送字符串內容,有快捷鍵操作,很方便
五、電腦上位機控制步進電機運動
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美國國家儀器公司(National Instruments,簡稱NI)開發的一種圖形化編程環境和工具。它主要用于數據采集、儀器控制和自動化測試等領域,通過可視化編程方法簡化了復雜系統的開發過程。
LabVIEW的特點與應用 圖形化編程:LabVIEW采用圖形化編程方式,用戶可以通過拖放控件和連接線來創建程序,而無需編寫傳統的代碼。這種方式使得編程更加直觀和易于學習。
虛擬儀器:LabVIEW中的程序被稱為虛擬儀器(VI),這些VI可以模擬各種物理儀器的功能,并且具有高度的靈活性和可擴展性。
數據流編程:LabVIEW的核心概念之一是數據流編程,即通過數據流動來驅動程序的執行。這種編程方式強調了數據的流向和處理順序,有助于提高程序的可讀性和維護性。
優勢:
快速原型開發:LabVIEW的圖形化編程方式使得開發原型快捷高效,有助于加速深度學習等領域的研究和應用。
直觀易用:LabVIEW采用圖形化編程語言,可以通過圖形化界面進行編程,而不是傳統的文字化編程,使得編程更加直觀、易于理解和調試。
虛擬儀器開發功能:LabVIEW提供了便捷的虛擬儀器開發功能,能夠依據專家的經驗對沒有精確數學模型的系統進行良好的控制。
混合編程能力:LabVIEW可以與MATLAB進行混合編程,利用MATLAB強大的數據處理能力和LabVIEW便捷的虛擬儀器開發功能,實現優勢互補。
程序流程圖
實物展示
DFRobot Arduino四路電機驅動板
更多相關測評: https://www.eeworld.com.cn/a0uDybP
一、開箱
先上靚照
看到板子的第一眼就可以確定是DFROBOT的產品,配色和設計風格比較熟悉.
DFRobot 四路直流電機驅動擴展板,兼容5V/3.3V Arduino主控器,僅需要8個管腳,既可以同時控制四個直流電機,支持PWM調速和正反轉控制。驅動板集成了兩塊TB6612FNG電機驅動芯片,相對于傳統的L298N,效率上提高很多,體積上也大幅度減少,在額定范圍內,芯片基本不發熱,單路最高可輸出1.2A持續電流,并且內置低壓檢測電路與熱停機保護電路,安全可靠。適用于各類DIY制作。
產品參數
PWR電機供電:2.5V-13.5V
VCC邏輯供電:2.7~5.5V
輸出電流:1.2A 單通道連續驅動電流
啟動/峰值電流:2A(連續脈沖)/ 3.2A(單脈沖)
Arduino控制端口:數字口3,4,5,6,7,8,11,12
工作溫度:-20~85℃
尺寸:52mm * 53mm
這款產品適合作為四驅小車的驅動板,本身接口又是機遇arduino接口的,適用的范圍非常廣,也適合初學者作為入門適用。
二、直流電機驅動
直流電機驅動測試
選用220V變5V的開關電源,選擇一個5V的直流電機.
選用DFRobot的ARduino主板,配實驗驅動板,程序為官方測試代碼,適當調整了驅動。
三、試用評測
DFRobot Arduino四路電機驅動板是DFRobot系列中基于Arduino的系列擴展板之一。選用基于TB6612FNG電機驅動芯片,代替傳統中被廣大diyer熟知的L298N(據說國內產的也相當成熟了)。
擴展板兼容5V/3.3V Arduino主控器,僅需要8個管腳,既可以同時控制四個直流電機,支持PWM調速和正反轉控制。由于采用TB6612FNG使得整體效率上提高很多,體積上也大幅度減少,在額定范圍內,芯片基本不發熱,單路最高可輸出1.2A持續電流,并且內置低壓檢測電路與熱停機保護電路,安全可靠。
端子排列:
線路板除了具有兼容arduino的接口外,還有一個電機驅動電源
電壓輸入端子“PWR”,和4路直流電機驅動輸出接口,M1、M2、M3、M4 。
這里值得提一下的是,由于系統中的PWR僅為兩片電機驅動芯片TB6612FNG提供電源,并沒有提供5V和3.3V電源,所以Arduino主板必須自己提供5V或3.3V的輸入,這是一個遺憾啊。
系統占用3、4、5、6、7、8、11、12共8個arduino引腳,其中4、12、8、7的4個引腳用來分別控制M1-M4驅動方向;3、11、5、6的4個引腳分別用來控制M1-M4的輸出開度,調速范圍0-255.
使用實例簡圖:
根據前面提到的引腳關系,可以看出該驅動板的基本連接關系,左側連接4臺直流電機,右側連接DC13.5V以內的鋰離子電池。
TB6612FNG和L298N對比
封裝形式對比:
性能參數對比:
項目
TB6612FNG
L298N
驅動電壓
5V(2.5~13.5)
VIH+2.5 ~46V
邏輯電壓
3.3V(2.7~5.5)
5V(4.5~7)
輸入信號
-0.2~6
-0.3~7
驅動H橋
2個
2個
驅動電流
1.2A(單通道)
2A(單通道)
2A(tw = 20 ms Continuous pulse, Duty ≤ 20%)
2.5A(Repetitive (80% on –20% off; ton= 10ms))
工藝
LD MOS
三極管
工作溫度
-20~85℃
-25~130℃
存儲溫度
-55~150℃
-40~150℃
操作方式:
TB6612FNG
L298N
綜合對比
相比于L298N來說,TB6612FNG采用LD MOS工藝,導通電阻小,自身功耗低,因此其效率明顯高于L298N,所以其封裝的體積也大幅度較小,再額定范圍內,芯片基本不發熱。
但TB6612FNG的驅動電壓不高15VDC,明顯低于L298N的46VDC,因此會限制它的應用范圍。比如DC24V的應用場景。
5、基于打印機結構的雕刻機設想
打印機包括一個走紙機構、一個打印頭定位機構,可以對應簡易雕刻機的Y軸行走定位和主軸電機X軸行走定位。
驅動板連接兩路直流電機驅動。
走紙機構,將來會發展為平臺的Y軸移動和定位。
這個是光電編碼器和碼盤,可以利用這個來完成定位功能。
環境搭建基本完成,接下來測試將要測試多電機驅動控制和基本應用控制。
三相無刷電機的ESC:基于STM32G431CB MCU測評
更多相關測評: https://www.eeworld.com.cn/aXf58WD
一、資料收集與采購
非常有幸得到了B-G431B-ESC1的評測機會,感謝EEWORLE 和 得捷提供的機會?。?/p>
本文分享一下采購的物品,由于物料還未到達。還整理了一下收集資料到的資料,方便后人開發。
官方原理圖 與 Layout文件(AD格式)
正面
反面
上圖是板子的3D視圖,PCBA上絲印比較小,使用源文件可以很清晰的查看絲印和線路。
全稱:ST Motor Control SDK,ST官網的描述是:
“STM32 MC SDK(電機控制軟件開發套件)固件(X-CUBE-MCSDK和X-CUBE-MCSDK-FUL)包括永磁同步電機(PMSM)固件庫(FOC控制)和STM32電機控制Workbench,以便通過圖形用戶界面配置固件庫參數”
可以理解為這個軟件包含GUI配置電機參數界面 與 SDK的生成與配置,具體還要后面試用一下才知道。所以這個軟件最好也下載、安裝一下。
二、采購清單
除了B-G431B-ESC1之外我還選擇了另外2塊板子:
板子1:NRF52840-DONGLE
Nordic的藍牙模塊,可以配合上位機在電腦接收數據 與 發送數據,在調試的時候可以做到無線收發數據,方便調試,并且可以在幾米之外調速等。
板子2:NUCLEO-G431KB
與B-G431B-ESC1同樣主控的開發板,有兩個作用:
1、由于開發板是最小系統,實現不連接驅動電路,直接輸出PWM,確認信號輸出正確后再使用B-G431B-ESC1驗證驅動代碼
2、擔心操作不當燒掉B-G431B-ESC1,有了這塊板子相當于多了一個備胎,還是可以繼續推進工程!
作為之前寫過BLDC驅動的工程,電機驅動的調試經驗都是燒出來的,所以調試的時候切記限流 和 確認波形正確與否在接電機?。?/p>
最后再次感謝電子工程世界(EEWorld) 和 得捷電子提供的評測機會?。?/p>
二、開箱與點燈
經過8天的等待,訂購的物品從美國寄到我的手里了。跨國購物的話,涉及到出入境,得捷真的挺快的。
(一)、開發板靚照
1、B-G431B-ESC1
B-G431B-ESC1 設計非常緊湊,拿到手里非常迷你、精致,看得出來為了飛控等空間較小的應用場景專門優化設計的。
Nordic的NRF52840-DONGLE 在此次評測中用于無線透傳數據,實現無線調試。Nordic作為無線領域的龍頭,資料豐富,上位機好用,所以選購它。
NUCLEO-G431KB
NUCLEO-G431KB 打算在使用B-G431B-ESC1體驗ST MCSDK開發后,自己從頭寫BLDC驅動時驗證PWM控制邏輯使用的。
(二)、B-G431B-ESC1點燈
本次使用Cube MX生成代碼,分為三步走,第一步:確認硬件,第二步:cube mx生成代碼,第三步:代碼編寫與燒錄
2.1、硬件確認
從原理圖上可以得知,板載LED有兩顆,一顆上電就會亮,一顆要PC6給高電平才會亮。
USART2的 PB3 PB4直接接到ST_Link,通過ST_Link會接到電腦USB口,就不用額外的串口模塊。
2.2、軟件配置
主控的型號是STM32G431CBU6,接了8MHz的外部晶振。
配置燒錄口
配置時鐘
打開串口前先選中PB3 PB4作為串口引腳
打開串口,其他配置默認即可
之后就可以生成代碼了
添加LED燈IO初始化
2.3、代碼編寫與實驗
在USART 與 GPIO初始化后,添加以下代碼
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,1);
uint8_t str[] = "Hello eeworld! Hello B-G431-ESC1!\r\n";
HAL_UART_Transmit(&huart2,(uint8_t*)str,sizeof(str)-1,100);
完成串口數據輸出 與 點燈。
效果如下:
以上就是本次的開箱 和 點燈與串口輸出。
三、MCSDK工程建立與初始化
1.MCSDK安裝軟件安裝
MCSDK簡介:
STM32 MC SDK(電機控制軟件開發套件)固件(X-CUBE-MCSDK和X-CUBE-MCSDK-FUL)包括永磁同步電機(PMSM)固件庫(FOC控制)和STM32電機控制Workbench,以便通過圖形用戶界面配置固件庫參數。
用戶可以通過GUI生成項目文件,并根據應用需要初始化庫。可實時監控并更改一些算法變量。
官方下載網址: https://www.st.com.cn/zh/embedded-software/x-cube-mcsdk.html
安裝流程:
無腦安裝即可,我只修改了安裝地址
2.生成工程
切換中文 與 新建工程
選擇單電機、六步法,我認為就是BLDC方波控制。
電機選擇:隨便選擇一個電機先,走好流程,成功生成代碼,下一次再來修改。
選擇開發板后,點擊確定。跳轉后的邏輯框圖界面提示報錯
下圖可見是提示:危險,未啟用過流保護。。。
點擊、跳轉到詳情頁
可以看到的是過流保護沒有是硬件不支持??!雖然板子的三個采樣電阻采集的是三相的相電流,但是可以根據2相 或 1相的相電流來作為保護的依據(不能3相加起來,應為基爾霍夫定律電流和為0,并且FOC單電阻采樣都能構建電流模型,BLDC只會更簡單,不理解為什么是個不支持!
生成代碼
按照自己的需求修改下圖即可
生成中有報錯,不管即可
打開工程,編譯通過。
三、工程驗證
查閱代碼后發現并沒有初始化PC6的LED,由于改動比較簡單,所以就手動添加一些代碼,并且在配置工程時沒有修改波特率也要手動修改一下。
添加PC6初始化
修改波特率
原本的波特率比較特殊,不是全部的上位機都支持,所以改為115200
實驗代碼
結果是可以亮燈 與 接收數據!運行結果與前文一致就不貼圖了。
四、MCSDK 電機啟動
本文是開始轉動電機,在之前的生成代碼過程中隨便選擇了一款電機,生成代碼后,驗證生成的工程正??捎茫〉沁@是不正確的,現在開始修改。
(一)、電機參數確認需要測量的電機參數,可以在MCSDK中新建電機的界面看到非常、非常多的參數,但是在方波理有用的參數實際上沒幾個(疊個甲,我認為,我覺得,不一定對,有不對請交流指點,謝謝?。?,里面大部分參數都是用于FOC,在FOC里面計算磁鏈參數,搭建電機的模型,觀測器等一系列運算。 在BLDC里需要注意的只有霍爾傳感器分布 與 極對數。 霍爾傳感器分布,影響霍爾的波形,如果不對電機轉動異常、電流偏大、發熱等異常
1.1、極對數由于計算速度,用于速度環 與 顯示速度。
1.2、霍爾傳感器分布由下圖可知,霍爾角度120°
1.2、電機極對數電機快速轉一圈,6個完整正弦,6對極
按照測量的電機參數修改功能內電機的相關配置后,重新生成、燒錄代碼。
(二)、電機啟動使用生成的工程 配合 Motor Pilot上位機,就可以實現電機啟動、調速、跳轉PID、可視化霍爾電角度等非常豐富的功能。
2.1、啟動電機
①打開軟件后,選擇COM,連接設備
②連接后(沒供12V),所以提示欠壓
電壓太低的情況下,即使加了預驅也是沒辦法導通MOS的,所以這里的低壓警報是針對驅動橋的。在3.3v-5V的情況,芯片、霍爾等大部分器件是可以正常工作的。
③有任何報錯后會自動停止
上圖是,供電12v,限流50ma后,點擊啟動后,電源過流保護,拉低電壓,導致檢測到欠壓,自動停止輸出PWM了。想要再次啟動需要點擊”Ack Faults”,清除錯誤之后才可以再次啟動電機。
④點擊開始啟動電機(供12v后),并且限流調大了
點擊啟動之后,電機正常啟動,平穩運行!
四、總結
ST 的MCSDK一套流程體驗下來非常的絲滑、流暢,調過電機、有電機調試經驗的人第一次接觸也能很快的上手,沒什么大問題。
但是具體的實現代碼里面就有點不友好了,BLDC的六步法的代碼時比較簡單(對比FOC來說),但是ST將六步法與FOC居然耦合起來了(下文會描述),并且代碼使用了非常多的、多層封裝的結構體 與 復雜的流程,要吃透比較難。
總的來說,MCSDK入門簡單、理解貫通,是比較有難度的。
歡迎將我們設為“星標”,這樣才能第一時間收到推送消息。
領取汽車總線系統設計資料合集
掃碼添加小助手回復“進群”
和汽車開發者們面對面交流經驗
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.