国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于CW32的MPU6050姿態(tài)傳感器的應(yīng)用

CW32生態(tài)社區(qū) ? 來(lái)源: CW32生態(tài)社區(qū) ? 作者: CW32生態(tài)社區(qū) ? 2023-10-10 16:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、簡(jiǎn)介

1.MPU6050是一種常用的六軸姿態(tài)傳感器模塊,結(jié)合了三軸陀螺儀和三軸加速度計(jì),以及一個(gè)可擴(kuò)展的數(shù)字運(yùn)動(dòng)處理器DMP(Digital Motion Processor),可用I2C接口連接一個(gè)第三方的數(shù)字傳感器,比如磁力計(jì)。MPU6050 對(duì)陀螺儀和加速度計(jì)分別用了三個(gè)16 位的ADC(0~65535),將其測(cè)量的模擬量轉(zhuǎn)化為可輸出的數(shù)字量。為了精確跟蹤快速和慢速的運(yùn)動(dòng),傳感器的測(cè)量范圍都是用戶可控的,陀螺儀可測(cè)范圍為±250,±500,±1000,±2000°/秒(dps),加速度計(jì)可測(cè)范圍為±2,±4,±8,±16g。并有可編程的低通濾波器。MPU6050模塊的應(yīng)用場(chǎng)景非常廣泛,包括但不限于以下幾個(gè)領(lǐng)域:

(1)姿態(tài)感知與控制:通過(guò)讀取陀螺儀和加速度計(jì)的數(shù)據(jù),可以實(shí)時(shí)獲取物體的姿態(tài)信息,如傾斜角度、旋轉(zhuǎn)角度等。這在飛行器、機(jī)器人、無(wú)人車(chē)等項(xiàng)目中非常常見(jiàn),用于實(shí)現(xiàn)姿態(tài)感知和控制。

(2)運(yùn)動(dòng)跟蹤與手勢(shì)識(shí)別:MPU6050可以用于捕捉人體運(yùn)動(dòng)軌跡,如手部的姿態(tài)和手勢(shì),從而實(shí)現(xiàn)運(yùn)動(dòng)跟蹤、手勢(shì)識(shí)別、虛擬現(xiàn)實(shí)交互等應(yīng)用。

(3)震動(dòng)檢測(cè)與防抖:結(jié)合加速度計(jì),MPU6050可以檢測(cè)到物體的震動(dòng)和沖擊,用于防抖技術(shù)、硬盤(pán)保護(hù)、運(yùn)動(dòng)檢測(cè)等。

(4)步態(tài)分析與健康監(jiān)測(cè):MPU6050可以用于分析人體的步態(tài)特征和動(dòng)作,用于健康監(jiān)測(cè)、運(yùn)動(dòng)分析、姿勢(shì)校正等。

二、所需物料+寄存器說(shuō)明

.本實(shí)驗(yàn)使用到了CW32F030C8小藍(lán)板、GY-521模塊、0.96寸OLED顯示屏Keil5開(kāi)發(fā)環(huán)境
圖片16.png

CW32F030C8小藍(lán)板
image.png

GY-521模塊

圖片

實(shí)物展示

【GY-521模塊與單片機(jī)連線】:VCC<-->+3.3V

GND<-->GND

SCL<-->PB5

SDA<-->PB4

【OLED顯示屏與單片機(jī)連線】:VCC<-->+3.3V

GND<-->GND

SCL<-->PA1

SDA<-->PA2

注:SCL和 SDA是連接MCU的 IIC接口,MCU通過(guò)這個(gè)IIC 接口來(lái)控制MPU6050,另外還有一個(gè) IIC 接口: XCL和XDA ,這個(gè)接口可用來(lái)連外部從設(shè)備比如磁力計(jì),這樣就可以組成一個(gè)九軸傳感器。AD0是MPU6050的地址控制引腳,該引腳控制的是IIC 地址的最低位。MPU6050的默認(rèn)IIC地址是:0X68,如果AD0接VDD,則是0X69。需要注意的是:這里的地址0x68(110 1000)和0x69(110 1001)是不包含最低位的7位數(shù)據(jù),通常最低位用于表示IIC主機(jī)的讀取數(shù)據(jù)/寫(xiě)數(shù)據(jù)模式。如默認(rèn)情況下對(duì)MPU6050進(jìn)行寫(xiě)操作,則發(fā)送地址0xD0(1101 0000),讀操作則發(fā)送地址0xD1(1101 0001)。

