山姆的編程實作分享。。。

Sam Blog, Sam Sharing, Sam Studio

2020年2月7日

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 馬達正反轉或停止

IN1 HIGH
IN1 LOW
IN2 HIGH
STOP
Reverse
IN2 LOW
Forward
STOP
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  則馬達停止

延伸閱讀


熱門文章