mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-31 03:57:45 +08:00
[airspeed_adc] Calibrate inflight
This commit is contained in:
@@ -0,0 +1,12 @@
|
|||||||
|
<!DOCTYPE settings SYSTEM "../settings.dtd">
|
||||||
|
|
||||||
|
<settings>
|
||||||
|
<dl_settings name="control">
|
||||||
|
<dl_settings name="airsp">
|
||||||
|
|
||||||
|
<dl_setting max="4095" min="0" step="1" module="sensors/airspeed_adc" var="airspeed_offset" shortname="air_bias"/>
|
||||||
|
<dl_setting max="3" min="0" step="0.001" module="sensors/airspeed_adc" var="airspeed_quadratic_scale" shortname="air_scale"/>
|
||||||
|
|
||||||
|
</dl_settings>
|
||||||
|
</dl_settings>
|
||||||
|
</settings>
|
||||||
@@ -26,6 +26,9 @@
|
|||||||
#include "generated/airframe.h"
|
#include "generated/airframe.h"
|
||||||
#include "state.h"
|
#include "state.h"
|
||||||
|
|
||||||
|
uint16_t airspeed_offset = AIRSPEED_BIAS;
|
||||||
|
float airspeed_quadratic_scale = AIRSPEED_QUADRATIC_SCALE;
|
||||||
|
|
||||||
uint16_t adc_airspeed_val;
|
uint16_t adc_airspeed_val;
|
||||||
|
|
||||||
#ifndef SITL // Use ADC if not in simulation
|
#ifndef SITL // Use ADC if not in simulation
|
||||||
@@ -52,12 +55,12 @@ void airspeed_adc_update( void ) {
|
|||||||
#ifndef SITL
|
#ifndef SITL
|
||||||
adc_airspeed_val = buf_airspeed.sum / buf_airspeed.av_nb_sample;
|
adc_airspeed_val = buf_airspeed.sum / buf_airspeed.av_nb_sample;
|
||||||
#ifdef AIRSPEED_QUADRATIC_SCALE
|
#ifdef AIRSPEED_QUADRATIC_SCALE
|
||||||
float airspeed = (adc_airspeed_val - AIRSPEED_BIAS);
|
float airspeed = (adc_airspeed_val - airspeed_offset);
|
||||||
if (airspeed <= 0.0f)
|
if (airspeed <= 0.0f)
|
||||||
airspeed = 0.0f;
|
airspeed = 0.0f;
|
||||||
airspeed = sqrtf(airspeed) * AIRSPEED_QUADRATIC_SCALE;
|
airspeed = sqrtf(airspeed) * airspeed_quadratic_scale;
|
||||||
#else
|
#else
|
||||||
float airspeed = AIRSPEED_SCALE * (adc_airspeed_val - AIRSPEED_BIAS);
|
float airspeed = AIRSPEED_SCALE * (adc_airspeed_val - airspeed_offset);
|
||||||
#endif
|
#endif
|
||||||
stateSetAirspeed_f(&airspeed);
|
stateSetAirspeed_f(&airspeed);
|
||||||
#elif !defined USE_NPS
|
#elif !defined USE_NPS
|
||||||
|
|||||||
@@ -25,6 +25,9 @@
|
|||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
extern uint16_t airspeed_offset;
|
||||||
|
extern float airspeed_quadratic_scale;
|
||||||
|
|
||||||
extern uint16_t adc_airspeed_val;
|
extern uint16_t adc_airspeed_val;
|
||||||
|
|
||||||
void airspeed_adc_init( void );
|
void airspeed_adc_init( void );
|
||||||
|
|||||||
Reference in New Issue
Block a user