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