
由 12 张图像堆叠而成。 方法=B(R=44,S=4)
在当今的科技和电子领域,MEMS(微机电系统)传感器已成为各种项目的关键工具,涵盖从机器人到家庭自动化和可穿戴设备等各个领域。结合了加速度计和陀螺仪的模块,例如 微处理器6050 和 LSM9DS1,是最受欢迎的两种选择,因为它们功能多样、成本低廉,并且易于与 Arduino 等微控制器和其他平台集成。彻底了解它们的工作原理、独特功能、差异,甚至最佳利用方式,对于设计能够 测量运动、方向和倾斜度.
在本文中,我们将逐步带您了解有关传感器的所有知识 微处理器6050 y LSM9DS1:它们如何工作,它们有哪些应用程序,如何将它们集成到您的项目中,校准它们,正确解释它们的读数并充分利用它们的能力,结合在最佳教程和技术文章中收集的信息,以实用和最新的视角和密切的语言,以便 实现专业成果 在你的发展中。
什么是 MEMS 传感器?它是如何工作的?
在讨论具体型号 MPU6050 和 LSM9DS1 之前,需要先明确 MEMS传感器。这些设备也称为 微电子机械系统将微型机械元件和电子电路集成到单个芯片中,以便它们可以检测物理变化(例如加速度、旋转或振动),并将其转换为数字系统可以解释的电信号。
对于 MEMS 加速度计和陀螺仪来说,它们的运行基于以下原理:
- 牛顿加速度定律(a = F/m),使用充当微观质量和弹簧的内部结构。
- 科里奥利效应用于检测角运动,利用小质量在芯片内旋转时产生的偏转。
- 内部 ADC 转换器将物理变化转换为高分辨率数字值(通常为 16 位)。
这些功能使得 MEMS 在需要以下应用的应用中极其有用: 方向、倾斜度或运动的测量 在三维领域,例如导航系统、摄像机稳定系统、智能手表、无人机、机器人等等。
MPU6050的主要特点
El 微处理器6050 它可能是制造商、工程师和业余爱好者中最广泛使用的 MEMS 运动传感器,他们正在寻找一种经济可靠的解决方案来测量三轴加速度和旋转。
其主要技术规格包括:
- 3轴加速度计:能够检测X、Y和Z轴上的加速度,可编程范围为±2g、±4g、±8g和±16g。
- 三轴陀螺仪:测量所有三个轴的角速度,灵敏度可在每秒±250、±500、±1000 和±2000 度之间调节。
- 数字运动处理器 (DMP):包含专用于执行复杂计算的内部微处理器 运动融合 (传感器融合),计算四元数、欧拉角和旋转矩阵等数据,而无需将这些计算加载到主微控制器上。
- 通过 I2C 进行数字输出:通过 I2C 总线进行通信,具有两个可能的地址(可通过引脚 AD0 配置为 0x68 或 0x69),允许与大多数 Arduino、ESP 和类似电路板一起操作。
- 16位ADC转换器:它在数据收集方面提供了高分辨率。
- 集成温度传感器
- 可通过外部磁力计进行扩展:通过 I2C 辅助总线,MPU6050 可以读取其他连接的传感器,例如流行的 HMC5883L(磁力计),以形成完整的 9 轴 IMU。
- 灵活的工作电压:如果使用 GY-3,3 等带有调节器的主板,则可以以 5V 甚至 521V 供电。
此外,该模块尺寸紧凑(约 25 x 15 毫米),并且可直接集成到面包板中,使其成为测试和最终开发的理想选择。
LSM9DS1 是什么?它有何不同?
反过来, LSM9DS1 它是 MEMS IMU 系列中更先进、更现代化的选择,尽管在初学者项目中不如 MPU6050 那么受欢迎。它在单个芯片上集成了以下功能:
- Un 3轴加速度计
- Un 3轴陀螺仪
- Un 磁力计也是3轴的
这意味着 LSM9DS1 是 9 DoF(自由度)IMU,让您测量三维加速度、角速度和地球磁场,提供完整、准确的读数 绝对位置和方向 相对于地球而言。
与 MPU6050 相比,它的主要优势包括:
- 将三个传感器整合到一个物理芯片中,节省空间并简化连接。
- 您可以通过 I2C 作为 SPI,这使其在不同平台上具有更大的通用性。
- 每个传感器(加速度计、陀螺仪、磁力计)的范围和灵敏度配置更加灵活。
- 它具有先进的数字过滤和事件检测选项。
LSM9DS1 通常用于需要绝对方向(例如指南针、导航系统或飞行稳定系统)且无需额外外部传感器的项目。
MEMS加速度计和陀螺仪的工作原理
要真正理解这些 MEMS 模块的工作原理,重要的是了解物理概念以及它们如何转换为数字数据:
加速度计
Un MEMS加速度计 测量物体相对于空间三个轴的加速度(速度随时间的变化)。其内部基于 悬浮微小物质 通过柔性锚或微型弹簧。当传感器加速时,该质量块会发生轻微移动,这种变化会通过可变电容器或压电电容器转换成电信号。
- 加速度计始终检测至少一个加速度: 重力 (9,81 米/秒2),即使传感器静止不动。
这用于计算相对于水平面的倾斜度. - 通过将加速度对时间进行积分,可以得到速度,进而得到行进的位置,尽管这些操作往往会累积误差。
陀螺仪
El MEMS陀螺仪 使用 科里奥利效应 用于检测物体绕 X、Y 和 Z 轴旋转的速度。当传感器旋转时,内部振动质量会产生与旋转速度成比例的偏转。 角速度,并且该变化是通过电子方式测量的。
- 陀螺仪测量 角速度:传感器的方向在每个轴上变化的速度。
- 将角速度与时间积分可得出旋转角度(角位置),但此操作会产生累积误差,称为 漂.
为什么要结合加速度计和陀螺仪?
加速度计和陀螺仪在确定物体方向时都有其局限性:
- 加速度计: 可以准确检测相对于垂直轴的倾斜度(利用重力),但对突然的运动、外部加速度或振动非常敏感。
- 陀螺仪: 它非常适合测量方向的快速变化,但如果其输出在很长一段时间内积分,就会产生误差累积。
因此,大多数应用程序会合并来自两个传感器的数据,从而大大提高读数的准确性和可靠性。 角度、倾斜度或位置为了实现这一点,它们被用来 数字处理滤波器 例如互补滤波器或卡尔曼滤波器,它们结合并权衡各个传感器的优点。
MPU6050入门:连接和库
典型连接图
模块 微处理器6050 它通常安装在板式 GY-521,大大方便了与Arduino等微控制器的集成。
在 I2C 模式下使用模块的基本连接通常为:
微处理器6050 | Arduino Uno/纳米/迷你 | Arduino Mega/DUE | Arduino的莱昂纳多 |
---|---|---|---|
VCC | 5V | 5V | 5V |
GND | GND | GND | GND |
SCL | A5 | 21 | 3 |
SDA | A4 | 20 | 2 |
模块内置有上拉电阻,一般不需要外加。
I2C 地址和 AD0 引脚
MPU6050 允许您配置其 I2C 地址以 0x68 (默认情况下,当 AD0 引脚处于 GND 或未连接状态时)或 0x69 (当 AD0 连接到高/5V 时)。这使得在同一总线上使用多个传感器变得容易。
推荐库:Jeff Rowberg 的 I2Cdevlib
为了在 Arduino 上舒适地使用 MPU6050,社区建议使用以下库:
- I2Cdev:促进与许多传感器的 I2C 通信。
- 微处理器6050:允许您访问所有传感器功能、读取校准值、偏移量并使用 DMP。
它们有以下版本: https://github.com/jrowberg/i2cdevlib
下载后,只需解压缩并将它们放在文件夹中 库 来自 Arduino IDE。
读取基本数据:加速度和角速度
一旦连接并配置了 MPU6050,下一步就是执行 加速度和角速度读数 在三个轴上。使用上述库的基本流程包括:
- 使用函数初始化传感器 传感器.初始化().
- 检查连接 传感器.测试连接().
- 将加速度计和陀螺仪的 RAW(未处理)值读入变量,例如加速度的 ax、ay、az 和旋转的 gx、gy、gz。
- 将数据发送到串口显示结果。
该数据显示为范围内的 16 位整数。
校准 MPU6050 传感器
使用 MPU6050 的一个关键阶段是 标定由于将芯片焊接到模块上时可能出现错位,或者甚至是轻微的制造缺陷,传感器返回非零值的情况很常见,即使它完全水平且处于静止状态。
校准传感器涉及确定 加速度计和陀螺仪偏移 在每个轴上进行设置,并在传感器上进行配置,以便读数基于正确的信息。典型的过程可能包括:
- 使用以下函数读取当前偏移量 获取X加速度偏移量(), 获取Y加速度偏移量()等等。
- 将传感器放置在水平位置并完全静止。
- 使用程序调整偏移量,直到滤波读数(例如,使用移动平均值或低通滤波器)收敛到理想值: ax = 0, ay = 0, az = 16384, gx = 0, gy = 0, gz = 0 处于原始模式(RAW)。
- 使用函数设置这些值 设置X加速度偏移(), 设置Y加速度偏移()等等。
一旦正确校准,传感器将提供更准确和稳定的值,这对于稳定或导航等关键应用至关重要。
将读数缩放并转换为物理单位
MPU6050 的原始读数必须转换为 SI(国际系统)单位,才能在物理计算或数据可视化中进行解释和使用:
- 加速: 默认范围为±2g,相当于±19,62米/秒2RAW 值 16384 对应于 1g;因此,要转换为 x am/s2: 斧头*(9,81/16384.0).
- 角速度: 默认情况下为±250°/s,因此转换结果为: gx * (250.0 / 32768.0) 将 RAW 值转换为每秒度数。
如果将传感器配置为其他范围,这些比例因子会发生变化,因此在解释数据之前务必检查工厂或自定义设置。
仅使用加速度计计算倾斜度
当传感器处于静止状态或仅受重力作用时,加速度计读数可用于计算 相对于 X 轴和 Y 轴的倾斜角典型的数学公式使用三角函数:
- 对于 X 轴倾角: atan(ax / sqrt(ay² + az²)) × 180/π
- 对于 Y 倾斜: atan(ay / sqrt(ax² + az²)) × 180/π
这提供了相对于重力平面的每个轴的倾斜角,但如果传感器处于运动中或接收其他加速度,这些值可能会改变。
使用陀螺仪计算旋转角度
陀螺仪可以计算 通过角速度积分来改变角度 随着时间的推移。从数学上讲:
- 该角度等于给定时间间隔内角速度的积分:θ = θ0 +∫w·dt
实际上,这些计算可以在程序循环中执行,将角速度乘以采样周期(dt)相加以获得累积角度。
控制积分误差非常重要,因为小的误差会累积起来,导致 漂.
传感器融合滤波器:互补滤波器和卡尔曼滤波器
为了减少解释错误并充分利用每个传感器,使用数据融合算法:
互补滤波器
该滤波器将陀螺仪估算的角度(短期内效果良好)与加速度计计算的角度(长期内更可靠,但噪声较大)结合起来。典型公式如下:
最终角度 = α × (先前角度 + 角速度 × dt) + (1-α) × 加速度计角度
其中α通常在0,95到0,99之间。这样可以获得稳定的读数,并减少 漂.
卡尔曼滤波器
该滤波器更为先进,它融合了测量结果,考虑了每次测量的不确定性及其相关性,从而在存在噪声的情况下实现精确估计。它广泛应用于导航系统和先进的机器人技术,尽管它需要更高的计算能力。
3D 模拟和方向可视化(偏航、俯仰、滚动)
一个有趣的应用是 实时显示三维方位 通过表示角度来表示物体(例如无人机或机器人) 偏航、俯仰和滚转.
这是通过将处理后的数据传输到图形软件,使用串行绘图仪等工具或特定的3D程序来监控和分析运动来实现的。这样,您就可以直观地了解系统在空间中的定向方式。
扩展阅读:磁力计和LSM9DS1传感器的使用
El LSM9DS1 在单个芯片中集成了加速度计、陀螺仪和磁力计,可以从 绝对位置和方向除了测量加速度和旋转之外,它还可以探测地球磁场以:
- 计算 绝对方位角,在导航和数字罗盘中很有用。
- 开发无需额外外部传感器的制导系统。
- 融合所有传感器的数据,实现高度精确的位置和方向估计(9-DoF)。
有效使用 MPU6050 和 LSM9DS1 的实用技巧
- 始终校准传感器 在关键应用中使用之前,以提高准确性。
- 避免将模块安装在电磁干扰源附近,例如电机或磁铁。
- 使用过滤技术并保持对采样时间的精确控制。
- 对于相对于北方的绝对定位,建议使用 LSM9DS1 或者将 MPU6050 与外部磁力仪(例如 HMC5883L)结合使用。
- 实现实时可视化有助于更好地解释收集到的数据。
- 书店喜欢 i2cdevlib 它们使工作变得更加简单,因此优先考虑它们以使开发更容易。