完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>
標簽 > ADXL345
ADXL345是一款三軸、數(shù)字化的加速度傳感器,它能測X、Y、Z三個方向軸上的加速度,它可以在傾斜檢測應用中測量靜態(tài)重力加速度,還可以測量運動或沖擊導致的動態(tài)加速度。
ADXL345是一款三軸、數(shù)字化的加速度傳感器,它能測X、Y、Z三個方向軸上的加速度,它可以在傾斜檢測應用中測量靜態(tài)重力加速度,還可以測量運動或沖擊導致的動態(tài)加速度。
ADXL345是一款三軸、數(shù)字化的加速度傳感器,它能測X、Y、Z三個方向軸上的加速度,它可以在傾斜檢測應用中測量靜態(tài)重力加速度,還可以測量運動或沖擊導致的動態(tài)加速度。
二、特點:A.可達到最高13位的全分辨率。
B.具有+/-2g,+/-4g,+/-8g,+/-16g,幾個不同的可選量程。
C.靈敏度高,最高可達3.9 mg/LSB(一般的ADC的位數(shù)為10位,當量程為+/-2g時,數(shù)字化后,即2^10LSB/4g=256LSB/g,期1g的加速度對應的輸出為256,靈敏度則為其倒數(shù)即1/(256LSB/g)=3.9mg/LSB)
D.低功耗,40~145uA 的超低功耗,待機模式只有 0.1uA。
E. IC 尺寸很小,只有 3mm*5mm*1mm, LGA 封裝。
X、Y、Z三軸
三、當 ADXL345 沿檢測軸正向加速時,它對正加速度進行檢測。在檢測重力時當檢測軸的方向與重力的方向相反時檢測到的才是正加速度。
四、ADXL345引腳配置圖
引腳功能描述:
1. VDD I/O:數(shù)字接口電源電壓。 2、4、5GND:該引腳必須接地。
3.RESERVED:保留。該引腳必須連接到VS或保持斷開。
6.VS:電源電源。 7. CS:片選
8、9.INT1/INT2:中斷1/2輸出 10.NC:內(nèi)部不連接
11.RESERVED:保留。該引腳必須接地或保持斷開。
12.SDO/ALT ADDRESS:串行數(shù)據(jù)輸出(SPI 4線)/備用I2C地址選擇(I2C)。
13.SDA/SDI/SDIO:串行數(shù)據(jù)(I2C)/串行數(shù)據(jù)輸入(SPI 4線)/串行數(shù)據(jù)輸入和輸出(SPI 3線)。
14.SCL/SCLK:串行通信時鐘。SCL為I2C時鐘,SCLK為SPI時鐘。
五、相關(guān)硬件連接知識
用三根線將 STM32 與 ADXL345連接,主函數(shù)通過查詢 ADXL345 得到 x、 y 和 z 三個方向的加速度值(讀數(shù)值),然后將其轉(zhuǎn)換為與自然系坐標的角度,并將結(jié)果在 LCD 模塊上顯示出來。DS0 來指示程序正在運行,通過按下WK_UP 按鍵,可以進行 ADXL345 的自動校準( DS1 用于提示正在校準)。所要用到的硬件資源如下:
1) 指示燈 DS0、 DS1
2) WK_UP 按鍵
3) TFTLCD 模塊
4) ADXL345
ADXL345接口與 MCU (STM32F1O3)的連接原理圖如下:
ADXL345 通過三根線與 STM32 開發(fā)板連接,其中 IIC 總線接在 PB10 和 PB11 上面。 ADXL345 的兩個中斷輸出, 選用其中的INT1,連接在 STM32 的 PF11 腳,另外這里的地址線是接 3.3V,所以 ADXL345 的地址是 0X1D,轉(zhuǎn)換為 0X3A 寫入, 0X3B 讀取。(如果ALT ADDRESS腳(12腳)接地, ADXL345地址為0X53(不包含最低位),0XA7寫入和0XA6讀?。?/p>
1. ADXL345 的初始化步驟如下:
1) 上電
2) 等待 1.1ms
3) 初始化命令序列
4) 結(jié)束
其中上電這個動作發(fā)生在開發(fā)板第一次上電的時候,在上電之后,等待 1.1ms 左右,就可以開始發(fā)送初始化序列了,初始化序列一結(jié)束, ADXL345 就開始正常工作了。 這里的初始化序列,最簡單的只需要配置 3 個寄存器DATA_FORMAT 、 POWER_CTL 、INT_ENABLE,下面對三個寄存器做簡單介紹:
0x31 DATA_FORMAT 數(shù)據(jù)格式控制寄存器(讀/寫)
D7D6D5D4D3D2D1D0
SELF_TESTSPIINT_INVERT0FULL_RESJUSTIFYJUSTIFY
DATA_FORMAT 0x31寄存器控制寄存器0x32至0x37(即0x32 DATAX0 X軸數(shù)據(jù)0 , 0x33 DATAX1 X軸數(shù)據(jù)1(只讀), 0x34 DATAY0 Y軸數(shù)據(jù)0 , 0x35 DATAY1 Y軸數(shù)據(jù)1(只讀), 0x36 DATAZ0 Z軸數(shù)據(jù)0 , 0x37 DATAZ1 Z軸數(shù)據(jù)1(只讀),其中DATAx/y/z0是低字節(jié),DATAx/y/z1是高字節(jié))的數(shù)據(jù)輸出格式。超出±16 g范圍以外的所有數(shù)據(jù)必須剪除,避免溢出。
SELF_TEST位:置“1” 自測力應用至傳感器,造成輸出數(shù)據(jù)轉(zhuǎn)換,置“0”禁用自測力。
SPI位:置“1”使設備工作在3線SPI模式,置“0”使設備工作在4線SPI模式。
INT_INVERT位:置“1”中斷為低電平有效,置“0”中斷為高電平有效。
FULL_RES位:置“1”全分辨率模式(13位),設備輸出分辨率4mg/LSB。置“0”10位模式,輸出范圍由RANGE位確定。
JUSTIFY位:置“1”左對齊,置“0”右對齊并進行符號擴展。
RANGE:設置測量范圍,見下表
D1D0范圍
00±2g
01±4g
10±8g
11±16g
0x2D POWER_CTL 省電特性控制
D7D6D5D4D3D2D1D0
00LinkAUTO_SLEEPMeasureSleepWakeUp
Link(鏈接)位:置1,該為能使能活動和靜止功能,檢測到靜止是活動檢測開始,關(guān)閉靜止檢測,同理,檢測到活動時,開啟靜止檢測同時關(guān)閉活動檢測。置0,靜止檢測和活動檢測同時開啟。
AUTO_SLEEP位:置1,自動休眠功能使能。該模式下,如果使能靜止功能,檢測出靜止,則 ADXL345自動切換到休眠模式。置0,禁止自動切換到休眠模式。
Measure位:置1,器件處于測量模式,置0,處于待機模式。
Sleep位:置1,休眠模式,此時將禁用DATA_READY,停止向FIFO發(fā)送數(shù)據(jù),采樣速率由WakeUp位確定,置0,正常工作模式。
WakeUp位:控制休眠模式下的讀取頻率,如下表:
D1D0休眠模式采樣頻率(Hz)
008
014
102
111
0x2E INT_ENABLE 中斷使能控制
D7D6D5D4
DATA_READYSINGLE_TAPDOUBLE_TAP活動
D3D2D1D0
靜止FREE_FALLWaterMarkOverRun
該寄存器各位置1,則使能對應中斷功能,置0則不使用相對應中斷。其中不管INT_ENABLE寄存器設置如何,如果有相應的事件發(fā)生,總是設置DATA_READY位、WaterMark(水印)位和OverRun(溢出)位,并通過讀取DATAX、 DATAY和DATAZ寄存器將數(shù)據(jù)清零。
2.ADXL345相關(guān)模塊網(wǎng)絡程序參考學習
adxl345.c:
#include “adxl345.h”
#include “sys.h”
#include “delay.h”
#include “math.h”
//初始化 ADXL345.
//返回值:0,初始化成功;1,初始化失敗。
u8 ADXL345_Init(void)
{
IIC_Init(); //初始化 IIC 總線
if(ADXL345_RD_Reg(DEVICE_ID)==0XE5) //讀取器件 ID
{
ADXL345_WR_Reg(DATA_FORMAT,0X2B); // 0禁用自測力,1低電平有效,1全分辨模式,0右對齊,//11測量范圍±16g,則0010 1011———》 0x2B
ADXL345_WR_Reg(BW_RATE,0x0A); //數(shù)據(jù)輸出速度為 100Hz
ADXL345_WR_Reg(POWER_CTL,0x28); //鏈接使能,測量模式
ADXL345_WR_Reg(INT_ENABLE,0x00); //不使用中斷
ADXL345_WR_Reg(OFSX,0x00); //X軸偏移為0
ADXL345_WR_Reg(OFSY,0x00); // y軸偏移為0
ADXL345_WR_Reg(OFSZ,0x00); // z軸偏移為0
return 0;
}
return 1;
}
//寫 ADXL345 寄存器
//addr:寄存器地址
//val:要寫入的值
//返回值:無
void ADXL345_WR_Reg(u8 addr,u8 val)
{
IIC_Start();
IIC_Send_Byte(ADXL_WRITE); //發(fā)送寫器件指令
IIC_Wait_Ack();
IIC_Send_Byte(addr); //發(fā)送寄存器地址
IIC_Wait_Ack();
IIC_Send_Byte(val); //發(fā)送值
IIC_Wait_Ack();
IIC_Stop(); //產(chǎn)生一個停止條件
}
//讀 ADXL345 寄存器
//addr:寄存器地址
//返回值:讀到的值
u8 ADXL345_RD_Reg(u8 addr)
{
u8 temp=0;
IIC_Start();
IIC_Send_Byte(ADXL_WRITE); //發(fā)送寫器件指令
temp=IIC_Wait_Ack();
IIC_Send_Byte(addr); //發(fā)送寄存器地址
temp=IIC_Wait_Ack();
IIC_Start(); //重新啟動
IIC_Send_Byte(ADXL_READ); //發(fā)送讀器件指令
temp=IIC_Wait_Ack();
temp=IIC_Read_Byte(0); //讀取一個字節(jié),不繼續(xù)再讀,發(fā)送 NAK
IIC_Stop(); //產(chǎn)生一個停止條件
return temp; //返回讀到的值
}
//讀取 ADXL 的平均值
//x,y,z:讀取 10 次后取平均值
void ADXL345_RD_Avval(short *x,short *y,short *z) //x、y、z為short型
{
short tx=0,ty=0,tz=0; //數(shù)據(jù)清零
u8 i;
for(i=0;i《10;i++)
{
ADXL345_RD_XYZ(x,y,z);
delay_ms(10);
tx+=(short)*x; ty+=(short)*y; tz+=(short)*z;
}
*x=tx/10; *y=ty/10; *z=tz/10;
}
//自動校準
//xval,yval,zval:x,y,z 軸的校準值
void ADXL345_AUTO_Adjust(char *xval,char *yval,char *zval)
{
short tx,ty,tz;
u8 i;
short offx=0,offy=0,offz=0;
ADXL345_WR_Reg(POWER_CTL,0x00); //清除寄存器原來的設置。
delay_ms(100);
ADXL345_WR_Reg(DATA_FORMAT,0X2B);
//低電平中斷輸出,13 位全分辨率,輸出數(shù)據(jù)右對齊,16g 量程
ADXL345_WR_Reg(BW_RATE,0x0A); //數(shù)據(jù)輸出速度為 100Hz
ADXL345_WR_Reg(POWER_CTL,0x28); //鏈接使能,測量模式
ADXL345_WR_Reg(INT_ENABLE,0x00); //不使用中斷 `
ADXL345_WR_Reg(OFSX,0x00);
ADXL345_WR_Reg(OFSY,0x00);
ADXL345_WR_Reg(OFSZ,0x00);
delay_ms(12);
for(i=0;i《10;i++)
{
ADXL345_RD_Avval(&tx,&ty,&tz);
offx+=tx; offy+=ty; offz+=tz;
}
offx/=10; offy/=10; offz/=10;
*xval=-offx/4; *yval=-offy/4; *zval=-(offz-256)/4; //結(jié)果強制轉(zhuǎn)換為char型,全分辨
//率下,每個輸出LSB為3.9 mg或偏移寄存器LSB的四分之一。由于偏移寄存器為附加寄存器, //0 g值被否定,并四舍五入至最接近偏移寄存器的LSB:(round為四舍五入計算)
//XOFFSET = −Round(offx/4) , YOFFSET = −Round(offy/4) ,其中由于靜止時XY軸數(shù)據(jù)接近0,而
//z軸接近255,所以ZOFFSET = −Round[(offz-256)/4] ,其中offz-256相當于調(diào)轉(zhuǎn)Z軸,此時三個//軸靜止時數(shù)據(jù)都接近0,并且他們的結(jié)果要取補碼
ADXL345_WR_Reg(OFSX,*xval);
ADXL345_WR_Reg(OFSY,*yval);
ADXL345_WR_Reg(OFSZ,*zval);
}
//讀取 3 個軸的數(shù)據(jù)
//x,y,z:讀取到的數(shù)據(jù)
void ADXL345_RD_XYZ(short *x,short *y,short *z)
{
u8 buf[6],i;
IIC_Start();
IIC_Send_Byte(ADXL_WRITE); //發(fā)送寫器件指令
IIC_Wait_Ack();
IIC_Send_Byte(0x32); //發(fā)送寄存器地址(數(shù)據(jù)緩存的起始地址為 0X32)
IIC_Wait_Ack();
IIC_Start(); //重新啟動
IIC_Send_Byte(ADXL_READ); //發(fā)送讀器件指令
IIC_Wait_Ack();
for(i=0;i《6;i++)
{
if(i==5)buf[i]=IIC_Read_Byte(0); //讀取一個字節(jié),不繼續(xù)再讀,發(fā)送 NACK
else buf[i]=IIC_Read_Byte(1); //讀取一個字節(jié),繼續(xù)讀,發(fā)送 ACK
}
IIC_Stop(); //產(chǎn)生一個停止條件
*x=(short)(((u16)buf[1]《《8)+buf[0]); // 將兩個8位字節(jié)轉(zhuǎn)化為16位的高8位和低8位
*y=(short)(((u16)buf[3]《《8)+buf[2]);
*z=(short)(((u16)buf[5]《《8)+buf[4]);
}
//讀取 ADXL345 的數(shù)據(jù) times 次,再取平均
//x,y,z:讀到的數(shù)據(jù)
//times:讀取多少次
void ADXL345_Read_Average(short *x,short *y,short *z,u8 times)
{
u8 i;
short tx,ty,tz;
*x=0; *y=0; *z=0;
if(times)//讀取次數(shù)不為 0
{
for(i=0;i《times;i++)//連續(xù)讀取 times 次
{
ADXL345_RD_XYZ(&tx,&ty,&tz);
*x+=tx; *y+=ty; *z+=tz;
delay_ms(5);
}
*x/=times; *y/=times; *z/=times;
}
}
//得到角度
//x,y,z:x,y,z 方向的重力加速度分量(不需要單位,直接數(shù)值即可)
//dir:要獲得的角度.0,與 Z 軸的角度;1,與 X 軸的角度;2,與 Y 軸的角度。
//返回值:角度值。單位 0.1° 。
short ADXL345_Get_Angle(float x,float y,float z,u8 dir)
{
float temp,res=0;
switch(dir)
{
case 0://與自然 Z 軸的弧度
temp=sqrt((x*x+y*y))/z;
res=atan(temp);
break;
case 1://與自然 X 軸的弧度
temp=x/sqrt((y*y+z*z));
res=atan(temp);
break;
case 2://與自然 Y 軸的弧度
temp=y/sqrt((x*x+z*z));
res=atan(temp);
break;
}
return res*1800/3.14; //把弧度轉(zhuǎn)化為角度
過采樣原理在ADXL345上的實現(xiàn)、配置步驟、數(shù)據(jù)處理及噪聲考慮因素,以提高其輸出分辨率
介紹了過采樣技術(shù)在 ADXL345 三軸加速度計中的應用,包括過采樣原理在 ADXL345 上的實現(xiàn)、配置步驟、數(shù)據(jù)處理及噪聲考慮因素,以提高其輸出分辨...
ADXL345 3 軸數(shù)字加速計: 小型、薄片式、低功耗移動設備應用的理想選擇
具有 13 位分辨率的 ADXL345 3 軸數(shù)字加速計 Analog Devices 的小型、薄片式、低功耗 ADXL345 加速計是移動設備應用的理...
ADXL345是一種MEMS加速度計,廣泛應用于許多領(lǐng)域,如運動追蹤、健康監(jiān)測和自動導航等。然而,有時候我們可能會遇到ADXL345在klipper中不...
ADXL345和MPU6050是兩種常見的加速度計和陀螺儀傳感器,用于測量物體的加速度和旋轉(zhuǎn)速度。它們在設計、性能和應用方面有一些區(qū)別。在本文中,我們將...
2024-01-04 標簽:數(shù)據(jù)傳輸ADXL345陀螺儀傳感器 7671 0
ADXL345三軸數(shù)字加速度計的驅(qū)動設計與實現(xiàn)
移動設備的廣泛應用增加對移動過程中各種參數(shù)的檢測需求。ADXL345三軸數(shù)字加速度計可以用來檢測加速度、進而測量傾斜角度等。在這一篇中,我們將討論ADX...
ADXL202雙軸加速度計在導航系統(tǒng)中有重要的作用
過去十年來,使用全球定位系統(tǒng)(GPS)的車輛導航越來越受到關(guān)注; GPS導航經(jīng)常安裝在當今的高端豪華車和許多商用車中。
2019-04-12 標簽:ADXL345 2544 0
計步器是一種頗受歡迎的日常鍛煉進度.,可以激勵人們挑戰(zhàn)自己,增強體質(zhì),幫助瘦身。早期設計利用加重的機械開關(guān)檢測步伐,并帶有一個簡單的計數(shù)器?;蝿舆@些裝置...
2019-02-06 標簽:傳感器微機電系統(tǒng)ADXL345 1.9萬 0
類別:電子資料 2023-06-19 標簽:模擬器ADXL345Raspberry Pi
ADXL345的數(shù)據(jù)手冊和原理圖及測試程序免費下載立即下載
類別:IC datasheet pdf 2019-12-09 標簽:傳感器存儲器二進制
采用ADXL345加速度計實現(xiàn)球形相機的全景拍攝
球形相機拋向空中時,可以拍攝完整的球面全景照片。到達經(jīng)ADXL345加速度計確定的最高點時,36個手機攝像頭模塊會拍攝一張完整的全景照片。音樂:ADO ...
ADXL345 MEMS加速度計開發(fā)板的設置和使用方法
ADXL345 MEMS加速度計開發(fā)板。由ADI公司的Nitzan Gadish說明如何設置和使用ADXL345開發(fā)板。該板能夠捕捉3軸在時間上的數(shù)據(jù),...
編輯推薦廠商產(chǎn)品技術(shù)軟件/工具OS/語言教程專題
電機控制 | DSP | 氮化鎵 | 功率放大器 | ChatGPT | 自動駕駛 | TI | 瑞薩電子 |
BLDC | PLC | 碳化硅 | 二極管 | OpenAI | 元宇宙 | 安森美 | ADI |
無刷電機 | FOC | IGBT | 逆變器 | 文心一言 | 5G | 英飛凌 | 羅姆 |
直流電機 | PID | MOSFET | 傳感器 | 人工智能 | 物聯(lián)網(wǎng) | NXP | 賽靈思 |
步進電機 | SPWM | 充電樁 | IPM | 機器視覺 | 無人機 | 三菱電機 | ST |
伺服電機 | SVPWM | 光伏發(fā)電 | UPS | AR | 智能電網(wǎng) | 國民技術(shù) | Microchip |
Arduino | BeagleBone | 樹莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 華秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |