问题标签 [mpu6050]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1610 浏览

arduino - 将 Adafruit i2c 多路复用器与 imu9150(或 mpu6050)一起使用

我正在做一个项目,该项目将使用多个 imu 9150(非常类似于 mpu 6150,陀螺仪、加速度计和磁力计的组合)来测量下半身角度。因为我需要同时在多个设备之间进行通信,所以我从 Adafruit 订购了一个称为 I2C 多路复用器 (TCA9548A) 的设备。我选择了这条路线,因为每个 imu 设备都有相同的 i2c 地址。使用多路复用器,可以理想地通过多路复用器与每个 imu 设备进行通信,以便从每个单独的 imu 接收所有值。我无法让代码仅适用于单个 imu。任何帮助和建议将不胜感激。附件是我为单个 imu 成功编写代码所做的最大努力,以及设置图片。

感谢所有的帮助!

杰弗里

接线和设置图

Adafruit 传感器 - https://learn.adafruit.com/adafruit-tca9548a-1-to-8-i2c-multiplexer-breakout/wiring-and-test

MPU 传感器 - arduino Mpu6050 库中传感器的代码。

代码-

0 投票
1 回答
2082 浏览

arduino - MPU-6050 不工作

我正在尝试制作基于加速度计的鼠标。我正在为我的加速度计使用 MPU-6050。我已经连接了以下端口:

  • VCC - 5V
  • 地 - 地
  • SCL - A4
  • SDA-A5
  • INT - 2

这是我的代码:

但每当我尝试运行程序时,输出如下所示:

我尝试使用它给我的 I2C 检查器:

如果有人有任何答案,请发表评论!

0 投票
0 回答
634 浏览

accelerometer - ESP8266 + Micropython:为什么我通过定期 i2c 读取始终获得相同的值?

我正在使用在 Digistump Oak 上运行的 MicroPython 编写一些简单的代码这基本上是一个 ESP8266 分线板。我试图了解通过 i2c 定期读取传感器时看到的行为。

以下代码(读取ACCEL_XOUT_HACCEL_XOUT_L寄存器的值)工作得很好:

(该打印语句只是执行二进制补码的转换。)

正如预期的那样,当我移动 imu 时,它会从加速度计中打印出几乎实时变化的值。

但是,如果我在循环中引入延迟,例如...

...我看到一些非常奇怪的行为。在 imu 改变方向后,i2c 读取操作返回的值在多次迭代中继续保持不变。我不知道这里发生了什么:从 imu 上的寄存器读取的 i2c 读取操作,根据文档以采样率更新,默认配置为 1Khz。我在代码或数据路径中看不到任何可能以某种方式锁定或缓存这些值的内容。

这是关于加速度计寄存器的文档,可在寄存器映射和描述文档中找到:

这些寄存器存储最新的加速度计测量值。加速度计测量值以寄存器 25 中定义的采样率写入这些寄存器。

加速度计测量寄存器以及温度测量寄存器、陀螺仪测量寄存器和外部传感器数据寄存器由两组寄存器组成:内部寄存器组和面向用户的读取寄存器组。加速度计传感器内部寄存器集中的数据始终以采样率更新。同时,只要串行接口空闲,面向用户的读取寄存器组就会复制内部寄存器组的数据值。

由于我在读取调用之间处于睡眠状态,因此我很确定 i2c 串行接口在任何定义下都是空闲的,而且我没有看到任何与此行为相关的东西。

你对这里可能发生的事情有什么建议吗?

0 投票
1 回答
147 浏览

arduino - 为什么索引 2、3、6、7、10、11 的“fifoBuffer”值没有在 teapotPacket[] 数组中传递?

我正在使用 Jeff Rowberg 的 MPU6050 库。在代码中,将数据传递给茶壶库(用于处理,即图形仿真)时,没有传递整个fifobuffer。为什么呢 ?

这是代码,看到只有几个 fifobuffer 数组的索引被传递。

此外,还要澄清一件事,

为什么 teapotPacket[14] 数组是用这些奇怪的十六进制数字初始化的?

0 投票
0 回答
907 浏览

arduino-uno - MPU 6050 SD 写入频率 Arduino 不是恒定的,如何有恒定的写入频率?

我是菜鸟,我来自土木工程师,我提前道歉。

我有一个连接到我的 Arduino Uno 的 MPU6050,我将数据写入 SD。我可以以 20 毫秒的采样率写作。

为什么我有这个默认频率?

这是代码的一部分

为什么记录时间不是恒定的,但有时是 40 毫秒(见图)? 在此处输入图像描述

对我来说很重要,因为我的目标是有一个恒定频率来应用 FFT 来研究噪声并确定最佳低通滤波器。

如何修改频率?我想在我的代码上放一个delay() 。

0 投票
1 回答
749 浏览

