树莓派——步进电机+驱动器 篇

硬件设备

树莓派 * 1

57H76两相四线步进电机 * 1

DM542驱动器 * 1

36V DC开关电源

3.3V-5V电平转换(驱动器输入需要5V脉冲,树莓派可控管脚输出电压不够)

 

接线

接线如下所示:

树莓派——步进电机+驱动器 篇_第1张图片

驱动器采用共阳极接法,树莓派5V管脚电平转换放大后接入驱动器PUL+,DIR+,ENA+。PUL-与26连接控制脉冲信号,, DIR-与19连接控制电机方向,ENA-与13连接控制电机使能,电位为1时电机被禁止,不受脉冲影响(树莓派BCM编码)

步进电机红绿黄蓝接线分别接驱动器的 A+ A- B+ B-
根据电机型号不同,接法也不同。只要找到两组同相,分别接 A+ A- B+ B-即可。
步进电机短接判断是否同相:将任意两条电机的接线短接,转动电机,有阻力时两根线为同相

树莓派——步进电机+驱动器 篇_第2张图片

 

代码实现

方法1:while循环 + time.sleep

步进电机的驱动很多文章使用while循环来控制电位高低,从而把握脉冲

import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)   
GPIO.setmode(GPIO.BCM) 
GPIO.setup(19,GPIO.OUT)
GPIO.setup(26,GPIO.OUT)
GPIO.output(19,False) 
n=0
while True:
    n=n+1
    time.sleep(0.0001)
    GPIO.output(26,False) 
    time.sleep(0.0001)
    GPIO.output(26,True) 
    print(n)
    if n==10000:
        break

方法2:采用pwm

更为推荐的做法是用GPIO的pwm功能 控制更为精准

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(19, GPIO.OUT)
GPIO.setup(26, GPIO.OUT)
GPIO.setup(19, 0)
p = GPIO.PWM(26, 1000)

while True:
    p.start(100)
    time.sleep(1)
    p.ChangeDutyCycle(50)
    p.ChangeFrequency(1000)
    time.sleep(10)
    p.stop()
    time.sleep(10)

 

你可能感兴趣的:(树莓派——步进电机+驱动器 篇)