## Monday, October 21, 2013

### Barometric altitude primer part two

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)
-->endfunction
-->p0isa=101325
p0isa =
101325.
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.

-->p0isa=101800;
-->function F=isaaltitude(x)
-->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
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)
-->endfunction
-->T0=307.15
T0 =
307.15
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.