利用 MPU6050 陀螺仪传感器构建一个飞行控制器
三轴陀螺仪传感器在制作飞行控制器、船舶/船只控制系统、方向预测以及相应微控制器控制方面非常有用。在本教程中,我们将介绍 MPU6050 陀螺仪传感器,并制作一个小型项目来了解其功能,该设备可将俯仰(Pitch)、偏航(Yaw)和滚转(Roll)读数显示在屏幕上。
陀螺仪 vs 加速度计:
陀螺仪是一种能够测量并保持物体姿态和角速度的装置。它比加速度计更先进,可以测量物体的倾斜和横向姿态,而加速度计只能测量线性运动。
MPU6050:
MPU6050 是一种微机电系统(MEMS),包含三轴加速度计和三轴陀螺仪。它能帮助我们测量速度、姿态、加速度、位移以及其他运动特征,并处理复杂的六轴运动融合算法。该设备可通过辅助主I²C总线访问外部磁力计或其他传感器,使设备无需系统处理器干预即可采集完整的传感器数据。
特点:
· MEMS 三轴加速度计与三轴陀螺仪数据组合输出
· 电源:3-5V
· 通信协议:I2C
· 内置16位ADC,提供高精度测量
· 内置DMP,具备强大的计算能力
· 可用于与其他IIC设备(如磁力计)进行接口连接
· 支持可配置的IIC地址
· 内置温度传感器
加速度测量:
MPU6050可通过其内置的加速度计测量加速度,支持四种可编程满量程范围:±2g、±4g、±8g 和 ±16g。
MPU6050配备三个16位模数转换器,可同时采集X、Y和Z轴方向的运动信息。
角速度测量:
MPU6050可通过其内置陀螺仪测量角速度,支持四种可编程满量程范围:±250°/s、±500°/s、±1000°/s 和 ±2000°/s。
MPU6050另配有三个16位模数转换器,可同时采集围绕X、Y和Z轴的旋转信息。采样率可在每秒3.9至8000次之间调节。
I2C接口:
该模块采用I2C接口与Arduino通信,支持两个独立的I2C地址:0x68HEX 和 0x69HEX。这使得两个MPU6050可以共用同一总线,或避免与总线上其他设备发生地址冲突。
ADO引脚用于确定模块的I2C地址。该引脚内置4.7K的下拉电阻。因此,当不连接ADO引脚时,默认的I2C地址为0x68HEX;而当将其连接至3.3V时,线路会被拉高,I2C地址变为0x69HEX。您也可以通过点击此处链接来查看I2C地址。
添加外部传感器:
为了进一步提高精度,MPU6050模块支持连接外部传感器的功能。这些外部传感器通过第二条I2C总线(XDA和XCL)与MPU6050连接,该总线完全独立于主I2C总线。
这种外部连接通常用于连接一个磁力计,该磁力计可测量三个轴的磁场。MPU6050本身具有6个自由度(DOF),其中加速度计和陀螺仪各占3个自由度。加入磁力计后,传感器额外增加3个自由度,总共有9个自由度。
所需元件:
1) MPU6050
2) OLED I2C接口
3) ARDUINO UNO
4) 电源
5) 布莱德板及导线
电路连接示意图:
MPU6050和OLED均可通过I2C协议轻松连接。因此,我们修改了地址,并将两者与微控制器并联连接。5伏电源足以驱动整个系统运行。
代码:
所有库均可在Arduino IDE的库管理器中获取。
俯仰、偏航和滚转读数:
X轴:
Y轴:
Z轴:
首次初始化传感器时,请将其放置在光滑表面且无任何偏移的位置,因为微控制器的所有测量值均基于初始位置计算。
本文编译自hackster.io





