|
用的模拟IIC将MPU6050的ACC和GYRO 6个数据减去零偏赋值给MPU6050_ACC_LAST和MPU6050_GYRO_LAST,并根据这些数值用四元数算出了Q_ANGLE.ROL、PIT和YAW,现在发现将四旋翼平放时Q_ANGLE.ROL和Q_ANGLE.PIT都能稳定在0附近,但计算出的Q_ANGLE.YAW一直在增大,经检查发现是MPU6050_GYRO_LAST.Z即MPU6050读取的GYRO.Z的数值减去零偏后一直在增大,但是其他两个轴的值都是正确的。
这是为什么呢?初始化时参数不对?MPU6050坏了还是因为什么呢?求大神们指教~
void MPU6050_READ(void)
{
i2cRead(devAddr,MPU6050_RA_ACCEL_XOUT_H,14,mpu6050_buffer);
MPU6050_ACC_LAST.X=((((int16_t)mpu6050_buffer[0]) << 8) | mpu6050_buffer[1]) - ACC_OFFSET.X;
MPU6050_ACC_LAST.Y=((((int16_t)mpu6050_buffer[2]) << 8) | mpu6050_buffer[3]) - ACC_OFFSET.Y;
MPU6050_ACC_LAST.Z=((((int16_t)mpu6050_buffer[4]) << 8) | mpu6050_buffer[5]) - ACC_OFFSET.Z;
MPU6050_GYRO_LAST.X=((((int16_t)mpu6050_buffer[8]) << 8) | mpu6050_buffer[9]) - GYRO_OFFSET.X;
MPU6050_GYRO_LAST.Y=((((int16_t)mpu6050_buffer[10]) << 8) | mpu6050_buffer[11]) - GYRO_OFFSET.Y;
MPU6050_GYRO_LAST.Z=((((int16_t)mpu6050_buffer[12]) << 8) | mpu6050_buffer[13]) - GYRO_OFFSET.Z;
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|