SKU:RB-02S110 ADXL345 三軸加速度傳感器

來(lái)自ALSROBOT WiKi
2021年7月21日 (三) 13:47Zhangxin討論 | 貢獻(xiàn)的版本

(差異) ←上一版本 | 最后版本 (差異) | 下一版本→ (差異)
跳轉(zhuǎn)至: 導(dǎo)航、 搜索
02S11001.png

目錄

產(chǎn)品概述

Arduino ADXL345 三軸加速度傳感器采用 ADXL345 芯片,此芯片應(yīng)用 MEMS 技術(shù),具有 SPI 和 IIC 數(shù)字輸出功能,芯片小巧輕薄,功耗低,量程可變,分辨率高。外形尺寸僅為3mm×5mm×1mm,面大小相當(dāng)于小拇指指甲蓋的1/3;在典型電壓 Vs=2.5V 時(shí)功耗電流約為 25~130μA,比先期采用模擬輸出的產(chǎn)品 ADXL330 功耗典型值低了約70~175 μA;最大量程可達(dá)±16g,另可選擇±2、±4、±8g 量程,可采用固定的4mg/LSB 分辨率模式,該分辨率可測(cè)得 0.25°的傾角變化。ADXL345 非常適合移動(dòng)設(shè)備應(yīng)用。它可以在傾斜檢測(cè)應(yīng)用中測(cè)量靜態(tài)重力加速度,還可以測(cè)量運(yùn)動(dòng)或沖擊導(dǎo)致的動(dòng)態(tài)加速度。該器件提供多種特殊檢測(cè)功能,活動(dòng)和非活動(dòng)檢測(cè)功能。通過(guò)比較任意軸上的加速度與用戶設(shè)置的閾值來(lái)檢測(cè)有無(wú)運(yùn)動(dòng)發(fā)生。敲擊檢測(cè)功能可以檢測(cè)任意方向的單振和雙振動(dòng)作。自由落體檢測(cè)功能可以檢測(cè)器件是否正在掉落。這些功能可以獨(dú)立映射到兩個(gè)中斷輸出引腳中的一個(gè)。

產(chǎn)品參數(shù)

  1. 產(chǎn)品名稱:ADXL345 加速度模塊
  2. 產(chǎn)品貨號(hào):RB - 02S110
  3. 工作電壓:3V - 5V
  4. 接口類型:IIC 接口
  5. 輸出信號(hào):數(shù)字信號(hào)
  6. 產(chǎn)品尺寸:30 mm * 25 mm
  7. 固定孔間距:23 mm * 18 mm
  8. 固定孔尺寸:M3
  9. 重量大?。?g
  10. 引腳定義 :
  • -:電源地
  • +:電源正極
  • SDA:IIC接口時(shí)鐘端
  • SCL:IIC接口數(shù)據(jù)端


  • 產(chǎn)品尺寸圖:
Size024.jpg

使用方法

基本使用

  • 實(shí)驗(yàn)?zāi)康?

使用 ADXL345 模塊測(cè)試三個(gè)軸的偏移量,通過(guò) Arduino IDE 的串口監(jiān)視器將數(shù)據(jù)打印顯示出來(lái)

  • 實(shí)驗(yàn)硬件

1、Carduino UNO R3 控制器 * 1
2、傳感器擴(kuò)展板 V5.0 * 1
3、4P 傳感器連接線 * 1
4、USB 數(shù)據(jù)線 * 1

  • 軟件環(huán)境:Arduino IDE 1.7.10
  • 硬件連接
02S11002.png
  • 例子程序
#include <Wire.h>  //調(diào)用arduino自帶的I2C庫(kù)
#define Register_ID 0     //器件ID
#define Register_2D 0x2D  //靜止、活動(dòng)、休眠、喚醒
#define Register_X0 0x32  //X軸數(shù)據(jù)0
#define Register_X1 0x33  //X軸數(shù)據(jù)1
#define Register_Y0 0x34  //Y軸數(shù)據(jù)0
#define Register_Y1 0x35  //Y軸數(shù)據(jù)1
#define Register_Z0 0x36  //Z軸數(shù)據(jù)0
#define Register_Z1 0x37  //Z軸數(shù)據(jù)1

int ADXAddress = 0xA7>>1;  //轉(zhuǎn)換為7位地址
int X0,X1,X_out;
int Y0,Y1,Y_out;
int Z1,Z0,Z_out;
double Xg,Yg,Zg;

