3D用ALS31300和ALS31313霍尔效应IC的3D线性或2D角度感应
3D用ALS31300和ALS31313霍尔效应IC的3D线性或2D角度感应
由Wade Bussing和Robert Bate,
亚博棋牌游戏快板微系统公司有限责任公司
摘要
本应用笔记描述了Allegro MicroSystems公司的ALS31300和ALS31313 3D磁性线性霍尔效应传感器集成电路(ic)在3D线性传感和2D角度传感应用中的使用。亚博棋牌游戏亚博尊贵会员本应用说明中对ALS31300的引用也适用于ALS31313,除了ALS31300采用10-触点DFN封装,ALS31313采用TSSOP-8封装。
详细示例包括将寄存器内容转换为高斯进行线性传感,并将来自两个轴的数据组合以计算旋转角度感测的角度。其他部分描述了通过i的读取和写入寄存器的过程2C接口,应用程序原理图和关联的Arduino示例代码。有关完整源代码的附录A,包括Arduino .INO草图文件。还可以使用Arduino .ino素描文件快板的软件门户。
介绍
ALS31300 3D线性霍尔效应传感器IC为用户提供精确、低成本的非接触线性和角度位置传感解决方案。与我2ALS31300提供了方便的访问角度和线性信息的多个传感器在一个单一总线(见图1)。
本应用附注中列出的例子使用了“Teensy”3.2微控制器(https://www.pjrc.com/teensy/teensy31.html.)及Arduino (https://www.arduino.cc/)软件环境。虽然本文档侧重于使用tenensy 3.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线根据数据传输的方向,SDA线用作输入或开漏输出。I2C总线的定时总结在图2中的时序图中。可以在这些名称的信号引用和定义中找到ALS31300数据表。
我2C总线速度
普通的我2C总线速度为100 kbps标准模式还有10kbps低速模式,但也允许任意低时钟频率。最近的修订我2C协议可以托管
更多节点并以更快的速度运行,包括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,其中四个LSB位通过对地址引脚ADR0和ADR1施加不同的电压来设置。如图11中的原理图所示,两个地址引脚都被设置为接地。有关选择其他I2C从服务器地址,请参考ALS31300数据表.两个引脚都接地后,默认的I2C Slave地址为96。
写循环概述
访问ALS31300上寄存器的写周期概述如下。
- 启动条件
- Master发送7位的从地址和写位(0)
- Master等待ACK来自ALS31300
- 主站发送8位寄存器地址
- Master等待ACK来自ALS31300
- Master发送31:24位数据
- Master等待ACK来自ALS31300
- 主服务器发送23:16位数据
- Master等待ACK来自ALS31300
- Master发送15:8位数据
- Master等待ACK来自ALS31300
- Master发送7:0位数据
- Master等待ACK来自ALS31300
- 主启动停止条件
我2下面的图3中的时序图进一步说明了C写入序列。
客户写访问
在ALS31300中写入任何易失性寄存器或EEPROM之前,必须将一个访问码发送到设备。如果没有启用客户访问模式,则不允许对设备进行写操作。此规则的唯一例外是SLEEP位,无论访问模式如何,都可以写入该位。此外,任何寄存器或EEPROM位置都可以在任何时间读取,而不管访问方式如何。
要输入客户访问模式,必须通过i发送访问命令2C接口。该命令由一个串行写操作组成,其地址和数据值如表1所示。输入密码的时间没有限制。一旦进入客户访问模式,就不可能在不循环设备供电的情况下更改访问模式。
表1:客户访问代码
访问模式 | 地址 | 数据 |
客户访问 | 0x35 | 0 x2c413534 |
读周期概述
访问ALS31300上寄存器的读周期如下所示。
- 启动条件
- Master发送7位的从地址和写位(0)
- Master等待ACK来自ALS31300
- 主站发送8位寄存器地址
- Master等待ACK来自ALS31300
- 初始化一个启动条件。这一次它被称为重启条件
- Master发送7位的从地址和读位(1)
- Master等待ACK来自ALS31300
- Master接收31:24位数据
- 主人向ALS31300发送ACK
- Master接收23:16位的数据
- 主人向ALS31300发送ACK
- 主机收到15:8位数据
- 主人向ALS31300发送ACK
- 主机收到7:0位数据
- Master将NACK发送给ALS31300
- 主启动停止条件
我2下面的图4中的时序图进一步说明了C的读取序列。
图4中的时序图示出了正在发送的单个寄存器位置的整个内容(位31:0)。可选地,我2C Master可以选择用ACK代替NACK,这允许读取序列继续。这种情况将导致从下面的寄存器地址+ 1中转移内容(位31:24)。然后,主服务器可以继续确认,或发出不确认(NACK),或在任何字节之后停止接收数据。
注意,读取只需要初始寄存器地址,这样可以更快地检索数据。但是,当使用单个读命令时,这将数据检索限制到顺序寄存器。当主机提供一个不确认位和停止位时,ALS31300停止发送数据。如果要读取非顺序寄存器,则必须发送单独的读命令。
我2回读模式的X, Y, Z和温度数据
Als31300 I.2C控制器具有多种模式,可以在方便的方便地轮询X,Y,Z和温度数据的过程。这些选项包括单模,快循环模式和全循环模式。
单一的模式
对任何寄存器执行一个写或读命令——这是默认模式,最适合设置字段和读取静态寄存器。如果需要,可以使用这种模式以典型的串行方式读取X、Y、Z和Temperature数据,但是对于高速数据检索,建议使用快速或全循环读取模式。
快循环模式
快速循环模式提供X,Y,Z和温度值的连续读数,但仅限于X,Y,Z和高温的高8位。该模式旨在以截断分辨率为代价是从IC读取数据的时效方式。图5中的流程图描绘了快速循环模式。
全循环模式
全循环模式提供完整,12位分辨率的X,Y,Z和温度数据的连续读取。这是建议的用户,用于X,Y,Z和温度的更高数据速率,具有全分辨率。图6中的流程图描绘了全循环模式。
下面在表2中进一步描述循环模式。
表2:ALS31300循环读取模式
代码(二进制) | 模式 | 描述 |
00 | 单 | 没有循环。类似于默认的i2C。 |
01. | 快循环 | x,y,z和温度场是 毛圈。8 MSBs for x,y和z;6 MSB用于温度循环。 |
10. | 全循环 | x,y,z和温度场是 毛圈。完整的12位分辨率字段 毛圈。 |
11. | 单 | 与代码0相同。 |
要设置读取环路模式,请在地址0x27处设置位3:2到每个表2的所需代码值。
磁场强度寄存器
磁场强度寄存器包含的数据与ALS31300所看到的三个轴中每个轴上测量到的磁场成正比。表3描述了X、Y和Z磁数据的寄存器地址和位域。X、Y和Z轴的方向定义在图7中。
每个轴的msb和lbs必须连接以解析完整的12位磁场数据。请参阅附录A,以查看和连接ALS31300中的磁数据的各种技术的示例代码。
表3:磁场强度寄存器
地址 | 比特 | 名称 | 描述 | R / W. |
0x28 | 31:24 | X轴位元 | 8位信号与X方向上的场强的上8位成比例。 | R |
23:16 | Y轴MSBS. | 8位信号与y方向上的现场强度的上部8位成比例。 | R | |
很高 | Z轴位元 | 8位信号与Z方向上的上8位场强成正比。 | R | |
0x29. | 19:16 | X轴lsb | 4位信号与X方向下的低4位比例。 | R |
15:12 | Y轴LSBS. | 4位信号与Y方向上较低的4位场强成比例。 | R | |
11:8 | Z轴LSBS. | 4位信号与Z方向上的低4位比例。 | R |
温度传感器寄存器
ALS31300的温度寄存器如下表5所示。
表4:温度寄存器
地址 | 比特 | 名称 | 描述 | R / W. |
0x28 | 5:0 | 温度 最高有效位 |
6位信号与 高温的6位。 |
R |
0x29. | 5:0 | 温度 lsb |
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数据 |
假设一个完整的8字节的读取对于单个轴返回以下二进制数据:
MSB = 1100 _0000
lsb = 0110。
合并数据{MSB;LSB} = 1100 _0000_0110。十进制当量= -1018,可以通过除以器件灵敏度(4lsb /gauss)转换为高斯。
高斯= -1018 LSB÷4lsb/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:四个象限弧形灯函数调用
程序 | 功能 | 描述 |
MATLAB | atan2(y,x) | 4象限晒黑-1.导致弧度。 |
atan2d (Y, X) | 4象限晒黑-1.导致度数。 | |
arduino. | atan2(y,x) | 4象限晒黑-1.返回两倍。 |
atan2f(y,x) | 4象限晒黑-1.返回浮动。 | |
c# | 量化(Y, X) | 4象限晒黑-1.返回两倍。 |
有关计算XY,XZ和YZ轴组合的角度,请参阅“全Arduino源代码附录A.
转换过程可以总结为3个主要步骤,如下所示,并在图9中的范围图中进行标识。“Single”模式(表2)用于简化这个示例。
- 读请求由Master发起。
- 从Slave传输8字节的数据。
- 将磁矢量数据转换为角度值。
读取请求(框1)包括写入指示将读取的设备的设备组成。设备响应(框2),具有8个字节的数据,(8毫秒的X,Y,Z和6 MSB温度,然后是4LSB的X,Y,Z和6 MSB的温度)。
角的计算时间
使用ALS31300完成角度计算的总时间将取决于应用程序,但主要取决于用户微控制器的处理能力和速度。其他因素包括ALS31300的回路模式(表2)和通信频率的I2C接口。本文档中的定时示例假设在72 MHz上运行的青少年3.2微控制器,并配置了i2C通信速度为1 MHz(快速模式+)。注意Teensy 3.2快速模式+ i2C模式运行720 kHz。
图9中的示例是从ALS31300读取数据的一种简单方法,但它不是最快的。在第一次请求之后,可以消除初始化读取(图9中的框1)的开销
通过在ALS31300上使用环路模式。
图10中的范围图显示了ALS31300设置在全环模式下的角度转换流程。框1、2和3仍然与图9中的步骤相同。
请注意,框1只发生一次,但略长于图9中的No循环示例。在全循环模式下,读取请求由写入指示将读取哪个寄存器的设备,然后读取/写入设置全循环模式。请参阅附录A中的完整源代码如何实现任何循环,快速循环和全循环读取模式。
框3中重复的暂停显示了Teensy 3.2微控制器执行atan2f(x,y)函数所需的时间。Teensy 3.2上atan2f(x,y)函数在72 MHz时的平均持续时间为30 μs,而8个数据字节的传输时间为120 μs。在全环模式下使用tenensy 3.2和ALS31300,可以每150 μs计算一个新的角度值。
应用程序示意图
请参阅图11中的图像,示出了本文档中用于ALS31300的应用程序示意图。
微型3.2单片机的支持电路如图12所示原理图。
请参阅图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。该集成电路还包括一个温度传感器,可以读取的I2C接口。
Arduino .ino草图文件使用的这个应用程序说明是可用的快板的软件门户。注册“ALS31300”设备以查看源代码。
ALS31300 datasheet可在//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将数据写入ALS313002并利用ALS31300的磁数据计算角度和高斯。
完整的Arduino草图可在Allegro微系统的软件门户下的ALS31300设备标签。要注册Allegro的软件门户和查看ALS31300源代码,请访问https://registration.allegromicro.com/login。
附录b:小针头传单
每个Teensy 3.2的船舶下面的引脚传单。它也可从以下链接的PJR获取:https://www.pjrc.com/teensy/card7a_rev1.pdf。
本文件中包含的信息不构成Allegro对客户就本文件主题事项的任何陈述、保证、保证、担保或引诱。提供的信息并不能保证基于这些信息的过程是可靠的,或者Allegro已经探索了所有可能的故障模式。客户有责任对最终产品进行充分的合格测试,以确保其可靠性和满足所有设计要求。