首页> 中国专利> 编码器实时李莎育圆偏心处理方法

编码器实时李莎育圆偏心处理方法

摘要

本发明涉及一种编码器实时李莎育圆偏心处理方法,其包括如下步骤:编码器上电初始化并与外部的FRAM模块连接,FRAM模块读入以前的{sinθ,cosθ}信号值到FPGA模块中的RAM模块中,计算出初始的圆偏心值。编码器启动并以一个固定频率工作,RAM模块不断地更新有偏心的{sinθ,cosθ}信号值,进行判断及偏心值计算,映射到无偏心的李莎育圆中的角度格点index中进行角度格点计算,比较该index的变化情况。对有偏心的{sinθ,cosθ}信号值进行角度格点计算处理,以最新的数值进行偏心值补偿,之后由cordic模块计算准确的角度。FPGA模块进行电压监测,当电压开始下降,立即把所述RAM模块中的{sinθ,cosθ}信号值写入FRAM模块中。该方法编码器无需事先校准,偏心值实时计算并进行补偿,完全消除偏心带来的误差。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-04-02

    授权

    授权

  • 2017-08-22

    实质审查的生效 IPC(主分类):G01D18/00 申请日:20170419

    实质审查的生效

  • 2017-07-28

    公开

    公开

说明书

技术领域

本发明涉及编码器技术领域,特别是涉及一种编码器实时李莎育圆偏心处理方法。

背景技术

李莎育圆是通过李莎育(Lissajous)曲线中同频的、等幅的余弦信号X(t)=Acos(π2ft+)a和正弦信号Y(t)=Asin(2πft)+b分别放至X轴和Y轴围成的合成圆,其中余弦信号和正弦信号的直流项[a,b]为李莎育圆圆心的X轴和Y轴坐标,正弦或余弦信号的振幅A为李莎育圆的半径。由于李莎育圆由于计算误差的存在,经常会出现李莎育圆偏心的问题,目前解决方案是编码器做校准,测量出一个固定的、平均的偏心值写入到储存芯片(Flash)中,在计算角度时,读出这个值对{sinθ,cosθ}补偿后再计算角度。

为了提高分别率,编码器通常都有物理细分,比如旋转编码器转一圈输出M个李莎育圆,在高速运动中会因轴承的游隙、盘片安装的平行度、控制器的PWM干扰噪声、运动的偏心、环境温度、刻度盘图案的重复精度等因素,运动中每个个体圆不可避免地有略微差别,存在以下问题。偏心值必须通过校准过程测量,这将增加生产时间和成本,对于有轴承的编码器,校准过程允许在厂家完成,对于无轴承的编码器,在用户安装好编码器后方可进行校准,增加用户使用的复杂性。圆偏心的平均值跟每个个园的偏心值略微有偏差,导致位移误差和速度波动无法完全消除。在实际运行过程中,每个个体圆的偏心值还受到转速、温度等工况影响,这种误差是无法通过校准解决的。

发明内容

基于此,有必要针对李莎育圆偏心的问题,提供一种无需事先校准、偏心值是实时动态的、可完全消除圆偏心误差的编码器实时李莎育圆偏心处理方法。

一种编码器实时李莎育圆偏心处理方法,主要包括如下步骤:

第一步骤:编码器上电初始化并与外部的FRAM模块连接,所述FRAM模块读入以前的{sinθ,cosθ}信号值到FPGA模块中的RAM模块中,计算出初始的圆偏心值;

第二步骤:所述编码器启动并以一个固定频率工作,所述RAM模块不断地更新有偏心的{sinθ,cosθ}信号值,进行判断及偏心值计算,映射到无偏心的李莎育圆中的角度格点index中进行角度格点计算,比较该index的变化情况;

第三步骤:对有偏心的{sinθ,cosθ}信号值进行角度格点计算处理,以最新的数值进行偏心值补偿,之后由cordic模块计算准确的角度;

第四步骤:所述FPGA模块进行电压监测,当电压开始下降,立即把所述RAM模块中的{sinθ,cosθ}信号值写入所述FRAM模块中。

