日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正点原子STM32学习笔记——MPU6050介绍

發(fā)布時間:2023/12/10 编程问答 82 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正点原子STM32学习笔记——MPU6050介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、MPU6050簡介

1.什么是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ā)難度 。

2.MUP6050特點。

MPU6050 的特點包括:
① 以數(shù)字形式輸出 6 軸或 9 軸(需外接磁傳感器)的旋轉(zhuǎn)矩陣、四元數(shù)(quaternion)、歐拉角格式(Euler Angle forma)的融合演算數(shù)據(jù)(需 DMP 支持)。
② 具有 131 LSBs/°/sec 敏感度與全格感測范圍為±250、±500、±1000 與±2000°/sec 的 3 軸角速度感測器(陀螺儀)。
③ 集成可程序控制,范圍為±2g、±4g、±8g 和±16g 的 3 軸加速度傳感器。
④ 移除加速器與陀螺儀軸間敏感度,降低設(shè)定給予的影響與感測器的飄移。
⑤ 自帶數(shù)字運動處理(DMP: Digital Motion Processing)引擎可減少MCU復雜的融合演算數(shù)據(jù)、感測器同步化、姿勢感應(yīng)等的負荷。
⑥ 內(nèi)建運作時間偏差與磁力感測器校正演算技術(shù),免除了客戶須另外進行校正的需求。
⑦ 自帶一個數(shù)字溫度傳感器。
⑧ 帶數(shù)字輸入同步引腳(Sync pin)支持視頻電子影相穩(wěn)定技術(shù)與 GPS。
⑨ 可程序控制的中斷(interrupt),支持姿勢識別、搖攝、畫面放大縮小、滾動、快速下降中斷、high-G 中斷、零動作感應(yīng)、觸擊感應(yīng)、搖動感應(yīng)功能。
⑩ VDD 供電電壓為 2.5V±5%、3.0V±5%、3.3V±5%;VLOGIC 可低至 1.8V± 5%。
? 陀螺儀工作電流:5mA,陀螺儀待。
? 自帶 1024 字節(jié) FIFO,有助于降低系統(tǒng)功。
? 高達 400Khz 的 IIC 通信接口。
? 超小封裝尺寸:4x4x0.9mm(QFN)。

3.MPU6050框圖。

????????其中,SCL 和 SDA 是連接 MCU 的 IIC 接口,MCU 通過這個 IIC 接口來控制 MPU6050,另外還有一個 IIC 接口:AUX_CL 和 AUX_DA,這個接口可用來連接外部從設(shè)備,比如磁傳感器,這樣就可以組成一個九軸傳感器。VLOGIC 是 IO 口電壓,該引腳最低可以到 1.8V,我們一般直接接 VDD 即可。AD0 是從 IIC 接口(接 MCU)的地址控制引腳,該引腳控制IIC 地址的最低位。如果接 GND,則 MPU6050 的 IIC 地址是:0X68,如果接 VDD,則是0X69,注意:這里的地址是不包含數(shù)據(jù)傳輸?shù)淖畹臀坏?#xff08;最低位用來表示讀寫)!!

另:
①ATK-MPU6050 六軸傳感器模塊外觀:

????????模塊自帶了 3.3V 超低壓差穩(wěn)壓芯片,給 MPU6050 供電,因此外部供電可以選擇:3.3V / 5V 都可以。模塊通過 P1 排針與外部連接,引出了 VCC、GND、IIC_SDA、IIC_SCL、MPU_INT 和 MPU_AD0 等信號,其中,IIC_SDA 和 IIC_SCL 帶了 4.7K上拉電阻,外部可以不用再加上拉電阻了,另外 MPU_AD0 自帶了 10K 下拉電阻,當 AD0懸空時,默認 IIC 地址為(0X68)。
②ATK-MPU6050 模塊原理圖:

4.MPU6050初始化。

1 )初始化 IIC 接口
????????MPU6050 采用 IIC 與 STM32F1 通信,所以我們需要先初始化與 MPU6050 連接的 SDA和 SCL 數(shù)據(jù)線。

2 )復位 MPU6050
????????這一步讓 MPU6050 內(nèi)部所有寄存器恢復默認值,通過對電源管理寄存器 1(0X6B)的bit7 寫 1 實現(xiàn)。 復位后,電源管理寄存器 1 恢復默認值(0X40),然后必須設(shè)置該寄存器為0X00,以喚醒 MPU6050,進入正常工作狀態(tài)。

3 )設(shè)置角速度傳感器(陀螺儀)和加速度傳感器的滿量程范圍
????????這一步,我們設(shè)置兩個傳感器的滿量程范圍(FSR),分別通過陀螺儀配置寄存器(0X1B)和加速度傳感器配置寄存器(0X1C)設(shè)置。我們一般設(shè)置陀螺儀的滿量程范圍為±2000dps,加速度傳感器的滿量程范圍為±2g。

