(EFIS: Last updated by Benjamin on February 13, 2024)

The EFIS or Electronic Flight Instrument System combines the indications of the primary flight instruments, at least the artificial horizon, the ball, the turn indicator, the anemometer, the altimeter, the variometer, and the compass, on a single display. Before the widespread use of EFIS and digital technology on aircraft instrument panels, an individual device was dedicated to each function, generally based on analog, electromechanical, or pneumatic technology.

As an EFIS is first and foremost a computer, the list of other indications or functions that can be implemented is not exhaustive: density altitude, true air speed, angle of attack, outside temperature, G-meter, wind speed and direction, voltmeter, clock, autopilot… etc.

This page will describe the main unit of the AvionicsDuino EFIS. The reader can refer to the AHRS and Digital Compass pages for the description of these modules, which are integral parts of the EFIS.

AvionicsDuino EFIS general presentation

The primary function of the main EFIS unit is to manage the screen (graphical display of the artificial horizon and all textual data) and make many complex calculations to convert raw sensor data into human-readable format.

For example, compute the aircraft’s speed from static and total pressure measurements. Or calculate the position of the ball based on lateral accelerations. This unit itself contains a very limited number of sensors, namely the two pressure sensors (absolute for static pressure and differential for the Pitot probe) and the inside air temperature sensor.

All other sensors are located in the above-mentioned modules (AHRS and Digital Compass): GNSS, gyrometers, accelerometers, magnetometers, outside air temperature, and relative humidity sensors. Complex computations are also performed in these modules.

EFIS general architecture

It is shown schematically in Figure 1. The main unit is represented in the yellow box, the AHRS in the pink one, and the magnetometer module, with outside air temperature and relative humidity sensors in the green one.

Figure 1: AvionicsDuino EFIS general architecture

The main unit includes a 5-volt power supply (described elsewhere). It provides the 5 volts required by the other two modules. The modules communicate via the CAN bus or a UART serial channel between the AHRS and the central unit. This UART serial communication will eventually be removed in the near future and replaced by the CAN bus (the double-direction blue arrow will then be removed, and the dotted green arrow will be represented by a solid line).

Main components

The heart of the main unit is a PJRC Teensy 4.1 board equipped with an NXP i.MXRT1062 microcontroller (ARM Cortex-M7 @ 600 MHz). See the microcontroller boards page.

The other components are listed below:

  • Differential pressure sensor: Analog Microelectronics AMS 5915 0050D to measure the differential pressure between the static port and the Pitot probe and to calculate the speed. The measuring range of this sensor is 0 to 50 hPa, which is suitable for the speed range of the MCR Sportster (0 – 320 km / h).
  • Absolute pressure sensor: Analog Microelectronics AMS 5915 1500A to measure static pressure and calculate altitude. The measuring range of this sensor is from 0 to 1500 hPa.
  •  1-Wire DS18B20 inside air temperature sensor (IAT).
  •  Grayhill 62SG optical rotary encoder for menu navigation.
  • CAN Bus Transceiver MCP2562EP
  •  Adafruit RA8875 graphics controller
  • 4.3 ″ 480 x 272 TFT LCD display, IPS, 1000 cd / m², Riverdi RVT43HLTFWN00

Printed circuit board

Figures 2 and 3 are 3D views of the printed circuit board in its current 2.1 version (views produced using KiCad). Compared to the previous version 2.0, there is little change. The connector for a GNSS has disappeared.

A GNSS was actually previously incorporated into the central unit of the EFIS. Indeed, before developing our own AHRS, we used an AHRS prototype provided by Naveol. This prototype included a GNSS chip, but its closed software did not allow for full access. Hence, there was a need to integrate a GNSS into the central unit. The GNSS included in the AvionicsDuino AHRS now provides all the data required for the EFIS.

Furthermore, as soon as the EFIS main unit and AHRS software are modified and updated for this purpose, the AHRS-UART connector will become useless because the AHRS will send its data to the CAN bus. It is, therefore, already necessary to plan the connection of the AHRS to the CAN bus.

Figure 2: EFIS printed circuit board, version 2.1, top view (KiCad)
Figure 3: EFIS printed circuit board, version 2.1, bottom view (KiCad). Note the connector for the RA8875 graphics controller.

Circuit diagram

Figure 4 below shows the electrical diagram of the EFIS main unit. KiCad files can be downloaded below on this page.

Figure 4: Schematics of the AvionicsDuino main unit.

