使用角度传感器 IC 的线性位置感测

下载 PDF 版

作者:Alex Latham 与 Wade Bussing,
Allegro MicroSystems, LLC

摘要

本应用说明介绍了使用角度传感器 IC 进行线性位置感测的设计过程,包括磁铁选择和朝向、输出线性化,以及使用传感器 IC 阵列扩大测量范围。它还提供了一些磁铁和感测长度的试验数据,以显示这些解决方案的理论精度和实际精度的匹配程度。

介绍

通常,使用一个条形磁铁和磁传感器 IC 或传感器 IC 阵列就能进行精确、低成本和非接触的线性位置感测。将磁铁固定在移动物体上,安放传感器时,确保磁铁能正常滑动。图 1 显示了典型配置和磁场。当磁铁沿 x 轴方向滑动时,y 轴方向的磁场看起来就像正弦波,同时磁场与磁铁位置围绕 x = 0 进行线性化。

图 1

图 1:条形磁铁在不同气隙下的磁场与位置对比。所有图中的磁铁长度均按比例绘制。

这种线性位置感测方法面临几个难点,包括:

  1. 传感器 IC 和磁铁之间的气隙会导致测量误差。
  2. 磁场强度随温度变化会导致测量误差。
  3. 与位置成线性关系的磁场测量范围限定为磁铁长度的约 50%,所以需要使用比测量行程更长的磁铁。

通过测量磁场与磁铁位置的角度能解决这三个问题。

  1. 就应用中所见的典型差异时的气隙而言,磁场角度与磁铁位置的对比几乎相同。图 2 显示了角度与位置的对比几乎是恒定不变的,虽然随着气隙误差的增大,还是出现了一些变化。
  2. 磁场角度与磁场强度无关。
  3. 在大部分磁铁长度内,与磁铁位置相比的磁场角度呈线性,通过线性化,可以感测 150% 的行程长度或更多磁铁长度。图 3 显示了在测量经过位置(y 轴方向的磁场)和测量磁场角度时,对标称气隙进行线性化后,随气隙变化的误差与位置对比。采用经过测量法时,只能以 0.5 mm(气隙误差 ±0.5 mm)的精度为所示 16 mm 磁铁感测 10 mm 行程。而使用角度测量法时,在相同的物理配置下,能以 ±0.5 mm 的精度感测 30 mm 以上的行程,线性感测范围扩大了 3 倍。
  4. Allegro A1335 磁性角度传感器 IC 非常适合采用上述角度测量法的线性位置感测,因为它提供了精确角度测量之外的高级功能,如:

    • 角度测量的分段线性化:这能补偿磁铁末端附近的角度与位置对比曲线的非线性,从而使线性感测区域扩大到磁铁边缘以外。它还允许将角度输出与位置对比的斜率调整至所需的数值。
    • 可编址 I2C/SPI/SENT:确保在相同的总线上以阵列形式固定多个 IC。
    • 角度输出钳位:此功能对使用多个 IC 的系统很有用,因为钳位能帮助 MCU 识别超出范围的传感器 IC 和用于确定位置的传感器 IC。

图 2

图 2:条形磁铁在不同气隙下的磁场角度与位置对比。

图 3

图 3:标称气隙线性化之后,进行位置测量与角度测量时的误差与位置对比。

系统基本配置

A1335 采用 TSSOP-14 封装(对于需要冗余的系统,可采用双晶片 TSSOP-24),并能沿封装平面测量磁场角度。也就是说,在线性位置感测时, IC 的朝向应与磁铁移动方向垂直,如图 4 所示。有效气隙是磁场感测阵列(圆形垂直霍尔传感器 - CVH)的中心与磁铁边缘的距离。 A1335 中的 CVH 不在中心,所以它能用于按需要增大或减小系统内的气隙。

图 4

图 4 :使用 A1335 的系统配置

设计能进行线性感测的磁系统

必须根据要测量的行程长度,选择适用的磁铁尺寸和标称气隙,以构建一种精度符合要求的系统。通常,设计系统时必须确保:

  1. 磁场角度与位置成线性关系。
  2. 与系统的气隙公差相比,磁场角度足够恒定。
  3. 磁场强度大于 CVH 传感器 IC 所需的最小强度,即 300 高斯左右。

