Implemented airspeed measurement. Untested

This commit is contained in:
Lorenz Meier
2013-01-21 23:45:16 +01:00
parent 48e497e406
commit 2ebb1812f1
6 changed files with 95 additions and 39 deletions
+2 -1
View File
@@ -43,7 +43,8 @@ CSRCS = err.c \
conversions.c \
cpuload.c \
getopt_long.c \
up_cxxinitialize.c
up_cxxinitialize.c \
airspeed.c
# ppm_decode.c \
+5 -3
View File
@@ -41,11 +41,13 @@
*/
#include "math.h"
#include "conversions.h"
#include "airspeed.h"
float calc_indicated_airspeed(float pressure_front, float pressure_ambient, float temperature)
{
return sqrtf((2.0f*(pressure_front - pressure_ambient)) / air_density_sea_level);
return sqrtf((2.0f*(pressure_front - pressure_ambient)) / CONSTANTS_AIR_DENSITY_SEA_LEVEL_15C);
}
/**
@@ -60,7 +62,7 @@ float calc_indicated_airspeed(float pressure_front, float pressure_ambient, floa
*/
float calc_true_airspeed_from_indicated(float speed, float pressure_ambient, float temperature)
{
return speed * sqrtf(air_density_sea_level / get_air_density(pressure_ambient, temperature));
return speed * sqrtf(CONSTANTS_AIR_DENSITY_SEA_LEVEL_15C / get_air_density(pressure_ambient, temperature));
}
/**
@@ -76,4 +78,4 @@ float calc_true_airspeed_from_indicated(float speed, float pressure_ambient, flo
float calc_true_airspeed(float pressure_front, float pressure_ambient, float temperature)
{
return sqrtf((2.0f*(pressure_front - pressure_ambient)) / get_air_density(pressure_ambient, temperature));
}
}
+8 -3
View File
@@ -33,13 +33,16 @@
****************************************************************************/
/**
* @file airspeed.c
* Airspeed estimation
* @file airspeed.h
* Airspeed estimation declarations
*
* @author Lorenz Meier <lm@inf.ethz.ch>
*
*/
#ifndef AIRSPEED_H_
#define AIRSPEED_H_
#include "math.h"
#include "conversions.h"
@@ -83,4 +86,6 @@ __EXPORT float calc_true_airspeed_from_indicated(float speed, float pressure_amb
*/
__EXPORT float calc_true_airspeed(float pressure_front, float pressure_ambient, float temperature);
__END_DECLS
__END_DECLS
#endif
+1 -5
View File
@@ -42,10 +42,6 @@
#include "conversions.h"
#define air_gas_constant 8.31432f
#define air_density_sea_level 1.225f
#define absolute_null_kelvin 273.15f
int16_t
int16_t_from_bytes(uint8_t bytes[])
{
@@ -154,5 +150,5 @@ void quat2rot(const float Q[4], float R[9])
float get_air_density(float static_pressure, float temperature_celsius)
{
return static_pressure / (air_gas_constant * (temperature_celsius + absolute_null_kelvin));
return static_pressure / (CONSTANTS_AIR_GAS_CONST * (temperature_celsius + CONSTANTS_ABSOLUTE_NULL_KELVIN));
}
+4 -1
View File
@@ -44,7 +44,10 @@
#include <float.h>
#include <stdint.h>
#define CONSTANTS_ONE_G 9.80665f
#define CONSTANTS_ONE_G 9.80665f
#define CONSTANTS_AIR_DENSITY_SEA_LEVEL_15C 1.225f
#define CONSTANTS_AIR_GAS_CONST 8.31432f
#define CONSTANTS_ABSOLUTE_NULL_KELVIN 273.15f
__BEGIN_DECLS