温度传感器的值,可以通过读取 0X41(高 8 位)和 0X42(低 8 位)寄存器得到,
温度换算公式为:Temperature = 36.53 + regval/340
其中, Temperature 为计算得到的温度值,单位为℃, regval 为从 0X41 和 0X42 读到的温度传感器值 void MPU6050_ReturnTemp(float *Temperature)
{
short temp3;
u8 buf;
MPU6050_ReadData(MPU6050_RA_TEMP_OUT_H,buf,2);
temp3= (buf << 8) | buf;
*Temperature=((double) temp3/340.0)+36.53;
}
4、主程序
int main(void)
{
short Accel;
short Gyro;
float Temp;
SysTick_Init();
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
USART_Config();
i2c_GPIO_Config();
MPU6050_Init();
//检测MPU6050
if (MPU6050ReadID() == 1)
{
while(1)
{
if(Task_Delay==TASK_ENABLE)
{
Task_Delay=1000;
}
if(Task_Delay==0)
{
MPU6050ReadAcc(Accel);
printf("\加速度 %8d%8d%8d ",Accel,Accel,Accel);
MPU6050ReadGyro(Gyro);
printf("陀螺仪 %8d%8d%8d ",Gyro,Gyro,Gyro);
MPU6050_ReturnTemp(&Temp);
printf("温度 %8.2f",Temp);
Task_Delay=500;//更新数据的频率
}
}
}
}
mpu6050输出的值
加速度: 2634 -2146 16238 陀螺仪: -63 -29 -33 温度: 21.51
加速度: 2680 -2312 16044 陀螺仪: -53 -18 -36 温度: 21.53
加速度: 2744 -2320 16196 陀螺仪: -48 -16 -36 温度: 21.66
加速度: -1 -1 -1 陀螺仪: -1 -1 -1 温度: 36.53
加速度: -1 -1 -1 陀螺仪: -1 -1 -1 温度: 36.53
加速度: -9586 3804 12182 陀螺仪: -456 -594 -72 温度: 22.14
加速度: -2452 -1740 15716 陀螺仪: -232 -436 -169 温度: 22.17
加速度: -986 -1736 16178 陀螺仪: -64 -184 -56 温度: 22.20
加速度: -194 -1790 16366 陀螺仪: -46 -9 -11 温度: 22.24 你是不是发错版块了,老弟?
输出量是数字量还是模拟量啊 加速度的精度感觉咋样 姿态角读取之后还需要自己进行运算处理 姿态角之间采用什么坐标系计算比较方便额 有什么手段校正这个姿态角吗 一般来说如何校正陀螺仪的数据呢
姿态角读取之后还需要自己进行运算处理吗? Henryko 发表于 2022-9-14 21:46
姿态角读取之后还需要自己进行运算处理吗?
读取位姿角度不用处理直接从硬件读取就好,读取之后肯定就要看你要如何使用数据了,要不加这个硬件也没用呀
页:
1
[2]