AN245 - MA600A 校准

下载PDF

每月为您发送最具参考价值的行业文章

订阅

我们会保障您的隐私

摘要

MA600A传感器集成了一个专为系统内校准设计的32点查找表。该表会存储校正值,并将其叠加到测得角度上,以补偿测量误差。通过在最近的两个校准点之间进行线性插值,传感器可以确定任意角度下的适当校正值。校准可减轻由磁体安装偏差、磁体缺陷以及传感器固有偏差引起的误差(更多详情请参阅数据手册“电气特性”表中的INL规格)。本文将介绍片上校正机制,并提供构建最佳校准表的指导原则。

简介

磁角度传感器主要受两类系统误差的影响:传感器积分非线性(INL)和磁偏差。后者是指传感器检测到的磁场角度与旋转轴实际机械角度之间的偏差。

当传感器位于旋转轴线上(也称为轴端配置)时,磁误差主要来自传感器未对准。

在侧轴配置中,大部分磁误差源于磁场径向分量和切向分量在完整旋转一周的过程中幅值不相等。该误差可以使用MA600A中的单个校正参数-称为偏置电流微调(BCT),进行补偿。然而,即使经过此项补偿,由于磁体缺陷或传感器/磁体位置未对准等因素,残留磁误差通常仍存在。若要获得误差接近或低于0.1° 的高精度传感器,必须抑制所有这些剩余偏差。通过校准并将32个校正点存储在MA600A的内部存储器中,可以有效校正传感器的固有误差和磁误差。

校准机制

概述

校准数据存储在32个非易失性存储器 (NVM) 寄存器中,每个寄存器保存一个8位校正值。这些值对应于完整360°旋转范围内均匀分布的32个原始角度位置,即每隔11.25°一个位置。对于这些固定点之间的角度,传感器通过线性插值计算校正值。

校正值的存储器映射

校正值占用 MA600A 存储器中连续的 32 个 8 位寄存器;这些寄存器被专门定义为“Block 1”,从寄存器 32(地址 0x20)到寄存器 63(地址 0x3F)(见表 1)。

表1:构成存储器“Block 1”的 32 个寄存器内容

Block1的寄存器
索引 查找角 地址 查找校正值
I \[\text{a}_{\text{i}}\] CORRi(7:0)
十进制 十六进制
0 0 32 0x20 CORR0
1 11.25 33 0x21 CORR1
31 337.5 62 0x3E CORR30
32 348.75 63 0x3F CORR31

每个校正值 (记为CORRi,其中i的取值范围为0到31)都对应一个查找角度(ai),该角度对应于应用此查找校正的未校正(或称“原始”)角度。尽管 MA600A输出的角度数据采用16位字长,但校正仅针对中间的8位,因此校正分辨率为12位(每步约 0.087°,见表2)。为了优化存储器使用,最低4位 (LSB) 被舍弃,因为这些位通常低于传感器的重复性阈值。

为了进一步节省存储空间,校正范围被限制为±11.25°。也因此,校准表无法补偿超出该范围的误差。

表2:16 位角度输出与存储器中存储的 8 位校正值之间的对应关系

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MSB CORRi(7:0) LSB

查找校正值 CORRi(7:0) 以 8 位带符号整数表示(采用标准二进制补码表示,也称为“int8”)。要将这些值转换为 16 位分辨率校正项(以度为单位的 corri ), 应遵循以下规则。

如果 CORRi(7:0) 的最高有效位 (MSB) 为 0(即 CORRi(7) = 0),则corri 为正值,可按公式(1)计算:

\[\text{cor}\text{r}_{\text{i}}\text{ }\text{= }\frac{\text{CORRi}\left( \text{7:0} \right)}{\text{2}^{\text{12}}}\text{ }\text{×}\text{ }\text{360°}\tag{1}\]

如果 CORRi(7:0) 的最高有效位 (MSB) 为 1(即 CORRi(7) = 1),则corri为负值,必须按二进制补码进行解读,可按公式 (2) 计算:

\[\text{cor}\text{r}_{\text{i}}\text{ }\text{= }\frac{\text{CORRi}\left( \text{7:0} \right)\ \text{-}\text{ }\text{2}^{\text{8}}}{\text{2}^{\text{12}}}\text{ }\text{×}\text{ }\text{360°}\tag{2}\]

