TB6612FNG直流馬達驅動∕控制板(一):簡介、程式庫與取代L298N模組

本文旨在補充《超圖解Arduino互動設計入門》第十章小型直流馬達控制板單元。TB6612FNG是東芝生產的馬達驅動與控制IC,內部包含兩組H橋式電路,可驅動和控制兩個小型直流馬達,或者一個雙極性步進馬達。跟L298N比較,從外觀看來,TB6612FNG控制板明顯嬌小,而且沒有散熱片,這兩個馬達控制板的主要規格比較如下:

比較TB6612FNG直流馬達驅動板與L298N模組

上表「效率」欄位的說明,請參閱下一篇文章

用TB6612FNG直流馬達驅動板取代L298N模組

L298晶片也有比較小型的PowerSO20封裝型式(L298P型號),但如果你的微控制板採3.3V供電,例如:Arduino Pro Mini、執行JavaScript的Espruino、ESP8266系列控制板…等等,TB6612FNG模組是比較好的選擇,除非你採用的直流馬達工作電壓大於13V。

底下是一款常見的TB6612FNG直流馬達驅動模組的接腳說明

TB6612FNG直流馬達驅動模組接腳

上圖是最精簡的TB6612FNG控制板,某些板子配有直流電壓轉換器替馬達驅動IC供電,有的板子具有防止反接馬達電壓的電路,不過,這些TB6612FNG板的連接電路和操控方式都一樣。

和L298N對照,你可以發現TB6612FNG只多了一個STBY(standby,待機,相當於省電)模式接腳,控制馬達的接腳和接線,都跟L298N一樣。下表列舉控制「馬達A」的輸入和輸出關係,1代表高電位,0代表低電位:

TB6612FNG的輸入與輸出關係表

下圖TB6612FNG與Arduino的接線示範是仿照書本「A型馬達控制板」的接線,程式碼也完全一樣(參閱10-34頁或者「L298N馬達控制板接線與控制程式補充」),重點是馬達驅動板的PWMA和PWMB要接在Arduino的PWM腳。

TB6612FNG與Arduino的接線示範

使用TB6612FNG程式庫控制兩個直流馬達

雖然控制TB6612FNG模組的程式不難,但還是有更簡單的方式。TB6612FNG有幾個程式庫可選,本文介紹美國Spark Fun電子材料供應商撰寫的SparkFun_TB6612FNG_Arduino程式庫,因為程式碼很簡單,底下直接採用程式庫附帶的範例來介紹相關指令。

這個程式庫有支援「待機模式」,因此請將TB6612FNG模組的STBY接在任何可用的數位或類比腳,本文把STBY接在數位11腳。

每個馬達都要透過程式庫的Motor()函式建立「馬達物件」,接下來的程式碼就能透過「馬達物件」執行驅動(drive)、前進(forward)、左轉(left)…等功能。底下是程式碼開頭的控制腳位宣告,以及建立兩個馬達物件的程式片段(請注意!底下程式的接線設定以上圖為主,跟原始範例不同):

TB6612FNG程式庫的初始化程式碼

直流馬達的正轉或反轉,跟擺設和人們的觀察視角有關。以下圖為例,馬達其實都是朝同一方向旋轉,但擺設方式不同,所以轉向也不一樣。

馬達的擺設方式影響轉向

為此,這個程式庫安排了一個“offset”變數(「抵消」之意),透過設定1或-1來決定馬達的初始轉向。

底下是TB6612FNG程式庫的完整範例程式碼,馬達物件的控制方法指令,請參閱下文說明。

SparkFun_TB6612FNG程式庫馬達物件的方法

底下是這個程式庫馬達物件提供的方法指令:

  • drive(速度, 持續時間)
    驅動一個馬達。「速度」是介於-255~255的整數值,數字越大,轉速越高,負值代表反轉。「持續時間」是選擇性參數,用於指定轉動時間。
  • standby()
    將晶片設定成待機模式。執行任何驅動馬達的指令(drive, forward, back, left和right),將停止待機模式。
  • forward(馬達物件1, 馬達物件2, 速度)
    驅使兩個馬達前進。若執行此指令的結果是「後退」,請修改offset值;速度值介於-255~255整數,若「速度」值為負,馬達也會反轉:若忽略「速度」值,代表採用程式庫預設的DEFAULTSPEED值(255)。
  • back(馬達物件1, 馬達物件2, 速度)
    驅使兩個馬達後退。若執行此指令的結果是「前進」,請修改offset值。
  • left(馬達物件1, 馬達物件2, 速度)
    驅使左、右馬達分別反轉和正轉,達成左轉效果。
  • right(馬達物件1, 馬達物件2, 速度)
    驅使左、右馬達分別正轉和反轉,達成右轉效果。
  • brake(馬達物件1, 馬達物件2)
    煞車。將兩個輸入都設成高電位來停止馬達。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *