MicroPython筆記(04):ESP32使用MicroPython控制L298N電機馬達

接著幾篇要來熟悉一下 MucroPython 如何控制開發板及如何取得感測器,這一篇先瞭解如何控制 L298N 的馬達控制模組,控制轉動方向,以及使用time函式進行時間控制。


[L298N機電馬達驅動模組]

L298N採用15腳封裝。主要特點是:工作電壓高,最高工作電壓可達46V;輸出電流大,瞬間峰值電流可達3A,持續工作電流為2A;額定功率25W。內含兩個H橋的高電壓大電流全橋式驅動器,可以用來驅動直流電動機和步進電動機、繼電器線圈等感性負載。使用L298N驅動電機,可以驅動一台兩相馬達或四相馬達,也可以驅動兩台直流馬達。

這個 L298N 模組可使用 5V 供電給電機使用。如果+12V電壓輸入 7V 以下,僅適合用作推動馬達的電壓,ESP32 主機板的電源,建議另外提供電源使用。這個模組有2路H橋驅動,可同時驅動兩個馬達,接法如下圖:
Enable A短路連接器連接時可控制IN1、IN2,Enable B可控制IN3、IN4,其意義代表控制馬達轉動的方向。舉例來說,當IN1為高電位,IN2低電位時,通知馬達正轉,如果要反轉時,則讓IN2為高電位,IN1低電位,馬達則會向反方向轉動。如下表:


[time延時函式]

要使用時間 time 相關令前,需先將 time 模組匯入:
import time
指令說明
time.sleep(1)睡眠一秒
time.sleep_ms(500)500毫秒
time.sleep_us(10)10微妙

[範例]
import time
# 取得毫秒 millisecond 計數
start = time.ticks_ms()
# 與起始時間計算時間差
delta = time.ticks_diff(time.ticks_ms(), start) 
print(delta)

[控制GPIO]

要控制GPIO的各Pin腳,需先將 machine 模組匯入
from machine import Pin
指令說明
p0 = Pin(0, Pin.OUT)在GPIO0建立輸出Pin
p0.on()設定為開(on, 高電位)
p0.off()設定為關(off, 低電位)
p0.value(1)設定為開(on, 高電位)
p2 = Pin(2, Pin.IN)在GPIO2建立輸入Pin
p2.value()取得Pin值,0或1
p4 = Pin(4, Pin.OUT, value=1)建立Pin4為輸出Pin,且設定值為1

[線路圖]


[程式]

這段程式利用 Pin16, Pin17 控制轉動方向。這裡實做控制一個馬達,如果要接兩個馬達,只要依照上表的設定,改變 Pin 腳的高低電位即可控制馬達轉動方向。
import time
from machine import Pin

motorA1 = Pin(16, Pin.OUT)
motorA2 = Pin(17, Pin.OUT)

while True:
    #正轉持續3秒
    motorA1.on()
    motorA2.off()
    time.sleep(3)

    #反轉持續3秒
    motorA1.off()
    motorA2.on()
    time.sleep(3)

[結果]


[參考資料]

Post a Comment

較新的 較舊