Flying a light aircraft requires keeping track of the fuel onboard at all times. This is easy enough to do with just a wrist watch, pen and paper, but it's nice to have a countdown timer running to reference at a glance and as a backup.
Some aircraft owners keep a digital countdown timer stuck on the panel somewhere, and some panels have a digital countdown timer built in. Full "glass" panel aircraft (eg. with a Garmin G1000) appear to have fuel/time management features in their software, however none of the aircraft I fly regularly have (full) glass cockpits.
This project aims to build a small device that helps manage fuel time available in multiple tanks - essentially a glorified countdown timer with multiple timers. It originally started as an exercise in how much UI could be packed into a microcontroller, but it's definitely a tool I want in the cockpit now.
(This list is mirrored from roadmap.md in the GitHub repository)
Display time remaining in each tank
Swtich active tank (including crossfeed)
Pre-flight programming state allowing at least configuration of time in each tank
Start flight action
End flight action (to prevent warning features tripping)
Keep accurate time and state across loss of main power and reset.
Nice to haves
Display elapsed flight time
Display elapsed time on current tank
Show elapsed time vs. reserve time vs. total remaining time
Show use of reserve time differently visually (more urgent)
Display flight start time
Protect against accidental changes to tank quantity
Automatic fuel balancing - alter user configured fuel change time in flight to
balance fuel in tanks.
Sleep between updates to save power? We only need to be awake to update the
screen every few seconds during a flight.
Alert sound loud enough to be heard in the cockpit:
short chirp to indicate it's time to switch tanks, or time is overdue
a more worrying alert to notify entering reserve time, plus a repeated
alert every five or ten minutes to remind the pilot of the status.
persistent alarm should sound when running dangerously low on tank time
or on total remaining flight time. For tank time where there is adequete
fuel remaining in the other tank, the alarm may not be dismissable. For
other cases, the persistent alarm may be silenced to a chirp every minute.
Configure fuel change time
Configure date and time
Display time in UTC
SAR time monitoring with audible warnings to update/terminate (active even outside of flight mode)
Allow entering fuel quantities and have the program work out the time per
tank. At minimum, this could be a single screen where instead of configuring
time for two tanks, you config quantity in each tank, plus burn per hour and
unusable fuel. The burn per hour and unusable could be recalled from EEPROM.
Low power mode where the user has to wake with an interupt to see the display
for five seconds at a time.
could show time remaining in current tank/flight, or some configurable value.
2.42" 128x64 OLED screen (SSD1306)
Any size of 128x64 OLED screen will work - SPI or i2C
From the original list of features I sketched out a year or two ago, I
primarily want address the following:
As a pilot I want to know how much fuel is onboard, expressed as time.
As a pilot I want to be alerted when I am approaching my reserve fuel time.
As a pilot I want to know when the active fuel tank needs to be changed so I
can keep the tanks balanced.
As a pilot I want to know when my search and rescue deadline (SARTIME) is
approaching so I can update or terminate it.
As a pilot I want this device to keep state accurately across loss of power
or reset so I do not lose information.
Common to all of these are two calculations:
Difference between two date/times
Time remaining given a quantity and rate of consumption
These calculations have to be reliable, but not necessarily fast. As long as
the system stays responsive on a human scale (eg. a few hundred milliseconds
when a button is pushed). This makes the main constraints program size and memory.
This project has existed in breadboard-form on my desk for 18 months. Though this is the first update in a while, it's a project I tinker on a lot: there's a menu system that's easy to work with, views can be pushed and popped, user input is transferred around automatically, and the event-loop is an interesting way to organise an embedded project. Problem is, none of these are core features. These things are polished not because they need to be, but because I've been putting off the harder task of making decisions about the in-flight views of the device.
Earlier in the project I'd sketched out a bunch of screens to see what might fit into in the limited screen resolution:
Great questions. Using time is definitely not state of the art technology, and you're quite right that running out of fuel in an aircraft means you're gonna have a bad time.
From my flight training, experience and some research, I would say that the use of time comes down to operational aspects more than a lack of technology. Specifically, managing the phase of flight where accurate fuel information is the most critical: pre-flight planning.