一种基于FPGA实现伺服转角简谐运动的系统以及方法与流程

文档序号:12946227阅读:600来源:国知局
一种基于FPGA实现伺服转角简谐运动的系统以及方法与流程

本发明涉及一种基于fpga实现伺服转角简谐运动的系统以及方法,实现了较复杂的合成简谐波运动。属于软硬结合调试的领域,适用于开发减震器寿命试验台,实现路谱测试等。



背景技术:

fpga内部有大量的逻辑块以及逻辑块之间的互连线可供配置,与传统数字电路系统相比具有可编程、可靠性高、集成度高、速度快的优点,其将原来电路板级的设计通过配置器件内部的逻辑功能和输入/输出端口放在芯片中进行,在提高了电路性能的同时降低了印刷电路板设计的工作量和难度,提高了设计的灵活性和效率。

现代机电一体化市场对产品的精度要求随着工业自动化的快速发展越来越高,随之对伺服系统的要求也越来越严格。伺服电机因其具有工作平稳,响应迅速,及过载能力等优点在自动化行业得到重视,其广泛应用于喷绘机、写真机、医疗仪器及设备及计算机外设及精密仪器、工业控制系统、办公自动化、机器人等领域。伺服电机把收到的电信号转换成电动机轴上的角位移或角速,度输出,通过控制脉冲时间的长短来控制转动角度,其主要特点是自转现象随着信号电压的消失而消失,而且转速与转矩成反比,即转速随着转矩的增加而表现为匀速下降。传统的基于单片机的伺服系统受mcu计算速度及内部结构的限制,在面对越来越高要求伺服控制系统时遇到困难,fpga为实现高要求的电机控制提供了新思路。简单简谐运动实现已有较为成熟简单的方案,但叠加简谐运动的实现较为复杂。

matlab可运用与大量数据的计算和数据处理,作为一款功能强大的数学软件,matlab如今已运用于设计、开发、计算、图形、数据等多个行业。



技术实现要素:

针对上述现有技术中的缺陷,本发明要解决的技术问题体现在以下几点:克服现有技术的不足,将fpga应用于复杂叠加简谐运动的产生,可将双动试验机简化为单动并实现相同功能,加强了系统的灵活性,可操作性,降低了成本。

为实现上述目的,本发明是根据以下技术方案实现的:

一种基于fpga实现伺服转角简谐运动的系统,其特征在于,包括:分频器模块、时间计数模块、方向模块、拨码开关控制模块、rom1存储模块、rom2存储模块、led显示模块;所述rom1模块中存储时间数据;所述rom2模块存储与所述rom1模块数据对应的方向数据;所述分频器模块将系统时钟分频,为所述时间计数模块提供计数时钟频率;所述时间计数模块在计数到所述rom1模块中获取的时间数据及拨码开关的值整合后的时间数据时,发送脉冲信号到伺服电机,并且驱动所述led显示模块进行显示;所述方向模块发送对应所述rom1模块中地址的方向信号,其中方向数据来源于所述rom2模块;所述拨码开关控制模块作用于所述时间计数模块以控制合成不同频率简谐波。

本发明的一种基于fpga实现伺服转角简谐运动的方法,该方法通过上述的系统实现的,其特征在于,包括如下步骤:

步骤s1:rom模块进行存储数据,上位机对叠加简谐波在幅值上进行n等分分割后,在rom1中存储分割得到的4n个时间数据,rom2存储对应rom1中时间数据的方向数据;

步骤s2:拨码开关控制模块进行系统复位,rom1取值地址及其他计数器的值置零;

步骤s3:分频器模块进行系统时钟的分频,以此使拨码开关控制模块得到原合成简谐运动的倍频及其分频的合成简谐运动;

步骤s4:时间计数模块根据所述拨码开关的值以及从所述rom1模块中读取的时间数据进行计数,使时间计数模块取得的时间数据变为其倍数或分数,以此改变合成简谐运动,计数时间到时发送脉冲信号,其中计数频率采用所述分频器分频后的频率;

