L3G4200D随机峰值


8

我已经在有关L3G4200D陀螺仪的问题上搜索了一下这个论坛,但没有看到提到的问题,但是我在其他论坛上看到了其他人在谈论它。当陀螺仪静止时,我在输出中看到一个奇怪的大值。不幸的是,似乎没有人能够回答为什么会这样,所以我想问一下

因此,我正在使用i2c以400kHz(快速模式)从陀螺仪收集数据,并使用多字节读取(一次六个字节)收集陀螺仪数据。以100Hz采样(也尝试了最高800Hz),还尝试了在不同值处打开和关闭滤波。我没有使用中断引脚,而是在GYRCTRLREG4中使用了“块数据更新”属性,以便在读取LSB和MSB之前都不会输出数据。满2000dps,对FIFO没做任何事情。如果有帮助,我可以发布确切的寄存器值,但是图大多数人都没有数据手册。

下图显示了我的问题。输出的数据良好,据我所知正确计算,并且一般噪声是可以接受的。但是后来我注意到,当设备静止时,这些烦人的“斑点”会随机出现。如果我将其静置几秒钟,我将获得其中一个峰值,始终等于250-255(转换后约为18,使用'(输出* 70)/ 1000')。正如我所说,这些峰值是随机的,可以出现在任何平面中(在下图中,您可以看到X平面中的第一个峰值,Y方向中的第二个峰值),始终在相同的值附近,以及一个,两个或全部三个可以同时发生。大值仅用于单个样本,然后恢复正常。

错误提示

如前所述,我在另一个线程中看到应该在GYRCTRLREG4中使用块数据等待功能,但没有任何变化。我将问题缩小到MSB为零或更高(即正数)时,然后将MSB和LSB合并时,我得到了这些大数。例如,我抓取X平面所需的两个字节,在LSB中得到-6,在MSB中得到0,将它们组合起来得到250,然后转换为(250 * 70)/ 1000 = 17.5 dps(即对于固定/错误而言太大)。在同一样本中,Y平面的两个字节是-3 LSB和-1 MSN,将它们组合在一起得到-3,而转换得到-0.21(即,期望/正确)。

几天来一直在解决这个问题,我的磁力计也看到了一些随机峰值,所以我想这是我通过i2c读取设备错误吗?

任何建议或尝试的事情都非常欢迎!


指向数据表的链接可能会有所帮助:L3G4200D数据表
Tut

您解决问题了吗?一天以来,我一直在使用另一个陀螺仪解决类似问题。我每秒都有一个峰值,到目前为止无法解决。
约翰

L3g4200d也有同样的问题。你有没有想过?
捕手2015年

Answers:


1

因为您正在观察磁力计的类似问题,所以我猜想您在I2C总线上遇到了问题。尽管由于间歇性操作,这很可能是代码问题,但我还是要检查总线的连接方式。要检查/尝试的几件事:

  • 如果您不使用外部上拉电阻,请尝试在SDA和SCL上使用10K上拉电阻。大多数微控制器的内部上拉能力不足。

  • 如果可能,请尽可能减少总线的长度,并尝试使其远离高速信号。

  • 如果使用面包板,请尝试保持尽可能直接的连接,以免产生过多的电容。

  • 如果您使用的是已经包含上拉电阻的原型板,则它们可能最终并联,并且实际上上拉电阻值可能太低。

  • 如果您可以安排访问一个理想的示波器,以确保时钟和数据线看起来美观且方形,并且不会歪斜太多。

如果这些步骤不起作用,德州仪器(TI)将提供《I2C总线协议故障排除》应用报告,其中详细介绍了计算上拉电阻和电容可能遇到的问题。


感谢您的答复。我已经测试了这两个面包板的短路线,并将电阻值从10k更改为1.5k(我确定为1.5k)。我也有一个人造板,带有表面安装元件和很短的轨道。稍后再检查示波器,但是如果上拉电阻或走线出现问题,我会感到惊讶。我将尝试从任何电子设备中收集一些数据,以消除EMI问题。
ritchie888

0

可能发生的情况是在读取LSB和MSB之间正在采集一个新样本。因此,如果MSB = 0且LSB = -4,您应该得到252,或大约1g。如果下一个读数是MSB = 1且LSB = 2,则应该得到258,这是合理的。他们的问题是,对于1个样本,只有MSB已更新为1,而LSB仍为-4,您得到508,大约2g,这可能是暂时的。

CTRL_REG4上的BDU应该可以防止这种情况。也许从传感器读取该寄存器并确保启用了块保持功能?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.