學(xué)物聯(lián)網(wǎng),來(lái)萬(wàn)物簡(jiǎn)單IoT物聯(lián)網(wǎng)??!
一、產(chǎn)品簡(jiǎn)介
ADXL345是一款完整的3軸加速度測(cè)量系統(tǒng),可選擇的測(cè)量范圍有士2g,士4g,士8g或士16g。它既能測(cè)量運(yùn)動(dòng)或沖擊導(dǎo)致的動(dòng)態(tài)加速度,也能測(cè)量靜止加速度,例如重力加速度,這樣的特性讓它可作為傾斜傳感器使用。該傳感器還具備單擊 /雙擊探測(cè),自由落體探測(cè),并允許用戶設(shè)置一個(gè)加速度閥值,當(dāng)加速度值超過(guò)設(shè)定閥值后可以產(chǎn)生一個(gè)信號(hào)輸出。所有這些功能都可以映射到2個(gè)中斷上。
主控板可以通過(guò)I2C或SPI和該模塊進(jìn)行通信,本文中的驅(qū)動(dòng)僅提供通過(guò)I2C接口和它進(jìn)行通信,該傳感器模組管腳定義及I2C模式下的典型電路請(qǐng)參考下圖。
引腳定義
名稱(chēng) | 說(shuō)明 |
---|---|
GND | 地線 |
VCC | 電源正極 |
CS | SPI模式下片選信號(hào) |
INT1 | 中斷1引腳 |
INT2 | 中斷2引腳 |
SDO | SPI模式下數(shù)據(jù)輸出引腳 |
SCL | I2C模式下時(shí)鐘線 |
SDA | I2C模式下數(shù)據(jù)線 |
二、ADXL345芯片技術(shù)參數(shù)
- 工作電壓:2.0v~3.6v
- 功耗:40~145uA,待機(jī)模式僅0.1uA
- 分辨率:13位
- 三軸加速度計(jì)可編程范圍:士2g,士4g,士8g或士16g可變量程
- 工作溫度:-40°C~+85°C
- 通信接口:400KHz I2C或2MHz SPI
- 加速度計(jì)噪聲:100μg/√Hz
- 片上16位ADC
- 用戶可編程中斷
- 封裝尺寸:LGA 3mm_5mm_1mm
三、軟件接口
ADXL345(i2cObj) - 創(chuàng)建ADXL345驅(qū)動(dòng)對(duì)象
- 函數(shù)原型:
gyroDev = ADXL345(i2cObj)
- 參數(shù)說(shuō)明:
參數(shù) | 類(lèi)型 | 必選參數(shù)? | 說(shuō)明 |
---|---|---|---|
i2cObj | I2C | 是 | 創(chuàng)建I2C對(duì)象 |
- 返回值:
執(zhí)行成功,返回ADXL345對(duì)象;創(chuàng)建失敗,拋出Exception - 示例代碼:
from machine import I2C,Pin # 驅(qū)動(dòng)庫(kù)
import adxl34x # ADXL345加速度計(jì)傳感器驅(qū)動(dòng)庫(kù)
# 初始化I2C類(lèi)型的設(shè)備
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("ADXL345 inited!")
gyroDev = adxl34x.ADXL345(i2cObj) # 初始化ADXL345傳感器對(duì)象
- 輸出:
ADXL345 inited!
getAcceleration - 創(chuàng)建ADXL345驅(qū)動(dòng)對(duì)象
- 函數(shù)原型:
ADXL345.getAcceleration()
- 參數(shù)說(shuō)明:
無(wú) - 返回值:
x,y,x三個(gè)方向的加速度值,格式:(xa, ya, za),單位:m/s2。
參數(shù) | 類(lèi)型 | 說(shuō)明 |
---|---|---|
xa | int | X軸方向的加速度 |
ya | int | X軸方向的加速度 |
za | int | X軸方向的加速度 |
- 示例代碼:
from machine import I2C,Pin # 驅(qū)動(dòng)庫(kù)
import adxl34x # ADXL345加速度計(jì)傳感器驅(qū)動(dòng)庫(kù)
# 初始化I2C類(lèi)型的設(shè)備
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("ADXL345 inited!")
gyroDev = adxl34x.ADXL345(i2cObj) # 初始化ADXL345傳感器對(duì)象
xa, ya, za = gyroDev.getAcceleration()
print("acceleration:", xa, ya, za)
- 輸出:
分別代表x,y,z三個(gè)方向的實(shí)際加速度測(cè)量值
ADXL345 inited!
acceleration: <xx> <yy> <zz>
五、通信協(xié)議
主控芯片和ADXL345傳感器之間通信所用命令字如下表所示:
序號(hào) | 寄存器 | 功能說(shuō)明 | 命令字宏定義 |
---|---|---|---|
1 | 0x0 | 讀取ADC采樣結(jié)果 | ADS1x15_POINTER_CONVERSION |
2 | 0x1 | 設(shè)定ADC采樣參數(shù) | ADS1x15_POINTER_CONFIG |
3 | 0x2 | 設(shè)定閾值的低8位 | ADS1x15_POINTER_LOW_THRESHOLD |
4 | 0x3 | 設(shè)定閾值的高8位 | ADS1x15_POINTER_HIGH_THRESHOLD |
- 設(shè)定ADC量測(cè)的參數(shù)并讀取量測(cè)結(jié)果
通過(guò)I2C向ADS1x15_POINTER_CONFIG寄存器寫(xiě)入ADC量測(cè)的參數(shù)(目標(biāo)通道、增益、測(cè)量模式、測(cè)量速率)
等待ADC采樣結(jié)束(時(shí)間為一個(gè)采樣周期(1/采樣周期)+一個(gè)很小的偏差,如0.1ms)
通過(guò)I2C發(fā)送讀取ADS11x5的ADS1x15_POINTER_CONVERSION寄存器值的指令
將測(cè)量結(jié)果轉(zhuǎn)換成實(shí)際電壓
測(cè)量的數(shù)字結(jié)果轉(zhuǎn)化為實(shí)際電壓算法請(qǐng)參考驅(qū)動(dòng)中的readVoltage函數(shù)的實(shí)現(xiàn)
六、工作原理
ADXL34x傳感器屬于微型機(jī)電系統(tǒng)傳感器,主要由硅晶片上的微機(jī)械結(jié)構(gòu)組成。該結(jié)構(gòu)由多晶硅彈簧懸掛,當(dāng)在X,Y和/或Z軸上受到加速度時(shí),它可以在任何方向上平滑偏轉(zhuǎn)。撓曲會(huì)導(dǎo)致固定板和連接到懸掛結(jié)構(gòu)的板之間的電容發(fā)生變化。每個(gè)軸上的電容變化都會(huì)轉(zhuǎn)換為與該軸上的加速度成比例的輸出電壓。該傳感器便是通過(guò)對(duì)此電壓進(jìn)行采樣從而再計(jì)算的得出每個(gè)方向上的加速度。
ADXL34x傳感器的系統(tǒng)框圖如下圖所示:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-843476.html
參考文獻(xiàn)及購(gòu)買(mǎi)鏈接
[1] ADXL345 ADC轉(zhuǎn)換器
[2] ADXL345 購(gòu)買(mǎi)鏈接文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-843476.html
到了這里,關(guān)于物聯(lián)網(wǎng)AI MicroPython傳感器學(xué)習(xí) 之 ADXL345 3軸加速度傳感器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!