具有方向判断功能的步进电机实时位置检测系统及其方法与流程

文档序号:17730718发布日期:2019-05-22 02:49阅读:1022来源:国知局
具有方向判断功能的步进电机实时位置检测系统及其方法与流程

本发明涉及步进电机实时位置检测,尤其是涉及具有方向判断功能的步进电机实时位置检测系统及其方法。



背景技术:

步进电机带动机械臂运动的工作模式广泛应用于医疗行业检测仪器中。为提高检测仪器的工作效率,达到检测更多样本目的,往往采取提高步进电机运动速度来实现。但是,步进电机带动机械臂运动过程中会出现丢步的现象;丢步现象包括少走、多走、往返运动等情况。但是,对于检测仪器关心的是机械臂是否运动到指定的位置,对于中间往返运动或抖动等情况并不关心。如果使用增量型编码器进行检测,则会出现严重的误报警,即电机往返运动了,增量型编码计数也会一直累加计数,因此不能反映机械臂的实际运动位置,导致增量型编码器内部的程序软件也就无法通过测量的结果来补偿或者消减步进电机的运动。如果使用绝对值编码器,需要每个步进电机都要配备每一个绝对值编码器,大大增加了测仪器的制造成本;同时,绝对值编码器体积较大,受到安装空间的制约限制。



技术实现要素:

本发明目的在于提供一种具有方向判断功能的步进电机实时位置检测系统,本发明另一目的是提供该检测系统的检测方法。

为实现上述目的,本发明采取下述技术方案:

本发明所述具有方向判断功能的步进电机实时位置检测系统,包括上位计算机、单片机、fpga模块;所述上位计算机通过can通信方式与所述单片机通信连接,单片机通过自定义方式与所述fpga模块通信连接;fpga模块的数据信号输入接口连接有多路电平转换模块,每路所述电平转换模块的信号输入接口分别连接有一个编码器;电平转换模块用于将所述编码器输出的a相、b相信号的5v电平转换为3.3v输入给fpga模块,编码器输出的a相和b相信号的相位差为90度。

本发明所述检测系统的检测方法为,所述上位计算机通过can命令选择打开某一路的所述编码器,该路的所述fpga模块通过检测该路编码器输出的所述a相和b相信号,得到该路步进电机所带机械臂的实际运动距离;并将该机械臂实际运动距离通过自定义协议发送给单片机,所述单片机通过can通信发送给上位计算机,得到该路步进电机所带机械臂的实际运动距离。

所述fpga模块检测所述编码器输出的所述a相和b相信号的步骤如下:

步骤1、所述fpga模块起始工作时,首先通过所述电平转换模块检测编码器的a相电平和b相电平,当检测的所述a相电平和b相电平都为低电平时,等待a相电平或者b相电平的上升沿;

步骤2、如果先检测到a相的上升沿信号,经过一段时间消抖后a相信号仍然为高电平,判定该路步进电机旋转方向为正向,然后对b相信号进行检测,如果b相也来了上升沿信号则判定该编码器输出的信号为一个有效的编码器信号,fpga模块将产生相应的正向标志位;

如果先检测到b相的上升沿信号,经过一段时间消抖后b相信号仍然为高电平,判定该路步进电机旋转方向为反向,然后对a相信号进行检测,如果a相也来了上升沿信号则判定该编码器输出的信号为一个有效的编码器信号,fpga模块将产生相应的反向标志位;

步骤3、fpga模块将所述正向标志位和反向标志位进行累加,并对该步进电机的所述正向标志位和反向标志位进行计算汇总,将汇总后的正向标志位和反向标志位数值进行比较,用大的数值减去小的数值,得到步进电机实际运动结果,从而计算出该步进电机带动的机械臂确切的运动距离并写到fpga模块内嵌的ram里;

步骤4、当上位计算机发送读取命令时,fpga模块从所述ram相应的地址里读取所述机械臂确切的运动距离,通过单片机发送给上位计算机,完成该步进电机所带机械臂的实时位置检测。

本发明优点在于具有方向判断功能,在步进电机快速运动过程中,如果步进电机由于震动等原因往回运动了一些距离然后继续正向运动,fpga模块会将这一反向运动消除掉,最终发给处理器的数据就是机械臂实际运动的位置,处理器根据此数据对步进电机运动进行补偿或者消减,大大提高了步进电机所带机械臂实际运动位置的检测精度。

附图说明

图1是本发明所述检测系统的结构示意图。

图2是本发明所述编码器的输出信号波形图。

图3是本发明所述检测方法的流程图。

图4是本发明所述编码器输出差分信号的波形图。

具体实施方式

下面结合附图对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述实施例。

如图1、2所示,本发明所述具有方向判断功能的步进电机实时位置检测系统,包括上位计算机、单片机、fpga模块;所述上位计算机通过can通信方式与所述单片机通信连接,单片机通过自定义方式与所述fpga模块通信连接;fpga模块的数据信号输入接口连接有多路电平转换模块,每路所述电平转换模块的信号输入接口分别连接有一个编码器;电平转换模块用于将所述编码器输出的a相、b相信号的5v电平转换为3.3v输入给fpga模块,编码器输出的a相和b相信号的相位差为90度。

如图1-3所示,本发明所述检测系统的检测方法为,所述上位计算机通过can命令选择打开某一路的所述编码器,该路的所述fpga模块通过检测该路编码器输出的所述a相和b相信号,得到该路步进电机所带机械臂的实际运动距离;并将该机械臂实际运动距离通过自定义协议发送给单片机,所述单片机通过can通信发送给上位计算机,得到该路步进电机所带机械臂的实际运动距离。

所述fpga模块检测所述编码器输出的所述a相和b相信号的步骤如下:

步骤1、所述fpga模块起始工作时,首先通过所述电平转换模块检测编码器的a相电平和b相电平,当检测的所述a相电平和b相电平都为低电平时,等待a相电平或者b相电平的上升沿;

步骤2、如果先检测到a相的上升沿信号,经过一段时间消抖后a相信号仍然为高电平,判定该路步进电机旋转方向为正向,然后对b相信号进行检测,如果b相也来了上升沿信号则判定该编码器输出的信号为一个有效的编码器信号,fpga模块将产生相应的正向标志位;

如果先检测到b相的上升沿信号,经过一段时间消抖后b相信号仍然为高电平,判定该路步进电机旋转方向为反向,然后对a相信号进行检测,如果a相也来了上升沿信号则判定该编码器输出的信号为一个有效的编码器信号,fpga模块将产生相应的反向标志位;

步骤3、fpga模块将所述正向标志位和反向标志位进行累加,并对该步进电机的所述正向标志位和反向标志位进行计算汇总,将汇总后的正向标志位和反向标志位数值进行比较,用大的数值减去小的数值,得到步进电机实际运动结果,从而计算出该步进电机带动的机械臂确切的运动距离并写到fpga模块内嵌的ram里;

步骤4、当上位计算机发送读取命令时,fpga模块从所述ram相应的地址里读取所述机械臂确切的运动距离,通过单片机发送给上位计算机,完成该步进电机所带机械臂的实时位置检测。

本发明实例中,步进电机的基本步距角是1.8°,即步进电机走1.8度,编码器a相和b相输出一个相位差为90度的完整波形(一个周期),fpga每检测到这样一个完整的波形将向ram输出一个标志位并累加结果,通过累加结果计算该步进电机运动了多少个1.8度,然后根据一个1.8度在实际中代表的是多少厘米的距离,推算出所带动机械臂实际的运动距离。

本发明基于英特尔fpga为核心处理芯片,适用于市场上几乎所有的编码器(200线,400线,500线,600线,3600线等)直接接入,不必做任何修改;兼容性广,抗干扰能力强。

fpga模块可以同时处理多路编码器,因此可以同时检测多路机械臂的运动情况;如果其中一路编码器计算结果不正常,其他各路编码器计算结果正常,即可说明fpga模块并无问题,进而可以判定为该路编码器损坏或编码器信号输入线接触不良。

对于机械臂运动的最大和最小距离没有限制,根据编码器线数的不同,步进电机运动一步皆可以测量到;由于fpga模块上的存储数据位数十分容易修改(目前为32位数据),因此可根据情况扩展为64位,128位等更多位,所以没有最大距离的限制,适用于不同的平台,适应性广。

接入编码器的路数多少受到fpga模块自身逻辑容量的限制,当前使用的fpga模块可接入15路,更换fpga模块可扩展接入的编码器路数。

接入fpga模块中的每路编码器都是并列运行,互不干扰;fpga模块和单片机之间通过并行线通信,传输速度快,自定义通信协议,数据传输正确率高。

本发明一种优选方案为:不再使用单片机,直接用一个fpga模块即可实现与上位计算机通信和检测编码器;或者不再使用fpga模块,直接使用单片机实现与上位计算机通信和检测编码器。

本发明再一种优选方案为:如果编码器输出的是如图4所示的差分信号,即(a+,a-,b+,b-),有两种解决方法:一种是现有的硬件电路板加载一个差分转单信号的芯片(am26c32,或者使用门电路直接将差分信号处理为单信号,处理起来比较简单,后期设计可做兼容差分输入信号的电路板),另外一种是直接接入fpga模块的差分信号口(或者单片机io口),利用软件来处理差分信号。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1