那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣將Arduino與MPU6050連接

454398 ? 來源:工程師吳畏 ? 2019-07-29 08:56 ? 次閱讀

在進入項目之前,您需要了解MPU6050傳感器的一些基礎(chǔ)知識。 MPU-6050是一種IMU傳感器,在單個芯片上包含MEMS微機電系統(tǒng))加速度計和MEMS陀螺儀

這里是IMU傳感器,其中IMU代表慣性測量單元,是一種利用加速度計測量比力的裝置,使用陀螺儀測量角速率和使用磁強計測量磁場。

IMU傳感器用于自平衡機器人,飛機,手機,平板電腦,航天器,衛(wèi)星,無人機,無人機(無人駕駛飛行器)等用于引導(dǎo),位置檢測,方向檢測,運動跟蹤和飛行控制。

兩種常見的IMU是ADXL 335加速度計和MPU-6050。 ADXL 335包含一個3軸加速度計。

對于MPU-6050,它是一個六軸運動跟蹤設(shè)備,結(jié)合了3軸加速度計和3 -axis陀螺儀在一個芯片上。我們將在下一節(jié)中看到有關(guān)MPU6050的更多詳細信息

簡介到MPU6050傳感器

MPU-6050是由InvenSense開發(fā)的六軸運動跟蹤設(shè)備。 MPU6050器件的主要特性如下所述。

三軸加速度計

三軸陀螺儀

數(shù)字輸出溫度傳感器

六個16位ADC(三個用于加速度計,三個用于陀螺儀)

集成數(shù)字運動處理器(DMP)

1024B FIFO緩沖區(qū)

六軸MPU-6050被稱為6 DoF(六自由度)設(shè)備,因為它提供六個輸出值(三個來自Accelerometer,三個來自Gyro)。 MPU-6050可以使用I2C協(xié)議進行通信

數(shù)字運動處理器或DMP是一種嵌入式處理器,可以減少來自主處理器的計算負載,如Arduino,從加速度計,陀螺儀和外部磁力計獲取和處理數(shù)據(jù)。

將MPU6050與Arduino接口

如前所述,MPU6050僅支持I2C通信,因此必須僅連接到Arduino的I2C引腳。 Arduino的I2C引腳與模擬輸入引腳A4和A5復(fù)用,即A4為SDA,A5為SCL。

來到MPU6050,我們使用了一個提供8個引腳的普通分線板。上圖顯示了MPU6050分線板的原理圖。

在此,我們將使用SCL,SDA和INT引腳連接Arduino。

所需組件

硬件

Arduino UNO [在此處購買]

MPU6050分組板[在此處購買]

連接線[在此處購買]

軟件

Arduino IDE

處理(用于3D可視化)

電路圖

下圖顯示了MPU6050與Arduino UNO接口的電路圖。如前所述,MPU6050和Arduino之間的接口必須使用I2C協(xié)議實現(xiàn)。

因此,Arduino(A5)的SCL引腳連接到MPU6050的SCL引腳。同樣,Arduino(A4)的SDA引腳連接到MPU6050板的SDA引腳。

此外,我們將使用MPU6050的中斷功能來指示當(dāng)1024字節(jié)FIFO緩沖區(qū)已滿時(或中斷)Arduino。因此,將MPU6050的INT引腳連接到Arduino UNO的外部中斷0(INT0)引腳,即引腳2.

注意:在I2C中通信時,MPU-6050始終充當(dāng)從屬設(shè)備。

閱讀來自MPU6050的RAW值

在上傳實際程序之前,我們將首先看到一個簡單的程序來讀取加速度計,陀螺儀和溫度傳感器的原始值。只需將MPU6050的SCL和SDA線連接到Arduino(A4和A5)的相應(yīng)I2C引腳,然后上傳以下代碼即可。

如果打開串行終端,您將獲得加速度計和陀螺儀的原始值以及溫度傳感器校準(zhǔn)的溫度。數(shù)據(jù)看起來像這樣。

如您所見,閱讀原始數(shù)據(jù)來自MPU6050傳感器的數(shù)據(jù)很簡單但是這些數(shù)據(jù)我們需要對這些數(shù)據(jù)進行額外的計算才能得到偏航,俯仰和俯仰。

