本篇將使用 L298N 模組連接兩個 N20 馬達,透過 Pi Pico 控制馬達的轉向,讓兩個輪子同時向前或向後,一邊輪子正轉、一邊反轉,讓車子的行進方向左右轉。
[L298N]
L298N 是 ST 公司生產的一種高電壓、大電流電機驅動晶片,內含兩個 H橋的高電壓大電流全橋式驅動器,可以用來驅動直流馬達和步進馬達、繼電器線圈等感性負載;具有兩個 Enable 使能控制端,在不受輸入信號影響的情況下,允許或禁止只有一個邏輯電源輸入端,使內部邏輯電路部分在低電壓下工作;使用 L298N 晶片驅動馬達,該晶片可以驅動一台兩相步進馬達或四相步進馬達,也可以驅動兩台直流馬達
L298N 規格如下:
- 主控晶片:L298N
- 電壓:5V
- 驅動電壓:5V~35V
- 電流:0mA~36mA
- 驅動電流:2A
- 工作溫度:-20℃~135℃
- 最大功率:25W
L298N 模組是 2 路的 H 橋驅動,可以同時驅動兩個馬達,讓ENA、ENB始能(Enable)後,可以分別從 IN1 及 IN2 輸入 PWM 信號驅動馬達1的轉速和方向可以分別從 IN3 及 IN4 輸入PWM信號驅動馬達2的轉速和方向。下表是 IN1 和 IN2 (或是 IN3 及 IN4)兩個輸入電位高低時,馬達的作動情況。
IN1(IN3) | IN2(IN4) | 旋轉方向 |
Low (0) | Low (0) | 馬達停止 |
High(1) | Low (0) | 正轉 |
High(0) | Low (1) | 反轉 |
Low (1) | Low (1) | 馬達停止 |
[材料]
- Raspberry Pi Pico x1
- L298N 模組 x1
- N20馬達 x2
- 輪子 x2
- 麵包板 x1
- 麵包板電源模組 x1
- 排線 n 條
[接線圖]
麵包板供給的 5V 電源直接接在 L298N 模組的正(+5V)及 GND 兩極,兩個馬達的正負兩條線接在 L298N模組的左右兩側,可參考以下接線圖。其他接腳如下:
Pi Pico接腳 | L298N模組 |
Pin 1(GP0) | IN4 |
Pin 2(GP1) | IN3 |
Pin 4(GP2) | IN2 |
Pin 5(GP3) | IN1 |
Pin 8(GND) | GND |
[程式]
import utime
import machine
motor1a = machine.Pin(0, machine.Pin.OUT)
motor1b = machine.Pin(1, machine.Pin.OUT)
motor2a = machine.Pin(2, machine.Pin.OUT)
motor2b = machine.Pin(3, machine.Pin.OUT)
led = machine.Pin(25, machine.Pin.OUT) #設定開發板上的 LED(Pin25)
led.value(0)
utime.sleep(0.5)
led.value(1)
utime.sleep(0.5)
led.value(0)
#functions
def forward(): #向前
led.value(1)
motor1a.high()
motor1b.low()
motor2a.low()
motor2b.high()
def backward(): #向後
led.value(1)
motor1a.low()
motor1b.high()
motor2a.high()
motor2b.low()
def left(): #左轉
led.value(1)
motor1a.high()
motor1b.low()
motor2a.high()
motor2b.low()
def right(): #右轉
led.value(1)
motor1a.low()
motor1b.high()
motor2a.low()
motor2b.high()
def stop(): #停止
led.value(0)
motor1a.low()
motor1b.low()
motor2a.low()
motor2b.low()
while True:
forward() #向前
utime.sleep(2)
stop()
utime.sleep(1)
backward() #向後
utime.sleep(2)
stop()
utime.sleep(1)
left() #左轉
utime.sleep(2)
stop()
utime.sleep(1)
right() #右轉
utime.sleep(2)
stop()
utime.sleep(1)
[結果]
當馬達轉動時,Pi Pico開發板上的 LED 燈會亮著,馬達停止轉動時,LED 燈會熄滅,以下執行結果讓兩個馬達同時正轉 2 秒停止 1 秒,再反轉 2 秒再停止 1 秒,然後,一邊正轉一邊反轉 2 秒,停止 1 秒兩次,讓輪子產生左右轉。
[參考資料]
張貼留言