Search Code

使用TB6612FNG同Arduino控制直流馬達

使用TB6612FNG同Arduino控制直流馬達

喺呢個教學入面,我哋會學吓點樣用TB6612FNG摩打驅動模組嚟控制DC摩打嘅速度同方向。呢個設定可以等我哋獨立驅動兩個摩打,提供一個實用嘅方法嚟整輪式機械人或者機械化項目。另外,我哋仲會探討點樣用脈衝寬度調變(PWM)嚟準確控制每個摩打嘅速度,提升你項目嘅移動能力。

TB6612FNG_motor_driver-0

成個指南入面,我哋會用一塊Arduino板、TB6612FNG breakout板同兩個DC齒輪摩打。TB6612FNG比起舊式嘅雙極性驅動器好似L298N係一個大升級,因為佢用咗高效能嘅MOSFET。呢個喺用電池供電嘅應用入面特別有用,因為嗰啲情況需要耐用同電源效率,因為呢個驅動器可以畀更多電力去摩打,而唔會過熱或者要一個好大嘅散熱器。

如果想更加清楚了解設定同程式設計,記得睇吓相關嘅影片(喺影片00:00位置)。

硬件解釋

呢個項目嘅主要組件包括TB6612FNG摩打驅動器、一個微控制器(Arduino)同兩個DC摩打。TB6612FNG驅動器會接收Arduino嘅低電流邏輯訊號,然後用嚟切換電池嘅高電流電源去摩打。佢通常有專用嘅引腳嚟處理邏輯電源、摩打電源、方向控制(AIN1、AIN2、BIN1、BIN2)同速度控制(PWMA、PWMB)。

TB6612FNG_motor_driver-3

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。再三檢查所有接地係咪共享喺共同接地軌道上。

TB6612FNG_motor_driver-1

程式碼示例同講解

等我哋睇吓項目入面用嘅一啲關鍵識別符同程式碼片段。程式碼嘅第一部分初始化方向控制、速度同待機嘅引腳:

const int AIN1 = 2;const int AIN2 = 4;const int PWMA = 5;const int STBY = 9;

呢度,AIN1AIN2被指派嚟控制摩打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重置。記得仔細檢查你嘅電源同共用接地。

圖片

TB6612FNG_motor_driver-4
TB6612FNG_motor_driver-4
TB6612FNG_motor_driver-3
TB6612FNG_motor_driver-3
TB6612FNG_motor_driver-2
TB6612FNG_motor_driver-2
TB6612FNG_motor_driver-1
TB6612FNG_motor_driver-1
TB6612FNG_motor_driver-0
TB6612FNG_motor_driver-0
请提供需要翻译的文本。

你可能需要嘅嘢

資源與參考資料

暫時冇資源。

文件📁

数据表 (pdf)