The aluminium enclosure

Figures 5 and 6 show the combined case, which contains the central units of the EFIS and EMS. No plans or instructions are provided on this site for making cases. Indeed, one of the characteristics of homebuilt aircraft is the huge diversity of projects. Instrument panels are highly customized, so a case suitable for one will not suit another. Therefore, we believe it is up to the builder to design its enclosures.

We have chosen to make our cases from aluminum to prevent electromagnetic interference (EMI) and electromagnetic compatibility (EMC) issues. 3D-printed enclosures can also be shielded internally or externally with copper or aluminum adhesive tape. Our cases are made of aluminum sheets and angles assembled by screws and rivets. Note in Figure 6, produced during installation on the panel, that there is still a connector for a GPS antenna. Since then, this connector has been dismantled, and its hole has been sealed… with copper adhesive tape.

Figure 5: The aluminum case containing the central units of the EFIS and EMS. The top display, the smallest (4.3 inches), is that of the EFIS. The EMS has a 5-inch display. Each unit features a micro-USB port for firmware updates or saving flight parameters and a rotary encoder for navigating menus.
Figure 6: Installation of the EFIS – EMS box on the instrument panel. Since this photo, the GPS antenna connector has been removed.

Flight test results

For the flight tests, a flight data recorder (FDR) was previously developed to rigorously compare the data from our EFIS with those from a commercial EFIS serving as a reference. For our tests, this reference was a Dynon EFIS D10A.

The first COM port of the FDR received the serial output of our EFIS, the second that of the Dynon, and the third the NMEA stream of a u-blox NEO M9N GNSS, allowing a common time-stamping for all the data and the analysis of the GPS tracks.

The videos below were made during one of the many test flights carried out to test the EFIS. They demonstrate the excellent performance of the AvionicsDuino AHRS, which is perfectly suited to the flight mechanics of fixed-wing aircraft. The artificial horizon perfectly follows that of the reference EFIS and the natural horizon in a stable and prolonged manner. The position of the ball is identical on both EFIS. The pressure sensors are perfectly suited to this use. The indicated airspeed and altitude are identical to the Dynon’s.

Video 1: The horizon of the AvionicsDuino EFIS perfectly follows that of the EFIS Dynon.
Video 2: The horizon of the AvionicsDuino EFIS perfectly follows the natural horizon.

Compared to these two videos, the latest version of the EFIS software (v2.5) brings some improvements to the presentation of data on the display(fig. 7), as well as support for the different units of speed (Km/h, knots, MPH), pressure (hPa or In Hg) and temperature (°C or °F). Users can choose the units they want by navigating the menus using the rotary encoder. Their choices are saved in the EEPROM, as well as many other parameters (magnetic deviation, UTC time correction, display brightness, latest QNH and QFE, G max, and G min).

Figure 7: EFIS screen during flight, software version 2.5

Flight data recorder analysis

The graphs below were established with the data from the flight recordings; the x-axis is graduated in seconds. These graphs demonstrate the excellent correlation between the indications of the two EFIS. They validate our different hardware and software choices. You have to hover the mouse cursor over the curves to enlarge them.

Roll angle and variometer Comparisons
Figure 8: Comparison of bank angles during three successive 360-degree turns (see the corresponding trace in Figure 10)
Figure 9: Comparison of vertical speeds during three successive 360-degree turns (see the corresponding trace in Figure 10). We notice that the AvionicsDuino curves are better smoothed than the Dynon curve but are a little damped and have a slight phase shift, probable consequences of “stronger” filtering of the raw data from the sensors. Choosing the best between the barometric vario and the GPS vario is difficult on these curves. It would be necessary to repeat tests by “reducing” the filtering a little. In firmware version 2.5, the digital data from both variometers is textually displayed on the screen, but the barometric vario is the source of the semi-graphic display of the vario in the form of bars. We also notice that the pilot did not concentrate sufficiently on strictly maintaining a constant altitude during these three turns, which gave rise to these rapid fluctuations in the vario. But it was ultimately rather favorable for being able to make variometer comparisons!
Figure 10: GPS trace corresponding to the comparative curves of figures 8 and 9. The trace starts at the top of the image; it first describes a large turn to the left (in three parts, which can be clearly seen on the curves in figure 8), then two steep turns, the first to the right, the second to the left. The plane was heading towards the bottom of the map.
Altitude, pitch angle, and indicated airspeed comparisons
Figure 11: Comparison of altitudes during takeoff and initial climb up to 5000 feet (see the corresponding trace in Figure 14). There is a slight divergence between the two curves, a divergence which gradually increases in proportion to altitude, reaching 40 feet at an altitude of 5000 feet. After other tests where the error seemed slightly less significant, we finally introduced a multiplier coefficient of 0.995 into our altitude calculation algorithm in order to correct this error. This coefficient would potentially be different from other sensors. It can only be determined by experience and comparison with a reference altimeter.
Figure 12: Comparison of pitch angles during takeoff and initial climb up to 5000 feet (see the corresponding trace in Figure 14). Apart from a large inexplicable initial peak in the Dynon curve during the takeoff roll, the curves are very well correlated.
Figure 13: Comparison of indicated airspeeds during takeoff and initial climb up to 5000 feet (see the corresponding trace in Figure 14). The speeds are perfectly identical. Here again, we notice better smoothing of the AvionicsDuino curve and its corollary, a very slight phase shift.
Figure 14: GPS trace corresponding to the comparative curves of figures 11, 12, and 13. Takeoff from an aerodrome located at the bottom of the image and initial climb up to 5000 feet. The plane was heading towards the top of the map.

