275891381 发表于 2018-1-27 13:15:42

野子yz 发表于 2018-1-27 11:46
请问一下,那个串口显示曲线的软件咋用的?

你百度一下就有了

野子yz 发表于 2018-1-27 16:02:08

275891381 发表于 2018-1-27 13:15
你百度一下就有了

好的,谢谢

topdog 发表于 2018-1-30 20:00:09

非常好的教程

jhwu999 发表于 2018-3-12 11:25:36

楼主 您好,请问需要修改mpu6050的量程,要怎么修改?百度找的都是给寄存器地址什么0,1,2,3代表2g,4g,8g,16g,不明白是i什么意思,请问代码要怎么写?就是单单修改量程的?

275891381 发表于 2018-3-13 09:27:37

本帖最后由 275891381 于 2018-3-13 09:29 编辑

jhwu999 发表于 2018-3-12 11:25
楼主 您好,请问需要修改mpu6050的量程,要怎么修改?百度找的都是给寄存器地址什么0,1,2,3代表2g,4g,8g ...

帖子里面写了呀FS_SEL改变就可以了

void MPU6050::initialize() {
    setClockSource(MPU6050_CLOCK_PLL_XGYRO);
    setFullScaleGyroRange(MPU6050_GYRO_FS_250);
    setFullScaleAccelRange(MPU6050_ACCEL_FS_2);
    setSleepEnabled(false); // thanks to Jack Elston for pointing this one out!
}

jhwu999 发表于 2018-3-18 15:52:44

275891381 发表于 2018-3-13 09:27
帖子里面写了呀FS_SEL改变就可以了

