打印
[应用相关]

Master调试MPU6050

[复制链接]
767|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
DreamofOven|  楼主 | 2016-3-21 20:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Master是一个用Nucleo334编写的一个调试设备,结合串口显示软件,可以帮助我们产生一定的时序,方便我们的调试。
今天就结合MPU6050,一个加速度,角加速度模块,来介绍一下如何使用。


    这次试验中,使用的是一个MPU6050模块,接入VCC,GND,SCL,SDA,AD0这几条线。AD0可以接高电平,也可以接低电平。这个只会关系到我们实际使用的设备地址。我接的是GND。接完线之后,准备工作就完成了。

    可能一提到I2C设备,首先想到的是设备地址是多少。查数据手册很麻烦,也懒得查了。直接使用i2c-online来查找一下所有在线的设备吧。

查到0xd0就是6050的设备地址。在之后进行读写的时候就要使用这个地址了。


找到设备地址之后,可以去查看一下Who Am I这个寄存器。判断一下芯片是不是还活着。

读出来的数值是0x68 。和数据手册上面提到的相符。这个6050可用。


沙发
DreamofOven|  楼主 | 2016-3-21 20:14 | 只看该作者
在判断6050可用的时候,肯定会想到的是直接读取加速度的数值:加速度数值是连续相连的6个地址,2个为一组,高字节在前。

为什么读取的数值都是0x00呢?是Master的事情还是6050挂了?可能会这样想。其实不用担心,只不过是现在6050还没有工作。在上电之后是不会工作的。

读了0x6B这个寄存器中的值发现,是0x40(0b0100_0000),也就是sleep位是1 。 在上电之后是不工作的,为了让他工作,只好将这个寄存器改成0了。

现在6050应该能工作了。在试着读取三轴的加速度看看:

现在三轴的加速度读取完毕,分别对应三轴的加速度:
  • x=0x0308
  • y=0xFFE0
  • z=0x45E8


在最上面的实物图片中,也看到确实是水平放置的,为什么Y轴的加速度这么大呢?是不是6050有问题还是读取有问题?可能你也有这样的疑问。但是在看看数据手册:

数据是使用补码表示的,也就是说0xFFE0是一个负数。转换成十进制是-32 。 还是一个很小的数值。
如何将这些数字换成我们能读的加速度呢?上图中有一个换算值。只要将读出的原始数据除以当前满量程下的分辨率即可。但是我们当前的满量程值是多少呢?



数值是0x00,也就是现在的满量程是+-2g。结合上图,分辨率是16384.最后可以得出我们三轴的加速度数值:



  • 0x0308 = 776 ==> 776 / 16384 = 0.047g
  • 0xFFE0 = -32  ==> -32 /  16384 = -0.00195g
  • 0x45E8 = 17896 ==> 17896 / 16384 = 1.092g


MPU-6000-Datasheet1.pdf

1.56 MB

使用特权

评论回复
板凳
643757107| | 2016-3-21 21:43 | 只看该作者
得到的值如何换算成加速度呢,可以测量角速度吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

178

帖子

0

粉丝