寄存器說(shuō)明:

圖片

該寄存器是配置陀螺儀輸出速率的分頻器,用于為MPU-6050生成采樣速率。這里有個(gè)公式:采樣頻率=陀螺儀輸出頻率/(1+采樣分頻數(shù))。當(dāng) DLPF(數(shù)字低通濾波器,見(jiàn)寄存器Configuration)禁用時(shí),陀螺儀輸出頻率為8kHz;當(dāng) DLPF 使能,陀螺儀輸出頻率=1KHz。

圖片

該寄存器為陀螺儀和加速度計(jì)配置外部幀同步(FSYNC) 管腳的采樣和數(shù)字低通濾波(DLPF)設(shè)置。其中,數(shù)字低通濾波器DLPF由DLPF_CFG配置。根據(jù)下表所示的DLPF_CFG值對(duì)加速度計(jì)和陀螺儀進(jìn)行濾波。

圖片

FS為陀螺儀輸出頻率。SMPLRT_DIV由預(yù)設(shè)定的采樣頻率根據(jù)上述的公式計(jì)算得出。一般情況下,DPLF濾波頻率為采樣頻率的一半,如設(shè)定采樣頻率為50Hz,由表可知當(dāng)FS為1kHz,SMPLRT_DIV的值為1000/50-1=19。

圖片

該寄存器是用來(lái)觸發(fā)陀螺儀自檢和配置陀螺儀的滿量程范圍。其中,XG_ST、YG_ST、ZG_ST分別用來(lái)設(shè)置陀螺儀X軸、Y軸、Z軸自檢,置0則不觸發(fā)自檢。FS_SEL[1:0]用于設(shè)置陀螺儀的滿量程,如下表:

圖片

我們一般設(shè)置為3,即滿量程為±2000°/s

圖片

該寄存器是用來(lái)觸發(fā)加速度計(jì)自檢和配置加速度計(jì)的滿量程范圍。同時(shí)這個(gè)寄存器也可以用于配置數(shù)字高通濾波器(DHPF)。其中,XA_ST、YA_ST、ZA_ST分別用來(lái)設(shè)置加速度計(jì)X軸、Y軸、Z軸自檢,置0則不觸發(fā)自檢。AFS_SEL[1:0]用于選擇加速度計(jì)的滿量程范圍,如下表:

圖片

我們一般設(shè)置為0,即滿量程為±2g

圖片

ACCEL_XOUT : 由 2部分組成的 16位數(shù)值存儲(chǔ)最近X 軸加速度計(jì)的測(cè)量值。 ACCEL_YOUT : 由 2部分組成的 16位數(shù)值存儲(chǔ)最近Y 軸加速度計(jì)的測(cè)量值。 ACCEL_ZOUT : 由 2部分組成的 16位數(shù)值存儲(chǔ)最近Z 軸加速度計(jì)的測(cè)量值。

以ACCEL_XOUT為例,若倍率設(shè)定為2g,則意味著ACC_X取最小值-32768時(shí),當(dāng)前加速度為沿X軸正方向2倍的重力加速度;若設(shè)定為4g,取-32768時(shí)表示沿X軸正方向4倍的重力加速度,以此類(lèi)推。顯然,倍率越低精度越好,倍率越高表示的范圍越大,這要根據(jù)具體的應(yīng)用來(lái)設(shè)定。以ACC_X為例,若當(dāng)前設(shè)定的加速度倍率為4g,那么將ACC_X讀數(shù)換算為加速度的公式為:

圖片

g可取當(dāng)?shù)刂亓铀俣取?/p>

圖片

該寄存器存儲(chǔ)最近加陀螺儀的測(cè)量值,構(gòu)成與加速度計(jì)測(cè)量值寄存器相同,不做贅述。

以GYR_X為例,若倍率設(shè)定為250度/秒,則意味著GYR取正最大值32768時(shí),當(dāng)前角速度為順時(shí)針250度/秒;若設(shè)定為500度/秒,取32768時(shí)表示當(dāng)前角速度為順時(shí)針500度/秒。顯然,倍率越低精度越好,倍率越高表示的范圍越大。以GYR_X為例,若當(dāng)前設(shè)定的角速度倍率為1000度/秒,那么將GRY_X讀數(shù)換算為角速度(順時(shí)針)的公式為:

