众所周知,加速度计和陀螺仪主要用来检测加速度。虽然加速度计可以测量线性加速度,但陀螺仪可以帮助找到旋转加速度。陀螺仪用于测量角速度,角速度利用地球引力来确定运动中物体的方向。例如 MPU6050,它同时具有加速度计和陀螺仪,可以用作惯性测量单元 (IMU) 来查找方向、位置和速度。
ADXL345加速度计,是用来测量 x、y 和 z 轴上的加速度或速度变化。这种小型传感器可以用于汽车和自行车,用来检测检测事故以展开安全气囊,也用于手机中的各种应用,如指南针和位置跟踪。
加速度计传感器的类型
市场上有许多类型的 MEMS 加速度计传感器。它们可以根据精度、功耗和接口进行分类。所有这些传感器都是便携式的,可以安装在任何类型的设备中,如可穿戴设备。这些传感器测量 3 轴 (x,y,z) 的加速度。
比较常用的传感器有:
1、ADXL335
2、ADXL345
3、ADXL356
除了这三个之外,还有许多其他加速度计传感器,如ADXL354、ADXL355、ADXL372等。
ADXL356 | ADXL345 | ADXL335 | |
量程 | ±10g ~ ±40g | ±16g | ±3g,小量程,更精确 |
接口 | 模拟 | SPI、I2C | 模拟 |
功耗 | 低,典型值:150μA | 低,典型值:140μA | 一般,典型值:350μA |
价格 | 高 | 低 | 最低 |
上面三种传感器中,ADXL345由于是基于SPI/I2C协议的数字信号而易于交互,但需要一定的编程工作量。ADXL345可以测量静态和动态加速度,适用于移动应用。此外,这些传感器经过实验室校准,不需要任何进一步的校准。
在这里,我们利用 ADXL345 传感器的 Adafruit 库,与 Arduino Uno 连接。
所需组件
1、Arduino UNO
2、ADXL345 加速度计
3、公母导线
4、面包板
电路图
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传感器的库。
1、Adafruit ADXL345
2、Adafruit Unified sensor
要下载上述库,请打开 Arduino IDE 并转到 Sketch -> Include Library -> Manage Libraries。搜索 Adafruit ADXL345 并安装。同样,搜索 Adafruit Unified sensor 并安装。
现在准备编写代码。示例代码可以在 Files -> Example -> Adafruit ADXL345 -> sensortest 中找到。
1、首先,包含所有必需的库头文件以支持传感器的功能。在这里,我们需要使用有线库进行 I2C 通信。
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>
2、使用任何变量(如 accel)创建一个实例,以使用 ADXL345 Arduino 库的各种功能。
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified();
3、在 void setup() 函数中,初始化串行通信以使用 Serial.begin() 函数在串行监视器上打印数据。现在,检查是否连接了有效的 ADXL 传感器。我们将检查 accel.begin() 函数返回的结果,如果它返回 false,然后打印一条没有找到有效传感器的消息。
void setup()
{
Serial.begin(9600);
if(!accel.begin())
{
Serial.println("No valid sensor found");
while(1);
}
}
4、在 void loop() 函数中,创建一个变量以使用 sensors_event_t 结构。使用此变量(在本例中为“event”)使用 .getevent() 函数填充结构成员。现在,使用 event.acceleration.x() 函数在 x,y、z 轴上打印加速度值。
void loop()
{
sensors_event_t event;
accel.getEvent(&event);
Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print("");
Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print("");
Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print("");
Serial.println("m/s^2 ");
delay(500);
}
测试结果
最后,将ADXL345传感器与Arduino UNO正确连接,并将代码上传到Arduino Uno板中。然后打开串行监视器,您将看到 x、y、z 轴的加速度读数,如下所示。
尝试在所有方向上缓慢移动传感器并观察读数。
至此,这就完成了加速度计与 Arduino UNO 连接使用的方法,可以用来检测x,y和z轴的变化。
如果需要给传感器增加无线传输功能,可以通过增加无线物联网控制器实现。
● 内置电池或外接5V电源供电
● 无线传输方式支持4G、NB、WIFI、LORA等
● 支持所有传感器接口
【单片机-传感器】项目定制开发 |