【问题标题】:Arduino Accelerometer: detect braking/ deceleration on a bikeArduino Accelerometer:检测自行车的制动/减速
【发布时间】:2014-11-26 21:02:22
【问题描述】:

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

以下是我的代码中的一些 sn-ps:

/* 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)并不断测量板的角度并基于此调整加速度值,但我不知道我应该使用什么数学?有没有人有同样的问题或可以指导我一些类似的项目?

【问题讨论】:

    标签: arduino accelerometer gyroscope


    【解决方案1】:

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

    至于骑手的安装,我建议在腰部系上腰带。这靠近骑手的重心,您可以忽略骑手通过站立等移动的短暂加速度。

    不要费心尝试用陀螺仪跟踪板的角度。变动如此之小,不确定性累积得如此之快,以至于你不会得到有用的结果。

    对于数学,设 g 为重力加速度,gb 为自行车的加速度/减速度,gx、gy、gz 为设备加速度的测量值。然后由勾股定理,加速度的平方

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

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

    【讨论】:

    • 感谢您的回答,是的,这似乎效果更好,至少在静态测试中。我将在周末进行试驾,但现在从我所看到的情况来看,我需要考虑一种更好的方法来过滤颠簸(可能是低通滤波器而不是移动平均值)并校准传感器(奇怪的是,在“gb”基础值发生了一些变化之后,如果我重置了 arduino 板,它就会恢复正常)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 2023-02-16
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 2012-05-07
    相关资源
    最近更新 更多