搜档网
当前位置:搜档网 › 三轴数字加速度传感器ADXL技术资料

三轴数字加速度传感器ADXL技术资料

三轴数字加速度传感器ADXL技术资料
三轴数字加速度传感器ADXL技术资料

概述:

ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达土16g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(3.9mg/LSB),能够测量不到1.0。的倾斜角度变化。该器件提供多种特殊检测功能。

活动和非活动检测功能通过比较任意轴上的加速度与用户设置的阈值来检测有无运动发生。敲击检测功能

可以检测任意方向的单振和双振动作。自由落体检测功能可以检测器件是否正在掉落。这些功能可以独立

映射到两个中断输岀引脚中的一个。正在申请专利的集成式存储器管理系统采用一个32级先进先岀(FIFO)缓冲器,可用于存储数据,从而将主机处理器负荷降至最低,并降低整体系统功耗。低功耗模式支持基于运动的智能电源管理,从而以极低的功耗进行阈值感测和运动加速度测量。ADXL345采用3 mm X

5 mm X 1 mm,14引脚小型超薄塑料圭寸装。

对比常用的飞思卡尔的MMZ7260三轴加速度传感器,ADXL345,具有测量精度高、可以通过SPI或I2C 直接和单片机通讯等优点。

特性:

超低功耗:VS= 2.5 V时(典型值),测量模式下低至23uA,待机模式下为0.1卩A功耗随带宽自动按比

例变化用户可选的分辨率10位固定分辨率全分辨率,分辨率随g范围提高而提高,

±16g时高达13位(在所有g范围内保持4 mg/LSB的比例系数)正在申请专利的嵌入式存储器管理系统采用FIFO技术,可将主机处理器负荷降至最低。单振/双振检测,活动/非活动监控,自由落体检测电源电压范围:2.0 V至3.6 V

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

SPI (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是一款小巧纤薄的低功耗三轴加速度计,可以对高达±16 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是电源开关。

常见变化

图1显示了ADXL345的4线式SPI配置,但它也能通过3线式SPI进行通信。图3显示了这种配置。

上述电路采用ADuC7024微控制器。同样的配置可以适用于任何支持SPI或I2C的微控制器,如图4所

示,其中采用标准I2C和SPI连接。表1列出了两种协议的引脚功能。

ADXL345 引引脚名称功能

脚编号 I 2C SPI

7 CS (连接到VDD

以支持I 2C ) 片选

12 SDO/ALT ADDRESS 备选地址选 择 串行数据输岀

13 SDA/SDI/SDIO 串行数据 串行数据输入(4线式SPI ) / 串行

数据输入和输岀(2线式

SPI )

14 SCL/SCLK 串行通信时 钟 串行通信时钟

表1. SPI 和I c 通信模式下ADXL345的引脚功能

图4. SPI (左)和I2C (右)连接图 测试程序

#in elude

int CS=10。

char POWER_CTL = 0x2D 。

char DATA_FORMAT = 0x31 。

char DATAX0 = 0x32 。

char DATAX1 = 0x33。 char DATAY0 = 0x34 。

char DATAY1 = 0x35 。

ADXL345 9AXXY ?? PROC^SOR D OUT DCUT D W DOUT

ADXL345

V[3D H0

PROCESSOR CS

Qo IN OUT SDA

ALT A DOR ESS

SCL O DOUT

char DATAZ0 = 0x36 。

char DATAZ1 = 0x37 。

char values[10] 。

intx,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) 。

}

voidwriteRegister(char registerAddress, char value){ digitalWrite(CS, LOW) 。

SPI.transfer(registerAddress) 。

SPI.transfer(value) 。

digitalWrite(CS, HIGH) 。

}

voidreadRegister(char registerAddress, intnumBytes, char * values){ char address = 0x80 | registerAddress。

if(numBytes > 1)address = address | 0x40 。 digitalWrite(CS, LOW) 。

SPI.transfer(address)。

for(inti=0 。 i

}

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(100) 。

}

因为 ADXL335 输出的是模拟电压值,所以我们编写程序的时候只要采集输出电压就可以了,当然要做一些工程工程,准确地测出具体数字的话还需要看一看相关的数据手册进行一些编写。

下载完程序以后,我们打开串口调试窗口,可以看到窗口上显示我们测试到的数据。当加速度改变的时候,相应的数字也会发生变化

流程图

相关主题