樹莓派+ 步進電機
阿新 • • 發佈:2019-01-06
使用步進電機需要步進電機和步進電機驅動板兩樣東西,我使用的電機和驅動板型號分別為28BYJ-48-5V和UL2003晶片的五線四相步進電機驅動板
首先說明步進電機的驅動原理
驅動板上有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度。