步骤s5:时间计数模块中计数时间到时,如果rom1的地址没到地址最大值则加1,否则置零;

步骤s6:时间计数模块到达计数时间时,方向模块读取rom2的方向数据,方向数据在rom2中的地址与当前rom1的地址对应;

步骤s7:通过4个led观察方向模块的输出、拨码开关控制模块的输入,其中一个led指示方向模块中输出的方向信号,随着方向改变而亮灭;其他三个led指示输入的拨码开关逻辑位的状态。

上述技术方案中,步骤s1中,rom模块进行数据的采集是利用matlab完成的,通过定间距采集时间数据和通过对定间距采集方向的数据进行求导,再通过数据整理、优化,使之能被fpga计数器匹配,同时设计并初始化rom用于存储数据。

上述技术方案中,在步骤s4中,计数模块有下述公式:tn×s=n×f,其中,tn表示rom1中地址为n的时间数据,s为拨码开关的值,n为步骤s4中计数器计数的个数,f为步骤s3获得的分频后的频率。

本发明与现有技术相比,具有如下有益效果:

(1)本发明将叠加简谐运动的数据存储于rom中,数据取用方便,简化了片上数据合成,处理过程;

(2)本发明将fpga应用于控制伺服电机的运转,通过计数器来定时发送脉冲信号和方向信号,精度更高,开发更灵活;

(3)本发明采用不同拨码开关控制合成简谐波的频率,增强了系统的可操作性和灵活性,调试更方便。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。

图1为本发明的拨码开关连接原理图;

图2为本发明的fpga实现伺服转角简谐运动的原理图;

图3为本发明的fpga实现伺服转角简谐运动的方法示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。

伺服电机简谐运动的关键在于将脉冲发射时间,在确定电机简谐运动幅值a及最大频率fmax后,可将其细分a*f,即a/a,分别在a/n,即a/a、2a/a、3a/a…a等处确定时间字,另外还需根据函数给电机发送方向信号,根据图像,电机在运转的时候是不断调整方向的,对应于曲线应该是其函数导数的正负,即切线斜率的正负,这可以通过求函数的导数,并由导数函数值的正负决定。

计算时间数据通过软件matlab来实现,运用扫描的原理,从t=0开始,按精度要求t每次取10-6逐次扫描到a,这里需要注意的是,整个函数图像关于t=t/2中心对称,但是t/2内并不对称,即(0-t/4],(t/4-t/2]的函数并不对称,故需要分别求出。后t/2的可通过中心对称变换得到数据,从而得到整个一周期的数据。

程序总体设计通过两个ip核rom,分别用来存储时间和方向数据,系统的时钟由l16提供一个频率为125mhz,即8ns的时钟周期,通过l分频为8lns,即后用于计数。另外两个处理模块用于处理数据和发送地址指令,从rom中读取处理数据,分别得到脉冲和方向输出。

图1为本发明的拨码开关连接原理图,如图1所示,其中只用到了三个拨码开关sw2、sw1、sw0,分别与fpga开发板上w13、p15、g15引脚相连。sw2、sw1、sw0的逻辑位的值转换成十进制即为拨码开关的值s。最小的值二进制001对应十进制1,最大111对应十进制7。

图2为本发明的fpga实现伺服转角简谐运动的原理图,如图2所示,其中fpga的pmod中的3.3v与伺服电机驱动器的pulse1和sign1相连,为伺服电机提供3.3v电源;fpga的pmod中的gnd与伺服电机驱动器gnd相连;fpga的pmod中的一个端口输出脉冲信号pulse与伺服电机驱动器pulse2相连,为伺服电机提供脉冲信号;fpga的pmod中的一个端口输出方向信号dir与伺服电机驱动器sign2相连,为伺服电机提供方向信号。

