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

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备逐一做做实验,不管能否成功,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 

【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)

实验四十八:GY-291 数字三轴重力加速度倾斜度模块 (IIC/SPI传输)


ADXL345芯片

ADXL345是一款小而薄的低功耗3轴加速度计,分辨率高(13位),测量范围达±16g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(4 mg/LSB),能够测量不到1.0°的倾斜角度变化。该器件提供多种特殊检测功能。活动和非活动检测功能检测有无运动发生,以及任意轴上的加速度是否超过用户设置的限值。敲击检测功能可以检测单击和双击动作。自由落体检测功能可以检测器件是否正在掉落。这些功能可以映射到两个中断输出引脚中的一个。正在申请专利的32级先进先出(FIFO)缓冲器可用于存储数据,最大程度地减少主机处理器的干预。低功耗模式支持基于运动的智能电源管理,从而以极低的功耗进行阈值感测和运动加速度测量。

ADXL345采用3 mm × 5 mm × 1 mm、14引脚小型超薄塑料封装。


主要特性

超低功耗:V S = 2.5 V 时(典型值),测量模式下低至23ì A ,

待机模式下为0.1μA

功耗随带宽自动按比例变化

用户可选的分辨率

10 位固定分辨率

全分辨率,分辨率随g范围提高而提高,± 16g 时高达13 位

(在所有g范围内保持4 mg/L S B 的比例系数)

正在申请专利的嵌入式存储器管理系统采用FI FO 技术,可将

主机处理器负荷降至最低

单振/双振检测

活动/非活动监控

自由落体检测

电源电压范围:2.0 V 至3.6 V

I / O电压范围:1.7 V 至V S

S PI (3线和4线)和I 2 C数字接口

灵活的中断模式,可映射到任一中断引脚

通过串行命令可选测量范围

通过串行命令可选带宽

宽温度范围(- 40° C 至+ 85 ℃)

抗冲击能力:10, 000 g

无铅/符合Ro HS标准

工作原理

ADXL345是一款完整的3轴加速度测量系统,可选择的测量范围有±2 g,±4 g,±8 g或±16 g。既能测量运动或冲击导致的动态加速度,也能测量静止加速度,例如重力加速度,使得器件可作为倾斜传感器使用。该传感器为多晶硅表面微加工结构,置于晶圆顶部。由于应用加速度,多晶硅弹簧悬挂于晶圆表面的结构之上,提供力量阻力。差分电容由独立固定板和活动质量连接板组成,能对结构偏转进行测量。加速度使惯性质量偏转、差分电容失衡,从而传感器输出的幅度与加速度成正比。相敏解调用于确定加速度的幅度和极性。



ADXL345三轴加速度模块

采用ADXL345芯片,具有体积小,功耗低的特点,13位数字精度分辨能够测量超过±16g的加速度变换。信号输出为16位数字输出,可以通过SPI与I2C接口实现信号采集。ADXL345适用于倾斜角度测量,能够进行静态重力加速度检测。同时也适用于运动状态的追踪,测量运动或冲击过程造成的瞬时加速度。其高分辨率(4mg/LSB)使之能够感应变化小于1°的倾斜角度。ADXL345三轴加速度计还内置一款LDO模块让你的加速度计能够工作于3.3~6v的工作电压之下。同时传感器提供了几个特殊的功能。能够在静态或动态情况下检测是否有运动或停止出现,另外能够感知单轴的加速度值是否超出用户的设定值。检测单击/双击。如果该设备正在下降,能进行自由落体感应检测。这些功能能够被映射到两个中断输出引脚上。在低功耗模式是用户能够基于ADXL345动作感应,进行电源管理,同时只损耗极低的功耗。


模块的电原理图

/*

【Arduino】168种传感器模块系列实验(48)

实验四十八:GY-291 数字三轴重力加速度倾斜度模块 (IIC/SPI传输)

简单实验,之一

*/

void setup()

{

Serial.begin(9600);     

pinMode(A4, INPUT);

pinMode(A5, INPUT);

}

void loop()

{

Serial.println(analogRead(A4));

Serial.println(analogRead(A5));

delay(100);

}


/*

【Arduino】168种传感器模块系列实验(48)

实验四十八:GY-291 数字三轴重力加速度倾斜度模块 (IIC/SPI传输)

实验代码之二

*/

#include <Wire.h>

#define DEVICE (0x53)  

#define TO_READ (6)   

byte buff[TO_READ] ;      

char str[512];            

int regAddress = 0x32;     

int x, y, z;                        

double roll = 0.00, pitch = 0.00;      

void setup() {

  Wire.begin();         

  Serial.begin(9600);  

  

  writeTo(DEVICE, 0x2D, 0);      

  writeTo(DEVICE, 0x2D, 16);

  writeTo(DEVICE, 0x2D, 8);

}

void loop() {

  readFrom(DEVICE, regAddress, TO_READ, buff);

                                             

  x = (((int)buff[1]) << 8) | buff[0];   

  y = (((int)buff[3])<< 8) | buff[2];

  z = (((int)buff[5]) << 8) | buff[4];

  //we send the x y z values as a string to the serial port

  Serial.print("The acceleration info of x, y, z are:");

  sprintf(str, "%d %d %d", x, y, z);  

  Serial.print(str);

  Serial.write(10);

  

  RP_calculate();

  Serial.print("Roll:"); Serial.println( roll );

  Serial.print("Pitch:"); Serial.println( pitch );

  Serial.println("");

  

  delay(300);

}

void writeTo(int device, byte address, byte val) {

  Wire.beginTransmission(device);

  Wire.write(address);        

  Wire.write(val);      

  Wire.endTransmission();

}

void readFrom(int device, byte address, int num, byte buff[]) {

  Wire.beginTransmission(device);

  Wire.write(address);        

  Wire.endTransmission();

    Wire.beginTransmission(device);

  Wire.requestFrom(device, num);   

  int i = 0;

  while(Wire.available())   

  {

    buff = Wire.read();

    i++;

  }

  Wire.endTransmission();

}

void RP_calculate(){

  double x_Buff = float(x);

  double y_Buff = float(y);

  double z_Buff = float(z);

  roll = atan2(y_Buff , z_Buff) * 57.3;

  pitch = atan2((- x_Buff) , sqrt(y_Buff * y_Buff + z_Buff * z_Buff)) * 57.3;

}




©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容