microcontroller - 将 SparkFun mpu-6050 与德州仪器 TM4C123G LaunchPad 连接

作为使用德州仪器 TM4C123G LaunchPad 的机器人项目的一部分,我正在尝试与MPU-6050进行交互。我正在从 Energia 上传代码并使用串行监视器查看原始数据输出,但是当我将其上传到微控制器并运行它时,我只收到以下输出:

这是我要运行的代码:

分线板上的引脚连接到 Launchpad,如下所示:

VDD -> 引脚 1 (3.3v)

接地 -> 引脚 12 (接地)

INT -> 引脚 34 (PF0)

FSYNC -> 无

SCL -> 引脚 13 (PD0)

SDA - > 引脚 14 (PD1)

VIO -> 无

时钟 -> 无

ASCL -> 无

ASDA -> 无

我从GitHub获得了 MPU6050 和 I2Cdev 库,并从github.com/codebendercc/arduino-library-files/blob/master/libraries/Wire/Wire.h获得了 Wire 库,但我认为无论是wire.begin( )accelgyro.initialize()方法运行不正常?在使用这种语言进行编程时,我是一个相对初学者,但我正在承担一项雄心勃勃的任务,即为我申请的奖学金创建一个机器人,因此希望能在这个主题领域提供一些帮助。

0 投票
2 回答
2028 浏览

accelerometer - 互补过滤器如何工作?

我正在尝试结合来自加速度计和陀螺仪的数据来准确测量物体的俯仰角和偏航角。在研究了互补过滤器并尝试实现它之后,我对它的工作原理有几个问题。

我读过如果有很多角运动,过滤器“信任”陀螺仪数据,如果物体稳定,它“信任”加速度计数据。

http://www.pieter-jan.com/node/11 在这篇文章中,互补过滤器是这样描述的:

*角度 = 0.98(角度 + 陀螺数据 * dt) + 0.02*(accData)*

对我来说,似乎陀螺仪数据受到青睐。在下图中,http ://www.pieter-jan.com/images/resize/Complementary_Filter.png 位于页面底部,过滤后的数据似乎与加速度计数据“保持接近”,即使陀螺仪数据漂移。当计算表明陀螺仪数据受到青睐时,我不明白为什么会发生这种情况。我在其他照片中也观察到了这一点。在我自己的测试中,我需要“交换”0.98 和 0.02,这表明加速度计数据受到青睐,以获得类似的结果。我是否完全误解了这个过滤器的工作原理?“偏爱”加速度计数据是否正常?

再者,当需要长时间监测一个物体的角度时,陀螺仪数据岂不是因为漂移太大而变得毫无用处,滤波器是如何补偿的呢?

0 投票
1 回答
1055 浏览

arduino - 使用 Arduino 平衡四轴飞行器

我正在做一个关于具有自主控制的自平衡四轴飞行器的项目。我正在使用 Arduino Mega 2560 和 MPU6050。我在没有 DMP 帮助的情况下从 MPU6050 获得了横滚角和俯仰角,并应用了复杂的滤波器来忽略振动引起的噪声。

在 Arduino 中断的帮助下,还配置并能够使用 Flysky 发射器和接收器运行 BLDC 电机。现在为了平衡,我只关注一个轴(即滚动)。我还构建了一个平衡支架,用于电机自由移动滚动轴。

对于控制部分,我正在实现 PID 算法。我尝试只使用 kp 值,以便以某种方式平衡,然后继续使用 ki 和 kd 术语。但不幸的是,对于 Kp 本身,四轴飞行器正在剧烈振荡,根本没有稳定下来。

我的一些疑问是:

  • 一个 PID 回路是否足够,或者我们必须添加另一个?
  • 除了反复试验,我可以实施什么类型的调整方法来找到 kp、ki、kd?
  • 我将我的 ESC 编程为 1000 到 2000 微秒。我的 PID 输入角度将在 +/- 180 范围内。我是否可以直接将 PID 输出限制设置为范围 -1000 到 1000 或 -180 到 180 或任何其他值?

代码可以从 URL https://github.com/antonkewin/quadcopter/blob/master/quadpid.ino读取

0 投票
0 回答
487 浏览

angle - 从 MPU6050 和 arduino 自由旋转

我正在使用 Jeff 库从 MPU6050 获取旋转数据。但有个问题 ! 杰夫·利伯

Jeff 代码进行 0 到 360 度输出。这意味着我们没有 361 度!和更多。在我的项目中,我需要自由旋转。例如 800 度或 -1250 度....

我想这部分库必须更改:

但是我没有数学知识。:-[

请帮我这样做。非常感谢...

0 投票
0 回答
62 浏览

usb - 哪种类型的 USB 类是合适的?

我是USB的新手!

我想使用 stm32f4discovery 从 MPU6050 读取数据。并通过 USB 向 PC 发送数据。哪种类型的 USB 类是合适的?

谢谢。