1. 程式人生 > >樹莓派+ 步進電機

樹莓派+ 步進電機

使用步進電機需要步進電機步進電機驅動板兩樣東西,我使用的電機和驅動板型號分別為28BYJ-48-5VUL2003晶片的五線四相步進電機驅動板

首先說明步進電機的驅動原理

驅動板上有IN1, IN2, IN3, IN4四個介面,根據資料得知這四個介面依次設定為低電平就可以驅動,我們分別用杜邦線將GPIO 21(Pin 40),GPIO 20(Pin 38), GPIO 16(Pin 36), GPIO 19(Pin 35)和IN1,IN2,IN3,IN4一一相連。

每次將四個GPIO埠按下表依次設定好電平後,可以sleep幾十毫秒來控制轉速

序列 GPIO 21 GPIO 20 GPIO 16
GPIO 19
0 LOW HIGH HIGH HIGH
1 HIGH LOW HIGH HIGH
2 HIGH HIGH LOW HIGH
3 HIGH HIGH HIGH LOW
4 LOW HIGH HIGH HIGH

示例程式碼:

#!/usr/bin/python
#coding: utf8

import RPi.GPIO as GPIO
import time
import sys
from array import *

GPIO.setwarnings(False) 
GPIO.setmode(GPIO.BOARD)

steps    = int(sys.argv[1]);
clockwise = int(sys.argv[2]);

arr = [0,1,2,3];
if clockwise!=1:
    arr = [3,2,1,0];

ports = [40,38,36,35] # GPIO 21(Pin 40) GPIO 20(Pin 38) GPIO 16(Pin 36) GPIO 19(Pin 35)

for p in ports:
    GPIO.setup(p,GPIO.OUT)
    
for x in range(0,steps):
    for j in arr:
        time.sleep(0.01)
        for i in range(0,4):
            if i == j:            
                GPIO.output(ports[i],True)
            else:
                GPIO.output(ports[i],False)

執行 python motor.py 90 0  可以順時針轉動大約80度。

執行 python motor.py 90 1  則可逆時針轉動大約80度。