4 )設(shè)置其他參數(shù)
????????這里,我們還需要配置的參數(shù)有:關(guān)閉中斷、關(guān)閉 AUX IIC 接口、禁止 FIFO、設(shè)置陀螺儀采樣率和設(shè)置數(shù)字低通濾波器(DLPF)等。本章我們不用中斷方式讀取數(shù)據(jù),所以關(guān)閉中斷,然后也沒用到 AUX IIC 接口外接其他傳感器,所以也關(guān)閉這個接口。分別通過中斷使能寄存器(0X38)和用戶控制寄存器(0X6A)控制。MPU6050 可以使用 FIFO 存儲傳感器數(shù)據(jù),不過本章我們沒有用到,所以關(guān)閉所有 FIFO 通道,這個通過 FIFO 使能寄存器(0X23)控制,默認都是 0(即禁止 FIFO),所以用默認值就可以了。陀螺儀采樣率通過采樣率分頻寄存器(0X19)控制,這個采樣率我們一般設(shè)置為 50 即可。數(shù)字低通濾波器(DLPF)則通過配置寄存器(0X1A)設(shè)置,一般設(shè)置 DLPF 為帶寬的 1/2 即可。

5 )配置系統(tǒng)時鐘源并使能角速度傳感器和加速度傳感器
????????系統(tǒng)時鐘源同樣是通過電源管理寄存器 1(0X1B)來設(shè)置,該寄存器的最低三位用于設(shè)置系統(tǒng)時鐘源選擇,默認值是 0(內(nèi)部 8M RC 震蕩),不過我們一般設(shè)置為 1,選擇 x 軸陀螺 PLL 作為時鐘源,以獲得更高精度的時鐘。同時,使能角速度傳感器和加速度傳感器,這兩個操作通過電源管理寄存器 2(0X6C)來設(shè)置,設(shè)置對應(yīng)位為 0 即可開啟。

????????至此,MPU6050 的初始化就完成了,可以正常工作了(其他未設(shè)置的寄存器全部采用默認值即可),接下來,我們就可以讀取相關(guān)寄存器,得到加速度傳感器、角速度傳感器和溫度傳感器的數(shù)據(jù)了。不過,我們先簡單介紹幾個重要的寄存器。

5.寄存器介紹

①電源管理寄存器1(寄存器地址為 0X6B)

????????其中,DEVICE_RESET 位用來控制復位,設(shè)置為 1,復位 MPU6050,復位結(jié)束后,MPU硬件自動清零該位。SLEEEP 位用于控制 MPU6050 的工作模式,復位后,該位為 1,即進入了睡眠模式(低功耗),所以我們要清零該位,以進入正常工作模式。TEMP_DIS 用于設(shè)置是否使能溫度傳感器,設(shè)置為 0,則使能。最后 CLKSEL[2:0]用于選擇系統(tǒng)時鐘源,選擇關(guān)系如下表所示:

????????默認是使用內(nèi)部 8M RC 晶振的,精度不高,所以我們一般選擇 X/Y/Z 軸陀螺作為參考的 PLL 作為時鐘源,一般設(shè)置 CLKSEL=001 即可。

②陀螺儀配置寄存器(寄存器地址為0X1B)


????????該寄存器我們只關(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)。

