在我想检测一系列力范围的设备上:小力(最小值约0.01克),但也更强的力,例如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或更大的更改,但时间范围很小。问题在于,我所计算的角度也将受到加速的这种小而快速变化的影响。传感器尽管角度并没有真正改变。
我认为我必须独立于加速进行角度计算。传感器。我可以做类似陀螺仪和磁力计的互补过滤器吗?这与我上面描述的过滤器相同,而与磁性相同。传感器?还是您将如何做?我正在考虑使用MPU9250。
您使用MPU6050表示,其中既包含加速度计和陀螺仪。您可以独立使用它们 - 从加速度计获得加速度并从陀螺仪中获得角度,然后使用角度补偿旋转。无需角度依赖您的加速度计。
使用DMP库Fromjeff Rowberg将为您完成工作。它可以与Arduino代码更快地补偿重力加速度。
链接到github