基于FPGA的步进电机升降速控制方法与流程

文档序号:13915383阅读:190来源:国知局

本发明属于步进电机控制技术领域,尤其涉及一种基于fpga(fieldprogrammablegatearray,现场可编程门阵列)的步进电机升降速控制方法和系统。



背景技术:

目前,由于步进电机的特性,在驱动负载时,电机在启动和停止阶段往往需要加、减速控制,而各种加减速曲线中,采用s形曲线进行升降速更适合于步进电机的矩频特性。

步进电机是一种离散的运动装置,广泛应用于国民经济的各个领域,目前通用的控制方法是采用单片机结合步进电机控制器的方法进行控制,该种控制方法的缺点是:1、由于单片机的运行速度限制,在实现细分驱动时,步进电机速度不高;2、单片机通过定时器控制步进电机的步进脉冲的产生,由于定时器的时间分辨率有限,所以步进电机的运行速度调节是离散的,各级速度之间间隔较大,在一些对速度要求严格的场合不能满足要求;3、由于速度的间隔较大,造成各个速度之间的力矩也不连续,并且由于惯性的原因,容易发生失步;4、步进电机无法按预设步数进行转动。

因此,传统的步进电机控制技术存在着因步进电机容易失步或者无法按预设步数转动导致其实用性差的问题。



技术实现要素:

本发明的目的在于提供一种基于fpga的步进电机升降速控制方法和系统,旨在解决传统的步进电机控制技术存在需要根据单片机的类型以定制不同的控制公式效率低,成本高;且因步进电机容易失步或者无法按预设步数转动导致其实用性差的问题。

一种基于fpga的步进电机升降速控制方法,包括:

基于启动频率、运行时间和目标频率,根据预设的运行公式生成被控步进电机的速度表;

根据升速或降速需求确定对所述速度表的读取顺序;

基于确定出的所述读取顺序读取所述速度表,利用时钟产生脉冲信号驱动所述被控步进电机进行升降速运动。

此外,还提供了一种计算机终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述方法的步骤。

此外,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法的步骤。

与现有技术相比,本发明存在以下技术效果,上述控制方法是基于fpga设定,可以不需要根据单片机的类型以定制不同的运行公式,而利用通用性高的fpga设定电机的控制方法,可以兼容各种控制场景,提高了生产效率,节约了研发成本;另外,在步进电机速度的控制中,通过速度表改变脉冲频率以驱动步进电机进行加减速,如此,可以对步进电机的运动精确控制,保证电机的可靠性、不失步,实用性好;而且,步进电机升、降速采用同一张表,降速时,只需要倒序读取表中数据即可,简化了设计,减少ram(randomaccessmemory,内存)容量;另外,当运行目标步数小于升、降速步进之和时,更容易精确控制步进电机运动步数。

附图说明

图1为本发明较佳实施例提供基于fpga的步进电机升降速控制方法的具体流程图;

图2为本发明较佳实施例提供频率的曲线;

图3为本发明较佳实施例提供的计算机终端的模块示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

请参阅图1,本发明较佳实施例提供基于fpga的步进电机升降速控制方法包括以下步骤:

步骤s110,基于启动频率、运行时间和目标频率,根据预设的运行公式生成被控步进电机的速度表。

具体地,用于可以根据需求自行设定启动频率、运行时间和目标频率,使用matlab生成步进电机升降速曲线及相关数据,并将数据导入到fpga内置或外置的ram中,即得到速度表。优选地,用户可根据需要在ram写入新的数据,比如输入新的启动频率、运行时间或目标频率,更新升降速曲线,以适应不的应用需求。需要指出的是,运行时间指的是升速时间或降速时间,或者两者之和。

步骤s120,根据升速或降速需求确定对所述速度表的读取顺序。

为了简化设计,减少ram容量,步进电机升、降速采用同一张表,由此可见,本实施例中,上述的升速时间和降速时间相同。步进电机升速时,正序读取速度表中数据;降速时,只需要倒序读取速度表中数据即可。因此,根据预设的运行过程或接收外部指令提出的需求,步进电机进入升速或降速时,则确定速度表的读取顺序同时。使用同一张表还有一个好处,就是升降速的步数相等,当运行目标步数小于升、降速步进之和时,更容易精确控制步进电机运动步数。具体地,被控步进电机在升速过程中,读取地址递增;所述被控步进电机降速过程中,读取地址递减。

步骤s130,基于确定出的所述读取顺序读取所述速度表,利用时钟产生脉冲信号驱动所述被控步进电机进行升降速运动。

具体地,以fpga实现的步进电机的升降速控制器在驱动电机工作时,实时读取速度表中数据,产生对应的频率的脉冲信号,驱动步进电机工作。

本实施例中,被控步进电机进行升降速运动过程中,相邻的每步对应的所述脉冲信号的频率不同。提高控制精度,速度表中存储的数据为各步的频率,即步进电机每走一步,即改变一次电机的频率,这样也可简化fpga的实现,即从表中读取一个数据电机即走一步,也简化电机步数控制。

