当前位置:诺佳网 > 电子/半导体 > 控制/MCU >

浅谈Arduino Nano 33系列的IMU传感器

时间:2021-01-13 | 栏目:控制/MCU | 点击:

您的项目需要加速度计、陀螺仪或磁场传感器吗?内置的IMU传感器LSM9DS1包含这些功能!

您可能已经阅读了有关新的Arduino Nano 33系列及其实时和多线程功能的信息。但是,该开发板还有更多有用的功能!其中之一就是内置的LSM9DS1 IMU,它包含一个加速度计、一个陀螺仪和一个磁场传感器。

在本篇文章中,我们将向您展示如何在不使用任何其他硬件的情况下使用IMU。

安装LSM9DS1 IMU库

在开始之前,您需要为内置传感器安装官方的Arduino库。为此,导航到“Sketch”,在Arduino IDE中打开库管理器,然后单击“include library”,然后选择“manage libraries”。这将会弹出一个新窗口。在该窗口中,搜索IMU并安装下图高亮显示的软件包:

pIYBAF_-s-eAaEl8AAFlEghM3N4601.png

接下来,如果要使用IMU,请在Arduino草图中包括这个已安装的软件包:

#include

使用加速度计

IMU的加速度计可用于测量设备的方向。下图显示了Arduino的移动与加速度计的哪个测量轴相对应。

pIYBAF_-s_iAPvZxAAVpNSlFrZs773.png

Arduino的运动如何与加速度计的X轴、Y轴和Z轴相对应

为了测试加速度计,我编写了一个小的测试脚本,可以检测Arduino是放置在平坦的表面上还是倾斜到任一侧。如您所见,该脚本必须读取加速度计的Y轴来确定旋转角度。

将设备放在平坦表面上时,测量值为零。当Arduino倒置时,也是如此。以下代码段显示了loop方法的内容。

float x, y, z, delta = 0.05;

if (IMU.accelerationAvailable())

{

IMU.readAcceleration(x, y, z);

if(y <= delta && y >= -delta)

Serial.println("flat");

else if(y > delta && y < 1 - delta)

Serial.println("tilted to the left");

else if(y >= 1 - delta)

Serial.println("left");

else if(y < -delta && y > delta - 1)

Serial.println("tilted to the right");

else

Serial.println("right");

}

如您所见,我不必连接任何外部硬件。对IMU的所有调用都很短,这有助于保持代码简洁。

我使用了增量值来适应读取传感器值时可能出现的最终误差。您可以调整该值,以使Arduino更早地对其方向变化做出反应。

该草图的输出如下所示:

o4YBAF_-tAWAUbNOAAB_zvjwBns452.png

使用陀螺仪

如您所见,在Nano 33 BLE开发板上,连接IMU的加速度计是一个简单的过程。幸运的是,读取其他传感器值同样容易。例如,陀螺仪可用于实现手势检测:

float x, y, z, delta = 400;

if (IMU.gyroscopeAvailable())

{

IMU.readGyroscope(x, y, z);

if(y < -delta)

Serial.println("Flicked down");

else if(y > delta)

Serial.println("Flicked up");

}

此示例脚本检测何时快速向上或向下移动Arduino并做出相应的反应。在该示例中,delta值越小,Arduino对运动的反应就越早。

该程序的输出如下所示:

pIYBAF_-tBWAMV9rAACSpkhrwSc814.png

检测磁场

LSM9DS1还可以检测磁场。您先前下载的库包含用于此目的的函数。您可以通过调用readMagneticField函数获得以微特斯拉(micro Tesla)单位测量的磁场。调用此函数可以生成显示测量值的图表。

pIYBAF_-tCSACaSyAAB3rZacryw478.png

显示来自readMagneticField函数的测量值的图表

内置IMU易于设置

内置的LSM9DS1 IMU具有许多不同的有用传感器,并且很容易进行连接。您唯一要做的就是安装官方库以利用传感器的功能。 IMU所配备的各种传感器不仅给我留下了深刻的印象,而且其准确性也给我留下了深刻的印象。陀螺仪和加速度计可以精确地检测甚至最小的运动。
编辑:hfy

您可能感兴趣的文章:

相关文章