AP_Baro: cleaned up setHIL method

move pressure calculation into library
This commit is contained in:
Andrew Tridgell 2013-05-02 15:26:38 +10:00
parent c6c1fce2f1
commit 7cec3caf19
2 changed files with 13 additions and 4 deletions

View File

@ -31,11 +31,20 @@ uint8_t AP_Baro_HIL::read()
return result; return result;
} }
void AP_Baro_HIL::setHIL(float _Temp, float _Press) void AP_Baro_HIL::setHIL(float altitude_msl)
{ {
// approximate a barometer. This uses the typical base pressure in
// Canberra, Australia
const float Temp = 312;
float y = (altitude_msl - 584.0) / 29.271267;
y /= (Temp / 10.0) + 273.15;
y = 1.0/exp(y);
y *= 95446.0;
_count++; _count++;
_pressure_sum += _Press; _pressure_sum += y;
_temperature_sum += _Temp; _temperature_sum += Temp;
if (_count == 128) { if (_count == 128) {
// we have summed 128 values. This only happens // we have summed 128 values. This only happens
// when we stop reading the barometer for a long time // when we stop reading the barometer for a long time

View File

@ -22,7 +22,7 @@ public:
float get_temperature(); float get_temperature();
int32_t get_raw_pressure(); int32_t get_raw_pressure();
int32_t get_raw_temp(); int32_t get_raw_temp();
void setHIL(float Temp, float Press); void setHIL(float altitude_msl);
}; };
#endif // __AP_BARO__HIL_H__ #endif // __AP_BARO__HIL_H__