我已經(jīng)提到了MPU6050傳感器,有一個特殊的處理器,稱為DMP或數(shù)字運動處理器,與加速度計和陀螺儀嵌入在同一芯片上。此DMP的使用是可以使用固件對其進行編程,以便對來自傳感器的數(shù)據(jù)執(zhí)行復(fù)雜的計算。

但是沒有關(guān)于InvenSense的DMP的明確文檔因此我們錯過了直接在芯片上快速計算傳感器數(shù)據(jù)的方法。

Jeff Rowberg等人在DMP的逆向工程方面做得非常出色來自I2C信號分析的相關(guān)信息。

將代碼上傳到Arduino并測試MPU6050

在上傳代碼之前,我們需要為Arduino下載兩個庫。它們是I2Cdev和MPU6050。下載鏈接和官方GitHub鏈接如下所示。

I2Cdev:下載I2CDEV LIBRARY 或訪問GitHub LINK

MPU6050:下載MPU6050 LIBRARY 或訪問GitHub LINK

下載MPU6050庫并通過解壓縮下載的文件來提取內(nèi)容。您將獲得一個名為“MPU6050”的文件夾。復(fù)制此文件夾并將其粘貼到Arduino的libraries文件夾中。

在我的情況下,它位于“C: Program Files(x86) Arduino libraries”。對I2Cdev庫做同樣的事情。

如果一切順利,請打開Arduino IDE并瀏覽以下路徑:文件 - 》示例 - 》 MPU6050 - 》示例 - 》 MPU6050_DMP6并打開示例代碼MPU6050_DMP6。

將此代碼上傳到Arduino(假設(shè)您已根據(jù)電路圖建立了連接)并且代碼為上傳,打開串口終端。

將串口終端的波特率設(shè)置為115200,您將得到以下文字。

“初始化DMP 。..

初始化I2C設(shè)備。..。..

測試設(shè)備連接。..

MPU6050連接成功

發(fā)送任何字符以開始DMP編程和演示:“

如果您沒有獲得任何數(shù)據(jù)或仍然獲取垃圾數(shù)據(jù),只需重置Arduino。如果您查看最后一句,它會說“發(fā)送任何字符以開始DMP編程和演示”。因此,在串行監(jiān)視器中鍵入任何字符,如1或a,然后發(fā)送它。只要您按Enter鍵,就可以開始在串行監(jiān)視器上看到Y(jié)aw,Pitch and Roll(ypr)值。

注意:在此期間,請將MPU6050放在穩(wěn)定的水平表面上。此外,等待MPU6050的值穩(wěn)定10秒鐘。

根據(jù)接口Arduino和MPU6050的值進行處理中的3D建模

在項目的下一步中,我們將使用Processing IDE查看MPU6050傳感器的3D建模,您可以在其中查看傳感器數(shù)據(jù)的3D表示。 Processing是一種為電子藝術(shù)和視覺設(shè)計開發(fā)的編程語言和IDE。實際上,Arduino IDE也基于Processing編程語言。

要下載Processing IDE,請訪問 LINK 。使用給定鏈接下載并安裝Processing IDE。

下載處理IDE并安裝后(只需從下載的zip文件中解壓縮內(nèi)容),您需要下載一個庫for Processing稱為“Toxi”。您可以從 LINK 下載Toxi庫。

我選擇了“toxiclibs-complete-0020”文件。下載此文件后,將內(nèi)容解壓縮到名為“toxiclibs-complete-0020”的文件夾。

復(fù)制此文件夾并將其粘貼到Processing的libraries文件夾中。就我而言,它是“C: Users Ravi Documents Processing libraries”。

復(fù)制文件夾后,您就可以進行3D建模了。首先,您需要上傳先前的Arduino代碼(MPU6050_DMP6),只需稍加修改。

在Arduino IDE中打開MPU6050_DMP6(我們之前上傳的示例程序)。向下滾動到顯示以下內(nèi)容的行。

#define OUTPUT_READABLE_YAWPITCHROLL

通過在其前面添加雙正斜杠來注釋此行。

//#define OUTPUT_READABLE_YAWPITCHROLL

此外,找到//#define OUTPUT_TEAPOT 的行,并通過刪除雙正斜杠取消注釋。現(xiàn)在,您可以上傳代碼。我們在代碼中修改的不是將數(shù)據(jù)發(fā)送到串行終端,而是將其轉(zhuǎn)發(fā)到處理IDE。

