2025-01-14
用 MPU 6050 和 ESP8266-01S 制作一个无线加速度传感器
MPU6050 适配
MPU6050 已经在上一章完成驱动,但可以看到,它的静态读数为(-0.11,-0.25,8.96),并不是 9.8 的重力加速度,所以现在,我需要对这个数据进行处理,主要是零漂和抖动。
零漂就是在静止状态下的漂移,校准零漂类似于「调零」。
方法验证
我想到的解决办法是解方程组:
⎩⎨⎧(x1+ox)2+(y1+oy)2+(z1+oz)2=9.82(x2+ox)2+(y2+oy)2+(z2+oz)2=9.82(x3+ox)2+(y3+oy)2+(z3+oz)2=9.82
x,y,z 作为读取的数据,ox,oy,oz 是三轴的偏移量。
实际上解这个三元二次方程是很难的,我先带了三个 x,y,z
(0.03,−0.31,8.88)(−9.49,−0.86,−0.92)(0.71,−10.09,−0.12)
得到方程组:
⎩⎨⎧(0.03+ox)2+(−0.31+oy)2+(8.88+oz)2=9.82(−9.49+ox)2+(−0.86+oy)2+(−0.92+oz)2=9.82(0.71+ox)2+(−10.09+oy)2+(−0.12+oz)2=9.82
但是我把这个输入 Microsoft MathSolver 它说 表达式有问题,其实后来我知道这是个函数不能解出精确值,只能逼近估算。所以我找了个三维函数绘制器
放大放大再放大,读出交点为 (−0.3,0.34,0.91) 即为漂移量 (Offset)。
回带数据:
(-3.51,-5.67,6.38)==>(-3.81,-5.33,7.29)==>9.80148
(2.01,5.07,7.12)==>(1.71,5.41,8.03)==>9.8322
(-0.16,8.58,3.33)==>(-0.46,8.92,4.24)==>9.887
接近重力加速度 9.8 验证方法可行。
方程解算
牛顿迭代