Pressure sensors

The Honeywell pressure sensor I use in the EFIS is quite expensive. A few people asked if it can be replaced with cheaper option for the altimeter.

The main reason I chose to use the Honeywell is that it has a barb to attach a tube. I guess a cheaper option would be attaching a barb to a BMP-085. I’ve tried, couldnt make it reliable enough.

Anyway, today I found a sensor that can potentially replace the Honeywell


This sensor is has 14bit ADC and communicates via I2C, just like the Honeywell.

The sensor costs about $29 at

I have not tested the sensor yet, but I think it has a potential.


There is a differential sensor from the same manufacturer – NPA-700B-001D (7.5kPa differential range)

It is also works via I2C

I might use it for the angle of attack…. maybe….


LTC2983 Temperature measurement chip

Just a few words about the LTC2983 chip I use for measuring EGT and CHT in my Engine management System (EMS)

Before I found LTC2983 I experimented with a few chips from Maxim like MAX31855, MAX31856 etc. These MAX chips are really good, however, they are single channel, so if you have a 6-cylinder engine like Jabiru 3300 you need 12 of these chips – one for EGT and one for CHT for each cylinder. The final PCB board would be a lot bigger than I wanted it to be and I’d have to use Arduino Mega instead of Nano to accommodate all 12 CS wires in addition to SPI. I have considered multiplexing the chips (just like the guys from Ocean Controls) but have come across some weird behaviour and unreliable temperature readings. I didnt like the complexity of the multiplexed solution either.

LTC2983Then I found the LTC2983 – tiny 20 channel chip from Linear Technology.

This chip is not cheap comparing to MAX’s – about $40 USD from DigiKey but it worth every penny for 20 channel capability – 2 bucks per channel 🙂

It can handle all types of thermocouples you can think of. Even if your thermocouple is not a standard type, you can still program the chip to use it.
If handles thermistors, diodes or it can simply measure voltage with 24 bit accuracy. Pretty impressive!

It reports sensor failure and handles short or open circuit or sensor overlimit.

If a diode or transistor is used as a temperature sensor, the ideality factor can be adjusted to handle manufacturing variation. I found that transistors are pretty uniform in that regard. I have connected 10 of BC547s and the reading difference was less than 0.1C. Diodes were all over the place and ideality factor had to be adjusted for each individual channel. So in my EMS I use BC547 as a “cold junction” temperature sensor.

I expected a bit higher performance from the chip. It takes about 250ms to take a thermocouple reading. To be fair, the MAX chips are as slow.
I was hoping to use the chip as a high accuracy ADC, but later decided not to do it because the chip will be busy with thermocouples and I can get Arduino to take voltage reading within 10ms. Arduino accuracy wouldn’t be that great (10 bits), but it will do for most tasks.

Another observation – when the cold junction temperature is the same as the sensor’s end, the reading is not too accurate. It can be off by as much as 6 degrees C. When the temperature of the sensor end raises the accuracy seems to be OK. Type K sensor read my body temperature as 36.6C . I placed the sensor underarm 🙂
I’ll have some more accuracy tests done and will update the article.

I had a bit of trouble using cheap $2 Type K thermocouples. Those that dont have the junction insulated didnt want to play nice with CAN wires. As soon at CAN network got connected that thermocouple started picking up the noise from the CAN cable and giving me some crazy readings. So I need some work to do in interference reduction.

Overall I’m very happy with the LTC2983 chip. It is simple to program and not dramatically expensive. Check out the LTC2983 Datasheet.

Good people from Linear Technology have build a library for this chip along with various examples of Arduino code. You can download it here:
Their Linduino is pretty much Arduino Uno, so you can use their code with minimum modifications.

LTC2983_Thermocouple_ArduinoI have created a breakout board and it will be available for purchase it the Store. The boards has all the supporting circuits, bread-board friendly and ready to be connected to Arduino ) or other platform via SPI interface. All the inputs and outputs are marked of the board.







Progress on the projects ….

There was very little update recently.

It is all because I’ve got a new job and spend very little time at home.

I didnt drop the project though. There is a big progress on EMS. I’ll present it very soon.

Bosch BNO055 disappointments

I have started testing EFIS 19264 flying at zero ft AGL 🙂

In other words I have set it up in my car and compare magnetic compass to GPS magnetic heading and altitude to GPS altitude.

Good news is the altimeter is working wonderfully. With QNH set correctly the altitude was always within +/- 25ft of GPS altitude.

Its accelerometer is perfect.

Its gyro is OK (occasionally displays a small false roll, but recovers within a few seconds)

The magnetometer of the BNO055 is the centre of my disappointment.

The main problem is it drifts away over time by as much as 20 degrees. It doesnt hold calibration in a moving car. The calibration level goes from 3 down to 1 within minutes of driving. Resetting the unit with the stored calibration data only helps for a minute.

I think the problem is that the internal software is constantly re-calibrating the magnetometer. There is no way to disable the re-calibration in the NDOF operation mode.

The problem with heading drift could be hiding in the magnetic field distortion created by the car’s body and its electric circuits. The degradation of the calibration status is anyone’s guess.

I’ll keep testing the system in the car some more. Maybe the issue has environmental roots.

I’ll also try to contact Bosch support. Will see what they have to say about it.

If this is a limitation of BNO055 chip, then I need to look for some other alternatives.


If you use BNO055 for your systems and found the solution for compass drift, please let me know.


Display: Colour vs Monochrome

Several people asked me why I chose monochrome LCD display for my EFIS. Why not the colour one?

Here is why:

  1. My aircraft (RV-12) has bubble canopy, so the instrument panel is exposed to the sunlight to a great degree. So sunlight readability is very important. Monochrome display remains readable in the brightest direct t sunlight. Even high quality displays on iPhone and iPad are hard to read on the sunny day.
  2. Good bright colour LCD is quite expensive
  3. Colour display requires a bit more data transferred to it. That means performance overhead for the CPU board. Not a big problem though.
  4. I have spent too much money trying different colour displays. It was fun but it had to stop 🙂

Another big reason to make the choice I did is library availability. I didnt want to spend too much time time developing the software. Displays with KS0108 chip are quite popular and the library is very stable and It has everything I needed to build an EFIS or EMS.


EFIS compass testing

Started testing the EFIS 19264 ver 1.2 in the car.

I was hoping the self-calibration function of magnetometer will align it relatively quickly.

No dice.

Driving  to work for 40 minutes each way didn’t align the compass.

Plan for the weekend – add the a block of code to calibrate the BNO055, store the info in the EEPROM and load it back into BNO055 on power-up.


Inspiration: Arduino based EFIS

Long discussion about Arduino based avionics on

Lots of information and inspiration

Inspiration: CAN Bus links

CAN Bus discussion on Arduino Forum

First CAN Node: LEDs and Sensors

CAN Bus to WiFi interface

ESP8266 MCP2515 CAN Bus to Wifi Gateway

Inspiration: Angle of attack

Arduino base angle-of-attack unit (AOA)

Science behind differential AOA sensors

Inspiration: ESP8266 WiFi – a few links

Fancy WiFi stuff on ESP8266

Interfacing ESP8266 WiFi chip

Some more on ESP8266

A cleaner ESP8266-12 hardware setup