#机械臂2--树莓派Python 步进电机驱动TB6600 控制步进电机

步进电机驱动和步进电机的连线

一、端口说明

(1)、信号输入端

   PUL+:脉冲信号输入正。
   PUL-:脉冲信号输入负。
   DIR+:电机正、反转控制正。
   DIR-:电机正、反转控制负。
   EN+:电机脱机控制正。
   EN-:电机脱机控制负。

(2)、电机绕组连接

   A+:连接电机绕组A+相。
   A-:连接电机绕组A-相。
   B+:连接电机绕组B+相。
   B-:连接电机绕组B-相。

(3)、电源电压连接

   VCC:电源正端“+
   GND:电源负端“-”
   注意:DC直流范围:9-32V
   不可以超过此范围,否则会无法正常工作甚至损坏驱动器.

(4)、输入端接线说明

   输入信号共有三路,它们是:①步进脉冲信号PUL+,PUL-;②方向电平信号
DIR+,DIR-③脱机信号EN+,EN-。
   笔者采用共阴极接法:分别将PUL-,DIR-,EN-连接到树莓派的GND口;脉冲输入信号PUL+连接到树莓派的GPIO(笔者为18号口),方向信号DIR+连接到树莓派的GPIO口(笔者为12号口)。
   注:EN端可不接。

(5)、连接完成后如图所示:

二、细分调节

这里笔者将细分调到1600,电流调到1.5.

补充一句:额定电流的设置依据电机而定,电机的额定电流是多久就设置多少。如果发现电机位置不准,则可能是额定电流设置的不对。

三、Python控制实现

import RPi.GPIO as gpio
import time

DIR = 12
PUL = 18

gpio.setmode(gpio.BOARD)
gpio.setup([PUL, DIR], gpio.OUT)

# 别问我这里为什么是2085不是1600,我也很纳闷,试了很久,发现这个频率才刚好转够一圈 > . <
pwmPUL = gpio.PWM(PUL, 2085)  
pwmPUL.start(0)

def rotate(angle, direction):
    """
    旋转操作,需要指定旋转角度和方向
    :param angle: 正整型数据,旋转角度
    :param direction: 字符串数据,旋转方向,取值为:"ccw"或"cw".ccw:逆时针旋转,cw:顺时针旋转
    :return:None
    """
    if direction == "ccw":
        gpio.output(DIR, gpio.LOW)
    elif direction == "cw":
        gpio.output(DIR, gpio.HIGH)
    else:
        return
    pwmPUL.ChangeDutyCycle(50)
    time.sleep(angle / 360)
    pwmPUL.ChangeDutyCycle(0)

time.sleep(4)
rotate(180, "ccw")

pwmPUL.stop()
gpio.cleanup()


  • 18
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
你可以通过树莓派GPIO引脚来控制步进电机驱动TB6600步进电机。首先,确保将TB6600正确连树莓派GPIO引脚上,以便进行控制。然后,您可以使用Python编程语言来编写控制步进电机的代码。 以下是一个简单的示例代码,用于控制步进电机驱动TB6600步进电机: ```python import RPi.GPIO as GPIO import time # 设置GPIO模式 GPIO.setmode(GPIO.BOARD) # 定义引脚 DIR_PIN = 11 # 步进电机方向控制引脚 STEP_PIN = 13 # 步进电机步进控制引脚 # 设置引脚为输出模式 GPIO.setup(DIR_PIN, GPIO.OUT) GPIO.setup(STEP_PIN, GPIO.OUT) # 步进电机转动函数 def step_motor(direction, steps, delay): # 设置方向 GPIO.output(DIR_PIN, direction) # 控制步进 for _ in range(steps): GPIO.output(STEP_PIN, GPIO.HIGH) time.sleep(delay) GPIO.output(STEP_PIN, GPIO.LOW) time.sleep(delay) # 控制步进电机 while True: # 步进电机顺时针转动1000步,每步间隔0.001秒 step_motor(GPIO.HIGH, 1000, 0.001) # 延迟1秒 time.sleep(1) # 步进电机逆时针转动1000步,每步间隔0.001秒 step_motor(GPIO.LOW, 1000, 0.001) # 延迟1秒 time.sleep(1) ``` 请注意,上述代码仅供参考,您可能需要根据实际情况进行修改和调整。在编写代码之前,请确保您已正确连电机和驱动器,并根据实际情况设置引脚编号和延迟时间等参数。 希望这可以帮助您开始控制步进电机驱动TB6600步进电机!如有任何疑问,请随时提问。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值