加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

第八章V1.5-MPU6050陀螺儀使用方法 MPU6050姿態(tài)解算

08/22 11:28
2522
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

第八章V1.5-MPU6050陀螺儀使用方法 MPU6050姿態(tài)解算dmp MPU6050姿態(tài)解算STM32 STM32小車MPU6050直線行駛 STM32標(biāo)準(zhǔn)庫教程 STM32江科大

當(dāng)前視頻版本V1.5.0
現(xiàn)在有兩個版本小車
V1.5.0


[stm32入門教程][STM32實戰(zhàn)項目]STM32智能小車V1.5-stm32f103c8t6-stm32最小系統(tǒng)-手把手入門教程-嵌入式開發(fā)-嵌入式學(xué)習(xí)

V3.3.0-STM32智能小車

視頻


STM32智能小車V3-STM32入門教程-openmv與STM32循跡小車-stm32f103c8t6-電賽 嵌入式學(xué)習(xí) PID控制算法 編碼器電機(jī) 跟隨

V1.5.0:庫函數(shù)開發(fā)。功能:循跡、避障、跟隨、遙控、電池電壓顯示等。
V3:HAL庫開發(fā)、功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、視覺控制。

MPU6050姿態(tài)傳感器使用(這個沒有用視頻也沒有講給大家自行擴(kuò)展使用)
溫濕度傳感器光照傳感器、攝像頭模塊都是大家自己可以擴(kuò)展使用的其中攝像頭教程再規(guī)劃中

移植正點原子例程文件。

在這里插入圖片描述
添加xxx.c 與xxx.h文件

在這里插入圖片描述
在這里插入圖片描述

如圖

6050_SDA–PB9

6050_SCL–PB8

更改驅(qū)動代碼

更改mpuiic.c中的的MPU_IIC_Init(void) 函數(shù)

//初始化IIC
void MPU_IIC_Init(void)
{					     
  GPIO_InitTypeDef  GPIO_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//先使能外設(shè)IO PORTB時鐘 
		
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_8;	 // 端口配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度為50MHz
  GPIO_Init(GPIOB, &GPIO_InitStructure);					 //根據(jù)設(shè)定參數(shù)初始化GPIO 
	
  GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_8);						 //PB9,PB9輸出高	
 
}

更改mpuiic.h 相關(guān)宏

//IO方向設(shè)置
#define MPU_SDA_IN()  {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=8<<4;}//注意這里 容易出錯
#define MPU_SDA_OUT() {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=3<<4;}

//IO操作函數(shù)	 
#define MPU_IIC_SCL    PBout(8) 		//SCL
#define MPU_IIC_SDA    PBout(9) 		//SDA	 
#define MPU_READ_SDA   PBin(9) 		//輸入SDA 

注意理解

//IO方向設(shè)置
#define MPU_SDA_IN()  {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=8<<4;}//注意這里 容易出錯
#define MPU_SDA_OUT() {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=3<<4;}

檢查6050其他程序發(fā)現(xiàn)在mpu6050.c中有對PA15的初始化 我們需要將其注釋掉,防止影響其他程序。

在main.c聲明部分變量

extern u8  TIM5CH1_CAPTURE_STA;		//輸入捕獲狀態(tài)		    				
extern u16	TIM5CH1_CAPTURE_VAL;	//輸入捕獲值	

在main.c定義變量

	float pitch,roll,yaw; 		//歐拉角
	short aacx,aacy,aacz;		//加速度傳感器原始數(shù)據(jù)
	short gyrox,gyroy,gyroz;	//陀螺儀原始數(shù)據(jù)
	short temp;					//溫度	

初始化6050與mpu

	MPU_Init();					//初始化MPU6050
  while(MPU_Init()!=0);
	while(mpu_dmp_init()!=0);

通過mpu 獲得數(shù)據(jù)

delay_ms(500);
mpu_dmp_get_data(&pitch,&roll,&yaw);//返回值:0,DMP成功解出歐拉角   
printf("nr 俯仰角=%0.2f      橫滾角=%0.2f     偏航角=%0.2f nr", pitch,roll,yaw);

發(fā)現(xiàn)讀取數(shù)據(jù)為零,搜索發(fā)現(xiàn)

然后嘗試

mpu_dmp_get_data 使用方法
delay_ms(500);
while(mpu_dmp_get_data(&pitch,&roll,&yaw)!=0){}
printf("nr 俯仰角=%0.2f      橫滾角=%0.2f     偏航角=%0.2f nr", pitch,roll,yaw);

可以獲得數(shù)據(jù)
在這里插入圖片描述

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
ASEMPLV-100.000MHZ-LR-T 1 Abracon Corporation MEMS OSC XO 100.0000MHZ LVDS SMD
$4.89 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