This guide explains how to use Fuelino Log File Converter to convert the binary data logged by Fuelino, into easily understandable CSV files, which can then be post-processed using Excel or Mathworks Matlab or similar tools.
The first step is to download the latest version of the Log File Converter from the Fuelino Project page. In case the executable ("exe") file is not already present in the Debug folder, you need to create it. You can compile the project source code files by using Microsoft Visual Studio 2015, and clicking on "Build -> Rebuild Solution".
After performing this step, you need to go in the "Debug" folder and create a sub-folder called "Files", and copy the binary log-files which have been created by Fuelino. The file names should be in the format "flnxxxxx.log" ("xxxxx" is a number between 00000 and 65535).
Then, launch the executable file ("Fuelino_log_file_converter.exe") and the following black window will appear. The window will show you how many data packets are found in the log-file, and how many of them are corrupted. The corruption check is done by evaluating the checksum value of each packet. In case of GPS data packets, some messages might be corrupted due to the fact that Serial communication between Arduino and GPS is emulated by using interrupts (SWseriale). When these interrupts are executed in delay, the bits are not properly sampled, and therefore the data becomes corrupted. And also, Arduino works at 5V, while Ublox Neo 6M works at 3.3V: due to noise, it is possible that the sampled value is corrupted. However, the error ratio is about 2% only, therefore it might be considered acceptable.
After the conversion has finished, CSV files should be present inside the folder "Files". The most important files are the one ending with "int" (interpolation) and "lam" (lambda sensor signal screenshots).
"int" files contain the interpolated signals, at a sampling rate of 100 ms (0.1 second). This file can be used, for example, to overlay info on a GoPro camera video, using RaceRender 3, or to plot the GPS coordinates using Google Fusion Tables.
You can use the "int" CSV file, for example, to plot the signals using Excel. In the example below, I plotted the "pitch" angle, in degrees, and the engine speed (rpm). As you can notice, when the motorcycle was idling, and I was stopped at the semaphore, the sensor pitch angle was about -17 degrees. When accelerating, the motorcycle is leaning back, therefore the angle increases. And when braking, the motorcycle leans forward, therefore the pitch angle decreases.
The second important file is the "lam" file. This file is very useful when performing the calibration of the fuel injection maps. Basically, Fuelino has an interesting function which I call "lambda sensor screenshot": in a specific condition (such as engine steady state condition), Arduino can take a snapshot of:
- Lambda sensor signal (32 samples) at a sampling time of multiple than about 1.2ms.
- Injection count number
- Engine speed [rpm]
- Injection time before snapshot [us]
- Injection time after snapshot [us]
- Throttle position sensor raw value [0-1023, 1023 = 5V]
The snapshot total time (column "Acquisition time [ms]") is calculated depending on the engine speed, with the target of being able to take a snapshot at least longer than then 4-strokes engine cycle time. This is the time, in microseconds, between the first and the last sample (in case of 32 samples, it corresponds to 31 times the sampling time).
By post-processing the lambda sensor signal snapshots, it is possible to understand if the engine is working in lean or rich fuel-air mixture conditions, and then optimize the fuel injection time in order to obtain the best air-fuel ratio.
By acquiring data, I noticed that the lambda sensor voltage is higher that 1 Volt before the lambda sensor heats up. After the sensor heats up, the voltage should be between 0.4V and 0.6V, in case of stoichiometric ratio mixture. In case the value is higher, it means that there is too much fuel (gasoline) in the mixture, therefore it is necessary to reduce the fuel injection time. On opposite, if the voltage is too low, too much air is present and therefore it is necessary to increase the injection time.