基本原理:
步進馬達具有精確控制馬達軸位置的特性,通常用於需要精確定位的地方。步進馬達的原理,可以參考ref.1的介紹。這邊使用28BYJ-48 5V作測試,由ref.2可以知道,這顆步進馬達轉一圈需要4096步,具有4相,在4相依序變化的設計下,步進馬達軸轉一圈共需要512次4相變化。接線:
IN1 | GPIO#2 |
IN2 | GPIO#3 |
IN3 | GPIO#4 |
IN4 | GPIO#17 |
VCC | 5V |
GND | GND |
Python程式:
import RPi.GPIO as GPIO
import time
PIN = [2, 3, 4, 17]
MODE = {0: [0, 0, 0, 0],
1: [1, 0, 0, 0],
2: [1, 1, 0, 0],
3: [0, 1, 0, 0],
4: [0, 1, 1, 0],
5: [0, 0, 1, 0],
6: [0, 0, 1, 1],
7: [0, 0, 0, 1],
8: [1, 0, 0, 1]}
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
for pin in PIN:
GPIO.setup(pin, GPIO.OUT)
def setMode(m):
mode = MODE[m]
for idx, pin in enumerate(PIN):
GPIO.output(pin, mode[idx])
#print(pin, mode)
setMode(0)
time.sleep(1)
for i in range(512):
for i in [1, 2, 3, 4, 5, 6, 7, 8]:
setMode(i)
time.sleep(0.001)
setMode(0)
討論:
1. 沒有要轉動步進馬達的時候,可以將控制器的pin都設定到低電壓,節省電耗。2. 步進馬達的控制上,在ULN2003驅動器簡化下,已簡化到只需要對輸入的4個針腳電壓作對應步進控制,就能輕鬆對步進馬達作。
參考:
1. https://www.youtube.com/watch?v=eyqwLiowZiU2. https://sites.google.com/site/csjhmaker/d-dong-li-pian/28byj-48-bu-jin-ma-da
沒有留言:
張貼留言