diff --git a/conf/settings/modules/airspeed_analog.xml b/conf/settings/modules/airspeed_analog.xml new file mode 100644 index 0000000000..ae6b4c22be --- /dev/null +++ b/conf/settings/modules/airspeed_analog.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/sw/airborne/modules/sensors/airspeed_adc.c b/sw/airborne/modules/sensors/airspeed_adc.c index af9955437e..1cfc3a7764 100644 --- a/sw/airborne/modules/sensors/airspeed_adc.c +++ b/sw/airborne/modules/sensors/airspeed_adc.c @@ -26,6 +26,9 @@ #include "generated/airframe.h" #include "state.h" +uint16_t airspeed_offset = AIRSPEED_BIAS; +float airspeed_quadratic_scale = AIRSPEED_QUADRATIC_SCALE; + uint16_t adc_airspeed_val; #ifndef SITL // Use ADC if not in simulation @@ -52,12 +55,12 @@ void airspeed_adc_update( void ) { #ifndef SITL adc_airspeed_val = buf_airspeed.sum / buf_airspeed.av_nb_sample; #ifdef AIRSPEED_QUADRATIC_SCALE - float airspeed = (adc_airspeed_val - AIRSPEED_BIAS); + float airspeed = (adc_airspeed_val - airspeed_offset); if (airspeed <= 0.0f) airspeed = 0.0f; - airspeed = sqrtf(airspeed) * AIRSPEED_QUADRATIC_SCALE; + airspeed = sqrtf(airspeed) * airspeed_quadratic_scale; #else - float airspeed = AIRSPEED_SCALE * (adc_airspeed_val - AIRSPEED_BIAS); + float airspeed = AIRSPEED_SCALE * (adc_airspeed_val - airspeed_offset); #endif stateSetAirspeed_f(&airspeed); #elif !defined USE_NPS diff --git a/sw/airborne/modules/sensors/airspeed_adc.h b/sw/airborne/modules/sensors/airspeed_adc.h index 2636a024e0..939bd4375c 100644 --- a/sw/airborne/modules/sensors/airspeed_adc.h +++ b/sw/airborne/modules/sensors/airspeed_adc.h @@ -25,6 +25,9 @@ #include +extern uint16_t airspeed_offset; +extern float airspeed_quadratic_scale; + extern uint16_t adc_airspeed_val; void airspeed_adc_init( void );