LIS3DH是ST公司生产的MEMS三轴加速度计芯片,实现运动传感的功能。主要特性有:

  • 宽工作电压范围:1.71 ~ 3.6V
  • 功耗:低功耗模式2μA;正常工作模式、ODR = 50Hz时功耗11μA(要求SDO/SA0脚浮空或上拉)
  • 测量范围:+/-2g ~ +/-16g
  • 接口:I2C、三线制/四线制SPI
  • 16 bit数据输出
  • 两个可编程中断输出脚,用于自由落体和动作检测
  • 6D/4D方向检测
  • 内置AD支持3路外部信号输入
  • 内置温度传感器
  • 内置32-slot的10-bit FIFO存储器
  • 自检测功能
  • 封装:3 x 3 x 1 mm LGA-16

管脚定义

  • VCC:电源
  • Vdd_IO:数字接口供电电源
  • GND:地
  • RES:连接到地
  • NC:不连接
  • CS:I2C接口选择(CS=1);或SPI接口片选脚(CS=0)
  • SCL/SPC:I2C接口或SPI接口的时钟线
  • SDA/SDI/SDO:I2C接口或SPI接口数据线
  • SDO/SA0:I2C地址选择脚;或四线制SPI接口输出脚。浮空时为1。
  • INT1:中断信号输出,触发条件可中断
  • INT2:同上
  • ADC1、ADC2、ADC3:数模转换的模拟信号输入脚

与Arduino的连接

用工作于3.3V/8MHz版本的Arduino Pro Mini进行调试,可避免用UNO时接口电平转换的麻烦。采用I2C接口进行通讯。未利用INT1、INT2和FIFO的功能。

LIS3DH  Pro Mini 3.3V/8MHz

VDD <------> 3.3V

GND <------> GND

SCL <------>  A5 (SCL)

SDA <------> A4 (SDA)

功能调试

1. 根据应用手册,LIS3DH用于倾斜检测时,最好将测量范围设置为+/-2g。

2. 设备上电后,需要约5ms的启动时间,之后自动进入低功耗模式。之后不同的模式间切换也需要少许的时间,与ODR有关。

3. 存储结果的寄存器的值为有符号数(二补码)。应用笔记中“Example of acceleration data”中的示例表格,1g对应的高位寄存器值应为40h,资料应该是误写成了04h。

4. 手册中的功耗数据只适用于SDO/SA0脚接电源、或者空接的情况。若该管脚接地,功耗会增加150μA;若通过下拉电阻接地,功耗则会更大。

测试代码

 1 /*
 2     Measurement of acceleration values using motion sensor LIS3DH
 3 */
 4
 5 #include <Wire.h>
 6
 7 #define ADDRESS_LIS3DH 0x19
 8 #define CTRL_REG1 0x20
 9 #define CTRL_REG4 0x23
10 #define CTRL_REG5 0x24
11 #define STATUS_REG 0x27
12 #define OUT_X_L 0x28
13
14 byte buffer[6];
15 byte statusReg;
16
17 boolean ready = false;
18 int outX, outY, outZ;
19 int xVal, yVal, zVal;
20
21 void setup()
22 {
23     Wire.begin();
24     Serial.begin(9600);
25     delay(5); //5 ms boot procedure
26
27     // reboot memory content, to make a clean start
28     Wire.beginTransmission(ADDRESS_LIS3DH);
29     Wire.write(CTRL_REG5);
30     Wire.write(0x80);
31     Wire.endTransmission();
32
33     delay(5);
34
35     //set ODR = 1 Hz, normal mode, x/y/z axis enabled
36     Wire.beginTransmission(ADDRESS_LIS3DH);
37     Wire.write(CTRL_REG1);
38     Wire.write(0x17);
39     Wire.endTransmission();
40
41     //set BDU= 1, scale = +/-2g, high resolution enabled
42     Wire.beginTransmission(ADDRESS_LIS3DH);
43     Wire.write(CTRL_REG4);
44     Wire.write(0x80);
45     Wire.endTransmission();
46 }
47
48 void loop()
49 {
50     // read STATUS_REG
51     while(ready == false)
52     {
53         Wire.beginTransmission(ADDRESS_LIS3DH);
54         Wire.write(STATUS_REG);
55         Wire.endTransmission();
56         Wire.requestFrom(ADDRESS_LIS3DH, 1);
57         if (Wire.available() >= 1)
58         {
59             statusReg = Wire.read();
60         }
61         if (bitRead(statusReg, 3) == 1) //new data available
62         {
63             ready = true;
64         }
65         delay(10);
66     }
67
68     if (bitRead(statusReg, 7) == 1)
69     {
70         Serial.println("Some data have been overwritten.");
71     }
72
73     //read the result
74     Wire.beginTransmission(ADDRESS_LIS3DH);
75     Wire.write(OUT_X_L | 0x80); //read multiple bytes
76     Wire.endTransmission();
77     Wire.requestFrom(ADDRESS_LIS3DH, 6);
78     if (Wire.available() >= 6)
79     {
80         for (int i = 0; i < 6; i++)
81         {
82             buffer[i] = Wire.read();
83         }
84     }
85
86     //calculation
87     outX = (buffer[1] << 8) | buffer[0];
88     outY = (buffer[3] << 8) | buffer[2];
89     outZ = (buffer[5] << 8) | buffer[4];
90     xVal = outX / 16;
91     yVal = outY / 16;
92     zVal = outZ / 16;
93
94     Serial.print("outX: "); Serial.print(xVal); Serial.print("  ");
95     Serial.print("outY: "); Serial.print(yVal); Serial.print("  ");
96     Serial.print("outZ: "); Serial.println(zVal);
97
98     ready = false;
99 } 

View Code

ODR更新频率设置为1Hz,通过串口打印三轴加速度测量结果,单位mg

参考资料

LIS3DH - STMicroelectronics

转载于:https://www.cnblogs.com/zlbg/p/4242840.html

Arduino I2C + 三轴加速度计LIS3DH相关推荐

  1. Arduino I2C + 三轴加速度计ADXL345

    ADXL345是ADI公司生产的三轴数字加速度计芯片,与ST的LIS3DH功能接近.主要特性有: 工作电压:2.0 ~ 3.6V 功耗:待机功耗0.1μA:工作时与数据输出频率(ODR)有关,如ODR ...

  2. [每日电路图] 8、三轴加速度计LIS3DH电路图及功耗等指标

    看TI的官网资料:http://www.st.com/web/en/catalog/sense_power/FM89/SC444/PF250725 一.初次接触关注的信息: 1.1.概述中的关键信息 ...

  3. ST公司三轴加速度计LIS3DH应用

    本文主要介绍LIS3DH的运动检测功能(Motion detection),一旦两次加速度值的差值超过了设置阈值,相应的引脚就会产生中断. LIS3DH接口非常简单,四线SPI接口. LIS3DH上电 ...

  4. STM32开发 -- LIS3DH三轴加速度计开发详解

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/87096085 这次要讲一下LIS3DH三轴加速度计的开发使用,之前是有讲过 ...

  5. 三轴加速度计Triaxial accelerometer

    产品介绍 ACC356T是咏为传感针对震动.撞击测试.汽车电子等多个领域开发的一款三轴加速度计,ACC356T为单晶硅电容式传感器,由一片经过微机械处理的硅芯片,用于信号调整的低功率ASIC,用于存储 ...

  6. 三轴加速度计、三轴陀螺仪、三轴磁力计

    1.今天要做的事情 列出:可能影响因素,对影响因素做实验.如何设置对比实验? 如何设置对比实验? 三轴加速度计 1.加速度计的原理 三轴加速度:输出的速度是去掉重力后的整体加速度,因此,三轴加速度计可 ...

  7. 三轴加速度计的原理和方法

    现如今,很多现代人都非常注重自己的日常锻炼,计步作为一种有效记录监控锻炼的监控手段,被广泛应用在移动终端的应用中. 目前,大部分的计步都是通过GPS信号来测算运动距离,再反推行走步数实现的.这种方法很 ...

  8. lis3dh 三轴加速度计 运动检测 中断配置实现

    首先,LIS3DH的II2地址: I2C Device Address 8 bit format if SA0=0 -> 0x31(30也可以) if SA0=1 -> 0x33 void ...

  9. 三轴加速度计解算姿态(四元数)

    原理 当传感器载体静止时,加速度计只会输出重力加速度,可以凭此来计算载体的俯仰角和滚转角. 方法 假设导航坐标系为东北天,载体坐标系为右前上. 初始载体坐标系和导航坐标系重合,对应的四元数为q=[1, ...

最新文章

  1. 2013-3-10日记
  2. flutter dio+rxdart
  3. 比特币多重签名机制使用篇
  4. Intel Realsense D435 当usb显示为2.x时,是否能正常运行? 2.1 3.2
  5. JavaScript实现排序算法
  6. windows2003服务器版不能播放声音
  7. java分隔符的引号,使用分隔符拆分带引号的字符串
  8. java 状态模式 同步_JAVA设计模式之状态模式
  9. BZOJ.3140.[HNOI2013]消毒(二分图匹配 匈牙利)
  10. Netty : netty 4如何解决空轮询bug
  11. Python爬虫基础-02-提取数据
  12. python暴力破解
  13. C语言 数组指针详解
  14. 聚类分析与SPSS实现——《社会统计分析方法》
  15. SQL SERVER 资源性能监控-资源监视器
  16. 解决问题:latex中bib引用顺序不正确,引用顺序和正文不一致
  17. Day04_Manuals for Python@lisongye - list列表
  18. 企业内的ITSM软件/ITIL流程管理系统与OA系统有什么区别和关系?
  19. 证件照怎么换底色?Excel就能快速搞定,超简单
  20. 【ZeloEngine】ImGui汇总

热门文章

  1. 2020_NI_丘脑功能梯度及其与结构基础和认知相关性的关系
  2. 一个强大的XML处理类,老外写的,学习中
  3. NewStarCTF week2 部分题解
  4. 基于GPS碰撞预警系统 --进度表
  5. png转jpg,直接改后缀?
  6. 地理建模---------三调地类批量筛选----1
  7. 雷军:如果不是年轻时不懂事,我就是世界首富
  8. 《计算机工程与应用》投稿模版
  9. IDA生成sig签名文件
  10. joomla本地安装全过程