## Sunday, December 29, 2013

### Pitot test and calibration part 2

This is a follow up of a precedent post
Here is examined some practical aspect of the proposed test rig layout.
Refer to the following DIY calibration rig layout.
Figure P27.1 Calibration rig layout scheme

Previously we've talked about pitot test, neglecting all the practical aspects.
A brief description of operation is examined. The connections to reference instrument and to pitot are based on a wide used layout, the five ways manifold or instrumentation manifold.

A typical test operation is here examined. Is quite clear that procedure can be further automatized, here is considered the use of a basic hardware DIY setup. A basic IAS test is examined, in a quite similar manner also a TAS pitot measurement can be tested.

At the beginning of test procedure all valves are closed.
The first operation to be accomplished is the connection of the reference differential pressure manometer and the pressure ports of pitot. The total pressure port should be connected to the (+) line, the instrument high pressure port should be connected to the (+) line too.
Commonly used sensors have a very little internal volume. The connection of a pressure line, practically speaking the connection of a plastic tube to a instrument nipple, will cause a sudden rise in the internal pressure. To avoid the pressure ram rise the “bypass” valve should be left open during the whole operation. If present condensate should be removed opening valves “(+)” and” (-)”.
Then open “(+)” and “reservoir” valves and unscrew the piston knob to the full back position.
Close “(+)” valve.
Connect instruments and close the valves ”(+)””(-)” and “bypass” , open the “air” valve.
Connection of instruments shall respect
Now is time to zero your reference instrument, it is a function available on almost all digital instruments , refer to manometer manual for details. After zeroing the differential pressure reading should be exactly zero.
Turn the piston knob clockwise to reach the desired test differential pressure.

P27.2 Piston with knob

Once the test pressure have been reached close the “reservoir” valve, this operation is essential to avoid problems with piston leaks.
If your reference manometer is capable of take “average” measurements than only wait for the desired number of samples is collected and note the average value. If your reference manometer takes the pressure instant value than carefully note the desired number of samples and compute the average.
Do the same to get IAS measurements.
At this point just move to the next test pressure point, open the “reservoir” valve and turn clockwise the piston knob to increase the pressure.

As you note the procedure is quite simple, anyway some precautions should be taken during the design and use of the test rig.

Pressure lines cannot be made of flexible material, that will avoid the risk to have a pressure reading modified by the variation of line volume. A short flexible pressure line segment can be acceptable, anyway use a high thickness material. Good construction materials are metal and rigid plastics, do not use silicon tubing.

The drain lines exit must be below any other point of the pneumatic circuit. Drain lines routing should avoid any obstruction to the flow of condensate. A minimum slope of 5° is to be used.

P27.2 DIY Calibration rig

Pressure lines connections of the single instruments should lie on the same plane.

All the components for test, testing equipment and tested equipment should be placed in the test room some hours before the test.

Turn on the pitot electronics and the reference manometer at least one hour before the test measurements.

The electronic used to power and reading the pitot should be the same of those that will be used during normal operation.

Work in a room with a mild temperature, around 20 °C is a good value.

Record the room temperature during the test

As soon as the prototype is ready I will post a review and off course other information to allow the construction of your own DIY pitot test rig.

Next part post

## Season's greetings and thank you!

Pitot test and calibration rig under construction

## Thursday, December 19, 2013

### Linear sensors measurement introduction, static measurements

Within this document a general model for linearized sensors is examined. After a general introduction, a numeric example will be introduced. Instrument-specific calibration and test procedures, can be found on the instrument test section of the site, where available.

A sensor responds to a physical stimuli and transmits a corresponding electrical signal.
For a wide range of sensors, the relationship between input $$x$$ and output $$y$$ can be approximated as linear. There are cases, however, where the relation cannot be linearized.
The linearized sensor input-output characteristic is assumed to be a straight-line and towards that goal, the purpose of the calibration procedure is to find the straight-line that fits best the real sensor characteristic.

Digital sensors can be modelled in the same manner of the analog ones. The better the resolution (in bits) of the sensor output, better model accuracy is achieved.

Defining the sensor sensitivity or slope $$m$$, the offset $$o$$ and $$\epsilon$$ as a random, normally distributed error variable $$N(0,\sigma^2)$$, the linear input-output measurement model is

Equation ILS.1
$$y(t)=x(t)m(t,T,x_n)+o(t,T,x_n)+\epsilon$$

Refer to figure ILS.1 for a graphical representation.

Figure ILS.1 Ideal linear sensor input-output characteristic

The last equation explicitly accounts for the time $$t$$ and temperature $$T$$ impact on the output. Any other negligible or uncompensated for deviation sources are formally represented by $$x_n$$. For example, in the case of a ratio-metric sensor, $$x_n$$ can be the power voltage value. In general $$x_n$$ should account for every environmental factor such as vibrations, humidity and acoustic noise level. Sensor datasheets are commonly available on the internet and publish the upper-bound of the main error sources. $$x_n$$ can be incorporated in Eq. ILS.1 with a corresponding increase in the $$\sigma$$ deviation value of $$\epsilon$$ error variable.

Equation ILS.2
$$y(t)=x(t)m(t,T)+o(t,T)+\epsilon$$

The slope and offset values are time dependent. The variation with time of this parameters have two different time scales. The long scale variation is reported on data-sheets as “long term drift”, “aging” or with similar terms. That accounts for the fact that even a stored sensor is subject to aging and consequently the input-output relationship is time dependent.

For calibration and test purposes, aging related effects can be neglected. If a reliable sensor is required then the calibration of the sensor itself should be periodically retested.
Refer to the following figure to visualize the impact of slope and offset variation.

Figure ILS.2 Variation of slope, left. Variation of offset, right

The following equation will be used during linear sensor calibration.

Equation ILS.3
$$y(t)=x(t)m(T)+o(T)+\epsilon$$

Generally, $$m$$ and $$o$$ are affected by two main thermal related issues, the initial warm up of the sensor and the operating environmental temperature.
$$o$$ drift is reported in data-sheets as '”offset thermal drift” or with similar terms under the thermal characteristics section. Τhe indicated drift is the total variation inside the sensor operating temperature range. The drift of the offset value after an initial power up period is called “power up offset drift”, “warm up thermal shift” or with similar terms.

We define $$y_{span}$$ as the output span or range and $$x_{span}$$ as the input span or range, hence

Equation ILS.4
$$m=\frac {y_{span}} {x_{span}}$$

It is uncommon to find in data-sheets explicit descriptions on slope/sensitivity variation with temperature. Instead, it is quite common to have indications about input and output span deviations; usually in the thermal effects section.

Another useful piece of data reported in data-sheets is the “linearity error”. The general concept is that linearity error accounts for the differences between the sensors measurements and a best fit straight-line.

Figure ILS.3 Sensor deviation from linearized characteristic.
Linearized characteristic in black and real sensor characteristic in blue.
$$\epsilon$$ error band not shown

To operate in a static or quasistatic condition, it is necessary to check the response time of the sensor. Generally this value is reported as the time to reach a certain percent of the true output value.
To be sure you are operating at low frequencies check that your sample time is at least six times the time required by the sensor to reach 68% of output value. For the majority of sensors this will be an overly conservative value.

In the next post a numeric example will be introduced.

## Sunday, December 15, 2013

### Pitot test and calibration

This is the first part of a mini-series. The aim is to provide an introduction to the pitot test topic and to present a DIY oriented free calibration rig.

If a basic air data system is used then calibration and test of pitot tube is a routine operation, nevertheless is a compulsory procedure if a third party pitot is used.

Also for small RC/FPV/UAS test and calibration is fundamental, in this post we will examine general preliminary requirements for test equipment.

Figure P26.1 Pitot test equipment fitted on a plane, http://www.dfwinstruments.com

During test pitot static and total pressure ports are pneumatically connected to a test instrument and then a sequence of pressures are applied, at the same time the pitot speed readings are recorded.

