#机械臂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()