現(xiàn)在,打開Processing IDE并單擊File - 》打開。現(xiàn)在,導(dǎo)航到為Arduino安裝MPU6050庫的文件夾。打開名為“MPUTeapot”的Processing示例。

在我的示例中,此示例的位置為C: Program Files(x86) Arduino libraries MPU6050 Examples MPU6050_DMP6 Processing MPUTeapot。

此程序可自動選擇Arduino所連接的PORT編號。與此相關(guān)的代碼中的行是

字符串portName = Serial.list()[0];

指定Arduino的PORT編號的另一種方法是手動輸入COM端口號。為此,請注釋以上行并取消注釋以下行,并將COM端口號替換為Arduino所連接的相應(yīng)COM端口號。

//String portName =“COM4”;

在點擊Processing中的運行按鈕之前,請確保Arduino IDE的串行監(jiān)視器是關(guān)閉。現(xiàn)在,單擊處理IDE中的運行按鈕。您將獲得一個具有類似結(jié)構(gòu)的平面的窗口。在對MPU6050進行3D建模之前等待10秒。

通過屏幕上的3D對象可以看到MPU6050的移動。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    187816
  • MPU6050
    +關(guān)注

    關(guān)注

    39

    文章

    307

    瀏覽量

    71662
收藏 人收藏

    評論

    相關(guān)推薦

    EE-139:通過SPI端口ADSP-2191與AD7476連接

    電子發(fā)燒友網(wǎng)站提供《EE-139:通過SPI端口ADSP-2191與AD7476連接.pdf》資料免費下載
    發(fā)表于 01-14 15:06 ?0次下載
    EE-139:通過SPI端口<b class='flag-5'>將</b>ADSP-2191與AD7476<b class='flag-5'>連接</b>

    STM32單片機+MPU6050設(shè)計一個電子水平儀

    本項目基于STM32F103C8T6單片機設(shè)計一款電子水平儀。STM32F103C8T6作為一種性能強大的微控制器,具有較高的計算能力和豐富的外設(shè)接口,能夠滿足項目對實時數(shù)據(jù)處理和顯示控制的需求。該單片機將與MPU6050傳感器相結(jié)合,利用其內(nèi)置的加速度計和陀螺儀,實現(xiàn)設(shè)備的傾斜角度測量。
    的頭像 發(fā)表于 01-09 11:14 ?908次閱讀
    STM32單片機+<b class='flag-5'>MPU6050</b>設(shè)計一個電子水平儀

    MPU6050讀取數(shù)據(jù)有問題

    在調(diào)試MPU6050時讀取原始數(shù)據(jù)只有X軸在變化,Y軸和Z軸的數(shù)據(jù)一直沒有變化,已經(jīng)調(diào)試兩天了,這個是讀取的數(shù)據(jù)
    發(fā)表于 12-09 10:40

    如何通過I2C加速度計MPU6050連接到ESP8266?

    有沒有人通過 I2C 加速度計MPU6050連接到ESP8266? 我想讀取寄存器who_am_i,但我無法從從機獲取 ACK 信號
    發(fā)表于 07-22 06:18

    硬件i2c讀寫MPU6050

    本資料為MPU6050
    發(fā)表于 07-15 11:45 ?4次下載

    如何利用中斷從Mpu6050讀取數(shù)據(jù)?

    我正在使用延遲從 psoc 5LP CY8C5888LTI-LP097 中的 mpu-6050 imu 讀取數(shù)據(jù)。 我不想用延時器,我想用帶中斷的定時器代替它。 下面附上我的項目文件。 請幫我創(chuàng)建中斷函數(shù)。
    發(fā)表于 07-03 06:18

    M16連接器14芯怎樣才算合格的

      德索工程師說道M16連接器14芯作為一種高性能的電氣連接器件,其合格性不僅關(guān)乎產(chǎn)品的基本性能,還涉及到其在實際應(yīng)用中的穩(wěn)定性和可靠性。以下從多個方面詳細闡述M16連接器14芯的合格標(biāo)準(zhǔn):
    的頭像 發(fā)表于 06-07 17:47 ?943次閱讀
    M16<b class='flag-5'>連接</b>器14芯<b class='flag-5'>怎樣</b>才算合格的

    求助求助,MPU6050模塊用DMP時的自檢問題

    我在mpu6050的DMP自檢始終不通過,我通過debug發(fā)現(xiàn)里面的兩個值st_shift_cust,st_shift_var不對,讀出來數(shù)值很大。st_shift_var讀出來5.幾
    發(fā)表于 05-18 17:27

    RJ45連接器的優(yōu)勢知多少?解讀LP系列RJ45連接器不止快更可靠

    ,還要適應(yīng)惡劣環(huán)境的挑戰(zhàn),以確保其可靠性和耐受性。RJ45連接器有何特點?應(yīng)用情況怎樣?01RJ45連接器有哪些特點?RJ45連接器的特點與優(yōu)勢標(biāo)準(zhǔn)化接口RJ45
    的頭像 發(fā)表于 05-10 08:13 ?797次閱讀
    RJ45<b class='flag-5'>連接</b>器的優(yōu)勢知多少?解讀LP系列RJ45<b class='flag-5'>連接</b>器不止快更可靠

    請問MPU6050可以做振動探測器使用嗎?

    MPU6050可以做振動探測器使用嗎?
    發(fā)表于 05-08 07:54

    mpu6050芯片的INT中斷信號引腳和單片機之間需要接電阻嗎?

    mpu6050芯片的INT中斷信號引腳和單片機之間需要接電阻嗎? 我見有的電路圖里面沒有,有的卻說需要,到底是怎樣的?
    發(fā)表于 05-07 07:21

    MPU6050休眠后如何配置重力加速度喚醒MPU6050

    MPU6050休眠后如何配置重力加速度喚醒MPU6050自己?
    發(fā)表于 05-07 06:19

    MPU6050 dmp庫定時查詢讀取偶爾獲取失敗的原因?

    在玩mpu6050 dmp庫的時候遇到了一些問題,dmp設(shè)置fifo頻率20Hz,每50ms程序中讀取一次,但是偶爾會有都不到數(shù)據(jù)的情況,mpu_read_fifo_stream讀取失敗。主程序
    發(fā)表于 04-30 06:37

    MPU6050勻速轉(zhuǎn)動一段時間后,偏航角不變怎么解決?

    使用MPU6050 檢測機器人的偏航角度。當(dāng)機器人原地連續(xù)旋轉(zhuǎn)時(朝一個方向),DMP 輸出的偏航角開始正常,之后會出現(xiàn)輸出的偏航角不變,此時機器人速度只要發(fā)生一下變化,DMP輸出的偏航角就會開始
    發(fā)表于 04-09 08:24

    什么是姿態(tài)傳感器MPU6050

     MPU6050是6軸運動處理傳感器,它集成了3軸MEMS陀螺儀,3軸MEMS加速度計,以及一個可擴展的數(shù)字運動處理器DMP。使用它就是為了得到待測物體(如四軸飛行器、平衡小車)x、y、z軸的傾角(俯仰角Pitch、翻滾角Roll、偏航角Yaw)。
    發(fā)表于 02-15 10:53 ?3913次閱讀
    什么是姿態(tài)傳感器<b class='flag-5'>MPU6050</b>
    百家乐官网合理的投注法| 真钱百家乐官网送钱| 莆田棋牌迷| 立博开户| 易赢百家乐官网软件| 百家乐官网园sun811| 全讯网25900.com| 伯爵百家乐官网娱乐城| 百家乐真人娱乐场开户注册| 澳门百家乐官网路单怎么看| 大发888娱乐城电脑版下载| 总玩百家乐官网有赢的吗| 新郑市| 赌神网百家乐2| 百家乐官网棋| 东辽县| 真人百家乐怎么玩| 百家乐官网园百乐彩| 百家乐官网路单用处| 大发888 真钱娱乐场| 开心8百家乐娱乐城| 澳门百家乐官网洗码提成查询 | 班戈县| 百家乐官网稳赚打法| 真人百家乐官网作| 百家乐娱乐平台会员注册| 香港六合彩公司| 百家乐7杀6| 娱乐城在线| 百家乐官网群html| 百家乐赌马| 大世界百家乐娱乐场| 百家乐官网技巧-澳门百家乐官网官方网址 | 全讯网高手论坛| 百家乐赢钱海立方| 百家乐官网线上| 平阳县| 网络棋牌室| 澳门百家乐赌场娱乐网规则| 单耳房做生意的风水| 易胜博百家乐官网作弊|