In this post, you can find the downloadable version of the software to be flashed in the ECU.
After creating the ECU electronic circuit for adjusting your motorcycle Fuel Injection timings, it is necessary to upload the software inside the Arduino Micro.
The software which I created is composed by 2 parts:
- "Tempo" library. It is composed by two C++ files (tempo.h and tempo.cpp). This library is necessary to manage the Timer1 timer of the ATmega32U4 microcontroller inside the Arduino Micro. The library that I created is a modified version of the TimerOne library; I removed the unnecessary functions and adapted the remaining one to this application. My "Tempo" library (Version 1) can be downloaded here: tempo_library_v1. In order to use this library, you have to extract the ZIP file and put the content ("Tempo") folder inside your "Arduino" folder in your PC. In my case, the "Arduino" folder is inside the "Documents" folder in the C: drive.
- Arduino sketch (filename: "efi_davide.ino"). This is the application core. The file can be downloaded here: efi_davide_20160131_v1. You should first create a folder called "efi_davide" in you "Arduino" folder, and put inside it the file "edi_davide.ini" which you get when you extract the ZIP file.
After copying the files in the Arduino directory, open the "efi_davide.ino" file with Arduino IDE (the version installed on my PC is 1.6.5).
Before uploading the file, you can modify the injection correction percentage array (variable "incrementi_rpm_std"), which contains, for each index related to the engine rotation speed, the percentage of increment for the injection timing. The array has 16 components, and manages engine rotation speeds from 0rpm to 15999rpm (index 0 corresponds to 0-999 rpm range, 1 corresponds to 1000-1999 rpm range, and so on...). For example, if the engine is rotating at 3500 rpm, and the Honda Original ECU injection time is 5000 us, in case index 3 is set to 20, the new ECU will open the injector for a total time of 6000 us (5000 us +20%). At the first run, these values are saved in the EEPROM memory, and can be changed later using the Serial Communication, without the need of flashing a new software each time that you want to try a new parameter configuration.
I will give soon give additional details on the software in the next article.