19.1 MPU6050簡介
19.1.1 芯片概述
MPU6050是InvenSense公司推出的一款6軸運動處理芯片,內置3軸陀螺儀及3軸速度傳感器,內置兩組I2C接口,其中一組用于通信,另一組則用于連接外部磁力傳感器,采用自帶的數字運動處理器DMP(Digital Motion Processor),通過主I2C接口,直接讀取完整的9軸融合演算數據。MPU6050檢測軸及其檢測方向如下圖所示。
19.1.2 引腳介紹
MPU6050采用QFN-24封裝,端口描述如下表所示。
引腳編號 | 引腳名稱 | 功能 |
---|---|---|
1 | CLKIN | 外部參考時鐘輸入,如果不使用直接接地 |
2 | NC | 空引腳 |
3 | NC | 空引腳 |
4 | NC | 空引腳 |
5 | NC | 空引腳 |
6 | AUX_DA | 從I2C接口數據口,用于連接磁傳感器的SDA組成九軸傳感器 |
7 | AUX_CL | 從I2C接口時鐘口,用于連接磁傳感器的SCL組成九軸傳感器 |
8 | VLOGIC | IO口邏輯電平,最低可以設置1.8V,默認連接VDD |
9 | AD0 | I2C接口地址控制端,端口為高電平默認地址0x69,端口為低電平默認地址0x68 |
10 | REGOUT | 外接穩壓器的濾波電容 |
11 | FSYNC | 幀同步數字輸入,如果不使用直接接GND |
12 | INT | 中斷信號輸出(可以配置為開漏輸出) |
13 | VDD | 電源正極,供電范圍0.5V~6VDC |
14 | NC | 空引腳 |
15 | NC | 空引腳 |
16 | NC | 空引腳 |
17 | NC | 空引腳 |
18 | GND | 電源地 |
19 | RESV | 保留 |
20 | CPOUT | 外部電荷泵電容 |
21 | RESV | 保留 |
22 | RESV | 保留 |
23 | SCL | 主I2C接口時鐘 |
24 | SDA | 主I2C接口數據 |
19.1.3 硬件電路
由于MPU6050內部是可以自動計算X,Y和Z軸的方向及加速度的,使用者可以不考慮實際的數據轉換問題,但是為了詳細的了解MPU6050的計算過程,使用者最好還是應該具備了解原始數據如何轉換為我們需要的角度與加速度值。
19.2 姿態解算與融合算法基礎概念
19.2.1 方向矩陣
設有一個三位直角坐標系Oxyz,如下圖所示。
19.2.2 方向余弦矩陣
19.2.3 歐拉角
歐拉角是用于確定定點轉動缸體位置的3個1組的獨立角參量,由章動角θ,旋轉角(進動角)ψ和自轉角φ組成,歐拉角有多種取法,下面是比較常見的一種。
如上圖所示,由定點O做出固定坐標系Oxyz以及固定連在剛體的坐標系Ox’y’z’,以軸Oz和Oz’為基本軸。其垂直面Oxy和Ox’y’為基本平面,由軸Oz量到Oz’的角度θ稱為章動角,平面zOz’的垂線ON稱為節線,同時ON又是基本平面Ox’y’和Oxy的交線,在右手坐標系中,由ON的正端看,角θ應按照逆時針方向計算,由固定軸Ox到節線ON的角度ψ稱為進動角,也叫作旋轉角,由節線ON到動軸Ox’的角度φ稱為自轉角,有Oz和Oz’正端看,進動角ψ與自轉角φ也應該按照逆時針方向計算。
從上面的描述過程可以發現,歐拉角實際是可以分解成三步來計算的:
第1步:繞z軸旋轉α,使得x軸與N軸重合
第2步:繞x軸旋轉β,使z軸與旋轉后的z軸重合
第3步:繞z軸旋轉y,是坐標系與旋轉后的完全重合
根據上面的三個步驟,我們來通過以下實例來說明歐拉角與方向余弦矩陣的轉換過程。
19.2.4 四元數與歐拉角的轉換
四元數是一個簡單的超復數,是由實數加上三個虛數單位i,j,k組成,每個四元數都是1,i,j,k的線性組合,四元數是愛爾蘭數學家哈密頓在1843年發明的數學概念,四元數的乘法不符合交換律。
四元數姿態表達式是一個四參數的表達式,它的基本思路是一個坐標系轉換到另一個坐標系可以通過繞一個定義在參考系中的矢量μ的單次轉動來實現,四元數用符號q表示,是一個具有4個元素的矢量,這些元素是該矢量方向和轉動大小的函數。定義四元數如下所示。
這里直接給出結論,不作證明。會用即可。四元數與歐拉角的轉換公式為:
用方向余弦表示歐拉角,這里歐拉角不允許等于90度。
用四元數表示歐拉角
在姿態解算中常用的算法由歐拉角法,方向余弦法和四元數法,歐拉角在求解姿態時存在奇點,無法用于全姿態結算,方向余弦沒有奇點,但是計算量大,無法滿足實時性要求,四元數法,計算量小,無奇點可以滿足飛行器運動過程中姿態的實時解算,姿態解算的原理是對于一個確定的向量,用不同的坐標系表示時,他們所表示的大小和方向一定是相同的。但是由于這兩個坐標系的旋轉矩陣存在誤差,那么當一個向量經過一個有誤差存在的旋轉矩陣后,在另一個坐標系中肯定和理論值是有偏差的,我們通過這個偏差來修正這個旋轉矩陣。這個旋轉矩陣的元素是四元數,我們修正的就是四元數,以此來修正姿態。
19.3 實驗例程
實驗內容:利用MPU6050采集到數據獲取歐拉角顯示在TFTLCD上。
19.3.1 MPU6050內部相關寄存器
(1) 電源管理寄存器1 (地址0x6B)
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
DEVICE_RST | SLEEP | CYCLE | - | TEMP_DIS | CLKSEL[2:0] |
Bit 7:軟件復位
0:不復位MPU6050
1:復位MPU6050
Bit 6:休眠模式
0:正常工作模式
1:睡眠模式
Bit 5:循環模式
0:默認狀態
1:睡眠模式與喚醒模式交替運行
Bit 3:溫度傳感器使能
0:使能溫度傳感器
1:禁用溫度傳感器
Bit 2~Bit 0:選擇系統時鐘源
000:內部8M RC時鐘源
001:PLL,使用X軸陀螺作為參考
010:PLL,使用Y軸陀螺作為參考
011:PLL,使用Z軸陀螺作為參考
100:PLL,使用外部32.768kHz作為參考
101:PLL,使用外部19.2MHz作為參考
110:保留
111:關閉時鐘,保持時序產生電路復位狀態
-
傳感器
+關注
關注
2560文章
52118瀏覽量
761205 -
處理器
+關注
關注
68文章
19677瀏覽量
232668 -
MPU6050
+關注
關注
39文章
309瀏覽量
72404
發布評論請先 登錄
相關推薦
基于stm32的mpu6050傳感器實驗 精選資料推薦
MPU6050六軸傳感器筆記分享
mpu6050六軸傳感器模塊驅動程序源代碼分享

使用STM32單片機讀取MPU6050傳感器數據的程序免費下載

基于stm32的mpu6050傳感器實驗

評論