上述编码器实时李莎育圆偏心处理方法,由于计算偏心值的时间短于{sinθ,cosθ}信号值的更新时间,保证了偏心值的实时性及准确性,结合每个非常小的角度步进都会对应计算偏心值,能够非常准确的纠正每个位置相关的偏心值,并实时地补偿到位移的计算中。采用编码器的实时数据计算,完全消除了工况等不确定因素导致李莎育圆偏心的影响,是一种自适应的方法,编码器无需事先校准,偏心值可以实时计算并进行补偿,完全消除偏心带来的误差。

在其中一个实施例中,所述第一步骤中,所述编码器在掉电过程中未发生位置变化,则存储在所述FRAM模块内的{sinθ,cosθ}信号值为当前角度上一圈的{sinθ,cosθ}信号值。

在其中一个实施例中,所述FRAM模块读入第一个{sinθ,cosθ}信号值,用初始的圆偏心值算出初始位置对应于RAM模块中index的值。

在其中一个实施例中,所述第二步骤中,当所述编码器处于静止或运动角小于阀值,不出触发偏心值计算;当所述编码器处于非静止或运动角大于阀值,最新的{sinθ,cosθ}信号值更新到FPGA模块的RAM模块中对应的角度格点,计算新的圆偏心值。

在其中一个实施例中,所述圆偏心值的计算时间小于{sinθ,cosθ}信号值的更新时间,保证偏心值的实时性和准确性。

在其中一个实施例中,所述偏心值计算采用平均法求解。

在其中一个实施例中,所述FPGA模块中设置有供电模块,保证所述RAM模块中的{sinθ,cosθ}信号值写入所述FRAM模块中。

附图说明

图1为本发明一较佳实施例编码器实时李莎育圆偏心处理方法的示意图;

图2为本发明中RAM模块的一种存储方案示意图;

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。

需要说明的是,当元件被称为“固定于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

请参照图1和图2,为本发明一较佳实施例编码器实时李莎育圆偏心处理方法,李莎育圆偏心对位移计算误差的数学表达式:

X,Y为实际测量的数据,位于误差为ε

Y=f(θ);X=g(θ)

如果误差是个小量时,位于误差近似等于误差的正切,

具体地,假设X,Y为有偏心的李莎育圆的cosθ和sinθ分量,|a|<<1,|b|<<1

由公式(1),得到位于误差,

李莎育圆偏心造成的位移误差为测量位置的三角函数,该位移误差极值与偏心量的半径成正比,只要[a,b]不为零,这个误差就无法消除,基于微分算符的速度呈现一个跟运动基频相关的速度波动δ。

而且,因为微分算符不可避免地放大位移信息的微小误差,所以计算的速度波动比较大,将引起控制系统的速度环比不断地、错误地调速控制,影响效果。

该编码器实时李莎育圆偏心处理方法包括如下步骤:

第一步骤:编码器上电初始化并与外部的FRAM模块连接,FRAM模块读入以前的{sinθ,cosθ}信号值到FPGA模块中的RAM模块中,计算出初始的圆偏心值。编码器在掉电过程中未发生位置变化,则存储在FRAM模块内的{sinθ,cosθ}信号值为当前角度上一圈的{sinθ,cosθ}信号值。FRAM模块读入第一个{sinθ,cosθ}信号值,用初始的圆偏心值算出初始位置对应于RAM模块中index的值。

第二步骤:编码器启动并以一个固定频率工作,比如1Mhz、2Mhz等等,RAM模块不断地更新有偏心的{sinθ,cosθ}信号值,进行判断及偏心值计算,映射到无偏心的李莎育圆中的角度格点index中进行角度格点计算,比较该index的变化情况。当所述编码器处于静止或运动角小于阀值,不出触发偏心值计算;当所述编码器处于非静止或运动角大于阀值,最新的{sinθ,cosθ}信号值更新到FPGA模块的RAM模块中对应的角度格点,计算新的圆偏心值。圆偏心值的计算时间小于{sinθ,cosθ}信号值的更新时间,保证偏心值的实时性和准确性,偏心值计算采用平均法求解。

