针对三轴加速度LIS2DH12功能分析

LIS2DH12作为MESH里面最重要的3轴加速度传感器之一,除了有较好的低功耗的功能外,它的一个加速度精度有正负2g,正负4g,正负8g,正负16g。高速的I2C/SPI数字输出,能够测量输出速率为1HZ到5.3kHZ。内置FIFO和高性能加速度传感器。下面是它在应用上的一些简单功能。
       
LIS2DH12pin脚

加速度原始数据读取计算

rang范围可设定为±2g、±4g、±8g、±16g (1g=9.8N/kg,正常不动,三轴的向量和为1g)
ADC可设置成8bit、10bit、12bit。
数据读取
sensor用了16bit来表示一个轴的值。即读取出来的原始寄存器数据为一个int16_t格式的数值。
lis2dhReadReg(LIS2DH_OUT_Y_L, buf, 4);
tempAccY=(int16_t)((buf[1]<<8)+buf[0])>>6;
tempAccZ=(int16_t)((buf[3]<<8)+buf[2])>>6;
temp_f_y=(int32_t)(tempAccYx38.28);
temp_f_z=(int32_t)(tempAccZx38.28); //±2G,256LBS/g 放大1000倍 9800/256 = 38.28 mg

举例以配置为±8g,10bit为例:
10bit的数值范围为-512到+512,不管rang设置多大,输出的范围是固定的。
range设置成±8g是,测量范围为-8g ~ +8g,数字化后,即为64LSB/g,即1g的加速度对应的输出是64。同理:1个数字代表的加速度为8/512=15.6mg

数据连续读取

连续读取多个数据,和普通的I2C读取有一定区别,需要地址最高位置1,注意Datasheet有如下一句话:


“In order to read multiple bytes, it is necessary to assert the most significant bit of the subaddress field. In other words, SUB(7) must be equal to 1 while SUB(6-0) represents the
Address of the first register to be read.”


运动中断唤醒设置


CTRL_REG1 = 0x1F;//1MHz,低功耗模式,X/Y/Z都使能
CTRL_REG2 = 0x01;//INT1上使用High-pass
CTRL_REG3 = 0x40;//INT1上产生中断。
INT1_CFG = 0x2A;//使能,X/Y/Z任一超过阈值中断。
INT1_THS = 0x10;//中断阈值 16*FS
INT1_DURATION = 0x00;//超过时立刻产生中断。


★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论