void setup()
{
  Serial.begin(9600); //設(shè)置通信波特率
  Wire.begin();  //初始化I2C
  Wire.beginTransmission(ADXAddress);//發(fā)送芯片地址
  Wire.write(Register_2D);//特性控制
  Wire.write(8);//關(guān)閉休眠模式
  Wire.endTransmission();//結(jié)束發(fā)送
}
void loop()
{
  Wire.beginTransmission(ADXAddress);
  Wire.write(Register_X0);//請(qǐng)求X0數(shù)據(jù)
  Wire.write(Register_X1);//請(qǐng)求X1數(shù)據(jù)
  Wire.endTransmission();
  Wire.requestFrom(ADXAddress,2);//發(fā)送請(qǐng)求
  if(Wire.available()<=2);
  {
    X0 = Wire.read();//收到X0數(shù)據(jù)
    X1 = Wire.read();//收到X1數(shù)據(jù)
    X1 = X1<<8;
    X_out = X0+X1;
  }
  Wire.beginTransmission(ADXAddress);
  Wire.write(Register_Y0);
  Wire.write(Register_Y1);
  Wire.endTransmission();
  Wire.requestFrom(ADXAddress,2);
  if(Wire.available()<=2);
  {
    Y0 = Wire.read();
    Y1 = Wire.read();
    Y1 = Y1<<8;
    Y_out = Y0+Y1;
  }
  Wire.beginTransmission(ADXAddress);
  Wire.write(Register_Z0);
  Wire.write(Register_Z1);
  Wire.endTransmission();
  Wire.requestFrom(ADXAddress,2);
  if(Wire.available()<=2);
  {
    Z0 = Wire.read();
    Z1 = Wire.read();
    Z1 = Z1<<8;
    Z_out = Z0+Z1;
  }
  Xg = X_out/256.00;//把輸出結(jié)果轉(zhuǎn)換為重力加速度g,精確到小數(shù)點(diǎn)后2位。
  Yg = Y_out/256.00;
  Zg = Z_out/256.00;
  Serial.print(" X = ");
  Serial.print(Xg); 
  Serial.print(" Y = ");
  Serial.print(Yg); 
  Serial.print(" Z = ");
  Serial.println(Zg); 
  delay(300);  //刷新頻率0.3秒
  
}
  • 實(shí)驗(yàn)效果
02S11003.png

配合使用

  • 實(shí)驗(yàn)?zāi)康?

將 ADXL345 測(cè)量輸出值轉(zhuǎn)換成角度值,并在顯示在 12864 液晶擴(kuò)展板

  • 實(shí)驗(yàn)硬件

1、Carduino UNO R3 控制器 * 1
2、12864 液晶擴(kuò)展板 * 1
3、杜邦線 * 4
4、USB 數(shù)據(jù)線 * 1

  • 軟件環(huán)境:Arduino IDE 1.7.10
  • 硬件連接
02S11005.png
  • 例子程序
#include "U8glib.h"
#include <Wire.h>  //調(diào)用arduino自帶的I2C庫(kù)

#define Register_ID 0     //器件ID
#define Register_2D 0x2D  //靜止、活動(dòng)、休眠、喚醒
#define Register_X0 0x32  //X軸數(shù)據(jù)0
#define Register_X1 0x33  //X軸數(shù)據(jù)1
#define Register_Y0 0x34  //Y軸數(shù)據(jù)0
#define Register_Y1 0x35  //Y軸數(shù)據(jù)1

int ADXAddress = 0xA7>>1;  //轉(zhuǎn)換為7位地址
int X0,X1,X_out;
int Y0,Y1,Y_out;
int valx,valy;

U8GLIB_MINI12864 u8g(5, 6, 2, 4, 3); 

void draw() 
{
  u8g.setFont(u8g_font_unifont);   
  
  u8g.drawStr( 0,11,"x_angle:");
  u8g.setPrintPos(70,11);
  u8g.print(valx);
  
  u8g.drawStr( 0,36,"y_angle:");
  u8g.setPrintPos(70,36);
  u8g.print(valy); 
  
  u8g.drawStr( 3, 63,"lifestyle201.com" );
  }
  
int Readx()
{
 Wire.beginTransmission(ADXAddress);
  Wire.write(Register_X0);//請(qǐng)求X0數(shù)據(jù)
  Wire.write(Register_X1);//請(qǐng)求X1數(shù)據(jù)
  Wire.endTransmission();
  Wire.requestFrom(ADXAddress,2);//發(fā)送請(qǐng)求
  if(Wire.available()<=2);
  {
    X0 = Wire.read();//收到X0數(shù)據(jù)
    X1 = Wire.read();//收到X1數(shù)據(jù)
    X1 = X1<<8;
    X_out = X0+X1;
  }
  valx = map(X_out,-256,256,-90,90);
  return valx;
}
  
  int Ready()
  {
   Wire.beginTransmission(ADXAddress);
   Wire.write(Register_Y0);
   Wire.write(Register_Y1);
   Wire.endTransmission();
   Wire.requestFrom(ADXAddress,2);
   if(Wire.available()<=2);
  {
    Y0 = Wire.read();
    Y1 = Wire.read();
    Y1 = Y1<<8;
    Y_out = Y0+Y1;
  }
  valy = map(Y_out,-256,256,-90,90);
  return valy;
  }
void setup() {
  Serial.begin(9600); //設(shè)置通信波特率
  Wire.begin();  //初始化I2C
  Wire.beginTransmission(ADXAddress);//發(fā)送芯片地址
  Wire.write(Register_2D);//特性控制
  Wire.write(8);//關(guān)閉休眠模式
  Wire.endTransmission();//結(jié)束發(fā)送
}
 
void loop() { 
  valy = Ready();
  valx = Readx();
    u8g.firstPage();
  do  {
    draw();
  } 
  while( u8g.nextPage() );
  delay(200);
}
  • 實(shí)驗(yàn)效果

如圖所示在 LCD12864 液晶擴(kuò)展板上會(huì)顯示出當(dāng)前在X軸方向和Y軸方向的傾斜角度值

02S11004.png

資料下載

Erweima.png
  • 產(chǎn)品資料

下載鏈接:https://pan.baidu.com/s/1UB9Q85W7t2_1XxA51o5cug 提取碼:8i4s