Video P26.1 Video shot of static and airspeed test with an analog portable device 2:30

The IAS speed is defined

Equation 26.1
$$IAS=\sqrt{\frac{2q_c}{\rho_{base}}}$$
with $$\rho_{base}=1,225 kg/m^3$$ hence it is indipendent of current air density

After a period of time from initial calibration it is necessary to ensure that our sensor is reading the correct pressure value over the full operative range. Is to be noted that to test the pitot under true operating condition is necessary to mimic the static pressure and air temperature variations with altitude. To minimize test equipment cost and complexity, in a DIY vision, only the really basic tests will be considered.

To focus on the topic we examine a pitot test that uses a differential sensor with a pressure $$q_c$$ range of 12,5 mBar or 1250 Pa.
Table P26.1 Ideal, no uncertainty, input-output characteristic of a Pitot

If the sensor input range is divided into five parts we obtain the following input-output correspondence. To personalize that table you can use the provided “experimental.ods” spreadsheet.

To increase test accuracy we record $$n$$ multiple samples of input differential pressure and pitot IAS . Mean of pressure measurement and IAS measurements will be reported on a table and used during the acceptance test.
After a complete test run we get a table similar to the following.

Table P26.2 Example measurements results and IAS calculated values

The uncertainty calculation must be carried out and recorded, details will be shown in a dedicated post.
The proposed test allow to evaluate, at the same time, the correct functionality of the software and of the hardware

An important part of testing is to dispose of a stable platform that allows us to work in a comfortable way.

At this stage is possible to define some requirements for the hardware that will be used during tests.

Calibration rig general requirements :
-DIY technology and cost compatible
-Portable
-Variable calibration range
-Pitot and altimeter test capable
-Usable on the field and in laboratory
-Reduced maintenance
Based on precedent test and calibration experience the followings technical requirements have been individuated.

- Manual operated, to reduce overall cost.
- Static pressure range 130 000 Pa to 90 000 Pa.
-Differential pressure range 5000 Pa
-Pneumatic connections should avoid condensate to reach reference manometer/s
-The rig should allow the operator to :
Connect static with total port
Insulate pressure ports
Drain condensate
- Reference manometer/manometers requirements are linked to pitot ranges and required accuracy, more detailed description in a successive post

Refer to the following scheme to visualize a preliminary layout.
Figure P26.2 Calibration rig layout scheme

Figure P26.3 Picture of piston prototype

All the coments are welcome, prototype is under building an testing.

## Saturday, November 30, 2013

### GPSLogger for Android

Check for the latest release

This is a follow up article of this post. Now I proceed with a description of Android GPS logger developed and shared by Graziano Capelli. This application have been conceived for OpenStreetMap nevertheless it is also handy as GPS altimeter.

P25.1 Application screen-shot

The application is compatible with Android V2.2 and higher. The Software have been tested mainly on Google IDEOS, Android 2.2, and Samsumg Galaxy with Android 4.1.2.

The power consumption ratio between the background run condition and the regular running mode is about one to two, the main power drain is from the screen back-light.

Installation is straightforward, you may find detailed information here.

At a glance, the installation consist in two steps. Download the source package here and/or copy the GPSLogger.apk file on your cellphone SD card. Alternatively you can use the QR CODE here below. Source code have been developed using Intellij IDEA 11.1.2 under Fedora 19.

Referring to figure 25.3, at the bottom you have two buttons. Toggle button on the left switches GeoPoint collecting state between recording and pause, and the right button saves the path collected. If path save is selected two files are generated, one in GPX format the other in KML format. Position is updated every second, and every twenty collected samples the application save to memory card the recorded positions.

In the preference screen (on recent android versions accessible by holding the home key) you can change the collecting density (the minimum distance between adjoining collected GeoPoints) and you can add an offset (in meters) for manual altitude correction.

P25.3 Application running
P25.3b Settings screen

After some logging is possible to connect to a PC and download the log files.

GPX is the format used by OpenStreetMap, hence you can directly upload this files to OpenStreetMap.
On the below figure you can appreciate the output get after uploading a GPX file to OpenStreetMap platform, the new logged road path is indicated in pink color.
P25.4 OpenStret output after GPX upload

P25.5 Two paths loaded into GE

Main code is included into the source package folder \src\com, is writen in Java and it's commented by the author, if any doubt arise just ask.

The presented application is simple but useful in many DIY surveying tasks, is ideal to support some basic calibration procedures for air data instruments.

## Tuesday, November 26, 2013

### Contributors

I'm proud to announce that today we added some notable members to our team.

Current contributors to BasicAirData.

Greece

George Zogopoulos Papaliakos

Italy

Graziano Capelli, GC
Josè Larragueta Jr, JLJ

Thank for all!

## Friday, November 22, 2013

### GPS altitude application

A previous post have introduced some math about altitude measurement with GPS, within this post I will show a Venus GPS receiver at work. At the same time I will introduce a GPS logger application for Android cell phones, this DIY application was developed and intended as free solution for OpenStreetMap   mapping support.
I give a lot of credit to GC that developed and shared the Android logger system, him is also a main Airboom project contributor.
Figure 20.1 GPS logged path visualized into google earth
Have been chosen off the shelf components so assembly work is minimized.
The chosen receiver is a Venus638FLPx GPS, neatly packed by Sparkfun , the antenna is a 26db Gain unit suited to be magnetically fixed; the GPS and antenna connectors are matched, a four pin right angle header must be soldered to GPS unit serial interface.

The GPS receiver must be then connected to a PC by mean of a TTL serial to usb adaptor. You can see the general arrangement in the next figure.

Figure P20.2 GPS receiver and antenna ready to be connected to a PC

TTL serial usb adapter should be connected with four F/F wires to the GPS receiver, just follow the labels on both units. At a glance, wire the boards in the following way (GND; GND) ,(+3,3V;+3,3V), (TX,RX) and (RX,TX).

Preloaded firmware instructs the GPS receiver to continuosly send GPS strings to serial port , the communication is set to 9600 Baud 8N1. To read the ouput you need to run a serial/modem terminal software on your PC, for the purpose I used Minicom under Linux and Teraterm under Windows.

Once powered up you will get an infinite series of messages like those here below

