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;若通过下拉电阻接地,功耗则会更大。

测试代码

 /*
Measurement of acceleration values using motion sensor LIS3DH
*/ #include <Wire.h> #define ADDRESS_LIS3DH 0x19
#define CTRL_REG1 0x20
#define CTRL_REG4 0x23
#define CTRL_REG5 0x24
#define STATUS_REG 0x27
#define OUT_X_L 0x28 byte buffer[];
byte statusReg; boolean ready = false;
int outX, outY, outZ;
int xVal, yVal, zVal; void setup()
{
Wire.begin();
Serial.begin();
delay(); //5 ms boot procedure // reboot memory content, to make a clean start
Wire.beginTransmission(ADDRESS_LIS3DH);
Wire.write(CTRL_REG5);
Wire.write(0x80);
Wire.endTransmission(); delay(); //set ODR = 1 Hz, normal mode, x/y/z axis enabled
Wire.beginTransmission(ADDRESS_LIS3DH);
Wire.write(CTRL_REG1);
Wire.write(0x17);
Wire.endTransmission(); //set BDU= 1, scale = +/-2g, high resolution enabled
Wire.beginTransmission(ADDRESS_LIS3DH);
Wire.write(CTRL_REG4);
Wire.write(0x80);
Wire.endTransmission();
} void loop()
{
// read STATUS_REG
while(ready == false)
{
Wire.beginTransmission(ADDRESS_LIS3DH);
Wire.write(STATUS_REG);
Wire.endTransmission();
Wire.requestFrom(ADDRESS_LIS3DH, );
if (Wire.available() >= )
{
statusReg = Wire.read();
}
if (bitRead(statusReg, ) == ) //new data available
{
ready = true;
}
delay();
} if (bitRead(statusReg, ) == )
{
Serial.println("Some data have been overwritten.");
} //read the result
Wire.beginTransmission(ADDRESS_LIS3DH);
Wire.write(OUT_X_L | 0x80); //read multiple bytes
Wire.endTransmission();
Wire.requestFrom(ADDRESS_LIS3DH, );
if (Wire.available() >= )
{
for (int i = ; i < ; i++)
{
buffer[i] = Wire.read();
}
} //calculation
outX = (buffer[] << ) | buffer[];
outY = (buffer[] << ) | buffer[];
outZ = (buffer[] << ) | buffer[];
xVal = outX / ;
yVal = outY / ;
zVal = outZ / ; Serial.print("outX: "); Serial.print(xVal); Serial.print(" ");
Serial.print("outY: "); Serial.print(yVal); Serial.print(" ");
Serial.print("outZ: "); Serial.println(zVal); ready = false;
}

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

参考资料

LIS3DH - STMicroelectronics

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. LIS3DH三轴加速度计-实现欧拉角(俯仰角,横滚角)

    1. LIS3DH管脚定义 PS:LIS3DH和mpu6050的X和Y方向是相反的, mpu6050如下图所示: 2.LIS3DH加速度计介绍 由于LIS3DH只可以得到XYZ加速度,无法获取角速度, ...

  4. 【雕爷学编程】Arduino动手做(48)---三轴ADXL345模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...

  5. STC8H开发(七): I2C驱动MPU6050三轴加速度+三轴角速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  6. 三轴陀螺仪与加速度计如何辅助 iPhone 定位的

    在所有之前解释一下陀螺仪 根据Wiki的定义:「陀螺仪是用于测量角度或维持方向的设备,基于角动量守恒原理.」 这句话的要点是测量角度或维持方向,这是 iPhone 4 为何搭载此类设备的原因.机械陀螺 ...

  7. STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  8. 开源三轴云台EVVGC(simple BGC)分析

    一. 主程序分析 主程序结构清晰,流程如图所示,下面将对每个部分做详细分析 二. 系统初始化 系统初始化部分的流程如上图所示,下面对每部分做具体分析 1. 时钟初始化 该部分主要是使能DWT,用DWT ...

  9. [算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本

    一.有啥用 这里用的是LIS3DH三轴加速计,输出为X.Y.Z轴的加速度,通过串口连接电脑,电脑里运行matlab脚本通过串口实时获取数据并做可视化显示. 这里虽然是针对LIS3DH的,其实稍作修改即 ...

随机推荐

  1. 控件的相对位置与绝对位置-UI界面编辑器(SkinStudio)教程

    绝对位置: 相对位置: 相对位置配合Anchor属性使用 例如Anchor属性选择left|top(即相对位置的left和top保持不变) 窗口大小改变前: 窗口大小改变后: 可以看到控件相对位置的l ...

  2. win7的svchost.exe占用内存过高如何解决

    方法/步骤 1 在我的电脑上点击鼠标右键,选择[管理] 步骤阅读 2 选择右侧[服务和应用程序]下的[服务]选项 步骤阅读 3 找到名称我Superfetch的服务,双击鼠标左键. 步骤阅读 4 选择 ...

  3. cef3 获得 谷歌浏览器 网页源码 哈哈

    Get HTML Source from Chromium Embedded http://stackoverflow.com/questions/13324095/get-html-source-f ...

  4. python json学习之路1-认识json格式数据

    JSON 语法规则 JSON 语法是 JavaScript 对象表示语法的子集. 数据在键值对中 数据由逗号分隔 花括号保存对象 方括号保存数组JSONJSON 名称/值对 JSON 数据的书写格式是 ...

  5. ActiveMQ安装与使用

    一 .安装运行ActiveMQ: 1.下载activemq wget http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/apa ...

  6. Composite(组合)--对象结构型模式

    1.意图 将对象组合成树形结构以表示“部分-整体”的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 2.动机 可以组合多个简单组件以形成一些较大的组件,这些组件又可以组合成 ...

  7. 通过底层AVR方法实现SPI数据传输

    主机端: /********************************* 代码功能:通过底层AVR方法实现SPI数据传输(主机端) 创作时间:2016*10*17 使用资源: 更低阶的 aTme ...

  8. linux磁盘限额和进阶文件系统的管理 quota RAID LVM

    概念: Quota 的一般用途: 针对 WWW server ,例如:每个人的网页空间的容量限制! 针对 mail server,例如:每个人的邮件空间限制. 针对 file server,例如:每个 ...

  9. 关于Beam Search

    Wiki定义:In computer science, beam search is a heuristic search algorithm that explores a graph by exp ...

  10. Android开发涉及有点概念&相关知识点(待写)

    前言,承接之前的 IOS开发涉及有点概念&相关知识点,这次归纳的是Android开发相关,好废话不说了.. 先声明下,Android开发涉及概念比IOS杂很多,可能有很多都题不到的.. 首先由 ...