一种基于增量式光电编码器测量速度的方法与流程

文档序号:12454382阅读:444来源:国知局

本发明涉及运动控制系统的速度测量领域,尤其涉及基于增量式光电编码器精确测量速度的方法。



背景技术:

在工业设备上,增量式光电编码器是一种使用非常广泛的速度传感器。工作时,可以输出两路相位差为90°的正交脉冲信号A和B,正转时,A超前B 90°;反转时,B超前A 90°;通过对A、B信号的脉冲计算,即可得出机械设备的速度信息,从而对其进行精确控制。

目前,对增量式光电编码器的速度测量一般有两种方法。第一种方法是用DSP或ARM的正交脉冲采集模块先对编码器的AB脉冲进行采集,然后计算出在一定采样时间内采集到的脉冲个数或者计算出采集固定脉冲个数所需要的时间,从而根据光电编码器的分辨率计算出速度。但由于DSP或ARM本身固有的缺陷,在采样时间的开头和结尾可能有不完整的脉冲,所以计算一定采样时间内采集到的脉冲个数最大可能有2个脉冲的误差;而计算采集固定脉冲个数所需要的时间也可能有最大1个时间单位的偏差问题。

第二种方法是用FPGA先对编码器AB脉冲进行解码,解出正交脉冲的方向和脉冲,然后再计算出一定采样时间内采集到的脉冲个数,其中采集到的脉冲个数为采样时间内的整数个脉冲加上在采样时间头和尾多出来的不是整数个的脉冲,其中不是整数个脉冲的算法为采样开始到第一个脉冲的上升沿计时T1,采样结束到最后一个脉冲的上升沿计时T2,第一个脉冲上升沿到第二个脉冲上升沿计时T0,则采样时间内不是整数个脉冲的个数为(T1+T2)/T0,然后再根据光电编码器的分辨率计算出速度。但这种方法要用FPGA对编码器的AB脉冲先进行解码,而这个解码过程本身比较繁琐,比较占用FPGA的资源;解码后算出的采样开头和结尾的不是整数个的脉冲的个数只有在编码器匀速运转的情况下才准确,在加减速的情况下就非常不准确了。虽然比第一种方法有所改进,但还是有很大的局限性。



技术实现要素:

为了克服现有技术中存在的缺点和不足,本发明的目的在于提供一种基于增量式光电编码器测量速度的方法,在高速、低速或者变速时都能高精度的测量出速度,速度测量的准确度更高。

本发明的技术方案如下:

一种基于增量式光电编码器测量速度的方法,包括如下步骤:

S1:对增量式光电编码器的A相、B相信号进行异步信号同步化;

S2:对同步后的A相、B相信号进行滤波,生成滤波后的信号A1、B1,消除可能出现的干扰信号;

S3:设置4bit的状态寄存器ab_state,其中bit[0]表示当前时钟信号上升沿B1信号的状态值,bit[1]表示当前时钟信号上升沿A1信号的状态值,bit[2]表示上一时钟信号上升沿B1信号的状态值,bit[3]表示上一时钟信号上升沿A1信号的状态值;

S4:设置A1信号、B1信号的正交采样个数为N;

S5:计数器开始计数,计时器开始计时:当ab_state等于0010、1011、1101或0100时,表示编码器正在正向运转点,计数器开始计数且同时计数器开始计时,每遇到ab_state等于0010、1011、1101或0100时,计数器递加1,当计数器计数值等于N时,计时器锁存计时时间T,同时计数器和计时器清零;

S6:由正交采样计数值N和计时时间T算出编码器正转的速度。

其中:步骤S5中,当ab_state等于0001、0111、1110或1000时,表示编码器正在反向运转点,计数器开始计数且同时计数器开始计时,每遇到ab_state等于0001、0111、1110或1000时,计数器递加1,当计数器计数值等于N时,计时器锁存计时时间T,步骤S6中由正交采样计数值N和计时时间T算出编码器反转的速度。

其中:所述异步信号同步化是将A相、B相信号同步到FPGA模块所在的时钟域里,消除可能出现的亚稳态。

其中:所述4bit的状态寄存器ab_state在FPGA模块的时钟信号上升沿进行更新。

其中:所述计数器和计时器在FPGA模块的时钟信号上升沿进行更新。

本发明的有益效果:

本发明一种基于增量式光电编码器测量速度的方法,计数器和计时器都在同一个时钟信号的上升沿处理,即在时钟CLK的某一上升沿,例如当上升沿为m时,ab_state更新了计数器加1的点,且此时计数器等于了设定的正交采样个数N,由于计时器也是在CLK的上升沿更新,所以在上升沿m,计时器发现计数器已经计数到N,会锁存计时器的值T,则此时计时值T就是计数值到达N所用的时间,且这个T不论编码器在高速、低速或者变速时候都是准确的,消除了理论上的测量误差,故本发明是一种非常精确的增量式光电编码器速度测量方法,解决了DSP和ARM算法误差大的问题,测量速度的准确度更高,同时也解决了FPGA算法在加减速时候测量不准的弊端,并且不需要对AB信号进行解码,从而解决了FPGA算法繁琐和资源浪费的问题。

附图说明

图1是本发明一种基于增量式光电编码器测量速度的方法的原理图。

具体实施方式

为了便于本领域技术人员的理解,下面结合实施例及附图对本发明作进一步的说明,实施方式提及的内容并非对本发明的限定。

如图1所示,本发明速度测量方法的原理图,A1、B1是经过异步信号同步化和滤波后的AB信号,A1信号和B1信号的上升沿和FPGA的时钟信号CLK的上升沿保持了完全一致。由图可知,编码器正转时,当ab_state等于0010、1011、1101或0100时,即是编码器计数器递加1的点,同时也是计时器计时开始和结束的点;编码器反转时,当ab_state等于0001、0111、1110或1000时,即是编码器计数器递加1的点,同时也是计时器计时开始和结束的点。在计数器等于N的那个CLK上升沿锁存计时时间T,这两点由于都在CLK的同一个时钟的上升沿处理,从而消除了理论上的误差,再根据编码器的分辨率即可精确计算出增量式光电编码器的速度。

本发明一种基于增量式光电编码器测量速度的方法包括如下步骤:

S1:对增量式光电编码器的A相、B相信号进行异步信号同步化;

S2:对同步后的A相、B相信号进行滤波,生成滤波后的信号A1、B1,消除可能出现的干扰信号;

S3:设置4bit的状态寄存器ab_state,其中bit[0]表示当前时钟信号上升沿B1信号的状态值,bit[1]表示当前时钟信号上升沿A1信号的状态值,bit[2]表示上一时钟信号上升沿B1信号的状态值,bit[3]表示上一时钟信号上升沿A1信号的状态值;

S4:设置A1信号、B1信号的正交采样个数为N;

S5:计数器开始计数,计时器开始计时:当ab_state等于0010、1011、1101或0100时,表示编码器正在正向运转点,计数器开始计数且同时计数器开始计时,每遇到ab_state等于0010、1011、1101或0100时,计数器递加1,当计数器计数值等于N时,计时器锁存计时时间T,同时计数器和计时器清零;

S6:由正交采样计数值N和计时时间T算出编码器正转的速度。

其中:步骤S5中,当ab_state等于0001、0111、1110或1000时,表示编码器正在反向运转点,计数器开始计数且同时计数器开始计时,每遇到ab_state等于0001、0111、1110或1000时,计数器递加1,当计数器计数值等于N时,计时器锁存计时时间T,步骤S6中由正交采样计数值N和计时时间T算出编码器反转的速度。

其中:所述异步信号同步化是将A相、B相信号同步到FPGA模块所在的时钟域里,消除可能出现的亚稳态。

其中:所述4bit的状态寄存器ab_state在FPGA模块的时钟信号上升沿进行更新。

其中:所述计数器和计时器在FPGA模块的时钟信号上升沿进行更新。

本发明一种基于增量式光电编码器测量速度的方法,计数器和计时器都在同一个时钟信号的上升沿处理,即在时钟CLK的某一上升沿,例如当上升沿为m时,ab_state更新了计数器加1的点,且此时计数器等于了设定的正交采样个数N,由于计时器也是在CLK的上升沿更新,所以在上升沿m,计时器发现计数器已经计数到N,会锁存计时器的值T,则此时计时值T就是计数值到达N所用的时间,且这个T不论编码器在高速、低速或者变速时候都是准确的,消除了理论上的测量误差,故本发明是一种非常精确的增量式光电编码器速度测量方法,解决了DSP和ARM算法误差大的问题,测量速度的准确度更高,同时也解决了FPGA算法在加减速时候测量不准的弊端,并且不需要对AB信号进行解码,从而解决了FPGA算法繁琐和资源浪费的问题。

最后应当说明的是,以上实施例仅用以说明本发明的技术方案,而非对本发明保护范围的限制,尽管参照较佳实施例对本发明作了详细地说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的实质和范围。

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