蜗杆单轨滑轨的驱动的统一接口
■ 简介
在很多研究中,需要对传感器、被测对象进行移动。比如在 室外声音信标可行性分析 对于声音信源移动,使用了单轨滑动杆移动扬声器。
现在手边有一个蜗杆单轨,使用了Rui Xin 57BYG250B 步进电机进行驱动蜗杆,带动滑台做一维直线运动。关于 57BYG250B步进电机+SR4驱动器 可以参见相关的博文和技术资料。
▲ 丝杠单轴平台
在滑轨上还有两个 SN04-N感应无触点行程开关 。为了能够使用实验室中的统一步进电机的接口来驱动,需要制作一个统一的接口,来进行转换。
▲ 驱动步进电机
相关的步进驱动平台包括:
- 单轴步进驱动模块SH-20403
- DRV8825步进电机驱动控制模块以及双轴平台
- 基于ESP8266WiFi步进电机控制
- SH-20403AXIS12双轴蓝牙移动框架
- 基于ESP8266 WiFi控制的步进升降机械平台
01统一接口定义
驱动器输出使用DB9-FEMAIL接口;负载接头使用DB9-MAIL接头。
在DB9中定义了步进电机两项接线(MA+,MA-,MB+,MB-)以及两端极限位置传感器。
▲ 统一接口功能定义
上面的定义参考了 基于ESP8266WiFi步进电机控制 中的改造信息。
02接口板设计
由于SN04-N感应无触点行程开关需要电源(DC 5V ~ 24V)工作,在转接板上需要增加外部输入电压。
1.电路设计
▲ 接口的SCH
▲ 快速制版后的实验PCB
03测试
1.基本功能
使用基于ESP8266WiFi步进电机控制 的驱动器来驱动滑轨移动。
- rccw(n):远离步进电机
- rcccw(n):接近步进电机
利用单轴步进驱动模块SH-20403也可以驱动滑轨运动。并且左右限位正常。
- lscm8mb(n) :接近步进电机
- lscm8mf(n) :远离步进电机
lscm8f(100000) : 运动25秒左右。
测量距离:起始:0.416米。ypds lscm8f(100000)之后,距离为:0.663米。因此,使用lscm8驱动是步长常数为:Lstep=0.663−0.416105=2.47×10−6mL_{step} = {{0.663 - 0.416} \over {10^5 }} = 2.47 \times 10^{ - 6} mLstep=1050.663−0.416=2.47×10−6m
根据后面测量滑轨的总行程Lmax=0.891米,因此,使用lscm驱动最大的步进数量为:
Nmax=LmaxLstep=0.8912.47×10−6=360729N_{\max } = {{L_{\max } } \over {L_{step} }} = {{0.891} \over {2.47 \times 10^{ - 6} }} = 360729Nmax=LstepLmax=2.47×10−60.891=360729
运行时间约:90秒。
2.性能
(1) 运动时间
使用基于ESP8266WiFi步进电机控制驱动滑轨运动,设置驱动步进电机细分为1,也就是运动速度最快。
运行时间:大约三十秒。
(2) 运行距离
使用激光测距测量固定在滑轨上的反光板的距离。
- 最靠近步进电机时距离: 0.162米
- 行进1000步之后,距离为:0.662米
- 行进至最远端:1.053米
运行参数:
(1) Lstep=L/N=50微米: L:行进距离,N:运动步长。
Lstep=0.510000=0.05mmL_{step} = {{0.5} \over {10000}} = 0.05mmLstep=100000.5=0.05mm
(2) 行进总长度: Lmax=1.053-0.162=0.891米
(3) 行进步数最大值:
Nmax=LmaxLstep=0.8910.05×10−3=17820N_{\max } = {{L_{\max } } \over {L_{step} }} = {{0.891} \over {0.05 \times 10^{ - 3} }} = 17820Nmax=LstepLmax=0.05×10−30.891=17820
※ 结论
本文描述了对于蜗杆滑轨的驱动制作统一接口的方式。并通过两款驱动进行了测试。获得可滑轨运动总长度,两款驱动器的步长常数,运动速度等参数。为今后应用提供数据基础。
#!/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 = 0x65COMMAND_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 + cdchecksum = (checksum & 0xff) ^ 0xffcmdstr = 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)lscm8mf(100000)# lscm8mf(1900000)tspbeep(1500, 100)printf('End of the command')#------------------------------------------------------------
# END OF FILE : LSCM8.PY
#============================================================
■ 相关文献链接:
- 室外声音信标可行性分析
- 57BYG250B
- 57BYG250B步进电机+SR4驱动器
- 滑丝杠上的无触点感应行程开关 SN04-N
- 单轴步进驱动模块SH-20403
- DRV8825步进电机驱动控制模块以及双轴平台
- 基于ESP8266WiFi步进电机控制
- SH-20403AXIS12双轴蓝牙移动框架
- 基于ESP8266 WiFi控制的步进升降机械平台
蜗杆单轨滑轨的驱动的统一接口相关推荐
- 多渠道整合开始NGBOSS第一步——TmaxSoft谈运营商统一接口平台建设和管理
多渠道整合开始NGBOSS第一步--张东 NGBOSS是中国移动提出的新一代业务运营支撑网的总称,它包含总部和省公司两级的系统,并包括现有的BOSS.客服.渠道管理.经营分析.BOSS网管系统.DSM ...
- Iterator:访问数据集合的统一接口
导语 遍历器Iterator是ES6为访问数据集合提供的统一接口.任何内部部署了遍历器接口的数据集合,对于用户来说,都可以使用相同方式获取到相应的数据结构.如果使用的是最新版Chrome浏览器,那么你 ...
- 《RESTful Web Services》第一章 使用统一接口
序言 HTTP是一种应用层协议.SOAP和一些Ajax Web框架都将HTTP作为一种传输信息的协议,难以充分利用HTTP层的基础设施. 1.2 如何保持交互的可见性 可见性是HTTP的一个核心特征. ...
- ur机械臂 控制器_OnRobot末端执行器和统一接口已通过UR +计划认证
近日,OnRobot 宣布其One System Solution末端执行器和统一接口现已通过UR +计划认证,UR +计划对夹具等配件进行测试和认证,以便与Universal Robots A / ...
- 利用派生类实现统一接口解决三种基础排序问题
编程题: 1.算法:派生类解决三个排序(冒泡,插入,选择) 2.一个基类:整形数组,数据随机产生(不能重复) 3.调用的时候给出统一的sort接口 三个派生类解决不同算法 每一个结果要输出到文件里 每 ...
- 设计模式系列:搞懂组合模式,单对象与组合对象对外统一接口
组合模式的定义:又叫作整体-部分(Part-Whole)模式,通过将单个对象(叶节点)和组合对象用相同的接口表示,使客户端对单个对象和组合对象的访问具有一致性.它是一种将对象组合成树状的层次结构的模式 ...
- 学习笔记(一)-古月ROS机器视觉开发入门 -ROS摄像头驱动及数据接口
ROS摄像头驱动及数据接口 二维摄像头 我们平常用的最多的就是二维摄像头,大部分笔记本上都会自带一个2d的摄像头,这种摄像头的接口一般是USB接口,市面上看到的罗技摄像头.RGB摄像头等,它们的底层协 ...
- Pix2Seq:谷歌大脑提出 CV 任务统一接口!
文 | 青豆 最近一个大趋势就是将各类任务统一在一个大一统框架下.大规模预训练语言模型已成功打通各类文本任务,使得不同的NLP任务上,都可以用这种统一的sequence生成框架作为基础模型,只需要通过 ...
- 27. OP-TEE驱动篇----libteec接口在驱动中的实现
历经一年多时间的系统整理合补充,<手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 >一书得以出版,书中详细介绍了TEE以及系统安全中的所有内容,全书按照从硬件到软件, ...
最新文章
- Docker Context基本原理
- 集团年终总结的几点体会
- kettle内存溢出
- Integer.valueOf(String) 方法之惑
- parameter与define 区别
- bubble气泡特效
- LL-verilog-HDLBitSim/circuit10解答和过程详解
- “睡服”面试官系列第十七篇之Reflect(建议收藏学习)
- 同步监视器之同步代码块、同步方法
- 动易Ajax登陆调用
- 海康SDK-javademo实现报错问题解决
- Ubuntu搜狗输入法, 输入中文时只显示拼音,不显示中文选择框
- 微信公众号支付开发全过程
- VS2017 CUDA编程学习10:纹理内存
- Powershell 创建NetWork Location(盘符快捷方式)
- WAP1.x协议栈浅析
- 如何用计算机制作pop海报,ai怎么制作pop海报字体?ai简单快速制作pop字体教程
- defined 用法
- 笔记本如何解除锁定计算机,笔记本键盘锁定解锁方法教程
- 前端PDF文件转图片方法(你值得收藏)