A precedent post introduced some math about atmospheric models, relevant issues have
been pointed out and within this new post they will be solved.

Barometric altitude is
wide used in general aviation aircraft, use of this kind of altimeter
is standard and considered reliable, some of this reliability comes
from the simplicity of the involved devices that in some cases are
fully mechanical. In terms of relative accuracy the results are good,
in the same airspace uncompensated altimeters readings from different
aircrafts flying at the same altitude will be practically identicals,
so it's a reliable instrument to separate airplanes flight paths.

Unfortunately some
problem arise when it's time to land. An altimeter that follows
model equations will report a wrong altitude when the plane is on the
runway. This is due to the local weather conditions that lead to a
different pressure at ground level.

For example consider a
runway located at 0 m MSL(mean sea level), and with 101800Pa of
reported sea level pressure, by the way that is a possible value for
a good autumn day in Cremona. The ISA model sets pressure to 101325
at 0 m MSL, so our altimeter is reading 101800 Pa that corresponds to
-39,5 m, that of course it's wrong.

To calculate this
values launch barometricr2.sce and execute the following commands,
that are included at the end of file.

<<-->function
F=isaaltitude(x)

-->
F=pressure_reading-p0isa*(1-0.0065*x/T0)^(g/Rair/0.0065);

-->endfunction

-->p0isa=101325

p0isa =

101325.

-->pressure_reading=101800

pressure_reading =

101800.

-->fsolve(0,isaaltitude)

ans =

- 39.465884

>>

To obtain a correct
measurement it's possible to account for effective sea level
pressure, try the following commands.

<<-->pressure_reading=101800;

-->p0isa=101800;

-->function
F=isaaltitude(x)

-->
F=pressure_reading-p0isa*(1-0.0065*x/T0)^(g/Rair/0.0065);

-->endfunction

-->fsolve(0,isaaltitude)

ans =

0.

>>

If our altimeter is
setup with the former method and the airfield is located at 150 m of
altitude, on the runway the altimeter reading will be 150 m.

For
some flight activities, as soaring,
is convenient to know altitude above ground level rather
than respect mean sea level, pressure data
is the same but the altitude information is used to zero the
altimeter indication.
The sea level
pressure value is
available trough control tower communication or from
an automatic weather observation station

*. A classical instrument should be setup, with minor deviations, as per the*following video.*V18.1 Kollsman altimeter setup procedure*

Setup should be
repeated on a regular basis during flight, or anyway when the pilot
detects a change in weather condition. Every variation in outside,
temperature pressure and humidity will impact on the altimeter
reading, pilots developed some mnemonic rules to deal with this
phenomenon, this rules are effectively commented in the following
video.

*V18.2 True altitude video*

So if you are using a
barometric altimeter to log your RC/FPV/other aircraft altitude you
will need to take care of setup, pragmatically speaking if you flight
in a stable weather day and for limited time intervals and you are
happy with a non optimal degree of accuracy it is sufficient to setup
your altimeter just once prior to take off. If you are willing to
push to the edge of measurement state of the art than you need to
send, on a regular basis, the airfield pressure, corrected to sea
level, to the flying platform.

Above described
procedures are quite standard, on the other hand in many digital
instrumentation the accuracy is pushed further, with supplementary
measurements of temperature and humidity and the use of more
sophisticated models the overall uncertainty is reduced. I'll show
how our simple model can take into account temperature deviation from
ISA atmosphere. Here a link to a Scilab example of altitude
calculation that compensates for ISA temperature deviation.

Air temperature is
relevant because modifies the air density profile, following
calculation treat two identical pressure readings of \(P_{1}=P_{2}=100129 Pa\)
taken at two different temperatures \(T_{1}=14,35°C\) and \(T_{2}=34°C\).
Pressure at sea level is the standard value of 101325 Pa in both
cases.

Barometric altitude of
P1 reading can be calculated as

<<-->exec('isatemp.sce',
-1)

Input static pressure
reading Pa : 100129

Pressure height 100.04
m >>

A check for standard
thermal distribution

\(T_{sea}=T_{1}+altitude0,0065\) substituting our values leed to 15°C=14,35+0,65 that is exactly the
temperature at sea level for ISA model. Air density \(\rho_{1}\) is then
1,213 \(\frac{kg}{m^3}\).

Now that the
temperature profile have been checked it's safe to assume the ISA
altitude of 100 m.

Focusing on \(P_{2}=P_{2}\)
altitude

<<-->exec('isatemp.sce',
-1)

Input static pressure
reading Pa : 100129

Pressure height 100.04
m >>

The altitude is the
same, it's common to say pressure altitude is the same

Check of termal
distribution

\(T_{sea}=T_{2}+altitude0,0065\)

substituting our values lead to 34,65°C=34+0,65 that is 19,65°C higher than ISA expected temperature so we denote it as ISA +19,65°C or rounded to unit ISA+20°C

substituting our values lead to 34,65°C=34+0,65 that is 19,65°C higher than ISA expected temperature so we denote it as ISA +19,65°C or rounded to unit ISA+20°C

Test failed, the
measurement of pressure is not carried out in ISA conditions, some
form of compensation is needed.

Air is an ideal gas
here hence \(P_{1}= \rho_{1}R_{air}T_{1}=P_{2}= \rho_{2}R_{air}T_{2}\) then \(\frac{T1}{T2}= \frac {\rho_{2}} {\rho_{1}}\)
\(\rho_{2}=\rho_{1}\frac{T1}{T2}\) substituting \(\rho_{2}=\frac {1,213(273,15+15)} {(273,15+34)}=1,13 \frac{kg}{m^3}\)

Recalculate the
altitude using the standard formula with our sea level temperature

<<

->function
F=isaaltitude(x)

-->
F=pressure_reading-p0isa*(1-0.0065*x/T0)^(g/Rair/0.0065);

-->endfunction

-->T0=307.15

T0 =

307.15

-->pressure_reading=100129

pressure_reading =

100129.

-->p0isa=101325

p0isa =

101325.

-->fsolve(100,isaaltitude)

ans =

106.6349

So the pressure \(P_{2}\) do indicate a pressure altitude of 100 m identical to pressure altitude from \(P_{1}\) ), compensation for the different temperatures at sea level reveals that the second reading has been taken at 106,6 m MSL, to avoid notation confusion the second altitude is sometimes denoted as geometric altitude.

Between the non compensated reading and the compensated one there is a difference of 6,6 m that corresponds to a relative error of 6,2%.

Some different
calculation methods have been considered, possible error sources have
been introduced and basic numerical routines have been provided. The
Scilab function fsolve have been used to shorten the solution but it
is not usable directly on microcontrollers, in the next post will be
presented a microcontroller like version of the barometric algorithm
that use simpler form. Our analysis evidenced also the need for
weather and altitude data at the airfield for an accurate altimeter
operation.