Page 1 of 1

Planning Your DIY EFI Project

Posted: Mon Dec 05, 2011 12:54 pm
by Fred
Properly planning your project will give you a much better chance of it being successful and of you being satisfied with the final result. Conversely, failure to properly plan your project is likely to lead to disappointment and possibly outright failure.

Resources

The first thing to do is determine your fundamental resources:
  • Time - How much do you have to spend on this per day? How much do you have to spend on this per week?
  • Skills - What do you really know? What are you really capable of? Who do you know who knows more/can do more?
  • Money - How much do you have to spend on the required parts, tools, consumables, services, equipment?
You should be realistic about all of these things up front; there is no point in lying to yourself about any of them, it will only lead to disappointment later down the road.

Goals/Outcome

The second set of things to determine are the details of your goals:
  • Budget - How much do you want to spend on the project? How much can you spend before your wife finds out and files for divorce?
  • Timeframe - When do you need the project running? When do you need it driving? When do you need it complete? When will it cause a divorce?
  • Result - What defines the success of the project in terms of tangible results? What do you need the system to do? Ignition? Injection? Accessory control? Still married?
You should be realistic about this too. It's more reasonable to do things in stages such as "Control the fuel injection only" and then "Add full ignition control" and then "Add a turbocharger system" etc.

Costs/Expenses

The third thing to do is determine what is required to achieve your desired outcome:
  • Materials - What do you already have? What can you easily/cheaply get? What's left over that you will need to order/buy?
  • Work required - What needs to be done? How much can you do? How much can your friends do? What's left that you'll need to pay someone to do?
The posts in this guide thread will attempt to assist you in working out what is required to achieve your goals. This thread is not FreeEMS specific and will suggest that you choose another system if FreeEMS can't meet your needs in an acceptable way when measured by your own requirements.

Choosing A System

Posted: Mon Dec 05, 2011 3:00 pm
by Fred
The number one most important thing to decide for an engine control project is which EMS solution you're going to use. There are literally dozens of options available, but in terms of DIY, there are only a few choices each with distinct advantages and disadvantages.

The Rules

No matter which system you choose there are two important all encompassing rules that should guide your choice:

  • Choose as late as possible!!!
  • Choose something that exists!!!

In other words, don't make your decision on EMS hardware a year before you plan to start installing it, wait until you have to start committing and buying things. And don't wait for products that are promised as coming soon, and yes, that includes FreeEMS firmware features and hardware implementations.

Requirements

At this point, before proceeding further, you need to know your goals, desired outcome, desired results, acceptable timeframe and budget. These requirements will quickly and accurately dictate which system you choose, or perhaps that you need to rethink some of your goals to better match your timeframe and budget.

In terms of engine control requirements the fundamentals are as follows:
  • Special engine hardware? ITBs? Dual plugs? 2 stroke? Odd fire? Siamese? Odd cyl count? Rotary? Staged injectors? etc.
  • Sensors: RPM types? Temperatures? Load measurement? OEM or aftermarket?
  • Injector control? How many? What type? What configuration?
  • Ignition coil control? How many? What type? What configuration?
  • Accessories? Fan control? Boost control? Idle control? Pump control? H2O injection? etc.
Each of these things requires support in both firmware and hardware, assuming that you have the physical engine hardware required in the first place.

The Outputs

The main things that need to be considered are outputs and output style. For example, the following limitations apply to each listed system type:
  • MS1 - 2 Injector drives, 6 Ignition drives
  • MS2 - 4 Injector drives, 6 Ignition drives
  • MS3 - 8 Injector drives, 8 Ignition drives
  • FreeEMS - 6 General purpose drives, used as either injector OR ignition drives
To understand how these limitations apply see this excellent thread which explains what you can and can't do with FreeEMS at this time. Note, having only 6 output channels is a temporary restriction, but remember the two rules above (decide later, it could have changed, don't wait, it may take longer than you think). Support for more channels than you could ever hope to need is planned for early 2012 in release 0.4.0 of the firmware.

Some general (and obvious) considerations:
  • Distributor ignition and batch injection require only one output each
  • Odd cylinder counts (1,3,5, etc) can't be run in wasted spark or semi-sequential modes
  • COP and sequential require the same number of outputs each as you have of cylinders
  • Wasted spark and semi-sequential require the exactly half the number of outputs each as you have of cylinders
  • Staged injectors double your injector drive count requirement (assuming the same style of operation)
The Inputs

The system also has to be able to handle your inputs properly. The critical sensors are the RPM and position sensors whose style varies significantly with each requiring custom and specific support. Each system listed below supports a varying number of systems at this time, and some are expanding daily.
  • FreeEMS - A handful of key types supported, but, quite literally, infinite expansion possible due to a superior architecture. New types are added on demand within a short time frame, sometimes as short as a few minutes.
  • MS1 - A good selection of types is supported, however it's done in a rudimentary way. Expansion is NOT possible without removing existing modes.
  • MS2 - An excellent selection of types is supported, however not all are thoroughly tested or reliable. Expansion is NOT possible without removing existing modes.
  • MS3 - A super-set of MS2 types is supported, however not all are thoroughly tested and reliable. Expansion is possible, however only by the development team, who aren't overly responsive, usually.
