树莓派4B:控制步进电机

本文详细介绍如何使用树莓派和Python程序控制两相四线步进电机,包括所需材料、接线步骤及运行代码。适用于初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

准备阶段

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

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了。

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值