完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近用ADI的三轴加速度计ADXL做个小东东,网上搜搜,发现用这个芯片的人很多,已经有很多应用研究。常常接受ADI专家的指导,我今天也分享一回,借花献佛分享点搜到的几条ADXL345使用经验: ADXL345是一种三轴加速度计。当ADXL345沿检测轴正向加速时,它对正加速度进行检测。在检测重力时需要注意,当检测轴的方向与重力的方向相反时检测到的是正加速度。 ADXL345通过3线式或4线式模式进行通信。 图1所示为4线式SPI模式的电气连接。注意,当使用3线式SPI模式时可断开SDO引脚。 图1、4线式连接 图2所示为推荐的3线式模式电气连接。器件的7位I2C地址是0x53,紧随其后的是R/W位。用户通过将SDO/ALTADDRESS引脚连接到VDDIO引脚来选择I2C的替代地址。此配置下的7位I2C地址是0x1D,紧随其后的是R/W位。 图2、3线式连接 初始化时,ADXL345在启动序列期间工作在100 Hz ODR,在INT1引脚上有DATA_READY中断。设置其它中断或使用FIFO时,建议所使用的寄存器在POWER_CTL和INT_ENABLE寄存器之前进行设置。 读取数据时,DATA_READY中断信号表明数据寄存器中的三轴加速度数据已被更新。当新数据就绪时它会被置为高电平。(通过DATA_FORMAT寄存器,中断信号可设置为由低电平变为高电平)利用低-高跃迁来触发中断服务例程。可从DATAX0、DATAX1、DATAY0、DATAY1、DATAZ0和DATAZ1寄存器中读取数据。为了确保数据的一致性,推荐使用多字节读取从ADXL345获取数据。 ADXL345为16位数据格式。从数据寄存器中获取加速度数据后,用户必须对数据进行重建。 DATAX0是X轴加速度的低字节寄存器,DATAX1是高字节寄存器。在13位模式下高4位是符号位。注意,可通过DATA_FORMAT寄存器设置其它数据格式POWER_CTL和INT_ENABLE寄存器之前进行设置。 同时ADXL345具有偏移寄存器,可进行偏移校准。偏移寄存器的数据格式是8位、二进制补码。偏移寄存器的分辨率为15.6 mg/LSB。如果偏移校准的精度必须高于15.6 mg/LSB,需要在处理器中进行校准。偏移寄存器将写入到寄存器的值相加来测试加速度。例如,如果偏移为+156 mg,那么应该往偏移寄存器写入−156 mg |
|
相关推荐
11个回答
|
|
ADXL345使用心得一 ADXL345具有+/-2g,+/-4g,+/-8g,+/-16g可变的测量范围;最高13bit分辨率;固定的4mg/LSB灵敏度;3mm*5mm*1mm超小封装;40-145uA超低功耗;标准的I2C或SPI数字接口;32级FIFO存储;以及内部多种运动状态检测和灵活的中断方式等特性。
ADXL345应用领域很广,拥有灵活的和主控制器通行的SPI(3线和4线)和I2C数字接口,可选的测量范围和带宽,有方便的单振/双振检测 ,活动/非活动监控 和自由落体检测功能。 这款加速度计有八个能够独立使用的中断,中断这里要说一下的就是int1和int2两个中断管脚,中断功能能够通过寄存器相应的映射到这两个管脚。还有就是x、y、z三个轴的中断只能单独使用。另外,对于Activity和Inactivity中断,分成两个工作方式,一个是AC、一个是DC,这两个工作方式对应的工作方式是不同的,AC对应的是新的采样点将以之前的某个采样点为参考,用两个采样点的差值与门限进行比较,来判断是否发生中断。DC 工作方式下,每个采样点的加速度值将直接与门限进行比较,来判断是否发生中断。还有就是Watermark 当FIFO里所存的采样点超过一定点数(SAMPLES)时,Watermark中断置位。当FIFO里的采样点被读取,使得其中保存的采样点数小于该数值(SAMPLES)时,Watermark中断自动清除。 Watermark 当FIFO里所存的采样点超过一定点数(SAMPLES)时,Watermark中断置位。当FIFO里的采样点被读取,使得其中保存的采样点数小于该数值(SAMPLES)时,Watermark中断自动清除。 还要说的一点是:ADXL345的FIFO最多可以存储32个采样点(X、Y、Z三轴数值),且具有Bypass模式、普通FIFO模式、Stream模式和Trigger模式,一共4种工作模式。FIFO功能也是ADXL345的一个重要且十分有用的功能。 还有,当开始调试ADXL345时,先不要急着对其数据进行处理,可以直接先观察数据,然后根据数据再分析,之后再进行处理,比如做补偿电路。 |
|
|
|
ADXL345使用心得二 ADXL345和微控制器之间的电路连接非常简单。由ADXL345和微控制器ADuC7026组成。给出了ADXL345和ADuC70262之间的典型电路连接。ADXL345的CS管脚接高电平,表示ADXL345工作在I2C模式。SDA和SCL是I2C总线的数据线和时钟线,分别连接到ADuC7026相应的I2C总线管脚。ADuC7026的一个GPIO管脚连接到ADXL345的ALT管脚,用来选择ADXL345的I2C地址。ADXL345的INT1管脚连接到ADuC7026的IRQ输入用来产生中断信号。说到了I2C,就说下有关I2C的东西吧!对于I2C总线协议,无论读写,I2C的SDA信号线上送出的第一个字节一定是SLAVE ADDRESS+WRITE。如果这里配置错了,那么数据就是一直读不出来的。读取ADXL345内部寄存器的读写操作时以字节为单位的,而两个字节之间的CS-n,SCLK一直保持有效。在读取寄存器的时候,先要读取内部地址0x00的DEVID,正确之后再进行其他寄存器的操作。因为一个器具具有唯一的ID号,而对这个ID号的读取时首要的任务。
在通信模式和硬件连接的电路中,要注意几点: 1 、cs-n必须要上拉到VDD才能启动I2C总线模式 2 、SDA和SCL需要上拉电阻 3 、SDA在FPGA的IO配置时,要将其配置为inout类型 4 、注意ALT-ADDRESS的连接方式与对应的设备从地址是不同的底层驱动的调试是件很头疼的事情,最关键的是对时序的理解。下面是一些经验总结: 1)应当确保硬件连线的正确性。比如,在调试I2C模式时,先确定DSP板的I2C接口正常;如果开始也能确保ADXL345模块正常,那就能将错误定位在软件上,问题就容易解决多了。 2)要确保拿到通信双方器件的正确时序图。合理的配置主控器件,使双方的时序一致。 3)搜索一些参考例子,在其基础上修改,这样也可加快调试的进度。 4)调试中,尽量寻找发现异常现象,分析可能的原因。据此,修改电路或者程序,尝试凸显问题,印证推断。同时,不断记录总结现象和实际原因,日积月累,经验会不断增加。 |
|
|
|
下面是网友分享的ADXL345校准原理 首先,这个校准的过程是手动的(类似手机上的传感器校准),把模块水平放置(这个水平也只是个大概,如果要求高的话,还需要其他仪器辅助),那么x轴和y轴的度数应该为0g,获取此时的实际x轴和y轴的度数,假设是20和-17。要注意此时传感器的量程和分辨率,假设此时adxl345是常规量程+-16g,分辨率13位,那么此时度数的系数应该是1g/256 *1000 = 3.9 mg/LSB,从数据手册上可以查到 偏移寄存器的比例因子是 15.6mg/LSB(固定的,与量程无关),那么需要设定的实际偏移值就是 20/4 = 5和-17/4 = 4(15.6/3.9约为4)
然后取两个值的补码,分别为0x05和0xFB,写入对应的偏移寄存器。 这样,每次从传感器读取的数值就自动加上了这个设置的偏移。z轴的偏移值检测方式一样,把z轴水平放置(处于0g场)。 需要注意的是: 1、传感器掉电后,设置的偏移值就丢失了,需要在下次上电后重新设置(不过这个偏移值主要跟芯片所处的环境有关,理论上不会经常性的大变化) 2、对于偏移值的测量,可以采用多次测量求平均值的方法 |
|
|
|
胡bbs4 发表于 2018-11-1 10:21 谢谢楼主的热情分享!!! 是的,ADXL推出以来,获得大量的成功应用,也是网上工程师讨论最多的加速度计方案。 本论坛中就有不少工程师关于ADXL的应用问题以及咱们专家的回答帖子哦,点击下面的链接,近30条相关问答供大家参考: http://ezchina.analog.com/search.jspa?peopleEnabled=true&userID=&containerType=&container=&q=ADXL345 |
|
|
|
胡bbs4 发表于 2018-11-1 10:21 请问ADXL345在每次上电使用时都需要校准吗?我初次使用些芯片做倾斜角检测,一次做了50块板,发现40块的输出是一致的,另有10块的输出偏差很远(差几十度)但偏差值也不一致。 |
|
|
|
jhhfhgj 发表于 2018-11-1 10:46 根据ADI官方说法,ADXL345的校准参数是写在寄存器里面的,每次掉电后寄存器数据无法保存,因此需要每次上电重新校准。 如果输出偏差特别大,以我个人经验来看,可能芯片存在问题。建议最好采购找ADI指定的大的代理商如艾睿电子等采购,价格可能要贵一些。你买的ADXL345一片的价格是多钱?如果是10多块RMB,多半就是假的了。 附件
|
|
|
|
|
|
|
|
感觉楼主好像没写完。
我用过ADXL345,但令我气愤的是我买到的居然是假芯片,害的我调试了好长时间也没有结果。只得将第一次采购的十多片全部扔掉。 ADXL345的功能的确很强大,但需要花费较长时间去熟悉掌握。我目前只是做到能一一定频率把三轴数据读出来并显示在PC屏幕上,中断功能试过但好像没反应。 |
|
|
|
林宇宣55 发表于 2018-11-1 11:24 欢迎补您充更多的使用经验哦 |
|
|
|
林宇宣55 发表于 2018-11-1 11:24 目前我也是只用于过将数据读取出来,中断也都无法进入, |
|
|
|
是否也适用于ADXL355
|
|
|
|
只有小组成员才能发言,加入小组>>
975 浏览 2 评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1372 浏览 2 评论
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
1933 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
4263 浏览 2 评论
9053 浏览 1 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
1493浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1689浏览 2评论
976浏览 2评论
1662浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1372浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 18:00 , Processed in 0.967049 second(s), Total 69, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号