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

硬件设备

树莓派 * 1

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

DM542驱动器 * 1

36V DC开关电源

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

接线

接线如下所示:

驱动器接线.png

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

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

rpi-pins-40-0.png

代码实现

方法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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。