Hey guys, a while back I installed and have been tuning a Speeduino DIY open source EFI system and wanted to share a few pics as a 'How to' for anyone interested in the system. It uses a readily available Arduino Mega2560 controller. The attraction to the system is the pricing point, with assembled boards for less then a couple hundred dollars and a genuine Arduino for roughly $50. Any auxiliaries, extras or misc for another $20-$40 making it a sub $300 EFI system. Or if you wanted to populate the board yourself with a component kit it's even less. Really it's a nice, simple, easy to use system that is heavily dependent on the end user knowing the in's & out's of EFI, sensors and tuning for good results. The community surrounding Speeduino is growing and the system is growing with every firmware release, which happens every 1-3months.



Speeduino has 4 injector output channels, and 4 ignition logic out channels. It can drive injectors directly from the board but ignition coils need an external control module/driver. With 4 channels it means it can fire 4 cylinder engines sequentially and 6 & 8 cylinder engines are waste spark & semi-batch fire.

Speeduino uses TunerStudioMS software, same as MegaSquirt. However since the firmwares are totally different between the two EFI systems (.ini file) Speeduino has it's own control tables and is not a "Cheap Megasquirt". But we do get VE analyze live ability which is really nice, more on that later.

The board has a built in 0-250kpa MAP sensor capable of reading up to 21psi of boost or can be programmed with any other external MAP of choice. You also are able to control and tune a Variable Valve Timing solenoid (on equiped engines). Electric cooling fan controls, Boost solenoid controls, Idle Air Control PWM or Stepper valve. If you hook up your clutch switch you get Launch Control/Anti-Lag and Flat Shifting. There are also tables to control staged injectors in case you need more fuel injectors per cylinder with your fuel injection.

Speeduino can be set up to run Speed Density (MAP vs RPM tables), Alpha-N (TPS vs RPM tables), You can choose to run VE on MAP axis and ignition on TPS axis or vice versa and there is even an IMAP/EMAP algorithm that reads Manifold Pressure and Exhaust Pressure to determine load (utilizing the engine is an Air Pump idea)

I installed the system on my OBD1 1995 BMW 540i with the 4.0L V8 and manual trans. But it's a versatile enough system that it can function on just about any engine design as long as the trigger pattern is accurate and sensor variables are known.



Seeing as how the system will fire the V8 on waste spark, I decided to change the coil on plug design over to two MSD waste spark coils, MSD DIS-4 ignition box and MSD ignition leads.





Grafting the system to the vehicles original engine harness:



I originally tried to fire the MSD box directly from the Speeduino board but the MSD didn't like the logic 5v trigger, so I installed a 4ch ignition driver known as the Bosch 211 between the Speeduino and MSD.



Once hardware is all set it's time to focus on software:

Load the lastest Speeduino firmware sketch to the Aurdino, the file is in the Speeduino.zip downloaded from the Speeduino wiki site.



Open tunerstudio software and create a new project file using the firmwire .ini file in the Speeduino.zip folder. Then load the base tune from the .zip folder. If you haven't registered TunerStudio you're dash will look something like:



At this point I'd highly encourage registering (paying for) the TunerStudioMS software to unlock some pretty cool tuning tools that wouldn't otherwise be available in the free version.

Now for setting up all of the engine information:





The registered TunerStudioMS will build a base VE MAP for you based on engine specs, because I live at altitude my 84kpa is atmosphere where as at sea level 100kpa is atmosphere.



Calibrate the engine sensors: TPS open & closed ADC count, Wideband O2 sensor output voltage, Intake air temp and coolant temp sensor values:






At this point the engine should fire up: This is now when I lock out the ignition timing values and compare what the actual ignition timing at the crank matches what the software thinks is happening:





If there is any descrepancy you'd go into the trigger settings in tunerstudio and change the offset angle until the ignition timing at the crank matches the software. I had to change my -60 offset to -59 to match.

Once the engine fires up, runs and idles then is up to operating temperature we can let VE Analyze Live (VEAL) start to do it's thing, VEAL will automatically make changes to the VE table in the name of matching your commanded AFR's values in the AFR table





Here's my first fire up video:



Thanks for checking out my build