传感器工作原理

在运行过程中,传感器持续计算校正值,以调整原始角度测量值。该角度测量值记为 α。如果 α 位于查找角ai和ai+1之间,则通过相邻两个查找校正值corri和corri+1之间的线性插值确定校正值。corr(α)可按公式(3)计算:

\[\text{corr}\left( \text{α} \right)\text{ }\text{=}\text{ }\text{cor}\text{r}_{\text{i}}\text{ }\text{+}\text{ }\frac{\text{α}\text{ }\text{-}\text{ }\text{a}_{\text{i}}}{\text{11.25°}}\left( \text{cor}\text{r}_{\text{i+1}}\ \text{-}\text{ }\text{cor}\text{r}_{\text{i}} \right)\tag{3}\]

图 1 所示为两个相邻查找校正项之间的线性插值。

图 1:两个相邻查找校正项之间的线性插值

传感器最终校正后的角度输出可按公式(4)计算:

\[\text{α}_{\text{OUT}}\text{ = α}\text{ }\text{+}\text{ }\text{corr(α)}\tag{4}\]

需要注意的是,查找角(ai)对应于传感器在默认零位 (ZERO = 0) 和默认旋转方向 (RD = 0) 下的原始输出。因此,必须在更改 ZERO 或 RD 位设置之前完成校准,因为修改这些参数会改变用于校正的参考坐标系。

图2所示为数字信号处理框图。

图 2:数字信号处理框图

如何生成校准表

概要

创建校准表的过程包括:测定作为原始角度 (α) 函数的全周误差曲线,并选取每个查找角度 (ai,其中 i的取值范围为 0 到 31)处误差值的负数。

侧轴配置注意事项

侧轴配置中的误差往往大于轴端配置中的误差。因此,应首先调整 BCT 参数,以确保误差曲线保持在CORRᵢ的有效范围内,即 ±11.25° 以内。

要估算合适的 BCT 值,可先使用 MPS 在线磁场仿真工具获得初始值。不过,还应通过实验微调 BCT 值以使误差曲线最小,从而验证该初始估算值。

如果机械公差和系统间差异很小,则实验确定的BCT值可用于具有相同机械配置的所有传感器。使用仿真工具确认机械公差是否会引入超过 ±11.25° 的误差;如果超过,则必须为每个独立系统配置唯一的BCT值。

误差曲线的测量方法

获得误差曲线主要有以下两种方法:

  • 方法A:使用高精度参考编码器
  • 方法B: 在没有参考编码器的情况下,以恒定速度旋转磁体。

方法A简单直观,因为真实角度由编码器直接给出。在方法B中,则按时间采集传感器输出,其前提是假设真实角度与时间成正比。若要精确确定转速,应使用多圈旋转所需的时间进行计算。

测试装置精度要求

对于上述两种方法,磁体的定位精度都必须显著高于目标校准精度(通常为 5 至 10 倍)。

对于方法A,精度取决于参考编码器的精度。

对于方法B,精度则受转速纹波(即转速变化)的影响。

通常,转速纹波比(纹波与额定转速之比)必须远小于以弧度表示的目标角度精度。

如果转速纹波由电机齿槽效应引起,则可通过改变旋转轴的惯量来增大或减小误差。产生的误差 (errSR)可按公式 (5) 计算:

\[\text{er}\text{r}_{\text{SR}}\text{ = }\frac{\text{t}_{\text{RIP}}}{\text{I}}\frac{\text{1}}{\left( \text{2}\pi\text{f}_{\text{ROT}} \right)^{\text{2}}}\tag{5}\]

其中,fROT 为磁体旋转频率,τRIP 为电机扭矩纹波, and I 为旋转轴的总转动惯量。

误差曲线的测量与处理

误差曲线 (err) 表示传感器输出与真实角位置之间的偏差,可按公式(6)计算:

\[\text{err}\text{ }\text{=}\text{ }\text{α}_{\text{OUT}}\ \text{-}\text{ }\text{α}_{\text{REF}}\tag{6}\]

如果校准表为空(所有 i对应的corri = 0),则传感器输出等于原始角度,此时 err 可按公式 (7) 计算:

\[\text{err}\text{ }\text{=}\text{ }\text{α}\text{ }\text{-}\text{ }\text{α}_{\text{REF}}\tag{7}\]

因此,测量误差曲线需要以尽可能高的精度测量传感器在完整一周旋转过程中的输出。

设置参考零点

校准的主要目标是校正线性度,而不是定义绝对零角。移动零点只会使传感器响应曲线产生恒定偏移,不会影响线性度。应用所需的零角应在校准完成后进行配置。

因此,参考角(αREF)的零位可以任意设置,不会影响校正。关键是确保任意单个误差值 (err) 均不超过 ±11.25° 的校正范围。

为确保这一点,建议减去共模分量使误差曲线以零点为中心。errCENTERED可按公式(8)计算:

\[\text{er}\text{r}_{\text{CENTERED}}\text{ }\text{=}\text{ }\text{err}\text{ }\text{-}\text{ }\frac{\text{1}}{\text{2}\pi}\int_{\text{0}}^{\text{2}\text{π}}{\text{err}\left( \text{α} \right)\text{d}\text{α}}\tag{8}\]

对于在完整一周范围内近似均匀分布的N个离散误差样本(errj),中心化误差可按公式(9)计算:

\[\text{er}\text{r}_{\text{CENTERED, j}}\text{ }\text{=}\text{ }\text{er}\text{r}_{\text{j}}\text{ -}\text{ }\frac{\text{1}}{\text{N}}\mathop{\large\sum}\nolimits_{\text{j=1}}^{\text{N}}{\text{er}\text{r}_{\text{j}}}\tag{9}\]

如果数据集未覆盖完整旋转周期,则可采用一种实用替代方法:减去误差范围的中值。在这种情况下,errCENTERED,j可按公式 (10) 计算:

\[\text{er}\text{r}_{\text{CENTERED, j}}\text{ }\text{=}\text{ }\text{er}\text{r}_{\text{j}}\text{ -}\text{ }\text{1/2}\left( \underset{\text{j}}{\text{max}}{\text{(er}\text{r}_{\text{j}}\text{)}}\ \text{-}\text{ }\underset{\text{j}}{\text{min}}\left( \text{er}\text{r}_{\text{j}} \right) \right)\tag{10}\]

如何降低噪声

为了生成最优校正表,必须将系统误差(即校准可以补偿的误差)与随机噪声分离。误差曲线中的噪声越小,校正值就越精确。下面介绍两种校准方法及其对应的噪声抑制策略。

  1. 1.使用参考编码器进行校准(方法 A):该方法通常采用缓慢的分步测量(“走停式”),便于有效滤除噪声。

通过选择较大的滤波窗口来降低噪声,但应确保滤波时间常数 (τ) 明显短于每个测量点的静止时间,以便传感器输出在记录之前充分稳定。

判断稳定时间是否充足的一种方法是确保满足以下条件:在移动一个步进角(αSTEP),之后,必须等待传感器的输出变化量 (ΔαOUT(t))达到该步进角大小,且误差范围远小于目标精度。输出必须满足公式(11)所示条件:

\[\left| \text{Δ}\text{α}_{\text{OUT}}\left( \text{t} \right)\ \text{-}{\text{ }\text{α}}_{\text{STEP}} \right|\text{ }\text{<}\text{ }\text{Accuracy}\tag{11}\]

例如,如果测量步进角(αSTEP)为10°,则精度为 0.1° 的校准必须满足公式(12)所示关系:

\[\left|\frac{\Delta\alpha_{\mathrm{OUT}}(t)-\alpha_{\mathrm{STEP}}}{\alpha_{\mathrm{STEP}}}\right| < \frac{\mathrm{Accuracy}}{\alpha_{\mathrm{STEP}}}=0.001\tag{12}\]

根据图3,当等待时间大于滤波时间常数的9倍时,即可满足该条件。数据手册给出了每种滤波窗口对应的时间常数 (τ),以及以无噪声分辨率表示的最终噪声水平。阶跃响应(即步进后随时间变化的响应)以滤波时间常数的倍数表示,用于显示传感器输出向最终值收敛的过程。

图3:阶跃响应 (1) (2)

