airspeed: Prevent the filter from overshooting into the negative airspeed range

This commit is contained in:
Lorenz Meier
2014-04-05 17:02:37 +02:00
parent 3da219c3db
commit fc39af08a1
3 changed files with 28 additions and 5 deletions
@@ -258,6 +258,12 @@ MEASAirspeed::collect()
report.temperature = temperature;
report.differential_pressure_pa = diff_press_pa;
report.differential_pressure_filtered_pa = _filter.apply(diff_press_pa);
/* the dynamics of the filter can make it overshoot into the negative range */
if (report.differential_pressure_filtered_pa < 0.0f) {
report.differential_pressure_filtered_pa = _filter.reset(diff_press_pa);
}
report.differential_pressure_raw_pa = diff_press_pa_raw;
report.voltage = 0;
report.max_differential_pressure_pa = _max_differential_pressure_pa;