MPU6050應用詳解


MPU6050應用詳解

最近項目上要用到 MPU6050 陀螺儀,以前沒有接觸過它。雖然在網上很容易就可以找到了需要的代碼。實現了一部分功能。但是卻還是對陀螺儀的工作原理不太了解,它的代碼也需要分析一下,I2C通信、相關寄存器也要熟悉。我看網上多是在Arduino開發板實現的,那么在 C51單片機板上怎么實現呢,又或者 S5PV210 上怎么實現呢?帶着這些問題,開始 MPU6050 的開發。

一、型號

我看了一下型號為 GY-521 MPU6050模塊 三維角度傳感器6DOF 三軸加速度計電子陀螺儀

可在官網下載最新的芯片手冊和寄存器映射和描述,參看:MPU6050 官網

二、查看芯片手冊

(1)產品簡介

MPU-60X0是世界上第一款集成 6 軸MotionTracking設備。它集成了3軸MEMS陀螺儀,3軸MEMS加速度計,以及一個可擴展的數字運動處理器 DMP( DigitalMotion Processor),可用I2C接口連接一個第三方的數字傳感器,比如磁力計。擴展之后就可以通過其 I2C或SPI接口輸出一個9軸的信號( SPI接口僅在MPU-6000可用)。 MPU-60X0也可以通過其I2C接口連接非慣性的數字傳感器,比如壓力傳感器。
MPU-60X0對陀螺儀和加速度計分別用了三個16位的ADC,將其測量的模擬量轉化為可輸出的數字量。為了精確跟蹤快速和慢速的運動,傳感器的測量范圍都是用戶可控的,陀螺儀可測范圍為±250, ±500, ±1000, ±2000°/秒( dps),加速度計可測范圍為±2, ±4,±8, ±16g。
一個片上1024字節的FIFO,有助於降低系統功耗。和所有設備寄存器之間的通信采用 400kHz的 I2C接口或 1MHz的 SPI接口( SPI僅MPU-6000可用)。 對於需要高速傳輸的應用, 對寄存器的讀取和中斷可用 20MHz的SPI。另外,片上還內嵌了一個溫度傳感器和在工作環境下僅有±1%變動的振盪器。芯片尺寸4×4×0.9mm,采用QFN封裝(無引線方形封裝),可承受最大 10000g的沖擊,並有可編程的低通濾波器。
關於電源, MPU-60X0可支持 VDD范圍 2.5V±5%, 3.0V±5%,或 3.3V±5%。另外MPU-6050還有一個 VLOGIC引腳,用來為 I2C輸出提供邏輯電平。 VLOGIC電壓可取1.8±5%或者VDD。

(2)產品特征

數字輸出6軸或9軸的旋轉矩陣、四元數(quaternion)、歐拉角格式(EulerAngleforma)的融合演算數據。
具有131 LSBs/°/sec 敏感度與全格感測范圍為±250、 ±500、 ±1000與±2000°/sec 的3軸角速度感測器(陀螺儀)。
可程式控制,且程式控制范圍為±2g、 ±4g、 ±8g和±16g的3軸加速器。
移除加速器與陀螺儀軸間敏感度,降低設定給予的影響與感測器的飄移。
數字運動處理(DMP:DigitalMotion Processing)引擎可減少復雜的融合演算數據、 感測器同步化、 姿勢感應等的負荷。 運動處理數據庫支持 Android、 Linux與Windows 內建之運作時間偏差與磁力感測器校正演算技術,免除了客戶須另外進行校正的需求。
以數位輸出的溫度傳感器
以數位輸入的同步引腳(Syncpin)支援視頻電子影相穩定技術與GPS
可程式控制的中斷(interrupt)支援姿勢識別、搖攝、畫面放大縮小、滾動、快速下降中斷、 high-G中斷、零動作感應、觸擊感應、搖動感應功能。
VDD供電電壓為2.5V±5%、 3.0V±5%、 3.3V±5%; VDDIO為1.8V±5%
陀螺儀運作電流: 5mA, 陀螺儀待命電流: 5uA; 加速器運作電流: 500uA, 加速器省電模式電流: 40uA@10Hz
高達 400kHz 快速模式的 I2C,或最高至 20MHz 的 SPI 串行主機接口(serial hostinterface)
內建振盪器在工作溫度范圍內僅有±1%頻率變化。 可選外部時鍾輸入 32.768kHz或19.2MHz

(3)使用說明

《1》引腳輸出和信號描述

《2》典型用法

《3》所需電容規格

 

需要了解的小知識點:

電容的基本單位是F(法拉),其它單位還有:毫法(mF)、微法(uF)、納法(nF)、皮法(pF)。
由於單位F 的容量太大,所以我們看到的一般都是μF、nF、pF的單位。
換算:1F=1000000μF,1μF=1000nF=1000000pF

