3D用ALS31300和ALS31313霍尔效应IC的3D线性或2D角度感应

3D用ALS31300和ALS31313霍尔效应IC的3D线性或2D角度感应

Download PDF Version

由Wade Bussing和Robert Bate,
Allegro MicroSystems, LLC

Abstract

This application note describes the use of the ALS31300 and ALS31313 3D Magnetic Linear Hall-Effect Sensor integrated circuits (ICs) from Allegro MicroSystems for 3D linear sensing and 2D angle sensing applications. References throughout this application note to the ALS31300 also apply for the ALS31313, except that the ALS31300 is provided in a 10-contact DFN package, and the ALS31313 is provided in a TSSOP-8 package.

详细示例包括将寄存器内容转换为高斯进行线性传感,并将来自两个轴的数据组合以计算旋转角度感测的角度。其他部分描述了通过i的读取和写入寄存器的过程2C接口,应用程序原理图和关联的Arduino示例代码。有关完整源代码的附录A,包括Arduino .INO草图文件。还可以使用Arduino .ino素描文件Allegro’s Software Portal.

介绍

ALS31300 3D线性霍尔效应传感器IC为用户提供了精确的低成本解决方案,用于非接触线性和角度位置感测。及者我2C接口,ALS31300可方便地访问单个总线上多个传感器的角度和线性信息(参见图1)。

