【树莓派步进电机】【1】基础篇:接线、控制代码

1.接线

共阴极接线,具体参考这篇这篇
具体接线方法:在Arduino接线的基础上,增加杜邦线(母母线)连接TB6600与树莓派
在这里插入图片描述杜邦线(母母线)连接TB6600与树莓派
在这里插入图片描述
共阴极接法

DIR+ 接35口

PUL+ 接38口

DIR-与PUL-接GND口

引脚对照表在这里,注意远离USB口(与USB口斜对角的)的引脚是1、2号引脚

2.1.代码,能跑

python,直接用树莓派自带的Thonny运行就行

import RPi.GPIO as GPIO
import time


TERMINAL1 = 38 # PUL +
TERMINAL2 = 35 # DIR +
 
def setup():
    # 初始化
    GPIO.setwarnings(False)#将警告关闭,去除GPIO口警告
    GPIO.setmode(GPIO.BOARD)# 设置GPIO口为BOARD编号规范
    GPIO.setup(TERMINAL1, 0)#设置端口/引脚
    GPIO.setup(TERMINAL2, 0)#设置端口/引脚
 
def start(pulse_terminal):
    # 开启脉冲
    pulse_terminal.start(50)#初始化占空比为50,占空比调节范围0-100
    #pulse_terminal.ChangeDutyCycle(50) # PWM脉宽调制,改变占空比,调节范围0-100
 
def stop(pulse_terminal):
    # 停止脉冲
    pulse_terminal.stop()
 
def set_direction(direction=0):#1是高电平;0是低电平
    GPIO.output(TERMINAL2, direction) # 设置高低电平
 
if __name__ == '__main__':     # Program start from here
    setup()
 
    pulse_terminal = GPIO.PWM(TERMINAL1, 50) # PUL+脉宽调制
 
    set_direction(1)#1是高电平,缩回
    start(pulse_terminal)
    time.sleep(0.5)#运行时长/秒
    stop(pulse_terminal)
    time.sleep(0.5)#暂停时长/秒
    
    set_direction(0)#0是低电平,伸出
    start(pulse_terminal)
    time.sleep(0.5)#运行时长/秒
    stop(pulse_terminal)
    time.sleep(0.5)#暂停时长/秒
    
    GPIO.cleanup()
   

2.2.循环代码,可修改PWM频率(转速),能跑

import RPi.GPIO as GPIO
import time


TERMINAL1 = 38 # PUL +
TERMINAL2 = 35 # DIR +
 
def setup():
    # 初始化
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(TERMINAL1, 0)
    GPIO.setup(TERMINAL2, 0)
 
def start(pulse_terminal):
    # 开启脉冲
    pulse_terminal.start(50)#初始化占空比为50,占空比调节范围0-100
    pulse_terminal.ChangeFrequency(500)#修改PWM频率,Hz,即修改转速
    #pulse_terminal.ChangeDutyCycle(50) # 设置脉冲带宽 0~100
 
def stop(pulse_terminal):
    # 停止脉冲
    pulse_terminal.stop()
 
def set_direction(direction):
    GPIO.output(TERMINAL2, direction) # 设置高低电平
 
if __name__ == '__main__':     # Program start from here

    setup()
 
    pulse_terminal = GPIO.PWM(TERMINAL1, 50) # 脉冲带宽调制(引脚,频率),频率单位Hz
    
    for i in range(3):#range()里的数是几就循环几次
        set_direction(0)#0是低电平,控制杆伸出
        start(pulse_terminal)
        time.sleep(2)#运行时长/秒
        stop(pulse_terminal)
        time.sleep(0.1)#暂停时长/秒
    
        set_direction(1)#1是高电平,控制杆缩回
        start(pulse_terminal)
        time.sleep(2)#运行时长/秒
        stop(pulse_terminal)
        time.sleep(0.1)#暂停时长/秒
    
    GPIO.cleanup()
  

注:通过频率可以修改转速

2.3. 调速代码

pulse_terminal.ChangeFrequency()是关键

import RPi.GPIO as GPIO
import time


TERMINAL1 = 38 # PUL +
TERMINAL2 = 35 # DIR +
 
def setup():
    # 初始化
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(TERMINAL1, 0)
    GPIO.setup(TERMINAL2, 0)
 
def start(pulse_terminal):
    # 开启脉冲
    pulse_terminal.start(50)#初始化占空比为50,占空比调节范围0-100
 
def stop(pulse_terminal):
    # 停止脉冲
    pulse_terminal.stop()
 
def set_direction(direction):
    GPIO.output(TERMINAL2, direction) # 设置高低电平
 
if __name__ == '__main__':     # Program start from here

    setup()
 
    pulse_terminal = GPIO.PWM(TERMINAL1, 1000) # 脉冲带宽调制(引脚,频率),频率单位Hz
    
    for i in range(3):#range()里的数是几就循环几次
        #200细分下,1000Hz运行1秒即为一个伸缩来回
        #200细分下,500Hz运行2秒即为一个伸缩来回,以此类推
        set_direction(0)#0是低电平,控制杆伸出
        pulse_terminal.ChangeFrequency(1000)#调频率
        start(pulse_terminal)
        time.sleep(0.5)#运行时长/秒
        pulse_terminal.ChangeFrequency(250)#调频率
        start(pulse_terminal)
        time.sleep(2.0)#运行时长/秒
        stop(pulse_terminal)
        time.sleep(0.01)#暂停时长/秒
    
        set_direction(1)#1是高电平,控制杆缩回
        pulse_terminal.ChangeFrequency(500)
        start(pulse_terminal)
        time.sleep(2.0)#运行时长/秒
        stop(pulse_terminal)
        time.sleep(0.01)#暂停时长/秒
    
    GPIO.cleanup()
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值