浅墨飞鱼 发表于 2014-9-3 11:27:34

怎么才能尽可能提高mpu6050的采样频率?

本帖最后由 浅墨飞鱼 于 2014-9-3 11:32 编辑

请问如何才能尽可能提高mpu6050的采样频率?
这个函数accelgyro.getMotion6( &ax, &ay, &az, &gx, &gy, &gz );运行最多要0.896ms,因为我的程序对时间很敏感,想尽可能的缩短这个函数的调用时间,大家有好的法子么?我查过用dmp的方式读取数据,貌似数据白噪声有点多。
其实我这个0.896ms也是通过修改I2C总线频率才能做到这么小的值,TWBR = 1;


#include <Wire.h>
#include <I2Cdev.h>
#include <MPU6050.h>
//MPU6050参数设定
MPU6050 accelgyro;
int16_t ax, ay, az;
int16_t gx, gy, gz;
#define Gry_offset                         296//陀螺仪x轴的静态飘移。
#define Gyr_Gain                         0.00763//由陀螺仪X轴读数转换为角速度值,=1/131 敏感比例因子131、
#define ACC_Gain                         0.000061//由读数转换为加速度值,=1/16384 Sensitivity Scale Factor
void setup()
{
    //MPU6050初始化
    accelgyro.initialize();
    TWBR = 1;                           //setup i2c clock; 24->400KHz
}
void loop()
{
    accelgyro.getMotion6( &ax, &ay, &az, &gx, &gy, &gz );//读取六轴数值 最多要0.896ms
    float Y_Accelerometer = ay * ACC_Gain; //转换为向前的加速度(g),为负值
    float Z_Accelerometer = az * ACC_Gain; //转换为向下的加速度(g)
    angleA = atan(Y_Accelerometer / Z_Accelerometer) * 57.2958;//angleA= atan(Y_Accelerometer / Z_Accelerometer) * (180) / pi;
    float gx_revised = gx + Gry_offset;//陀螺仪x轴静态时修正后的角速度读数,向前为负值
    omega = Gyr_Gain * gx_revised;//陀螺仪,转换为向前的角速度(o/s),Gyr_Gain取负
    // Serial.println( angleA );
}



浅墨飞鱼 发表于 2014-9-3 11:43:39

真的该认真读读芯片手册。。。

田园谧雨 发表于 2015-7-28 15:34:43

浅墨飞鱼 发表于 2014-9-3 11:43 static/image/common/back.gif
真的该认真读读芯片手册。。。

lz,你好,你有芯片手册的中文版吗,我看不懂英文版的,好纠结啊:'(
页: [1]
查看完整版本: 怎么才能尽可能提高mpu6050的采样频率?