User:Fredio54/FreeEMS

= FreeEMS =

FreeEMS is a free and open source electronic fuel injection (EFI) and ignition controller. The project has been under development for more than five years and is currently still being actively developed. FreeEMS development is discussed on DIYEFI.org forum. FreeEMS differs from the only other DIY EFI system MegaSquirt in that it is totally free and truly open source. The project is licensed 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 free to reproduce. MegaSquirt proponents refer to their system as having "open source software" however this is not true to the definition of Open-source software as illustrated by this quote by Richard Stallman : "'However, the obvious meaning for the expression “open source software” is “You can look at the source code,” and most people seem to think that's what it means. That is a much weaker criterion than free software, and much weaker than the official definition of open source. It includes many programs that are neither free nor open source.'"FreeEMS firmware is true open source software as defined by the Open Source Initiative and the Free Software Foundation.

Status
So far, FreeEMS has run thirty-three engines, in ten countries. The community is reasonably active in supporting each other and testing changes. The firmware feature set, while basic, is reasonably complete, and several cars are daily-driving on it. Weaknesses are primarily in terms of stability of APIs, PC software to interface with it, and hardware options.

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 has had its say and FreeEMS is turning out to be a better and more balanced product.

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. Various designs have been done over the years, some with success, and others failures.

Free designs
All current FreeEMS hardware designs are shared under an appropriate open source style license. This allows the community to assist the projects growth by modifying and openly contributing their designs to the group.

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.

Prototyping board
Initial implementations of FreeEMS hardware are being designed around a prototyping board called 'Adapt' from Technological Arts.

Initial testing
Real-world testing of the system has been, and continues to be, done on a variety of hardware. The majority has been done on "TA based" hardcore DIY setups as found in the DIY hardware implementations facebook album. The balance has been on a mix of Puma (not recommended) and Jaguar (special purpose) board designs.

Noise rejection
FreeEMS board designs 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 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.

Firmware
FreeEMS firmware is written in the C programming language using the GNU Compiler Collection tool chain for s12x. A small amount of assembly is present for the purposes of writing flash memory from the stack. In a future release some existing assembly code will be merged in for use on the XGATE co-processor.

Modular code
The code has been developed in such a way that there are clear and well defined boundaries between different subcomponents. This falls inline with software industry best practices and ensures that the code is both easy to understand and maintain.

Documentation
Documentation is available for everything, but not in a very organised fashion.

OpenLogViewer
OpenLogViewer is a free, open source, cross-platform data-log visualization application that currently supports many CSV data-log formats (including MegaSquirt style), and FreeEMS binary data-logs.

EMStudio
EMStudio is a new QT/C++ based tuning application written specifically for FreeEMS. As such the architecture is correct and it works fluidly with the firmware providing the user with a good experience.

FreeTherm
FreeTherm is a utility to create array definitions of ADC to temperature data based on 3 thermistor points via the Steinhart-Hart equation method. It is built in C# and runs under Linux, Mac OS X or windows on Mono or the .NET runtime environment with GTK# libraries installed.

MegaTunix
MTX, as it's widely known, was written around ten years ago when no tuning software was available for MegaSquirt on Linux. It has evolved through many phases into a substantial application and several years ago had partial FreeEMS support added. This is no longer the preferred application for interacting with a FreeEMS system.

Licenses
The FreeEMS firmware is under the GNU GPL V3 license, with other packages being licensed as the authors wished. Hardware designs are available under various licenses, however none are stable.

Comparison
"DIY" fuel injection systems from the perspective of a DIY enthusiast.

Note: Both MS1 and MS2 are effectively just processors, both of them require a main board to function. The three different available main boards, 2.2, 3.0 and 3.57, are cheap, reasonable, and expensive respectively. Consequently, MS1 or MS2 being cheap relies on the use of a 2.2 or 3.0 board both of which have some issues.

Notability
A temporary collection of links that prove notability.


 * Peter's videos
 * Andy's videos
 * Daniel's videos
 * Aaron's videos
 * Marcos' videos
 * Video of fly around of Puma board on random user's channel
 * Andy's old site
 * Andy's new site
 * In a magazine
 * FSAE team use
 * FreeEMS on display in Argentina @ SASE
 * Mentions and links to FreeEMS
 * List of users and chart of adoption
 * Mike's blog posts
 * 3 years of development SCM video by Alfredo
 * Facebook page with over 600 likes

Additionally, it's the only free and open source EMS, period, to support multiple vehicles in OEM trim out of the box. Some platforms supported:


 * Most Mitsubishi 4 cylinders (4G63, etc)
 * Most Mazda 4 cylinders (BP, B6, and other Mazda B engines)
 * Most Mazda wankel engines (with 24/2 pattern)
 * Most Toyota engines (24/2 pattern, 1UZ-FE, 4AGE, 3S-GE, etc]
 * Most Ford engines (with 36-1)
 * Most BMW engines (with 60-2)
 * GM DIS V6 engines
 * GM LT1 Distributor (and cousins)
 * Honda J Series V6 engines
 * Numerous Japanese sport bikes with even + sync pattens such as the Yamaha_YZF-R1

Note, support for some of these may not be complete, however all can be run and driven.