记录一下驱动两相四线步进电机的过程

准备阶段

准备以下物品,淘宝都可以买到:

57步进电机(两相四线)
电源开关(220v转24v,3A,72W)
步进电机驱动器 (TB6600)
电源线
电线
杜邦线
树莓派4B一套

具体型号如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接线阶段

整体:接线效果如下图
在这里插入图片描述
电源开关起220v转24v作用,就是一般电源开关的接线方法,输出24v接入步进电机驱动器

步进电机驱动器的 A+ A- B+ B- 按提示接步进电机四线,步进电机上就会有说颜色和A+A-B+B-的对应关系,按提示接线没有的话问卖家或者查型号。 DIR-DIR+PUL-PUL+分别接到树莓派GPIO引脚15 13 18 16

代码用2相励磁方式驱动,下面直接给了运行代码,GPIO和驱动的连接直接规定了,其中的两相四线步进电机驱动的方式原理和代码以后再记录吧
在这里插入图片描述
这里要注意树莓派B版本(不是B+)的板子,只有26Pin,物理引脚BOARD编码<=26才可以用。下图是40Pin引脚图(兼容26Pin的B版本)。观察方向为引脚那部分在板子的右上方。
在这里插入图片描述

树莓派python程序

# 树莓派python程序中不能出现汉字,需要把注释中的汉字换成英文

import RPi.GPIO as GPIO
import time

 # 规定GPIO引脚
IN1 = 18      # 接PUL-
IN2 = 16      # 接PUL+
IN3 = 15      # 接DIR-
IN4 = 13      # 接DIR+
 
def setStep(w1, w2, w3, w4):
    GPIO.output(IN1, w1)
    GPIO.output(IN2, w2)
    GPIO.output(IN3, w3)
    GPIO.output(IN4, w4)
 
def stop():
    setStep(0, 0, 0, 0)
 
def forward(delay, steps):  
    for i in range(0, steps):
        setStep(1, 0, 1, 0)
        time.sleep(delay)
        setStep(0, 1, 1, 0)
        time.sleep(delay)
        setStep(0, 1, 0, 1)
        time.sleep(delay)
        setStep(1, 0, 0, 1)
        time.sleep(delay)
 
def backward(delay, steps):  
    for i in range(0, steps):
        setStep(1, 0, 0, 1)
        time.sleep(delay)
        setStep(0, 1, 0, 1)
        time.sleep(delay)
        setStep(0, 1, 1, 0)
        time.sleep(delay)
        setStep(1, 0, 1, 0)
        time.sleep(delay)
 
def setup():
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
    GPIO.setup(IN1, GPIO.OUT)      # Set pin's mode is output
    GPIO.setup(IN2, GPIO.OUT)
    GPIO.setup(IN3, GPIO.OUT)
    GPIO.setup(IN4, GPIO.OUT)
 
def loop():
    while True:
        print ("backward...")
        backward(0.0001, 1000)   # 发射脉冲时间间隔0.0001(单位秒)   脉冲个数1000
        
        print ("stop...")
        stop()                 # stop
        time.sleep(3)          # sleep 3s
        
        print ("forward...")
        forward(0.0001, 1000)
        
        print ("stop...")
        stop()
        time.sleep(3)
 
def destroy():
    GPIO.cleanup()             # 释放数据
 
if __name__ == '__main__':     # Program start from here
    setup()
    try:
        loop()
    except KeyboardInterrupt:  # When 'Ctrl+C' is pressed, the child function destroy() will be  executed.
        destroy()

之后插上电,步进电机驱动器和电源开关 灯亮。

之后cd到工作路径,python ***.py

步进电机按照要求动起来了

OK了。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