【Ardiuno】Ardiuno+MPU6050读取原始加速度并显示

最近手头有一个任务,使用MPU6050来测量加速度,就是物理上学的那个α,有一些小坑需要踩,在这里发出来,希望对大家有用。

硬件:Ardiuno Nano(Old)/MPU6050(IIC)

连线:参考下图

转:Arduino教程:MPU6050的数据获取、分析与处理

step1:陀螺仪数据的获取

       我是用的是Ardiuno的库,在这里下载:GitHub - jrowberg/i2cdevlib: I2C device library collection for AVR/Arduino or other C++-based MCUs,下载之后找到Ardiuno的安装目录里的liararies文件夹,我的是D:\Ardiuno\libraries,将刚才下载的内容Ardiuno这个文件夹里的东西全部拖到liararies,完成I2Cdev库和MPU6050的库安装。

        成功的话可以在Ardiuno开发软件的文件-示例里看到MPU6050,选择MPU6050_raw,如下图所示,直接上传到Ardiuno,打开串口监视助手,即可看到发送的加速度。

Step2:加速度数据处理

        首先明白一个概念:加速度计的量程:
        MPU6050的加速度均以重力加速度 g (就是那个物理的9.8m/s^2)为单位,加速度范围即能测量的最大加速度有:±2g、±4g、±8g、±16g,这个在刚才MPU6050的库里MPU6050.cpp文件里配置,如图,修改后缀MPU6050_ACCEL_FS_X即可。注意未修改时候,默认为±2g,即最大可以测量9.8*2m/s

void MPU6050::initialize() {
    setClockSource(MPU6050_CLOCK_PLL_XGYRO);
    setFullScaleGyroRange(MPU6050_GYRO_FS_2000);
    setFullScaleAccelRange(MPU6050_ACCEL_FS_16); //配置量程16g
    setSleepEnabled(false); // thanks to Jack Elston for pointing this one out!
}

      然后是灵敏度:假设上面我们设置了量程为16g,由于寄存器输出的是有符号整数,所以最大范围为-32767到32767,怎么算的?2^16 = 65536,然尔符号位占据一位,所以2^15 = 32767.也就是说。32767代表了16g的加速度,而我们计算取的是1个单位,所以32767/16 = 2048,2048就是所谓的灵敏度。

    综上所述,我们从寄存器里得到的原始数据,这里用Accx,Accy和Accz表示,按如下计算,理想情况我们知道,Z轴自带一个重力加速度,静止时应该有 Real_accx = Real_accy = 0.0 (m/s^2), Real_accz = 9.8(m/s^2), 注意这是理想状况,由于MPU6050本身会有误差,出来的数据不会是这样。

    修改代码如下,输出加速度值

// these methods (and a few others) are also available

    accx = (float)ax/2048*9.8;
    accy = (float)ay/2048*9.8;
    accz = (float)az/2048*9.8;
    //accelgyro.getRotation(&gx, &gy, &gz);

    #ifdef OUTPUT_READABLE_ACCELGYRO
        // display tab-separated accel/gyro x/y/z values
        Serial.print("Accx:");
        Serial.println(accx); 
        Serial.print("Accy:");
        Serial.println(accy);
        Serial.print("Accz:");
        Serial.println(accz);

得到的结果如下图所示,这里的z轴加速度为8.74,数据存在误差,下次更新说明如何校准

Step3:数据显示

        自己做了一个简单的加速度计显示助手,可以将刚才Ardiuno发送的数据绘图和保存,如下图所示,操作一目了然,正确连接串口后,点击绘图即可。

  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vicssic

与你一起成长

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值