我們都知道加速度計(jì)和陀螺儀,它們主要用于檢測(cè)加速度。雖然加速度計(jì)可以測(cè)量線性加速度,但陀螺儀可以幫助找到旋轉(zhuǎn)加速度。陀螺儀 用于測(cè)量角速度,該角速度使用地球的重力來(lái)確定運(yùn)動(dòng)中物體的方向。有一個(gè)像 MPU6050 這樣的傳感器,它同時(shí)具有加速度計(jì)和陀螺儀,它作為一個(gè) 慣性測(cè)量單元 (IMU) 來(lái)查找方向、位置和速度。
在這里,我們討論的是ADXL345 加速度計(jì),它用于測(cè)量 x、y 和 z 軸的加速度或速度變化。這些小型傳感器用于汽車(chē)和自行車(chē)以檢測(cè)事故以展開(kāi)安全氣囊,還用于手機(jī)中用于指南針和位置跟蹤等各種應(yīng)用。
加速度計(jì)傳感器的類型
市場(chǎng)上有許多類型的MEMS 加速度計(jì)傳感器。它們可以根據(jù)精度、功耗和接口進(jìn)行分類。所有這些傳感器都是便攜式的,可以安裝在任何類型的設(shè)備中,例如可穿戴設(shè)備。這些傳感器測(cè)量 3 軸 (x,y,z) 的加速度。
一些廣泛使用的傳感器是:
ADXL335
ADXL345
ADXL356
這些加速度計(jì)傳感器非常受歡迎,除了這三個(gè)之外,還有許多其他加速度計(jì)傳感器,如 ADXL354、ADXL355、ADXL372 等。
讓我們看看這些傳感器之間的區(qū)別。
比較:ADXL335 與 ADXL345 與 ADXL356
在上述三者中,ADXL345 因其數(shù)字特性而易于接口。但它的編程很困難,因?yàn)樗m用于 SPI/I2C 協(xié)議。ADXL345 可以測(cè)量靜態(tài)和動(dòng)態(tài)加速度,適用于移動(dòng)應(yīng)用。此外,這些傳感器經(jīng)過(guò)實(shí)驗(yàn)室校準(zhǔn),不需要任何進(jìn)一步的校準(zhǔn)。
在這里,我們將使用ADXL345 傳感器的 Adafruit 庫(kù)將其與 Arduino Uno 連接。
所需組件
Arduino UNO
ADXL345 加速度計(jì)
公母線
面包板
電路原理圖
ADXL345加速度計(jì)與Arduino接口的電路圖如下:
ADXL345 Arduino 連接:
連接 Arduino 的 A4 引腳 (SDA) -》 adxl345 的 SDA 引腳
連接 Arduino 的 A5 引腳 (SCL) -》 adxl345 的 SCL 引腳
連接 Arduino 的 GND -》 adxl345 的 GND 引腳
連接 Arduino 的 5V -》 adxl345 的 Vcc
ADXL345 Arduino代碼說(shuō)明
對(duì)于這個(gè)ADXL345 Arduino項(xiàng)目,我們需要兩個(gè)用于ADXL345傳感器的庫(kù)。
阿達(dá)果ADXL345
Adafruit 統(tǒng)一傳感器
要下載上述庫(kù),請(qǐng)打開(kāi) Arduino IDE 并轉(zhuǎn)到Sketch -》 Include Library -》 Manage Libraries。 搜索 Adafruit ADXL345 并安裝。同樣,搜索 Adafruit Unified sensor 并安裝。
現(xiàn)在,我們準(zhǔn)備好編寫(xiě)代碼了。示例代碼可在文件 -》 示例 -》 Adafruit ADXL345 -》 sensortest 中找到
1. 首先,包含所有必需的庫(kù)頭文件以支持傳感器的功能。在這里,我們還使用線庫(kù)進(jìn)行 I2C 通信。
#include#include #include
2. 使用任何變量(如accel)創(chuàng)建一個(gè)實(shí)例,以使用 ADXL345 Arduino 庫(kù)的各種功能。
Adafruit_ADXL345_Unified 加速度 = Adafruit_ADXL345_Unified();
3. 在void setup()函數(shù)中,使用Serial.begin()函數(shù)初始化串行通信以在串行監(jiān)視器上打印數(shù)據(jù)?,F(xiàn)在,檢查是否連接了有效的 ADXL 傳感器。我們將檢查accel.begin()函數(shù)返回的結(jié)果,如果它返回 false,則打印一條消息,表明沒(méi)有找到有效的傳感器。
無(wú)效設(shè)置() { 序列號(hào).開(kāi)始(9600); if(!accel.begin()) { Serial.println("沒(méi)有找到有效的傳感器"); 而(1); } }
4. 在void loop()函數(shù)中,創(chuàng)建一個(gè)變量以使用sensors_event_t結(jié)構(gòu)。使用此變量(在本例中為“事件”)使用.getevent()函數(shù)填充結(jié)構(gòu)成員?,F(xiàn)在,使用event.acceleration.x()函數(shù)打印 x、y、z 軸的加速度值。
無(wú)效循環(huán)() { sensor_event_t 事件; accel.getEvent(&事件); Serial.print("X:"); Serial.print(event.acceleration.x); 序列號(hào).print(""); Serial.print("Y:"); Serial.print(event.acceleration.y); 序列號(hào).print(""); Serial.print("Z:"); Serial.print(event.acceleration.z); 序列號(hào).print(""); Serial.println("m/s^2"); 延遲(500); }
本文末尾提供了帶有演示視頻的完整代碼。
測(cè)試 ADXL345 加速度計(jì) Arduino 接口
最后,將 ADXL345 傳感器與 Arduino UNO 正確連接,并將代碼上傳到 Arduino Uno 板。然后打開(kāi)串行監(jiān)視器,您將看到 x、y、z 軸的加速度讀數(shù),如下所示。
嘗試向各個(gè)方向緩慢移動(dòng)傳感器并觀察讀數(shù)。
這就是加速度計(jì)如何與 Arduino UNO 一起使用來(lái)檢測(cè) x、y 和 z 軸的變化。
#include
#include
#include
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified();
無(wú)效設(shè)置(無(wú)效)
{
Serial.begin(9600);
if(!accel.begin())
{
Serial.println("未找到有效傳感器");
而(1);
}
}
無(wú)效循環(huán)(無(wú)效)
{
傳感器事件_t事件;
accel.getEvent(&事件);
Serial.print("X:"); Serial.print(event.acceleration.x); 序列號(hào).print("");
Serial.print("Y:"); Serial.print(event.acceleration.y); 序列號(hào).print("");
Serial.print("Z:"); 串行。打?。╡vent.acceleration.z);序列號(hào).print("");
Serial.println("m/s^2");
延遲(500);
}
-
加速度計(jì)
+關(guān)注
關(guān)注
6文章
727瀏覽量
46843 -
ADXL345
+關(guān)注
關(guān)注
14文章
73瀏覽量
34719 -
Arduino
+關(guān)注
關(guān)注
190文章
6498瀏覽量
192134
發(fā)布評(píng)論請(qǐng)先 登錄
ADXL345三軸數(shù)字加速度計(jì)的驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

ADXL345使用方法和調(diào)試經(jīng)驗(yàn)
ADXL345:3軸,±2g數(shù)字加速度計(jì)

基于3軸加速度計(jì)ADXL345的跌倒檢測(cè)應(yīng)用

利用精密模擬微控制器ADuC7024和數(shù)字加速度計(jì)ADXL345檢測(cè)低g加速度

ADXL345 MEMS加速度計(jì)開(kāi)發(fā)板的設(shè)置和使用方法
采用ADXL345加速度計(jì)實(shí)現(xiàn)球形相機(jī)的全景拍攝
GY-291 ADXL345數(shù)字三軸重力加速度傾斜度模塊的資料合集免費(fèi)下載

ADXL345數(shù)字加速度計(jì)的數(shù)據(jù)手冊(cè)免費(fèi)下載

AN-1588:使用連接到ADuC7024精密模擬微控制器的ADXL345數(shù)字加速度計(jì)檢測(cè)低g加速度

ADXL345加速度計(jì)屏幕方向開(kāi)源

ADXL345超低功耗3軸加速度計(jì)應(yīng)用

評(píng)論