Examples listed in this application note make use of the “Teensy” 3.2 microcontroller (https://www.pjrc.com/teensy/teensy31.html.)和Arduino(https://www.arduino.cc/)软件环境。虽然本文档专注于使用Teensy 3.2的实现,但实践和示例代码直接转换为其他Arduino板。

一世2C概述

2C总线是一个同步的双线串行通信协议,提供两个或多个设备之间的全双工接口。总线指定两个逻辑信号:

  1. 串行时钟线(SCL)由主设备输出。
  2. 由主站或从站输出的串行数据线(SDA)。

图1中如下所示的框图说明了I2C总线拓扑。

图1:显示主设备和从设备的I2C总线图
图1:我2C总线图显示主设备和从设备

数据传输

数据传输到i上2C由下面序列中概述的几个步骤组成。

  1. 启动条件:由SDA线的负边缘定义,由主设备发起,而SCL高。
  2. 地址周期:7位从地址,加1位,指示写入(0)或读取(1),然后是确认位。
  3. 数据循环:读取或写入8位数据,然后是确认位。可以针对多个字节的数据传输重复该循环。写入上的第一个数据字节可能是寄存器地址。有关详细信息,请参阅以下部分。
  4. 停止条件:由SDA线上的正边缘定义,而SCL高。

除了表示开始或停止条件外,SDA必须保持稳定,而时钟信号很高。SDA可能只在SCL低时更改状态。在数据传输期间的任何时间发生开始或停止条件是可以接受的。ALS31300将始终通过重置数据传输序列来响应读取或写入请求。

时钟信号SCL由主设备生成,而SDA线根据数据传输的方向,SDA线用作输入或开漏输出。I2C总线的定时总结在图2中的时序图中。可以在这些名称的信号引用和定义中找到ALS31300数据表。

图2:I2C输入和输出时序图
Figure 2: I2C输入和输出时序图

一世2C总线速度

常见的I.2C总线速度为100 kbps标准模式and the 10 kbps低速模式,但也允许任意低时钟频率。最近的修订我2C协议可以托管
更多节点并以更快的速度运行,包括400 kbps快速模式和1 Mbps.快速模式加(FM +),所有人都支持ALS31300。注意规范概述了另外3.4 Mbps高速模式ALS31300不支持。

实施I.2c用als31300

The ALS31300 may only operate as a Slave I2C设备,因此它无法启动I上的任何交易2C bus.

ALS31300将始终通过重置数据传输序列来响应读取或写入请求。读/写位的状态设置为低(0)以指示写周期并设置高(1)以指示读周期。用于确认从设备(ALS31300)的确认位的主监视器正在响应主站发送的地址字节。当ALS31300对7位从地址进行有效地解码时,它通过在第九时钟周期中拉动SDA低电平来响应。当主设备请求数据写入时,ALS31300在时钟周期期间将SDA拉低,按数据字节以指示已成功接收到数据。在发送地址字节或数据字节之后,主站必须在第九个时钟周期之前释放SDA线,允许发生握手过程。

ALS31300的默认从站地址为110xxxx,其中通过将不同的电压应用于地址引脚ADR0和ADR1来设置四个LSB位。如图11中的示意图所示,已将两个地址引脚设置为地面,如图11所示。有关选择其他I的信息2C Slave addresses, refer to theALS31300数据表。With both pins grounded, the default I2C Slave address is 96.

Write Cycle Overview

The write cycle to access registers on the ALS31300 are outlined in the sequence below.

  1. Master initiates Start Condition
  2. 主站发送7位从地址和写入位(0)
  3. Master等待ACK来自ALS31300
  4. 主站发送8位寄存器地址
  5. Master等待ACK来自ALS31300
  6. Master sends 31:24 bits of data
  7. Master等待ACK来自ALS31300
  8. 主服务器发送23:16位数据
  9. Master等待ACK来自ALS31300
  10. Master sends 15:8 bits of data
  11. Master等待ACK来自ALS31300
  12. 主服务器发送7:0位数据
  13. Master等待ACK来自ALS31300
  14. Master initiates Stop Condition

2C write sequence is further illustrated in the timing diagrams below in Figure 3.

图3:I2C写时序图
图3:我2C写时序图

客户写访问权限

必须在编写ALS31300中的任何易失性寄存器或EEPROM之前将访问代码发送到设备。如果未启用客户访问模式,则允许对设备写入。此规则的唯一例外是睡眠位,无论访问模式如何,都可以写入。此外,无论访问模式如何,都可以随时读取任何寄存器或EEPROM位置。

要输入客户访问模式,必须通过i发送访问命令2C接口。该命令包括串行写入操作,其中包含表1中所示的地址和数据值。可以输入代码时的时间限制。输入客户访问模式后,不可能在没有电源的情况下更改访问模式。

表1:客户访问代码

访问模式 地址 数据
Customer Access 0x35 0.x2C413534

读取周期概述

在ALS31300上访问寄存器的读取周期在下面的顺序中概述。

  1. Master initiates Start Condition
  2. 主站发送7位从地址和写入位(0)
  3. Master等待ACK来自ALS31300
  4. 主站发送8位寄存器地址
  5. Master等待ACK来自ALS31300
  6. 启动条件。这次它被称为重启条件
  7. 主站发送7位从地址和读取位(1)
  8. Master等待ACK来自ALS31300
  9. Master收到31:24数据
  10. 主人向ALS31300发送ACK
  11. 主人收到23:16位数据
  12. 主人向ALS31300发送ACK
  13. 主机收到15:8位数据
  14. 主人向ALS31300发送ACK
  15. 主机收到7:0位数据
  16. 主人向ALS31300发送NACK
  17. Master initiates Stop Condition

2C读取序列在图4中的下面的时序图中进一步示出。

图4:I2C读取时序图
图4:我2C读取时序图

图4中的时序图示出了正在发送的单个寄存器位置的整个内容(位31:0)。可选地,我2C主站可以选择用ACK替换NACK,允许读取序列继续。这种情况将导致从以下寄存器中传输内容(比特31:24),地址+ 1。然后,主站可以继续确认,或者在任何字节之后发出NOT-ACKNOWLEDGE(NACK)或停止以停止接收数据。

请注意,读取只需要初始寄存器地址,允许更快的数据检索。但是,当使用单个读取命令时,这将数据限制到顺序寄存器的数据。当主设备提供不安全的位和停止位时,ALS31300停止发送数据。如果要读取不顺序寄存器,则必须发送单独的读取命令。

一世2用于X,Y,Z和温度数据的C回读模式

Als31300 I.2C控制器具有多种模式,可以在方便的方便地轮询X,Y,Z和温度数据的过程。这些选项包括单模,快循环模式和全循环模式。

单身的模式

对任何寄存器的单个写入或读取命令 - 这是默认模式,最适合设置字段和读取静态寄存器。如果需要,该模式可用于以典型的串行方式读取X,Y,Z和温度数据,但建议快速或全循环读取模式以用于高速数据检索。

快循环模式

快速循环模式提供X,Y,Z和温度值的连续读数,但仅限于X,Y,Z和高温的高8位。该模式旨在以截断分辨率为代价是从IC读取数据的时效方式。图5中的流程图描绘了快速循环模式。

图5:快速循环模式
图5:快速循环模式

全循环模式

全循环模式提供完整,12位分辨率的X,Y,Z和温度数据的连续读取。这是建议的用户,用于X,Y,Z和温度的更高数据速率,具有全分辨率。图6中的流程图描绘了全循环模式。

图6:全循环模式
图6:全循环模式

下面在表2中进一步描述循环模式。

表2:ALS31300循环读取模式

代码(二进制) 模式 Description
00 单身的 没有循环。类似于默认的i2C。
01. 快循环 x,y,z和温度场是
环状。8 MSBs for x,y和z;6.
MSB用于温度循环。
10. 全循环 x,y,z和温度场是
环状。完整,12位分辨率字段
are looped.
11. 单身的 Same as code 0.

要设置读取环路模式,请在地址0x27处设置位3:2到每个表2的所需代码值。

磁场强度寄存器

Figure 7: Magnetic Axes of DFN Packages (not to scale)
图7:ALS31300 DFN封装的磁轴(左)
and ALS31313 TSSOP Package (right) (not to scale)

磁场强度寄存器包含与ALS31300所示的三个轴中的每一个中的测量磁场成比例的数据。表3中描述了X,Y和Z磁性数据的寄存器地址和比特字段。图7中定义了X,Y和Z轴的方向。

The MSBs and LSBs of each axis must be concatenated to resolve full 12-bit magnetic field data. Refer to Appendix A for example code of various techniques to poll and concatenate the magnetic data from ALS31300.

表3:磁场强度寄存器

地址 比特 名称 Description R / W.
0x28 31:24 X轴MSBS. 8位信号与X方向上的场强的上8位成比例。 R.
23.:16 Y轴MSBS. 8位信号与y方向上的现场强度的上部8位成比例。 R.
15:8 Z轴MSBS. 8.bit signal proportional to upper 8 bits of field strength in Z direction. R.
0x29. 19:16 X轴LSBS. 4位信号与X方向下的低4位比例。 R.
15:12 Y轴LSBS. 4位信号与y方向上的低4位比例。 R.
11:8 Z轴LSBS. 4位信号与Z方向上的低4位比例。 R.

温度传感器寄存器

下面在表5中描述了ALS31300的温度寄存器。

Table 4: Temperature Registers

地址 比特 名称 Description R / W.
0x28 5:0 温度
MSBS.
6位信号与
高温的6位。
R.
0x29. 5:0 温度
LSBS.
6位信号与
低6位温度。
R.

计算测量领域

对于该示例,ALS31300的全尺度范围为500高斯,具有4 LSB / GAUS的灵敏度。

该过程从MSB和LSB寄存器读取的完整8字节读取,以构造12位,2的补码符号值。在组合寄存器时必须在单个8个字节读取中读取所有数据,或者结果将是两个单独的样本的组合。每表5组合12位数据。

表5:MSB和LSB组合数据

少量 11. 10. 9. 8. 7. 6. 5. 4. 3. 2 1 0.
数据 MSB数据 LSB数据

Assume a full 8 byte read returns the following binary data for a single axis:

MSB = 1100_0000
lsb = 0110。

组合数据{MSB;lsb} = 1100_0000_0110。十进制等效物= -1018,可以通过除以设备灵敏度(4 LSB / Gauss)来转换为高斯。

高斯= -1018 LSB÷4lsb/g = -254高斯

Calculating Angle Using Two Axes

可以使用来自ALS31300的两个轴和四象限弧形切线功能的磁数据来计算施加的场的角度。对于该示例,盘磁体直径磁化。图8中的附图示出了与ALS31300的X,Y和Z轴相比的跳法磁体及其杆的参考方向。在左取向方面,磁体围绕Z轴旋转,如白色箭头所示,同时感应X和Y的磁性。在右侧的方向上,磁体围绕Y轴旋转,同时使用x和z。频道感觉。第三取向可以与围绕X轴旋转并用Y和Z感测的磁铁一起使用。

图8:ALS31300的直径磁体和信号轴
图8:ALS31300的直径磁体和信号轴(top) and ALS31313 (bottom)

标准逆正相函数,即Tan()-1,返回角值从-90°- 90°。佛r this application, it is important to use a four quadrant arc tangent function to return an angle from –180° to 180°. This function also avoids issues with dividing by 0. Four quadrant inverse tangent functions are listed in Table 6.

表6:四个象限弧形灯函数调用

程序 功能 Description
MATLAB atan2(y,x) 4象限晒黑-1。导致弧度。
atan2d(y,x) 4象限晒黑-1。导致度数。
arduino. atan2(y,x) 4象限晒黑-1。返回双倍。
atan2f(y,x) 4象限晒黑-1。返回浮动。
C# Atan2(Y,X) 4象限晒黑-1。返回双倍。

有关计算XY,XZ和YZ轴组合的角度,请参阅“全Arduino源代码附录A.

The conversion process can be summarized into 3 major steps, which are listed below and identified on the scope plot in Figure 9. “Single” mode (Table 2) is used to simplify this example.

  1. R.ead request is initiated by the Master.
  2. 从奴隶传输8字节的数据。
  3. Conversion of magnetic vector data to an angle value.

读取请求(框1)包括写入指示将读取的设备的设备组成。设备响应(框2),具有8个字节的数据,(8毫秒的X,Y,Z和6 MSB温度,然后是4LSB的X,Y,Z和6 MSB的温度)。

图9:i2c在无循环模式下读取8个数据字节。寄存器0x28和0x29。
图9:我2C在无循环模式下读取8个数据字节。
寄存器0x28和0x29。

角度计算定时

The total time to complete an angle calculation using the ALS31300 will be application specific, but predominantly dominated by the processing abilities and speed of the user’s microcontroller. Other factors include the loop mode of the ALS31300 (Table 2) and communication frequency of the I2C接口。本文档中的定时示例假设在72 MHz上运行的青少年3.2微控制器,并配置了i2C通信速度为1 MHz(快速模式+)。注意Teensy 3.2快速模式+ i2C模式运行720 kHz。

图9中的示例是从ALS31300读取数据的简单方法,但它不是最快的。在第一个请求之后可以消除启动读取的开销(图9中的框1)
通过在ALS31300上使用循环模式。

The scope plot in Figure 10 shows the angle conversion flow with ALS31300 set in Full Loop Mode. The boxes 1, 2, and 3 still correspond to the same steps from Figure 9.

图10:I2C以全循环模式读取8个数据字节。寄存器0x28和0x29。
图10:我2C以全循环模式读取8个数据字节。
寄存器0x28和0x29。

请注意,框1只发生一次,但略长于图9中的No循环示例。在全循环模式下,读取请求由写入指示将读取哪个寄存器的设备,然后读取/写入设置全循环模式。请参阅附录A中的完整源代码如何实现任何循环,快速循环和全循环读取模式。

The repeated pause in box 3 shows the time it takes Teensy 3.2 microcontroller to perform the atan2f(x,y) function. The average duration of the atan2f(x,y) function on the Teensy 3.2 at 72 MHz is 30 μs, while the transmit time of 8 data bytes is 120 μs. Using the Teensy 3.2 and ALS31300 in Full Loop Mode, a fresh angle value can be calculated every 150 μs.

Application Schematics

请参阅图11中的图像,示出了本文档中用于ALS31300的应用程序示意图。

图11:ALS31300的应用原理图
图11:ALS31300的应用原理图

用于青铜3.2微控制器的支撑电路如图12中的示意图所示。

图12:青少年3.2应用原理图
图12:青少年3.2应用原理图

请参阅图11中标记为“SDA”和“SCL”的网,图12表示两个原理图之间的这些连接。注意,Teensy Micro上的SDA和SCL的引脚位置是用户可选择的,但必须以软件声明。请参阅附录A中的源代码,其中声明了SDA和SCL引脚。

结论

ALS31300是一个高度通用的微功率3D霍尔效应传感器IC。该IC可用于多轴线性位置或角位置感测应用,并且可以配置为高分辨率(12位)或中分辨率(8位)模式的操作。亚博尊贵会员我2C总线具有高度可配置,可以以1 Mbps的总线速度下降到<10 kbps,上拉电压范围为1.8至3.3 V. IC还包括可在I读取的温度传感器2C接口。

The Arduino .ino sketch file used with this application note is available onAllegro’s Software Portal.注册“ALS31300”设备以查看源代码。

ALS31300数据表可用//www.wangzuanquan.com/en/products/magnetic-linear-and-angular- position-sensor-ics/linear-position-sensor-ics/als31300.aspx.
ALS31313数据表可用//www.wangzuanquan.com/en/products/magnetic-linear-and-angular- position- sensor-ics/linear-position-sensor-ics/als31313.aspx.

附录 - 答:ALS31300和Teensy 3.2的全arduino源代码

下面的代码段显示了与此应用程序一起使用的完整Arduino源代码。示例功能包括我2C初始化,从单,快速和全循环模式读取ALS31300,使用i将数据写入ALS313002C and calculating angle and gauss using magnetic data from the ALS31300.

查看示例源代码

The full .ino Arduino sketch is available on Allegro Microsystem’s Software portal under the ALS31300 device tab. To register with Allegro’s software portal and view the ALS31300 source code, visithttps://registration.allegromicro.com/login。

附录B:青少年引脚传单

每个Teensy 3.2的船舶下面的引脚传单。它也可从以下链接的PJR获取:https://www.pjrc.com/teensy/card7a_rev1.pdf。

图13:青少年的引脚传单3.2
图13:青少年的引脚传单3.2

The information contained in this document does not constitute any representation, warranty, assurance, guaranty, or inducement by Allegro to the customer with respect to the subject matter of this document. The information being provided does not guarantee that a process based on this information will be reliable, or that Allegro has explored all of the possible failure modes. It is the customer’s responsibility to do sufficient qualification testing of the final product to insure that it is reliable and meets all design requirements.