注:

  1. 由于滤波窗口不会影响系统误差,即使正常工作时使用较小窗口,校准也可以使用较大窗口。
  2. 在采样间隔大于滤波时间常数的前提下,较长的滤波时间配合单次采样,与较短的滤波时间配合多次采样是等效的。
  1. 恒速旋转校准(方法 B):采用恒速旋转进行校准时,在旋转过程中实时采集测量值。

与前一种情况(使用参考编码器进行校准)类似,应尽可能增大滤波时间常数以抑制噪声,同时避免失真误差曲线。过大的滤波窗口可能会衰减测量需要捕获的误差曲线特征。因此,滤波时间常数 (τ) 必须远小于最高次谐波分量周期的一半,如公式 (13) 所示:

\[\text{τ}\text{ }\text{≪}\text{ }\frac{\text{T}}{\text{2D}}\text{ }\text{=}\text{ }\frac{\text{1}}{\text{2D}\text{ }\text{f}_{\text{ROT}}}\tag{13}\]

其中,T 为磁体旋转周期, fROT 为磁体旋转频率,D为误差曲线特征中的最高谐波阶数。

如果无法使用较大的滤波窗口,则应记录多圈旋转过程中的误差并取平均值。由于原始角度以一周为模,因此测量数据会自然折叠到单个周期内。

精确校准要求精确获知磁体位置。在方法 B 中,利用采集时间和旋转速度推算磁体位置。当转速保持恒定时,该方法成立;若轴的转动惯量足够大,使公式 (5) 中的转速纹波误差 (errSR)) 很小,则这一假设是合理的。

通过过零点估算转速

电机控制信号通常缺乏可靠确定转速所需的精度。因此,建议直接根据传感器数据估算平均转速,例如检测信号的过零点。若以旋转周期比率表示采集时间,则无需精确获知触发设备时钟的绝对频率。

通过多圈旋转提高转速估算精度

对多个完整旋转周期进行测量可提高转速估算精度。转速的不确定性与采样间隔和所测旋转总时长之比成正比。

从噪声频谱角度看,方法 A 和方法 B 都依赖滤波或平均处理。由于 MA600A 除白噪声外还存在一定的 1/f 噪声,因此滤波带来的降噪效果低于高斯假设下的预测值。具体而言,将采集时间增加 4 倍并不能保证噪声水平降低一半。

数据插值

在芯片内部,校准模块的输入是原始角度 (α),因此需要进行插值的函数应是 err 关于 α 的函数,而不是关于真实角度 (αREF)。这意味着误差曲线必须由实验数据集[αj, errj] (with j = 1…N)表示。图 4 给出了N = 100时的示例。因此,即使机械角(αREF) 均匀分布,图 4 横轴所示的原始数据点(αj)也并非均匀分布。

图4:误差数据示例

插值的目标是从数据集[αj, errj]中得到校正点(corri)的最佳估计值。采用方法 A 和方法 B 得到的误差曲线中,原始输出点通常与查找角(ai)不一致。原则上,利用方法 A 可以查找与ai对应的原始角度,但这一操作繁琐,而且由于无法抑制残余噪声,并不能得到最佳校正估计值。建议通过对完整误差数据集进行拟合来提取查找校正值 (corri)。

谐波拟合

在尽量减小噪声的同时对数据进行插值有多种方法。一种方法是假设误差曲线具有一定规律性,并使用数学拟合计算 ai 点处的校正值。在大多数磁环境较干净的情况下,可以假设参考角(αREF)对应的误差曲线由一阶、二阶和四阶谐波组成。

当误差曲线表示为原始角度(αj),的函数时,其形状会发生变化;非线性越大,谐波成分通常越丰富。限制谐波成分越严格,对噪声的抑制就越强。通常,轴端配置中可合理预期最高谐波阶数(D)为4,侧轴配置中可达到 8。

误差曲线 f(α) 的谐波拟合可通过取傅里叶级数的前 D 项得到,可按公式 (14) 计算:

\[\displaystyle \text{f}\left( \text{α} \right)\text{ }\text{=}{\text{ }\text{H}}_{\text{0}}\text{ }\text{+}\text{ }\mathop{\large\sum}\nolimits_{\text{k=1}}^{\text{D}}\left( \text{H}_{\text{x,k}}\text{cos}\left( \text{kα} \right)\text{ }\text{+}\text{ }\text{H}_{\text{y,k}}\text{sin}\left( \text{kα} \right) \right)\tag{14}\]