<<
$GPGGA,134327.141,4509.9767,N,01000.4718,E,1,11,0.8,40.2,M,42.3,M,,0000*6F$GPGSA,A,3,19,01,06,11,14,03,22,27,32,28,20,,1.7,0.8,1.5*3D
$GPGSV,3,1,12,19,72,174,48,11,63,297,49,32,45,219,50,03,42,168,49*77$GPGSV,3,2,12,01,41,289,45,14,38,093,46,27,37,154,48,22,31,055,46*76
$GPGSV,3,3,12,06,26,154,47,28,20,313,48,20,12,232,43,18,00,052,*75$GPRMC,134327.141,A,4509.9767,N,01000.4718,E,000.0,286.2,271013,,,A*6E
$GPVTG,286.2,T,,M,000.0,N,000.0,K,A*03 >> Table P20.1 Venus GPS serial output The first line provide latitude 4509.9767 N longitude 01000.471 E, 40.2 MSL altitude and geoid altitude correction 42.3 m. Figure P20.3, Ready to operate antenna on the car roof, magnetic link. At the same time, and location, Android GPS logger provide an altitude of 82,3m. Figure 20.4 Output of Android GPS logger, steady measurement So GPS receiver provide 82,5 m=40,2m+42,3m of altitude and Android cellular phone 82,3m; hence data from the two different sources are in agreement. Provided altitudes are referenced to WGS-84 geoid, to express this measurement as MSL is possible to use, for example, EGM96 model information . This model provide at current coordinates a geoid height of 39,613m, hence GPS receiver is reading 82,5-39,613=42.9 MSL and cell phone 82,3-39,613=42,7 MSL. As per programming manual, Venus GPS receiver can be configurated using binary commands through a serial terminal, for a soft approach I advise to use GPSViewer for Windows. This free software reports real time GPS data and permit to setup some features, as communication port settings and GPS refresh rate ; our GPS receiver refresh rate can be setup up to 20Hz. Android GPS logger can save a path in .kml format, the Google Earth default format. Figure 20.5 Output of Android GPS logger, path record Using as example a Venus GPS the basic procedures to manage a GPS stand alone receiver have been provided. Also with the geoid altitude correction the altitude MSL is not the real altitude, GPS accuracy impact is high as per precedent article. To proof this the easiest way is to go to a location, or landmark, with a known altitude as your city airport or main square; probably your reading will be wrong of around ten meters. Android GPS logger will be descrived in more detail into another dedicated post, the software is open hence also the source code will be provided. ## Monday, November 18, 2013 ### Pitot cover done This post is a follow-up of this article. There is not so much to say this time, the pitot cover looks good and is highly visible. When the 3D pieces arrived I've just tied the "remove before flight" ribbon and that's all. P24.1 Pitot cover on the pitot tube. P24.1 Pitot cover on the mounted pitot tube As usual after some test I will put online the free 3D model on the main site. ## Friday, November 15, 2013 ### Pitot cover In this post a couple of candidates 8 mm pitot covers are considerate. A pitot cover is a simple device that have the finality of protect the pitot unit at rest or during the storage. Entrapped moisture and condensate can lead to wrong measurements and to premature sensor failure. A good cover must ensure that rain and dust cannot enter the pressure lines nor yet allow the insects to go live inside the unit. The pitot cover must also be highly visible because if it is not removed the airspeed indicator will not work once in flight. Visibility is assured by the so called “remove before flight” ribbon. This ribbon is becoming a quite common gadget for RC electronic devices. Effectiveness is warranted by a strict pre-flight checklist, indeed for RC planes it's sufficient to count the ribbons that have been collected before the flight, if they are the number expected then is safe to proceed. Figure P22.1 Remove before flight ribbon on a Concorde plane There are many pitot cover producers, pitot tip dimensions are quite standardized so it is easy to find a pitot cover for full size airplanes neither cost is a problem. Commonly used pitots have a separated static port located on the fuselage, so only the pitot total pressure port should be protected by the pitot cover, on the static port there is a pin. There are three main available cover typologies. The first is a hinged pitot protector that opens automatically during take off, the mechanism is composed by a target aerodynamic surface linked to a spring as per following figure. Figure P22.2 Automatic type cover. Retrieved from this link The higher complexity of this device is justified by the fact that closing is not operator dependent. Second type is composed by a rigid cap that fits on the tube and a before flight ribbon. Figure P22.3 Cap and ribbon type cover. Retrieved from this link Third type is composed by a cloth that is slided over the tube Figure P22.4 Fabric type cover. Retrieved from this link First type of cover have been excluded because in our pitot static ports are integrated on the tube and this kind of arrangement impact too much on the aerodynamic behavior. The fabric type cover require sewing skills, instead 3D print construction is chosen. Is easy to conceive a cap that cover static and total port, have a look to the following figure for the first virtual prototype. Figure P22.5 Pitot cover with ribbon virtual prototype After modifying some shapes I reach to the following solution Figure P22.6 Pitot cover, ribbon will be attached on the left side I chosen the second solution and now is en route to the 3D printers. As soon as I've tested the cover I will let you know how it works. The next post will come with photos and 3D model of completed pitot cover, so you can print your own piece. ## Friday, November 8, 2013 ### Barometric altimeter application A precedent article introduced some math about atmospheric models, within this post I will show an Arduino based implementation. Used absolute pressure sensor is a SCP1000, you can download the datasheet here , this sensor have a digital SPI interface and a range of 30 kPa-120 kPa This sensor can be incorporated in a ground station, it have an embedded temperature sensor that, accuracy apart, can be useful to experiment with compensation procedures. This BarometerPDEr2.ino sketch file for Arduino IDE contains all the software needed for altimeter operation. Hardware is composed by an 3,3 V Arduino Pro running at 8 Mhz and an 3,3V SCP1000 breakout board. Wiring is straightforward, refer to the next figures. Figure P21.1 BreadBoard Fritzing file here Figure P21.1b Wiring Scheme Figure P21.2 Direct wiring, with serial ftdi interface at 3,3V The barometer altimeter measures the geopotential altitude, our objective is to measure the geometric altitude. The two values are strictly correlated, denoted $$H$$ as Geometric altitude, $$h$$ as geopotential altitude and $$RE$$ as the local radius of earth hence, according to Warren F.PHILLIPS, 2009, Mechanics of Flight Second edition, Chap 1.2, $$h= \frac{REH}{RE+H}$$ hence $$H=\frac{hRE}{RE-h}$$ Of course for low altitudes the values are numerically very close, many people neglect this conversion. Another aspect to consider is the calculation of altitude from barometric altitude formula, the structure of the formula is $$P=P_0 e^ {-Kh}$$ hence for exact equation solution it is necessary to calculate $$ln(P/P_{0})=-Kh$$ It's not possible to calculate directly a natural logarithm with Arduino, hence a closed form solution based on power calculation is used. The “correctedaltitude” function in BarometerPDEr2.ino shows two implementations, one to be used with imperial units and the other with SI. Supplied sketch will continuously output three different altitude readings in a pleonastic verbose format through the comport. The first kind of reading is the altitude calculated using the standard day conditions of 15° and 101325 Pa at sea level. Second altitude is calculated using sea level pressure from an external source, as weather service, Metar or AWOS, likely in DIY application you can get this information from a ground station at the airfield; this altitude can be referred as compensated for local sea level pressure deviations; in the source code the sea level pressure is stored in “base_pascal” variable. The last altitude type relies on the fact that the airfield elevation and air temperature are known, an initial calibration routine calculates the value of sea level pressure for best altitude fit; in the source code the current airfield altitude is stored in “FIELD_ALTITUDE” constant. After the initialization phase the sketch will report the calculated temperature, the calculated pressure at sea level and the sea pressure level value copied, for example, from the weather service. Look the following table for an example output. << Initialization sea level Temperature C 16,2 Initialization sea level pressure Pa 99802 Sea level pressure from weather service Pa 99700 >> Table P20.1 Arduino sketch output during initialization This two values are quite similar if you have a good weather report and goods pressure measurements. Pressure information is available through METAR,a network used also by full size planes, here you find a short explanation. For Italy you can consult this site. During normal operation you will get the following output, in my case fieldaltitude=53 m. Output recording after some minute of operation. << Raw pressure Pa 99188 Filtered pressure Pa 99185 Temperature C 15 Barometric altitude according, ISA m 185.1039733886 Barometric altitude corrected for pressure at sea level, m 43.8402595520 Barometric altitude corrected, current altitude and temperature known m 53.0040588378 Raw pressure Pa 99181 Filtered pressure Pa 99182 Temperature C 15 Barometric altitude according, ISA m 185.3742523193 Barometric altitude corrected for pressure at sea level, m 44.0986099243 Barometric altitude corrected, current altitude and temperature known m 53.2686004638 Raw pressure Pa 99185 Filtered pressure Pa 99183 >> Table P21.1 Continuous sampling loop output For each iteration you get the last reading, the data output from the moving average filter and the three different altitudes. By inspection of the above table you can appreciate how are different the reported altitudes. It makes no sense to log data without compensation. If you don't dispose of a local landmark you can check your calibration against a geodetic network referral point. The Arduino based circuit can be conveniently boxed for a better usability, as per the following figure, do non forget to drill slots to allow correct ventilation. Figure P21.3 Arduino altimeter ready to be connected to a ground station PC In the case you want to minimize overall dimensions and weight then you can use an Arduino pro mini directly soldered to your sensor, look to the below figure for a size comparison. Figure P21.4 Arduino pro mini vs SCP1000 breakboard dimensions Atmospheric model assumptions are strong and it's not easy to check for deviations from the model itself, nevertheless it's possible to evaluate how the sensor uncertainty will impact on the calculated altitude. The SCP1000 is setup to run in the high speed mode, a 15 bit resolution is expected;this resolution corrresponds to 2.1Pa. Let's pretend our error probability function is rectangular symmetric(uniform) then, using the resolution value as optimistic error bound, is possible to calculate the deviation $$\sigma_{P}=\frac{3,6}{\sqrt{3}}=2,1 Pa$$. For a detailed description have a look to this document page 13 example 1. Using the uncertainty propagation formula $$\sigma_{h}=\sqrt{(\frac{dh}{dP})^2\sigma_{P}^2}$$ $$\frac{dh}{dP}=-0,190255P^{-1,190255}101325^{0,190255}(T_{0}+273,15)/0,0065$$ With a pressure reading of 100000Pa and in standard day conditions then $$\sigma_{h}=0,17m k=1$$ Widening the coverage $$\sigma_h=0,51m k=3$$. A complete tools suite for altitude measurement has been introduced, some compensation methods have been tested. This introduction evidentiates how a good instrument initialization can impact on measure Let me know if you have some problem with your own altimeter. ## Thursday, October 31, 2013 ### Promo 3D print In these days there is a promo on Shapeways 3D print site. "Limited Time Only: New customers Save$15 on orders $75+ with promo code ghost " Maybe it's a good occasion to print some pitot batch :-)) , look at this site ## Wednesday, October 30, 2013 ### GPS altitude introduction The global positioning system is not usually included in the basic topics about air data measurement, nonetheless this instrument is useful to some auxiliary operations that should be carried during normal instruments operation. Common approach is to log the altitude as above ground level, the departure runway is set then as the reference zero altitude above ground level. Same approach is used with barometer altimeters. Sometimes this procedure is carried out in an inaccurate way and both the GPS and the barometer are unable to provide mean sea level altitude, not to mention the heavy impact on barometer measures accuracy that can be caused by a coarse, or absent, local weather compensation. GPS works natively with a ECEF reference frame, the chipset converts this coordinate system to those of a selected ellipsoid. As example I will use a Venus638flpx GPS chipset by Skytraq, get the datasheet here , at page three you can read that GPS datum is by default WGS-84 . This application note at page 44 , indicates that Venus chipset can manage many reference ellipsoids. WGS-84 provides an approximate model of earth surface, that is modelled as an ellipsoid. Returning to altitude measurements they are refered to the geoid datum. This reference system define a zero elevation surface, the geoid, that would coincide with the mean ocean surface of the Earth if the oceans and atmosphere were in equilibrium. Consider the following figure that depict current altitude reference systems as introduced until now. Figure F19.1 Altitude datum representation for a flying platform. H GPS altitude, h altitude , N undulation, AGL above ground level altitude, MSL mean sea level altitude In the figure H represents graphically the altitude measure provided by the example GPS unit, h is the altitude as globally defined. Deviation between H and h is N or undulation, such deviations are caused by the natural variations of gravity field that as shown $$\epsilon$$ can also deviate the gravity vector. Note that geoid surface can either be over or under the WGS-84 surface. By figure inspection mean sea level altitude can be calculated as $$h=H-N$$ therefore there is a need for an accurate knowledge of the geoid altitude. This information is available through gravity models as EGM 2008 edition by U.S. National Geospatial-Intelligence Agency, on their site there is freely downloadable software in theSoftware and Coefficients for WGS 84 Geoid Undulation Computations by Harmonic Synthesis” section of this page. This software can calculate for us the undulation N in meters. Is to be noted that the value of altitude supplied by GPS units can be of different types. The altitude can be referred to selected ellipsoid, in our example WGS-84, this value don't need to be elaborated further. On the other side, by default on Venus units, altitude reading is compensated for the deviation from ellipsoid, this altitude reading is defined on the manual as MSL. Refer to this document page 8 for typical NMEA$GPGGA position fix message format.
The heigh above WSG-84 geoid H is needed so if our fix message is as follow
\$GPGGA,utc,latitude,N,longitude,E,1,#sats,HDOP,57,M,40.3,M,,*crc
^         ^
GPS altitude H is then 57,2+40,3=97,5 m
Using the coordinates of my RC Group airfield into the EGM08 model I get the following output “45.231386 9.882303 40.488”
First two rows are decimal latitude and longitude and the last is N in meters.
If my GPS altitude reading at the same coordinates is 97,5 m then the altitude, or at last elevation,
is 97,5-40,488=57,012 m MSL.
As alternative you can also use this online calculator, note that this calculator is implementing an older EGM96.
With the same coordinates the output is the following

