极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23944|回复: 2

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

[复制链接]
发表于 2014-9-3 11:27:34 | 显示全部楼层 |阅读模式
本帖最后由 浅墨飞鱼 于 2014-9-3 11:32 编辑

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


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



复制代码
回复

使用道具 举报

 楼主| 发表于 2014-9-3 11:43:39 | 显示全部楼层
真的该认真读读芯片手册。。。
回复 支持 反对

使用道具 举报

发表于 2015-7-28 15:34:43 | 显示全部楼层
浅墨飞鱼 发表于 2014-9-3 11:43
真的该认真读读芯片手册。。。

lz,你好,你有芯片手册的中文版吗,我看不懂英文版的,好纠结啊
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-18 05:38 , Processed in 0.036803 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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