圖片

圖片

該寄存器允許用戶配置電源模式和時(shí)鐘源,還提供了復(fù)位整個(gè)設(shè)備和禁用溫度傳感器的位。當(dāng)置SLEEP位為1時(shí),MPU-60X0 可以進(jìn)入低功耗睡眠模式。該寄存器的最低三位用于設(shè)置系統(tǒng)的時(shí)鐘源選擇,默認(rèn)值是0(內(nèi)部8M RC振蕩),不過(guò)一般設(shè)置為1,即選擇x軸陀螺儀PLL作為時(shí)鐘源,以獲得更高精度的時(shí)鐘。DEVICE_RESET該位置 1,重啟內(nèi)部寄存器到默認(rèn)值。復(fù)位完成后該位自動(dòng)清0。TEMP_DIS該位置 1,禁用溫度傳感器。

三、核心代碼

main.c:
#include "main.h"
#include "OLED.h"
#include "GY_521.h"
#include "MYI2C.h"
#include "Delay.h"


typedef struct{
  int16_t AX;
  int16_t AY;
  int16_t AZ;  
}MPU6050_Adata;  //MPU6050加速度計(jì)三軸數(shù)據(jù)


typedef struct{
  int16_t GX;
  int16_t GY;
  int16_t GZ;  
}MPU6050_Gdata;  //MPU6050陀螺儀三軸數(shù)據(jù)


MPU6050_Adata Adata;  //結(jié)構(gòu)體變量
MPU6050_Gdata Gdata;


void GY_521_Init(void)  //GY-521初始化
{
  GY521_GPIO_Init();  //GPIO初始化
  //解除睡眠,失能溫度傳感器,選擇X軸的陀螺儀時(shí)鐘
  WriteData(GY521_ADDR, MPU6050_PWR_MGMT_1, 0x09); 
  WriteData(GY521_ADDR, MPU6050_CONFIG, 0x06); //低通濾波
  WriteData(GY521_ADDR, MPU6050_SMPRT_DIV, 0x09); //1KHz十分頻為100Hz
  WriteData(GY521_ADDR, MPU6050_GYRO_CONFIG, 0x18);//陀螺儀最大量程
  WriteData(GY521_ADDR, MPU6050_ACCEL_CONFIG, 0x18);//加速度計(jì)最大量程
}


void MPU6050_GetData()  //獲取MPU6050六軸數(shù)據(jù)
{
  uint8_t MPU6050_Raw_Data[14]={0};
  //以MPU6050_ACCEL_XOUT_H為起始地址,連續(xù)讀取14字節(jié)的數(shù)據(jù)
  ReadData(GY521_ADDR,MPU6050_ACCEL_XOUT_H,MPU6050_Raw_Data,14);
  //數(shù)據(jù)處理
  Adata.AX=(MPU6050_Raw_Data[0]< 8)|MPU6050_Raw_Data[1];
  Adata.AY=(MPU6050_Raw_Data[2]< 8)|MPU6050_Raw_Data[3];
  Adata.AZ=(MPU6050_Raw_Data[4]< 8)|MPU6050_Raw_Data[5];
  Gdata.GX=(MPU6050_Raw_Data[8]< 8)|MPU6050_Raw_Data[9];
  Gdata.GY=(MPU6050_Raw_Data[10]< 8)|MPU6050_Raw_Data[11];
  Gdata.GZ=(MPU6050_Raw_Data[12]< 8)|MPU6050_Raw_Data[13];
}


int main()
{
  OLED_Init();   //OLED初始化
  GY_521_Init(); //GY-521初始化
  OLED_ShowString(1,1,"A:      G:");//提示:左列顯示加速度計(jì)數(shù)據(jù);右列顯示陀螺儀數(shù)據(jù)
  while(1)
  {
    MPU6050_GetData(); //獲取六軸數(shù)據(jù)
    OLED_ShowSignedNum(2,1,Adata.AX,5);
    OLED_ShowSignedNum(3,1,Adata.AY,5);
    OLED_ShowSignedNum(4,1,Adata.AZ,5);

    OLED_ShowSignedNum(2,9,Gdata.GX,5);
    OLED_ShowSignedNum(3,9,Gdata.GY,5);
    OLED_ShowSignedNum(4,9,Gdata.GZ,5);
    Delay_ms(100); //延時(shí)刷新
  }
}