Download links

Kicad 6 files

Gerber and drill files


Téléchargement du code source sur GitHub

18 thoughts on “EFIS”

  1. Hi Michael,
    Thanks you for your interest in the AvionicsDuino website. You can count on our assistance via these comments if you decide to build either of the systems described here.
    You can find a link to a Github repository with all necessary software on each of the following pages : EFIS, AHRS, Digital compas, EMS, and Micro-EMS.
    For each software, the references for all necessary libraries are clearly indicated.
    In USA, I think that you can purchase AMS5915 pressure sensors from Servoflo Corporation. All other components from electronics wholesalers like Digikey, Mousser…

  2. I am interested in trying to build this. But before I start, I wanted some sense that I could follow your lead to complete this before ordering all of the sensors. I looked for the arduino code under “Software” but didn’t find any links to it. Did I miss something?
    I was also interested in how you got the pressure differential sensor to work under I2C. Is there a driver / library for it somewhere? I found other analog pressure differential sensors, but I was hoping that this one would be more accurate.

  3. Hi Roberto,
    I should write a page in the software section of the site about these speed calculations… And also for the calculation of altitudes, and more particularly, the density altitude. Just a matter of time!
    All the best,

  4. Benjamin, thank you very much for your exaustive and accurate explanation!!!
    Now is everything much clear!


  5. Hi Roberto,

    I moved your comment from the AHRS page to the concerned EFIS page.

    Thank you for this comment and giving me the opportunity to redo my calculations, I found an error!

    Lest’s see how the constants used were obtained.

    It is assumed that the Pitot tube is ideally installed, and therefore the CAS (Calibrated Air Speed) is equal to the IAS (Indicated Air Speed). We also postulate that at a speed below 300 km/h, air behaves like a non-compressible fluid, therefore the EAS (Equivalent Air Speed) is equal to the CAS.

    Indicated airspeed (IAS) can be approximated in m/s by the following equation obtained from Bernoulli’s equation:

    IAS = sqrt (2(Pt-Ps)/ρ0)
    (equation 1)

    – Pt is the total pressure in pascals,
    – Ps is the static pressure in pascals,
    – ρ0 is the air density at sea level in standard atmosphère in kg/m3.

    Given that Pt-Ps = differential pressure (Pd), and ρ0 = 1.225 Kg/m3, equation 1 become:

    IAS = sqrt (2Pd/1.225)

    We want IAS in Km/h so :

    IAS(km/h) = 3.6 IAS(m/s) = 3.6(sqrt (2Pd/1.225)) = sqrt (2Pd(3.6²)/1.225) = sqrt(21.159183 Pd)

    True airspeed (TAS) can be obtained in m/s by the following equation:

    TAS = sqrt (2Pd/ρ)
    (equation 2)

    where ρ is the air density at the aircraft’s flight altitude

    Given that the density of dry air (in Kg/m3) can be calculated using the following formula, obtained from the ideal gas law:

    ρ = PsM/TR
    (equation 3)

    – Ps is the static pressure in pascals at the aircraft’s flight altitude,
    – M is the molar mass of dry air, approximately 0.0289652 in kg/mol,
    – T is the absolute temperature in degrees Kelvin (= degrees Celsius + 273.15),
    – R is the universal gas constant, or ideal gas constant, approximately 8.314462618 in J °K−1 mol−1,

    combining equation 2 and equation 3, we obtain:

    TAS = sqrt(PdT/Ps) x sqrt(2R/M) = sqrt(PdT/Ps) x 23.960387

    We want TAS in Km/h so:

    TAS(Km/h) = sqrt(PdT/Ps) x 23.960387 x 3.6 = sqrt(PdT/Ps) x 86.257392

    So the constant currently used in the EFIS software for the TAS calculation (i.e. 84.9528) is wrong! It should be 86.2574! I can’t remember how and why I obtained 84.9528…

    I have modified the software accordingly in the GitHub repository.


  6. Hi Benjamin,
    please forgive my ignorance but i can’t get how works your formulas for IAS and TAS, in particular what is 21.159144 in IAS and 84.9528 for TAS.
    Thank you very much

  7. Hello Brent,
    Thank you for your kind comments.
    Apart from the AMS5915 pressure sensors, which must be ordered directly from AMSYS in Germany (for Europe), almost all other components are, in principle, available from the usual wholesalers (Digikey and Mouser, for example). Some elements are also available on eBay or Amazon. Of course, there can sometimes be stock shortages, which we hope are as short as possible.
    In case you couldn’t find a particular item, don’t hesitate to post a new comment.

  8. Hi, is there anywhere that has all the components at one online store? It’s rather difficult to find all these items in Australia. Fantastic work….. you’ve basically pushed through every single stumbling block i encountered and couldnt work out!! Thanks.

  9. Hi Tim,
    Thank you for your comment. You are right. Things are not readily evident because two versions of the EFIS coexist on the same page. I must thoroughly update the English and French pages on EFIS with only the latest version. The history of things is not so attractive. Old photos or videos of the first prototypes are useless.
    To answer your question more precisely, only one GNSS is needed. It is located in the AHRS module. The GPS connector on the EFIS PCB and the antenna connector on the EFIS-EMS aluminum case are useless. They are only there for historical reasons. The AHRS and EFIS programs are up to date for single GNSS operation.

  10. I read on the French site that you were possibly going to modify the programing to use only one GPS module. Has that update been performed or does this project still require 2 GPS modules?

    Thank you.

  11. Hi Alfredo,
    There are currently no menu options to convert speed and pressure units to mph and inHg. Implementing such options would be relatively easy, so I’ll put that on my to-do list. However, this list is already long…
    That said, if you want to do it yourself now, instead of modifying menu options, which can be tricky, a faster and easier alternative could be to modify a few lines in the code if you never use km/h, knots, and hectopascals. Manifold pressure is already in inHg in the EMS.

  12. Very interested in your project. What would be needed to convert units to mph and inHg? TIA

  13. If I translate Portuguese correctly, your question is: “Where do you recommend buying the kit?”
    There is no ready-to-assemble kit for sale.
    For each circuit described on this site, you can download Kicad or Gerber files which will allow you to order the printed circuit board from a PCB manufacturer (Aisler in Europe, OSH Park in the United States, JLCPCB and PCBWAY in China, for example)
    You can also download the component bill of materials, indicating each component’s supplier.
    It is up to you to solder the components on the PCB. By the way, some PCB manufacturers can assemble all the components for you on the printed circuit boards.
    The AvionicsDuino website does not give instructions for integrating circuits on an instrument panel because electrical circuits and instrument panels are so different in the world of homebuilt and ultralight aircraft.
    Some will aim to facilitate practical realizations among the coming soon pages on this site. For example, soldering surface mount components, preventing electromagnetic interference, CAN bus…etc.
    Stay tuned for updates.

  14. Hi, how did you connect togheter the AMS 5915 0050D static port and the 5915 1500A port to the EFIS static port input? Btw, great project!!!!

  15. Hi Shane,
    For EMI purpose, we prefer aluminium cases, so no 3D printed stuff.
    A new, more advanced EFIS prototype will very soon be tested in flight, as well as a new EMS, far more complete than the micro-EMS already described. This EMS is based on an extensive characterization study of all temperature and pressure sensors of the Rotax engine. So several new articles very soon on AvionicsDuino!

  16. 3D printed stuff?
    let me know if you ever need any 3D printed parts or resources!
    i need and EFIS! anything i can do to help!


Leave a Reply

Your email address will not be published. Required fields are marked *

The maximum upload file size: 5 MB. You can upload: image, document, text, archive. Drop files here