2019年6月28日 星期五

Raspberry Pi筆記:Stepper Motor

基本原理:

步進馬達具有精確控制馬達軸位置的特性,通常用於需要精確定位的地方。步進馬達的原理,可以參考ref.1的介紹。這邊使用28BYJ-48 5V作測試,由ref.2可以知道,這顆步進馬達轉一圈需要4096步,具有4相,在4相依序變化的設計下,步進馬達軸轉一圈共需要512次4相變化。

接線:

IN1GPIO#2
IN2GPIO#3
IN3GPIO#4
IN4GPIO#17
VCC5V
GNDGND

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=eyqwLiowZiU
2. https://sites.google.com/site/csjhmaker/d-dong-li-pian/28byj-48-bu-jin-ma-da

沒有留言:

張貼留言