资料介绍
描述
主条目:使用MPU9250获取实时位置
MPU-9250 是目前最先进的加速度计、陀螺仪和罗盘组合小尺寸传感器之一。它取代了流行的 MPU-9150,降低了功耗,改善了陀螺仪噪声和罗盘满量程范围性能。它具有许多高级功能,包括低通滤波、运动检测甚至可编程专用处理器。
它内部包括 MPU-6500,其中包含一个 3 轴陀螺仪和一个 3 轴加速度计,以及AK8963 ,市场领先的 3 轴数字罗盘。MPU-9250 使用 16 位模数转换器 (ADC) 对所有 9 个轴进行数字化。
MPU-9250 是一款高性能加速度计、陀螺仪和磁力计选项,适用于手势识别、自平衡机器人、手机、健身监测等应用,以及需要检测运动方向和幅度以及旋转的类似应用。在阅读带有 Arduino 的 MPU9250 传感器一文中,我们介绍了该模块以及如何与其交互。以及,使用互补滤波器来获得相对位置。现在让我们看看 MPU9250 模块的全部功能:混合使用陀螺仪、加速度计和磁力计来获得实时准确位置。
陀螺仪
陀螺仪是一种用于测量或保持方位和角速度的装置。角速度以每秒度数(或弧度)为单位测量,是单位时间内物体旋转角度的变化。
加速度计
加速度计传感器是测量加速度的集成电路 (IC),加速度是单位时间内速度的变化。测量加速度可以获取物体倾斜和振动等信息。
通常,g用作加速度的单位,相对于标准重力 (1g = 9.80665m/s2)。
磁力计
磁力计提供有关设备传感器检测到的磁场的信息,理论上可以暴露用户的位置。磁力计传感器以 μT(微特斯拉)为单位测量所有三个物理轴(x、y、z)的磁场。
接线图
注意:该模块的工作电压为 3.3 伏,尽管某些版本具有允许将其连接到 5V 的稳压器。请务必在使用前检查您的模块规格。
相对和绝对方向
相对方向是一个对象相对于另一个对象的位置和方向的恢复。根据方向,存在三种类型的角速率测量:
- 偏航:从上方看物体时在平面上的水平旋转。
- 俯仰:从前面看到的物体的垂直旋转。
- 滚动:从前面看物体时的水平旋转。
使用平面的每个轴的图形表示:
绝对方向是磁力计的常见用例之一,表示相对于地球平面的固定方向(固定到磁场矢量和重力矢量)。
噪音和错误
在理想情况下,具有应用公式的传感器数据将为我们提供精确和精确的角度。实际情况有所不同,因为某些因素会影响传感器输出。
通常,当您使用加速度计四处移动时,它会经历运动加速度。额外的加速度值可能会影响定向精度。另一个与加速度计相关的问题是噪声:电信号中不需要的干扰。加速度计能够测量任何角度,但是它的读数有噪声并且即使使用低通滤波器也有一定的误差范围。
另一方面,陀螺仪存在偏置不稳定性,其中陀螺仪的初始零读数会由于设备内固有缺陷和噪声的集成而导致随时间漂移。
在需要通过传感器融合进行绝对定位的应用中,磁力计对于校正陀螺仪漂移是绝对必要的。磁力计问题是它们的非理想响应面和位置依赖性。
获取实时位置
有不同的算法来解决错误和噪声问题。我们将使用四元数。四元数用于纯数学,但在应用数学中也有实际用途,特别是涉及三维旋转的计算。它们可以与其他旋转方法一起使用,例如欧拉角和旋转矩阵,或者作为它们的替代方法,具体取决于应用程序。MPU9250 库的使用使我们摆脱了对四元数所有复杂性的理解,并且实现已经完成。
磁偏角
应根据您要获得准确数据的位置来设置磁偏角。您可以在此处找到您所在城市的磁偏角。
请注意,此处的偏角目前为 1˚ 38'。提供的格式需要转换为代码的十进制度数。每度有60分钟,其中38分钟为度的38/60,即0.63。1˚ 38' 的十进制格式的赤纬为 1.63。使用您所在位置的偏角更新代码MAGNETIC_DECLINATION常量。
磁性校准
有一种简单的方法可以自动校准并纠正磁力计数据的一些错误。以八字形模式缓慢移动传感器,并跟踪在六个主要方向中的每一个方向上测量的最小和最大场。可以从后续数据中减去平均值,这相当于将响应曲面重新置于原点的中心。该库具有自动为我们执行的校准功能,我们只需要在校准开始时将传感器移动成 8 字形即可。
为 MPU9250 安装 Arduino 库
要与 MPU9250 模块交互,我们可以使用原始实现或利用现有库。该库提供了一个与模块通信的接口,为我们节省了大量时间。另一个优势是多年来由社区测试和改进的健壮代码库。我们建议使用该库并避免从头开始实施所有内容。它可以从我们的官方存储库下载。
要导入库,请打开 Arduino IDE,转到 Sketch > Include Library > Add.ZIP Library 并选择从我们的 GitHub 存储库下载的库文件。
然后你可以简单地使用include语句:
#include "MPU9250.h"
它将包括具有预定义函数的库,以与 MPU9250 交互。
Arduino代码
下面的代码很简单,因为我们使用了一个库,该库提供了与 MPU9250 模块交互的清晰接口。在设置函数中,我们配置和校准模块并在循环中每隔INTERVAL_MS_PRINT毫秒打印一次输出。
#include "MPU9250.h"
#define MPU9250_IMU_ADDRESS 0x68
#define MAGNETIC_DECLINATION 1.63 // To be defined by user
#define INTERVAL_MS_PRINT 1000
MPU9250 mpu;
unsigned long lastPrintMillis = 0;
void setup()
{
Serial.begin(115200);
Wire.begin();
Serial.println("Starting...");
MPU9250Setting setting;
// Sample rate must be at least 2x DLPF rate
setting.accel_fs_sel = ACCEL_FS_SEL::A16G;
setting.gyro_fs_sel = GYRO_FS_SEL::G1000DPS;
setting.mag_output_bits = MAG_OUTPUT_BITS::M16BITS;
setting.fifo_sample_rate = FIFO_SAMPLE_RATE::SMPL_250HZ;
setting.gyro_fchoice = 0x03;
setting.gyro_dlpf_cfg = GYRO_DLPF_CFG::DLPF_20HZ;
setting.accel_fchoice = 0x01;
setting.accel_dlpf_cfg = ACCEL_DLPF_CFG::DLPF_45HZ;
mpu.setup(MPU9250_IMU_ADDRESS, setting);
mpu.setMagneticDeclination(MAGNETIC_DECLINATION);
mpu.selectFilter(QuatFilterSel::MADGWICK);
mpu.setFilterIterations(15);
Serial.println("Calibration will start in 5sec.");
Serial.println("Please leave the device still on the flat plane.");
delay(5000);
Serial.println("Calibrating...");
mpu.calibrateAccelGyro();
Serial.println("Magnetometer calibration will start in 5sec.");
Serial.println("Please Wave device in a figure eight until done.");
delay(5000);
Serial.println("Calibrating...");
mpu.calibrateMag();
Serial.println("Ready!");
}
void loop()
{
unsigned long currentMillis = millis();
if (mpu.update() && currentMillis - lastPrintMillis > INTERVAL_MS_PRINT) {
Serial.print("TEMP:\t");
Serial.print(mpu.getTemperature(), 2);
Serial.print("\xC2\xB0"); //Print degree symbol
Serial.print("C");
Serial.println();
Serial.print("Pitch:\t");
Serial.print(mpu.getPitch());
Serial.print("\xC2\xB0"); //Print degree symbol
Serial.println();
Serial.print("Roll:\t");
Serial.print(mpu.getRoll());
Serial.print("\xC2\xB0"); //Print degree symbol
Serial.println();
Serial.print("Yaw:\t");
Serial.print(mpu.getYaw());
Serial.print("\xC2\xB0"); //Print degree symbol
Serial.println();
Serial.println();
lastPrintMillis = currentMillis;
}
}
测试
串行监视器将每INTERVAL_MS_PRINT毫秒打印一次最后可用的传感器数据(在上面的示例中,每秒一次),它应该类似于:
通常方向绘制在物理模块上,因此您可以轻松检测俯仰和滚动。
- 使用Arduino和加速度计陀螺仪传感器MPU9250制作指南针
- 用Arduino读取MPU9250传感器
- QFN封装的复合芯片MPU9250数据手册 1次下载
- MPU9250资料包分享 39次下载
- stm32驱动mpu6050、mpu6500、mpu9250心得
- 电子产品MPU-9250规格书英文版下载 0次下载
- MPU9250九轴9轴姿态加速度陀螺仪传感器的资料合集免费下载 74次下载
- 使用STM32单片机实现MPU9250九轴传感器实验的详细资料说明 37次下载
- MPU9250的中文数据手册免费下载 208次下载
- MPU9250陀螺仪QFN封装的复合芯片中文说明书免费下载 66次下载
- MPU9250芯片的相关资料合集免费下载 76次下载
- 九轴传感器MPU9250详细资料 160次下载
- MPU-9250-寄存器手册 0次下载
- MPU9250数据采集和解析 237次下载
- GY9250 MPU9250资料 182次下载
- 瑞萨RZ/T系列MPU的中断重入实现 307次阅读
- 产品简介 | RZ/A系列MPU 240次阅读
- AUTOSAR内存分区和MPU关系简述 933次阅读
- mpu6500和mpu6000哪个好 3078次阅读
- mpu6050和mpu6500哪个性能好 6359次阅读
- TC3xx芯片的MPU功能详解 1792次阅读
- 配合MAX9217/MAX9218/MAX9247/MAX9248/MAX9250评估板工作 2113次阅读
- 基于GPRS模块单片机获取位置信息的方法 2866次阅读
- MPU是什么Cortex-M内核的MPU内存保护单元详细讲解 1w次阅读
- mpu6050姿态解算原理_mpu6050姿态解算程序 4.3w次阅读
- mpu6050怎么与单片机连接 2.6w次阅读
- 一文看懂mpu9150和mpu6050区别 4.1w次阅读
- 一文看懂mpu6500和mpu6050区别 9.3w次阅读
- mpu6050和mpu3050有什么不同和相同(基础介绍和区别分析) 3.6w次阅读
- 三轴陀螺仪MPU3050驱动程序分析 7135次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多