電容規格:Ceramic, X7R, 0.1μF ±10%, 2V  是什么意思呢?

參看:全系列電容規格書

Ceramic

陶瓷介質

X7R

溫度系數/特性:工作溫度范圍 -55℃~125℃ (軍工級)

    元器件級別主要是指其工作溫度范圍,如下:
    商業級:0℃~+70℃
    工業級:-40℃~+85℃
    汽車級:-40℃~125℃
    軍品級:-55℃~+125℃

0.1μF ±10%

0.1μF 容量,容差是±10%

2V

額定電壓,以此也可以選擇電容尺寸

三、電路圖

 

到此,硬件部分看完了!!

 

/////////////////////////////////////////////////////////////////////

上面簡單的介紹了 MPU6050,里面有好多概念不明白,3軸、6軸、9軸、加速度計、磁力針、DMP等等。

都是什么玩意。。。啊!!這道題我不會做,太難了!

帶着這些問題,繼續看芯片手冊。

一、概述

 

MPU-60X0由以下幾個關鍵塊和功能組成:

1、帶有16位ADC和信號調理的三軸MEMS速率陀螺儀傳感器
2、具有16位ADC和信號調理的三軸MEMS加速度傳感器
3、數字運動處理器(DMP)引擎
4、主I2C和SPI(僅MPU-6000)串行通信接口
5、用於第三方磁力計和其他傳感器的輔助I2C串行接口
6、時鍾
7、傳感器數據寄存器
8、FIFO
9、中斷
10、數字輸出溫度傳感器
11、陀螺儀和加速度計自檢
12、偏見和LDO
13、充電泵

 

其系統結構圖:

接下來就一一的開始看。

二、帶有16位ADC和信號調理的三軸MEMS陀螺儀

MPU-60X0由三個獨立的振動MEMS速率陀螺儀組成,可檢測旋轉角度X軸,Y軸和Z軸。 當陀螺儀圍繞任何感應軸旋轉時,科里奧利效應就會產生電容式傳感器檢測到的振動。 所得到的信號被放大,解調和濾波產生與角速度成比例的電壓。 該電壓使用單獨的片內數字化16位模數轉換器(ADC)對每個軸進行采樣。 陀螺儀傳感器可以全面范圍的被數字編程為每秒±250,±500,±1000或±2000度(dps)。 ADC樣本速率可以從每秒8,000個采樣點編程到每秒3.9個采樣點,並且可由用戶選擇低通濾波器可實現廣泛的截止頻率。

 

三、具有16位ADC和信號調理的三軸MEMS加速度計

MPU-60X0的3軸加速度計為每個軸使用單獨的檢測質量。 加速沿着一條特定軸在相應的檢測質量上引起位移,並且電容式傳感器檢測到該位移位移有差別。 MPU-60X0的架構降低了加速度計的敏感度制造變化以及熱漂移。 當設備放置在平坦的表面上時,將進行測量在X和Y軸上為 0g,在Z軸上為+ 1g。 加速度計的比例因子在工廠進行校准並且在名義上與電源電壓無關。 每個傳感器都有一個專用的sigma-delta ADC來提供數字輸出。 數字輸出的滿量程范圍可以調整到±2g,±4g,±8g或±16g。

 

 

四、數字運動處理器(DMP)

嵌入式數字運動處理器(DMP)位於MPU-60X0內部,可從主機處理器中卸載運動處理算法的運算。 DMP從加速度計,陀螺儀以及其他第三方傳感器(如磁力計)獲取數據,並處理數據。結果數據可以從DMP的寄存器中讀取,或者可以在FIFO中緩沖。 DMP可以訪問其中的一個MPU的外部引腳,可用於產生中斷。
DMP的目的是卸載主機處理器的時序要求和處理能力。通常,運動處理算法應該以高速運行,通常在200Hz左右,以提供低延遲的精確結果。即使應用程序以更低的速率更新,這也是必需的。例如,一個低功率的用戶界面可能會以5Hz的速度更新,但運動處理仍然應該以200Hz運行。 DMP可以作為一種工具使用,以最大限度地降低功耗,簡化定時,簡化軟件架構,並在主機處理器上節省寶貴的MIPS,以便在應用中使用。

 

 

五、主要 I2C 和 SPI 串行通信接口

MPU-60X0使用 SPI(僅MPU-6000)或 I2C 串行通信至系統處理器接口。 與系統處理器通信時,MPU-60X0始終充當從屬設備。 LSB的 I2C 從地址的地址由引腳9(AD0)設置(一般接地)。
MPU-60X0與其主機之間的通信邏輯電平如下:
    MPU-6000:與主機通信的邏輯電平由VDD上的電壓設置
    MPU-6050:與主機通信的邏輯電平由VLOGIC上的電壓設置

