具有ArduinoPro-Micro的MPU-9150 / 9250 IMU

电子说

1.3w人已加入

描述

步骤1:构建

对于构建,我使用Arduino Pro-Micro克隆,因为它紧凑。我希望有一个小的单元可以合并到其他项目中。

接线简单:

MPU9150 VCC-Arduino VCC

MPU9150 GND-Arduino GND

MPU9150 I2C SCL-Arduino I2C SCL(Pro Micro是2号引脚)

MPU9150 I2C SCL-Arduino I2C SDA(Pro Micro是3号引脚)

MPU9150 AD0-Arduino GND

MPU9150 INT-Arduino引脚7(Pro Micro的中断4)

步骤2:代码

要使用IMU,请安装两个附加的库(复制到Arduino库文件夹)。运行MPU6050_DMP6.ino文件,并将代码上传到您的Arduino。要查看该演示,请运行处理茶壶示例(位于库 MPU6050 Examples MPU6050_DMP6 Processing MPUTeapot中)。

我照顾的另一个问题是正常运行期间的断电:断开MPU-9150的电源,然后重新连接。代码将重新初始化设备并继续输出数据。

步骤3:其他资源

我附加了MPU-9250寄存器映射文件。了解代码的作用很有用。

这些库来自Jeff Rowberg github:https://github.com/jrowberg/i2cdevlib

他还是一个支持论坛:http://www.i2cdevlib.com/forums

我希望将来将此内容扩展。

第4步:问题

此模块遇到了一些问题。

许多论坛提到的一个问题是数据冻结。出于某些未知原因,该模块会在一段时间后停止输出数据。我认为我通过查看代码并解决了进入要处理FIFO的部分的一些条件来解决此问题。比较中断寄存器时也有一个错误-代码中的数据就绪指示错误。

另一个问题是FIFO满错误,有很多经验。我想我也通过不仅在收到中断时也要在FIFO不为空时处理FIFO来解决此问题。

我使用了5V器件Arduino Pro Micro作为MPU-9150是3.3V器件。但这实际上不是问题。首先,MPU-9150具有将5V转换为3.3V的LDO(稳压器)。其次,I2C通信上拉在MPU-9150上。当Arduino想要通信时,它将线拉低(接地)。数据传输完成后,Arduino放开了线路,MPU-9150将其再次拉高,因此5V永远不会进入设备。

另一个神秘的问题是,在一段时间后设备收到了FIFO满消息。正在运行。但是,当我断开所有电源并再次重新连接时,问题仍然存在。它仅在我按下Arduino上的复位键后才停止(这里要提到的一件事是,只有在复位后Arduino Pro Micro才会在正常加电时才加载引导加载程序。8秒钟后它将加载您的草图)。我不知道启动引导程序后为什么解决了这个问题。

我还做了另一处更改,并将一个串行转USB转换器连接到Arduino Pro Micro的RX/TX引脚上(USB Pro Micro的端口是虚拟设备,而不是真实的串行端口)。通过使用Serial1.begin而不是Serlal.begin来完成。经过最后的更改后,我看到了改进,甚至一个小时后数据也没有冻结。

我尚未解决的唯一问题是,一段时间后,设备开始像旋转一样开始输出疯狂。我不确定是因为我将设备保持太长时间的静态状态还是由于其他故障导致的。

责任编辑:wv

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分