<<Your Input Coordinates and GPS Height:

Latitude = 45.2313861111111° N = 45° 13' 52.99" N
Longitude = 9.88230277777778° E = 9° 52' 56.29" E
GPS ellipsoidal height = 97.500 (meters)
Geoid height = 40.137 (meters)
Orthometric height (height above mean sea level) =57.363 (meters)
(note: orthometric height = GPS ellipsoidal height - geoid height) >>
There is a difference of 0,351m due to different N value between the two calculations.

Overall measure accuracy is obtained by the sum of accuracy of ellipsoid model, geoid model and GPS measurement itself. Accuracy of WGS-84 and EGM08 are related to the geographic coordinates.

A strong conservative value for EGM08 accuracy is 0,7m at 99% of confidence. A full compilation of documents with accuracy considerations for different geographical areas can be found at this link, for example refer to table 4 page 143.
Returning to our example, the datasheet of Venus GPS page three indicates an accuracy of 2,5m CEP radius; that is an indication of 2D precision of the unit.
Using and some assumptions on error distribution is possible to calculate spherical accuracy SEP. SEP is defined as the radius of sphere centered at the true position estimate in 3D with probability 50%.
Assuming a typical VDOP / HDOP 2, PDOP / HDOP = 2 lead to approximate SEP=5m, similar results here at page 4-5
Probability of 50% is a low value, since half of the measurements will lie outside this radius. The 99% Spherical Accuracy Standard is then calculated as $$SAS_{90}=2,2SEP=11m$$
In a worst case scenario and with a confidence level of 99% the uncertainty is $$u_{t}=11+0,7=11,7m$$
So with the cited GPS unit, with no particular measurement methods, the altitude should be reported as  $$57,0 (\pm 11,7)m$$ with 99% confidence level; 94% of total altitude deviation comes from the GPS unit uncertainty.

Is good practice to check our instruments readings against well know referral points, they can be mainly of two kinds.
Landmarks altitude accuracy is variable, but usually they are easy to use. Most commons landmarks are airports or main city squares, is to note that every, even if really small, airports have a good indication of altitude since it is a useful information for aircraft altimeter calibration.
Geodetic networks can also be used for calibration, this kind of networks are used also for cadastral purposes and can reach a really good, let's say impressive, degree of accuracy. In Italy, for example, there is a network called IGM95,Italian counter part of EUREF89 or ETRF89,  by IGM , the approximative location of points can be found on the IGM website ; a non official compilation of IGM 95 points can be found here.
If you test your unit against a referral point you will have a clear feedback about your GPS units degree of accuracy. Note that the geoid deviation calculated internally by your unit is not necessarily equal to the here above calculated deviation, anyway the measurement will be off with both corrections. You should find instead that your measurements fall into the uncertainty interval calculated above.
If you plan to record flight altitudes at your flying site, for the best results, setup a referral point of  altitude. Is a good practice to record both, GPS altitude and GPS corrected altitude, in such a way you can correct your past measurements as soon as another more accurate referral point is available.
These are the premises needed to result interpretation of a next to come example on GPS measurements, of course I will use also a Venus GPS unit.