六、輔助I2C串行接口

MPU-60X0 具有一個輔助 I2C 總線,用於與片外3軸數字輸出磁力計進行通信或其他傳感器。 

 

兩種工作模式:

I2C Master Mode,此時MPU-60X0作為主設備與外接傳感器通信; 

Pass-Through Mode, 此時僅用作連接, 允許MPU和外接傳感器同時和芯片通信。

因為我沒有用到磁力針,這部分不詳講。

 

到此就搞清楚了:

GY-521MPU6050 是三維角度傳感器,為全球首例集成六軸傳感器的運動處理組件。

這里的六軸,代表的是它內置了一個三軸 MEMS 陀螺儀、一個三軸 MEMS 加速度計,一個數字運動處理引擎(DMP)。它還有用於第三方的數字傳感器接口的輔助 I2C 串行接口,比如當輔助 I2C 串行接口連接到一個三軸磁力計,MPU6050 能提供一個完整的九軸融合輸出到其主 I2C 端口。 

 

下圖標明了傳感器的參考坐標系( XYZ組成右手系)以及 3個測量軸和旋轉方向。

旋轉的正向可用右手螺旋定則判斷

        

七、內部時鍾生成

MPU-60X0具有靈活的時鍾方案,允許多種內部或外部時鍾源用於內部同步電路。這個同步電路包括信號調理和
ADC,DMP以及各種控制電路和寄存器。片內PLL提供了靈活性允許輸入產生這個時鍾。
產生內部時鍾的允許的內部源是:
    內部張弛振盪器
    任何X,Y或Z陀螺(在整個溫度范圍內變化±1%的MEMS振盪器)
允許的外部時鍾源是:
    32.768kHz方波
    19.2MHz方波
生成內部同步時鍾源的選擇取決於外部的可用性來源以及對功耗和時鍾精度的要求。這些要求將是最多的可能因操作模式而異。例如,在一種模式中,最關心的是電量消耗,用戶可能希望操作MPU-60X0的數字運動處理器進行處理加速計數據,同時保持陀螺儀關閉。在這種情況下,內部張弛振盪器是一個好時鍾選擇。但是,在另一種陀螺儀激活的模式下,選擇陀螺儀作為時鍾源提供更精確的時鍾源。時鍾精度非常重要,因為時序誤差直接影響數字運動處理器(以及任何處理器的擴展)執行的距離和角度計算。還有啟動條件要考慮。當MPU-60X0首次啟動時,設備使用其內部時鍾,直到編程從另一個來源操作。這允許用戶例如等待使MEMS振盪器在被選為時鍾源之前穩定下來。

 

 

八、傳感器數據寄存器

傳感器數據寄存器包含最新的陀螺儀,加速度計,輔助傳感器和溫度測量數據。 它們是只讀寄存器,可通過串行接口訪問。 這些寄存器的數據可以隨時讀取。 但是,可以使用中斷函數來確定新數據何時可用。

 

 

九、FIFO

MPU-60X0包含一個可通過串行接口訪問的1024字節FIFO寄存器。 FIFO配置寄存器決定哪個數據寫入FIFO。 可能的選擇包括陀螺儀數據,加速計數據,溫度讀數,輔助傳感器讀數和 FSYNC 輸入。 FIFO 計數器跟蹤 FIFO 中包含的有效數據字節數。 FIFO寄存器支持突發讀取。 中斷功能可用於確定新數據何時可用。

 

 

十、中斷

中斷功能通過中斷配置寄存器進行配置。 可配置的項目包括INT引腳配置,中斷鎖存和清除方法以及中斷觸發器。 可觸發中斷的項目有:

 

(1)時鍾發生器鎖定到新的參考振盪器(用於切換時鍾源); 

(2)可以讀取新數據(來自FIFO和數據寄存器); 

(3)加速度計事件中斷; 

(4)MPU-60X0 沒有收到輔助傳感器的確認I2C總線。 

中斷狀態可以從中斷狀態寄存器讀取。

十一、數字輸出溫度傳感器

片上溫度傳感器和ADC用於測量MPU-60X0芯片溫度。 ADC的讀數可以從FIFO或傳感器數據寄存器讀取。

 

 

十二、偏壓和LDO

偏壓和LDO部分產生MPU-60X0所需的內部電源和參考電壓和電流。 其兩個輸入是一個2.375至3.46V的未調整VDD和一個1.71V至VDD(僅MPU-6050)的VLOGIC邏輯參考電源電壓。 在REGOUT,LDO輸出被一個電容旁路。

 

 

十三、電荷泵

板載電荷泵產生MEMS振盪器所需的高電壓。 其輸出在CPOUT旁邊被一個電容旁路。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM