資料介紹
描述
主條目:使用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資料包分享 47次下載
- stm32驅動mpu6050、mpu6500、mpu9250心得
- 電子產品MPU-9250規格書英文版下載 0次下載
- MPU9250九軸9軸姿態加速度陀螺儀傳感器的資料合集免費下載 74次下載
- 使用STM32單片機實現MPU9250九軸傳感器實驗的詳細資料說明 37次下載
- MPU9250的中文數據手冊免費下載 212次下載
- MPU9250陀螺儀QFN封裝的復合芯片中文說明書免費下載 66次下載
- MPU9250芯片的相關資料合集免費下載 76次下載
- 九軸傳感器MPU9250詳細資料 160次下載
- MPU-9250-寄存器手冊 0次下載
- MPU9250數據采集和解析 237次下載
- GY9250 MPU9250資料 182次下載
- STM32連接機智云,代碼移植,NTP實時時間獲取(二) 404次閱讀
- 瑞薩RZ/T系列MPU的中斷重入實現 641次閱讀
- 產品簡介 | RZ/A系列MPU 454次閱讀
- mpu6500和mpu6000哪個好 4274次閱讀
- mpu6050和mpu6500哪個性能好 9657次閱讀
- TC3xx芯片的MPU功能詳解 2535次閱讀
- 配合MAX9217/MAX9218/MAX9247/MAX9248/MAX9250評估板工作 2643次閱讀
- 基于GPRS模塊單片機獲取位置信息的方法 3026次閱讀
- MPU是什么Cortex-M內核的MPU內存保護單元詳細講解 1.1w次閱讀
- mpu6050姿態解算原理_mpu6050姿態解算程序 4.3w次閱讀
- mpu6050怎么與單片機連接 2.6w次閱讀
- 一文看懂mpu9150和mpu6050區別 4.2w次閱讀
- 一文看懂mpu6500和mpu6050區別 9.6w次閱讀
- mpu6050和mpu3050有什么不同和相同(基礎介紹和區別分析) 3.6w次閱讀
- 三軸陀螺儀MPU3050驅動程序分析 7323次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費
- 3PC6206 300mA低功耗低壓差線性穩壓器中文資料
- 1.12 MB | 1次下載 | 免費
- 4網絡安全從業者入門指南
- 2.91 MB | 1次下載 | 免費
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費
- 6海川SM5701規格書
- 1.48 MB | 次下載 | 免費
- 7H20PR5電磁爐IGBT功率管規格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護等級說明
- 0.08 MB | 次下載 | 免費
本月
- 1貼片三極管上的印字與真實名稱的對照表詳細說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設計指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論