MPU-60X0
對(duì)陀螺儀和加速度計(jì)分別用了三個(gè)16 位的ADC,將其測(cè)量的模擬量轉(zhuǎn)化
為可輸出的數(shù)字量。為了精確跟蹤快速和慢速的運(yùn)動(dòng),傳感器的測(cè)量范圍都是用戶可控的,陀螺儀可測(cè)范圍為±250,±500,±1000,±2000°/秒(dps),加速度計(jì)可測(cè)范圍為±2,±4,±8,±16g。
在網(wǎng)上找了一會(huì),好像MPU-6050沒有中文的數(shù)據(jù)手冊(cè),由于本人也處于學(xué)習(xí)階段,翻譯的可能不太準(zhǔn)確,只能表達(dá)一下簡(jiǎn)單的意思,以官方數(shù)據(jù)手冊(cè)為準(zhǔn)。
引腳說明:

VDD 供電電壓為2.5V±5%、3.0V±5%、3.3V±5%;VDDIO 為1.8V± 5%
內(nèi)建振蕩器在工作溫度范圍內(nèi)僅有±1%頻率變化??蛇x外部時(shí)鐘輸入32.768kHz 或19.2MHz
找出幾個(gè)重要的寄存器:
1)Register 25 – Sample Rate
Divider (SMPRT_DIV)

1)SMPLRT_DIV 8位無符號(hào)值,通過該值將陀螺儀輸出分頻,得到采樣頻率
該寄存器指定陀螺儀輸出率的分頻,用來產(chǎn)生MPU-60X0的采樣率。
傳感器寄存器的輸出、FIFO輸出、DMP采樣和運(yùn)動(dòng)檢測(cè)的都是基于該采樣率。
采樣率的計(jì)算公式
采樣率 = 陀螺儀的輸出率 / (1 + SMPLRT_DIV)
當(dāng)數(shù)字低通濾波器沒有使能的時(shí)候,陀螺儀的輸出平路等于8KHZ,反之等于1KHZ。
2)Register 26 –
Configuration
(CONFIG)

1)EXT_SYNC_SET
3位無符號(hào)值,配置幀同步引腳的采樣
2)DLPF_CFG
3位無符號(hào)值,配置數(shù)字低通濾波器
該寄存器為陀螺儀和加速度計(jì)配置外部幀同步(FSYNC)引腳采樣和數(shù)字低通濾波器(DLPF)。
通過配置EXT_SYNC_SET,可以對(duì)連接到FSYNC引腳的一個(gè)外部信號(hào)進(jìn)行采樣。
FSYNC引腳上的信號(hào)變化會(huì)被鎖存,這樣就能捕獲到很短的頻閃信號(hào)。
采樣結(jié)束后,鎖存器將復(fù)位到當(dāng)前的FSYNC信號(hào)狀態(tài)。
根據(jù)下面的表格定義的值,采集到的數(shù)據(jù)會(huì)替換掉數(shù)據(jù)寄存器中上次接收到的有效數(shù)據(jù)

數(shù)字低通濾波器是由DLPF_CFG來配置,根據(jù)下表中DLPF_CFG的值對(duì)加速度傳感器和陀螺儀濾波

3)Register 27 – Gyroscope
Configuration
(GYRO_CONFIG)

1)XG_ST
設(shè)置此位,X軸陀螺儀進(jìn)行自我測(cè)試。
2)YG_ST
設(shè)置此位,Y軸陀螺儀進(jìn)行自我測(cè)試。
3)ZG_ST
設(shè)置此位,Z軸陀螺儀進(jìn)行自我測(cè)試。
4)FS_SEL
2位無符號(hào)值。選擇陀螺儀的量程。
這個(gè)寄存器是用來觸發(fā)陀螺儀自檢和配置陀螺儀的滿量程范圍。
陀螺儀自檢允許用戶測(cè)試陀螺儀的機(jī)械和電氣部分,通過設(shè)置該寄存器的
XG_ST、YG_ST和 ZG_ST
bits可以激活陀螺儀對(duì)應(yīng)軸的自檢。每個(gè)軸的檢測(cè)可以獨(dú)立進(jìn)行或同時(shí)進(jìn)行。
自檢的響應(yīng) =
打開自檢功能時(shí)的傳感器輸出
-
未啟用自檢功能時(shí)傳感器的輸出
在MPU-6000/MPU-6050數(shù)據(jù)手冊(cè)的電氣特性表中已經(jīng)給出了每個(gè)軸的限制范圍。當(dāng)自檢的響應(yīng)值在規(guī)定的范圍內(nèi),就能夠通過自檢;反之,就不能通過自檢。
根據(jù)下表,F(xiàn)S_SEL選擇陀螺儀輸出的量程:

