MicroPython 如此簡單系列: 小車使用L298N 馬達驅動模組

Yungger
4 min readMay 16, 2021

--

認識 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 板子上:

***如果您尚不熟悉或想知道我是如何將函式庫上傳至 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, D5
print("順轉前進: 速度 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 勇哥

若覺得此文真對您有幫助, 點點左上方的拍手圖示, 鼓勵一下。若還想 請喝杯咖啡 鼓勵一下勇哥的繼續創作, 也感謝 😘 😘 !!

--

--

Yungger
Yungger

No responses yet