虽然要兼顾多种平衡,但能满足特定应用要求的磁系统有许多种,磁系统中的每个变量都会影响测量精度,这样就能快速调节,以提高系统性能,降低成本。

  • 磁铁长度 (L):根据经验,磁铁长度至少应为行程长度的 60% 。离磁铁边缘越远,随气隙变化的线性度和精度就越小,因此,在行程长度固定时,磁铁越长,误差越小。
  • 标称气隙 (d):选择气隙时,应使角度与位置成线性关系。如果气隙太小,特别是在较长的磁铁上, x 轴和 y 轴磁场会变成非正弦(图 5),而且随气隙变化的角度和位置不会成线性关系,也无法保持一致(图 6)。通常,气隙范围在 L/3 - L/2 之间就能正常工作。
  • 磁铁直径 (D):通常,磁铁的直径越大,磁场越强。对于建议使用的钕磁铁来说,要保证正常工作,通常应使磁铁的直径略等于或小于气隙。铁氧磁体更便宜;但它们的磁力减弱 4 倍,所以要达到相同的磁场强度,需要使用更大的磁铁。

总而言之,当行程长度 LS 固定时,合理设计的第一步应该是:

L = LS × 0.65

d = D = 0.4 × L

从那里开始,可增大或减小这些参数,以满足具体应用的要求。

要确定系统是否满足设计目标的要求,需要为磁场建模。虽然使用先进的 3D 磁场建模软件能产生最精确的结果,但在多数情况下,这没有必要。使用网上能下载的免费 2D 模拟软件就能准确地为磁场建模。另外,如果使用圆柱形磁体,还能很容易地计算磁场,《附录》中提供了可完成此操作的 MATLAB 函数。尺寸相似的条形磁铁会产生几乎相同的磁场。图 7 显示了使用这些等式的圆柱形磁体的理论角度和气隙的对比,以及使用 A1335 时的试验结果:它们十分匹配。

图 5

图 5:在不同气隙下,D = 3/8″, L = 5/8″ 磁铁的磁场与位置对比

图 6

图 6:在不同气隙下,D = 3/8″, L = 5/8″ 磁铁的磁场角度与位置对比

图 7

图 7:磁场角度与位置的理论值和测量值的对比

线性化/校准方法

根据系统的需求,可使用不同的线性化或校准方法。本文将为您介绍使用 Allegro A1335 示例编程器对 A1335 的位置输出进行线性化的方法。此方法适用于每种系统,利用一种系统产生的结果,然后将找到的系数用于其他系统,确保以更少的影响,获得类似的性能,以测试生产时间。

