Arduino Accelerometer:检测自行车的制动/减速

时间:2014-11-26 21:02:22

标签: arduino accelerometer gyroscope

我有以下问题:我在自行车上安装了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)并连续测量板的角度并根据此调整加速度值,但我不知道我应该使用什么数学?有没有人有同样的问题或者可以指导我一些类似的项目?

1 个答案:

答案 0 :(得分:3)

你将不得不放弃在特定方向上使用加速度,但你可以使用加速度测量的范数,并假设它大致垂直于加速度向下推断向前方向的减速度

至于安装在骑车人身上,我建议在腰部系上腰带。这是骑手的重心附近,你可以忽略骑车者站立起来的短暂加速等等。

不要试图用陀螺仪跟踪电路板的角度。这些动作非常小,不确定性累积得如此之快,以至于你不会得到有用的结果。

对于数学运算,设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)