其中,H0, Hx,k and Hy,k 是连续误差曲线 err(α) 的傅里叶系数,可分别按公式 (15)、(16) 和 (17) 计算:

\[\text{H}_{\text{0}}\text{ }\text{=}\text{ }\frac{\text{1}}{\text{2}\text{π}}\int_{\text{0}}^{\text{2}\pi}{\text{err}\left( \text{α} \right)\text{dα}}\tag{15}\]
\[\text{H}_{\text{x,k}}\text{ }\text{=}\text{ }\frac{\text{1}}{\text{π}}\int_{\text{0}}^{\text{2}\text{π}}{\text{err(α)}\text{cos}\left( \text{kα} \right)\text{ dα }}\tag{16}\]
\[\text{H}_{\text{y,k}}\text{ }\text{=}\text{ }\frac{\text{1}}{\text{π}}\int_{\text{0}}^{\text{2}\text{π}}{\text{err(α)}\text{sin}\left( \text{kα} \right)\text{ dα }}\tag{17}\]

对于离散数据集,[αj, errj]并非均匀分布。在这种情况下,可采用梯形法近似计算傅里叶系数,如公式 (18)、(19) 和 (20)所示:

\[\displaystyle \text{H}_{\text{0}}\text{ }\text{=}\text{ }\frac{\text{1}}{\text{α}_{\text{FT}}}\mathop{\large\sum}\nolimits_{\text{j=1}}^{\text{N-1}}{\frac{\text{er}\text{r}_{\text{j+1}}\text{ }\text{+}\text{ }\text{er}\text{r}_{\text{j}}}{\text{2}}\text{ }\left( \text{α}_{\text{j+1}}\ \text{-}\text{ }\text{α}_{\text{j}} \right)}\tag{18}\]
\[\displaystyle \text{H}_{\text{x,k}}\text{ }\text{=}\text{ }\frac{\text{2}}{\text{α}_{\text{FT}}}\mathop{\large\sum}\nolimits_{\text{j=1}}^{\text{N-1}}{\frac{\text{er}\text{r}_{\text{j+1}}\text{cos}{\text{(k }\text{α}_{\text{j+1}}\text{)}}\text{ }\text{+}\text{ }\text{er}\text{r}_{\text{j}}\text{cos}{\text{(k }\text{α}_{\text{j}}\text{)}}}{\text{2}}\text{ }\left( \text{α}_{\text{j+1}}\ \text{-}\text{ }\text{α}_{\text{j}} \right)}\tag{19}\]
\[\displaystyle \text{H}_{\text{y,k}}\text{ }\text{=}\text{ }\frac{\text{2}}{\text{α}_{\text{FT}}}\mathop{\large\sum}\nolimits_{\text{j=1}}^{\text{N-1}}{\frac{\text{er}\text{r}_{\text{j+1}}\text{sin}{\text{(k }\text{α}_{\text{j+1}}\text{)}}\text{ + er}\text{r}_{\text{j}}\text{sin}{\text{(k }\text{α}_{\text{j}}\text{)}}}{\text{2}}\text{ }\left( \text{α}_{\text{j+1}}\ \text{-}\text{ α}_{\text{j}} \right)}\tag{20}\]

其中αFT为完整一周角度,如果αj以度表示,则αFT=360°;如果 αj 以弧度表示,则 αFT = 2π。图 5 给出了一个拟合示例,其中蓝色圆点为图 4 中 errj 的误差数据,红色实线为拟合函数 f;其常数项为H0,一阶和二阶谐波项分别为 Hx,1、Hy,1、 Hx,2、和Hy,2.

图5:拟合示例

在自动校准过程中,若能利用某种判据来验证数据拟合是否正确,将大有裨益。评估拟合质量时可采用多种判据,例如判定系数R2。这些判据大多具有一个共同特征,即涉及对残差平方和(SSR)的评估;该数值可通过公式 (21) 计算得出:

