天天看點

一起玩轉樹莓派(18)——MPU6050螺旋儀加速度傳感器子產品應用(一)

一. 引言

現在智能手機的功能已經非常強大,除了基礎的通信功能外,測位測速,空間角度等資料的測量也非常友善,這線上路導航,地圖,體感遊戲等應用中十分重要。不知你是否想過,智能裝置是如何擷取到其所在的空間狀态與加速度等資料的呢?MPU6050就是提供這類資料測量的一種傳感器子產品。

首先,通過樹莓派來讀取MPU6050傳感器子產品的資料并不複雜,MPU60X0是一款擴充性極強的數字運動處理器,我們本次實驗使用的是封裝好的功能子產品,如下圖所示:

一起玩轉樹莓派(18)——MPU6050螺旋儀加速度傳感器子產品應用(一)

MPU6050晶片本身有24個引腳,每邊有6個引腳,功能較多,引腳功能與定位如下圖所示:

一起玩轉樹莓派(18)——MPU6050螺旋儀加速度傳感器子產品應用(一)

關于MPU6050的進階用法,可以通過檢視晶片手冊擷取,本篇部落格我們着重與在樹莓派上對其進行應用。我們隻需要關注所使用的子產品的8個引腳即可。

二. 連線與準備工作

本次實驗我們使用的子產品有8個引腳,隻需要使用其中4個引腳即可實作功能。對于樹莓派I2C協定總線的應用,本系列部落格之前已經有非常多的實驗有過應用。首先連接配接傳感器子產品與樹莓派如下表:

傳感器子產品 樹莓派

VCC +5V

GND GND

SCL SCL

SDA SDA

開始使用I2C總線前,莫忘了開啟樹莓派的I2C功能,對I2C總線用法如果不太了解,可以閱讀以下部落格:

https://my.oschina.net/u/2340880/blog/5142788

連線完成後,在樹莓派的終端輸入如下指令可以檢視已經連接配接的I2C裝置:

sudo i2cdetect -y 1

如果連接配接無誤,終端輸出結果将如下圖所示:

一起玩轉樹莓派(18)——MPU6050螺旋儀加速度傳感器子產品應用(一)

可以看到,圖中顯示的68即為我們所連接配接的傳感器的位址。

下面,是時候了解下MPU6050傳感器該如何使用了,我們知道,通過I2C總線,我們可以友善的讀取裝置中某個寄存器的資料,也可以向裝置的某個寄存器寫入資料,是以,使用MPU6050傳感器的核心是了解其中寄存器的使用方法。我們将以使用到的幾個寄存器為例做介紹,完整的寄存器用法可以從晶片手冊上得到。

1. 電源管理寄存器

電源管理寄存器的位址為107,對應十六進制數0x6b,它是一個8位的寄存器,其中第4位為保留位不能使用,功能如下:

一起玩轉樹莓派(18)——MPU6050螺旋儀加速度傳感器子產品應用(一)

DECIVE_RESET: 這一位的作用是重置傳感器,将傳感器内部所有寄存器複位為初始狀态,複位完成後,這一位會清零。

SLEEP: 睡眠控制位,當此位為1時,傳感器将處于睡眠模式。需要注意,傳感器啟動時預設是睡眠模式,我們需要手動将其喚醒。

CYCLE:當裝置設定為非睡眠模式時,即SLEEP位不為1,此為如果設定為1,傳感器将處于循環模式,會按照寄存器108設定的速度進行資料循環采樣。

TEMP_DIS:是否禁用溫度傳感器,設定為1時,禁用溫度傳感器。

CLKSEL:3位無符号數值,用來指令時鐘源。

對于CLKSEL選項,其設定方式如下:

CLKSEL值 意義

0 使用内部的8MHz的振蕩器

1 使用陀螺儀X軸的頻率

2 使用陀螺儀Y軸的頻率

3 使用陀螺儀X軸的頻率

4 使用外部的32.768kHz頻率

5 使用外部19.2MHz頻率

6 保留值

7 停止時鐘并使振蕩器保持複位狀态

2. 陀螺儀資料寄存器

陀螺儀資料寄存器的位址為67到72,共48個二進制位,如下:

一起玩轉樹莓派(18)——MPU6050螺旋儀加速度傳感器子產品應用(一)

這些寄存器都是隻讀的,不能寫入。

67和68寄存器存儲16位資料,為陀螺儀X軸的測量資料。其中68寄存器存儲低8位,67寄存器存儲高8位。

69和70寄存器存儲16位資料,為陀螺儀Y軸的測量資料。其中70寄存器存儲低8位,69寄存器存儲高8位。

71和72寄存器存儲16位資料,為陀螺儀Z軸的測量資料。其中72寄存器存儲低8位,71寄存器存儲高8位。

需要注意,從這些寄存器取出的資料都是原始資料,要得到真正的陀螺儀測量的旋轉角度,需要進行轉換,其轉換的機關與總量程有關,量程在寄存器27進行配置。

3. 陀螺儀配置寄存器

陀螺儀配置寄存器的位址為27,是一個可讀可寫的寄存器,如下:

一起玩轉樹莓派(18)——MPU6050螺旋儀加速度傳感器子產品應用(一)

XG_ST,YG_ST與ZG_ST這3位用來設定陀螺儀執行自檢。FS_SEL用來設定陀螺儀的量程範圍,低3位為保留位,無需使用。FS_SEL可設定的量程範圍如下:

FS_SEL 量程範圍 靈敏度參數

0 ±250 °/s 131

1 ±500 °/s 65.5

2 ±1000 °/s 32.8

3 ±2000 °/s 16.4

對于不同的量程範圍,我們擷取到原始資料後,需要除以對應的靈敏度參數才能得到最終的陀螺儀資料。

繼續閱讀