国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

這篇具有很好參考價(jià)值的文章主要介紹了【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在制作平衡車或者飛行器時(shí),不可避免地需要知道設(shè)備本身的姿態(tài),一般我們使用陀螺儀和加速度計(jì)來獲取這些信息。

陀螺儀用來測量物體的角度。傳統(tǒng)的機(jī)械式陀螺的原理,和我們小時(shí)候玩的陀螺一樣,是利用了高速旋轉(zhuǎn)的物體能保持軸線穩(wěn)定的特性;機(jī)械式陀螺需要的加工精度非常高,但是測角精度一般。后來發(fā)展出來的光纖陀螺和激光陀螺雖然原理上已經(jīng)有了很大不同,但還是沿用了陀螺儀這個(gè)叫法,它們的精度要比機(jī)械式的陀螺高很多,價(jià)格也較貴。MEMS陀螺是基于微機(jī)電技術(shù),它的突出特點(diǎn)是體積小、成本低,但是初始精度低,一般需要校準(zhǔn)后才能獲得較理想的數(shù)據(jù);目前市面上常見的小型飛行器、平衡車,都是用的MEMS陀螺,正是由于低成本MEMS器件的出現(xiàn),近年來小型無人機(jī)得到了飛速發(fā)展。

加速度計(jì)用來測量物體的加速度,進(jìn)而可以積分后得到物體的速度和位移。

在一般的姿態(tài)測量的應(yīng)用中,加速度計(jì)還可以用于校準(zhǔn)陀螺儀的數(shù)據(jù)。這是因?yàn)榧铀俣扔?jì)可以實(shí)時(shí)測量重力加速度,根據(jù)重力加速度的方向,可以知道物體本身的一些姿態(tài)信息。陀螺儀的數(shù)據(jù)在較短時(shí)間內(nèi)是比較準(zhǔn)確的,但是長時(shí)間會(huì)有誤差累積;所以,陀螺儀長時(shí)間的數(shù)據(jù)需要通過加速度計(jì)測得的重力角度來修正。

MPU6050集成了3軸陀螺儀和3軸加速度計(jì),可以獲取物體的姿態(tài)和運(yùn)動(dòng)信息。陀螺儀可測范圍為±250,±500,±1000,±2000°/秒,加速度計(jì)可測范圍為±2,±4,±8,±16g,使用16bitAD采樣。使用I2C接口通信。

本節(jié)我們就來使用STM32獲取MPU6050的加速度和角速度數(shù)據(jù),并介紹一種簡單的初始校準(zhǔn)方法,最后使用匿名四軸地面站來顯示加速度和角速度的波形圖。

1)MPU6050硬件介紹

本文使用的是下圖這種MPU6050模塊(GY521):

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

模塊的電路板上,已經(jīng)標(biāo)明了X軸、Y軸的方向,而Z軸的方向由X軸、Y軸通過右手定則確定。

至于各角速度的方向,也是通過右手定則確定,如下圖:

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

如果想把MPU6050集成到自己的電路板上,可以參考如下原理圖設(shè)計(jì):

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

使用LDO降壓成3.3V作為MPU6050的供電;對外的接口最少需要連接VCC_5V、GND供電線,SCL、SDA I2C通信線。

本文把I2C的兩根線連接到STM32的I2C1對應(yīng)的引腳上。

2)配置cubemx工程

設(shè)置I2C1接口,速率為400KHz:

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

設(shè)置好后,生成keil工程。

3)MPU6050原始數(shù)據(jù)的獲取

STM32的HAL庫生成的硬件I2C代碼有個(gè)bug,這里我們先修正一下:

就是I2C初始化的如下函數(shù),需要添加一句,把時(shí)鐘初始化的內(nèi)容提到GPIO初始化之前,如果不修改,硬件I2C有時(shí)不能用。

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

編寫代碼時(shí),將HAL庫的I2C讀寫代碼封裝一下,以便于后面使用:

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