\[\displaystyle \text{SSR}\text{ }\text{=}\text{ }\mathop{\large\sum}\nolimits_{\text{i=1}}^{\text{N}}\left( \text{er}\text{r}_{\text{i}}\mathbf{\ }\text{-}\text{ }\text{f}\left( \text{α}_{\text{i}} \right) \right)^{\text{2}}\tag{21}\]

残余噪声会影响 SSR。因此,设置通过/失败判据时,需要了解正常噪声条件下的 SSR。定义标准的一种方法是使用测试用例来测量 SSR,其中残余噪声符合预期,并且拟合曲线捕获了想要抑制的误差曲线的特征。

确定拟合函数 f(α) 后,通过在查找角(ai)处取误差的负值来计算 32 个校正值。在这种情况下,corri可按公式 (22) 计算:

\[\text{cor}\text{r}_{\text{i}}\text{ }\text{=}\text{ }\text{-f}\left( \text{a}_{\text{i}} \right)\tag{22}\]

校准表构建

一旦确定了32个corri,即可根据以下关系将其转换为查找表格式。

如果corri ≥ 0,则CORRi(7:0)可按公式(23)计算:

\[\text{CORRi}\left( \text{7:0} \right)\text{ }\text{=}\text{ }\text{round}\left( \frac{\text{2}^{\text{12}}}{\text{α}_{\text{FT}}}\text{cor}\text{r}_{\text{i}} \right)\tag{23}\]

如果corri < 0,则CORRi(7:0)可按公式(24)计算:

\[\text{CORRi}\left( \text{7:0} \right)\text{ }\text{=}\text{ }\text{Round}\left( \frac{\text{2}^{\text{12}}}{\text{α}_{\text{FT}}}\text{cor}\text{r}_{\text{i}}\text{ }\text{+}\text{ }\text{2}^{\text{8}} \right)\tag{24}\]

其中,αFT为完整一周角度;如果corri以度表示,则αFT=360°;如果corri以弧度表示,则 αFT=2π。

表3给出了查找校正值及其转换为可直接存入存储器的整数格式的示例。

表3:查找表构建示例

i ai corri CORRi (7:0)
十进制
0 0 0.11 1
1 11.250 -0.34 252
2 22.5 -1.29 243
30 337.5 0.64 7
31 348.75 0.33 4

查找表加载

将查找表加载到 MA600A 存储器需要两步:首先,将 CORRi 值写入易失性寄存器;然后,将寄存器内容传输到 NVM。与传感器的通信通过串行外设接口 (SPI) 进行。

将CORRi值写入易失性寄存器

要将CORRi值存储在寄存器中,需使用由三个16位字组成的“写寄存器”命令执行32次操作(见表4)。

表4:将一个 8 位 CORRi 值写入对应寄存器的命令

第1个16位字 第2个16位字 第3个16位字
COPI 0xEA54 8-bit address (0x20 to 0x3F) 8-bit CORRi 0x0000
CIPO 角度输出 未定义数据 Angle out 8-bit CORRi

在第三个 16 位字的后半部分,MA600A 会读回已发送的 8 位 CORRi 值作为响应。如数据手册所述,寄存器按组划分为“Block”。包含查找表 32 个寄存器 (0x20~0x3F) 构成的“Block 1”。

此时,一旦查找寄存器填充完成,传感器就会自动校正输出;但如果传感器断电,查找表会被清除。要在断电后保留查找值,请继续执行下一步。

存储到 NVM

包含 32 个校正值的 Block 1 全部内容,可通过一条由两个 16 位字组成的命令一次性传输到 NVM(见表 5)。

表 5:将Block 1的32个寄存器存储到NVM的命令

第1个16位字 第2个16位字
COPI 0xEA55 0xEA01
CIPO 角度输出 角度输出

典型操作顺序

  1. 清除 ZERO 寄存器;
  2. 将 RD 设为零;
  3. 对于轴端配置,将 BCT 值设为零;对于侧轴配置,设定最终的 BCT 值;
  4. 旋转磁体并获取误差数据;
  5. 计算校正值 (CORRi) ;
  6. 写入校准寄存器;
  7. 验证校准是否生效以及误差是否已消除;
  8. 将表格加载到 NVM;
  9. 调整RD.
  10. 调整ZERO.
  11. 将ZERO、RD和BCT存储到NVM。