采用ALS31300和ALS3133霍尔效应集成电路的3D线性或2D角度传感
采用ALS31300和ALS3133霍尔效应集成电路的3D线性或2D角度传感
韦德·布辛和罗伯特·贝特,
雷竞技竞猜下载Allegro微系统有限责任公司
摘要
本应用说明描述了Allegro MicroSystems公司的ALS31300和ALS313 3D磁性线性霍尔效应传感器集成电路(IC)在3D线性传感和2D角度传感应用中的使用。本申请注释中对ALS31300的引用也适用于ALS31313,但ALS31300采用10触点DFN雷竞技竞猜下载封装,而ALS31313采用TSSOP-8封装。雷竞技最新网址
详细示例包括将寄存器内容转换为高斯以用于线性感测,以及组合来自两个轴的数据以计算用于旋转角度感测的角度。其他章节描述了通过I/O接口读取和写入ALS31300上寄存器的过程2C接口,应用程序示意图,以及相关的Arduino示例代码。完整的源代码,包括Arduino.ino草图文件,请参见附录A。Arduino.ino草图文件也可以在Allegro的软件门户。
介绍
ALS31300 3D线性霍尔效应传感器IC为用户提供了准确、低成本的非接触式线性和角度位置传感解决方案。用它的I2ALS31300通过C接口,可以方便地访问单个总线上多个传感器的角度和线性信息(见图1)。
本应用说明中列出的示例使用“Teensy”3.2微控制器(https://www.pjrc.com/teensy/teensy31.html)还有阿杜伊诺(https://www.arduino.cc/)软件环境。虽然本文档的重点是使用Teensy3.2实现,但实践和示例代码直接转换到其他Arduino板。
我2C概述
我2C总线是一种同步的两线串行通信协议,在两个或多个设备之间提供全双工接口。总线指定两个逻辑信号:
- 主机输出的串行时钟线(SCL)。
- 由主设备或从设备输出的串行数据线(SDA)。
下面图1所示的框图说明了I2C总线拓扑。
数据传输
通过I传输数据2C由以下顺序列出的几个步骤组成。
- 启动条件:由SDA线的负边缘定义,由主设备启动,而SCL为高。
- 地址周期:7位从机地址,加1位表示写(0)或读(1),后跟一个确认位。
- 数据周期:读取或写入8位数据,后跟一个确认位。这个循环可以重复多字节的数据传输。写操作的第一个数据字节可以是寄存器地址。有关更多信息,请参阅以下部分。
- 停止条件:由SDA线上的正边缘定义,而SCL为高。
除了表示开始或停止条件外,SDA必须保持稳定,而时钟信号很高。SDA可能只在SCL低时更改状态。在数据传输期间的任何时间发生开始或停止条件是可以接受的。ALS31300将始终通过重置数据传输序列来响应读取或写入请求。
时钟信号SCL由主机产生,而SDA线路根据数据传输的方向起输入或开漏输出的作用。I2C总线的时序总结在图2中的时序图中。这些名称的信号引用和定义可以在ALS31300产品介绍。
我2C总线速度
普通I2C总线速度为100kbps标准模式以及10 kbps低速模式,但也允许任意低的时钟频率。最新修订的I2C协议can主机
更多节点并以更快的速度运行,包括400 kbps快速模式和1 Mbps快速模式增强(Fm+)都由ALS31300支持。请注意,规范概述了额外的3.4 Mbps高速模式ALS31300不支持。
I的实施2C与ALS31300
ALS31300只能作为从I操作2C设备,因此它不能在I设备上启动任何事务2C总线。
ALS31300将始终通过重置数据传输顺序来响应读或写请求。读/写位的状态设置为低(0)表示写入周期,设置为高(1)表示读取周期。主设备监控确认位,以确认从设备(ALS31300)正在响应主设备发送的地址字节。当ALS31300将7位从机地址解码为有效地址时,它会在第九个时钟周期内将SDA拉低。当主设备请求数据写入时,ALS31300在时钟周期内将SDA拉低,跟随数据字节以指示数据已成功接收。在发送地址字节或数据字节之后,主机必须在第九个时钟周期之前释放SDA线路,从而允许进行握手过程。
ALS31300的默认从站地址为110xxxx,其中通过将不同的电压应用于地址引脚ADR0和ADR1来设置四个LSB位。如图11中的示意图所示,已将两个地址引脚设置为地面,如图11所示。有关选择其他I的信息2C从机地址,请参阅ALS31300产品介绍. 当两个引脚都接地时,默认I2C从机地址是96。
写入周期概述
ALS31300上访问寄存器的写入周期如下所示。
- 主启动条件
- 主站发送7位从地址和写入位(0)
- 主机等待ALS31300的确认
- 主机发送8位寄存器地址
- 主机等待ALS31300的确认
- 主机发送31:24位数据
- 主机等待ALS31300的确认
- 主机发送23:16位数据
- 主机等待ALS31300的确认
- 主机发送15:8位数据
- 主机等待ALS31300的确认
- 主机发送7:0位数据
- 主机等待ALS31300的确认
- 主机启动停止条件
我2图3中的时序图进一步说明了C写序列。
客户写访问
在ALS31300中写入任何易失性寄存器或EEPROM之前,必须向设备发送访问码。如果未启用客户访问模式,则不允许写入设备。此规则的唯一例外是睡眠位,无论访问模式如何,都可以写入睡眠位。此外,无论访问模式如何,任何寄存器或EEPROM位置都可以随时读取。
要进入客户访问模式,必须通过I2C接口。该命令包括串行写入操作,其中包含表1中所示的地址和数据值。可以输入代码时的时间限制。输入客户访问模式后,不可能在没有电源的情况下更改访问模式。
表1:客户访问代码
访问模式 | 地址 | 数据 |
客户访问 | 0x35型 | 0x2C413534 |
阅读周期概述
ALS31300上访问寄存器的读取周期如下所示。
- 主启动条件
- 主站发送7位从地址和写入位(0)
- 主机等待ALS31300的确认
- 主机发送8位寄存器地址
- 主机等待ALS31300的确认
- 启动一个启动条件。这一次被称为重启条件
- 主机发送7位从机地址和读取位(1)
- 主机等待ALS31300的确认
- 主机接收31:24位数据
- 主机向ALS31300发送ACK
- 主机接收23:16位的数据
- 主机向ALS31300发送ACK
- 主机接收15:8位的数据
- 主机向ALS31300发送ACK
- 主机接收7:0位的数据
- 主机发送NACK到ALS31300
- 主机启动停止条件
我2C读取序列在图4中的下面的时序图中进一步示出。
图4中的时序图显示了正在传输的单个寄存器位置的全部内容(位31:0)。或者,I2C主站可以选择用ACK替换NACK,允许读取序列继续。这种情况将导致从以下寄存器中传输内容(比特31:24),地址+ 1。然后,主站可以继续确认,或者在任何字节之后发出NOT-ACKNOWLEDGE(NACK)或停止以停止接收数据。
注意,读取只需要初始寄存器地址,这样可以更快地检索数据。但是,当使用单个读取命令时,这将数据检索限制为顺序寄存器。当主机提供不确认位和停止位时,ALS31300停止发送数据。如果要读取非顺序寄存器,则必须发送单独的读取命令。
我2X、Y、Z和温度数据的C读回模式
ALS31300 I2C控制器具有多种模式,方便了重复轮询X、Y、Z和温度数据的过程。这些选项包括单模式、快速环路模式和全环路模式。
单模
对任何寄存器的单个写入或读取命令 - 这是默认模式,最适合设置字段和读取静态寄存器。如果需要,该模式可用于以典型的串行方式读取X,Y,Z和温度数据,但建议快速或全循环读取模式以用于高速数据检索。
快速循环模式
快速循环模式提供X、Y、Z和温度值的连续读取,但仅限于X、Y、Z的高8位和温度的高6位。此模式旨在成为以截断分辨率为代价从IC读取数据的时间效率高的方法。图5中的流程图描述了快速循环模式。
全循环模式
全循环模式提供X、Y、Z和温度数据的连续读取,分辨率为12位。这是推荐的模式,为用户想要一个更高的数据率为X,Y,Z和温度与全分辨率。图6中的流程图描述了全循环模式。
下表2进一步描述了循环模式。
表2:ALS31300循环读取模式
代码(二进制) | 模式 | 说明 |
00 | 单 | 没有循环。与默认I类似2C。 |
01 | 快速循环 | 十、 Y,Z和温度场 循环。X、Y和Z的最大有效位为8;6 温度的MSB是循环的。 |
10 | 全回路 | 十、 Y,Z和温度场 循环。完整的12位分辨率字段 是循环的。 |
11 | 单 | 与代码0相同。 |
要设置读取循环模式,请根据表2将地址0x27处的位3:2设置为所需的代码值。
磁场强度寄存器
磁场强度寄存器包含与ALS31300看到的三个轴中每个轴上的测量磁场成比例的数据。X、Y和Z磁数据的寄存器地址和位字段如表3所示。X、Y和Z轴的方向如图7所示。
必须将每个轴的MSB和LSB串联起来,以解析完整的12位磁场数据。参考附录A,获取各种技术的示例代码,以轮询和连接来自ALS31300的磁数据。
表3:磁场强度寄存器
地址 | 位 | 姓名 | 说明 | R/W公司 |
0x28型 | 31:24 | X轴MSB | 8位信号,与X方向上8位场强成比例。 | 右 |
23:16 | Y轴MSBs | 8位信号,与Y方向上磁场强度的上8位成比例。 | 右 | |
15:8 | Z轴MSBs | 8位信号与Z方向上磁场强度的上8位成比例。 | 右 | |
0x29码 | 19:16 | X轴LSB | 4位信号与X方向上较低的4位场强成比例。 | 右 |
15:12 | Y轴LSB | 4位信号与Y方向上较低的4位场强成比例。 | 右 | |
11:8 | Z轴LSB | 4位信号与Z方向上较低的4位场强成比例。 | 右 |
温度传感器寄存器
ALS31300的温度寄存器如下表5所示。
表4:温度寄存器
地址 | 位 | 姓名 | 说明 | R/W公司 |
0x28型 | 5:0 | 温度 最高有效位 |
6位信号与 温度高6位。 |
右 |
0x29码 | 5:0 | 温度 最低有效位 |
6位信号与 降低6位温度。 |
右 |
计算测量场
本例中,ALS31300的满标度范围为500高斯,灵敏度为4 LSB/高斯。
该过程从MSB和LSB寄存器的完整8字节读取开始,以构造一个12位2的补码有符号值。当组合寄存器时,所有数据必须在单个8字节读取中读取,否则结果将是两个独立样本在时间上的组合。12位数据按表5组合。
表5:MSB和LSB组合数据
钻头 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 三 | 2 | 1 | 0 |
数据 | MSB数据 | LSB数据 |
假设完整的8字节读取返回单轴的以下二进制数据:
最高有效位=1100万欧元
LSB=0110。
组合数据{MSB;LSB}=1100_u0110。十进制等效值=–1018,可通过除以设备灵敏度(4 LSB/高斯)转换为高斯。
高斯=–1018 LSB÷4 LSB⁄G=–254高斯
使用两个轴计算角度
外加磁场的角度可以使用ALS31300两轴的磁场数据和四象限反正切函数来计算。在这个例子中,圆盘磁铁是径向磁化的。图8中的图纸显示了与ALS31300的X、Y和Z轴相比,圆盘磁铁及其磁极的参考方向。在左侧方向上,磁铁围绕Z轴旋转,如白色箭头所示,同时使用X和Y感测磁铁。在右侧方向上,磁铁围绕Y轴旋转,同时使用X和Z通道感测。第三个方向可与绕X轴旋转的磁铁一起使用,并使用Y和Z进行感应。
标准反切线函数,即tan()-1,返回角度值范围从–90°到90°。对于此应用程序,使用四象限反正切函数返回从–180°到180°的角度非常重要。此函数还可以避免被0除的问题。表6列出了四象限反切线函数。
表6:四象限弧Tan函数调用
程序 | 功能 | 说明 |
MATLAB软件 | atan2(Y,X) | 四象限棕褐色-1. 产生弧度。 |
atan2d(Y,X) | 四象限棕褐色-1. 结果以度为单位。 | |
阿杜伊诺 | atan2(Y,X) | 四象限棕褐色-1.返回双倍。 |
atan2f(Y,X) | 四象限棕褐色-1. 返回浮点值。 | |
C级# | Atan2(Y,X) | 四象限棕褐色-1.返回双倍。 |
有关计算XY、XZ和YZ轴组合角度的完整Arduino源代码,请参阅附录A。
转换过程可以概括为3个主要步骤,下面列出了这些步骤,并在图9的范围图中进行了标识。“单一”模式(表2)用于简化此示例。
- 读取请求由主机发起。
- 从机传输8字节的数据。
- 将磁矢量数据转换成角度值。
读取请求(框1)包括对设备的写入,指示将读取哪些寄存器。设备用8个字节的数据(X、Y、Z的8 MSB和6 MSB的温度,然后是X、Y、Z的4 LSB和6 MSB的温度)响应(框2)。
角度计算时间
使用ALS31300完成角度计算的总时间取决于具体应用,但主要取决于用户微控制器的处理能力和速度。其他因素包括ALS31300的环路模式(表2)和I2C接口。本文档中的定时示例假设一个运行在72MHz的Teensy3.2微控制器,并配置I2C通信速度为1 MHz(快速模式+)。请注意,Teensy 3.2快速模式+I2C模式在720kHz左右工作。
图9中的示例是从ALS31300读取数据的简单方法,但它不是最快的。在第一次请求之后,可以消除启动读取的开销(图9中的框1)
通过在ALS31300上使用循环模式。
图10中的范围图显示了ALS31300设置为全循环模式时的角度转换流程。框1、2和3仍然对应于图9中的相同步骤。
请注意,框1只出现一次,但比图9中的无循环示例略长。在全循环模式下,读取请求包括对设备的写入,指示将读取哪个寄存器,然后进行读/写以设置全循环模式。有关如何实现无循环、快速循环和全循环读取模式,请参阅附录A中的完整源代码。
框3中的重复暂停显示了Teensy 3.2微控制器执行atan2f(x,y)功能所需的时间。在Teensy 3.2上,72 MHz下atan2f(x,y)函数的平均持续时间为30μs,而8个数据字节的传输时间为120μs。在全循环模式下,使用Teensy 3.2和ALS31300,可以每150μs计算一个新的角度值。
应用示意图
请参阅图11中显示本文档中ALS31300应用示意图的图像。
Teensy 3.2微控制器的支持电路如图12所示。
请参阅图11和图12中标记为“SDA”和“SCL”的网络,说明两个示意图之间的这些连接。注意,Teensy micro上SDA和SCL的引脚位置是用户可选择的,但必须在软件中声明。请参阅附录A中声明SDA和SCL引脚的源代码。
结论
ALS31300是一款多功能、微功耗的3D霍尔效应传感器IC。该IC可用于多轴线性位置或角度位置传感应用,并可配置为在高分辨率(12位)或中分辨率(8位)模式下运行。我雷竞技最新网址2C总线是高度可配置的,可以在1 Mbps到<10 kbps的总线速度下工作,上拉电压范围为1.8到3.3 V。IC还包括一个温度传感器,可以通过I2C接口。
与此应用说明一起使用的Arduino.ino草图文件位于Allegro的软件门户。注册“ALS31300”设备以查看源代码。
ALS31300数据表可在//www.wasanxing.com/en/Products/Magnetic-Linear-And-Angular-Position-Sensor-ICs/Linear-Position-Sensor-ICs/ALS31300.aspx.
ALS31313数据表可在//www.wasanxing.com/en/Products/Magnetic-Linear-And-Angular-Position-Sensor-ICs/Linear-Position-Sensor-ICs/ALS31313.aspx.
附录A:ALS31300和Teensy 3.2的完整Arduino源代码
下面的代码片段显示了与此应用程序一起使用的完整Arduino源代码。示例函数包括2C初始化,以单循环、快速循环和全循环模式从ALS31300读取数据,使用I2利用ALS31300的磁场数据计算角度和高斯。
完整的.ino Arduino草图可以在Allegro Microsystem的软件门户上的ALS31300设备选项卡下找到。要注册Allegro的软件门户并查看ALS31300源代码,请访问https://registration.allegromicro.com/login。
附录B:小皮诺传单
下面的皮诺特传单船与每个小3.2。PJRS还提供了以下链接:https://www.pjrc.com/teensy/card7a\u rev1.pdf。
本文件中包含的信息不构成Allegro就本文件主题向客户作出的任何陈述、保证、保证、担保或诱因。所提供的信息不能保证基于此信息的过程是可靠的,或者Allegro已经探索了所有可能的故障模式。客户有责任对最终产品进行充分的鉴定测试,以确保其可靠并满足所有设计要求。