初始化MPU6050,如果我們只用最基本的功能,只要芯片喚醒,設(shè)置采樣率、濾波器、量程等操作就可以了:(具體的寄存器含義,可以查看芯片數(shù)據(jù)手冊)

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

初始化完成后,就可以讀取MPU6050的數(shù)據(jù)了,我們需要獲取的加速度和角速度數(shù)據(jù),在寄存器ACCEL_XOUT_H(0x3B)為起始地址的14個(gè)字節(jié)中,其中前6個(gè)字節(jié)是三個(gè)方向的加速度,最后6個(gè)字節(jié)是三個(gè)方向的角速度。

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

主函數(shù)中,整個(gè)使用過程如下:

先調(diào)用MPU6050_Init()初始化、再使用MPU6050_Get()函數(shù)循環(huán)讀取數(shù)據(jù),打印輸出。

依據(jù)前面設(shè)置的量程和采樣bit位數(shù),將加速度的原始數(shù)據(jù)還原成了g的倍數(shù),角速度值還原成了°/s:

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

上述代碼運(yùn)行后,結(jié)果如圖:

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

這是把傳感器水平放置、靜止時(shí)的測量原始值打印輸出;可以看到,Z軸的加速度初始誤差很大,達(dá)到了0.3個(gè)g左右;同樣,X軸的角速度誤差也很大。這樣大的初始誤差是不方便使用的。

4)簡單的初始校準(zhǔn)方法

一種簡單的初始值校準(zhǔn)方法,可以依據(jù)下面的方法實(shí)現(xiàn):將MPU6050傳感器固定好一個(gè)角度(如Z軸豎直向上),并且保持靜止;這樣它測量到的加速度值就只有單一的重力加速度,而角速度應(yīng)為0,我們只要記錄一定數(shù)據(jù)的數(shù)據(jù)取平均,就能得知初始的加速度、角速度偏移。

具體實(shí)現(xiàn)的代碼實(shí)現(xiàn)如下:

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

執(zhí)行完后,ax_cl、ay_cl…等幾個(gè)變量中,就保存好了各方向的加速度、角速度的零位偏移值,以后使用時(shí),獲取原始數(shù)據(jù)后,再減去這些零位偏移,就能獲得校準(zhǔn)后的值。

將MPU6050_Get()函數(shù)作如下改寫,就能實(shí)現(xiàn)獲取校準(zhǔn)后的值:

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

主函數(shù)中,while(1)之前增加一次校準(zhǔn)函數(shù)MPU6050_calibrate()的調(diào)用,再次測試結(jié)果如下:

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

可以看到,三個(gè)方向的加速度的偏差已經(jīng)非常小,X軸和Y軸的角速度的偏差也比未校準(zhǔn)前小了幾個(gè)數(shù)量級(jí)。對于MPU6050這種精度較低的MEMS器件,依靠這樣一個(gè)方向的校準(zhǔn)數(shù)據(jù)也可以獲取不錯(cuò)的效果。

5)波形顯示

為了跟直觀地顯示各方向的加速度和角速度值,我們可以通過一些工具來顯示波形圖,這里我們使用匿名四軸的上位機(jī)軟件來顯示。

只需要按照它的格式將數(shù)據(jù)發(fā)到上位機(jī),就能顯示出波形,匿名四軸上位機(jī)的通信協(xié)議(V7版)如下:

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

我們按此格式將加速度、角速度的值填入,通過串口發(fā)送到上位機(jī),就能顯示了,實(shí)際測試圖形如下:(顯示的是Z軸的加速度和角速度)

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

在實(shí)際的應(yīng)用中,加速度計(jì)和陀螺儀的數(shù)據(jù)需要融合,比如通過互補(bǔ)濾波或者卡爾曼濾波,才能獲取更準(zhǔn)確的姿態(tài)信息;傳感器數(shù)據(jù)的初始校準(zhǔn),也不僅僅是測試一個(gè)方向、剔除零位這么簡單。有興趣的可以找更專業(yè)的書籍深入學(xué)習(xí)。

