xyh1re 发表于 2014-4-19 12:13:47

MPU6050不知道怎么计算加速度,用的是51单片机

用MPU6050采集运动加速度数据,我用的是51单片机,读出对应加速度寄存器中16位原始数据后不知道怎么处理转化成实际的加速度数值,看了一段时间的英文数据手册,好像里面也没有提到数据处理的方式,网上也找过一些资料,但都是用的stm32和MSP430单片机,而我目前只学习了51单片机,看不懂stm32和MSP430的程序,目前能够理解的一种处理方法是根据量程确定精度再换算,但是不知道模块的量程是多少,只知道有±2g,4g,8g,16g这几个量程,模块是不是有个默认的量程,量程可以通过程序设定吗?希望大家给点指导

cshp138 发表于 2014-4-19 12:26:16

MPU6050需要初始化,初始化就是对寄存器设置,里面有量程选择,论坛里有很多例程,也有mpu6050官方例程,都可以通用,只需把I2C对上就行。

大米饭 发表于 2014-4-19 15:30:17

本帖最后由 大米饭 于 2014-4-19 15:34 编辑

之前买的模块的资料,你可以看看实例程序,看下数据手册就明白了

xyh1re 发表于 2014-4-19 15:38:46

本帖最后由 xyh1re 于 2014-4-19 15:50 编辑

cshp138 发表于 2014-4-19 12:26
MPU6050需要初始化,初始化就是对寄存器设置,里面有量程选择,论坛里有很多例程,也有mpu6050官方例程,都 ...

谢谢提示!我对着数据手册看了一下MPU6050的初始化程序,Single_WriteI2C(GYRO_CONFIG, 0x18);Single_WriteI2C(ACCEL_CONFIG, 0x01);这两个操作就是设定量程的,量程分别是±2000°和±2g,计算加速度的时候直接用读到的原始数据X/(65536/4g),是这样的吗?
void InitMPU6050()
{
        Single_WriteI2C(PWR_MGMT_1, 0x00);       
        Single_WriteI2C(SMPLRT_DIV, 0x07);
        Single_WriteI2C(CONFIG, 0x06);
        Single_WriteI2C(GYRO_CONFIG, 0x18);
        Single_WriteI2C(ACCEL_CONFIG, 0x01);
}

xyh1re 发表于 2014-4-19 15:40:42

大米饭 发表于 2014-4-19 15:30
之前买的模块的资料,你可以看看实例程序,看下数据手册就明白了

谢谢!这个资料我也有

jiang887786 发表于 2014-5-15 23:03:08

楼主你好,7兆的这个压缩包我也有,但是读出的数据全部是-00001,我现在不知道是6050坏了还是怎么了。你能把你的可以正常读取的基本程序发我一下试试吗?谢谢了!我的qq 2091881672,请指教一下!

10xjzheng 发表于 2014-5-16 21:26:08

你可以看下我的帖子

xyh1re 发表于 2014-5-17 18:49:27

jiang887786 发表于 2014-5-15 23:03
楼主你好,7兆的这个压缩包我也有,但是读出的数据全部是-00001,我现在不知道是6050坏了还是怎么了。你能 ...

最近在忙其他的事,好久没登论坛了,程序发到你邮箱里了,测试可用

xyh1re 发表于 2014-5-17 18:52:33

10xjzheng 发表于 2014-5-16 21:26
你可以看下我的帖子

会关注的,谢啦!
页: [1]
查看完整版本: MPU6050不知道怎么计算加速度,用的是51单片机