4)Register 28 – Accelerometer
Configuration (ACCEL_CONFIG)

1)XA_ST
設(shè)置為1時(shí),X軸加速度感應(yīng)器進(jìn)行自檢。
2)YA_ST
設(shè)置為1時(shí),Y軸加速度感應(yīng)器進(jìn)行自檢。
3)ZA_ST
設(shè)置為1時(shí),Z軸加速度感應(yīng)器進(jìn)行自檢。
4)AFS_SEL
2位無符號(hào)值。選擇加速度計(jì)的量程。
具體細(xì)節(jié)和上面陀螺儀的相似。
根據(jù)下表,AFS_SEL選擇加速度傳感器輸出的量程。

5)Registers 59 to 64 – Accelerometer
Measurements (ACCEL_XOUT_H, ACCEL_XOUT_L, ACCEL_YOUT_H,
ACCEL_YOUT_L, ACCEL_ZOUT_H, and ACCEL_ZOUT_L)

1)ACCEL_XOUT
16位2’s補(bǔ)碼值。
存儲(chǔ)最近的X軸加速度感應(yīng)器的測(cè)量值。
2)ACCEL_YOUT
16位2’s補(bǔ)碼值。
存儲(chǔ)最近的Y軸加速度感應(yīng)器的測(cè)量值。
3)ACCEL_ZOUT
16位2’s補(bǔ)碼值。
存儲(chǔ)最近的Z軸加速度感應(yīng)器的測(cè)量值。
這些寄存器存儲(chǔ)加速感應(yīng)器最近的測(cè)量值。
加速度傳感器寄存器,連同溫度傳感器寄存器、陀螺儀傳感器寄存器和外部感應(yīng)數(shù)據(jù)寄存器,都由兩部分寄存器組成(類似于STM32F10X系列中的影子寄存器):一個(gè)內(nèi)部寄存器,用戶不可見。另一個(gè)用戶可讀的寄存器。內(nèi)部寄存器中數(shù)據(jù)在采樣的時(shí)候及時(shí)的到更新,僅在串行通信接口不忙碌時(shí),才將內(nèi)部寄存器中的值復(fù)制到用戶可讀的寄存器中去,避免了直接對(duì)感應(yīng)測(cè)量值的突發(fā)訪問。
在寄存器28中定義了每個(gè)16位的加速度測(cè)量值的最大范圍,對(duì)于設(shè)置的每個(gè)最大范圍,都對(duì)應(yīng)一個(gè)加速度的靈敏度ACCEL_xOUT,如下面的表中所示:

6)Registers 65 and 66 – Temperature
Measurement (TEMP_OUT_H and
TEMP_OUT_L)

1)TEMP_OUT
16位有符號(hào)值。
存儲(chǔ)的最近溫度傳感器的測(cè)量值。
7)Registers 67 to 72 – Gyroscope
Measurements
(GYRO_XOUT_H, GYRO_XOUT_L, GYRO_YOUT_H, GYRO_YOUT_L, GYRO_ZOUT_H,
and GYRO_ZOUT_L)

這個(gè)和加速度感應(yīng)器的寄存器相似
對(duì)應(yīng)的靈敏度:

8)Register 107 – Power Management
1 (PWR_MGMT_1)

