I decided the Maximite is too slow to do both the EFI and the EFIS job
so I intend to use two Maximites and one aux card for the sensors
and injector transistors. The two Max's can share sensor data.
The EFI is time critical so that is demanding
of program execution time. The EFIS Maximite has all the time
in the world as all it has to do is up date the VGA display every half
second.
Here is the BASIC source code for a simple EFIS program that update
the VGA every half second. This is just a clock but I hope you get
the idea.
Mode 1 ' sets the screen rez
SetTick 500, doit 'set the interrupt to every half second AKA 500 msec
twiddle: ' The EFIS work would be done in here.
Print " "; 'the half second hardware interrupt occurs in here
GoTo twiddle
doit: 'upon half second hardware interrupt
CLS 'clear the VGA screen
Locate 30, 30 'Put the clock at column 30 row 30 on the VGA
Print Time$ 'Print the battery backed up real time clock on the VGA
IReturn 'interrupt routine done. go back to twiddle
Pretty simple.
The easiest hard ware package to build is just a 4 inch length of
six by six aluminium extrusion
with 3/16 wall that can be drilled and taped for end covers.
Over kill on volume but lots of room for expansion.
Paul Lamar
As you make progress I expect you will find that the only way to ensure
the efi works correctly will be to use an RTOS real time operating
system like other modern time critical systems use. An RTOS schedules
each event and makes sure everything happens on time. Your current
system waits for a signal to calculate rpm , map etc. If one signal
isn't there because of component failure, rmi or anything else the
system fails and you stop flying.
Kevin Alderman
I think it is cheaper in terms of programming time and easier to use
multiple processors. In fact I am thinking of adding a third Maximite and
run my moving map software on that. I'll have a selector switch to see
which processor gets the VGA display. This is the way they do it in
airliners. I have plenty of room in the box.
There can be horns for things like low oil pressure. You switch off the
moving map and switch to the EFIS to assess the problem. Each Maximite will
have 64 gig of storage on an SD card so a comprehensive history will be
available. BTW that is tens times the size of the FAA Airport data base.
Robin got mad at me when I wrote this back in 1990. I had a booth at OSH and
was totally ignored other than by the FAA dropping by and telling me not to
sell it as people could use it to land in IFR conditions at non IFR airports
with out talking to a controller. :) Of course it would behove you to
monitor the radio to make sure nobody else was landing on the same runway :)
Paul Lamar
Here is the Maximite GPS sentence parser source.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Demonstration of parsing the NMEA string produced by a GPS module
' Geoff Graham - July 2013
'
' All GPS modules are guaranteed to produce the GPRMC string
' See
http://home.mira.net/~gnb/gps/nmea.html for details of the string
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
max = 20 ' maximum nbr of params
DIM arg$(max) ' used to hold the data fields
OPEN "COM1:4800" AS #1
DO ' loop forever
GetGPSData ' get the next line
IF arg$(0) = "GPRMC" THEN ' GPRMC contains lat/long
IF arg$(2) = "A" THEN ' "A" means locked on to
satellites
PRINT "Latitude = "; LEFT$(arg$(3), 2); " "; MID$(arg$(3), 3);
PRINT " "; arg$(4);
PRINT " Longitude = "; LEFT$(arg$(5), 3); " "; MID$(arg$(5), 4);
PRINT " "; arg$(6)
ELSE
PRINT "GPS searching..."
ENDIF
ENDIF
LOOP
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' subroutine to load the GPS data fields into the array arg$()
' returns with the array populated
SUB GetGPSData
DO
DO WHILE INPUT$(1, #1) <> "$" : LOOP ' wait for the start
FOR i = 0 TO max
arg$(i) = "" ' clear ready for data
DO ' loops until a specific exit
x$ = INPUT$(1, #1) ' get the character
IF x$ = "," THEN EXIT ' new data item, increment i
IF x$ = "*" THEN EXIT SUB ' we have all the data so exit
arg$(i) = arg$(i) + x$ ' add to the data
LOOP ' keep going
NEXT i ' increment i
LOOP
END SUB
This is from the MMBASIC library.
http://geoffg.net/maximite.html
Paul Lamar
The Rotary Engine News Letter. Powered by Linux.
ACRE NL web site.
http://www.rotaryeng.net/
You Tube
http://tinyurl.com/beqqxas
Copyright 1998-2015 All world wide rights reserved.