信号误差校正方法、磁性编码器及光学编码器转让专利

申请号 : CN202210828610.5

文献号 : CN114910112B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王超钱振煌唐文江郑荣昌

申请人 : 泉州昆泰芯微电子科技有限公司

摘要 :

本申请属于对磁场信号或光学信号进行检测处理的技术领域,提供了一种信号误差校正方法、磁性编码器及光学编码器,用于检测转动件相对于传感器转动的角度θ,该误差校正方法以过零点取峰值的方法获取第一分量信号和第二分量信号的关键值,利用获得的关键值计算第一分量信号和第二分量信号的零点误差,并利用零点误差来获得两个分量信号的第一校正值,然后以过零点取峰值的方法获取第一校正值的关键值,继而根据第一校正值及其关键值来计算两个分量信号的第二校正值,将经过校正的数据输入至角度提取模块以获得角度θ。由此,提高了磁性编码器或光学编码器在各种环境下的检测精度及其可靠性,提高计算速度,降低计算成本。

权利要求 :

1.一种信号误差校正方法,应用于检测转动件相对于传感器转动的角度θ,其特征在于,包括:获取传感器输出的第一分量信号ydet和第二分量信号xdet,其中,第一分量信号ydet与第二分量信号xdet呈周期性变化,且二者彼此正交;

检测第一分量信号ydet在周期性变化中的连续两个过零点,来获取第二分量信号xdet对应的关键值xdet,p和xdet,n,并且将第二分量信号的零点误差Ox计算为:Ox=(xdet,p+xdet,n)/2;

检测第二分量信号xdet在周期性变化中的连续两个过零点,来获取第一分量信号ydet对应的关键值ydet,p和ydet,n,并且将第一分量信号的零点误差Oy计算为:Oy=(ydet,p+ydet,n)/2;

根据Ox对第二分量信号进行如下校正:

xcor=xdet‑Ox;xcor为第二分量信号的第一校正值;

根据Oy对第一分量信号进行如下校正:

ycor=ydet‑Oy;ycor为第一分量信号的第一校正值;

检测第一分量信号的ycor在周期性变化中的连续两个过零点,来获取第二分量信号的xcor对应的关键值xcor,p和xcor,n;

检测第二分量信号的xcor在周期性变化中的连续两个过零点,来获取第一分量信号的ycor对应的关键值ycor,p和ycor,n;

令Kx=xcor,p‑xcor,n,Ky=ycor,p‑ycor,n;

y’cor=ycor*Kx,或者y’cor=ycor/Ky;y’cor为第一分量信号的第二校正值;

x’cor=xcor*Ky,或者x’cor=xcor/Kx;x’cor为第二分量信号的第二校正值,Kx和Ky均为中间变量;

将第一分量信号的y’cor和第二分量信号的x’cor输入至角度提取模块以获得角度θ;

其中,第一分量信号ydet在周期性变化中的连续两个采样点分别为ydet01、ydet02,如果ydet01和ydet02的正负号不相同或者其中任一个为0,则获取分别与ydet01、ydet02对应的xdet1、xdet2,如果(xdet1+xdet2)≥0,则令xdet,p=(xdet1+xdet2)/2,如果(xdet1+xdet2)<0,则令xdet,n=(xdet1+xdet2)/2;或者,第二分量信号xdet在周期性变化中的连续两个采样点分别为xdet01、xdet02,如果xdet01和xdet02的正负号不相同或者其中任一个为0,则获取分别与xdet01、xdet02对应的ydet1、ydet2,如果(ydet1+ydet2)≥0,则令ydet,p=(ydet1+ydet2)/2,如果(ydet1+ydet2)<0,则令ydet,n=(ydet1+ydet2)/

2;或者,

第一分量信号的ycor在周期性变化中的连续两个采样点分别为ycor01、ycor02,如果ycor01和ycor02的正负号不相同或者其中任一个为0,则获取分别与ycor01、ycor02对应的xcor1、xcor2,如果(xcor1+xcor2)≥0,则令xcor,p=(xcor1+xcor2)/2,如果(xcor1+xcor2)<0,则令xcor,n=(xcor1+xcor2)/

2;或者,

第二分量信号的xcor在周期性变化中的连续两个采样点分别为xcor01、xcor02,如果xcor01和xcor02的正负号不相同或者其中任一个为0,则获取分别与xcor01、xcor02对应的ycor1、ycor2,如果(ycor1+ycor2)≥0,则令ycor,p=(ycor1+ycor2)/2,如果(ycor1+ycor2)<0,则令ycor,n=(ycor1+ycor2)/2;

并且,获取第二分量信号xdet的关键值xdet,p(i)和xdet,n(i),将第二分量信号的零点误差计算为:Ox(i)=(xdet,p(i)+xdet,n(i))/2;

对第二分量信号进行校正而得到xcor(i):

xcor(i)=xdet(i)‑Ox(i‑1);

其中,i为大于或等于2的整数;

并且,获取第一分量信号ydet的关键值ydet,p(i)和ydet,n(i),将第一分量信号的零点误差计算为:Oy(i)=(ydet,p(i)+ydet,n(i))/2;

对第一分量信号ydet进行校正而得到ycor(i):

ycor(i)=ydet(i)‑Oy(i‑1)。

2.根据权利要求1所述的信号误差校正方法,其特征在于:

将角度θ计算为:

3.根据权利要求1所述的信号误差校正方法,其特征在于:

所述角度提取模块包含CORDIC算法。

4.根据权利要求1所述的信号误差校正方法,其特征在于:

所述信号误差校正方法通过硬件描述语言或微处理器实现数据的运算。

5.根据权利要求1所述的信号误差校正方法,其特征在于:

从第一分量信号ydet获取的连续两个采样点分别为ydet01(i)、ydet02(i),且ydet01(i)和ydet02(i)的正负号不相同或者其中任一个为0,第二分量信号xdet的xdet1(i)、xdet2(i)分别与ydet01(i)、ydet02(i)对应;

