通过芯片 EEPROM 和 Allegro 应用软件对 A1335 输出信号进行谐波补偿
通过芯片 EEPROM 和 Allegro 应用软件对 A1335 输出信号进行谐波补偿
作者: Bill Wilkinson,
Allegro MicroSystems, LLC
简介
本应用说明将提供使用A1335 角度传感器集成电路 (IC)配置谐波输出信号线性化的逐步示例。本示例将使用 Allegro A1335 示例编程器软件,改软件兼容ASEK-20或 ASEK-21 编程器套件。对于更高级的生产层编程,Allegro 提供 DLL,允许将本示例中显示的功能内置到客户定制的软件和硬件中。对于更高级的生产层编程,Allegro 提供 DLL,允许将本示例中显示的功能内置到客户定制的软件和硬件中。
套件内容物及说明
A1335 IC 评估使用的必备硬件由 ASEK-1335-T-KIT 提供,套件中的内容如图 1 和图 2 所示。
A1335 次级板和三级板通过 ASEK-20 编程器提供一种连接传感器 IC 的简单而便捷的方式。三级板弹簧动作接触销允许对传感器进行免焊测试。使用定制硬件进行磁性评估时,Molex 连接器设置在子板上,提高连接的灵活性。
按照评估套件快速指南中的说明连接硬件。
图 1:图 1: ASEK-20-T-KIT 内容 |
图 2:图 2: ASEK-1335-SUBKIT-T 内容 |
软件
获得评估 GUI
完成硬件设置后,应下载连接 ASEK-20 板所需的 Allegro 软件。要下载软件,请先到 Allegro 软件注册门户 (https://registration.allegromicro.com/login) 创建账户,并注册 A1335 IC。
注册完成后,可以从仪表板下载 A1335 评估 GUI 软件。
设置软件
下载并解压 Allegro 软件后,双击 Allegro A1335 示例编程器可执行文件。然后会出现示例图形用户界面 (GUI),并会选中演示选项卡。此选项卡将显示传感器角度、任意锁定的错误(例如上电复位或低磁场标志)以及传感器上的施加的磁场强度事件。但是在与传感器通信前,必须选择 COM 端口和协议,而且
设备必须通电。
要选择正确的 COM 端口和通信工具,单击左上方的“设置”菜单,并选择“通信…”,接着会出现“通信设置”窗口。
选择 ASEK-20 编程器对应的 COM 端口。如果不清楚 COM 端口编号,则观察下拉菜单中列出的 COM 端口,从计算机上拔下 ASEK-20 USB 线缆,按下刷新按钮,从列表中消失的端口就是对应的 ASEK-20 COM 端口。同理,在插入 ASEK-20 时出现的 COM 端口就是正确的端口地址。
如果 COM 端口正确,则底部的状态栏将更新为“活跃”并报告 ASEK-20 软件版本(在本示例中,版本为 127.6.3.1)。选择所需的通信协议和频率,并退出窗口。选择频率时,考虑可能会添加到 IC 的通信引脚上的电阻性和电容性负载。外部过滤/载荷电路(包括长线)可以导致通信信号降级,并造成通信问题。
单击“上电”按钮。A1335 应马上通电,且电压和电流应如最右侧面板所示,分别为 5 V 以上和 26.92 mA 以上。
磁体设置
用目标磁体将传感器调整至目标状态。如“高级片上线性化”应用说明中所述,推荐的磁场强度应在300和1000 G 之间;但是低于 300 G 的小偏差,不会对性能造成很大影响。尽管谐波线性化是针对高精度离轴性能而开发的,但是也可以用于最大程度上降低因为很多传统的轴上应用中出现的机械偏移误差造成的非线性化。
一定要注意,CVH 感应元件并不在 A1335(单晶片和双晶片型)封装的中心位置。例如,当单晶片传感器安装在在离轴应用(图 6 最左侧的图示)中中时,传感器 IC 的引脚 1 一侧应背对磁体。这就可以使 CVH 尽量接近目标磁体。
原始数据记录
当 A1335 与目标磁体正确对准时,可以测量原始(或线性化前)的性能。单击“线性化”选项卡,可以从下拉菜单中选择补偿类型(谐波或分段)总体上讲,谐波线性化可以更好地补偿传感器安装偏心率导致正弦偏差,将作为本示例中所示的方法。
样本点的数量
为了量化传感器传输功能上叠加的谐波偏差,必须测量整个磁体旋转的输出。旋转过程中所取的测量点的数量可以通过线性化选项卡左上角的测试框选择。样本点的最小数量可以为 8;但是建议最少取 16 个样本,因为这样可以取第七次谐波。从以往的经验来看,谐波 1、2 和 4 是最终误差的主要因素。样本数量可以在 2048 以内自由选择;但是,如果数量不是 2 的幂数 (16、32、64 等),可以在执行 FFT 前采用插补法计算 2 的幂数的长度阵列。这一操作可以在按下“计算”按钮后在 GUI 内自动执行。
在使用 Allegro A1335 示例编程器 GUI 时,假设每个样本点都均匀分布在磁体旋转路径上。为了辅助获取数据,预计每个采样点的编码器位置都在最左侧表的左侧一栏中。分布不均匀的数据也可以用于
线性化;但是,这就需要额外的软件后处理,而且必须以文本或 CSV 文件的形式加载。关于所需格式的更多具体信息,请参阅“编程谐波线性化”应用说明。
记录数据
要开始原始角度数据采样,将磁体定位到所需的开始位置;开始位置不一定是(通常不是)对应传感器 IC 的零位。定位后,确保对应“编码器 0.000”的数据输入行翼蓝色突出显示(如图 9 所示);如果没有选中,则使用鼠标选中这一行。单击“读取角度”按钮,轮询传感器 IC 在这一磁性位置的输出。
角度值将定位到对应的编码器值附近。此时,下一个编码器位置行将以蓝色突出显示。将磁体移动到这一位置并单击“读取角度”。重复这一操作,直到旋转完全完成,且所有行已经写满。
可以使用“保存角度…”按钮保存数据。保存后,原始数据将在稍后加载(使用“加载角度…”按钮),无需重复测量角度。
计算并选择谐波分量
所有样本都完成取样(并使用“读取角度…”按钮输入)后,通过单击“计算”按钮计算谐波偏差分量。振幅(单位为度)和观察到的所有谐波的相位在最右侧的表中显示。补偿应用的谐波通过最左侧一栏的复选框选择;默认情况下,选择振幅大于 0.3° 的前八个谐波分量。在选择更大的谐波数时,IC 的测试(EEPROM 编程)次数将增加。应由用户选择对输出精度和谐波数量进行优化,取决于具体应用。
单击栏的标题,表会按照升序或降序排序。这样可以轻松识别出偏差最大的因素。
A1335 最多可以对 11 个不同的谐波分量进行补偿(但是,超过 8 个谐波时,会禁用短行程功能)。在取 17 个或更多样本的情况下,可以选择的谐波分量数量要比寄存器更多。要对更高的谐波次数进行补偿,可能会跳过 3 个连续谐波,即可以选择谐波次数 1、2 和 6,忽略 3、4 和 5,如图 12 所示。
A1335 编程
按下“写入到设备”按钮,选择的谐波系数将会编入 EEPROM 程序。这一按钮会解锁传感器,进入怠速模式,将谐波系数传输到内存,促使 VCC写入 EEPROM,重新启动传感器,从而使 EEPROM 正确加载到 SRAM 中。
在原型设计中,使用挥发性内存比非挥发性 EEPROM 更容易进行试验,其中潜在的错误步骤的影响更大,而且更难纠正。在这些情况下,不建议在谐波线性化后重复启动传感器,因为这样会删除在挥发性内存中所做的配置。为了避免这一问题,如果在单击“写入到设备”按钮时按下 CTRL 按钮,不要重复启动。相反,选择的系数会写入到
EEPROM 和 SRAM。通过将数值写入到 SRAM,系数会立即发生作用,无需重新启动。
验证补偿
编程的 EEPROM 系数加载到 SRAM 中后,传感器将开始应用谐波补偿。这一补偿可以通过旋转目标磁体转一整圈并观察输出表现来进行验证。输出应以呈直线增长,从指定的启动位置经过 360 度,然后返回初始位置,如图 13 所示。
设置零位(零角度位置)
线末端线性化后,此时可以根据传感器报告的读数对零角度位置进行最后调整。为了执行这一操作,将目标磁体移动到所需的零角度位置,接着在 A1335 GUI 的演示选项卡上单击“零角度”按钮。这样就可以记录当前的角度,将其写入到 EEPROM 中的 ZERO_OFFSET 字段 (0x306, 位 11:0)。从信号路径末端的补充角度值中减去这一值,则寄存器中存储的数值就成为得到 0° 输出的值。由于数值时在数字信号路径内补偿完毕以后才减去的,所以必须在谐波(或分段)线性化完成后才可以设置这一数值。0 50 100 150 200 250 300 350
常见问题和普通问题
使用谐波线性化只能使性能更差。发生了什么?
这很可能是因为谐波系数内的相位偏差,因此校正没有与偏差分量对准,而且有些情况下并没有消除偏差,而是使偏差得到放大。如果在获取用于计算系数的原始数据前设置 EEPROM 中的 ZERO_OFFSET 字段 (0x306, 位 11:0) 时,最容易发生这种问题。
只有在不使用提供的 A1335 GUI 记录数据时会出现这种情况,因为 GUI 会将 SRAM 内对应的 ZERO_OFFSET 字段 (0x06, 位 15:0,左侧对准) 设置为零。
如果出现较大的线性化后角度偏差,而且记录的数据在 GUI 环境 (Allegro DLL 或第三方采样方案) 以外,则确保 ZERO_OFFSET 字段设置为 0,并重新获取原始角度数据。
对线性化后的零角度位置进行编程时遇到问题
最大的可能是因为 EEPROM 内的 ZERO_OFFSET 字段内存在先前的数值。
如上所述(参见设置零位置部分),在传感器输出前的补偿角度中减去 ZERO_OFFSET 字段内的值(见图 14)。因此,如果在完成谐波线性化前对零位置进行编程,则数值不正确(注意图 13 中线性化后发生变化的第一个点),而且所需的零位置不正确。
要校正数值,将 ZERO_OFFSET 字段复位为零。可以从 GUI 中的 “EEPROM” 选项卡中执行。接着,在将目标磁体移动到所需的零位置后,单击“演示”选项卡上的“零角度”按钮,对正确的数值进行编程。
离轴操作中出现高噪音。
噪音很大程度上取决于磁场强度。名义上讲,在 900 G 和室温条件下,A1335 测量的角度值变化在 ±0.17° 以内。由于离轴安装固有的强度变化很大,因而会有部分磁性旋转可能出现较大的噪音;换言之,由于不同位置磁场强度的变化,噪音水平会根据位置而发生变化。
为了缓解这些效应,有必要最大程度上提高传感器感应磁场强度,因为这样可以确立较低的基线噪音水平。可以通过确保目标磁体有足够的强度 (即 300 G 或传感器测量的更大值)并最大程度上降低
CVH 元件和磁体之间的气隙来实现。除了与磁体相关的参数外,A1335 可以配置为对多个传感器数值进行求和或取平均值,从而提高低刷新率情况下系统的有效分辨率。取平均值时的样本数量使用 EEPROM 中的 ORATE 字段 (0x308, 位23:21) 进行配置。更多关于 ORATE 配置的详细信息,请参阅 A1335 编程手册。
谐波线性化不足以提高传感器精度。
谐波补偿可以大大提高精度,将偏差从高达 ±40° 降低到 1°。改进水平取决于应用的谐波数量,应用的谐波数量取决于原始样本的取样数量。Allegro 建议至少使用 16 个样本,从而可以计算高达第七个谐波偏差。如果在补偿后得到的精度仍然不足,还可以对偏差采用更高次数的谐波。应取更大数量的初始样本;这种情况下,建议的样本大小为 64;超过这一数值后的益处有限。
本文中所含的信息不构成 Allegro 就本文主题而对客户做出的任何表示、担保、确保、保证或诱导。本文所提供的信息并不保证基于此信息的流程的可靠性,亦不保证 Allegro 已探究了所有可能出现的故障模式。客户负责对最终产品进行充分的验证测试,以确保该产品是可靠的,并且符合所有设计要求。