另外,根据预设的运行过程或接收外部指令提出的需求,接收控制命令,若所述控制命令控制所述被控步进电机运行的目标步数小于升降速步数之和,则在升速过程中直接跳转到降速过程,以保证按需求的步数运行。可以理解的是按时间运行同理,即控制命令控制所述被控步进电机运行的时间小于升降速步数时间之和,则在升速过程中直接跳转到降速过程。

本实施例中,脉冲信号由fpga片内高频时钟(频率为f_base)产生并由分频器分频得到,读取速度表不同地址上的所述分频器的装载系数(装载值)以改变所述脉冲信号的频率f,f=f_base/装载系数。驱动步进电机的脉冲信号的频率fn(hz)与转速vn(r/min)的关系为:

fn=vn*a/60.(公式1)

式中a为步进电机转动一圈的步数(一个脉冲电机走一步)。可见,频率fn与转速vn为线性关系,只要求得频率即可得到电机转速。

一般情况下,步进电机升降速运动包括升速、匀速和降速过程:

在升速过程中,以所述被控步进电机的启动频率开始,按照所述速度表切换所述装载系数(读取地址递增)来增大所述脉冲信号的频率以使被控步进电机进行升速运动;当脉冲信号的频率增大到所述目标频率时,所述被控步进电机进入匀速过程;在降速过程中,以所述目标频率开始,按照所述速度表切换所述装载系数(读取地址递减)来减小所述脉冲信号的频率以使被控步进电机进行降速运动。

预设的s形曲线的运行公式为:

fn1=f_min*exp(k*tn),(tn<=t_r/2);(公式2)

fn2=(f_max+f_min)-f_min*exp(k*(t_r–tn),(tn>t_r/2);(公式3)

tn=t(n-1)+1/f(n-1),(t0=1/f_min);(公式4)

其中,fn1、fn2为所述被控步进电机运行各步对应的频率;f_min为所述启动频率;f_max为所述目标频率;t_r为升速或降速的运行时间;n为升速/降速过程总步数;tn为升降速运动过程中的时刻点;k为参量,由所述启动频率、所述目标频率和所述升速时间决定,其中任何一个值改变,均要调整k值,否则曲线fn1和曲线fn2在中间时刻(t_r/2)将无法衔接。将公式4与公式3及公式2结合,进行迭代运行算,即可得到各步的频率。

可见,被控步进电机在升速和降速的过程中,都分段曲线fn1、fn2控制,曲线fn1和曲线fn2连接在一起形成s形曲线,如此,在升降速运动时有利于对步进电机的保护。

以升速时间t_r=0.2s,启动频率为200hz,目标频率为4000hz为例,通过以上公式得到频率的曲线如图2所示。与图2所示频率的曲线对应的速度表ram存放格式如下:

使用matlab将以上数据写入coe文件即可。

控制流程时,首先读取ram中的配置参数,包括运行步数,运行时间等参数;当系统按照步数运行时,若需要的运行步数小于升降速步数之和,则在升速过程中直接跳转到降速过程,以保证按需求的步数运行;按时间运行同理。

对于装置值的读取,电机在升速过程中,读地址递增,降速过程中,读地址递减;另外,电机支持在运行过程中再次改变目标速度(运行过程中升速或降速),但目标速度不能大于查找表中最大速度对应的装置值;

使用matlab生成ram初始化文件,操作方便;采用s形曲线进行升降速,且电机每走一步均改变一次频率,电机速度变化平滑,减少失步、过冲概率;使用查表实现步进电机升降速,fpga不需要进行过多的计算,逻辑资源占用较少。

图3是本发明一实施例提供的计算机终端的示意图。如图3所示,该实施例的计算机终端6包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机程序62。所述处理器60执行所述计算机程序62时实现上述各个基于fpga的步进电机升降速控制方法实施例中的步骤,例如图1所示的步骤110至130。。

示例性的,所述计算机程序62可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器61中,并由所述处理器60执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序62在所述计算机终端6设备6中的执行过程。例如,所述计算机程序62可以被分割成生成模块、选择模块驱动模块,各模块具体功能如下:

生成模块,用于基于启动频率、运行时间和目标频率,根据预设的运行公式生成被控步进电机的速度表;选择模块,用于根据升速或降速需求确定对所述速度表的读取顺序;驱动模块,用于基于确定出的所述读取顺序读取所述速度表,利用时钟产生脉冲信号驱动所述被控步进电机进行升降速运动。

所述计算机终端6可以是自助金融设备、桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机终端6可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图3仅仅是计算机终端6的示例,并不构成对计算机终端6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机终端6还可以包括输入输出设备、网络接入设备、总线等。

所称处理器60可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器61可以是所述计算机终端6的内部存储单元,例如计算机终端6的硬盘或内存。所述存储器61也可以是所述计算机终端6的外部存储设备,例如所述计算机终端6上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器61还可以既包括所述计算机终端6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机程序以及所述计算机终端6所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。

所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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