令xdtmp(i)=(xdet1(i)+xdet2(i))/2,xdtmp(i)为中间变量;

m1

如果xdtmp(i)≥0,则令xdet,p(i)=xdet,p(i‑1)+(xdtmp(i)‑xdet,p(i‑1))/2 ,m1如果xdtmp(i)<0,则令xdet,n(i)=xdet,n(i‑1)+(xdtmp(i)‑xdet,n(i‑1))/2 ,其中,xdet,p(i‑1)为在xdet,p(i)之前获取的关键值,xdet,n(i‑1)为在xdet,n(i)之前获取的关键值,m1为预设的影响因子,且m1为正整数。

6.根据权利要求1所述的信号误差校正方法,其特征在于:

从第二分量信号xdet获取的连续两个采样点分别为xdet01(i)、xdet02(i),且xdet01(i)和xdet02(i)的正负号不相同或者其中任一个为0,第一分量信号ydet的ydet1(i)、ydet2(i)分别与xdet01(i)、xdet02(i)对应;

令ydtmp(i)=(ydet1(i)+ydet2(i))/2,ydtmp(i)为中间变量;

m2

如果ydtmp(i)≥0,则令ydet,p(i)=ydet,p(i‑1)+(ydtmp(i)‑ydet,p(i‑1))/2 ,m2如果ydtmp(i)<0,则令ydet,n(i)=ydet,n(i‑1)+(ydtmp(i)‑ydet,n(i‑1))/2 ,其中,ydet,p(i‑1)为在ydet,p(i)之前获取的关键值,ydet,n(i‑1)为在ydet,n(i)之前获取的关键值,m2为预设的影响因子,且m2为正整数。

7.根据权利要求1所述的信号误差校正方法,其特征在于:

获取第二分量信号的xcor的关键值xcor,p(i)和xcor,n(i),并且计算:Kx(i)=xcor,p(i)‑xcor,n(i);

对第一分量信号的ycor进行校正而得到y’cor(i):令y’cor(i)=ycor(i)*Kx(i),或者y’cor(i)=ycor(i)*Kx(i‑1)。

8.根据权利要求7所述的信号误差校正方法,其特征在于:

从第一分量信号的ycor获取的连续两个采样点分别为ycor01(i)、ycor02(i),且ycor01(i)和ycor02(i)的正负号不相同或者其中任一个为0,第二分量信号的xcor的xcor1(i)、xcor2(i)分别与ycor01(i)、ycor02(i)对应;

令xctmp(i)=(xcor1(i)+xcor2(i))/2,xctmp(i)为中间变量;

m3

如果xctmp(i)≥0,则令xcor,p(i)=xcor,p(i‑1)+(xctmp(i)‑xcor,p(i‑1))/2 ,m3如果xctmp(i)<0,则令xcor,n(i)=xcor,n(i‑1)+(xctmp(i)‑xcor,n(i‑1))/2 ,其中,xcor,p(i‑1)为在xcor,p(i)之前获取的关键值,xcor,n(i‑1)为在xcor,n(i)之前获取的关键值,m3为预设的影响因子,且m3为正整数。

9.根据权利要求7所述的信号误差校正方法,其特征在于:

获取第一分量信号的ycor的关键值ycor,p(i)和ycor,n(i),并且计算:Ky(i)=ycor,p(i)‑ycor,n(i);

对第二分量信号的xcor进行校正而得到x’cor(i):令x’cor(i)=xcor(i)*Ky(i),或者x’cor(i)=xcor(i)*Ky(i‑1)。

10.根据权利要求9所述的信号误差校正方法,其特征在于:从第二分量信号的xcor获取的连续两个采样点分别为xcor01(i)、xcor02(i),且xcor01(i)和xcor02(i)的正负号不相同或者其中任一个为0,第一分量信号的ycor的ycor1(i)、ycor2(i)分别与xcor01(i)、xcor02(i)对应;

令yctmp(i)=(ycor1(i)+ycor2(i))/2,yctmp(i)为中间变量;

m4

如果yctmp(i)≥0,则令ycor,p(i)=ycor,p(i‑1)+(yctmp(i)‑ycor,p(i‑1))/2 ,m4如果yctmp(i)<0,则令ycor,n(i)=ycor,n(i‑1)+(yctmp(i)‑ycor,n(i‑1))/2 ,其中,ycor,p(i‑1)为在ycor,p(i)之前获取的关键值,ycor,n(i‑1)为在ycor,n(i)之前获取的关键值,m4为预设的影响因子,且m4为正整数。

11.根据权利要求9所述的信号误差校正方法,其特征在于:令y’cor(i)=ycor(i)/Ky(i),或者y’cor(i)=ycor(i)/Ky(i‑1);

令x’cor(i)=xcor(i)/Kx(i),或者x’cor(i)=xcor(i)/Kx(i‑1)。

12.根据权利要求1至4任一项所述的信号误差校正方法,其特征在于:第一分量信号和第二分量信号分别是正弦信号和余弦信号。

13.一种磁性编码器,其特征在于:

所述磁性编码器包括磁传感器和信号处理电路,信号处理电路根据权利要求1至12任一项所述的信号误差校正方法计算可产生磁场的转动件相对于磁传感器转动的角度。

14.一种光学编码器,其特征在于:

所述光学编码器包括光学传感器和信号处理电路,信号处理电路根据权利要求1至12任一项所述的信号误差校正方法计算转动件相对于光学传感器转动的角度。

说明书 :

信号误差校正方法、磁性编码器及光学编码器

技术领域

[0001] 本申请大体上涉及对磁场信号或光学信号进行检测处理,具体涉及一种信号误差校正方法、磁性编码器及光学编码器。

背景技术

