資料介紹
描述
?
MPU-9250 是目前市場(chǎng)上最先進(jìn)的加速度計(jì)、陀螺儀和指南針組合小尺寸傳感器之一。它取代了流行的 MPU-9150,降低了功耗,改善了陀螺噪聲和羅盤滿量程性能。它具有許多高級(jí)功能,包括低通濾波、運(yùn)動(dòng)檢測(cè)甚至可編程專用處理器。
它內(nèi)部包括 MPU-6500,其中包含一個(gè) 3 軸陀螺儀和一個(gè) 3 軸加速度計(jì),以及AK8963 ,市場(chǎng)領(lǐng)先的 3 軸數(shù)字羅盤。MPU-9250 使用 16 位模數(shù)轉(zhuǎn)換器 (ADC) 對(duì)所有 9 個(gè)軸進(jìn)行數(shù)字化。
陀螺儀
陀螺儀是一種用于測(cè)量或保持方向和角速度的設(shè)備。以每秒度數(shù)(或弧度)為單位測(cè)量的角速度是單位時(shí)間內(nèi)物體旋轉(zhuǎn)角度的變化。
根據(jù)方向的不同,角速率測(cè)量分為三種類型:
- 偏航:從上方看物體時(shí)在平面上的水平旋轉(zhuǎn)。
- 俯仰:從正面看物體時(shí)的垂直旋轉(zhuǎn)。
- 滾動(dòng):從前面看物體時(shí)水平旋轉(zhuǎn)。
加速度計(jì)
加速度計(jì)傳感器是測(cè)量加速度的集成電路 (IC),加速度是每單位時(shí)間的速度變化。測(cè)量加速度可以獲取物體傾斜度和振動(dòng)等信息。
通常,g用作加速度的單位,相對(duì)于標(biāo)準(zhǔn)重力 (1g = 9.80665m/s2)。
磁力計(jì)
磁力計(jì)提供有關(guān)設(shè)備傳感器檢測(cè)到的磁場(chǎng)的信息,理論上可以暴露用戶的位置。磁力計(jì)傳感器測(cè)量所有三個(gè)物理軸(x、y、z)的磁場(chǎng),單位為 μT(微特斯拉)。
絕對(duì)方向傳感器是磁力計(jì)的常見用例之一,它代表地球平面的固定方向(固定到磁場(chǎng)矢量和重力矢量)。
接線圖
解釋數(shù)據(jù)
我們的官方存儲(chǔ)庫(kù)中有官方 MPU9250 數(shù)據(jù)表和寄存器圖。它描述了 MPU-9250 中每個(gè)寄存器的功能和內(nèi)容,包括磁力計(jì)。我們建議您閱讀十進(jìn)制、二進(jìn)制和十六進(jìn)制表示的帖子,以輕松識(shí)別寄存器并理解其中內(nèi)容的含義。
寄存器映射的前兩列表示十六進(jìn)制和十進(jìn)制格式的地址,后跟寄存器名稱。一些寄存器是只讀的(用 R 標(biāo)記),而另一些則允許我們寫(用 R/W 標(biāo)記)。寄存器的內(nèi)容用 8 位表示。在各種情況下,寄存器的值可能代表不止一個(gè)東西,換句話說(shuō),每個(gè)位或位組可能具有不同的含義,例如GYRO_CONFIG(寄存器27)。
MPU-9250 的每個(gè)傳感器都具有 16 位精度。這意味著使用兩個(gè) 8 位寄存器來(lái)表示輸出。我們將從每個(gè)寄存器中分別讀取 8 位數(shù)據(jù),然后將它們連接起來(lái)形成 16 位。
為 I2C 安裝 Arduino 庫(kù)
我們將使用 I2C 協(xié)議與寄存器交互并讀/寫數(shù)據(jù)。I2C 庫(kù)為此目的提供了一個(gè)非常簡(jiǎn)單的接口,并且可以在使用 I2C 協(xié)議的其他項(xiàng)目中重用。它可以從我們的官方存儲(chǔ)庫(kù)中下載。
要導(dǎo)入庫(kù),請(qǐng)打開 Arduino IDE,轉(zhuǎn)到 Sketch > Include Library > Add.ZIP Library,然后選擇從我們的 GitHub 存儲(chǔ)庫(kù)下載的庫(kù)文件。
然后你可以簡(jiǎn)單地使用include語(yǔ)句:
#include "I2C.h"
它將包含具有與寄存器交互的預(yù)定義函數(shù)的庫(kù)。
Arduino代碼
我們?yōu)槊總€(gè)原始傳感器數(shù)據(jù)定義了一個(gè)單獨(dú)的結(jié)構(gòu):gyroscope_raw 、accelerometer_raw 、magnetometer_raw和temperature_raw 。每個(gè)原始結(jié)構(gòu)都有一個(gè)基于當(dāng)前配置的數(shù)據(jù)規(guī)范化函數(shù)。人類可讀的標(biāo)準(zhǔn)化值存儲(chǔ)在另一個(gè)名為normalized的結(jié)構(gòu)中。
確保遵循上一步并導(dǎo)入 I2C 庫(kù),以便將其與include語(yǔ)句一起使用:
#include "Wire.h"
#include "I2C.h"
#define MPU9250_IMU_ADDRESS 0x68
#define MPU9250_MAG_ADDRESS 0x0C
#define GYRO_FULL_SCALE_250_DPS 0x00
#define GYRO_FULL_SCALE_500_DPS 0x08
#define GYRO_FULL_SCALE_1000_DPS 0x10
#define GYRO_FULL_SCALE_2000_DPS 0x18
#define ACC_FULL_SCALE_2G 0x00
#define ACC_FULL_SCALE_4G 0x08
#define ACC_FULL_SCALE_8G 0x10
#define ACC_FULL_SCALE_16G 0x18
#define TEMPERATURE_OFFSET 21 // As defined in documentation
#define INTERVAL_MS_PRINT 1000
#define G 9.80665
struct gyroscope_raw {
int16_t x, y, z;
} gyroscope;
struct accelerometer_raw {
int16_t x, y, z;
} accelerometer;
struct magnetometer_raw {
int16_t x, y, z;
struct {
int8_t x, y, z;
} adjustment;
} magnetometer;
struct temperature_raw {
int16_t value;
} temperature;
struct {
struct {
float x, y, z;
} accelerometer, gyroscope, magnetometer;
float temperature;
} normalized;
unsigned long lastPrintMillis = 0;
void setup()
{
Wire.begin();
Serial.begin(115200);
I2CwriteByte(MPU9250_IMU_ADDRESS, 27, GYRO_FULL_SCALE_1000_DPS); // Configure gyroscope range
I2CwriteByte(MPU9250_IMU_ADDRESS, 28, ACC_FULL_SCALE_2G); // Configure accelerometer range
I2CwriteByte(MPU9250_IMU_ADDRESS, 55, 0x02); // Set by pass mode for the magnetometers
I2CwriteByte(MPU9250_IMU_ADDRESS, 56, 0x01); // Enable interrupt pin for raw data
setMagnetometerAdjustmentValues();
//Start magnetometer
I2CwriteByte(MPU9250_MAG_ADDRESS, 0x0A, 0x12); // Request continuous magnetometer measurements in 16 bits (mode 1)
}
void loop()
{
unsigned long currentMillis = millis();
if (isImuReady()) {
readRawImu();
normalize(gyroscope);
normalize(accelerometer);
normalize(temperature);
}
if (isMagnetometerReady()) {
readRawMagnetometer();
normalize(magnetometer);
}
if (currentMillis - lastPrintMillis > INTERVAL_MS_PRINT) {
Serial.print("TEMP:\t");
Serial.print(normalized.temperature, 2);
Serial.print("\xC2\xB0"); //Print degree symbol
Serial.print("C");
Serial.println();
Serial.print("GYR (");
Serial.print("\xC2\xB0"); //Print degree symbol
Serial.print("/s):\t");
Serial.print(normalized.gyroscope.x, 3);
Serial.print("\t\t");
Serial.print(normalized.gyroscope.y, 3);
Serial.print("\t\t");
Serial.print(normalized.gyroscope.z, 3);
Serial.println();
Serial.print("ACC (m/s^2):\t");
Serial.print(normalized.accelerometer.x, 3);
Serial.print("\t\t");
Serial.print(normalized.accelerometer.y, 3);
Serial.print("\t\t");
Serial.print(normalized.accelerometer.z, 3);
Serial.println();
Serial.print("MAG (");
Serial.print("\xce\xbc"); //Print micro symbol
Serial.print("T):\t");
Serial.print(normalized.magnetometer.x, 3);
Serial.print("\t\t");
Serial.print(normalized.magnetometer.y, 3);
Serial.print("\t\t");
Serial.print(normalized.magnetometer.z, 3);
Serial.println();
Serial.println();
lastPrintMillis = currentMillis;
}
}
注意:該片段是位于我們的 GitHub存儲(chǔ)庫(kù)中的 Arduino 項(xiàng)目的一部分,代碼分隔在不同的邏輯文件中。
測(cè)試
串行監(jiān)視器將每隔INTERVAL_MS_PRINT毫秒打印最后一次可用的傳感器數(shù)據(jù)(在上面的示例中,每秒一次),它應(yīng)該類似于:
通常方向是在物理模塊上繪制的,因此您可以輕松檢測(cè) X、Y 和 Z 軸。
- 使用Arduino和加速度計(jì)陀螺儀傳感器MPU9250制作指南針
- 使用MPU9250獲取實(shí)時(shí)位置
- QFN封裝的復(fù)合芯片MPU9250數(shù)據(jù)手冊(cè) 1次下載
- MPU9250資料包分享 39次下載
- stm32驅(qū)動(dòng)mpu6050、mpu6500、mpu9250心得
- 用arduino uno的IIC讀取JY901角度傳感器的數(shù)據(jù)
- MPU9250九軸9軸姿態(tài)加速度陀螺儀傳感器的資料合集免費(fèi)下載 74次下載
- 使用STM32單片機(jī)實(shí)現(xiàn)MPU9250九軸傳感器實(shí)驗(yàn)的詳細(xì)資料說(shuō)明 37次下載
- MPU9250的中文數(shù)據(jù)手冊(cè)免費(fèi)下載 208次下載
- 使用STM32單片機(jī)讀取MPU6050傳感器數(shù)據(jù)的程序免費(fèi)下載 61次下載
- MPU9250芯片的相關(guān)資料合集免費(fèi)下載 76次下載
- 九軸傳感器MPU9250詳細(xì)資料 160次下載
- MPU-9250-寄存器手冊(cè) 0次下載
- MPU9250數(shù)據(jù)采集和解析 237次下載
- GY9250 MPU9250資料 182次下載
- MPU6050傳感器解析實(shí)驗(yàn) 3407次閱讀
- 采用數(shù)字微波傳感器和Arduino控制板實(shí)現(xiàn)人體探測(cè)系統(tǒng) 1995次閱讀
- 采用數(shù)字微波傳感器、繼電器和Arduino控制板的自動(dòng)光控系統(tǒng) 833次閱讀
- 如何使用Arduino和LDR傳感器實(shí)現(xiàn)LCD液晶屏亮度的自動(dòng)調(diào)節(jié) 6529次閱讀
- 基于鉆井深度顯示器和帶有Arduino支持的7段顯示器設(shè)計(jì) 2480次閱讀
- dfrobot模擬角度傳感器簡(jiǎn)介 1772次閱讀
- 如何檢測(cè)車速傳感器? 2w次閱讀
- 數(shù)字傳感器和模擬傳感器的區(qū)別 2.5w次閱讀
- ldc1000傳感器是什么_ldc1000怎么用 8840次閱讀
- 無(wú)線瓦斯傳感器節(jié)點(diǎn)設(shè)計(jì)解說(shuō) 1362次閱讀
- 位移傳感器是做什么用的_位移傳感器怎么用 2.8w次閱讀
- mpu6050和mpu3050有什么不同和相同(基礎(chǔ)介紹和區(qū)別分析) 3.6w次閱讀
- mpu6050六軸傳感器模塊驅(qū)動(dòng)程序源代碼分享 3.6w次閱讀
- RF無(wú)線技術(shù):工業(yè)用無(wú)線傳感器網(wǎng)絡(luò) 2018次閱讀
- 溫度傳感器到數(shù)字MPU的連接電路 2075次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多