最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

MPU6050調(diào)試--軟件必備

2023-07-14 21:51 作者:新芯-電子設(shè)計  | 我要投稿

MPU 6050簡介

什么是MPU6050?

MPU6050是InvenSense公司推出的全球首款整合性6軸運動處理組件,內(nèi)帶3軸陀螺儀和3軸加速度傳感器,并且含有一個第二IIC接口,可用于連接外部磁力傳感器,利用自帶數(shù)字運動處理器(DMP:Digital Motion Processor)硬件加速引擎,通過主IIC接口,可以向應(yīng)用端輸出完整的9軸姿態(tài)融合演算數(shù)據(jù)。

有了DMP,我們可以使用InvenSense公司提供的運動處理資料庫,非常方便的實現(xiàn)姿態(tài)解算,降低了運動處理運算對操作系統(tǒng)的負(fù)荷,同時大大降低了開發(fā)難度

u MPU6050的特點

1自帶數(shù)字運動處理(DMP:Digital Motion Processing),可以輸出6軸或9軸(需外接磁傳感器)姿態(tài)解算數(shù)據(jù)。

2集成可程序控制,測量范圍為±250,±250,±500,±1000,±2000°/sec的3軸角速度傳感器(陀螺儀)。

3集成可程序控制,范圍為±2g, ±4g, ±8g, ±16g的3軸加速度傳感器。

4自帶數(shù)字溫度傳感器

5可輸出中斷(interrupt),支持姿勢識別,搖攝,畫面放大縮小、滾動、快速下降中斷、high-G中斷、零動作感應(yīng)、觸擊感應(yīng)、搖動感應(yīng)功能

6自帶1024字節(jié)FIFO,有助于降低系統(tǒng)功耗

7高達(dá)400Khz的IIC通信接口

8超小封裝尺寸:4*4*0.9mm(QFN)

u MPU6050框圖

MPU 6050初始化

1初始化IIC接口

2復(fù)位MPU6050。由電源管理寄存器1(0X6B)控制

3設(shè)置角速度傳感器和加速度傳感器的滿量程范圍。由陀螺儀配置寄存器(0X1B)和加毒素傳感器配置寄存器(0X1C)設(shè)置。

4設(shè)置其他參數(shù)。配置中斷,由中斷使能寄存器(0X38)控制:設(shè)置AUX IIC接口,由用戶控制寄存器(0X6A);設(shè)置FIFO,由FIFO使能寄存器(0X23)控制;陀螺儀采樣率,由采樣率分頻寄存器(0X19)控制;設(shè)置數(shù)字低通濾波器,由配置寄存器(0X1A)控制。

5設(shè)置系統(tǒng)時鐘。由電源管理寄存器1(0X6B)控制。一般選擇x軸陀螺PLL作為 時鐘源以獲得更高精度的時鐘。

6使能角速度傳感器(陀螺儀)和加速度傳感器。由電源管理寄存器2(0X6C)控制

初始化完成,即可讀取陀螺儀、加速度傳感器和溫度傳感器的數(shù)據(jù)了??!

?

u 電源管理寄存器1(0X6B)

DEVICE_RESE=1,復(fù)位MPU6050,復(fù)位完成后,自動清零。

SLEEP=1,進(jìn)入睡眠模式;SLEEP=0,正常工作模式。

TEMP_DIS,用于設(shè)置是否使能溫度傳感器,設(shè)置為0,則使能。

CLKSEL[2:0],用于選擇系統(tǒng)時鐘源。

u 陀螺儀配置寄存器

????? 該寄存器我們只關(guān)心FS_SEL[1:0]這兩位,用于設(shè)置陀螺儀的滿量程范圍:0,±250°/S;1, ±500°/S;2,±1000°/S;3,±2000°/S;我們一般設(shè)置為3,即±2000°/S,因為陀螺儀的ADC為16位分辨率,所以得到靈敏度為:65536/4000=16.4LSB/(°/S)。

u 加速度傳感器配置寄存器(0X1C)

該寄存器我們只關(guān)心AFS_SEL[1:0]這兩位,用于設(shè)置加速度傳感器的滿量程范圍:0,±2g; 1,±4g; 2,±8g; 3,±16g;我們一般設(shè)置為0,即±2g,因為加速度傳感器的ADC也是16位,所以得到的靈敏度為:65536/4=16384LSB/g.

u FIFO使能寄存器(0X23)

????? 該寄存器用于控制FIFO使能,在簡單讀取傳感器數(shù)據(jù)的時候,可以不用FIFO,設(shè)置對應(yīng)位為:0,即可禁止FIFO,設(shè)置為1,則使能FIFO.

?

注意:加速度傳感器的三個軸,全由1個位(ACCEL_FIFO_EN)控制,只要該位置1,則加速度傳感器的三個通道都開啟FIFO了。

u 陀螺儀采樣頻率分頻寄存器(0X19)

????? 該寄存器用于設(shè)置MPU6050的陀螺儀采樣頻率,計算公式為:

??????????? ????? 采樣頻率 = 陀螺儀輸出頻率/(1+SMPLRT_DIV)

????? 這里的陀螺儀輸出頻率,是1khz或者8Khz,與數(shù)字低通濾波器(DLPF)的設(shè)置有關(guān),當(dāng)DLPF_CFG=0/7的時候,頻率為8khz,其他情況是1Khz.而且DLPF濾波頻率一般設(shè)置為采樣率的一半。采樣率,我們假定設(shè)置為50Hz,那么:SMPLRT_DIV=1000/50-1=19。

