由于比赛要用到就捣鼓了一下,花了一些时间走了一些弯路,记录一下。
使用材料:树莓派4B、电机28BYJ4、驱动板ULN2003、杜邦线若干
电机和驱动板的淘宝链接:
https://m.tb.cn/h.fmtAmLW?tk=nZVJ2VDNXfWhttps://m.tb.cn/h.fmtAmLW?tk=nZVJ2VDNXfW
我使用的是树莓派口是 GPIO.21-24,对应的BCM编码是5,6,13,19
引脚图如下(图源网络,侵删):
PS:之前我使用的是BOARD编码,结果运行程序的时候一直报错告诉我没有29,31,33,35(对应GPIO.21,GPIO.22,GPIO.23,GPIO.24 )这几条通道,后来换成BCM码了才可以正常使用下半部分的GPIO口,原因未知= =
连线部分:将板子上的 IN1、IN2、IN3、IN4 分别用杜邦线和树莓派上的GPIO.21,GPIO.22,GPIO.23,GPIO.24 连接,将电机的线(白色那头)插到驱动板上,从树莓派上引出5V和GND接口连接驱动板(5V接 + )
运行代码如下:
import RPi.GPIO as GPIO
import time
IN1 = 5 #树莓派的引脚与驱动连接
IN2 = 6
IN3 = 13
IN4 = 19
GPIO.setmode(GPIO.BCM) # 使用BCM编码
GPIO.setwarnings(False)
GPIO.setup(IN1, GPIO.OUT) # 设置为输出模式
GPIO.setup(IN2, GPIO.OUT)
GPIO.setup(IN3, GPIO.OUT)
GPIO.setup(IN4, GPIO.OUT)
def setStep(h1, h2, h3, h4):
GPIO.output(IN1, h1)
GPIO.output(IN2, h2)
GPIO.output(IN3, h3)
GPIO.output(IN4, h4)
delay = 0.003 #控制转速,增大则转速变慢 最快稳定转速大概为0.0017(这个速度想要转的话需要预热,不然转不起来)
steps =5000 #控制转动时长
for i in range(0, steps): #这是顺时针转动,如果要反向转动则将下面四行setStep反过来就行了
setStep(1, 0, 0, 0)
time.sleep(delay)
setStep(0, 1, 0, 0)
time.sleep(delay)
setStep(0, 0, 1, 0)
time.sleep(delay)
setStep(0, 0, 0, 1)
time.sleep(delay)
setStep(0, 0, 0, 0) #清零停止
time.sleep(3)
GPIO.cleanup()
参考文章:
(69条消息) 树莓派+ 步进电机_博客-CSDN博客_树莓派步进电机https://blog.csdn.net/LEE18254290736/article/details/70187494(69条消息) 树莓派通过GPIO控制步进电机(python)_双鱼大地瓜-CSDN博客_树莓派控制步进电机
https://blog.csdn.net/u010027419/article/details/41518321(69条消息) 树莓派4B控制步进电机 进阶教程(一)_Coder_Pig-CSDN博客_树莓派 步进电机
https://blog.csdn.net/qq_28687433/article/details/107074798