单轴步进驱动模块SH-20403

 

01步进电机驱动控制器


步进电机驱动器作为实验装置可控的部分,能够提供自动测量的方法。前面已经有两款步进电机驱动器:

  • SH-20403AXIS12双轴蓝牙移动框架
  • 基于ESP8266WiFi步进电机控制
  • 基于ESP8266 WiFi控制的步进升降机械平台

本文将实验室中另外一款步进电机驱动及其控制命令进行介绍。

单轴步进驱动模块SH-20403_第1张图片

▲ 单轴SH-20403驱动器

对应DOP描述文件:

D:\zhuoqing\DesignCenter\MyResearch\2019\TwoAxes\LineStepCntMEGA8

▲ 控制器MCU是基于MEGA8单片机的

  • 单片机的相关开发文件:
  • 单片机硬件d:\zhuoqing\altiumdesign\tools\linestepcnt\linestepcnt
  • 单片机软件:d:\zhuoqing\window\atmel\tools\LinestepDriverCarriage\

在上面的基础上,使用蓝牙UART-BLUETOOTHE模块将系统连入局域蓝牙无线通信网络。

 

02控制软件命令


#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# LSCM8.PY                     -- by Dr. ZhuoQing 2020-01-14
#
# Note:
#============================================================

from head import *
import serial

#------------------------------------------------------------
cmdportdef = 'COM2'
cmdport = serial.Serial(cmdportdef, baudrate=115200, timeout=0.1)
cmdport.setDTR(False)
#cmdport.setRTS(False)

printf("Open %s for LSCM8."%cmdportdef)

#------------------------------------------------------------
COMMAND_FRAME_HEAD		= 0x56
COMMAND_FRAME_TAIL		= 0x65

COMMAND_STATUS_WAIT		= 0x0
COMMAND_STATUS_COMMAND	        = 0x1
COMMAND_STATUS_LENGTH	        = 0x2
COMMAND_STATUS_DATA		= 0x3
COMMAND_STATUS_CHECK	        = 0x4
COMMAND_STATUS_TAIL		= 0x5

#------------------------------------------------------------
COMMAND_HELLO_ECHO		= 0x20
COMMAND_BEEP_ON			= 0x21
COMMAND_BEEP_OFF		= 0x22
COMMAND_DIR_ON			= 0x23
COMMAND_DIR_OFF			= 0x24
COMMAND_REL_ON			= 0x25
COMMAND_REL_OFF			= 0x26
COMMAND_PUL_SET			= 0x27
COMMAND_PUL_STOP		= 0x28
COMMAND_GOTO_HEAD		= 0x29
COMMAND_GOTO_TAIL		= 0x2A
COMMAND_GET_STATE		= 0x2B
COMMAND_GET_PULSEOUT	        = 0x2C
COMMAND_CLEAR_PULSEOUT	        = 0x2D

#------------------------------------------------------------
def lscm8cmd(cmd, cmddata):

    checksum = cmd + len(cmddata)
    for cd in cmddata:
        checksum = checksum + cd

    checksum = (checksum & 0xff) ^ 0xff

    cmdstr = b'' + byte(COMMAND_FRAME_HEAD) + byte(cmd) + byte(len(cmddata)) +\
             cmddata + byte(checksum) + byte(COMMAND_FRAME_TAIL)

#    printf(cmdstr)
    cmdport.write(cmdstr)

def lscm8hello():
    lscm8cmd(COMMAND_HELLO_ECHO, b'')

def lscm8beepon():
    lscm8cmd(COMMAND_BEEP_ON, b'')

def lscm8beepoff():
    lscm8cmd(COMMAND_BEEP_OFF, b'')

#------------------------------------------------------------
def lscm8relon(bits):
    cmd = bits.to_bytes(1, byteorder='big')
    lscm8cmd(COMMAND_REL_ON, cmd)

#------------------------------------------------------------
# bits:0:relay0, 1:relay1
def lscm8reloff(bits):
    cmd = bits.to_bytes(1, byteorder='big')
    lscm8cmd(COMMAND_REL_OFF, cmd)

def lscm8diron(bits):
    cmd = bits.to_bytes(1, byteorder='big')
    lscm8cmd(COMMAND_DIR_ON, cmd)

def lscm8diroff(bits):
    cmd = bits.to_bytes(1, byteorder='big')
    lscm8cmd(COMMAND_DIR_OFF, cmd)

#------------------------------------------------------------
def lscm8setpulse(bits, pulse):
    cmd = bits.to_bytes(1, byteorder='big') +\
          pulse.to_bytes(4, byteorder='big')
    lscm8cmd(COMMAND_PUL_SET, cmd)

def lscm8stoppulse():
    lscm8cmd(COMMAND_PUL_STOP, b'')

def lscm8gotohead():
    lscm8cmd(COMMAND_GOTO_HEAD, b'')

def lscm8gototail():
    lscm8cmd(COMMAND_GOTO_TAIL, b'')

def lscm8clearpulseout():
    lscm8cmd(COMMAND_CLEAR_PULSEOUT, b'')

def lscm8mf(steps):
    lscm8diron(3)
    lscm8reloff(3)
    lscm8setpulse(3, steps)

def lscm8mb(steps):
    lscm8diroff(3)
    lscm8reloff(3)
    lscm8setpulse(3, steps)

#------------------------------------------------------------
if __name__ == "__main__":
    time.sleep(.5)

#    lscm8diron(3)
#    lscm8reloff(3)
#    lscm8gotohead()
 #   lscm8gototail()
#    lscm8setpulse(3, 1000)
#    lscm8diron(3)

    lscm8mb(100000)

#    lscm8mf(1900000)

    tspbeep(1500, 100)
    printf('End of the command')

#------------------------------------------------------------
#        END OF FILE : LSCM8.PY
#============================================================

 

03运动控制命令


1.控制命令:

(1) 往上移动命令:lscm8mb
(2) 往上移动命令:lscm8mf

2.运动命令范围:

lsm8mb命令对于蜗杆步进移动框架来说:n的范围: 98000

3.运动速度

移动98000需要的时间为:25秒;
因此移动1000,大约消耗0.25秒;

▲ 蜗杆步进平台的运动

 

※ 结论


你可能感兴趣的:(测量模块,基础电子,电子模块实验)