第三步骤:对有偏心的{sinθ,cosθ}信号值进行角度格点计算处理,以最新的数值进行偏心值补偿,之后由cordic模块计算准确的角度;

第四步骤:FPGA模块进行电压监测,当电压开始下降,立即把RAM模块中的{sinθ,cosθ}信号值写入FRAM模块中;FPGA模块中设置有供电模块,保证RAM模块中的{sinθ,cosθ}信号值写入FRAM模块中。

上述编码器实时李莎育圆偏心处理方法,由于计算偏心值的时间短于{sinθ,cosθ}信号值的更新时间,保证了偏心值的实时性及准确性,结合每个非常小的角度步进都会对应计算偏心值,能够非常准确的纠正每个位置相关的偏心值,并实时地补偿到位移的计算中。采用编码器的实时数据计算,完全消除了工况等不确定因素导致李莎育圆偏心的影响,是一种自适应的方法,编码器无需事先校准,偏心值可以实时计算并进行补偿,完全消除偏心带来的误差。

该编码器实时李莎育圆偏心处理方法在实际使用时,以一个物理细分数为P的编码器为例,一个电周期的角度为EP=360/P,比如P=32,EP=11.25度。FPGA分配2N个RAM模块分别存储N个sinθ和N个cosθ历史数据,2N个sinθ/cosθ数据均匀地填满一个电周期的角度。比如N=32,一个电周期圆被均匀等分成N等分,每一等分对应的角度区间为EP/N=0.352度,等分区间的index取值为[0…N-1],如图2所示。编码器上电,{sinθ,cosθ}信号值从外部的FRAM模块读入,根据index=I,初始化完成。如果编码器处于静止或运动角小于阀值,那么{sinθ,cosθ}信号值求出的index值没有变化,不用更新RAM模块。若编码器运动使得index开始变化,比如递增1,那么原来存储在I+1的{sinθ,cosθ}信号值被新的{sinθ,cosθ}信号值替代,并计算由此变化产生的偏心值[a,,b,]作为当前最新的偏心值,如此周而复始进行。

实际中,结合最大转速、FPGA模块的时钟、物理细分P等,N的值可以4…2048,以P=32,N=256为例,算出每次角度更新的阀值为0.044度,已经满足计算精度的要求。为了保证编码器下一次上电时历史{sinθ,cosθ}信号值能够恢复,FPGA模块需要在编码器掉电时,把当时静止的{sinθ,cosθ}信号值存储到FRAM模块中。

{sinθ,cosθ}信号值中对应的index查找,一般使用cordic算出角度然后找到index,但是考虑资源的利用率优化问题,一般是查表结合二分法查找。

例如,编码器的物理细分P=32,FPGA模块内部RAM模块配置N=128个寄存器存储sinθ值,另外N=128个寄存器存储cosθ值。

首先,做一个[0…45]度范围N/8=16等分的索引-正切表

其次,读入{sinθ,cosθ}信号值并补偿当前的偏心值,得到{sinθ-b,cosθ-a}信号值,比较sinθ-b和cosθ-a绝对值的大小,取大数为分母做除法运算。

1、假设|sinθ-b|≥|cosθ-a|,根据的值在表中找到index=I,查找的方法采用二分法,最多查找次数为log2(16)=4;

2、假设|sinθ-b|≤|cosθ-a|,根据的值在表中找到index=I,正确的index需要调整为index=N/8+I;

3、根据sinθ-b和cosθ-a的正负号再对index进行修正,针对不同的象限加减N,N/4,N/2,3N/4,最终的index为下面的情况之一:I,N-I,N/4±I,N/2±I,3N/4±I;

接着,比较当前的index和旧的index是否变化,决定是否更新{sinθ,cosθ}信号值,当index无变化,不做任何操作,当index有变化,加1或者减1,更新{sinθ,cosθ}信号值到RAM模块中对应的格点,并计算新的偏心值。

最后,用最新的偏心值补偿{sinθ,cosθ}信号值,计算位移。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号