本发明涉及伺服驱动及控制系统的速度测量领域,更具体的说是涉及一种基于增量式光电编码器的速度检测和基于FPGA的速度自适应检测装置。
背景技术:目前,增量式光电编码器在工业自动化、航空、汽车、数控机床、加工中心、导航系统、机器人等许多领域得到了广泛应用,它被用来作速度反馈和位置反馈的测量。目前,处理光电编码器信号实现速度测量方法主要有T法、M法、M/T法。T法的原理是测量相邻两个反馈脉冲的时间间隔;M法的原理是测量单位时间间隔内的反馈脉冲数;M/T法原理是同时测量规定时间间隔内反馈脉冲数和该时间间隔内整数个脉冲数下的时间。T法适用于低速测量场合,M法适用于高速测量场合,M/T法在整个转速范围内都有较好的准确性。但是低速时M/T法检测时间较长,无法满足速度检测系统的快速动态响应的要求,并且采用上述3种方法进行速度测量时不能根据不同的速度自适应地改变测量周期。为了使速度测量周期能够根据不同速度自适应地改变,国内外研究人员对基于增量式光电编码器的速度测量进行了大量研究。中国专利公开号CN102680726A,公开日2012年09月19日,发明创造的名称为一种用于电机转速测量的高精度自适应装置,该申请公开了基于FPGA的电机转速自适应测量方法,该方法通过预估正交信号的周期来自适应地改变转速测量周期,其不足之处是预估正交信号的周期需要花费一个正交信号周期的时间,从而增加了转速测量周期;速度测量周期在临界速度附近跳变,使临界速度附近的速度检测不稳定;同时该方法直接使用增量式编码器输出的正交信号作为转速测量信号,未对增量式编码器输出的正交信号进行倍频处理,在低速时转速测量周期比较长。中国专利公开号CN103308707A,公开日2013年09月18日,发明创造的名称为一种自适应转速测量方法,该申请公开了基于软件方法实现自适应转速测量,降低了对硬件设备的要求,其不足之处是转速测量周期比较长。美国电气和电子工程师协会(IEEE)TRANSACTIONSONINSTRUMENTATIONANDMEASUREMENT的《High-PerformancePositionDetectionandVelocityAdaptiveMeasurementforClosed-LoopPositionControl》(1998年08月第47卷第4期)和《AdaptiveHigh-PerformanceVelocityEvaluationBasedonaHigh-ResolutionTime-to-DigitalConverter》(2008年09月第57卷第9期)都公开了一种基于FPGA的速度自适应测量方法,该方法通过预估正交信号的周期来自适应地改变速度测量周期,其不足之处是预估正交信号的周期需要花费一个正交信号周期的时间,从而增加了转速测量周期;速度测量周期在临界速度附近跳变,使临界速度附近的速度检测不稳定;同时该方法直接使用增量式编码器输出的正交信号作为转速测量信号,未对增量式编码器输出的正交信号进行倍频处理,在低速时转速测量周期比较长。ElsevierScience的MicroprocessorsandMicrosystems第24卷的《Accuratevelocitvevaluationusingadaptivesamplinginterval》公开了一种基于FPGA的速度自适应测量方法,该方法通过对时间计数器的高M位进行译码获得下一个速度测量周期的脉冲计数器的初始值,从而自适应地改变速度测量周期,其不足之处是速度测量周期比较长,速度测量周期在临界速度附近跳变,使临界速度附近的速度检测不稳定。
技术实现要素:本发明目的是为解决速度测量周期长和速度测量周期在临界速度附近跳变的问题,从而提出了一种基于FPGA的速度自适应检测装置。本发明的技术方案概述如下:一种基于FPGA的速度自适应检测装置,至少包括晶振电路1、编码器接口及调理电路2、FPGA芯片3和微处理器4;FPGA芯片3至少包括四倍频单元31、分频器32、延时单元33、计数器34、零速度检测单元35、锁存器A36、自适应控制器37、锁存器B38和总线接口单元39;晶振电路1输出的时钟信号Clock输入到FPGA芯片3;编码器接口及调理电路2输出的正交信号A和B输入到FPGA芯片3;FPGA芯片3与微处理器4相连。所述四倍频单元31输出的四倍频信号Mul输入到分频器32;分频器32输出的锁存信号Lat分别输入到延时单元33、锁存器A36、自适应控制器37和锁存器B38;延时单元33输出的复位信号Clr分别输入到计数器34和自适应控制器37;计数器34的输出端分别与锁存器A36的输入端和零速度检测单元35的输入端相连;零速度检测单元35输出端分别与计数器34、锁存器A36和总线接口单元39的输入端相连;所述锁存器A36输出端分别与自适应控制器37和总线接口单元39的输入端相连;所述自适应控制器37输出端分别与分频器32和锁存器B38的输入端相连;所述锁存器B38输出端分别与自适应控制器37和总线接口单元39的输入端相连;总线接口单元39与微处理器4相连;编码器接口及调理电路2输出的正交信号A和B输入到FPGA芯片3的四倍频单元31;晶振电路1输出的时钟信号Clock分别输入到FPGA芯片3的四倍频单元31、分频器32、延时单元33和计数器34。所述锁存器A36输出的时间计数值Tn分别输入到自适应控制器37和总线接口单元39;所述自适应控制器37输出的分频系数指数Pe分别输入到分频器32和锁存器B38;所述锁存器B38输出的分频系数指数Pn分别输入到自适应控制器37和总线接口单元39;所述零速度检测单元35输出的零速度标志信号Vz分别输入到计数器34、锁存器A36和总线接口单元39。所述自适应控制器37至少包括译码器371和判别器372;译码器371的输入端分别与锁存器A36输出的时间计数值Tn和锁存器B38输出的分频系数指数Pn相连;判别器372分别与译码器371的输出端、延时单元33输出的复位信号Clr和分频器32输出的锁存信号Lat相连;判别器372输出的信号为分频系数指数Pe,Pe为自然数。所述分频器32输出的锁存信号Lat有效时,锁存器B38将自适应控制器37的判别器372输出的分频系数指数Pe锁存为锁存器B38输出的分频系数指数Pn,锁存器A36将计数器34输出的时间计数值和零速度检测单元35输出的零速度标志信号Vz锁存为锁存器A36输出的时间计数值Tn;锁存器A36输出的时间计数值Tn的最高位是零速度检测单元35输出的零速度标志信号Vz;通过锁存信号Lat的同步锁存处理,确保了分频系数指数Pn、时间计数值Tn和零速度标志信号Vz隶属于同一测量周期内的测量值。所述FPGA芯片3的分频器32对输入的四倍频信号Mul进行2Pe分频,Pe为自然数,Pe由自适应控制器37的判别器372输出。所述FPGA芯片3的零速度检测单元35检测到计数器34输出的时间计数值为最大值时,零速度检测单元35输出的零速度标志信号Vz有效(高低平有效或低电平有效)。所述FPGA芯片3的计数器34对输入的时钟信号Clock进行计数,当零速度检测单元35输出的零速度标志信号Vz有效时,计数器34停止计数;当延时单元33输出的复位信号Clr有效时(高低平有效或低低平有效),计数器34复位清零。所述自适应控制器37的译码器371对锁存器A36输出的时间计数值Tn除最高位外的其它位进行右移操作后,再对时间计数值Tn进行译码操作;译码器371对锁存器A36输出的时间计数值Tn除最高位外的其它位进行右移操作的位数等于锁存器B38输出的分频系数指数Pn。所述自适应控制器37的判别器372比较前后两个测量周期的译码器371输出的译码值,如果前后两个测量周期的译码器371输出的译码值相等,判别器372输出的分频系数指数Pe等于译码器371输出的译码值;如果前后两个测量周期译码器371输出的译码值不相等,判别器372输出的分频系数指数Pe保持不变。确定计数器34的位宽N,N为正整数。设需要测量的最小速度为Vminr/min(转每分钟)或Vminmm/min(毫米每分钟),为使在最小速度Vmin情况下,计数器34不溢出,根据以下式(1-1)确定满足式(1-1)条件的最小正整数N来作为计数器34的位宽。在式(1-1)中,M为增量式光电编码器的线数,单位是线/转或线/mm;Tclk为时钟信号Clock的周期,单位是秒(s)。所述微处理器4通过总线接口单元39从FPGA芯片3中读取锁存器B38输出的分频系数指数Pn、锁存器A36输出的时间计数值Tn和零速度检测单元35输出的零速度标志信号Vz,并根据以下式(1-2)或式(1-3)计算速度值V。(1)当零速度标志信号Vz是高电平有效时:(2)当零速度标志信号Vz是低电平有效时:在式(1-2)和式(1-2)中,V为速度,单位是转每分钟(r/min)或毫米每分钟(mm/min);M为编码器线数,单位是线/转或线/mm;Tclk为时钟信号Clock的周期,单位是秒(s)。本发明与现有技术相比具有的有益效果:(1)本发明使用增量式光电编码输出的正交信号的四倍频信号作为速度测量的检测信号,可以有效减小低速时的速度测量时间,提高速度测量的实时性。(2)本发明不需要对增量式光电编码输出的正交信号的周期进行预估就可以根据不同速度自适应地改变速度测量周期,实现速度测量的连续测量。(3)本发明使用判别器使速度测量周期在临界速度附近不跳变,临界速度附近的速度检测稳定可靠。附图说明图1是基于FPGA的速度自适应检测装置技术方案总体框图图2是本发明的自适应控制器的技术方案图图3是本发明实施例一的时钟信号Clock、正交信号A和B、四倍频信号Mul之间的关系示意图图4是本发明实施例一的四倍频信号Mul、锁存信号Lat、复位信号Clr之间的关系示意图图5是本发明实施例一的锁存器A36输出的时间计数值Tn的位结构示意图图6是本发明实施例二的时钟信号Clock、正交信号A和B、四倍频信号Mul之间的关系示意图图7是本发明实施例二的四倍频信号Mul、锁存信号Lat、复位信号Clr之间的关系示意图图8是本发明实施例二的锁存器A36输出的时间计数值Tn的位结构示意图具体实施方式下面结合附图对本发明作进一步描述。(1)实施例一:本发明实施例一中的增量式光电编码器为增量式光栅尺编码器,其线数为1000线/mm,即每毫米输出1000个正交信号,也就是M=1000;晶振电路1输出的时钟信号Clock的频率为50MHz,周期为20ns(纳秒),即Tclk=2.0×10-8(s)。本发明实施例一需要测量的速度范围是从1mm/min到3000mm/min。参考图1,本发明实施例一的基于FPGA的速度自适应检测装置至少包括晶振电路1、编码器接口及调理电路2、FPGA芯片3和微处理器4;FPGA芯片3至少包括四倍频单元31、分频器32、延时单元33、计数器34、零速度检测单元35、锁存器A36、自适应控制器37、锁存器B38和总线接口单元39。如图3所示为本发明实施例一的时钟信号Clock、正交信号A和B、四倍频信号Mul之间的关系示意图。四倍频单元31对编码器接口及调理电路2输出的正交信号A和B进行四倍频处理获得四倍频信号Mul,所以增量式光栅尺编码器每移动一毫米,四倍频单元31输出的四倍频信号Mul的脉冲个数为4×M=4000个。在图3中,四倍频信号Mul的有效高电平宽度为一个时钟信号Clock的周期Tclk。如图4所示为本发明实施例一的四倍频信号Mul、锁存信号Lat、复位信号Clr之间的关系示意图。在图4中,设四倍频信号Mul的相邻两个脉冲之间的间隔为P,则分频器32输出的锁存信号Lat的相邻两个脉冲之间的间隔为2Pe×P,即分频器32对四倍频信号Mul进行2Pe分频;延时单元33输出的复位信号Clr比锁存信号Lat滞后了一个时钟信号Clock的周期Tclk,目的是等待锁存信号Lat将计数器34输出的时间计数值锁存完成后才对计数器34进行复位清零操作。本发明实施例一中的四倍频信号Mul、锁存信号Lat和复位信号Clr都是高电平有效。在图4中,锁存信号Lat的相邻两个脉冲之间的间隔或者复位信号Clr的相邻两个脉冲之间的间隔是速度测量的测量周期,从图4中可以看出,本发明可以实现速度测量的连续测量。参考图2,本发明实施例一的自适应控制器37至少包括包括译码器371和判别器372;译码器371的输入端分别与锁存器A36输出的时间计数值Tn和锁存器B38输出的分频系数指数Pn相连;判别器372分别与译码器371的输出端、延时单元33输出的复位信号Clr和分频器32输出的锁存信号Lat相连;判别器372输出的信号为分频系数指数Pe。译码器371对锁存器A36输出的时间计数值Tn除最高位外的其它位进行右移操作后,再对时间计数值Tn进行译码操作;译码器371对锁存器A36输出的时间计数值Tn除最高位外的其它位进行右移操作的位数等于锁存器B38输出的分频系数指数Pn。判别器372比较前后两个测量周期的译码器371输出的译码值,如果前后两个测量周期的译码器371输出的译码值相等,判别器372输出的分频系数指数Pe等于译码器371输出的译码值;如果前后两个测量周期译码器371输出的译码值不相等,判别器372输出的分频系数指数Pe保持不变。结合本发明实施例一,根据式(1-1)选择符合式(1-1)条件的最小正整数N,则N=20,即计数器34的位宽为20,所以锁存器A36输出的时间计数值Tn的位宽为21位,时间计数值Tn的最高位是零速度检测单元35输出的零速度标志信号Vz。图5是本发明实施例一的锁存器A36输出的时间计数值Tn的位结构示意图,时间计数值Tn的位编号从左到右是:bit20,bit19,bit18,bit17,…,bit3,bit2,bit1,bit0;其中时间计数值Tn的bit20即时间计数值Tn的最高位是零速度检测单元35输出的零速度标志信号Vz,时间计数值Tn的其余位(bit19,bit18,bit17,…,bit3,bit2,bit1,bit0)是锁存信号Lat锁存的计数器34的时间计数值。本发明实施例一的零速度标志信号Vz的有效电平是高电平有效。结合本发明实施例一,被测速度值V、时间计数值Tn除最高位bit20外的其它位(bit19,bit18,bit17,…,bit3,bit2,bit1,bit0)右移Pn位后的值、译码器371输出的数值和测量周期范围的关系如表1-1所示。表1-1从表1-1可以看出,当被检测速度值V的范围是22.888mm/min~3000.000mm/min时,测量周期的范围是0.32768ms~0.65534ms;当被检测速度值V的范围是15.259mm/min~22.888mm/min时,测量周期的范围是0.65536ms~0.98302ms;当被检测速度值V的范围是1.000mm/min~15.259mm/min时,测量周期的范围是0.98304~15.000ms。可见根据本发明设计的实施例一的被测速度的范围在15.259mm/min~3000.000mm/min时,测量周期被控制在1ms内,与现有技术相比,速度测量实时性明显提高;当本发明实施例一的被测速度的范围在1.000mm/min~15.259mm/min时,测量周期最大为15.000ms,与现有技术相比,低速时的实时性也有明显提高。同时,根据本发明设计的实施例一的被测速度的范围可以扩展到0.715mm/min~5859.375mm/min,比预先设计的1.000mm/min~3000.000mm/min范围要宽,且低速实时性有明显提高。由于本发明的实施例一的零速度标志信号Vz是高电平有效,所以微处理器4通过总线接口单元39从FPGA芯片3中读取锁存器B38输出的分频系数指数Pn、锁存器A36输出的时间计数值Tn和零速度检测单元35输出的零速度标志信号Vz后,可根据以下式(1-2)计算速度值V,即式中:V为速度,单位是转每分钟(mm/min);M为编码器线数,单位是线/mm;Tclk为时钟信号Clock的周期,单位是秒(s)。(2)实施例二:本发明实施例二中的增量式光电编码器为增量式光电旋转编码器,其线数为2500线/转,即每转输出2500个正交信号,也就是M=2500;晶振电路1输出的时钟信号Clock的频率为50MHz,周期为20ns(纳秒),即Tclk=2.0×10-8(s)。本发明实施例二需要测量的速度范围是从1r/min到3000r/min。参考图1,本发明实施例二的基于FPGA的速度自适应检测装置至少包括晶振电路1、编码器接口及调理电路2、FPGA芯片3和微处理器4;FPGA芯片3至少包括四倍频单元31、分频器32、延时单元33、计数器34、零速度检测单元35、锁存器A36、自适应控制器37、锁存器B38和总线接口单元39。如图6所示为本发明实施例二的时钟信号Clock、正交信号A和B、四倍频信号Mul之间的关系示意图。四倍频单元31对编码器接口及调理电路2输出的正交信号A和B进行四倍频处理获得四倍频信号Mul,所以增量式光电旋转编码器每旋转一周,四倍频单元31输出的四倍频信号Mul的脉冲个数为4×M=10000个。在图6中,四倍频信号Mul的有效低电平宽度为一个时钟信号Clock的周期Tclk。如图7所示为本发明实施例二的四倍频信号Mul、锁存信号Lat、复位信号Clr之间的关系示意图。在图7中,设四倍频信号Mul的相邻两个脉冲之间的间隔为P,则分频器32输出的锁存信号Lat的相邻两个脉冲之间的间隔为2Pe×P,即分频器32对四倍频信号Mul进行2Pe分频;延时单元33输出的复位信号Clr比锁存信号Lat滞后了一个时钟信号Clock的周期Tclk,目的是等待锁存信号Lat将计数器34输出的时间计数值锁存完成后才对计数器34进行复位清零操作。本发明实施例二中的四倍频信号Mul、锁存信号Lat和复位信号Clr都是低电平有效。在图7中,锁存信号Lat的相邻两个脉冲之间的间隔或者复位信号Clr的相邻两个脉冲之间的间隔是速度测量的测量周期,从图7中可以看出,本发明可以实现速度测量的连续测量。参考图2,本发明实施例二的自适应控制器37至少包括包括译码器371和判别器372;译码器371的输入端分别与锁存器A36输出的时间计数值Tn和锁存器B38输出的分频系数指数Pn相连;判别器372分别与译码器371的输出端、延时单元33输出的复位信号Clr和1分频器32输出的锁存信号Lat相连;判别器372输出的信号为分频系数指数Pe。译码器371对锁存器A36输出的时间计数值Tn除最高位外的其它位进行右移操作后,再对时间计数值Tn进行译码操作;译码器371对锁存器A36输出的时间计数值Tn除最高位外的其它位进行右移操作的位数等于锁存器B38输出的分频系数指数Pn。判别器372比较前后两个测量周期的译码器371输出的译码值,如果前后两个测量周期的译码器371输出的译码值相等,判别器372输出的分频系数指数Pe等于译码器371输出的译码值;如果前后两个测量周期译码器371输出的译码值不相等,判别器372输出的分频系数指数Pe保持不变。结合本发明实施例二,根据式(1-1)选择符合式(1-1)条件的最小正整数N,则N=19,即计数器34的位宽为19,所以锁存器A36输出的时间计数值Tn的位宽为20位,时间计数值Tn的最高位是零速度检测单元35输出的零速度标志信号Vz。图5是本发明实施例二的锁存器A36输出的时间计数值Tn的位结构示意图,时间计数值Tn的位编号从左到右是:bit19,bit18,bit17,…,bit3,bit2,bit1,bit0;其中时间计数值Tn的bit19即时间计数值Tn的最高位是零速度检测单元35输出的零速度标志信号Vz,时间计数值Tn的其余位(bit18,bit17,…,bit3,bit2,bit1,bit0)是锁存信号Lat锁存的计数器34的时间计数值。本实施例二的零速度标志信号Vz的有效电平是低电平有效。结合本实施例二,被测速度值V、时间计数值Tn除最高位bit19外的其它位(bit18,bit17,…,bit3,bit2,bit1,bit0)右移Pn位后的值、译码器371输出的数值和测量周期范围的关系如表1-2所示。表1-2从表1-2可以看出,当被检测速度值V的范围是9.155r/min~3000.000r/min时,测量周期的范围是0.25600ms~0.65534ms;当被检测速度值V的范围是6.103r/min~9.155r/min时,测量周期的范围是0.65536ms~0.98302ms;当被检测速度值V的范围是1.000r/min~6.103r/min时,测量周期的范围是0.98304~6.000ms。可见根据本发明设计的实施例二的被测速度的范围在6.103r/min~3000.00r/min时,测量周期被控制在1ms内,与现有技术相比,速度测量实时性明显提高;当本发明实施例二的被测速度的范围在1.000r/min~6.103r/min时,测量周期最大为6.000ms,与现有技术相比,低速时的实时性也有明显提高。同时,根据本发明设计的实施例二的被测速度的范围可以扩展到0.572r/min~6250.000r/min,比预先设计的1.000r/min~3000.000r/min范围要宽,且低速实时性有明显提高。由于本发明的实施例二的零速度标志信号Vz是低电平有效,所以微处理器4通过总线接口单元39从FPGA芯片3中读取锁存器B38输出的分频系数指数Pn、锁存器A36输出的时间计数值Tn和零速度检测单元35输出的零速度标志信号Vz后,可根据以下式(1-3)计算速度值V,即式中:V为速度,单位是转每分钟(r/min);M为编码器线数,单位是线/转;Tclk为时钟信号Clock的周期,单位是秒(s)。在此说明书中,应当指出,以上实施例仅是本发明的两个具体例子。显然,本发明不局限于上述具体实施例,还可以做出各种修改、变换和变形。因此,说明书和附图应被认为是说明性的而非限制性的。凡是依据本发明的技术实质对以上实施例所作的任何简单修改和等同变化与修饰,均应认为属于本发明的保护范围。