Possible way to measure injector characteristics
I don't know if anyone has tried this yet, but I had an idea about how to
empirically determine, for a given car, the values of:
- parms[injectorSettleTimeIdx]
- parms[microSecondsPerGallonIdx]
(I've looked through the EcoModder forums a bit, but did not notice anything
regarding it. I apologize if this is old hat.)
A fixed 500usec is currently coded for injectorSettleTime. This variable
is used to compensate for the time difference between;
- the electrical pulse length applied to an injector
- the length of time that the injector effectively squirts fuel.
A more accurate value for injectorSettleTime and microsecondsPerGallon
promises to improve MPGuino tank-to-tank accuracy, as a driver's ratio
of city:highway driving varies.
I haven't tried this yet so I don't even know how well it might work.
If anyone has time, I would ask for your feedback regarding this proposed method:
Step1: Modify the void "doDisplayCustom" as follows, in order to read out the
number of injector pulses.
void doDisplayCustom(){displayTripCombo('N','P',injPuls es*1000
,'S',instantmph(),'G','H',instantgph(),'C',current .mpg());}
(Does the above code look like it would work?)
Next enter best guesses for injectorSettleTime and microSecondsPerGallon.
Then take two very different "trips":
Trip 1) Idle the car for 90 minutes. (short average injector pulse lengths,
might want to bring some reading material for this trip)
Trip 2) Drive the car at max legal speed on the highway for about 40
minutes (long average injector pulse lengths)
(NOTE: Start and end each trip at the same gas station, one located just
off of the highway.)
Before each "trip":
1) top off the car with gas
2) perform an MPGuino "tank reset"
After each "trip":
1) record the total number of injector pulses (injPulses)
2) record the "tank gallons" (from "tank gallons" you can derive the
MPGuino injector "on time".)
3) top off the tank with gas and record the actual gas consumed.
4) perform an MPGuino "tank reset"
Armed with this trip information, the following two equations could be solved
for their two unknowns.
Ton1 + (ISTgi - ISTsf) * Npulse1 = uSPGsf * Gal1 [from trip 1]
Ton2 + (ISTgi - ISTsf) * Npulse2 = uSPGsf * Gal2 [from trip 2]
Where...
TonX = Total injector "on time" for each trip
(equals MPGuino "Tank Gallons" / initially guessed
microSecondsPerGallon)
ISTgi = InjectorSettleTime value guessed initially
NpulseX = Total number of injector pulses (as read from MPGuino after
each trip)
GalX = Total actual fuel consumed for each trip (from fuel gas station
receipt)
uSPGsf = microSecondsPerGallon variable to be solved for
ISTsf = InjectorSettleTime variable to be solved for
One could possibly collect this same data for each subsequent tank of gas
and perform a least squares fit to gain the best values.
Let me know what you think...
(I would like to try this but am still awaiting my MPGuino kit from Fundamental
Logic. I also have not yet attempted to use the Arduino software
development environment, to make sure that I can reprogram the
ATmega168.)
- Singletree5990
|