怎么才能尽可能提高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 static/image/common/back.gif
真的该认真读读芯片手册。。。
lz,你好,你有芯片手册的中文版吗,我看不懂英文版的,好纠结啊:'(
页:
[1]