L298N 模組教學
L298N 模組教學
Rototics 系列
By Sam | Arduino | 2020/02/05
L298N 模組硬體簡介
L298N 模組主要的元件當然就是L298 Dual H-Bridge Motor Driver這顆驅動IC,然後再搭配+5V LDO 以及周邊的被動元件所組成。
L298N 模組的基本參數
- 驅動電壓 :5V ~ 35V
- 驅動電流 ( Peak Current ):2A
- Standard TTL Logic Level
- 工作溫度:-20 ~ 135 degree C
- 最大功率:25W
L298N 模組的線路圖
PS: Above schematic is from www.handsontec.com
L298 dual H-bridge motor drive IC 方塊圖
將圖對切成兩半就可明顯看出這顆IC 是兩組 H-Bridge 的Motor Control Integrated IC
PS: Above block diagram is from STMicroelectronics L298 data sheet
L298N 模組腳位功能簡介
Vin:輸入電壓 (5V ~ 35V)
5Vout :5V LDO 輸出,可提供 +5V 的輸出
Channel A:
OUT1, OUT2 作為連接 DC 馬達兩端
IN1, IN2 的High/ Low 準位做為 DC 馬達正反轉或停止
Channel B :提供相同於 Channel A的功能
Channel A Enable :
Channel A的致能腳位, 除了單純的HIGH / LOW 準位可決定連接在Channel A 上的DC 馬達是否運轉外, 若連接PWM的訊號更可控制馬達的轉速
Channel B Enable :提供相同於 Channel A Enable的功能
L298N 實作線路圖
在這個實作中,使用
- 控制板是Arduino UNO :
Digital pin 7, 8, 10, 9 對接 L298N IN1, IN2, IN3, IN4
Analog pin A0 連接可變電阻中間接點以獲取可變電阻轉動後的變化電壓值
Digital pin 5, 6 ( 有 PWM 功能) 則連接 L298N 的 Channel A, B enable pins
(PS: 在這實作中,先預留兩支 有PWM功能的腳位,以便未來兩顆馬達有在同一時間點有不同轉速的需求;也就是說,這次的實作,兩顆馬達的轉速是相同的)
- L298N 模組:
OUT1, OUT2 及 OUT3, OUT4 各連接1顆 DC Motor
- 2顆 DC Motor
- 1顆 可變電阻:可變電阻接在+5V後,透過分壓以及類比轉換來產生不同duty cycle PWM的信號進而達到控制馬達轉速
程式實作
完整的程式碼可至GitHub 取得 https://github.com/Sam3258/L298N-UNO
程式以下面幾個區塊來說明,首先是
Initial / Setup :
1 ~ 7 行 :將 UNO digital pins 定義可讀性的symbol
9 ~12 行:宣告變數;bLED_state 是紀錄LED的狀態, 讓LED在每次進入loop()就改變狀態, 已顯示程式還在繼續運轉中;sensorValue, voltage, weight 是作為可變電阻上電壓轉換成PWM用的過渡變數
15 ~ 29行:設定腳位屬性及初始狀態
31 ~ 35行:設定Serial port 並列印
設定PWM Duty cycle (馬達轉速) :
第2行:從Analog A0 腳位上讀取可變電阻上 的ADC值(0~1023)
第4行:將ADC轉換成類比電壓,然後在8~9行列印出
第6行:將ADC轉換成對應PWM duty cycle(255 vs 1023)儲存在weight變數,並在10~11行列印出
13~14行:則是設定pin5, 6 的PWM值,也就是馬達的轉速
讀取Serial port 傳送過來的字元來決定馬達正反轉或停止
1~10行:從serial port讀取字元
11~18行 : 若字元為 F或 f 則馬達正轉
19~26行 : 若字元為 R或 r 則馬達反轉
27~34行 : 若字元為 H或 h 則馬達停止