MicroPython 如此簡單: ULN2003 步進馬達模組

Yungger
3 min readNov 18, 2023

一個讓控制步進馬達變得非常簡單的 ULN2003 的 MicroPython 函式庫.

主要功能介紹:

  1. 全相與半相
  2. 控制旋轉角度
  3. 控制旋轉步數
  4. 控制旋轉方向
  5. 控制旋轉速度
  6. 歸零定位矯正

安裝函式庫

首先, 必須先上傳函式庫到 MCU 板子上 !

應用範例

假設 ULN2003 連到 ESP32 的 GPIO 腳位分別為 18, 5, 17, 16:

  • 將以下程式碼先加入測試程式, 假設名為 test.py 中, 確認 ULN2003 連接的 MCU 的腳位, 並引用 myULN2003 的元件類別
  • 若實際運作時, 轉向是相反的, 可將下面的程式碼改為 16, 17, 5, 18 即可
config = {'in1':18, 'in2':5, 'in3':17, 'in4':16}

import time
from MyKit_ULN2003 import myULN2003

motor = myULN2003(config['in1'], config['in2'], config['in3'], config['in4'])

範例一: 選擇全相或半相 (預設) 的控制方式

  • 半相 (走全向的一半距離)
def test():
for _ in range(2):
motor.go_step(512)
time.sleep_ms(300)
test()
  • 全相
motor.is_half = False
test()

範例二: 控制旋轉角度

def test():
for _ in range(8):
motor.go_degree(45)
time.sleep_ms(300)
test()

範例三: 控制旋轉步數

def test():
for _ in range(2):
motor.go_step(512)
time.sleep_ms(300)
test()

範例四: 控制旋轉方向

  • 正轉
def test():
for _ in range(2):
motor.go_degree(45)
time.sleep_ms(300)
test()
  • 反轉
motor.direction = False
test()

範例五: 控制旋轉速度

  • 速度值為 0 (停止) ~ 10 (最快)
motor.speed(0)  # 0~10

def test():
for sp in range(7, 11):
motor.speed(sp) # sp=7~10
motor.go_degree(45)

test()

範例六: 歸零定位矯正

  • 若機構設計上, 裝上步進馬達的歸零角度, 一開始定位就有的誤差, 可以此做為修正微調定位角度至歸零 (HOME 點) 位置
  • calibrate(微調的角度值) : 預設正轉, 負值反轉

def test():
motor.calibrate(5)

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

Yungger 勇哥

Maker & Freelancer

--

--