ZHCACL7A january   2021  – april 2023 TMAG5170 , TMAG5170-Q1 , TMAG5170D-Q1 , TMAG5173-Q1 , TMAG5273

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
    1. 1.1 使用一维传感器进行角度测量
    2. 1.2 角度测量难题
  5. 2多轴传感器的优势
    1. 2.1 简化的机械放置
    2. 2.2 灵敏度匹配
    3. 2.3 CORDIC 角度估算
    4. 2.4 篡改和杂散磁场检测
  6. 3角度测量注意事项
    1. 3.1 传感器对齐
    2. 3.2 传感器校准
    3. 3.3 输入参考噪声
    4. 3.4 采样率的影响
  7. 4实际应用
    1. 4.1 按钮式旋钮
      1. 4.1.1 评估设计限制
      2. 4.1.2 磁体选择
      3. 4.1.3 原型设计和验证
    2. 4.2 离轴设计
      1. 4.2.1 灵敏度增益校正
      2. 4.2.2 精度验证
  8. 5总结
  9. 6参考文献
  10. 7修订历史记录

CORDIC 角度估算

CORDIC(即坐标旋转数字计算器)为数字系统使用坐标数据计算角度提供了一种快速有效的方法。该算法通过执行二进制搜索以围绕原点旋转一个点,直到生成的矢量位于单个轴上,从而快速近似计算角度。由于坐标输入以迭代阶跃旋转,因此可以通过所有阶跃的总和来估算起始角度。完成这些旋转后产生的结束位置也将产生输入矢量的大小。当与多轴霍尔效应传感器的输出一起使用时,该算法被证明是快速且精确的角度计算的极佳选择。考虑图 2-8 中的点。

GUID-20201111-CA0I-4R31-0GBF-29Q6GFCDSX2V-low.gif图 2-8 CORDIC 输入

如果将该点顺时针旋转 45°(表示为 α0),则新生成的矢量将离开第一象限,如图 2-9 所示。

GUID-20201111-CA0I-THQV-FR1G-Q7VHBFWFSWN4-low.gif图 2-9 CORDIC 第一个阶跃

由于目标是将矢量与 X 轴对齐,因此在下一个阶跃中必须逆时针调整旋转方向。在下一次迭代中,坐标将逆时针旋转 22.5° (α1)。此处的结果不会产生象限变化,因此旋转方向会继续沿此方向。此过程继续进行,添加和减去角度阶跃并更改旋转方向,直到结果与 X 轴对齐。如图 2-10 所示,5 次迭代后的近似角度约为 19.69°。

GUID-20201111-CA0I-STD4-XRJF-GWHSSXDSCXRQ-low.gif图 2-10 CORDIC - 5 次迭代

方程式 1 中的矩阵乘法之后描述了在空间中旋转坐标点的代数过程。

方程式 1. GUID-20201111-CA0I-08CW-KZ1Q-BNCF0JVKSMDH-low.gif
方程式 2. GUID-20201111-CA0I-GGM7-1J2Q-MZD0WVFHSCNL-low.gif
方程式 3. GUID-20201111-CA0I-KCK6-XTDW-6N1NDRGDLR2N-low.gif

如果从结果乘积中分解出 cos(α) 因子,那么我们将得到公式 4 和 5

方程式 4. GUID-20201111-CA0I-4DQJ-XT0S-XGXJ5TRF5QVD-low.gif
方程式 5. GUID-20201111-CA0I-D7KB-9Z7R-K6FP1RJGHQ5J-low.gif

随着算法的进行,我们必须确定旋转的方向。如果我们选择逆时针旋转,结果将产生公式 6 和 7

方程式 6. GUID-20201111-CA0I-QVBR-LS3L-J1LTBZLN6DTK-low.gif
方程式 7. GUID-20201111-CA0I-PWBJ-J0WZ-ZJGQWCQVPVPR-low.gif

请注意,此处唯一的区别是每个公式中的运算是反转的。因此,我们可以通过检查操作符号轻松确定旋转方向。该旋转可以由一个可选值表示,我们将其表示为 d

方程式 8. GUID-20201111-CA0I-JTWM-MHWQ-9R6N3NX6TLNB-low.gif

此时,一些近似值可简化角度计算。如果 cos(α) 被完全移除,检查结果将显示已创建一个新矢量,该矢量旋转了正确的角度但大小大于原始矢量。该因子实际上是一个标量,用于将生成的矢量归一化为循环的每个阶跃的正确大小。标量值由旋转角度决定,可使用预先确定的阶跃大小针对每个阶跃轻松计算。

如果对每个角度转换使用固定次数的迭代,则每个矢量转换的累积乘积将始终产生恒定的最终标量 m。因此,在例程中可以忽略 cos(α) 的值。相反,最终的大小结果可以按 m 缩放一次。假设使用算法的十次迭代(0 至 9),则 m 的结果值如公式方程式 9 所示。

方程式 9. GUID-20201111-CA0I-DKZJ-PZWG-R7HXX7KZT33F-low.gif
方程式 10. GUID-20201111-CA0I-LXSZ-74T8-RHL3MDXG38F5-low.gif

此外,我们可以注意到 tan(α) 接近于 2-n 的值。如果将正切计算替换为乘以 2 的幂,则该算法的实现将变得更加简单。考虑以下值表:

αn [°]

tan(α)

2-n

tan-1(2-n) [°]

45

1

1

45

22.5

0.414

0.5

26.565

11.25

0.199

0.25

14.036

5.625

0.098

0.125

7.125

2.8125

0.049

0.0625

3.576

由于此替换的结果角度大于或等于真正二分搜索中使用的预期阶跃值,因此新的角度阶跃大小仍将能够收敛。虽然可能需要一两次以上的迭代才能达到相同的精度,但我们获得了用固定的向右移位操作替代正切值查找表的好处。

对算法进行这些修改后,我们得到方程式 11方程式 14,可以迭代使用这些公式来确定任何二维矢量的角度和大小。

方程式 11. GUID-20201111-CA0I-NLGH-NCGC-K2XLLTGPFNVD-low.gif
方程式 12. GUID-20201111-CA0I-9PTX-CKTM-59B50WFDVJK7-low.gif
方程式 13. GUID-20201111-CA0I-K0ZG-GMBF-LV5GKTX4XHRT-low.gif
方程式 14. GUID-20201111-CA0I-SZCS-JWSX-D4H8PGW18DSN-low.gif

请注意,该方法仅使用了少数几次循环,为快速计算提供了一种简洁的解决方案。集成了 CORDIC 引擎的器件(例如 TMAG5170)能够快速解析角度计算并将其作为输出提供,而不会对整体转换时序产生任何重大影响。