传感器定制
投稿量: 粉丝量: 关注量:

ADXL345与Arduino

众所周知,加速度计和陀螺仪主要用来检测加速度。虽然加速度计可以测量线性加速度,但陀螺仪可以帮助找到旋转加速度。陀螺仪用于测量角速度,角速度利用地球引力来确定运动中物体的方向。例如 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管脚定义

在这里,我们利用 ADXL345 传感器的 Adafruit 库,与 Arduino Uno 连接。

所需组件

1、Arduino UNO
       2、ADXL345 加速度计
       3、公母导线
       4、面包板

电路图

ADXL345加速度计与Arduino接口的电路图如下:

ADXL345

ADXL345 与 Arduino 连接

Arduino 的 A4 引脚(SDA)与 adxl345 的 SDA 引脚连接
       Arduino 的 A5 引脚(SCL)与 adxl345 的 SCL 引脚连接
       Arduino 的 GND 与 adxl345 的 GND 引脚连接
       Arduino 的 5V 与 adxl345 的 Vcc 连接

ADXL345

ADXL345 Arduino 代码说明

对于这个ADXL345 Arduino项目,我们需要两个用于ADXL345传感器的库。

1、Adafruit ADXL345
       2、Adafruit Unified sensor

要下载上述库,请打开 Arduino IDE 并转到 Sketch -> Include Library -> Manage Libraries。搜索 Adafruit ADXL345 并安装。同样,搜索 Adafruit Unified sensor 并安装。

Adafruit-ADXL345-Library

ADXL345-Adafruit-Library

现在准备编写代码。示例代码可以在 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 轴的加速度读数,如下所示。

ADXL345

尝试在所有方向上缓慢移动传感器并观察读数。

ADXL345

至此,这就完成了加速度计与 Arduino UNO 连接使用的方法,可以用来检测x,y和z轴的变化。


如果需要给传感器增加无线传输功能,可以通过增加无线物联网控制器实现。
● 内置电池或外接5V电源供电
● 无线传输方式支持4G、NB、WIFI、LORA
● 支持所有传感器接口

9775460cb15acb62aac9043559bac65f.jpg
【单片机-传感器】项目定制开发

dettek

声明:该文观点仅代表作者本人,我们只提供信息存储空间服务。
我来说两句
加载中~