图3为本发明的fpga实现伺服转角简谐运动的方法示意图,如图3所示,本发明的一种基于fpga实现伺服转角简谐运动的系统,该系统包括:分频器模块、时间计数模块、方向模块、拨码开关控制模块、rom1存储模块、rom2存储模块、led显示模块;所述rom1模块中存储时间数据;所述rom2模块存储与所述rom1模块数据对应的方向数据;所述分频器模块将系统时钟分频,为所述时间计数模块提供计数时钟频率;所述时间计数模块在计数到所述rom1模块中获取的时间数据及拨码开关的值整合后的时间数据时,发送脉冲信号到伺服电机,并且驱动所述led显示模块进行显示;所述方向模块发送对应所述rom1模块中地址的方向信号,其中方向数据来源于所述rom2模块;所述拨码开关控制模块作用于所述时间计数模块以控制合成不同频率简谐波。

此外,本发明的一种基于fpga实现伺服转角简谐运动的方法,包括如下步骤:

步骤s1:rom模块进行存储数据,上位机对叠加简谐波在幅值上进行n等分分割后,在rom1中存储分割得到的4n个时间数据,rom2存储对应rom1中时间数据的方向数据;

步骤s2:拨码开关控制模块进行系统复位,rom1取值地址及其他计数器的值置零;

步骤s3:分频器模块进行系统时钟的分频,以此使拨码开关控制模块得到原合成简谐运动的倍频及其分频的合成简谐运动;

步骤s4:时间计数模块根据所述拨码开关的值以及从所述rom1模块中读取的时间数据进行计数,使时间计数模块取得的时间数据变为其倍数或分数,以此改变合成简谐运动,计数时间到时发送脉冲信号,其中计数频率采用所述分频器分频后的频率;

步骤s5:时间计数模块中计数时间到时,如果rom1的地址没到地址最大值则加1,否则置零;

步骤s6:时间计数模块到达计数时间时,方向模块读取rom2的方向数据,方向数据在rom2中的地址与当前rom1的地址对应;

步骤s7:通过4个led观察方向模块的输出、拨码开关控制模块的输入,其中一个led指示方向模块中输出的方向信号,随着方向改变而亮灭;其他三个led指示输入的拨码开关逻辑位的状态。

步骤s1中,rom模块进行数据的采集是利用matlab完成的,通过定间距采集时间数据和通过对定间距采集方向的数据进行求导,再通过数据整理、优化,使之能被fpga计数器匹配,同时设计并初始化rom用于存储数据。

在步骤s4中,计数模块有下述公式:tn×s=n×f,其中,tn表示rom1中地址为n的时间数据,s为拨码开关的值,n为步骤s4中计数器计数的个数,f为步骤s3获得的分频后的频率。

时间计数模块根据设置的模式从rom1读取数据,与计数器对比,由于计数器代表的就是时间,所以当计数器等于预读取的数据时fpga发送脉冲,并向rom1发送地址读取下一个数据。由于伺服电机识别的最小脉冲有限,故将脉冲定为10us的定宽脉冲,由于时间间隔最小的部分远远大于10us,故不会影响到数据的连续发送向rom2模块发送标志。计数器同步于时钟,每次捕捉到时钟变化,便增加时钟对应的时间8lns;当计数到时间字时,发送脉冲并给rom2模块发送标志,同时地址移向下一位,得到下一个时间字,并使计数清零。由于到末尾后需重新返回开始,使电机周期性运动,故需要判断地址是否到达末尾,如若到达,地址回到开头,并清零计数器以达到重复周期运动的目的。

方向模块读取rom2中的方向数据,在得到rom1模块的标志后发送并地址移向下一位。

本次调试使用的是松下公司a5交流伺服驱动器和马达,伺服电机有速度控制、位置控制、转矩控制三种控制模式,本次使用位置控制模式。在位置控制模式下,根据从上位机输入的位置指令,即脉冲列进行位置控制。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

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