It has been a while since I updated Fuelino SW the last time. Unfortunately, due to work and family, I have less time to invest on Fuelino than in the past, and this is the reason why I cannot reply to all the e-mails which I received from you. I am very sorry. Now, coming back to the reason why I am writing this post. I implemented some modification to the Arduino software which manages the fuel injection of Fuelino. These modifications allow to log all injections information.
In contrast to the actual version of Fuelino software, which logs injection time, lambda, throttle and other signals only for some injections (the ones performed just before SD memory writing), this new software keeps the information of all injections in a buffer, which is then written on the SD card when the card is not busy. Implementing a bufferized solution was necessary, to achieve writing and reading of data at different timings.
Basically, what the new software does is:
- As soon as there is a new injection, all info are kept in a temporary buffer: SOI (start of injection) and EOI (end of injection) timings, throttle percentage, and lambda sensor voltage.
- When SD card writing routine is called, it writes to the micro SD card the data previously stored on the buffer.
The above logic is implemented partially on SDmgr.cpp and partially in INJmgr.cpp. This new software is still "beta" and under testing to get better confidence, and is available here, for everyone who want to have a look: fuelino_software_20180707.zip.
I briefly show below which info can be stored, for all fuel injections.
The Excel file above shows the info stored on the SD card in binary format, and then exported to ASCII (CSV format). Each line represents a fuel injection event. For each fuel injection, Fuelino stores on SD card:
- SD card writing time, for debugging purpose
- Injection number count (progressive value)
- Injection SOI [us], Start of Injection
- Injection EOI [us] of Fuelino input (ECU output), End of Injection
- Injection EOI [us] of Fuelino output (fuel injector), End of Injection
- Throttle raw data (0=0V, 1023 = 5V) and also the value converted into %, at the time of SOI
- Lambda sensor voltage, at the time of SOI
- Other info are calculated based on the previous ones: engine speed [rpm], injection time increment [%] between Fuelino input and output, delta time between injections (used to estimate engine speed)
In the next steps, I am going to use this information to determine the mathematical model which links the above mentioned variables. In particular, my target is to determine the dependency between injection time and throttle percentage, as inputs, and the lambda value, as output. Knowing this dependency will help to improve Fuelino injection time extension calibration. In case the dependency between injection time and lambda will be mathematically clear in all conditions (throttle, rpm, etc...), it will be possible to regulate the "extension" calibration maps in order to achieve a lambda which is as much as possible close to stoichiometric ratio (or eventually slighly rich, to achieve maximum performances), thus reaching optimized engine performances.
For these next steps, I am going to use the recent experience which I got attending courses on Deep Learning and Machine Learning on Coursera. Stay tuned.