Arduino加速度计:检测自行车的制动/减速

迈克尔·D

我有以下问题:我在自行车上安装了Arduino +加速度计(MMA8452Q)。我正在尝试读取制动时的减速度。问题是,由于设计限制,我只能将上述硬件设置安装在自行车骑手上。由于骑手会经常改变位置,因此加速度计也会改变我用于测量减速度的基准值(例如,当Z轴垂直于地面时,它将测量1g,但在不同角度下,它将显示不同的值),从而使我的代码无法使用。

以下是我的代码中的一些片段:

/* Set up thresholds - 0.42g is maximum braking force the bike can do */
maximum_value = 0.7;
soft_braking = 0.4 * maximum_value;
strong_braking = 0.6 * maximum_value;

if(val > strong_braking)
                    { 
                      analogWrite(ledPin, 255);
                    }
                    else if(acc > soft_braking)
                    {
                      analogWrite(ledPin, 127);
                    }

* val是我用于测量减速度的轴上的加速度(经过一些移动平均滤波后)。

考虑到硬件相对于自行车车架的位置不固定并且读数受地形角度的影响,我如何可靠地计算出减速度?我正在考虑使用带有陀螺仪的6DOF板(例如MPU6050)并不断测量板的角度并据此调整加速度值,但是我不知道我应该为此使用什么数学?是否有人遇到过同样的问题,或者可以指导我进行一些类似的项目?

叔叔

您将不得不放弃在特定方向上使用加速度,但是您可以使用加速度测量的范数,并通过假设加速度与向下的加速度大致垂直来推断向前的减速度。

至于安装在骑手上,我建议在腰间系一条皮带。这在骑手的重心附近,您可以忽略骑手站着站立等运动而产生的短暂加速度。

不要费心尝试用陀螺仪跟踪电路板的角度。运动是如此之小,不确定性累积得如此之快,您将无法获得有用的结果。

对于数学,令g为重力引力,gb为自行车的加速度/减速度,gx,gy,gz为来自设备的加速度的量度。然后根据Pytagorean定理,加速度的平方

gx ^ 2 + gy ^ 2 + gz ^ 2 = g ^ 2 + gb ^ 2

gb = sqrt(gx ^ 2 + gy ^ 2 + gz ^ 2-g ^ 2)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章