該寄存器允許用戶配置電源模式和時(shí)鐘源。它還提供了一個(gè)復(fù)位整個(gè)器件的位,和一個(gè)關(guān)閉溫度傳感器的位
1)DEVICE_RESET
置1后所有的寄存器復(fù)位,隨后DEVICE_RESET自動(dòng)置0.
2)SLEEP
置1后進(jìn)入睡眠模式
3)CYCLE
當(dāng)CYCLE被設(shè)置為1,且SLEEP沒有設(shè)置,MPU-60X0進(jìn)入循環(huán)模式,為了從速度傳感器中獲得采樣值,在睡眠模式和正常數(shù)據(jù)采集模式之間切換,每次獲得一個(gè)采樣數(shù)據(jù)。在LP_WAKE_CTRL(108)寄存器中,可以設(shè)置喚醒后的采樣率和被喚醒的頻率。
4)TEMP_DIS
置1后關(guān)閉溫度傳感器
5)CLKSEL
指定設(shè)備的時(shí)鐘源
時(shí)鐘源的選擇:

9)Register 117 – Who Am
I
(WHO_AM_I)

WHO_AM_I中的內(nèi)容是MPU-60X0的6位I2C地址
上電復(fù)位的第6位到第1位值為:110100
為了讓兩個(gè)MPU-6050能夠連接在一個(gè)I2C總線上,當(dāng)AD0引腳邏輯低電平時(shí),設(shè)備的地址是 b1101000
,當(dāng)AD0引腳邏輯高電平時(shí),設(shè)備的地址是 b1101001
(2013.01.24)
淘寶買的貨終于到了,學(xué)習(xí)用所以沒買好的,這個(gè)模塊只要18塊錢。

MPU-6000可以使用SPI和I2C接口,而MPU-6050只能使用I2C,其中I2C的地址由AD0引腳決定;寄存器共117個(gè),挺多的,下面的是精簡(jiǎn)常用的,根據(jù)具體的要求,適當(dāng)?shù)奶砑印?/p>
#define SMPLRT_DIV 0x19
//采樣率分頻,典型值:0x07(125Hz) */
#define CONFIG 0x1A
// 低通濾波頻率,典型值:0x06(5Hz) */
#define GYRO_CONFIG 0x1B
// 陀螺儀自檢及測(cè)量范圍,典型值:0x18(不自檢,2000deg/s) */
#define ACCEL_CONFIG 0x1C //
加速計(jì)自檢、測(cè)量范圍及高通濾波頻率,典型值:0x01(不自檢,2G,5Hz) */
#define ACCEL_XOUT_H 0x3B
// 存儲(chǔ)最近的X軸、Y軸、Z軸加速度感應(yīng)器的測(cè)量值 */
#define ACCEL_XOUT_L 0x3C
#define ACCEL_YOUT_H 0x3D
#define ACCEL_YOUT_L 0x3E
#define ACCEL_ZOUT_H 0x3F
#define ACCEL_ZOUT_L 0x40
#define TEMP_OUT_H 0x41
// 存儲(chǔ)的最近溫度傳感器的測(cè)量值 */
#define TEMP_OUT_L 0x42
#define GYRO_XOUT_H 0x43
// 存儲(chǔ)最近的X軸、Y軸、Z軸陀螺儀感應(yīng)器的測(cè)量值 */
#define GYRO_XOUT_L 0x44
#define GYRO_YOUT_H 0x45
#define GYRO_YOUT_L 0x46
#define GYRO_ZOUT_H 0x47
#define GYRO_ZOUT_L 0x48
#define PWR_MGMT_1 0x6B //
電源管理,典型值:0x00(正常啟用) */
#define WHO_AM_I 0x75 //IIC地址寄存器(默認(rèn)數(shù)值0x68,只讀)
*/
編程時(shí)用到的關(guān)于I2C協(xié)議規(guī)范:

PS:很多人在MPU6050的I2C地址上面弄不清楚,有人說地址是0x68,也有人說是0xD0,其實(shí)這兩個(gè)都是可以的,取決于你的I2C驅(qū)動(dòng)怎么寫,這兩個(gè)地址我都試過,沒問題……
|