使用TB6612FNG同Arduino控制直流馬達
喺呢個教學入面,我哋會學吓點樣用TB6612FNG摩打驅動模組嚟控制DC摩打嘅速度同方向。呢個設定可以等我哋獨立驅動兩個摩打,提供一個實用嘅方法嚟整輪式機械人或者機械化項目。另外,我哋仲會探討點樣用脈衝寬度調變(PWM)嚟準確控制每個摩打嘅速度,提升你項目嘅移動能力。
成個指南入面,我哋會用一塊Arduino板、TB6612FNG breakout板同兩個DC齒輪摩打。TB6612FNG比起舊式嘅雙極性驅動器好似L298N係一個大升級,因為佢用咗高效能嘅MOSFET。呢個喺用電池供電嘅應用入面特別有用,因為嗰啲情況需要耐用同電源效率,因為呢個驅動器可以畀更多電力去摩打,而唔會過熱或者要一個好大嘅散熱器。
如果想更加清楚了解設定同程式設計,記得睇吓相關嘅影片(喺影片00:00位置)。
硬件解釋
呢個項目嘅主要組件包括TB6612FNG摩打驅動器、一個微控制器(Arduino)同兩個DC摩打。TB6612FNG驅動器會接收Arduino嘅低電流邏輯訊號,然後用嚟切換電池嘅高電流電源去摩打。佢通常有專用嘅引腳嚟處理邏輯電源、摩打電源、方向控制(AIN1、AIN2、BIN1、BIN2)同速度控制(PWMA、PWMB)。
DC摩打會接收嚟自驅動器輸出引腳(A01/A02同B01/B02)嘅調變電源嚟轉動。待機引腳(STBY)係一個總開關,提供一個快速方法嚟停用摩打同將晶片放入低功率睡眠狀態。每個組件都扮演住重要角色,確保驅動系統可以順暢同有效率咁運作。
數據手冊細節
|
製造商 |
東芝(IC)/ 多間(模組) |
|---|---|
|
零件編號 |
TB6612FNG |
|
邏輯/IO電壓 |
2.7 V 至 5.5 V |
|
供應電壓(VM) |
2.7 V 至 15 V |
|
輸出電流(每通道) |
1.2 A 連續 |
|
峰值電流(每通道) |
3.2 A |
|
PWM頻率指引 |
最高100 kHz |
|
輸入邏輯閾值 |
高:> 2.0V,低:< 0.8V(喺5V VCC時) |
|
電壓降 / RDS(on) / 飽和 |
0.5 Ω(典型值) |
|
熱限制 |
內置熱關斷電路 |
|
封裝 |
SSOP24 / Breakout板 |
|
備註 / 變體 |
取代L298N,效率高好多。 |
-
確保電壓水平正確(將VCC對應你Arduino嘅5V或者ESP32嘅3.3V)。
-
為VM(摩打電源)引腳提供獨立嘅電池電源。
-
要小心將所有接地(電池、Arduino同模組)連埋一齊,避免出現唔穩定嘅行為。
-
通電之前測試接線,防止短路。
-
一定要將STBY引腳拉高,否則摩打唔會轉。
接線指示
首先,連接所有組件嘅電源同接地。將Arduino嘅接地連去麵包板嘅負極軌道。然後,將外部電池嘅正極引線連去摩打驅動器嘅VM引腳,再將Arduino嘅5V引腳連去驅動器嘅VCC引腳。
下一步,接邏輯輸入:將AIN1連去Arduino嘅數碼引腳2,AIN2連去數碼引腳4,PWMA連去一個支援PWM嘅引腳,例如數碼引腳5。對於第二個摩打,將BIN1連去7,BIN2連去8,PWMB連去引腳6。記得將STBY引腳連去數碼引腳9。
至於摩打嘅輸出,將第一個DC摩打嘅兩個端子連去A01同A02。將第二個DC摩打連去B01同B02。再三檢查所有接地係咪共享喺共同接地軌道上。
程式碼示例同講解
等我哋睇吓項目入面用嘅一啲關鍵識別符同程式碼片段。程式碼嘅第一部分初始化方向控制、速度同待機嘅引腳:
const int AIN1 = 2;const int AIN2 = 4;const int PWMA = 5;const int STBY = 9;
呢度,AIN1同AIN2被指派嚟控制摩打A嘅方向,而PWMA會用嚟透過PWM做速度控制。STBY畀Arduino可以喚醒晶片或者將佢放入睡眠狀態。
跟住,setup函數將呢啲引腳設定為輸出並啟用晶片:
void setup() { pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMA, OUTPUT); pinMode(STBY, OUTPUT); // Enable the motor driver digitalWrite(STBY, HIGH);}
pinMode()指令將引腳設為輸出模式。將STBY設為HIGH確保TB6612FNG處於啟動狀態,準備好接收指令。
喺loop函數入面,我哋指令摩打以全速向前轉動、停止,然後反轉:
void loop() { // Forward at full speed digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW); analogWrite(PWMA, 255); delay(2000); // Stop (Coast) digitalWrite(AIN1, LOW); digitalWrite(AIN2, LOW); analogWrite(PWMA, 0); delay(1000);}
呢度,將AIN1設為HIGH同AIN2設為LOW,會指示內部H橋向一個方向推送電流。analogWrite(PWMA, 255)應用最大速度。要停止,我哋將兩個方向引腳都拉低。
如需更多細節同包含雙摩打控制同自訂函數嘅完整代碼,請參考文章下面載入嘅完整程式。
示範/預期效果
接線完成並上傳代碼之後,你應該會見到摩打向前轉動兩秒,暫停一秒,然後重複循環(如果你加咗反轉邏輯,佢跟住會向後轉)。確保摩打正確回應PWM信號;如果佢喺你預期向前轉嘅時候向後轉,只需交換連接A01同A02嘅電線(影片12:30位置)。
常見錯誤包括忘記將STBY引腳拉高,或者嘗試直接用Arduino嘅5V引腳供電畀摩打,而唔係用連接VM引腳嘅獨立電池,咁樣喺重負載下可能會導致Arduino重置。記得仔細檢查你嘅電源同共用接地。
你可能需要嘅嘢
-
亞馬遜
-
亞馬遜Buy TB6612FNG or DRV8833 motor driver board from AliExpresss.click.aliexpress.com
資源與參考資料
暫時冇資源。
文件📁
数据表 (pdf)
-
motor driver TB6612FNG datasheet
motor_driver_TB6612FNG_datasheet.pdf0.20 MB