diff --git a/src/modules/airspeed_selector/airspeed_selector_main.cpp b/src/modules/airspeed_selector/airspeed_selector_main.cpp index c0d6e1e7d5..090456e173 100644 --- a/src/modules/airspeed_selector/airspeed_selector_main.cpp +++ b/src/modules/airspeed_selector/airspeed_selector_main.cpp @@ -444,8 +444,10 @@ AirspeedModule::Run() // save estimated airspeed scale after disarm if airspeed is valid and scale has changed if (!armed && _armed_prev) { + const float scale_change_threshold = _param_airspeed_scale[i] * 0.03f; // 3% relative change threshold + if (_param_aspd_scale_apply.get() > 0 && _airspeed_validator[i].get_airspeed_valid() - && fabsf(_airspeed_validator[i].get_CAS_scale_validated() - _param_airspeed_scale[i]) > FLT_EPSILON) { + && fabsf(_airspeed_validator[i].get_CAS_scale_validated() - _param_airspeed_scale[i]) > scale_change_threshold) { mavlink_log_info(&_mavlink_log_pub, "Airspeed sensor Nr. %d ASPD_SCALE updated: %.4f --> %.4f", i + 1, (double)_param_airspeed_scale[i], diff --git a/src/modules/airspeed_selector/airspeed_selector_params.c b/src/modules/airspeed_selector/airspeed_selector_params.c index 34d74cbfc5..7b50d9c4ea 100644 --- a/src/modules/airspeed_selector/airspeed_selector_params.c +++ b/src/modules/airspeed_selector/airspeed_selector_params.c @@ -96,7 +96,6 @@ PARAM_DEFINE_INT32(ASPD_SCALE_APPLY, 2); * @max 2.0 * @decimal 2 * @group Airspeed Validator - * @volatile */ PARAM_DEFINE_FLOAT(ASPD_SCALE_1, 1.0f); @@ -109,7 +108,6 @@ PARAM_DEFINE_FLOAT(ASPD_SCALE_1, 1.0f); * @max 2.0 * @decimal 2 * @group Airspeed Validator - * @volatile */ PARAM_DEFINE_FLOAT(ASPD_SCALE_2, 1.0f); @@ -122,7 +120,6 @@ PARAM_DEFINE_FLOAT(ASPD_SCALE_2, 1.0f); * @max 2.0 * @decimal 2 * @group Airspeed Validator - * @volatile */ PARAM_DEFINE_FLOAT(ASPD_SCALE_3, 1.0f);