認識 L298N 馬達驅動模組
電源接頭:
- 12V: 7~12V 輸入(標識雖為12V,實際的輸入範圍是7–12V)
- GND: 電源GND
- 5V: 插上 Jumper 可成為 5V 電源輸出供外部裝置使用
驅動電壓:5V~35V
- 電流:0mA~36mA
- 驅動電流:2A
*** 特別注意事項 ***
Mini L298N 雖名為 L298N, 但使用上卻有很大的差別, 就是它少掉了 Enable 的腳位。所以, 在控制上便與 L298N 的方式不同, 它反而是跟 L9110s 馬達驅動模組的控制方式一樣。 所以, 有興趣者可參考我的另一篇文 “MicroPython 如此簡單系列: 小車L9110S 馬達驅動模組”。
Step 1: 下載與安裝函式庫
首先, 必須先上傳下面的函式庫到 MCU 板子上:
- MyKitL298N: 馬達模組控制的函式庫
***如果您尚不熟悉或想知道我是如何將函式庫上傳至 MCU 的, 那麼您應該會有興趣參考我的另一篇文章 “MicroPython 如此簡單系列 — ESP8266/ESP32 MCU 檔案管理”. ***
在我的程式開發理念, 惟 “簡單卻強大” 才是美。
所以, 我對驅動馬達的方式, 其實想法與做法幾乎都是一樣的, 因此, 我的程式在控制 L9110S, L298N, 或 MiniL298N, … 等等來讓直流馬達旋轉, 就跟控制 360度連續型舵機的旋轉都是一樣的方式。這些設計概念就不在此贅述, 想要進一步了解, 歡迎參考我的另一篇文章 “MicroPython 如此簡單系列: 舵機 (Servo)”。
***基本的控制概念:速度值= 0~90, 正負值=轉向 ***
Step 2: 來點基本測試範例
接下來的範例, 基本上程式的最上頭, 都會需要先包含以下敘述:
import utime as time
from MyKitL298N import myL298N
# 宣告馬達模組物件
m = myL298N()
# 馬達掛載
m.attach(12, 13, 14) # ESP8266: D6, D7, D5
範例一:速度控制
m.go(80) # 速度範圍: 0~90
範例二:轉向控制
m.go(-80) # 逆時轉: speed=-1~-90, 順時轉: speed=1~90
範例三:停止
m.stop()
基本上, 使用上面的 3 行控制指令, 就足以完全控制 L298N 了。
不相信嗎 ? 看看下面的影片 DEMO 吧 !
DEMO : 車子的前進->後退->左轉->右轉->停止
完整原始程式碼:
import utime as time
from MyKitL298N import myL298N
# 宣告馬達模組物件
m1 = myL298N()
m2 = myL298N()
# 馬達掛載
m1.attach(5, 15, 16) # ESP8266: D1, D8, D0
m2.attach(12, 13, 14) # ESP8266: D6, D7, D5print("順轉前進: 速度 50 => 90")
for speed in range(50, 90):
m1.go(speed)
m2.go(speed)
time.sleep_ms(200)print("逆轉後退: 速度 -50 => -90")
for speed in range(50, 90):
m1.go(-speed)
m2.go(-speed)
time.sleep_ms(200)print("左逆右順: 左轉")
for speed in range(70, 90):
m1.go(-speed)
m2.go(speed)
time.sleep_ms(100)print("左順右逆: 右轉")
for speed in range(70, 90):
m1.go(speed)
m2.go(-speed)
time.sleep_ms(100)print("停止")
m1.stop()
m2.stop()
time.sleep_ms(100)m1.detach()
m2.detach()
如此而已, 就是這麼簡單, 希望能對你有發生了一點點小幫助 !
作者:Yungger 勇哥
若覺得此文真對您有幫助, 點點左上方的拍手圖示, 鼓勵一下。若還想 請喝杯咖啡 鼓勵一下勇哥的繼續創作, 也感謝 😘 😘 !!