資料介紹
描述
?
。
第 2 步:簡(jiǎn)介
MPU6050是世界上第一個(gè)集成 6 軸運(yùn)動(dòng)跟蹤設(shè)備,將 3 軸陀螺儀、3 軸加速度計(jì)和數(shù)字運(yùn)動(dòng)處理器? (DMP) 全部結(jié)合在一個(gè)小型 4x4x0.9mm 封裝中,即中間的集成電路,它基于I2C通信協(xié)議,具體不討論,參考MPU 6050的Datasheet 。
第 3 步:硬件
MPU 6050 采用模塊形式,有 8 個(gè)引腳,但不用擔(dān)心,我們將只使用 4 個(gè)重要引腳,足以與我們的 Arduino 板集成。
所以我們有 VCC,接地,它接受從 2v 到 5v 的任何輸入,因?yàn)檫@個(gè)板上有一個(gè)穩(wěn)壓器,因此支持 3.3v 邏輯高電平和 5v 邏輯高電平。
接下來我們有一些 SMD 封裝的免費(fèi)電阻器和電容器,最重要的部分是 MPU6050 IC,它是一個(gè) MEMS 或微機(jī)電系統(tǒng),它根據(jù)軸位置的變化改變電壓。
該 IC 還有 SCL SDA,它們是 I2C 引腳,XDA 和 XCL 是輔助串行引腳,在本教程中我們不會(huì)將它們與 Arduino 一起使用,我們有 AD0,它是輔助端口和主端口之間的地址選擇,最后我們有 INT中斷引腳,
我們的 Arduino UNO 和 NANO 的連接如下:
VCC-5v
接地 - 接地
沙中線 - A5
SDA-A4
(對(duì)于其他 Arduino 板,只有 SDA 和 SCL 引腳發(fā)生變化。)
這就是連接的全部
(在UTSOURCE找到所有組件)
第 4 步:安裝庫
在開始編碼之前,我們需要一個(gè)由 jarzebski 命名為 Arduino MPU-6050 的庫,
我們還需要內(nèi)置的 Wire Library,因此我們只需安裝 MPU - 6050 Library。
這是MPU6050 庫的鏈接。
要將新庫安裝到您的 Arduino IDE 中,您可以使用庫管??理器。
- 打開 IDE 并單擊“Sketch”菜單,然后單擊“Include Library”> 選擇“Add.ZIP Library”選項(xiàng)。
- 導(dǎo)航到 .zip 文件的位置并將其打開。
有關(guān)導(dǎo)入的更多信息,請(qǐng)參閱https://www.arduino.cc/en/guide/libraries
第 5 步:打開陀螺儀示例。
將 MPU-6050 庫添加到 Arduino IDE 后,我們有很多示例可供選擇,例如
- MPU6050_accel_pitch_roll
- MPU6050_accel_simple
- MPU6050_自由落體
- MPU6050_gyro_pitch_roll_yaw
- MPU6050_gyro_simple
- MPU6050_運(yùn)動(dòng)
- MPU6050_溫度
我們需要慢慢了解庫和基礎(chǔ)知識(shí),所以讓我們從MPU6050_gyro_simple示例開始。
(你知道 MPU6050 也有一個(gè)溫度傳感器,但不是很準(zhǔn)確所以我們沒有在這里討論它!)
第 6 步:理解代碼
基本上在這個(gè)例子中,我們將查看我們的傳感器是否正常工作,因此我們將在串行監(jiān)視器上顯示傳感器數(shù)據(jù)。
所以我們在設(shè)置部分開始串行監(jiān)視器。
Serial.begin(115200);
在此While 循環(huán)中,執(zhí)行傳感器測(cè)試序列。
while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
{ Serial.println("Could not find a valid MPU6050 sensor, check wiring!");
delay(500);
}
有時(shí)我們正在做一個(gè)項(xiàng)目,并且必須將我們的傳感器設(shè)置在一個(gè)特定的方向,我們需要偏移量,我們不需要這個(gè)教程,
- 但要更改偏移量,只需取消注釋這些行。
// mpu.setGyroOffsetX(155);
// mpu.setGyroOffsetY(15);
// mpu.setGyroOffsetZ(15);
( uncomment by removing "http://" )
- 有一條校準(zhǔn)線,它實(shí)際上會(huì)將我們的傳感器設(shè)置為平坦。
// Calibrate gyroscope. The calibration must be at rest.
// If you don't want calibrate, comment this line.
mpu.calibrateGyro();
記住偏移和校準(zhǔn)是兩個(gè)不同的東西,偏移會(huì)給你定義的校準(zhǔn),例如,你可以以奇怪的角度安裝這個(gè)傳感器,但它會(huì)作為零的參考點(diǎn)。
- 接下來是靈敏度,默認(rèn)值為 3。
// Set threshold sensivty. Default 3.
// If you don't want use threshold, comment this line or set 0.
mpu.setThreshold(3);
- 在檢查循環(huán)部分,完成了基本的硬件檢查。
void checkSettings()
{
Serial.println();
Serial.print(" * Sleep Mode: ");
Serial.println(mpu.getSleepEnabled() ? "Enabled" : "Disabled");
Serial.print(" * Clock Source: ");
switch(mpu.getClockSource())
{
case MPU6050_CLOCK_KEEP_RESET: Serial.println("Stops the clock and keeps the timing generator in reset"); break;
case MPU6050_CLOCK_EXTERNAL_19MHZ: Serial.println("PLL with external 19.2MHz reference"); break;
case MPU6050_CLOCK_EXTERNAL_32KHZ: Serial.println("PLL with external 32.768kHz reference"); break;
case MPU6050_CLOCK_PLL_ZGYRO: Serial.println("PLL with Z axis gyroscope reference"); break;
case MPU6050_CLOCK_PLL_YGYRO: Serial.println("PLL with Y axis gyroscope reference"); break;
case MPU6050_CLOCK_PLL_XGYRO: Serial.println("PLL with X axis gyroscope reference"); break;
case MPU6050_CLOCK_INTERNAL_8MHZ: Serial.println("Internal 8MHz oscillator"); break;
}
Serial.print(" * Gyroscope: ");
switch(mpu.getScale())
{
case MPU6050_SCALE_2000DPS: Serial.println("2000 dps"); break;
case MPU6050_SCALE_1000DPS: Serial.println("1000 dps"); break;
case MPU6050_SCALE_500DPS: Serial.println("500 dps"); break;
case MPU6050_SCALE_250DPS: Serial.println("250 dps"); break;
}
Serial.print(" * Gyroscope offsets: ");
Serial.print(mpu.getGyroOffsetX());
Serial.print(" / ");
Serial.print(mpu.getGyroOffsetY());
Serial.print(" / ");
Serial.println(mpu.getGyroOffsetZ());
Serial.println();
}
我強(qiáng)烈建議保留此循環(huán)。
- 在循環(huán)部分,這是整個(gè)代碼中最重要的部分,即從我們的傳感器獲取值。首先我們需要調(diào)用值,使用 mpu.readRawGyro 或 mpu.readNormalizeGyro,現(xiàn)在原始和規(guī)范化的概念是這樣的,原始基本上是數(shù)字,規(guī)范化值是經(jīng)過過濾器和計(jì)算的值,或者你可以說,處理過的數(shù)據(jù)。
void loop()
{
Vector rawGyro = mpu.readRawGyro();
Vector normGyro = mpu.readNormalizeGyro();
- 我們有 3 個(gè)軸,稱為 xy 和 z,可以使用我們?cè)O(shè)置為 rawGyro 的變量名調(diào)用它們,后跟軸名,為了制作一個(gè)項(xiàng)目,我們將需要使用此變量名的 x、y 和 z 這 3 個(gè)值。軸命令。
Serial.print(" Xraw = ");
Serial.print(rawGyro.XAxis);
Serial.print(" Yraw = ");
Serial.print(rawGyro.YAxis);
Serial.print(" Zraw = ");
Serial.println(rawGyro.ZAxis);
Serial.print(" Xnorm = ");
Serial.print(normGyro.XAxis);
Serial.print(" Ynorm = ");
Serial.print(normGyro.YAxis);
Serial.print(" Znorm = ");
Serial.println(normGyro.ZAxis);
- 最后,為了以舒適的速度查看值,讓我們將延遲從 10 增加到 1000
delay(10);
}
由于我們的示例代碼已準(zhǔn)備就緒并且我們了解我們?cè)诖a中做了什么,現(xiàn)在是上傳代碼和查看結(jié)果的時(shí)候了。
代碼可以在這里找到!
?
第 7 步:在串口中查看結(jié)果
上傳完成后,是時(shí)候打開串行監(jiān)視器并觀察輸出了:
不要忘記將串口與我們?cè)诖a開頭定義的波特率相匹配,即115200
如果我們的接線和硬件正確,我們應(yīng)該在串行端口上獲取每個(gè)軸的值,以獲取傳感器中原始和歸一化陀螺儀的變化。
Initialize MPU6050
* Sleep Mode: Disabled
* Clock Source: PLL with X axis gyroscope reference
* Gyroscope: 2000 dps
* Gyroscope offsets: 0 / 0 / 0
Xraw = -65.00 Yraw = 25.00 Zraw = -29.00
Xnorm = 0.00 Ynorm = 0.00 Znorm = 0.00
Xraw = -62.00 Yraw = 20.00 Zraw = -32.00
Xnorm = 0.00 Ynorm = 0.00 Znorm = 0.00
Xraw = -64.00 Yraw = 25.00 Zraw = -30.00
Xnorm = 0.00 Ynorm = 0.00 Znorm = 0.00
Xraw = -66.00 Yraw = 23.00 Zraw = -29.00
Xnorm = 0.00 Ynorm = 0.00 Znorm = 0.00
Xraw = -67.00 Yraw = 20.00 Zraw = -33.00
Xnorm = 0.00 Ynorm = 0.00 Znorm = 0.00
Xraw = -64.00 Yraw = 22.00 Zraw = -31.00
Xnorm = 0.00 Ynorm = 0.00 Znorm = 0.00
這是我們?cè)诖谏系玫降娜罩尽?/font>
第 8 步:下一步是什么?
。
- MPU6050運(yùn)動(dòng)跟蹤設(shè)備開源分享
- MPU6050數(shù)據(jù)手冊(cè) 118次下載
- MPU6050( )
- STM32 MPU6050 平衡車
- STM32獲取MPU6050數(shù)據(jù)
- MPU6050常見問題的分析與處理
- MPU6050簡(jiǎn)介
- MPU6050開發(fā) -- 數(shù)據(jù)分析
- 如何進(jìn)行MPU6050的初始化配置詳細(xì)教程說明 90次下載
- 6軸MPU6050模塊的介紹和應(yīng)用資料說明 32次下載
- MPU6050(硬件IIC) 78次下載
- MPU6050原理圖 115次下載
- MPU6050九軸示例程序 101次下載
- MPU6050程序 39次下載
- MPU-6050 datasheet 36次下載
- mpu6050和mpu6500哪個(gè)性能好 6359次閱讀
- MPU6050傳感器解析實(shí)驗(yàn) 3407次閱讀
- MPU6050簡(jiǎn)介及rt-thread軟件包使用 3002次閱讀
- 采用I2C總線實(shí)現(xiàn)MPU6050模塊功能 6835次閱讀
- mpu6050姿態(tài)解算原理_mpu6050姿態(tài)解算程序 4.3w次閱讀
- 一文看懂mpu6050卡爾曼濾波程序 7.3w次閱讀
- mpu6050怎么與單片機(jī)連接 2.6w次閱讀
- 一文看懂mpu9150和mpu6050區(qū)別 4.1w次閱讀
- 一文看懂mpu6500和mpu6050區(qū)別 9.3w次閱讀
- 基于MPU6050的老年人跌倒監(jiān)測(cè)系統(tǒng)設(shè)計(jì) 3.4w次閱讀
- mpu6050對(duì)應(yīng)i2c地址是什么_如何讀取數(shù)據(jù) 2.4w次閱讀
- mpu6050和mpu3050有什么不同和相同(基礎(chǔ)介紹和區(qū)別分析) 3.6w次閱讀
- mpu6050六軸傳感器模塊驅(qū)動(dòng)程序源代碼分享 3.6w次閱讀
- mpu6050姿態(tài)解算原理分析及程序設(shè)計(jì) 4.2w次閱讀
- mpu6050姿態(tài)融合原理及程序代碼 7.2w次閱讀
下載排行
本周
- 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元宇宙深度解析—未來的未來-風(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語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多