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. mac 安装Homebrew

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  2. dubbo 使用总结

    第一步: 安装注册中心Register,这里选择 zookeeper 1.zookeeper下载url:http://zookeeper.apache.org; 2.下载解压完后如下: 3.将zoo_ ...

  3. 企业好助手U-Mail邮件服务器软件

    对于一家企业,最核心的是什么?有人说人才,有人说技术,也有人说是数据(信息),依小编来 看,这些答案都没错,人才会流动,技术在不断更新,唯有数据(信息),日积月累,将沉淀为公司历史的一部分,作为决策的 ...

  4. mac安装Mysql官方示例数据库employee

    1. 下载地址 https://launchpad.net/test-db/employees-db-1/1.0.6 2. 执行命令 /usr/local/mysql/bin/mysql -t -u ...

  5. 用Javascript取float型小数点

    用Javascript取float型小数点后两位,例 var a = 12.2369826取成12.23,如何做?下面四种方法可用 (1)     var str = a.substring(0,s. ...

  6. KPI

    一.综合计划部KPI明细数据查询--xigu用户要求:需显示第三季度,即789三个月的明细数据解决方法:1.查看SSISC:\Users\Administrator\Documents\Visual ...

  7. if条件里比较浮点数

    晚上看会儿书,基础的东西,很多都不熟练,不得不佩服那些人真的很厉害,为啥会想到那些,我这傻脑袋是想不到,暂时...... 比较3.3333与3 #!/bin/bash var1=`echo " ...

  8. C语言学习笔记(一)_hello world

    一.建立一个文件a.c,写入: #include <stdio.h> //使用printf库函数之前,必须include <stdio.h>int main()//main函数 ...

  9. Remoting创建远程对象的一个实例:

    private static Lazy<IChannelManager>  channelManager=new Lazy<IChannelManager>(() =>  ...

  10. Selenium2+python自动化13-多窗口、句柄(handle)

    前言 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 本篇以打开百 ...