[0002] 本部分旨在向读者介绍本领域的各个方面,这些方面可能与以下描述的和/或请求保护的本原理的各个方面有关。该论述有助于向读者提供背景信息,以便于更好地理解
本原理的各个方面。因此,应以该角度来阅读这些陈述,而不是作为对现有技术的承认。
[0003] 在实际应用中,由于各种原因,例如,环境温度、电磁干扰、热噪声等因素的影响,可能会对磁性编码器或光学编码器的检测精度产生不利影响。为此,有必要减轻甚至消除诸如环境温度、电磁干扰、热噪声等因素对磁性编码器或光学编码器的检测精度的影响。
[0004] 以磁性编码器为例,专利文献CN114216486A公开了一种磁性编码器及其检测方法,用于解决外界因素对磁性编码器的检测精度的影响。该检测方法在计算幅值偏差(Gx或
Gy)时涉及 , 虽然可以根据 和 计算得到,但是,对于 和
的取值往往很难获得比较理想的数值,在一些随机因素的影响下,对幅值偏差和角度θ的计
算结果偶尔会产生较大的误差。此外,专利文献CN114216486A在做幅值校正之前还存在零
点误差,其用于计算G(y 或Gx)的ydet,p和ydet,(n 或xdet,p和xdet,n)可能偏离实际的正负峰值较远,也会导致对幅值偏差和角度θ的计算结果偶尔产生较大的误差。
[0005] 因此,有必要在CN114216486A公开的技术方案的基础上就信号误差的校正方法做进一步改善。

发明内容

[0006] 为了提高转动件相对于传感器转动的角度的计算可靠性,本申请提出了一种信号误差校正方法、磁性编码器及光学编码器。
[0007] 根据本申请的一方面,提出了一种信号误差校正方法,其包括:
[0008] 获取传感器输出的第一分量信号ydet和第二分量信号xdet,其中,第一分量信号ydet与第二分量信号xdet呈周期性变化,且二者彼此正交;
[0009] 检测第一分量信号ydet在周期性变化中的连续两个过零点,来获取第二分量信号xdet对应的关键值xdet,p和xdet,n,并且将第二分量信号的零点误差Ox计算为:
[0010] Ox=(xdet,p+xdet,n)/2;
[0011] 检测第二分量信号xdet在周期性变化中的连续两个过零点,来获取第一分量信号ydet对应的关键值ydet,p和ydet,n,并且将第一分量信号的零点误差Oy计算为:
[0012] Oy=(ydet,p+ydet,n)/2;
[0013] 根据Ox对第二分量信号进行如下校正:
[0014] xcor=xdet‑Ox;xcor为第二分量信号的第一校正值;
[0015] 根据Oy对第一分量信号进行如下校正:
[0016] ycor=ydet‑Oy;ycor为第一分量信号的第一校正值;
[0017] 检测第一分量信号的ycor在周期性变化中的连续两个过零点,来获取第二分量信号的xcor对应的关键值xcor,p和xcor,n;
[0018] 检测第二分量信号的xcor在周期性变化中的连续两个过零点,来获取第一分量信号的ycor对应的关键值ycor,p和ycor,n;
[0019] 令Kx=xcor,p‑ xcor,n, Ky=ycor,p‑ ycor,n;
[0020] y’cor=ycor*Kx,或者y’cor=ycor/Ky;y’cor为第一分量信号的第二校正值;
[0021] x’cor=xcor*Ky,或者x’cor=xcor/Kx;x’cor为第二分量信号的第二校正值,Kx和Ky均为中间变量;
[0022] 将第一分量信号的y’cor和第二分量信号的x’cor输入至角度提取模块以获得角度θ。
[0023] 根据本申请的另一方面,还提出了一种磁性编码器,其包括磁传感器和信号处理电路,信号处理电路根据所述信号误差校正方法计算可产生磁场的转动件相对于磁传感器
转动的角度。
[0024] 根据本申请的另一方面,还提出了一种光学编码器,其包括光学传感器和信号处理电路,信号处理电路根据所述信号误差校正方法计算转动件相对于光学传感器转动的角
度。
[0025] 本申请提出了一种信号误差校正方法、磁性编码器及光学编码器,不仅能够提高磁性编码器或光学编码器在各种环境下的检测精度,而且相对于已知的用于提高检测精度
的方法(例如CN114216486A公开的技术方案),能够进一步提高检测精度及其可靠性,提高
计算速度,降低计算成本。

附图说明

[0026] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些
实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些
附图获得其他的附图。
[0027] 图1为本申请实施例提供的信号误差校正方法的流程示意图。
[0028] 图2为本申请实施例提供的信号误差校正方法的进一步的流程示意图。
[0029] 图3为本申请实施例欲体现先零位校正后取峰值的效果的曲线对比示意图。
[0030] 图4为本申请实施例提供的过零点取峰值的曲线示意图。
[0031] 图5为本申请实施例提供的“同期参数迭代校正方法” 示意图。
[0032] 图6为本申请实施例提供的“前期参数迭代校正方法” 示意图。

具体实施方式

