Fuelino calibration and data visualization

In order to communicate with Fuelino fuel injection module in a simple way, I created a software tool using Visual Studio. The tool can be downloaded here, together with the Open Source code (C#): fuelino_tool_beta1_20161108.

The tool, which is compatible with Windows (I use Windows 10), communicates with Fuelino module using Serial communication (through USB port). At first, it is necessary to choose the COM communication port (I used COM4 for this example), and click on "Connect".


If the COM port can be found, "Connected successfully" message will appear. The tool can be used to read the calibration maps data. A single calibration value can be read using the "Read" button. In case "Read All" button is pressed, the tool reads all indexes of all maps stored into Fuelino's RAM memory. At the moment, there are 3 calibration maps implemented into Fuelino's software.

  1. Injection time increment (%) depending on engine rotation speed (RPM). 8 breakpoints.
  2. Injection time increment (%) depending on throttle position sensor voltage (V). 16 breakpoints.
  3. Injection time increment (%) depending on input injection time (us); this map is not used at the moment.


The following screen happens after clicking on "Read All". In the example below, it is shown that, Map 0 Index 0 value is set to 128, which corresponds to a 25% increase of fuel injection time, at a breakpoint of 12000 rpm.


In order to calibrate the injection time increment value (%), of a specific index of a map, it is necessary to fill the "Increment (%)" field, and click on "Write RAM". Doing this, the tool calculates the raw value, and writes into Fuelino RAM memory. This is good for real time testing, in case you want to change an injection time percentage "in real time". However, in order to store the calibration maps values also after reset, it is necessary to click on "Write EE". Doing so, the calibration maps are stored into Arduino's EEPROM memory permantly. In case you want to restore the standard values (map 0 elements set to 128, map 1 and 2 elements set to 0), you can click on "Write Std"; in this case, standard values are written into EEPROM.

In addition to the calibration feature explained above, it is also possible to read measurement and control data in real time, by clicking on "Start Polling". In this case, data is continuously polled once every 500ms. This allows you to see, in real time, the following measurements:

  • Time [ms]. Time expired since Power On.
  • Injection counter. How many injections have been done since Power On.
  • Delta time [us]. Time between 2 consecutive injections.
  • Engine Speed [rpm]. Calculated from the time between 2 consecutive injections (2 engine rotations).
  • Injection Time IN [us]. Injection time output by the Original ECU.
  • Throttle [V]. Throttle position sensor voltage.
  • Lambda [V]. Lambda sensor voltage (Fuelino Proto2 HW and after).
  • Injection Time Extension [us]. Additional time that the injector is turned ON.
  • Interrupt execution times [us]. This is only for SW debugging purposes.


The tool has been created according to the communication protocol (service commands protocol) explained in the document: fuelino_service_commands_v1-1_20161027. In the future, I am planning to implement some additional features into this tool, for example to be able to read the data logged into the SD card. In addition to that, since Fuelino Proto2 supports the connection to external modules (accelerometer and gyroscope, GPS, Bluetooth, Display), the tool will be able to send to the PC data acquired from these modules.

Author: Davide Cavaliere

I am an Italian Electrical Engineer graduated at Politecnico di Milano. My interests are motorcycles and cars, electronics, programming, Internet of Things, and Japanese culture.

Leave a Reply

Your email address will not be published. Required fields are marked *