Raspberry Pi Pico筆記(10):L298N模組控制馬達

本篇將使用 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 秒兩次,讓輪子產生左右轉。

[參考資料]

Post a Comment

較新的 較舊