?

u 配置寄存器

重點看數(shù)字低通濾波器(DLPF)的設(shè)置為,即:DLPF_CFG[2:0],加速度計和陀螺儀,都是根據(jù)這三個為的配置進(jìn)行過濾的,如下表:

?

?

u 電源管理寄存器2(0X6C)

該寄存器的LP_WAKE_CTRL用于控制低功耗時的喚醒頻率,本例程用不到。剩下的6位,分別控制加速度和陀螺儀的x/y/z軸是否進(jìn)入待機模式,這里我們?nèi)慷疾贿M(jìn)入待機模式,所以全部設(shè)置為:0,即可。

u 加速度傳感器數(shù)據(jù)輸出寄存器(0X3B~0X40)

????? 加速度傳感器數(shù)據(jù)輸出寄存器總共由6個寄存器組成,輸出X/Y/Z三個軸的加速度傳感器值,高字節(jié)在前,低字節(jié)在后。

u 陀螺儀數(shù)據(jù)輸出寄存器(0X43~0X48)

????? 陀螺儀數(shù)據(jù)輸出寄存器總共由6個寄存器組成,輸出X/Y/Z三個軸的陀螺儀傳感器數(shù)據(jù),高字節(jié)在前,低字節(jié)在后。

?

?

?

u 溫度傳感器數(shù)據(jù)輸出寄存器(0X41~0X42)

????? 通過讀取0X41(高8位)和0X42(低8位)寄存器得到,溫度換算公式為:

????? ?Temperature = 36.53 + regval/340

????? 其中,Temperature為計算得到的溫度值,單位為°C,regval為從0X41和0X42讀到的溫度傳感器值。

?

DMP使用介紹

????? 通過前面的學(xué)習(xí),我們可以正常讀取MPU6050的加速度傳感器、陀螺儀和溫度傳感器的數(shù)據(jù),但是實際使用的時候(比如做四軸),我們更希望得到姿態(tài)數(shù)據(jù),即歐拉角:航向角(yaw),橫滾角(roll),俯仰角(pitch)。

????? 要得到歐拉角數(shù)據(jù),就要利用我們的原始數(shù)據(jù),進(jìn)行姿態(tài)融合結(jié)算,這個比較復(fù)雜,知識點比較多,初學(xué)者不易掌握。而MPU6050自帶了數(shù)字運動處理器,即DMP。并且,InvenSense提供了一個MPU6050的嵌入式運動驅(qū)動庫,結(jié)合MPU6050的DMP,可以將我們的原始數(shù)據(jù),直接轉(zhuǎn)換成四元數(shù)輸出,而得到四元數(shù)之后,就可以很方便的計算出歐拉角,從而得到y(tǒng)aw、roll、pitch。

????? 使用內(nèi)置的DMP,可以大大簡化代碼設(shè)計,MCU不用進(jìn)行姿態(tài)解算過程,大大降低了MCU的負(fù)擔(dān),從而有更多的時間去處理其他事件,提高系統(tǒng)實時性。

InvenSense提供的MPU6050運動驅(qū)動庫是基于MSP430的,我們需要將其移植一下,才可以用到STM32上面。

Embedded_MotionDriver_5.1.rar

Embedded Motion Driver_5.1.1 API說明.pdf

Embedded Motion Driver_5.1.rar教程.pdf

官方DMP驅(qū)動庫移植,主要是實現(xiàn)這4個函數(shù):

I2c_write、i2c_read、delay_ms、get_ms。移植后的驅(qū)動代碼如右圖:

DMP使用介紹

MPU6050 DMP輸出的是姿態(tài)結(jié)算后的四元數(shù),采用q30格式,也就是放大了2的30次方,我們要得到歐拉角,就得做一個轉(zhuǎn)換,代碼如下:

?

Quat[0]~quat[3]:是MPU6050的DMP解算后的四元數(shù),q30格式。

q30:是一個常量:1073741824,即2的30次方。

57.3:是弧度轉(zhuǎn)換為角度,即180/Π棑,這樣的結(jié)果就是以度(°)為單位的。

MPU-6050模塊原理圖如下圖:

?

源碼-6050驅(qū)動代碼

1、MPU6050IIC接口驅(qū)動代碼

2、MPU_Init函數(shù)

3、MPU_Get_Gyroscope函數(shù)

4、MPU_Get_Accelerometer函數(shù)

5、MPU_Get_Temperature函數(shù)

?

DMP移植相關(guān)代碼

I2c_write、i2c_read、delay_ms、get_ms.

2、mpu_dmp_init函數(shù)

3、mpu_dmp_get_data函數(shù)

?

鏈接:https://pan.baidu.com/s/1GH9CdiiDAPdq74kXmUtYCw?

提取碼:dyqk


MPU6050調(diào)試--軟件必備的評論 (共 條)

分享到微博請遵守國家法律
榆林市| 富裕县| 寿阳县| 花垣县| 津市市| 克什克腾旗| 临朐县| 藁城市| 佛冈县| 察哈| 昌乐县| 道真| 从化市| 竹山县| 万载县| 稻城县| 天水市| 大同县| 定襄县| 武平县| 同江市| 沧州市| 北川| 朝阳县| 白河县| 老河口市| 临武县| 尉氏县| 休宁县| 手机| 宜都市| 克什克腾旗| 泰和县| 德化县| 建昌县| 江川县| 湖北省| 清镇市| 民丰县| 临武县| 楚雄市|