[0033] 现在参考附图来描述主题,其中,全文中相似的参考标号用于指代相似的元件。在下面的描述中,出于解释的目的,阐述了许多具体细节以便提供对主题的透彻理解。然而,
显然,在没有这些具体细节的情况下也可以实施本原理。
[0034] 本说明书示出了本申请的原理。因此,可以理解的是,尽管本文未明确描述或示出,但是本领域技术人员能够设计出体现本申请原理的各种配置。
[0035] 本原理自然不限于在此描述的实施例。
[0036] 应注意,说明书中对“一个实施例”、“实施例”、“示例实施例”、“特定实施例”的引用表示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例不一定都包括该特定的特征、结构或特性。此外,这样的短语不一定指相同的实施例。进一步地,当结合实施例来描述该特定的特征、结构或特性时,可以认为结合其他实施例(无论是否明确描述)
来实施这种特征、结构或特性是在本领域技术人员的知识范围内的。应当理解,尽管在本申
请可能采用术语第一、第二、第三等来描述各种信息、组件或者特征,但这些信息、组件或者特征不应限于这些术语。这些术语仅用来将同一类型的信息、组件或者特征彼此区分开。例
如,在不脱离本申请范围的情况下,第一也可以被称为第二,反之亦然。
[0037] 本申请提出了一种磁性编码器,其包括磁传感器和信号处理电路,所述磁传感器检测由所述磁传感器与磁介质之间的相对运动而在所述磁传感器处产生的变化磁场,并输
出表征磁场的第一分量信号和第二分量信号,所述信号处理电路根据信号误差校正方法计
算磁介质相对于所述磁传感器转动的角度θ。在一些示例中,第一分量信号和第二分量信号
分别是正弦信号和余弦信号,或者第一分量信号和第二分量信号分别是余弦信号和正弦信
号。作为示例,本申请的磁性编码器的结构和基本原理亦可参考专利文献CN114216486A公
开的磁性编码器。
[0038] 磁介质可以是可产生磁场的任何磁性材料,例如磁铁。磁介质可以作为转动件的一个示例。
[0039] 磁性编码器通过磁传感器检测变化的磁信号,并且将检测的磁信号提供给信号处理电路。磁传感器可以是磁阻效应传感器、霍尔效应传感器等能够检测变化的磁信号的磁
性编码器。磁传感器可以呈现为封装好的芯片,也可以呈现为芯片内部的结构。在一些示例
中,磁传感器和信号处理电路可以一起集成于同一个芯片,而该芯片可称为磁性编码器,简
称磁编。在另一些示例中,磁性编码器可以呈现为PCBA,而磁传感器和信号处理电路为该
PCBA上的电路器件。
[0040] 本申请提供的磁传感器可参考专利文献CN114459511A的图4所公开的电路结构,其通过两个惠斯通电桥分别输出第一分量信号和第二分量信号。
[0041] 也可参考专利文献CN114216486A的图1、图2和图3及其对应的说明书内容来理解本申请提供的磁传感器和磁性编码器。
[0042] 本申请提出了一种光学编码器,其包括光学传感器和信号处理电路,信号处理电路根据信号误差校正方法计算转动件相对于光学传感器转动的角度。所述光学编码器的结
构和布置方式可参考本申请提供的磁性编码器的方案,也可参考现有的通常与伺服电机配
套使用的光编码器的方案。
[0043] 至于本申请提出的信号误差校正方法,以下主要通过与专利文献CN114216486A的对比来作出说明。
[0044] 值得注意的是,所述信号误差校正方法不仅适用于磁性编码器和光学编码器,还可以适用于其他任何可检测转动件的转动角度的编码器,例如基于电容、电感或电阻变化
的角度传感器。
[0045] 专利文献CN114216486A公开了可通过以下公式来计算零点误差Ox和Oy、幅值偏差Gx和Gy、角度θ:
[0046]  ;
[0047]   ;
[0048] ;
[0049]  ;
[0050]  ;
[0051]  ;
[0052] ;
[0053]  ;各个参数的含义可参照专利文献CN114216486A记载的内容。
[0054] 根据专利文献CN114216486A公开的技术方案,为了获得角度θ,需要计算出Ox、Oy、Gx和Gy。然而,计算Gx和Gy时,需要根据 和 计算得到 ,但是,对于理想值和 的取值往往很难获得比较理想的数值,在一些随机因素的影响下,对幅值
偏差和角度θ的计算结果偶尔会产生较大的误差。此外,计算过程涉及到较多的乘法和除
法,采用数字电路实施乘法和除法需要耗费较多的计算资源,运算速度较低。专利文献
CN114216486A的说明书第【0028】段和【0047】段也提到了运算速度的问题。
[0055] 为了进一步提高对角度θ的检测精度及其可靠性,提高运算速度,本申请做了技术改进,提出了一种新的信号误差校正方法。
[0056] 为了获得优异的运算速度,本申请的一个实施例应用了硬件描述语言,所述信号误差校正方法可以通过硬件描述语言实现数据的运算。可以理解的是,所述信号误差校正
方法也可以通过其他方式来实现数据的运算。本申请应用的硬件描述语言可以是VHDL
(Very‑High‑Speed Integrated Circuit Hardware Description Language),也可以是
Verilog HDL。与微处理器MCU相比,硬件描述语言具有运算速度快的显著优点。就数学计算
而言,硬件描述语言实现加法和减法的计算速度是非常快的,但实现复杂的乘法或除法的
计算速度较慢,其中除法的计算速度又慢于乘法,所以本申请尽量避免复杂的除法计算。此
外值得注意的是,硬件描述语言在计算时,2的指数次幂的乘除法使用移位运算来实现,所
以2的指数次幂的乘除法的计算速度也是比较快的。
[0057] 参见本申请的图1和图2,本申请提出的信号误差校正方法包括以下步骤:
[0058] 获取表征磁场的第一分量信号ydet和第二分量信号xdet,其中,第一分量信号ydet与第二分量信号xdet呈周期性变化,且二者彼此正交;
[0059] 检测第一分量信号ydet在周期性变化中的连续两个过零点,来获取第二分量信号xdet对应的关键值xdet,p和xdet,n,并且将第二分量信号的零点误差Ox计算为:
[0060] Ox=(xdet,p+xdet,n)/2;
[0061] 检测第二分量信号xdet在周期性变化中的连续两个过零点,来获取第一分量信号ydet对应的关键值ydet,p和ydet,n,并且将第一分量信号的零点误差Oy计算为:
[0062] Oy=(ydet,p+ydet,n)/2;
[0063] 根据Ox对第二分量信号进行如下校正:
[0064] xcor=xdet‑Ox;xcor为第二分量信号的第一校正值;
[0065] 根据Oy对第一分量信号进行如下校正:
[0066] ycor=ydet‑Oy;ycor为第一分量信号的第一校正值;
[0067] 检测第一分量信号的ycor在周期性变化中的连续两个过零点,来获取第二分量信号的xcor对应的关键值xcor,p和xcor,n;
[0068] 检测第二分量信号的xcor在周期性变化中的连续两个过零点,来获取第一分量信号的ycor对应的关键值ycor,p和ycor,n;
[0069] 令Kx=xcor,p‑ xcor,n,
[0070] y’cor=ycor*Kx;y’cor为第一分量信号的第二校正值;
[0071] 令Ky=ycor,p‑ ycor,n,
[0072] x’cor=xcor*Ky;x’cor为第二分量信号的第二校正值,Kx和Ky均为中间变量;
[0073] 将第一分量信号的y’cor和第二分量信号的x’cor输入至角度提取模块以获得角度θ。
[0074] 与专利文献CN114216486A相比,本申请先分别对第一分量信号和第二分量信号进行零位校正,然后再获取零位校正之后的第一分量信号的ycor的ycor,p和ycor,n,以及第二分量信号的xcor的xcor,p和xcor,n,继而根据ycor,p和ycor,n计算Ky,根据xcor,p和xcor,n计算Kx,然后再根据xcor和Ky计算x’cor,根据ycor和Kx计算y’cor,y’cor可以视为第一分量信号已经做了零位校正和幅值校正之后的值,x’cor可以视为第二分量信号已经做了零位校正和幅值校正之后的
值,最后将第一分量信号的y’cor和第二分量信号的x’cor输入至角度提取模块以获得角度θ。
[0075] 请参见图3以便更好地理解本申请的方案及其优点。曲线y为第一分量信号未经零位校正的示意性曲线,曲线y’为第一分量信号经过零位校正之后的示意性曲线,曲线x为第
二分量信号的示意性曲线。我们要获取第二分量信号的xcor,p。假设第一分量信号未经零位
校正(如曲线y),则先获得A点,然后获得与A点对应的B点,系统将B点的值视为xcor,p,然而可见B点的值离第二分量信号的实际极大值较远,用以计算的幅值偏差的准确度较差。假设第
一分量信号经过零位校正(如曲线y’),则先获得C点,然后获得与C点对应的D点,系统将D点的值视为xcor,p,可见D点的值离第二分量信号的实际极大值较近,用以计算的幅值偏差的准确度较高。同样的道理,根据零位校正之后的第一分量信号而获取的xcor,n的准确度较高,根据零位校正之后的第二分量信号而获取的ycor,p和ycor,n的准确度较高。
[0076] 对于中间变量Kx和Ky,在实际的运行程序中,并不一定要设定该中间变量,而是可以将xcor,p与xcor,n的差值直接代入y’cor的计算中,或者将ycor,p与ycor,n的差值直接代入x’cor的计算中,即Kx和Ky可以是虚拟的。
[0077] 根据本申请的方案,为了获得角度θ,并不需要计算合成的理想的磁场信号的幅值Aideal,甚至不用计算幅值偏差(Gx或Gy),由此能够大大提高对角度θ的检测精度及其可靠性,提高运算速度。
[0078] 在一些示例中,也可以令y’cor=ycor/Ky,x’cor=xcor/Kx,即可以通过除法计算各分量信号的第二校正值。对于硬件描述语言而言,除法的运算效率稍低于乘法的运算,可以考虑将涉及到的复杂除法运算输入至微处理器MCU进行计算处理。
[0079] 将第一分量信号的y’cor和第二分量信号的x’cor输入至角度提取模块以获得角度θ。在一些示例中,角度提取模块可以包含CORDIC算法,通过反正切的处理获得角度θ,
CORDIC算法是现有的技术,在本申请不再赘述。在另一些示例中,角度提取模块可以参考专
利文献CN114370814A公开的角度提取电路,通过该角度提取电路获得角度θ。
[0080] 因为
[0081]  ,
[0082] 所以,在一些示例中,还可以将角度θ计算为:
[0083]  。
[0084] 这种算法涉及乘法和除法,对于数字电路可能需要耗费较大的计算成本,在一些情况下,可以将涉及到的参数输入至微处理器MCU进行计算。
[0085] 检测第一分量信号ydet在周期性变化中的连续两个过零点,来获取第二分量信号xdet对应的关键值xdet,p和xdet,n,为了便于描述,本申请将这种方法称为“过零点取峰值”。具体地,通过检测第一分量信号ydet的一个过零点来获取第二分量信号xdet的关键值xdet,p,通过检测第一分量信号ydet的另一个过零点来获取第二分量信号xdet的关键值xdet,n。同理,可以通过“过零点取峰值”来获取关键值ydet,p、ydet,n、xcor,p、xcor,n、ycor,p、ycor,n。此外值得注意的是,在本申请中,“过零点取峰值”中的“峰值”因为零点误差的存在,其并不一定是各分量信号在某周期的最大值/最小值;将xdet,p、xdet,n、ydet,p、ydet,n、xcor,p、xcor,n、ycor,p、ycor,n称为关键值也只是为了便于描述,其不一定代表各个分量信号的最大值/最小值,在一些情况
下,也可以将这些参数称为名义最大值/名义最小值。
[0086] 对于如何获取信号的最大值/最小值,作为参考的现有技术,常规的技术手段是在一定时间内采集传感器数据,在数据中寻找最大值/最小值,并且为了减小噪声对最大值/
最小值采样的影响,有可能会进一步对采样的最大值/最小值进行滤波等操作,诸如,求取
均值等操作。然而,对于这种常规的技术手段,即便采用了多次平均, 也可能会偏离真实值
的数学期望,因为从噪声中采集到的最大值/最小值是一种有偏采样,无法得到正确的最大
值/最小值。而且,这种本质上直接检测最大值/最小值的方法,需要采集磁传感器在一定时
间(例如,至少一个完整的周期)内的输出数据(实时监测所有数据),这使得在电路设计/软件算法上引入了较大的复杂性,尤其是磁介质根据运行工况有可能会发生正转或者反转,
正确判断是否采集到至少一个完整周期内的所有数据是比较困难的。
[0087] 与现有技术相比,本申请采用“过零点取峰值”具有较好的有益效果。在本申请中,利用磁传感器两轴输出信号的正交性,通过检测磁传感器两轴中的其中一轴输出信号的连续两个过零点,相比于直接判断信号的最大值/最小值,判断信号是否过零相对简单和可
靠。
[0088] 本申请还进一步提供了“过零点取峰值”的优选的实施方式:
[0089] 第一分量信号ydet在周期性变化中的连续两个采样点分别为ydet01、ydet02,如果ydet01和ydet02的正负号不相同或者其中任一个为0,则获取分别与ydet01、ydet02对应的xdet1、xdet2,如果(xdet1+xdet2)≥0,则令xdet,p=(xdet1+xdet2)/2,如果(xdet1+xdet2)<0,则令xdet,n=(xdet1+xdet2)/2;或者,
[0090] 第二分量信号xdet在周期性变化中的连续两个采样点分别为xdet01、xdet02,如果xdet01和xdet02的正负号不相同或者其中任一个为0,则获取分别与xdet01、xdet02对应的ydet1、ydet2,如果(ydet1+ydet2)≥0,则令ydet,p=(ydet1+ydet2)/2,如果(ydet1+ydet2)<0,则令ydet,n=(ydet1+ydet2)/2;或者,
[0091] 第一分量信号的ycor在周期性变化中的连续两个采样点分别为ycor01、ycor02,如果ycor01和ycor02的正负号不相同或者其中任一个为0,则获取分别与ycor01、ycor02对应的xcor1、xcor2,如果(xcor1+xcor2)≥0,则令xcor,p=(xcor1+xcor2)/2,如果(xcor1+xcor2)<0,则令xcor,n=(xcor1+xcor2)/2;或者,
[0092] 第二分量信号的xcor在周期性变化中的连续两个采样点分别为xcor01、xcor02,如果xcor01和xcor02的正负号不相同或者其中任一个为0,则获取分别与xcor01、xcor02对应的ycor1、ycor2,如果(ycor1+ycor2)≥0,则令ycor,p=(ycor1+ycor2)/2,如果(ycor1+ycor2)<0,则令ycor,n=(ycor1+ycor2)/2。
[0093] 请参见图4,以获取xdet,p为例说明如何实现“过零点取峰值”。对第一分量信号ydet连续采样而得到ydet01、ydet02,如果ydet01和ydet02的正负号不相同或者其中任一个为0,则说明ydet01、ydet02跨越了零点(或落在了零点);获取分别与ydet01、ydet02对应的xdet1、xdet2,如果(xdet1+xdet2)≥0,则说明(xdet1+xdet2)在零点的上方而可作为正峰值,则可求平均而得到xdet,p=(xdet1+xdet2)/2。对于数字电路,实现数据的正负值判断是比较快速的,例如可以通过数值的符号位直接判断其正负。此外,还可以通过两者的相乘是否小于0来判断两者是否互异。同样的道理,可以获取xdet,n、ydet,p、ydet,n、xcor,p、xcor,n、ycor,p、ycor,n。
[0094] 如前文所述,根据xdet,p、xdet,n可以获得Ox,根据ydet,p、ydet,n可以获得Oy,根据xcor,p、xcor,n可以获得Kx,根据ycor,p、ycor,n可以获得Ky。至于如何利用Ox、Oy分别对两个分量信号做零位校正,如何利用Kx、Ky,分别对两个分量信号做幅值校正,本申请提供了两种优秀的校正方法,为了便于描述,分别称为“同期参数迭代校正方法”和“前期参数迭代校正方法”。
[0095] 图5给出了利用“同期参数迭代校正方法”做零位校正和幅值校正的示例。
[0096] 图6给出了利用“前期参数迭代校正方法”做零位校正和幅值校正的示例。
[0097] 以下为利用“同期参数迭代校正方法”对第二分量信号做零位校正的示例:
[0098] 获取第二分量信号xdet的关键值xdet,p(i)和xdet,n(i),并且将第二分量信号的零点误差计算为:
[0099] Ox(i)=( xdet,p(i)+ xdet,n(i))/2;
[0100] 对第二分量信号进行校正而得到xcor(i):
[0101] 令xcor(i)= xdet(i)‑Ox(i);
[0102] 其中,i为大于或等于2的整数。
[0103] 如果利用“前期参数迭代校正方法”,则令xcor(i)= xdet(i)‑Ox(i‑1)。
[0104] 以下为利用“同期参数迭代校正方法”对第一分量信号做零位校正的示例:
[0105] 获取第一分量信号ydet的关键值ydet,p(i)和ydet,n(i),并且将第一分量信号的零点误差计算为:
[0106] Oy(i)=( ydet,p(i)+ ydet,n(i))/2;
[0107] 对第一分量信号ydet进行校正而得到ycor(i):
[0108] 令ycor(i)= ydet(i)‑Oy(i)。
[0109] 如果利用“前期参数迭代校正方法”,则令ycor(i)= ydet(i)‑Oy(i‑1)。
[0110] 以下为利用“同期参数迭代校正方法”对第二分量信号做幅值校正的示例:
[0111] 获取第二分量信号的xcor的关键值xcor,p(i)和xcor,n(i),并且计算:
[0112] Kx(i)= xcor,p(i)‑ xcor,n(i);
[0113] 对第一分量信号的ycor进行校正而得到y’cor(i):
[0114] 令y’cor(i)= ycor(i)*Kx(i)。
[0115] 如果利用“前期参数迭代校正方法”,则令y’cor(i)= ycor(i)*Kx(i‑1)。
[0116] 以下为利用“同期参数迭代校正方法”对第一分量信号做幅值校正的示例:
[0117] 获取第一分量信号的ycor的关键值ycor,p(i)和ycor,n(i),并且计算:
[0118] Ky(i)= ycor,p(i)‑ ycor,n(i);
[0119] 对第二分量信号的xcor进行校正而得到x’cor(i):
[0120] 令x’cor(i)= xcor(i)*Ky(i)。
[0121] 如果利用“前期参数迭代校正方法”,则令x’cor(i)= xcor(i)*Ky(i‑1)。
[0122] 值得注意的是,在同一个实施例中,可以利用“同期参数迭代校正方法”做零位校正,而利用“前期参数迭代校正方法”做幅值校正,反之亦然;可以利用“同期参数迭代校正方法”对第一分量信号做校正,而利用“前期参数迭代校正方法” 对第二分量信号做校正,反之亦然。
[0123] 以第二分量信号的零位校正为例,对“同期参数迭代校正方法”和“前期参数迭代校正方法”做比较。
[0124] “同期参数迭代校正方法”利用同期的Ox(i)对xdet(i)进行零位校正,因为Ox(i)的计算源于xdet(i)的同一周期数据,所以xcor(i)= xdet(i)‑Ox(i)的计算结果相对较为准确。
[0125] “前期参数迭代校正方法”利用前一期的Ox(i‑1)对xdet(i)进行零位校正,虽然xcor(i)= xdet(i)‑Ox(i‑1)的计算结果没有“同期参数迭代校正方法”的准确,但是,“前期参数迭代校正方法”在运算过程中,获取xdet,p(i)、xdet,n(i)、ydet,p(i)、ydet,n(i),计算Ox(i)、Oy(i)的过程,与做零位校正的过程是并行的,可以显著地提高整体的运算速度。同理,“前期参数迭代校正方法”在运算过程中,获取xcor,p(i)、xcor,n(i)、ycor,p(i)、ycor,n(i),计算Kx(i)、Ky(i)的过程,与做幅值校正的过程是并行的,可以显著地提高整体的运算速度。
[0126] 也即,“同期参数迭代校正方法”的校正结果相对较为准确,而“前期参数迭代校正方法”的整体运算速度显著较高。对于由外界因素(例如环境温度)引起的零点误差和幅值偏差,外界因素的影响通常是比较稳定的,或者磁介质的转速明显大于外界因素的变化速
度,各分量信号是比较平稳的,Ox(i‑1)与Ox(i)的差别非常小而可以忽略,在这种情况下,采用“前期参数迭代校正方法”可获得非常优秀的运算效率。
[0127] 进一步地,在迭代校正过程中也可以用除法运算替代乘法运算,即:
[0128] 令y’cor(i)= ycor(i)/Ky(i),或者y’cor(i)= ycor(i)/Ky(i‑1);
[0129] 令x’cor(i)= xcor(i)/Kx(i),或者x’cor(i)= xcor(i)/Kx(i‑1)。
[0130] 可以将这些除法运算输入至微处理器MCU中进行计算处理,以提高运算效率。
[0131] 此外,为了提高检测精度,本申请还进一步提供了xdet,p、xdet,n、ydet,p、ydet,n、xcor,p、xcor,n、ycor,p、ycor,n的去噪声的方法。为了便于描述,本申请将这种去噪音的方法称为“迭代去噪音”。“迭代去噪音”可以通过数字滤波器来实现。以下为“迭代去噪音”的示例之一:
[0132] 从第一分量信号ydet获取的连续两个采样点分别为ydet01(i)、ydet02(i),且ydet01(i)和ydet02(i)的正负号不相同或者其中任一个为0,第二分量信号xdet的xdet1(i)、xdet2(i)分别与ydet01(i)、ydet02(i)对应,i为大于或等于2的整数;
[0133] 令xdtmp(i)=(xdet1(i)+xdet2(i))/2, xdtmp(i)为中间变量;
[0134] 如果xdtmp(i)≥0,则令xdet,p(i)= xdet,p(i‑1)+(xdtmp(i)‑ xdet,p(i‑1))/2m1,[0135] 如果xdtmp(i)<0,则令xdet,n(i)= xdet,n(i‑1)+(xdtmp(i)‑ xdet,n(i‑1))/2m1,[0136] 其中,xdet,p(i)为与ydet01(i)、ydet02(i)对应的第二分量信号xdet的关键值,xdet,p(i‑1)为在xdet,p(i)之前获取的关键值,
[0137] xdet,n(i)为与ydet01(i)、ydet02(i)对应的第二分量信号xdet的关键值,xdet,n(i‑1)为在xdet,n(i)之前获取的关键值,
[0138] m1为预设的影响因子,且m1为正整数;
[0139] 将第二分量信号的零点误差Ox(i)计算为:
[0140] Ox(i)=( xdet,p(i)+ xdet,n(i))/2。
[0141] 如上文提到的,硬件描述语言在计算时,2的指数次幂的乘除法的计算速度也是比m1
较快的。所以对2 的除法并不会明显降低运算速度。
[0142] 与专利文献CN114216486A提到的数字滤波相比,本申请的“迭代去噪音”方法具有更进一步的有益效果。
[0143] 以xdet,p(i)为例,xdet,p(i)的值主要受到xdet,p(i‑1)的影响。采样得到的ydet01(i)、m1ydet02(i)、xdet1(i)、xdet2(i)可能具有较大的噪音,所以xdtmp(i)的噪音也大。通过2 调整xdtmp(i)对m1
xdet,p(i)的影响度,可以有效减少噪音的干扰,让xdet,p(i)的输出更平稳。在一些示例中,2 的值可以是8、16、32、64、128或512。
[0144] 根据已降噪的xdet,p(i)和xdet,n(i)计算得到的Ox(i)也具有较平稳的输出,因此对第二分量信号的零位校正也更加准确。
[0145] 同理,对ydet,p、ydet,n、xcor,p、xcor,n、ycor,p、ycor,n、Oy(i)也进行了如下降噪:
[0146] 从第二分量信号xdet获取的连续两个采样点分别为xdet01(i)、xdet02(i),且xdet01(i)和xdet02(i)的正负号不相同或者其中任一个为0,第一分量信号ydet的ydet1(i)、ydet2(i)分别与xdet01(i)、xdet02(i)对应,i为大于或等于2的整数;
[0147] 令ydtmp(i)=(ydet1(i)+ydet2(i))/2, ydtmp(i)为中间变量;
[0148] 如果ydtmp(i)≥0,则令ydet,p(i)= ydet,p(i‑1)+(ydtmp(i)‑ ydet,p(i‑1))/2m2,[0149] 如果ydtmp(i)<0,则令ydet,n(i)= ydet,n(i‑1)+(ydtmp(i)‑ ydet,n(i‑1))/2m2,[0150] 其中,ydet,p(i)为与xdet01(i)、xdet02(i)对应的第一分量信号ydet的关键值,ydet,p(i‑1)为在ydet,p(i)之前获取的关键值,
[0151] ydet,n(i)为与xdet01(i)、xdet02(i)对应的第一分量信号ydet的关键值,ydet,n(i‑1)为在ydet,n(i)之前获取的关键值,
[0152] m2为预设的影响因子,且m2为正整数;
[0153] 将第一分量信号的零点误差Oy(i)计算为:
[0154] Oy(i)=( ydet,p(i)+ ydet,n(i))/2。
[0155] 从第一分量信号的ycor获取的连续两个采样点分别为ycor01(i)、ycor02(i),且ycor01(i)和ycor02(i)的正负号不相同或者其中任一个为0,第二分量信号的xcor的xcor1(i)、xcor2(i)分别与ycor01(i)、ycor02(i)对应,i为大于或等于2的整数;
[0156] 令xctmp(i)=(xcor1(i)+xcor2(i))/2, xctmp(i)为中间变量;
[0157] 如果xctmp(i)≥0,则令xcor,p(i)= xcor,p(i‑1)+(xctmp(i)‑ xcor,p(i‑1))/2m3,[0158] 如果xctmp(i)<0,则令xcor,n(i)= xcor,n(i‑1)+(xctmp(i)‑ xcor,n(i‑1))/2m3,[0159] 其中,xcor,p(i)为与ycor01(i)、ycor02(i)对应的第二分量信号的xcor的关键值,xcor,p(i‑1)为在xcor,p(i)之前获取的关键值,
[0160] xcor,n(i)为与ycor01(i)、ycor02(i)对应的第二分量信号的xcor的关键值,xcor,n(i‑1)为在xcor,n(i)之前获取的关键值,
[0161] m3为预设的影响因子,且m3为正整数。
[0162] 从第二分量信号的xcor获取的连续两个采样点分别为xcor01(i)、xcor02(i),且xcor01(i)和xcor02(i)的正负号不相同或者其中任一个为0,第一分量信号的ycor的ycor1(i)、ycor2(i)分别与xcor01(i)、xcor02(i)对应;
[0163] 令yctmp(i)=(ycor1(i)+ycor2(i))/2, yctmp(i)为中间变量;
[0164] 如果yctmp(i)≥0,则令ycor,p(i)= ycor,p(i‑1)+(yctmp(i)‑ ycor,p(i‑1))/2m4,[0165] 如果yctmp(i)<0,则令ycor,n(i)= ycor,n(i‑1)+(yctmp(i)‑ ycor,n(i‑1))/2m4,[0166] 其中,ycor,p(i)为与xcor01(i)、xcor02(i)对应的第一分量信号的ycor的关键值,ycor,p(i‑1)为在ycor,p(i)之前获取的关键值,
[0167] ycor,n(i)为与xcor01(i)、xcor02(i)对应的第一分量信号的ycor的关键值,ycor,n(i‑1)为在ycor,n(i)之前获取的关键值,
[0168] m4为预设的影响因子,且m4为正整数。
[0169] 在一些示例中,2m2、2m3、2m4的值也可以是8、16、32、64、128或512。
[0170] 根据已降噪的xcor,p(i)和 xcor,n(i)计算Kx(i):
[0171] Kx(i)= xcor,p(i)‑ xcor,n(i)。
[0172] 根据已降噪的ycor,p(i)和 ycor,n(i)计算Ky(i):
[0173] Ky(i)= ycor,p(i)‑ ycor,n(i)。
[0174] 得到的Kx(i)和Ky(i)也具有较平稳的输出。
[0175] 根据Kx(i)对第二分量信号进行校正,根据Ky(i)对第一分量信号进行校正。因此对第一分量信号和第二分量信号的幅值校正也更加准确。
[0176] 在一些情况下,可以将Ky视为第一分量信号的幅值偏差Gy,将Kx视为第二分量信号的幅值偏差Gx。或者令:
[0177] Gy=Ky/2;
[0178] Gx=Kx/2。
[0179] 或者令:
[0180] Gy=Ky/(2*Aideal);
[0181] Gx=Kx/(2*Aideal);
[0182] Aideal表示合成的理想的磁场信号的幅值。采用这种方式来获取幅值偏差Gy和Gx,涉及到复杂的除法运算,对于采用硬件编程语言的数字电路而言,运算速度较慢。在一些示
例中,可以利用硬件编程语言处理相对简单的运算,而把涉及到的复杂运算输入至微处理
器MCU处理。但是,显然这种硬件编程语言与微处理器MCU组合的方式还是显得较为复杂,增
加了电路成本。
[0183] 为简化获取磁介质相对于磁传感器转动的角度θ的计算过程,降低计算量、减少计算时间,降低计算成本,本申请的实施例提出了一种磁性编码器及其信号误差校正方法,便
于对磁性编码器输出的检测值进行处理,从而获得磁性编码器的零点误差,对检测值进行
零位校正和幅值校正,进而能够准确地计算出磁场角度,消除温度变化、电磁干扰、热噪声
等因素对磁性编码器的检测精度的影响。
[0184] 以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本申请的保护范围之内。