0

在设备上,我想检测一系列力:小力(最小约 0.01g)但也更强的力,如 0.1g - 0.15g。

该设备将在 3d 空间中具有不同的位置,因此为了检测小力,我必须知道它的角度才能减去 1g。因为设备可以有一个随机的位置(角度位置)。

到目前为止我所做的:我使用了 MPU6050 并使用了带加速的互补滤波器。和陀螺。它是这样的:

agnleX_k+1 = 0.98*(angle_k + deltaT * gyro_k+1) + 0.02*angle_acc_k+1;

angle_acc是从加速度计算的角度。传感器。就像是:

arctan(accelX / sqrt(accelX^2 + accelY^2 + accelZ^2 + ))

所以我感兴趣:

forceX_k+1 = accelX_k+1 - 1g*sin(agnleX_k+1)

问题是:

如果我想检测一个非常快的小力,假设accelX_k+1我想检测从 0g 到 0.01g 或更多但在非常小的时间范围内的变化。问题是我计算的角度也会受到加速度的这种小而快的变化的影响。传感器虽然角度并没有真正改变。

我想我必须独立于加速度进行角度计算。传感器。我可以用陀螺仪和磁力计做一个互补滤波器吗?这会和我上面描述的过滤器一样工作,但只是用 mag. 代替传感器?或者你会怎么做?我正在考虑使用MPU9250。

4

2 回答 2

0

你说使用 MPU6050,它包含一个加速度计和一个陀螺仪。您可以独立使用它们 - 从加速度计获取加速度并从陀螺仪获取角度,然后使用角度来补偿旋转。角度不需要取决于您的加速度计。

于 2017-07-12T08:19:14.543 回答
0

使用 Jeff Rowberg 的 DMP 库将为您完成这项工作。它可以比Arduino代码更快地在内部补偿重力加速度。

链接到github

于 2020-05-02T02:18:57.967 回答