there are a few factors influencing any MPG display, limiting its accuracy:
- The cold start valve is not ECM controlled, hence fuel injected by the CSV is not accounted for. This can make a difference for the cold times of the year, and is more relevant for short range driving.
- You only accumulate pulse width time, not taking into account fuel pressure variations
- The pulses are accumulated without taking into account injector opening and closing lag, possibly sticking, etc.
- For ALDL based displays like DashScan there is an additional point: the ECM has an internal 16 bit accumulator for pulse time, but only outputs the lower 8 bits, so the software has to reconstruct the 16 bits from the 8 bits, assuming the counter only counts up. However, in certain situations the ECM just resets the counter to zero. The mileage coprocessor tries to detect that, e.g if there is an illogical "jump" in fuel counts. But if the "jump" is within range, it is accepted and can cause an error which may accumulate. It all depends on when and how often that reset to zero happens.
Remember, GM had added the mileage output for the "rally gauges", which was supposed to be part of the rally gauges above the center console. But I don't think they'd have had a digital MPG display, or at least no accumulated fuel for that matter, otherwise they would have transmitted the full 16 bits (which they could have easily done by changing one byte in the ECM software). For current MPG it has very little effect (although sometimes there may be a noticeable jump in MPG caused by this effect).
It was probably either a cost issue or technical problems that caused them to install the rally gauges as we know them into the Fiero. I have a preliminary service manual with the planned schematics, but unfortunately no picture. The schematics were dropped for the final version of the manual.
Having said that, the mileage display on my car has an error of 1-2 liters (1/4 to 1/2 gallon) after use of 30-32 liters, so my error is about 5%. The mileage coprocessor can be calibrated, BTW - Marvin, email me for the procedure if you're interested. Basically you set a jumper after filling up the tank before a long drive and the unit will count "raw" fuel pulses. After having consumed as much fuel as possible, refuel and note the amount of fuel and the pulses counted. The more fuel is consumed, the more accurate the calibration value is. By going on one (continuous) long trip the cold start valve is taken out of the equation (see above). You also need to fill the tank exactly the same during this measurement, so it's best to refuel at the same gas pump (if possible). Or repeat the test and average the measurements. Of course it would be best to have a real reference measurement showing how much fuel the car *really* consumed, but that's really difficult to do. Everything else is guessing.
But the current consumption displayed on today's cars is equally inaccurate - nobody cares, it's the tendency that counts. And remaining range is usually calculated from the fuel remaining in the tank, not accumulated fuel pulses. I had just implemented this feature because there were requests to do so at the time I built DashScan. I think you can also disable this display and only keep current MPG displayed.
As for the other glitches: I'd like to know what they are. Some of them may have been fixed in a later software revision. Which rev. do you have? I'd appreciate a P.M., I have used my DS for years now (obviously), and I know of only one - early versions of the display board did not have a power on reset controller yet, which may lead to a failure of the display to reset properly with a heat soaked dash (temperatures well above 100F in the car). The main board has a reset controller, so it continues to operate normally, there's just no display. After turning the ignition off and on, everything is back to normal. The later version had a reset controller, which has resolved the issue (to my knowledge... I've never had the problem since).
@Mike:
DashScan pretty much works the same as your MPG calculator, only the VSS pulses are in the ALDL data stream, so is the injector pulse time. You will not have the 8-bit/16-bit issue with your solution, but the error introduced by that is really very small. The other limitations (cold start valve, injector lag, etc.) will be there with any solution, but for a current MPG display they have very little impact. Basically the consumption fluctuates all the time, and every display is a compromise between a steady, smooth display and the actual current value. The current value changes each time the injectors fire, so obviously smoothing is necessary. I update my display (I think) about once per second. Any faster makes the display distracting, slower than 2 seconds introduces unwanted lag, because you always display the average MPG display of the *past*, never really the "current" display. And with 2 seconds, "past" and "current" are too far apart, with one second, they feel the same. (It's difficult to explain, but when I experimented with display times, it made a difference).
Best regards,
Oliver
[This message has been edited by fieroluke (edited 02-05-2009).]