图 7.5

  1. 启动编程器:连接 A1335 和 ASEK20,再连接 ASEK20 和您的电脑。启动示例编程器软件,为 A1335 通电。参阅《Allegro A1335 示例编程器用户手册》,了解关于编程器使用的详细说明。
  2. 前往“长行程”选项卡:编程器的“长行程”选项卡能确保自动使用 A1335 的分段线性化功能进行位置线性化。它还有助于改善只能在原位上进行角度测量的现实。
  3. 确定行程范围和代码/毫米:使用此方法进行线性化的完整行程范围是从代码 256 到代码 3840,要避免会出现翻转的零位,所以完整的行程需符合此范围的要求。也就是说,代码/毫米值 Cpmm应为:
    等式 4-1
    例如,假如行程长度是 25 mm,Cpmm 应为 143.36 代码/毫米或更小,这样需要将数值四舍五入成整数值或 128,以简化微控制器将代码转换为毫米时的计算过程。 在示例编程器中,如果“行程范围”的输入值是 25,可单击“计算毫米/步数和代码/毫米”按钮,屏幕会显示 Cpmm 值。然后可将此数值四舍五入为所需的数值;接下来,单击“计算范围与毫米/步数”按钮。这样能根据新的 Cpmm 数值重新计算“行程范围”。例如,假如 Cpmm 四舍五入为 128,“行程范围”现在应为 28 mm,这样就能为所需的 25 mm 测量范围提供合理的余量。
  4. 确定毫米/线性化步数:分段线性化点的间距是 256 个代码,所以要确定每个线性化点之间的移动毫米数。
    等式 4-2
    就以上实例而言,毫米步数应大于 1.79 mm,由于 Cpmm 接近 128,所以 mm步数 是2 mm。示例编程器中会显示此数值,计算结果将在数据输入表中显示为每个线性化点之间的毫米差异。
  5. X = 0 开始线性化测量:填写测量表。通常,在每个“距离”,测量传感器的原始输出。线性化之后,“距离”和“预期”代码列描述线性传递函数。在位置 X = 0 开始(磁铁位于 CVH 传感器的中心),确保“距离”= 0 行突出显示,然后单击“读取数值”按钮。“已测量”列会填写传感器读数,突出显示的行会下移。
  6. 继续线性化测量:按 mm步数继续前移,将传感器输出读入表中的正确行。操作过程如下:
    1. N = 1
    2. 移至位置 X = N * mm步数.
    3. 确保行 X = N * mm步数 突出显示。在测量过程中,每次读取数值后,软件都会增加/减少行。
    4. 单击“读取数值”按钮,从 A1335 中读取数值,然后将测量值填入突出显示的行。
    5. 重复 b - d 的步骤,每次增加 N 直至 N = 7。
    6. 重复 b - d 的步骤,只是现在 N 要从 –1 - –7。
  7. 计算并应用系数:单击“计算和器件编程”按钮。这将计算偏移和线性化的正确数值,并利用它们对器件进行编程。
  8. 检查性能:单击“开始测试”按钮,连续读出传感器的位置。然后移开磁铁,并检查传感器的读数。

图 8 显示了线性化传感器输出的实例。其中,每个线性化点的位置改变了 2 mm,mm步数 = 2。也就是说,Cpmm = 256/2 = 128 代码/毫米,即线性化后传感器输出的斜率,如图 8 所示。同样,在位置 X = 0,传感器输出 2048。

图 8

图 8:A1335 随气隙变化的线性化输出(磁铁 1)。

多个磁铁和行程长度的试验结果

以下是三种不同磁铁在不同行程长度时的线性化结果。下表列出了使用的每种磁铁的关键值(所有磁铁均为钕磁铁):

磁铁 行程长度 mm步数
# 直径 长度
1 6.4 mm 15.9 mm 25 mm 2 mm
2 9.5 mm 19 mm 30 mm 3 mm
3 12.7 mm 38.1 mm 50 mm 4 mm

以下每种磁铁的示意图显示了输出角度与位置的对比,以及不同气隙条件下,测量位置误差与实际位置的对比。误差取决于理想传感器输出,即:

等式 5-1

重新整理后显示如何将 A1335 的传感器输出转换为 X 位置。

等式 5-2

误差即为实际X 位置和传感器 IC 输出的计算 X 位置之间的差异。图 9 显示了磁铁 1 的这种误差。

图 9

图 9:随气隙变化的测量误差与位置对比(磁铁 1)。

图 10

图 10:A1335 随气隙变化的线性化输出(磁铁 2)。

图 11

图 11:随气隙变化的测量误差与位置对比(磁铁 2)。

图 12

图 12:A1335 随气隙变化的线性化输出(磁铁 3)。

图 13

图 13:随气隙变化的测量误差与位置对比(磁铁 3)。

随温度和分辨率变化的精度

使用角度测量法感测线性位置的一个主要优势是,它能随气隙和温度的变化,提供非常精确的结果。前面的内容主要讨论了随气隙变化的精度。随温度变化的精度主要取决于所用传感器的角度精确度。

A1335 随温度变化的精度约为 ±1.3 度;但必须在系统内将它转换为毫米。由于角度误差与非线性化角度输出有关,所以必须考虑扫掠的原始角,在整个行程内约为 180 度。如图 2 所示。然后可按下列公式计算位置测量的误差:

等式 6-1

