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

Yungger
4 min readMay 16, 2021

--

認識 L9110S 馬達驅動模組

  • 可同時驅動2個直流馬達或1個4線2相式步進馬達
  • 輸入電壓 2.5 ~ 12V
  • 雙通道各具有 800mA 電流輸出
  • 接通 VCC 與 GND 模組電源指示燈亮
  • 輸入腳位有電位差時轉動, 無則停止

*** 特別注意事項 ***

此篇文章適用 Mini L298N 馬達模組的控制, 因為它雖名屬為 L298N 系列, 但控制的方式卻有很大的差別, 因為它少掉了 Enable 的腳位。所以, 在控制上便與 L298N 的方式不同, 它反而是跟 L9110s 馬達驅動模組的控制方式一樣。 所以, 若對於 L298N 有興趣者可參考我的另一篇文 “MicroPython 如此簡單系列: 小車使用L298N 馬達驅動模組”。

Step 1: 下載與安裝函式庫

首先, 必須先上傳下面的函式庫到 MCU 板子上:

***如果您尚不熟悉或想知道我是如何將函式庫上傳至 MCU 的, 那麼您應該會有興趣參考我的另一篇文章 “MicroPython 如此簡單系列 — ESP8266/ESP32 MCU 檔案管理. ***

在我的程式開發理念, 惟 “簡單卻強大” 才是美。

所以, 我對驅動馬達的方式, 其實想法與做法幾乎都是一樣的, 因此, 我的程式在控制 L9110S, L298N, 或 MiniL298N, … 等等來讓直流馬達旋轉, 就跟控制 360度連續型舵機的旋轉都是一樣的方式。這些設計概念就不在此贅述, 想要進一步了解, 歡迎參考我的另一篇文章 “MicroPython 如此簡單系列: 舵機 (Servo)”。

***基本的控制概念:速度值= 0~90, 正負值=轉向 ***

Step 2: 來點基本測試範例

接下來的範例, 基本上程式的最上頭, 都會需要先包含以下敘述:

import utime as time
from MyKitL9110S import myL9110S
m = myL9110S()
m.attach(0, 2) # ESP8266: D3, D4

範例一:速度控制

m.go(80)    # 速度範圍: 0~90

範例二:轉向控制

m.go(-80)    # 逆時轉: speed=-1~-90, 順時轉: speed=1~90

範例三:停止

m.stop()

基本上, 使用上面的 3 行控制指令, 就足以完全控制 L9110S 了。

不相信嗎 ? 看看下面的影片 DEMO 吧 !

DEMO : 車子的前進->後退->左轉->右轉->停止

完整原始程式碼:

import utime as time
from MyKitL9110S import myL9110S
m1 = myL9110S()
m2 = myL9110S()

m1.attach(14, 12) # ESP8266: D5, D6
m2.attach(13, 15) # ESP8266: D7, D8

print("順轉前進: 速度 20 => 90")
for speed in range(20, 90):
m1.go(speed)
m2.go(speed)
time.sleep_ms(60)

print("逆轉後退: 速度 -20 => -90")
for speed in range(20, 90):
m1.go(-speed)
m2.go(-speed)
time.sleep_ms(60)
print("左逆右順: 左轉")
for speed in range(20, 90):
m1.go(-speed)
m2.go(speed)
time.sleep_ms(60)

print("左順右逆: 右轉")
for speed in range(20, 90):
m1.go(speed)
m2.go(-speed)
time.sleep_ms(60)
print("停止")
m1.stop()
m2.stop()
time.sleep_ms(100)
m1.detach()
m2.detach()

如此而已, 就是這麼簡單, 希望能對你有發生了一點點小幫助 !

作者:Yungger 勇哥

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

--

--

Yungger
Yungger

No responses yet