风筝
发表于: 2020-1-17 21:33:08 | 显示全部楼层

众所周知,加速度计和陀螺仪主要用于检测加速度。加速度计可以测量线性加速度,而陀螺仪可以帮助找到旋转加速度。陀螺仪用于测量角速度,该角速度使用地球的重力来确定运动对象的方向。像MPU6050这样的传感器同时具有加速度计和陀螺仪,并且可以作为惯性测量单元(IMU)来查找方向、位置和速度。


在本篇文章中,我们将主要介绍ADXL345加速度计,该加速度计用于测量x、y和z轴上的加速度或速度变化。这些小型传感器用在汽车和自行车中,以检测安全气囊展开时的事故,还用在移动电话中,用于各种应用,例如指南针和位置跟踪。


加速度传感器的类型

市场上有许多类型的MEMS加速度传感器。可以根据精度、功耗和接口对其进行分类。所有这些传感器都是便携式的,可以安装在任何类型的设备中,例如可穿戴设备。这些传感器测量3轴(x、y、z)的加速度。


一些广泛使用的传感器是:

●    ADXL335

●    ADXL345

●    ADXL356

Types-of-Accelerometer-Sensors.jpg


这些加速度传感器非常受欢迎,除了这三种加速度传感器外,还有许多其他加速度传感器,例如ADXL354、ADXL355、ADXL372等。


让我们看看这些传感器之间的区别。

ADXL356
ADXL345
ADXL335
量程
±10g至±40g
±16g
±3g,小量程,具有精确的读数
接口
模拟
SPI、I2C
模拟
功耗
低,典型值:150µ
低,典型值:140µ
标准,典型值:350µ
价格
最低

在以上三种之中,ADXL345由于其数字特性而易于连接。但是它的编程很困难,因为它可以在SPI / I2C协议上工作。 ADXL345可以测量静态和动态加速度,适用于移动应用。而且,这些传感器都经过实验室校准,不需要任何进一步的校准。

ADXL345-Pins.jpg


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


所需的组件

●    Arduino UNO开发板

●    ADXL345加速度计

●    连接导线

●    面包板


电路图

下面给出了ADXL345加速度传感器与Arduino连接的电路图:

ADXL345-Accelerometer-Interface-with-Arduino-Circuit-Diagram.png


ADXL345-connection-with-Arduino.jpg


ADXL345 Arduino代码说明

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

●    Adafruit ADXL345

●    Adafruit Unified sensor


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

Adafruit-ADXL345-Library.png


现在,我们准备编写代码。可以在Files -> Example -> Adafruit ADXL345 -> sensortest中找到示例代码。

1.  首先,包括所有必需的库头文件以支持传感器的功能。在这里,我们将使用wire库用于I2C通信。

  1. #include <Wire.h>
  2. #include <Adafruit_Sensor.h>
  3. #include <Adafruit_ADXL345_U.h>
复制代码

2.  通过使用诸如accel之类的任何变量来使用ADXL345 Arduino库的各种函数来创建实例。

  1. Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified();
复制代码

3.  在void setup()函数中,使用Serial.begin()函数初始化串口通信以在串口监视器上打印数据。现在,检查是否连接了有效的ADXL传感器。我们将检查accel.begin()函数返回的结果是否返回false,然后打印一条消息,指出找不到有效的传感器。

  1. void setup()
  2. {
  3.    Serial.begin(9600);
  4.    if(!accel.begin())
  5.    {
  6.       Serial.println("No valid sensor found");
  7.       while(1);
  8.    }
  9. }
复制代码

4.  在void loop()函数中,创建一个变量以使用sensors_event_t结构体。使用此变量(在本例中为“event”)通过.getevent()函数填充结构成员。现在,使用event.acceleration.x()函数在x、y、z轴上打印加速度值。

  1. void loop()
  2. {
  3. sensors_event_t event;
  4. accel.getEvent(&event);
  5. Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print("");
  6. Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print("");
  7. Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print("");
  8. Serial.println("m/s^2 ");
  9. delay(500);
  10. }
复制代码

测试ADXL345加速度计与Arduino连接

最后,将ADXL345传感器与Arduino UNO正确连接,并将代码上传到Arduino Uno开发板上。 然后打开串口监视器,您将在x、y、z轴上看到加速度读数,如下所示。

ADXL345-accelerometer-Arduino-Interfacing-Readings_0.jpg

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

Interfacing-ADXL345-Accelerometer-with-Arduino-UNO.jpg

因此,以上就是将加速度计与Arduino UNO一起使用以检测x、y和z轴上的变化的方式。


代码

以下是本篇文章使用的完整代码: main.rar (365 Bytes, 下载次数: 104)

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1479



手机版|

GMT+8, 2024-3-29 05:24 , Processed in 0.149846 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表