基于树莓派的3086A-MFP10S驱动的42步进电机导轨控制系统
C51单片机版本:
https://blog.csdn.net/weixin_53403301/article/details/122658780
所用步进电机导轨为两相六线的42电机(实际上为两相四线 两个com端未接)
驱动器选择了以3086A-MFP10S为芯片的模块
增加记忆回归功能 并且定义了导轨长度 使其运动时不超过限度 k1左滑 k2右划 k3回归中心点 k4重新校准中心点
视频效果如下:
基于C51单片机3086A-MFP10S驱动的42步进电机导轨控制系统
如需调整速度则可以通过更改延时的方式来进行 此为毫秒级最快的速度
代码如下:
import RPi.GPIO as GPIO
import time
import threading
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(16, GPIO.OUT)
GPIO.setup(20, GPIO.OUT)
GPIO.setup(21, GPIO.OUT)
GPIO.output(16,0)
GPIO.output(20,0)
GPIO.output(21,0)
DJ_delay = 0.0015
DJ_buf = [[0,0],[0,1],[1,1],[1,0]]
global DJ_i
DJ_i = 0
DJ_size = 350
global DJ_jugg_flag
DJ_jugg_flag = 0
def zz():
global DJ_i
time.sleep(DJ_delay)
GPIO.output(16,DJ_buf[DJ_i][0])
GPIO.output(20,1)
GPIO.output(21,DJ_buf[DJ_i][1])
DJ_i = DJ_i + 1
if DJ_i == 4:
DJ_i = 0
def fz():
global DJ_i
time.sleep(DJ_delay)
GPIO.output(16,DJ_buf[DJ_i][0])
GPIO.output(20,1)
GPIO.output(21,DJ_buf[DJ_i][1])
DJ_i = DJ_i - 1
if DJ_i == -1:
DJ_i = 3
def DJ_jugg():
global DJ_jugg_flag
DJ_jugg_flag = 0
DJ_flag = 0
while True:
GPIO.output(16,0)
GPIO.output(20,0)
GPIO.output(21,0)
while DJ_jugg_flag == 1:
if DJ_flag < DJ_size:
zz()
DJ_flag = DJ_flag +1
else:
DJ_flag = DJ_size
DJ_jugg_flag = 0
while DJ_jugg_flag == 2:
if DJ_flag > -DJ_size:
fz()
DJ_flag = DJ_flag -1
else:
DJ_flag = -DJ_size
DJ_jugg_flag = 0
if DJ_jugg_flag == 3:
while DJ_flag > 0:
fz()
DJ_flag = DJ_flag -1
while DJ_flag < 0:
zz()
DJ_flag = DJ_flag +1
DJ_flag = 0
DJ_jugg_flag = 0
if DJ_jugg_flag == 4:
DJ_flag = 0
DJ_jugg_flag = 0
if DJ_jugg_flag == 5:
GPIO.output(16,0)
GPIO.output(20,0)
GPIO.output(21,0)
break
def jugg():
global DJ_jugg_flag
thread_DJ = threading.Thread(target=DJ_jugg)
thread_DJ.setDaemon(True)
thread_DJ.start()
while True:
a = input(":")
DJ_jugg_flag = int(a)
if DJ_jugg_flag == 5:
break
jugg()
GPIO.output(16,0)
GPIO.output(20,0)
GPIO.output(21,0)
time.sleep(1)
GPIO.cleanup()
驱动电路和步进电机导轨都是同一个买家买的 如果会写单片机 可以买他家的独立驱动板 另外他家也有带单片机的控制板
滑台参数:
有效行程:150mm、200mm、250mm、300mm 可选。
滑台总长:(有效行程+75mm)42mm40mm (长宽高 不含电机)。
驱动电压:5-12V / 500mA-2A。
电机尺寸:424225mm。
步 距 角:1.8° 。(电机转一圈需要200个脉冲(360/1.8))
驱动器时序要求:
参考:
https://blog.csdn.net/qq_45539458/article/details/111403209