Arduino使用L298N驅動兩個馬達

L298N模組常用於驅動車子的左右車輪,可以分別控制左右車輪前進、倒退與停止,會讓車子可以前進、倒退、左轉、右轉與停止。

實驗目標

使用L298N驅動兩個直流馬達,可以分別控制兩個馬達的順時針旋轉、逆時針旋轉或停止。之後章節,會利用兩個馬達接在車子的左右車軸上,再加上輪胎,車子將前進、倒退或停止。

實驗所需元件

TT馬達與輪胎*2

L298N模組*1

12V電池盒與電池(3號電池8個或4號電池8個)*1,可以串接兩個3號電池4個的電池供電

簡介L298N模組

L298N為雙H橋模組,每個H橋使用四個電晶體控制一個馬達的順時針與逆時針旋轉,兩個H橋可以控制兩個馬達,L298N提供四個數位訊號輸入接腳,假設IN1與IN2接腳控制左側馬達,而IN3與IN4接腳控制右側馬達,馬達與四個數位訊號輸入接腳的關係如下方兩個表格,HIGH表示高電壓,LOW表示低電壓。

如果將左右馬達製作一台自走車,假設馬達順時針表示前進,以下表呈現車子的前進、倒退、左轉、右轉與停止,與IN1、IN2、IN3與IN4的關係,HIGH表示高電壓,LOW表示低電壓。

實驗接線圖

L298N需要外接電力,因為Arduino內建電力恐無法驅動二個馬達,L298N提供12V電力的輸入,根據電池電力將正極接線接到12V,負極接線連接L298N的GND接腳,如下圖。

左右馬達各需要兩個數位訊號接腳,分別控制馬達順時針、逆時針或不旋轉。

程式實作提示

使用函式digitalWrite輸出HIGH與LOW到數位訊號接腳,控制兩個馬達順時針旋轉、逆時針旋轉或停止,本範例自訂前進、倒退與停止函式,控制兩個馬達的順時針旋轉、逆時針旋轉或停止。

程式碼與解說

第1到4行:定義In1為4,表示In1接在數位接腳4,定義In2為5,表示In2接在數位接腳5,定義In3為6,表示In3接在數位接腳6,定義In2為7,表示In4接在數位接腳7。

第5到10行:在setup函式內,使用函式pinMode設定In1、In2、In3與In4接腳為輸出模式。

第11到20行:在loop函式內,呼叫mfront函式讓輪子順時針旋轉,持續2秒,呼叫mstop函式車子停止,持續0.5秒,呼叫mback函式讓輪子逆時針旋轉,持續2秒,呼叫mstop函式車子停止,持續0.5秒。

第21到26行:自訂函式mstop,In1、In2、In3與In4接腳都輸入LOW電壓,車子將停止在原地。

第27到32行:自訂函式mfront,In1與In3輸入HIGH電壓,In2與In4接腳輸入LOW電壓,輪子將順時針旋轉。

第33到38行:自訂函式mback,In1與In3輸入LOW電壓,In2與In4接腳輸入HIGH電壓,輪子將逆時針旋轉。

執行程式

編譯及上傳程式到Arduino,將看到兩個輪子順時針旋轉2秒鐘、停止不動0.5秒、逆時針旋轉2秒鐘與停止不動0.5秒,會不斷重複此動作。

實驗圖片