好了,本節(jié)關(guān)于MPU6050的一些基本應(yīng)用就講到這里了。

歡迎關(guān)注我的微信公眾號(hào):小白白學(xué)電子,可留言“資料”獲取所有源碼和參考資料:

【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

?文章來源地址http://www.zghlxwxcb.cn/news/detail-403085.html

到了這里,關(guān)于【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 陀螺儀MPU6050(IIC&源碼)

    陀螺儀MPU6050(IIC&源碼)

    1. 陀螺儀 1.1 ? 什么是陀螺儀? 檢測角度變化的一個(gè)裝置。 1.1.1? 有什么用?? 用于檢測角度變化,用角度變化的值判斷物體的運(yùn)動(dòng)軌跡。 1.1.2? 我們怎么用? 我們是使用這個(gè)裝置(或者說設(shè)備)獲取到數(shù)據(jù),再使用這個(gè)數(shù)據(jù)得到我們想要的信息。 這里我使用陀螺儀獲取板

    2024年02月13日
    瀏覽(23)
  • MPU6050六軸陀螺儀外圍電路分析

    MPU6050六軸陀螺儀外圍電路分析

    MPU6050六軸陀螺儀常用的外圍電路設(shè)計(jì)分析 AUX_DA引腳:用于傳輸輔助數(shù)據(jù)。通過該引腳,MPU6050可以與外部設(shè)備或其他傳感器進(jìn)行數(shù)據(jù)交換??梢詫⑵渌麄鞲衅鳎ㄈ绱帕τ?jì))連接到AUX_DA引腳,以獲取額外的數(shù)據(jù)或?qū)崿F(xiàn)其他特殊功能。 AUX_CL引腳:用于提供輔助時(shí)鐘信號(hào)。MPU6050可

    2024年01月25日
    瀏覽(51)
  • MPU6050 加速度計(jì)和陀螺儀傳感器與 Arduino 連接

    MPU6050 加速度計(jì)和陀螺儀傳感器與 Arduino 連接

    MPU6050是一款非常流行的加速度計(jì)陀螺儀芯片,具有六軸感應(yīng)和 16 位測量分辨率。這種意義上的高精度和低廉的成本使其在 DIY 社區(qū)中非常受歡迎。甚至許多商業(yè)產(chǎn)品都配備了 MPU6050。陀螺儀和加速度計(jì)的組合通常被稱為慣性測量單元或 IMU。 IMU 傳感器用于各種應(yīng)用,例如手機(jī)

    2024年02月02日
    瀏覽(31)
  • 物聯(lián)網(wǎng)AI MicroPython傳感器學(xué)習(xí) 之 mpu6050六軸陀螺儀傳感器

    物聯(lián)網(wǎng)AI MicroPython傳感器學(xué)習(xí) 之 mpu6050六軸陀螺儀傳感器

    學(xué)物聯(lián)網(wǎng),來萬物簡單IoT物聯(lián)網(wǎng)!! MPU6050是一款6軸運(yùn)動(dòng)傳感器,它集成了3 軸MEMS 陀螺儀,3 軸MEMS加速度計(jì),以及一個(gè)可擴(kuò)展的數(shù)字運(yùn)動(dòng)處理器DMP(Digital Motion Processor),可用I2C接口連接一個(gè)第三方的數(shù)字傳感器,比如磁力計(jì)。擴(kuò)展之后就可以通過其I2C 或SPI 接口輸出一個(gè)

    2024年04月17日
    瀏覽(25)
  • 【CubeMX配置STM32驅(qū)動(dòng)MPU6050】

    【CubeMX配置STM32驅(qū)動(dòng)MPU6050】

    一、使用CubeMX進(jìn)行相關(guān)配置 1、配置OLED的IIC接口 OLED的具體使用方法我就不細(xì)說了,我前面的文章里面有講OLED的,如果有需要可以去看看。 2、配置MPU6050的接口 我用MPU6050使用的是 軟件IIC (其實(shí)是只找到軟件IIC的驅(qū)動(dòng)),所以我們只需要配置兩個(gè)GPIO口就可以實(shí)現(xiàn)對MPU6050的控

    2024年02月12日
    瀏覽(19)
  • stm32 mpu6050 cubemx DMP法讀取角度

    stm32 mpu6050 cubemx DMP法讀取角度

    文件 記錄使用dmp庫來讀取mpu6050的角度。 這是參考文件 參考1–主要參考 github參考 參考2 參考三 相關(guān)文件在這里下載(未填,不過可以在上面的git中下載) over

    2024年02月15日
    瀏覽(20)
  • stm32cubemx配置mpu6050——10分鐘0基礎(chǔ)到靈活使用

    stm32cubemx配置mpu6050——10分鐘0基礎(chǔ)到靈活使用

    10分鐘速通!你沒看錯(cuò),就是10min,從0基礎(chǔ)到靈活運(yùn)用mpu6050。 不信?往下看看就會(huì):嗷~原來如此 下載github開源代碼。 首先聲明,此代碼不是本人所寫,為某俄羅斯大佬提供。 如果你訪問不了github不用擔(dān)心,我在文章最后附上下載下來的文件 軟件 根據(jù)github開源項(xiàng)目的Readm

    2024年02月03日
    瀏覽(20)
  • 01_STM32軟件+硬件I2C讀取MPU6050(HAL庫)

    01_STM32軟件+硬件I2C讀取MPU6050(HAL庫)

    目錄 1、I2C簡介 2、I2C時(shí)序單元 2.1 起始條件 2.2 終止條件 2.3 發(fā)送一個(gè)字節(jié) 2.4 接收一個(gè)字節(jié) 2.5 發(fā)送應(yīng)答 2.6 接收應(yīng)答 3、I2C完整時(shí)序 3.1 指定地址寫一個(gè)字節(jié) 3.2 當(dāng)前地址讀一個(gè)字節(jié) 3.2?指定地址讀一個(gè)字節(jié) 4、簡單軟件I2C代碼(HAL) 4.1 軟件I2C 4.2 軟件I2C讀MPU6050寄存器 5、ST

    2024年04月17日
    瀏覽(29)
  • 【STM32F4系列】【HAL庫】【模塊介紹】MPU6050設(shè)置與DMP庫使用

    【STM32F4系列】【HAL庫】【模塊介紹】MPU6050設(shè)置與DMP庫使用

    MPU6050是一個(gè)3軸陀螺儀(測角加速度)和3軸加速度計(jì)(測量線加速度)的測量芯片 內(nèi)部自帶運(yùn)算單元(DMP),可以輸出經(jīng)姿態(tài)融合計(jì)算后的 四元數(shù) (一種表示旋轉(zhuǎn)的方法) 而且MPU6050的價(jià)格較低(10r以下),常被用于精度不高的場合作為姿態(tài)感知的芯片 如經(jīng)典項(xiàng)目平衡車,某年電賽題目風(fēng)力擺

    2024年02月05日
    瀏覽(63)
  • MPU6050(讀取原數(shù)據(jù)、移植DMP、stm32f4、HAL庫、KEIL5)

    MPU6050(讀取原數(shù)據(jù)、移植DMP、stm32f4、HAL庫、KEIL5)

    記錄一下自己遇到的問題及解決方法,希望能幫助到一些人。 第一步,讀取芯片的原始數(shù)據(jù)。需要注意兩點(diǎn):1、對HAL庫提供的IIC讀取寫入函數(shù)進(jìn)行再包裝。(千萬不要覺的這步多此一舉,后面移植DMP時(shí)用得到) 2、芯片的地址(這里面有倆坑)第一就是,芯片的 I2C 設(shè)備地址

    2023年04月08日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包