void MPU6050::initialize() {


但是这个要怎么申明啊?你看我错误!
sketch_sanzhouduqu:25: error: 'setFullScaleAccelRange' was not declared in this scope
setFullScaleAccelRange(MPU6050_ACCEL_FS_2);

jhwu999 发表于 2018-3-18 17:09:04

jhwu999 发表于 2018-3-18 15:52
但是这个要怎么申明啊?你看我错误!
sketch_sanzhouduqu:25: error: 'setFullScaleAccelRange' was not ...

而且我在帖子里面也没有看到这几行代码?还烦请楼主帮忙解答一下啊

275891381 发表于 2018-3-19 16:19:06

jhwu999 发表于 2018-3-18 15:52
但是这个要怎么申明啊?你看我错误!
sketch_sanzhouduqu:25: error: 'setFullScaleAccelRange' was not ...

#define MPU6050_GYRO_FS_250         0x00
#define MPU6050_GYRO_FS_500         0x01
#define MPU6050_GYRO_FS_1000      0x02
#define MPU6050_GYRO_FS_2000      0x03

#define MPU6050_ACONFIG_XA_ST_BIT         7
#define MPU6050_ACONFIG_YA_ST_BIT         6
#define MPU6050_ACONFIG_ZA_ST_BIT         5
#define MPU6050_ACONFIG_AFS_SEL_BIT         4
#define MPU6050_ACONFIG_AFS_SEL_LENGTH      2
#define MPU6050_ACONFIG_ACCEL_HPF_BIT       2
#define MPU6050_ACONFIG_ACCEL_HPF_LENGTH    3

#define MPU6050_ACCEL_FS_2          0x00
#define MPU6050_ACCEL_FS_4          0x01
#define MPU6050_ACCEL_FS_8          0x02
#define MPU6050_ACCEL_FS_16         0x03



头文件有定义,.cpp里面有代码,改就可以了

jhwu999 发表于 2018-3-20 10:16:20

275891381 发表于 2018-3-19 16:19
#define MPU6050_GYRO_FS_250         0x00
#define MPU6050_GYRO_FS_500         0x01
#define MPU6 ...

#include <I2Cdev.h>
#include <MPU6050.h>
#include <Wire.h>
MPU6050 accelgyro;
int16_t ax,ay,az;
int16_t gx,gy,gz;
//float ax_pianyi,ay_pianyi,az_pianyi;   //加速度计偏移量
//float gx_pianyi,gy_pianyi,gz_pianyi;   //陀螺仪偏移量

float ax_pianyi=739; //由500组原始数据得出的系统原始偏移误差
float ay_pianyi=386;
float az_pianyi=892;
float gx_pianyi=-372;
float gy_pianyi=162;
float gz_pianyi=118;
bool blinkstate=false;
void setup()
{
Wire.begin();
Serial.begin(9600);
accelgyro.initialize();
// setFullScaleGyroRange(MPU6050_GYRO_FS_250);
//setFullScaleAccelRange(MPU6050_ACCEL_FS_2);
// uint8_t getFullScaleAccelRange();
// void setFullScaleAccelRange(uint8_t 8);
/*unsigned short times = 200;             //采样次数
    for(int i=0;i<times;i++)
    {
      accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); //读取六轴原始数值
      ax_pianyi += ax; ay_pianyi += ay; az_pianyi += az;      //采样和
      gx_pianyi += gx; gy_pianyi += gy; gz_pianyi += gz;
      
    }
      
    ax_pianyi /= times; ay_pianyi /= times; az_pianyi /= times; //计算加速度计偏移
    gx_pianyi /= times; gy_pianyi /= times; gz_pianyi /= times; //计算陀螺仪偏移 */
   

}
void loop()
{
accelgyro.getMotion6(&ax,&ay,&az,&gx,&gy,&gz);
ax=ax-ax_pianyi;
ay=ay-ay_pianyi;
az=az-az_pianyi;
gx=gx-gx_pianyi;
gy=gy-gy_pianyi;
gz=gz-gz_pianyi;
/*Serial.print(ax-ax_pianyi);Serial.print(" ");
Serial.print(ay-ay_pianyi);Serial.print(" ");
Serial.print(az-az_pianyi);Serial.print(" ");
Serial.print(gx-gx_pianyi);Serial.print(" ");
Serial.print(gy-gy_pianyi);Serial.print(" ");
Serial.print(gz-gz_pianyi);Serial.print("\n");*/

Serial.print(ax);Serial.print(" ");
Serial.print(ay);Serial.print(" ");
Serial.print(az);Serial.print(" ");
Serial.print(gx);Serial.print(" ");
Serial.print(gy);Serial.print(" ");
Serial.print(gz);Serial.print("\n");
blinkstate=!blinkstate;
delay(100);
//Serial.print("\n");
}

以上是我的代码,请问要怎么改啊?真的不知道这个要怎么实现,在这里卡了很久了。我在头文件里面把量程的2改成8,但是传感器在静止时候,还是输出16384左右,也就是还是2g的量程,没有变化啊

275891381 发表于 2018-3-20 21:23:36

jhwu999 发表于 2018-3-20 10:16
#include
#include
#include


删掉 accelgyro.initialize();

添加:
    accelgyro.setClockSource(MPU6050_CLOCK_PLL_XGYRO);
    accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_500);//角速度
    accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_4);//加速度
    accelgyro.setSleepEnabled(false);
试试

jhwu999 发表于 2018-3-21 14:10:31

275891381 发表于 2018-3-20 21:23
删掉 accelgyro.initialize();

添加:


哇,谢谢楼主,终于可以了。真的感谢!!!卡了这么久的问题解决了,谢谢谢谢!!!!!

275891381 发表于 2018-3-21 14:47:34

jhwu999 发表于 2018-3-21 14:10
哇,谢谢楼主,终于可以了。真的感谢!!!卡了这么久的问题解决了,谢谢谢谢!!!!!

要改别的幅值就按头文件或者之前给你的回复改就可以了

HX711学习者 发表于 2018-6-7 00:54:15

我是新人,这学期才接触单片机,表示会用你的,但不懂,拿走了,谢谢
我正研究DIY无人机

HX711学习者 发表于 2018-6-7 00:56:49

能解释下其它的角 角速度怎么算的吗?
无人机要用到3轴

Chase_998 发表于 2018-11-5 10:13:29

mark 感谢分享
页: 1 2 3 4 5 6 7 8 9 [10] 11
查看完整版本: MPU6050数据采集及其意义和滤波(一阶互补滤波、二阶互补滤波、卡尔曼滤波)