Support for more than two position sensors is limited in most designs, as is cam angle measurement and control.

Temperature sensors are usually straight forward, and not to be worried about. Likewise for load sensors, most MAP, MAF and TPS are easily supported.

Accessories

If you have devices to control that aren't core engine control items then you'll need some way of handling those too. I'll run through each listed system with pros/cons in this regard.

MS1 - Common devices are supported, but implementations are usually crude, there aren't enough pins to run them all at the same time, there is no code space to add new stuff without removing other stuff anyway, and that would imply having the skill set required for assembly programming.

MS2 - A good selection of devices are supported, but implementations often carry regressions and faults that remain unfixed for, quite literally, years, there aren't enough pins to run them all at the same time, and the C code is really quite dirty and fragile and therefore difficult to modify without breaking it in the process.

MS3 - An excellent selection of devices are supported, the implementations, at the time of writing, are mostly exactly the same as MS2 and carry the same flaws and risks, but with an additional downside of not being able to fix them or customise them or add new features at all due to it being completely closed source. On the brighter side MS3 has sufficient pins to run almost everything at the same time, assuming the software is suitably flexible.

FreeEMS - Absolutely no accessory code exists at the time of writing (early December 2011) however it is straight forward to add such things as new user requirements pop up with new installs. Custom functionality not available in any of the MegaSquirt family of products can be added freely and custom hardware to cleanly (without masses of jumper wires and hacks) can be designed to support such functionality. This is not permitted with the MegaSquirt family of products.

FreeEMS

Aside from having no accessory code and limited injector/ignition outputs for the time being, there are some other differences to consider.

Speed-density basics-only implementation: This is only temporarily true, however for the time being there is very little in the way of basic normal run-of-the-mill features that you'd expect to find on almost any system. Things like rev limiters, transient enrichments, idle control, GP outputs, The reason is that such code only gets in the way while working on other aspects of the system and thus they are being left out until needed by an actual user who is installing or has installed FreeEMS on their vehicle.

Alpha development status: Due to the fresh clean-sheet implementation and limited testing all users of FreeEMS will need and want to be actively involved in the development community in terms of testing new code, new hardware and providing feedback and issue reports for developers to more efficiently improve the system. This is not for everyone. Testing new code that relates to your ignition timing and AFR really is dangerous and this will be done entirely at your own risk. The same can be said about MS2 and MS3 (MS1 is pretty mature and stable with known manageable weaknesses), with two key differences:
  • Transparent development process - publicly viewable and reportable issue tracker, publicly viewable source code repositories, and in general transparency and accountability not seen in the land of MegaSquirt what-so-ever.
  • Pool of testers - MegaSquirt clearly has many orders of magnitude more testers than FreeEMS at this time, however that is rapidly changing and with great effect on development speed and consistency.
  • Quality oriented approach - FreeEMS has always had a strong focus on quality. Testing and process at every level is generally excellent from source code to delivered binaries and all tools used to produce them and work with them. The goal is no regressions from one release to another.
I believe the above is a fair representation of the truth and I hope it helps you in deciding which direction to go in for your project, whatever that may be!

Time, Skills And Costs For FreeEMS

Posted: Mon Dec 05, 2011 5:44 pm
by Fred
Time, Skills And Costs For FreeEMS
  • Tools required
  • Skills required
  • Hardware required
  • Timeframe estimates
TODO

The Waiting Game

Posted: Mon Dec 05, 2011 6:19 pm
by Fred
The Waiting Game

Even though I put the "rules" in a larger font, I believe that this warrants its own section too.

Never wait to start your project.

Never ever wait for projects that will be "ready soon", FreeEMS included. You could be waiting years, or even grow old and die before you see the likes of UltraMegaSquirt, which is still described online as though it's a current project. In professional software development as a service for big corporates it is common practice to take a programmer's estimate and multiply it by a fudge factor to make it more realistic. It may or may not surprise you to find out that that factor isn't +10%, but more like +150%, or times 2.5. So something that the developer says will take one year could take three years or even more!

On the other hand, to ensure that you have the best possible product for any given project...

Always wait to make your decision.

Always wait till the last possible minute to make a final commitment to use a certain product as a lot can change between when you start investigating what to use and when you actually need to place an order and get on with making the project happen. Thus waiting until you're really truly ready to start the install before you make your decision is beneficial and allows you a maximal choice of the best range of options with the lowest possible price and best technology.

Ignore the advice in this post at your peril! :-)