SKU:RB-02S110 ADXL345 三軸加速度傳感器
目錄 |
產(chǎn)品概述
Arduino ADXL345 三軸加速度傳感器采用 ADXL345 芯片,此芯片應用 MEMS 技術(shù),具有 SPI 和 IIC 數(shù)字輸出功能,芯片小巧輕薄,功耗低,量程可變,分辨率高。外形尺寸僅為3mm×5mm×1mm,面大小相當于小拇指指甲蓋的1/3;在典型電壓 Vs=2.5V 時功耗電流約為 25~130μA,比先期采用模擬輸出的產(chǎn)品 ADXL330 功耗典型值低了約70~175 μA;最大量程可達±16g,另可選擇±2、±4、±8g 量程,可采用固定的4mg/LSB 分辨率模式,該分辨率可測得 0.25°的傾角變化。ADXL345 非常適合移動設備應用。它可以在傾斜檢測應用中測量靜態(tài)重力加速度,還可以測量運動或沖擊導致的動態(tài)加速度。該器件提供多種特殊檢測功能,活動和非活動檢測功能。通過比較任意軸上的加速度與用戶設置的閾值來檢測有無運動發(fā)生。敲擊檢測功能可以檢測任意方向的單振和雙振動作。自由落體檢測功能可以檢測器件是否正在掉落。這些功能可以獨立映射到兩個中斷輸出引腳中的一個。
產(chǎn)品參數(shù)
- 產(chǎn)品名稱:ADXL345 加速度模塊
- 產(chǎn)品貨號:RB - 02S110
- 工作電壓:3V - 5V
- 接口類型:IIC 接口
- 輸出信號:數(shù)字信號
- 產(chǎn)品尺寸:30 mm * 25 mm
- 固定孔間距:23 mm * 18 mm
- 固定孔尺寸:M3
- 重量大?。?g
- 引腳定義 :
- -:電源地
- +:電源正極
- SDA:IIC接口時鐘端
- SCL:IIC接口數(shù)據(jù)端
- 產(chǎn)品尺寸圖:
使用方法
- 產(chǎn)品資料及例子程序下載:http://pan.baidu.com/s/1c2KDSli
基本使用
- 實驗目的
使用 ADXL345 模塊測試三個軸的偏移量,通過 Arduino IDE 的串口監(jiān)視器將數(shù)據(jù)打印顯示出來
- 實驗硬件
1、Carduino UNO R3 控制器 * 1
2、傳感器擴展板 V5.0 * 1
3、4P 傳感器連接線 * 1
4、USB 數(shù)據(jù)線 * 1
- 軟件環(huán)境:Arduino IDE 1.7.10
- 硬件連接
- 例子程序
#include <Wire.h> //調(diào)用arduino自帶的I2C庫 #define Register_ID 0 //器件ID #define Register_2D 0x2D //靜止、活動、休眠、喚醒 #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); //設置通信波特率 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);//請求X0數(shù)據(jù) Wire.write(Register_X1);//請求X1數(shù)據(jù) Wire.endTransmission(); Wire.requestFrom(ADXAddress,2);//發(fā)送請求 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ù)點后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秒 }
- 實驗效果
配合使用
- 實驗目的
將 ADXL345 測量輸出值轉(zhuǎn)換成角度值,并在顯示在 12864 液晶擴展板
- 實驗硬件
1、Carduino UNO R3 控制器 * 1
2、12864 液晶擴展板 * 1
3、杜邦線 * 4
4、USB 數(shù)據(jù)線 * 1
- 軟件環(huán)境:Arduino IDE 1.7.10
- 硬件連接
- 例子程序
#include "U8glib.h" #include <Wire.h> //調(diào)用arduino自帶的I2C庫 #define Register_ID 0 //器件ID #define Register_2D 0x2D //靜止、活動、休眠、喚醒 #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);//請求X0數(shù)據(jù) Wire.write(Register_X1);//請求X1數(shù)據(jù) Wire.endTransmission(); Wire.requestFrom(ADXAddress,2);//發(fā)送請求 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); //設置通信波特率 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); }
- 實驗效果
如圖所示在 LCD12864 液晶擴展板上會顯示出當前在X軸方向和Y軸方向的傾斜角度值
產(chǎn)品相關(guān)推薦
產(chǎn)品購買地址
周邊產(chǎn)品推薦
Carduino UNO R3 控制器
Arduino 12864 液晶擴展板
4P 傳感器連接線