极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23836|回复: 10

MPU6050的数据处理疑问

[复制链接]
发表于 2013-6-18 22:30:23 | 显示全部楼层 |阅读模式
菜鸟我最近在调试这个6050,我先把程序的一些设置给大家说下,大家帮我看看吧~!拜托了

陀螺仪:灵敏度 16.4 LSB/(°/s)  量程+/- 2000°/s
加速度仪:灵敏度 16384 LSB/g 量程+/- 2g

问题来了,我先把6050放在桌面上,采集回来的数据如图:

上图中大家看AZ=0.9g还能理解 因为重力加速度在

可是当我把6050片子以Y轴进行180度来个底朝天旋转,大家请看图:

为什么AY达到了3.8个g呢?而AZ也到了2.9个g?但是我选的量程才+/-2g啊?这是什么情况啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2013-6-18 22:31:45 | 显示全部楼层
大神快来啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-18 22:33:51 | 显示全部楼层
不能沉啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-18 22:59:58 | 显示全部楼层
怎么办呢
回复 支持 反对

使用道具 举报

发表于 2013-6-18 23:35:50 | 显示全部楼层
帮顶~~~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-19 08:35:49 | 显示全部楼层
没有人懂吗???
回复 支持 反对

使用道具 举报

发表于 2013-6-19 10:08:15 | 显示全部楼层
你代码不贴,接法不贴,都需要人家帮你猜的,有得帮你猜,我自己去猜彩票去了!!!!!!
回复 支持 反对

使用道具 举报

发表于 2013-6-19 12:38:35 | 显示全部楼层
靠别人不如靠自己啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-19 21:51:39 | 显示全部楼层
好吧,不过在用了DMP后,倾斜角啊,横滚啊 都正常了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-19 21:55:44 | 显示全部楼层
好吧 我用的是stm32  代码实在是太长了  我把主要的弄上来
//************************************
/*Ä£ÄaIICêäèëêä3ö½ó¿ú*/
#define SCL_H         GPIOB->BSRR = GPIO_Pin_6
#define SCL_L         GPIOB->BRR  = GPIO_Pin_6
   
#define SDA_H         GPIOB->BSRR = GPIO_Pin_7
#define SDA_L         GPIOB->BRR  = GPIO_Pin_7

#define SCL_read      GPIOB->IDR  & GPIO_Pin_6
#define SDA_read      GPIOB->IDR  & GPIO_Pin_7



//*************3õê¼»ˉMPU6050***********************
void Init_MPU6050(void)
{

           Single_Write(MPU6050_Addr,PWR_MGMT_1, 0x00);        //½a3yDYÃß×′ì¬
        Single_Write(MPU6050_Addr,SMPLRT_DIV, 0x07);
        Single_Write(MPU6050_Addr,CONFIG, 0x06);
        Single_Write(MPU6050_Addr,GYRO_CONFIG, 0x18);
        Single_Write(MPU6050_Addr,ACCEL_CONFIG, 0x01);
}
       
//******¶áè¡MPU6050êy¾Y****************************************
void READ_MPU6050(void)
{
   BUF[0]=Single_Read(MPU6050_Addr,GYRO_XOUT_L);
   BUF[1]=Single_Read(MPU6050_Addr,GYRO_XOUT_H);
   GX=        (BUF[1]<<8)|BUF[0];
   GX/=16.4;                                                              //&#182;áè&#161;&#188;&#198;&#203;&#227;GXêy&#190;Y

   BUF[2]=Single_Read(MPU6050_Addr,GYRO_YOUT_L);
   BUF[3]=Single_Read(MPU6050_Addr,GYRO_YOUT_H);
   GY=        (BUF[3]<<8)|BUF[2];
   GY/=16.4;                                                              //&#182;áè&#161;&#188;&#198;&#203;&#227;GYêy&#190;Y

   BUF[4]=Single_Read(MPU6050_Addr,GYRO_ZOUT_L);
   BUF[5]=Single_Read(MPU6050_Addr,GYRO_ZOUT_H);
   GZ=        (BUF[5]<<8)|BUF[4];
   GZ/=16.4;                                                          //&#182;áè&#161;&#188;&#198;&#203;&#227;GZêy&#190;Y

   BUF[6]=Single_Read(MPU6050_Addr,TEMP_OUT_L);
   BUF[7]=Single_Read(MPU6050_Addr,TEMP_OUT_H);
   T=(BUF[7]<<8)|BUF[6];
   T = 35+ ((double) (T + 13200)) / 280;     //&#182;áè&#161;&#188;&#198;&#203;&#227;o&#207;3é &#206;&#194;&#182;è

   BUF[8]=Single_Read(MPU6050_Addr,ACCEL_XOUT_L);
   BUF[9]=Single_Read(MPU6050_Addr,ACCEL_XOUT_H);
   AX=        (BUF[9]<<8)|BUF[8];
   AX/=16384.00;                                                          //&#182;áè&#161;&#188;&#198;&#203;&#227;AXêy&#190;Y

   BUF[10]=Single_Read(MPU6050_Addr,ACCEL_YOUT_L);
   BUF[11]=Single_Read(MPU6050_Addr,ACCEL_YOUT_H);
   AY=        (BUF[11]<<8)|BUF[10];
   AY/=16384.00;                                                          //&#182;áè&#161;&#188;&#198;&#203;&#227;AYêy&#190;Y

   BUF[12]=Single_Read(MPU6050_Addr,ACCEL_ZOUT_L);
   BUF[13]=Single_Read(MPU6050_Addr,ACCEL_ZOUT_H);
   AZ=        (BUF[13]<<8)|BUF[12];
   AZ/=16384.00;                                                          //&#182;áè&#161;&#188;&#198;&#203;&#227;AYêy&#190;Y

}

/*
********************************************************************************
** Function Name : main(void)
** Description   : &#214;÷oˉêy
** Input             : None
** Output             : None
** Return             : None
********************************************************************************
*/
int main(void)
{
  RCC_Configuration();                 //&#197;&#228;&#214;&#195;RCC
  GPIO_Configuration();                 //&#197;&#228;&#214;&#195;GPIO
  USART1_Configuration();         //&#197;&#228;&#214;&#195;′&#174;&#191;úUSART1
  I2C_GPIO_Config();                 //&#197;&#228;&#214;&#195; IIC
  Delayms(10);                                 //&#209;óê±
  Init_MPU6050();                     //3&#245;ê&#188;&#187;ˉMPU6050
  while(1)
{
        READ_MPU6050();                 //&#182;áè&#161;MPU6050êy&#190;Y
   
        printf("gyr :GX=  %d GY=  %d GZ=  %d \n",GX,GY,GZ);
    printf("acc :AX=  %7f AY=  %7f AZ=  %7f \n",AX,AY,AZ);
        printf("Temp: %d\n",(T-32)*5/9);
        Delayms(20);                        //&#209;óê±


  }
}
回复 支持 反对

使用道具 举报

发表于 2013-8-8 17:37:55 | 显示全部楼层
应该是负数没有处理
输出值范围是0~65536, 其中0~32768对应0 ~ +2g,而65536~32769对应0 ~ -2g
我是用这个公式,Ax = acc<32768?acc:acc-65536
也许不是太准确,差个1,影响不大,我也没有深究了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 08:46 , Processed in 0.038715 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表