概述:ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达±16g。
数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。
ADXL345非常适合移动设备应用。
它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。
其高分辨率(3.9mg/LSB),能够测量不到1.0。
的倾斜角度变化。
该器件提供多种特殊检测功能。
活动和非活动检测功能通过比较任意轴上的加速度与用户设置的阈值来检测有无运动发生。
敲击检测功能可以检测任意方向的单振和双振动作。
自由落体检测功能可以检测器件是否正在掉落。
这些功能可以独立映射到两个中断输岀引脚中的一个。
正在申请专利的集成式存储器管理系统采用一个32级先进先岀(FIFO)缓冲器,可用于存储数据,从而将主机处理器负荷降至最低,并降低整体系统功耗。
低功耗模式支持基于运动的智能电源管理,从而以极低的功耗进行阈值感测和运动加速度测量。
ADXL345采用3 mm X 5 mmx 1 mm,14引脚小型超薄塑料封装。
对比常用的飞思卡尔的MMZ7260三轴加速度传感器,ADXL345,具有测量精度高、可以通过SPI或I2C直接和单片机通讯等优点。
特性:超低功耗:VS= 2.5 V 时(典型值),测量模式下低至23uA,待机模式下为0.1 g A功耗随带宽自动按比例变化用户可选的分辨率10位固定分辨率全分辨率,分辨率随g范围提高而提高,±16g时高达13位(在所有g范围内保持4 mg/LSB的比例系数)正在申请专利的嵌入式存储器管理系统采用FIFO技术,可将主机处理器负荷降至最低。
单振/双振检测,活动/非活动监控,自由落体检测电源电压范围:2.0 V 至3.6 VI / O电压范围:1.7 V至VSSPI (3线和4线)和I2C数字接口灵活的中断模式,可映射到任一中断引脚通过串行命令可选测量范围通过串行命令可选带宽宽温度范围(-40°C至+85 °C)抗冲击能力:10,000 g无铅/符合RoHS标准小而薄:3 mn X 5 mm x 1 mm,LGA 封装模组尺寸:23*18*11mm (高度含插针高度应用:机器人控制、运动检测过程控制,电池供电系统硬盘驱动器(HDD)保护,单电源数据采集系统手机,医疗仪器,游戏和定点设备,工业仪器仪表,个人导航设备电路功能与优势ADXL345是一款小巧纤薄的低功耗三轴加速度计,可以对高达±6 g的加速度进行高分辨率(13位)测量。
数字输岀数据为16位二进制补码格式,可通过SPI(3线或4线)或者I2C数字接口访问。
ADXL345非常适合移动设备应用。
它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。
它具有高分辨率( 4 mg/LSB ),能够测量约0.25。
的倾角变化。
使用ADXL345等数字输出加速度计时,无需进行模数转换,从而可以节省系统成本和电路板面积。
此外,ADXL345内置多种功能。
活动/非活动检测、单击/双击检测以及自由落体检测均在内部完成,无需主机处理器执行任何计算< 内置32级FIFO存储缓冲器可以减轻主机处理器的负担,起到简化算法和省电的作用。
利用内置的活动/非活动检测功能,将ADXL345用作运动开关”(无活动时关闭整个系统,检测到活动时才开启),系统可以实现进一步省电。
ADXL345通过I2或SPI接口进行通信。
本文所述电路演示如何通过这些协议实现通信图.ADXL345和ADUC7024的I2C配置(原理示意图,未显示去耦和所有连接)电路描述本电路将精密模拟微控制器ADuC7024和数字加速度计ADXL345配合使用。
两款器件均支持I2C和SPI 接口。
图1显示ADXL345和ADuC7024的SPI配置,图2显示这些器件的I2C配置。
CS引脚(ADXL345 的引脚7)用来选择所需的接口。
如果CS引脚连接高电平(V DD I/O),则I2C模式使能。
在SPI模式下,每次传输开始和结束时,CS电平均会切换。
如果CS被拉高,则表示没有SPI传输发生,或者I2C传输可能发生。
所示原理图均为示意图,但显示了必需的连接(电源、接地等)。
在这些原理图中,ADuC7024通过UART 进行编程(连接到引脚49和引脚50)。
SW2和SW3分别是复位和下载按钮,用于微控制器编程。
SW1是电源开关。
sfuo.ptiisrw^riAiinIFUO/3{] i^WTW^PLAE^ 1 *阡札Wga卯霽力FLA0ADuC7D24口zr4HX8S44IU1(NdDI—1H19J F B:3Z HVJL.■PUPWBME.dfCUgUF 丽5ipJ gUARTIO心 gJ O-牡*丝比vsKLKA0XU4&WIQ1RE&AU AW惟汕林HL&-IMT1iiMTI G>i& ONO GWri afsmairuwiiFM - ^FUI^LA '4V常见变化图1显示了 ADXL345的4线式SPI 配置,但它也能通过 3线式SPI 进行通信。
图3显示了这种配置上述电路采用ADUC7024微控制器。
同样的配置可以适用于任何支持 SPI 或I 2C 的微控制器,如图4所示, 其中采用标准I 2C 和SPI 连接。
表1列出了两种协议的引脚功能。
ADXL345 引脚 编号引脚名称 功能I 2CSPI7 CS(连接到VDD 以 支持I 2C )片选12 SDO/ALT ADDRESS备选地址选择 串行数据输岀13 SDA/SDI/SDIO 串行数据 串行数据输入(4线式 SPI )/串行数据输入和输岀(2 线式SPI )14SCL/SCLK 串行通信时钟 串行通信时钟表1. SPI 和I 2C 通信模式下ADXL345的引脚功能图4. SPI (左)和I2C (右)连接图ADXL345CSSDI SDO SCLKPROCLSSORADXL345OAYOAYCSCDOUT□ OUT DIN DOUT”皿|/0 ■ ■ ■PROCESSOR<JD IN OUTSDA L .ALT ADDRESS[SCL一 口 OUT测试程序#include <SPI.h>int CS=10;char POWER_CTL = 0x2D;char DATA_FORMAT = 0x31;char DATAX0 = 0x32;char DATAX1 = 0x33;char DATAY0 = 0x34;char DATAY1 = 0x35;char DATAZ0 = 0x36;char DATAZ1 = 0x37;char values[10];int x,y,z;void setup(){SPI.begin();SPI.setDataMode(SPI_MODE3); Serial.begin(9600);pinMode(CS, OUTPUT);digitalWrite(CS, HIGH); writeRegister(DATA_FORMAT, 0x01); writeRegister(POWER_CTL, 0x08);}void loop(){readRegister(DATAX0, 6, values);x = ((int)values[1]<<8)|(int)values[0];y = ((int)values[3]<<8)|(int)values[2];z = ((int)values[5]<<8)|(int)values[4];Serial.print(x, DEC);Serial.print(',');Serial.print(y, DEC);Serial.print(',');Serial.println(z, DEC);delay(10);}void writeRegister(char registerAddress, char value){digitalWrite(CS, LOW);SPI.transfer(registerAddress);SPI.transfer(value); digitalWrite(CS, HIGH);}void readRegister(char registerAddress, int numBytes, char * values){ char address = 0x80 | registerAddress;if(numBytes > 1)address = address | 0x40; digitalWrite(CS, LOW);SPI.transfer(address);for(int i=0; i<numBytes; i++){values[i] = SPI.transfer(0x00);}digitalWrite(CS, HIGH);}这里还是用到了串口调试的方法程序:int x, y, z;int a1 = A0;int a2 = A1;int a3 = A2;void setup()pinMode(a1,INPUT);pinMode(a2,INPUT);pinMode(a3,INPUT);Serial.begin(9600);}void loop(){x = analogRead(a1); y = analogRead(a2); z = analogRead(a3); Serial.print("x: "); Serial.print(x, DEC); Serial.print(" "); Serial.print("y: "); Serial.print(y, DEC); Serial.print(" "); Serial.print("z: "); Serial.println(z, DEC);delay(IOO);因为ADXL335输出的是模拟电压值,所以我们编写程序的时候只要采集输出电压就可以了,当然要做一些工程项目,准确地测出具体数字的话还需要看一看相关的数据手册进行一些编写。
下载完程序以后,我们打开串口调试窗口,可以看到窗口上显示我们测试到的数据。
当加速度改变的时候,相应的数字也会发生变化流程图。