FreeEMS
From Wikipedia, the free encyclopedia
FreeEMS is an experimental electronic fuel injection (EFI) controller that is under active development right now. FreeEMS is being developed on DIYEFI.org founded by Fred Cooke especially for this purpose. FreeEMS differs from MegaSquirt in that it is totally free and truly open source. The project is under GNU GPL and TAPR OHL meaning that anyone can do anything they like with it within reason. This can not be said about MegaSquirt because the source code licenses prevent its use on other hardware, and the hardware is copyrighted and not open at all.
Contents |
[edit] Status
Currently FreeEMS is only at the prototype and proof of concept stage. It can not yet run an engine. This will hopefully change over the next few months or so. The code is being actively developed and several aspects are working nicely already with a lot more to come in future.
[edit] History
FreeEMS and DIYEFI.org were born from the closed nature of the MegaSquirt project, and the way it is publicised as being open when it is not. It was noted that this closed nature prevented progress from occurring rapidly as in other true open source projects, and also allowed mistakes to make it to the final designs because the design work was done behind closed doors. By encouraging open public discussion and debate on all important issues, the community will have it's say and FreeEMS should turn out a better balanced product.
[edit] Hardware
FreeEMS operates just like any other Engine Management System by reading various sensors on the engine and producing appropriate output based on calculations done with those readings.
[edit] Free designs
All FreeEMS hardware designs will be shared under an appropriate open source style license. Most likely the TAPR OHL Open Hardware License. This will allow the community to assist the projects growth by modifying and openly contributing their designs to the group.
[edit] Microcontroller
FreeEMS uses the Freescale HC12 MCU variant MC9S12XDP512 to do the number crunching and all other electronic duties. The core has around 90 IO pins, 512KB of flash based non-volatile memory, 32KB of RAM, 16 ADC channels, runs at 40MHz, and has an 80MHz RISC co-processor.
[edit] Prototyping board
Initial implementations of FreeEMS hardware are being designed around a prototyping board called 'Adapt' from Technological Arts.
[edit] Initial testing
Testing of the first usable versions of the FreeEMS firmware will most likely be done using an adapter board between a MegaSquirt main board (version 2.2, 3.0 or 3.57) and the Technological Arts Adapt XDP512 card. This will significantly lower the entry cost and difficulty for those with MegaSquirt systems already wired into their vehicles. FreeEMS implementation can then be tested and stabilised somewhat before putting our own main board designs into production with a particular pinout layout.
[edit] Noise rejection
FreeEMS board designs will use a multiple feed power and ground system to effectively isolate noise from high power components from the incoming signals. By separating the grounds and power feeds we can ensure that voltage drops are not present on critical sensor signal lines and lower the capacity of wire required to run the system effectively. In contrast the MegaSquirt family of fuel injection controllers use a single ground system which requires heavier than normal grounding and power cables to remain mostly noise free.
[edit] Firmware
FreeEMS firmware is being developed in the C programming language using the GNU Compiler Collection tool chain for hcs12. In the future some assembly code may be added for use on the XGATE co-processor however that is not currently necessary.
[edit] Modular code
The code is being developed in such a way that there are clear and well defined boundaries between different sub components. This falls inline with software industry best practices and ensures that the code is both easy to understand and maintain.
[edit] Documentation
All aspects of the code no matter how minor are being documented extensively. This should enable the entry level to be significantly lower and promote user input and growth of the code base.
[edit] Licenses
All firmware is under the GNU GPL V3 license, and all DIY hardware will be under the TAPR OHL license.

