天天看點

樹莓派驅動28byj步進電機

1.材料:樹莓派4B、28byj步進電機、步進電機驅動(ULN2003),杜邦線若幹(雙母頭)

樹莓派驅動28byj步進電機

2.接線,給驅動闆供電5—12v,IN1,IN2,IN3,IN4分别接樹莓派的24、23、22、27号引腳如下圖

樹莓派驅動28byj步進電機

3.代碼如下

樹莓派驅動28byj步進電機

setstep()也可根據上圖編寫。

import RPi.GPIO as GPIO
import time


IN1 = 24     #接驅動闆IN1
IN2 = 23     #接驅動闆IN2
IN3 = 22     #接驅動闆IN3
IN4 = 27     #接驅動闆IN4

def setStep(w1, w2, w3, w4):
    GPIO.output(IN1, w1)
    GPIO.output(IN2, w2)
    GPIO.output(IN3, w3)
    GPIO.output(IN4, w4)


def forward(delay=0.003, steps=100):
     for i in range(0, steps):
        setStep(0, 0, 1, 1)
        time.sleep(delay)
        setStep(0, 1, 1, 0)
        time.sleep(delay)
        setStep(1, 1, 0, 0)
        time.sleep(delay)
        setStep(1, 0, 0,1)
        time.sleep(delay)
 
def backward(delay=0.003, steps=100):
     
    for i in range(0, steps):
        setStep(1, 0, 0,1)
        time.sleep(delay)
        setStep(1, 1, 0, 0)
        time.sleep(delay)
        setStep(0, 1, 1, 0)
        time.sleep(delay)
        setStep(0, 0, 1, 1)
        time.sleep(delay)
 
def setup():
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)      
    GPIO.setup(IN1, GPIO.OUT)      
    GPIO.setup(IN2, GPIO.OUT)
    GPIO.setup(IN3, GPIO.OUT)
    GPIO.setup(IN4, GPIO.OUT)


def main():
	forward(0.003,100)正轉90度左右,0.003改小就轉得快,太小就不轉了,100改大角度就大
	time.sleep(1)#定時1秒
	backward()
	time.sleep(1)#定時1秒
	


 
def destroy():
    GPIO.cleanup()             
if __name__ == '__main__':    
    setup()
    try:
       main()
    except KeyboardInterrupt:  
        destroy()

           

然後可以看到步進電機正轉90度停1秒,再反轉90度