MPU6050應用詳解

MPU6050應用詳解

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

1、型號

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

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

2、查看芯片手冊

(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  是什麼意思呢?工具

參看:全系列電容規格書ui

Ceramicspa

陶瓷介質

X7R

溫度係數/特性:工做溫度範圍 -55℃~125℃ (軍工級)

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

0.1μF ±10%

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

2V

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

3、電路圖

 

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

 

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

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

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

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

1、概述

 

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

一、帶有16位ADC和信號調理的三軸MEMS速率陀螺儀傳感器
二、具備16位ADC和信號調理的三軸MEMS加速度傳感器
三、數字運動處理器(DMP)引擎
四、主I2C和SPI(僅MPU-6000)串行通訊接口
五、用於第三方磁力計和其餘傳感器的輔助I2C串行接口
六、時鐘
七、傳感器數據寄存器
八、FIFO
九、中斷
十、數字輸出溫度傳感器
十一、陀螺儀和加速度計自檢
十二、偏見和LDO
1三、充電泵

 

其系統結構圖:

接下來就一一的開始看。

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

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

 

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

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

 

 

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

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

 

 

5、主要 I2C 和 SPI 串行通訊接口

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

6、輔助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個測量軸和旋轉方向。

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

        

7、內部時鐘生成

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

 

 

8、傳感器數據寄存器

傳感器數據寄存器包含最新的陀螺儀,加速度計,輔助傳感器和溫度測量數據。 它們是隻讀寄存器,可經過串行接口訪問。 這些寄存器的數據能夠隨時讀取。 可是,可使用中斷函數來肯定新數據什麼時候可用。

 

 

9、FIFO

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

 

 

10、中斷

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

 

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

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

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

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

中斷狀態能夠從中斷狀態寄存器讀取。

11、數字輸出溫度傳感器

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

 

 

12、偏壓和LDO

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

 

 

十3、電荷泵

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

相關文章
相關標籤/搜索