步进电机驱动器及其接收脉冲的处理方法
【专利摘要】本发明涉及电机技术领域,提供了一种步进电机驱动器及其接收脉冲的处理方法,该处理方法包括以下步骤:在一个周期内接收多个脉冲信号,对每一脉冲信号进行细分以获取多个小脉冲;对多个小脉冲做滑动平均滤波处理并输出平滑后的脉冲当量,并且通过设立一个顺序脉冲缓冲池,每周期排除最早脉冲,并注入新脉冲,以对脉冲池做平滑滤波处理,并输出新脉冲给步进电机控制器,使得原本不连续脉冲变成连续平滑脉冲并得到进一步细分,进而使电机运行平稳,该算法成功解决了传统步进电机驱动器在低细分以及低速度下不平衡问题,并解决上位机所发脉冲加减速不均匀导致电机运转卡死的问题。
【专利说明】
步进电机驱动器及其接收脉冲的处理方法
技术领域
[0001]本发明涉及电机技术领域,尤其涉及一种步进电机驱动器及其接收脉冲的处理方法。
【背景技术】
[0002]目前,在步进电机驱动器技术领域内,传统的驱动器在接收到外部脉冲信号后,直接将外部脉冲信号转换为速度或者角度信息参与运算以驱动电机,该种方法的优势是接收脉冲后在单周期内立即响应,并在单周期内完成电机定位。其缺点是在不同细分下脉冲当量不同,尤其是低细分或者不细分情况下,对于单周期内处理的脉冲当量非常大,在脉冲频率较低时,会导致步进电机运行抖动以及不平稳,甚至电机卡死。综上所述,现有技术中存在电机驱动器在单周期内处理的脉冲当量非常大导致步进电机运行抖动以及不平稳的问题。
【发明内容】
[0003]本发明的目的在于提供一种步进电机驱动器及其接收脉冲的处理方法,以解决现有技术中存在电机驱动器在单周期内处理的脉冲当量非常大导致步进电机运行抖动以及不平稳的问题。
[0004]本发明第一方面提供一种步进电机驱动器接收脉冲的处理方法,所述处理方法包括以下步骤:
[0005]在一个周期内接收多个脉冲信号,对每一脉冲信号进行细分以获取多个小脉冲;
[0006]对所述多个小脉冲做滑动平均滤波处理并输出平滑后的脉冲当量。
[0007]结合第一方面,在第一方面的第一种可能的实现方式中,所述对所述多个小脉冲做滑动平均滤波处理并输出平滑后的脉冲当量的步骤具体为:
[0008]在一个周期内接收多个小脉冲信号时,依次在缓冲池中保存η个时刻的小脉冲信号;
[0009]在所述η个时刻后接收新的小脉冲信号时,依次使每个新的小脉冲信号替换所述η个时刻中最先保存的小脉冲信号;
[0010]根据所述η个时刻所保存的小脉冲信号输出平滑后的脉冲当量。
[0011]结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述依次使每个新的小脉冲信号替换所述η个时刻中最先保存的小脉冲信号的步骤具体为:
[0012]删除所述η个时刻中最先保存的小脉冲信号,保存所接收的新小脉冲信号。
[0013]结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述η个时刻所保存的小脉冲信号输出平滑后的脉冲当量的步骤具体为:
[0014]根据以下计算公式计算平滑后的脉冲当量:
[0015]平滑后的脉冲当量PulseOout = SumPulse/n,其中,SumPulse为当前所存储的η个时刻脉冲数据的和。
[0016]本发明第二方面提供一种步进电机驱动器,步进电机驱动器装置包括:
[0017]脉冲细分单元,用于在一个周期内接收多个脉冲信号并对每一脉冲信号进行细分以获取多个小脉冲;
[0018]脉冲平滑单元,用于对所述多个小脉冲做滑动平均滤波处理并输出平滑后的脉冲
=I ο
[0019]结合第二方面,在第二方面的第一种可能的实现方式中,所述脉冲平滑单元对所述多个小脉冲做滑动平均滤波处理并输出平滑后的脉冲当量的过程为:
[0020]在一个周期内接收多个小脉冲信号时,依次在缓冲池中保存η个时刻的小脉冲信号;
[0021]在所述η个时刻后接收新的小脉冲信号时,依次使每个新的小脉冲信号替换所述η个时刻中最先保存的小脉冲信号;
[0022]根据所述η个时刻所保存的小脉冲信号输出平滑后的脉冲当量。
[0023]结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述脉冲平滑单元依次使每个新的小脉冲信号替换所述η个时刻中最先保存的小脉冲信号的过程为:
[0024]删除所述η个时刻中最先保存的小脉冲信号,保存所接收的新小脉冲信号。
[0025]结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述脉冲平滑单元根据所述η个时刻所保存的小脉冲信号输出平滑后的脉冲当量的过程为:
[0026]根据以下计算公式计算平滑后的脉冲当量:
[0027]平滑后的脉冲当量PulseOout = SumPulse/n,其中,SumPulse为当前所存储的η个时刻脉冲数据的和。
[0028]本发明提供一种步进电机驱动器及其接收脉冲的处理方法,将接收到的单个脉冲分成多个小脉冲,减少脉冲当量,由原来单周期完成的大脉冲当量分成多个周期完成多个小脉冲当量,使脉冲当量连续,进一步使电机运行平稳,解决了传统无平滑功能的电机驱动器接收脉冲时导致电机低速抖动的问题,同时解决了部分上位机脉冲加减速不均匀导致的电机无法上高速而卡死的问题。
【附图说明】
[0029]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0030]图1是本发明一种实施例提供的一种步进电机驱动器接收脉冲的处理方法的流程图;
[0031]图2是本发明一种实施例提供的一种步进电机驱动器接收脉冲的处理方法中滑动平均滤波方法的流程图;
[0032]图3是现有技术中脉冲与输出的波形示意图;
[0033]图4是本发明实施例中脉冲与输出的波形示意图;
[0034]图5是本发明另一种实施例提供的一种步进电机驱动器的结构示意图。
【具体实施方式】
[0035]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0036]为了说明本发明的技术方案,下面通过具体实施例来进行说明。
[0037]本发明实施例提供一种步进电机驱动器接收脉冲的处理方法,如图1所示,该处理方法包括以下步骤:
[0038]步骤S101.在一个周期内接收多个脉冲信号,对每一脉冲信号进行细分以获取多个小脉冲。
[0039]在步骤SlOl中,具体的,将接收到的单个脉冲分成多个小脉冲,减少单个脉冲的脉冲当量,由原来单周期完成的大脉冲当量分成多个周期完成多个小脉冲当量。
[0040]步骤S102.对多个小脉冲做滑动平均滤波处理并输出平滑后的脉冲当量。
[0041]在步骤S102中,具体的,通过设立一个顺序脉冲缓冲池,对多个小脉冲做滑动平均值运算以对缓冲池中的小脉冲做平滑滤波处理,输出新脉冲给步进电机控制器,由于对脉冲池中的小脉冲进行滑动滤波处理的应用,使得原本不连续脉冲变成连续平滑脉冲并得到进一步细分,进而使电机运行平稳。
[0042]本发明实施例具有以下技术效果:因为传统脉冲的直接运算最大的问题就是脉冲当量很大,当单周期处理完成后,其他周期内脉冲当量为0,从而导致步进电机运转抖动,本发明通过将单个脉冲分成多个小脉冲,并对多个小脉冲做滑动平均滤波处理,获得了多个连续的脉冲当量,使电机运行平稳。
[0043]本发明另一种实施例提供一种步进电机驱动器接收脉冲的处理方法,如图2所示,该处理方法包括以下步骤:
[0044]步骤S201.在一个周期内接收多个脉冲信号,对每一脉冲信号进行细分以获取多个小脉冲。
[0045]参见步骤SlOl的说明,此处不再赘述。
[0046]步骤S202.在一个周期内接收多个小脉冲信号时,依次在缓冲池中保存η个时刻的小脉冲信号。
[0047]在步骤S202中,具体的,设定一个脉冲缓冲池,用以保存接收脉冲的η个时刻的脉冲,即在缓冲池中设定长度为η的数组Data[n],以分别存放η个不同时刻的脉冲,其中,缓冲池中的数据量定义为SumPulse。
[0048]步骤S203.在η个时刻后接收新的小脉冲信号时,依次使每个新的脉冲信号替换η个时刻中最先保存的脉冲信号;
[0049]在步骤S203中,具体的,替换脉冲信号可以采用以下实施方式:
[0050]删除η个时刻中最先保存的脉冲信号,保存所接收的新的小脉冲信号。
[0051]即在缓冲池接收当前新的小脉冲信号之前,先剔除掉上一时刻的小脉冲信号,SP可以采用以下指令:SumPulSe- = Data[i];然后更新当前脉冲值,缓冲池接收当前脉冲,可以采用以下指令:SumPulse+ = Data[i]。
[0052]步骤S204.根据η个时刻所保存的脉冲信号输出平滑后的脉冲当量。
[0053]在步骤S204中,具体的,根据以下计算公式计算平滑后的脉冲当量:
[0054]平滑后的脉冲当量PulseOout = SumPulse/n,其中,SumPulse为当前所存储的η个时刻脉冲数据的和。
[0055]可以采用以下指令:平滑后的脉冲当量PulseOout = SumPulse/n;然后更新指令时刻i++,当i大于等于η时,恢复O值,依次循环。
[0056]需要说明的是,η也称为平滑次数,可由用户在外部进行设定,通过设置缓冲池大小可设置平滑次数,无需用户开发软件对其进行修改,具体的,n = 2m,其中,m为级数,用户可以根据设定级数进而设定平滑次数,并且可以实现通过移位的方式进行计算不同级数下的平滑次数,不需要采用除法运算,提升了 MCU的计算速度,整个平滑过程仅使用5条单周期运行指令,执行速度非常快,程序简单高效。
[0057]本发明实施例与现有技术相比,现有技术中对脉冲进行平滑的算法可以采用传统的数学累加平均的方法,也能实现平滑的效果。但是随着缓冲池中数据的逐渐增加,累加平均的计算量也越大,增加了程序计算量,消耗的cpu处理时间也随之增加,例如,采用数学累加平均算法计算5个数值的平均运算为:
[0058]SumPu Ise = Data [O] +Data [ I ] +Data [ 2 ] +Data [ 3 ] +Data [ 4 ];
[0059]输出量为SumPulse/5。
[0060]如果平均数为100,则MCU的计算量以及消耗时间增加导致成本增加,甚至使得计算的实用性变为不可能。
[0061]本发明实施例中采用的滑动平均滤波算法使用简单的单周期运行指令,采用上述指令时,用户可以根据需要改变平滑次数时,可以不改变语句指令,由于语句简单,执行速度非常快,程序简单高效,不占用MCU资源,使MCU运行时间不受影响,与现有技术中采用平均值的算法相比,明显的提升了运行速度,如图3和图4所示,与现有技术的电流波形曲线相比,本发明实施例输出电流波形为平滑曲线。
[0062]需要说明的是,采用本发明实施例的处理方法与现有技术相比会产生一定的滞后时间,该滞后时间为t = TXn,其中,T为载波周期,η为平滑次数,尽管采用该方法存在一定的滞后时间,但是会使电机运行更加平稳,解决了传统无平滑功能的电机驱动器接收脉冲时导致电机低速抖动的问题。
[0063]本发明实施例提供一种步进电机驱动器,如图5所示,步进电机驱动器包括:
[0064]脉冲细分单元301,用于在一个周期内接收多个脉冲信号并对每一脉冲信号进行细分以获取多个小脉冲;
[0065]脉冲平滑单元302,用于对多个小脉冲做滑动平均滤波处理并输出平滑后的脉冲
=I ο
[0066]对于脉冲细分单元301,具体的,将接收到的单个脉冲分成多个小脉冲,减少单个脉冲的脉冲当量,由原来单周期完成的大脉冲当量分成多个周期完成多个小脉冲当量。
[0067]对于脉冲平滑单元302,通过设立一个顺序脉冲缓冲池,对多个小脉冲做滑动平均值运算以对缓冲池中的小脉冲做平滑滤波处理,输出新脉冲给步进电机控制器,由于对脉冲池中的小脉冲进行滑动滤波处理的应用,使得原本不连续脉冲变成连续平滑脉冲并得到进一步细分,进而使电机运行平稳。
[0068]本发明实施例具有以下技术效果:因为传统脉冲的直接运算最大的问题就是脉冲当量很大,当单周期处理完成后,其他周期内脉冲当量为0,从而导致步进电机运转抖动,本发明通过将单个脉冲分成多个小脉冲,并对多个小脉冲做滑动平均滤波处理,获得了多个连续的脉冲当量,使电机运行平稳。
[0069]进一步的,脉冲平滑单元302对多个小脉冲做滑动平均滤波处理并输出平滑后的脉冲当量的过程为:
[0070]在一个周期内接收多个小脉冲信号时,依次在缓冲池中保存η个时刻的小脉冲信号;
[0071 ]在η个时刻后接收新的小脉冲信号时,依次使每个新的小脉冲信号替换η个时刻中最先保存的小脉冲信号;
[0072]根据η个时刻所保存的小脉冲信号输出平滑后的脉冲当量。
[0073]进一步的,脉冲平滑单元302依次使每个新的小脉冲信号替换η个时刻中最先保存的小脉冲信号的过程为:
[0074]删除η个时刻中最先保存的小脉冲信号,保存所接收的新小脉冲信号。
[0075]脉冲平滑单元302根据η个时刻所保存的小脉冲信号输出平滑后的脉冲当量的过程为:
[0076]根据以下计算公式计算平滑后的脉冲当量:
[0077]平滑后的脉冲当量PulseOout = SumPulse/n,其中,SumPulse为当前所存储的η个时刻脉冲数据的和。
[0078]需要说明的是,η也称为平滑次数,可由用户在外部进行设定,通过设置缓冲池大小可设置平滑次数,无需用户开发软件对其进行修改,具体的,n = 2m,其中,m为级数,用户可以根据设定级数进而设定平滑次数,并且可以实现通过移位的方式进行计算不同级数下的平滑次数,不需要采用除法运算,提升了 MCU的计算速度,整个平滑过程仅使用5条单周期运行指令,执行速度非常快,程序简单高效。
[0079]本发明提供一种步进电机驱动器及其接收脉冲的处理方法,将接收到的单个脉冲分成多个小脉冲,减少脉冲当量,由原来单周期完成的大脉冲当量分成多个周期完成多个小脉冲当量,使脉冲当量连续,进一步使电机运行平稳,解决了传统无平滑功能的电机驱动器接收脉冲时导致电机低速抖动的问题,同时解决了部分上位机脉冲加减速不均匀导致的电机无法上高速而卡死的问题。
[0080]以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明由所提交的权利要求书确定的专利保护范围。
【主权项】
1.一种步进电机驱动器接收脉冲的处理方法,其特征在于,所述处理方法包括以下步骤: 在一个周期内接收多个脉冲信号,对每一脉冲信号进行细分以获取多个小脉冲; 对所述多个小脉冲做滑动平均滤波处理并输出平滑后的脉冲当量。2.如权利要求1所述的处理方法,其特征在于,所述对所述多个小脉冲做滑动平均滤波处理并输出平滑后的脉冲当量的步骤具体为: 在一个周期内接收多个小脉冲信号时,依次在缓冲池中保存η个时刻的小脉冲信号;在所述η个时刻后接收新的小脉冲信号时,依次使每个新的小脉冲信号替换所述η个时刻中最先保存的小脉冲信号; 根据所述η个时刻所保存的小脉冲信号输出平滑后的脉冲当量。3.如权利要求2所述的处理方法,其特征在于,所述依次使每个新的小脉冲信号替换所述η个时刻中最先保存的小脉冲信号的步骤具体为: 删除所述η个时刻中最先保存的小脉冲信号,保存所接收的新小脉冲信号。4.如权利要求3所述的处理方法,其特征在于,所述根据所述η个时刻所保存的小脉冲信号输出平滑后的脉冲当量的步骤具体为: 根据以下计算公式计算平滑后的脉冲当量: 平滑后的脉冲当量PulseOout = SumPulse/n,其中,SumPulse为当前所存储的η个时刻脉冲数据的和。5.一种步进电机驱动器,其特征在于,步进电机驱动器装置包括: 脉冲细分单元,用于在一个周期内接收多个脉冲信号并对每一脉冲信号进行细分以获取多个小脉冲; 脉冲平滑单元,用于对所述多个小脉冲做滑动平均滤波处理并输出平滑后的脉冲当量。6.如权利要求5所述的步进电机驱动器,其特征在于,所述脉冲平滑单元对所述多个小脉冲做滑动平均滤波处理并输出平滑后的脉冲当量的过程为: 在一个周期内接收多个小脉冲信号时,依次在缓冲池中保存η个时刻的小脉冲信号;在所述η个时刻后接收新的小脉冲信号时,依次使每个新的小脉冲信号替换所述η个时刻中最先保存的小脉冲信号; 根据所述η个时刻所保存的小脉冲信号输出平滑后的脉冲当量。7.如权利要求6所述的步进电机驱动器,其特征在于,所述脉冲平滑单元依次使每个新的小脉冲信号替换所述η个时刻中最先保存的小脉冲信号的过程为: 删除所述η个时刻中最先保存的小脉冲信号,保存所接收的新小脉冲信号。8.如权利要求7所述的步进电机驱动器,其特征在于,所述脉冲平滑单元根据所述η个时刻所保存的小脉冲信号输出平滑后的脉冲当量的过程为: 根据以下计算公式计算平滑后的脉冲当量: 平滑后的脉冲当量PulseOout = SumPulse/n,其中,SumPulse为当前所存储的η个时刻脉冲数据的和。
【文档编号】H02P8/32GK105897090SQ201610219020
【公开日】2016年8月24日
【申请日】2016年4月8日
【发明人】陈占军
【申请人】深圳星火自动化科技有限公司