③加速度傳感器配置寄存器(寄存器地址為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。

④ FIFO 使能寄存器(寄存器地址為0X23)


????????該寄存器用于控制 FIFO 使能,在簡單讀取傳感器數(shù)據(jù)的時候,可以不用 FIFO,設(shè)置對應(yīng)位為 0 即可禁止 FIFO,設(shè)置為 1,則使能 FIFO。注意加速度傳感器的 3 個軸,全由 1個位(ACCEL_FIFO_EN)控制,只要該位置 1,則加速度傳感器的三個通道都開啟 FIFO了。

⑤陀螺儀采樣率分頻寄存器(寄存器地址為0X19)

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

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

⑥配置寄存器(寄存器地址為0X1A)

????????這里,我們主要關(guān)心數(shù)字低通濾波器(DLPF)的設(shè)置位,即:DLPF_CFG[2:0],加速度計和陀螺儀,都是根據(jù)這三個位的配置進行過濾的。DLPF_CFG 不同配置對應(yīng)的過濾情況如下表所示:

????????這里的加速度傳感器,輸出速率(Fs)固定是 1Khz,而角速度傳感器的輸出速率(Fs),則根據(jù) DLPF_CFG 的配置有所不同。一般我們設(shè)置角速度傳感器的帶寬為其采樣率的一半,如前面所說的,如果設(shè)置采樣率為 50Hz,那么帶寬就應(yīng)該設(shè)置為 25Hz,取近似值 20Hz,就應(yīng)該設(shè)置 DLPF_CFG=100。

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

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

⑧陀螺儀數(shù)據(jù)輸出寄存器(共6個寄存器,地址為0X43~0X48)

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

⑨加速度傳感器數(shù)據(jù)輸出寄存器(6個,地址為0X3B~0X40)

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

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

????????通過讀取0X41(高8位)和0X42(低8位)寄存器得到,溫度換算公式為:
????????????????????????????????????????????????Temperature = 36.53 + regval/340
????????其中,Temperature為計算得到的溫度值,單位為℃,regval為從0X41和0X42讀到的溫度傳感器值。

二、DMP使用簡介

????????MPU6050 自帶了數(shù)字運動處理器,即 DMP,并且,InvenSense 提供了一個 MPU6050 的嵌入式運動驅(qū)動庫,結(jié)合 MPU6050 的 DMP,可以將我們的加速度傳感器和角速度傳感器的原始數(shù)據(jù),直接轉(zhuǎn)換成四元數(shù)輸出,而得到四元數(shù)之后,就可以很方便的計算出歐拉角:航向角(yaw)、橫滾角(roll)和俯仰角(pitch)。

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

????????使用 MPU6050 的 DMP 輸出的四元數(shù)是 q30 格式的,也就是浮點數(shù)放大了 2 的 30 次方倍。在換算成歐拉角之前,必須先將其轉(zhuǎn)換為浮點數(shù),也就是除以 2 的 30 次方,然后再進行計算,計算公式為:
????????q0=quat[0] / q30; //q30 格式轉(zhuǎn)換為浮點數(shù)
????????q1=quat[1] / q30;
????????q2=quat[2] / q30;
????????q3=quat[3] / q30;
????????//計算得到俯仰角/橫滾角/航向角
????????pitch=asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; //俯仰角
????????roll=atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; //橫滾角
????????yaw=atan2(2*(q1q2 + q0q3),q0q0+q1q1-q2q2-q3q3) * 57.3; //航向角

????????其中 quat[0]~ quat[3]是 MPU6050 的 DMP 解算后的四元數(shù),q30 格式,所以要除以一個2 的 30 次方,其中 q30 是一個常量:1073741824,即 2 的 30 次方,然后帶入公式,計算出歐拉角。上述計算公式的 57.3 是弧度轉(zhuǎn)換為角度,即 180/π,這樣得到的結(jié)果就是以度(°)為單位的。關(guān)于四元數(shù)與歐拉角的公式推導,這里不進行詳細說明。

總結(jié)

以上是生活随笔為你收集整理的正点原子STM32学习笔记——MPU6050介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲字幕成人中文在线观看 | 蜜桃久久av| 欧美日韩在线免费播放 | 少妇一夜三次一区二区 | 日韩成人精品在线观看 | 91玉足脚交白嫩脚丫 | 手机av观看 | 国产免费黄网站 | 亚洲香蕉在线 | www久久久天天com | 欧美亚洲一区二区三区四区 | h视频免费在线观看 | 中文在线字幕免费观看 | 日本一区二区三区在线视频 | 欧美亚洲国产视频 | 国产精品成久久久久三级 | 久久人人爽爽 | 精品一区二区三区视频日产 | 国产高清免费在线观看 | 黑人番号 | 午夜视频网 | 最近中文字幕在线中文高清版 | 久久成人动漫 | 国色天香av | 91欧美亚洲 | 在线cao | 日日插日日操 | 99re免费视频精品全部 | 欧美巨乳美女 | 欧美精品在线观看一区二区 | 天天做夜夜做 | 一区三区在线观看 | 人人爽人人爽人人片 | 国产情侣自拍av | 潘金莲裸体一级淫片视频 | 欧美图片一区二区三区 | 琪琪色18 | 少妇精品无码一区二区 | 天天干精品 | 精品999视频| 国产成人精品一区二三区四区五区 | 爱逼综合网 | 网站色| 无码专区久久综合久中文字幕 | 国产免费一区视频观看免费 | 99久精品视频 | 亚洲欧洲一区二区 | 国产福利在线播放 | 亚洲激情视频网站 | 国产毛片18 | 国产精品久久久久久白浆 | 日本一区二区三区在线免费观看 | 青春草在线视频观看 | www.三级.com| 久久精品小视频 | 国产一级片黄色 | 欧美三日本三级少妇三99 | 中文乱码人妻一区二区三区视频 | 久久免费福利视频 | 日本一区二区三区在线视频 | 人妻在线一区二区 | av在线片 | 久久精品视频5 | 久久久精品人妻一区二区三区色秀 | 亚洲精品久久一区二区三区777 | 中文字幕乱码一二三区 | 色播在线视频 | 少妇野外性xx老女人野外性xx | 婷婷五月在线视频 | 男女视频在线免费观看 | 99热思思| 午夜啪啪福利 | 国产私拍视频 | 三年中文在线观看免费观看 | 午夜精品久久 | 亚洲精品入口 | 人成免费在线视频 | 五月天福利视频 | 超碰在线人人干 | 殴美一级片 | 国产精品久久久久永久免费看 | 91美女网站 | av免费观看网站 | 欧美hdxxxx| 快播91| 蜜臂av| 91视频综合网 | www.精品视频 | 国产精品福利导航 | 欧美国产一级片 | 日韩一区二区三区精品视频 | 午夜插插 | 91国偷自产一区二区三区老熟女 | 亚洲a视频在线观看 | 日韩精品三区 | 久草手机在线观看 | 理论av | 黄色成人在线免费观看 | 激情久久av一区av二区av三区 |