四、效果演示
圖片1.png

平放

圖片2.png

向下傾斜

圖片3.png

左傾斜向

圖片4.png

直立

讀到的原始數(shù)據(jù)還不能直接使用,要轉(zhuǎn)化成四元數(shù),歐拉角后,獲得器件的姿態(tài)角才有用,而 MPU6050 自帶了數(shù)字運(yùn)動(dòng)處理器,即 DMP,并且,InvenSense 提供了一個(gè) MPU6050 的嵌入式運(yùn)動(dòng)驅(qū)動(dòng)庫(kù),結(jié)合 MPU6050 的 DMP,可以將我們的原始數(shù)據(jù),直接轉(zhuǎn)換成四元數(shù)輸出,而得到四元數(shù)之后,就可以很方便的計(jì)算出歐拉角,從而得到y(tǒng)aw、roll和pitch。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2576

    文章

    55028

    瀏覽量

    791229
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    299

    瀏覽量

    1843
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    請(qǐng)問(wèn)CW32中的CW是啥意思?

    CW32中的CW是啥意思?
    發(fā)表于 02-02 07:10

    CW32L012解算MPU6050姿態(tài)數(shù)據(jù)

    我們僅僅獲取了MPU6050的三軸加速度和角速度,要想得到姿態(tài)角,需要利用讀取的數(shù)據(jù)進(jìn)行姿態(tài)解算。
    的頭像 發(fā)表于 01-05 16:42 ?1352次閱讀
    <b class='flag-5'>CW</b>32L012解算<b class='flag-5'>MPU6050</b><b class='flag-5'>姿態(tài)</b>數(shù)據(jù)

    CW32L012讀取MPU6050姿態(tài)數(shù)據(jù)

    隨著物聯(lián)網(wǎng)、可穿戴設(shè)備、工業(yè)傾角檢測(cè)等場(chǎng)景的普及,低成本、低功耗的姿態(tài)檢測(cè)方案成為嵌入式領(lǐng)域的研究熱點(diǎn)。MPU6050 作為集成三軸加速度計(jì)和三軸陀螺儀的六軸傳感器,憑借低成本、小體積的優(yōu)勢(shì)被
    的頭像 發(fā)表于 01-05 16:36 ?1077次閱讀
    <b class='flag-5'>CW</b>32L012讀取<b class='flag-5'>MPU6050</b><b class='flag-5'>姿態(tài)</b>數(shù)據(jù)

    CW32仿真是什么?

    CW32仿真是什么
    發(fā)表于 01-05 08:04

    CW32溫度傳感器的應(yīng)用

    CW32F030 內(nèi)置溫度傳感器模塊,傳感器的輸出電壓隨溫度變化,設(shè)置 ADC 模塊的采樣通道為內(nèi)部溫度傳感器,通過(guò) ADC 測(cè)量結(jié)果可計(jì)算得到當(dāng)前的環(huán)境溫度。溫度
    發(fā)表于 12-15 08:18

    CW32單片機(jī)如何讓生活更便捷

    這是一種全新的生活方式,它通過(guò)接收并處理傳感器的數(shù)據(jù),以控制智能馬桶的所有功能。感謝CW32單片機(jī),我們可以在日常生活中無(wú)縫地融入這種新的科技。 決定我們?nèi)绾紊畹模呀?jīng)不再只是我們的選擇,更是我們
    發(fā)表于 12-11 06:11

    CW32 MCU溫度監(jiān)測(cè)應(yīng)用

    最近,我在項(xiàng)目中使用CW32 MCU,來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的溫度監(jiān)測(cè)系統(tǒng)。CW32的靈活性和性能讓我在這個(gè)應(yīng)用中得心應(yīng)手。以下是我的實(shí)現(xiàn)過(guò)程和代碼示例。 應(yīng)用簡(jiǎn)介本項(xiàng)目通過(guò)連接一個(gè)溫度傳感器LM35來(lái)實(shí)時(shí)
    發(fā)表于 12-03 08:03

    cw32 systick怎么用?

    cw32 systick怎么用
    發(fā)表于 12-01 08:10

    CW32 MCU用什么IDE開(kāi)發(fā)?

    推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開(kāi)發(fā)CW32 MCU應(yīng)用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM則需要安裝CW
    發(fā)表于 11-12 07:52

    CW32 MCU有哪些系列?

    目前CW32 MCU有通用高性能MCU、安全低功耗MCU、無(wú)線射頻MCU等3個(gè)系列。其中射頻MCU集成了無(wú)線收發(fā),主要包括CW32R031(2.4GHz BLE-Lite)系列和CW
    發(fā)表于 11-12 07:34

    CW32 MCU用什么仿真開(kāi)發(fā)?

    理論上各主流IDE枚舉的、支持ARM Cortex內(nèi)核的所有硬件仿真,比如:J-LINK,ULINK,DAP,ST-Link等,都可以仿真、下載CW32 MCU的應(yīng)用代碼。如果想實(shí)現(xiàn)量產(chǎn)或者離線下載應(yīng)用代碼,則必須配套支持CW32
    發(fā)表于 11-12 06:01

    CW32電機(jī)控制基礎(chǔ)--無(wú)刷電機(jī)無(wú)位置傳感器的轉(zhuǎn)子位置檢測(cè)技術(shù)

    無(wú)位置傳感器的無(wú)刷直流電機(jī)的位置估計(jì)方法可以從5個(gè)方面來(lái)論述:反電動(dòng)勢(shì)法、電流法、狀態(tài)觀測(cè)法、人工智能法和磁鏈法。這幾種方法的研究相對(duì)比較成熟,且都已得到一定程度的應(yīng)用。CW32生態(tài)社區(qū)在方波控制的相關(guān)應(yīng)用和Demo中多使用反
    的頭像 發(fā)表于 10-09 17:06 ?3653次閱讀
    <b class='flag-5'>CW32</b>電機(jī)控制基礎(chǔ)--無(wú)刷電機(jī)無(wú)位置<b class='flag-5'>傳感器</b>的轉(zhuǎn)子位置檢測(cè)技術(shù)

    小安派BW21-CBV-Kit入門(mén)教程之DMP6讀取MPU6050數(shù)據(jù)

    本示例將演示使用 DMP6 從 MPU6050 獲取數(shù)據(jù)。MPU6050 配備了數(shù)字運(yùn)動(dòng)處理 (DMP),用于處理運(yùn)動(dòng)算法的計(jì)算,如轉(zhuǎn)換為三軸偏航/俯仰/滾動(dòng)平面、轉(zhuǎn)換為四元數(shù)或轉(zhuǎn)換為歐拉角。
    的頭像 發(fā)表于 06-19 14:20 ?1006次閱讀
    小安派BW21-CBV-Kit入門(mén)教程之DMP6讀取<b class='flag-5'>MPU6050</b>數(shù)據(jù)

    STM32F103對(duì)ADS1298和MPU6050同時(shí)采集數(shù)據(jù)會(huì)出現(xiàn)ADS1298數(shù)據(jù)丟失

    你好,請(qǐng)問(wèn)我用STM32F103對(duì)ADS1298和MPU6050同時(shí)采集數(shù)據(jù)為何會(huì)出現(xiàn)ADS1298數(shù)據(jù)丟失,而單獨(dú)對(duì)期中任何一個(gè)傳感器單獨(dú)進(jìn)行數(shù)據(jù)采集就沒(méi)有任何問(wèn)題
    發(fā)表于 03-22 17:29

    關(guān)于mpu6050問(wèn)題

    我很早之前買(mǎi)了一個(gè),我現(xiàn)在使用這個(gè)mpu6050,我在調(diào)mpu6050數(shù)據(jù)時(shí)候,數(shù)據(jù)抖動(dòng)特別大,我沒(méi)動(dòng)這個(gè)mpu6050,它自己都有抖動(dòng),然后本來(lái)放在水平,他的機(jī)械中值是2.5,但是我水平抖動(dòng)后,機(jī)械中值突然變成了-258,這是
    發(fā)表于 03-09 17:17