aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/meas_airspeed/meas_airspeed.cpp
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-04-05 17:02:37 +0200
committerLorenz Meier <lm@inf.ethz.ch>2014-04-05 17:02:37 +0200
commitfc39af08a1d6673aa727a84b17afd6c4485dff19 (patch)
tree20b00e74e6885f781fbdf1e9ff1a6ce7ca6bc8cc /src/drivers/meas_airspeed/meas_airspeed.cpp
parent3da219c3db638e0a57d18e892575df13d8c11f47 (diff)
downloadpx4-firmware-fc39af08a1d6673aa727a84b17afd6c4485dff19.tar.gz
px4-firmware-fc39af08a1d6673aa727a84b17afd6c4485dff19.tar.bz2
px4-firmware-fc39af08a1d6673aa727a84b17afd6c4485dff19.zip
airspeed: Prevent the filter from overshooting into the negative airspeed range
Diffstat (limited to 'src/drivers/meas_airspeed/meas_airspeed.cpp')
-rw-r--r--src/drivers/meas_airspeed/meas_airspeed.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/drivers/meas_airspeed/meas_airspeed.cpp b/src/drivers/meas_airspeed/meas_airspeed.cpp
index 58b128948..1ad383ee0 100644
--- a/src/drivers/meas_airspeed/meas_airspeed.cpp
+++ b/src/drivers/meas_airspeed/meas_airspeed.cpp
@@ -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;