对于 25 mm 行程,LS = 25,随温度变化的误差是 ±0.18 mm。使用基本相同的方法可计算位置分辨率。A1335 的角分辨率是 0.8 度 (3 sigma)。也就是说,25 mm 行程的位置分辨率是 0.8 / 180 × LS = 0.11 mm。当然,如果启用了 A1335 的内部筛选,或求取读数的平均值,还能提高分辨率。

使用多个传感器 IC 扩大感测范围

通过增大磁铁尺寸(遵照上文要求),或在系统中增加多个传感器 IC,能扩大感测范围。随着预期行程长度的增加,要解决使用更大磁铁带来的成本和体积问题,必须使用多个传感器。图 14 显示了使用多个传感器的配置。图中使用了 3 个传感器 IC,但这可以增加至 n 个传感器 IC。

图 14

图 14:使用多个 A1335 角度传感器的系统配置

预期行程长度 LS 除以 n(图 14 中为 3) 以得出有效行程长度 Lseff

等式 7-1

然后可使用上述方法,围绕 Lseff 设计磁系统,将n 个传感器按 Lseff 的间距,以中心对中心的方式固定。除了让磁铁变小以外,这还能减小随温度变化产生的误差,因为 LS 减小了:

等式 7-2

当磁铁通过一个传感器的感测范围时,它会进入下一个传感器的感测范围。使用 A1335 就能很容易地确定读取位置的传感器 IC。 在定期测量位置的正常运行过程中,如果当前使用的传感器的位置读数在任意方向超过Lseff / 2,应切换至下一个传感器。为避免在两个传感器之间偏向Lseff / 2 右边的位置来回切换,可在切换时增加一些磁滞,等待位置略超过Lseff / 2 后,再进行切换。在启动时,或长时间未读取位置之后,需要在 n 个传感器中确定可读取位置的传感器。这里的难点是,如果 n 很大,有些传感器可能无法获得足够的磁场,因而不能产生有效的输出。此时,可使用 A1335 的弱磁场误差记录器,确定哪一个传感器的输出可以忽略。然后,在能产生有效输出的传感器中,选择角度输出最接近 180 度的传感器作为有源传感器。

总结

总之,与单轴磁传感器 IC 相比,磁性角度传感器 IC 能发挥更出色的性能。Allegro 的 CVH 角度传感器 IC 产品系列(如 A1335)是此类应用的理想之选。它们能提供先进的功能,如分段线性化 (PWL) 和可编址的 SENT、I2C 或 SPI,这些功能不仅扩大了磁铁的有效感测范围,而且简化了系统设计,减少了系统成本。

《附录 A》:用于计算圆柱形磁铁产生磁场的 MATLAB 函数

函数 [Bz,Br] = cyl_field(B,L,Radius,z,r)
% Bz 和 Br 是圆柱形磁铁产生磁场的 Z 轴方向和径向
% 其中 B 材料的残余电感,L 是
% 磁铁的长度,Radius是是磁铁的半径。
% z 是与 z 轴方向磁铁中心的距离,r
% 是与径向磁铁的距离。
bz = @(R,phi,z,L,r) R.*(L/2-z)./((R.^2+(L/2-z).^2+r.^2-2*R.*r.*cos(phi)).^(3/2))...
+R.*(L/2+z)./((R.^2+(L/2+z).^2+r.^2-2.*R.*r.*cos(phi)).^(3/2));
br = @(R,phi,z,L,r) -R./2.*(2.*r-2.*R.*cos(phi))./((R.^2+(L/2-z).^2+r.^2-2.*R.*r.*cos(phi)).^(3/2))...
+R./2.*(2.*r-2.*R.*cos(phi))./((R.^2+(L/2+z).^2+r.^2-2.*R.*r.*cos(phi)).^(3/2));
% 如果一个在磁铁内部,固定磁场计算值
if (z <= L/2*1.01) && (z > -L/2*1.01) && (abs(r) <= Radius*1.01)
Bz = B/2;
Br = 0;
else
Bz = -B./(4*pi)*integral2(@(R,phi)bz(R,phi,z,L,r),0,Radius,0,2*pi);
Br = -B./(4*pi)*integral2(@(R,phi)br(R,phi,z,L,r),0,Radius,0,2*pi);
end
end