Transient Throttle Response Delay

    One of the first little quirks I noticed right off the bat with this EFI system was a delay when the throttle was moved quickly off of the idle stop.  With the original carburetor setup the off idle throttle response was much better.  It is very annoying when down shifting giving the throttle a quick jab to help synchronize the shift and the motor just sits there and does nothing !  Sometimes it even lean backfires which can never be a good thing.  I've lived with this for long enough.

    Now that I've got the In Car Programing completed it is easy to setup special code sets to log data.  The normal serial interface protocol is just too slow to get real-time data out of the ECM.  Each byte takes about 1ms to transmit.  With all the preamble and handshaking there isn't enough time between ignition events.  To this end I setup a special code set that transmitted the key information needed to see what was actually happening.  The data I felt I needed was TPS ADC, MAP ADC, PW, MAP triggered transient PW and Timing period.  Because of the nature of the PW data word I was able to embed when the number one ignition event occurred.  This took a total of 8 bytes and 8 ms.  I can get real time data up to 1875 RPM where there isn't enough time to get the serial packet out before the next ignition trigger occurred.  What I did there was just skip it till the next trigger came along.  So you have to watch out above this RPM in the graphs because the time frame reference goes bad.  The  complete data files can be found on the High Speed Data page.

    The below graph shows what I believe the problem is.  Basically it boils down to being that the injectors are spraying in the future by the time motor gets enough fuel to start accelerating about eight complete strokes have occurred.  At idle speed this is more than 100ms.  Now 100ms may not seem like a long time but when you consider this motor accelerates from 1000 to 3000 rpm in 200-250ms a third of the time nothing is happening.  Also note that the throttle is almost closed before the motor even starts to accelerate ! Take a look at the plot and it should be a little easier to visualize.

    The scale on this plot is a little exaggerated.  The RPM is correct.  PW - 1000 equals 10ms.  TPS - 400 equals ADC 40.   MAP - 1400 equals ADC 140.  Each tic marker is an ignition trigger event. The alternating tic marks on the PW trace (FUEL) is when a normal injector pair gets fired.  The tic marks on the MAP trigger transient (TRAN) trace are when the alternate injector pairs fire. The numbers below the tics (like 8-7,2) mean 8=TDC #8   7,2=firing injector pairs for cylinder 7 and 2.  You can see when the throttle starts to move we happen to be on a non firing cylinder (doesn't help much if we happen to be on a firing event though).  If we trigger an alternate spray here we could get a head start on what needs to happen.  The next ignition event, 8-7,2 , will spray a bit more fuel than what is required for idle but we are still 5 to 6 strokes away from getting it into a cylinder and firing it off.  Also it will be way too lean.  Note that the MAP delta has also triggered a transient spray on this cylinder putting some extra fuel through the 6,5  injector pairs.  A little over a millisecond won't do us much good.  Two more strokes go by till we get to number 3-1,8 firing.  Finally getting enough fuel PW to make a difference.  You can see that it is cylinder #1 that finally starts to accelerate the motor.  A MAP triggered spray also adds some extra fuel to the 7,2 cylinder but still not enough to accelerate the motor.
    Something else that is wrong here is that the 5-4,3 event should have triggered a transient spray.  The reason it didn't is another bug in the code.  The MAP delta is supposed to be computed from what happened 720 crank degrees in the past when the last time that paired fired but in fact is compared to the last cylinder.  This has the effect of both not triggering the transient spray but also reducing the magnitude of it.  Both items we need more of to get quick response from the motor.

    The below table shows when a ignition trigger occurs what cylinders are getting fuel and where in their cycle the spraying is occurring.  Now this table is only good up to about 1550 rpm or so.  That is the first injector phasing breakpoint.  At that point they all get shifted 90 degrees advanced.  The table is a little busy but it is the only I could figure to visualize what all the other cylinders where doing at any point in time.
 
Crank Degrees
Cylinder 0 90 180 270 360 450 540 630 720
1 TDC - Fire Power BDC Exhaust TDC Intake BDC Comp TDC - Fire
8 Comp TDC - Fire Power BDC Exhaust TDC Intake BDC Comp
4 BDC Comp TDC - Fire Power BDC Exhaust TDC Intake BDC
3 Intake BDC Comp TDC - Fire Power BDC Exhaust TDC Intake
6 TDC Intake BDC Comp TDC - Fire Power BDC Exhaust TDC
5 Exhaust TDC Intake BDC Comp TDC - Fire Power BDC Exhaust
7 BDC Exhaust TDC Intake BDC Comp TDC - Fire Power BDC
2 Power BDC Exhaust TDC Intake BDC Comp TDC - Fire Power
1 TDC - Fire Power BDC Exhaust TDC Intake BDC Comp TDC - Fire
8 Comp TDC - Fire Power BDC Exhaust TDC Intake BDC Comp
4 BDC Comp TDC - Fire Power BDC Exhaust TDC Intake BDC
3 Intake BDC Comp TDC - Fire Power BDC Exhaust TDC Intake
6 TDC Intake BDC Comp TDC - Fire Power BDC Exhaust TDC
5 Exhaust TDC Intake BDC Comp TDC - Fire Power BDC Exhaust
7 BDC Exhaust TDC Intake BDC Comp TDC - Fire Power BDC
2 Power BDC Exhaust TDC Intake BDC Comp TDC - Fire Power

    If the Delta MAP is over a certain threshold since the last time a pair of injectors was fired (supposed to be 720 degrees in the past but is broken in the code) and we are currently on a spraying cylinder, the code will spray extra fuel early on an open Intake and an Intake that is just about to open.  This is to help transient response by getting fuel into the motor sooner.  Take for example if we are currently TDC #8 we would be spraying fuel for cylinders #7 and #2 (the Light Blue cells above).  It will take the crank 540 degrees before it sees that fuel.  If a MAP induced transient is trigger it will also spray in the intakes of cylinder #6 and #5 (the White cells).  The early fuel will be seen in 270 crank degrees.  We can't get it in there any faster (unless we go to directly spraying into the cylinder like a diesel) than spraying on an open intake valve.
    One short coming with this scheme is that they only spray the MAP triggered transient fuel a maximum of every other ignition event.  Filling in the odd cylinders should help some (the Red cells at 360 degrees advance).  Also triggering this transient response off of TPS movement hopefully will get the motor responding quicker to off idle throttle jabs.

    This below table show the problem why Delta MAP is not being computed correctly.  L0044 is the cylinder index.  L004b is the index into the MAP history stash (at L002b) for a potential transient injector firing.  And L0045 is the injector index of the cylinder currently spraying.  The Yellow rows are the proposed transient firings to fill in the gaps between the alternating sprays.  You cans see if we happen to be spraying 7,2 will store the averaged MAP value for that pair the next test will be against the 7,2 MAP stash.  Not much history stored here.  Could have done it with a one byte solution rather than the lists and indexes if they wanted to actually do it that way.

 
  Cylinder    Normal 
Inj Pair
  Transient 
Inj Pair
  L0044    L004b    L0045  Test/Store
2 6,5   7   4 / 2 Store (L941A:)
1   6,5 0 2 4 Test (L923w:)
8 7,2 6,5 1 2 $0C Test
8 7,2   1 2 6 / 3 Store
4   7,2 2 3 6 Test
3 1,8 7,2 3 3 $0C Test
3 1,8   3   0 / 0 Store
6   1,8 4 0 0 Test
5 4,3 1,8 5 0 $0C Test
5 4,3   5   2 / 1 Store
7   4,3 6 1 2 Test
2 6,5 4,3 7 1 $0C Test
2 6,5   7   4 / 2 Store

05/11/00 -
    Beginning to wonder if it is worth all the trouble to try and increase the response.  Run more experiments (wjabs5 - 04/30/00) where I double the MAP induced transient, allowed it to be fired on every ignition event, and also trigger it if the TPS was moved.  Hardly was able to improve it much.  In fact almost got too much fuel and started to stumble rich.  Think now a better tact might be to put the MAP triggered transient back to every other ignition trigger and to bump amount of fuel added to the normal PW as the TPS is moved.  Probably increase its sensitivity also.  As long as I can keep away from lean back fires the current throttle response is livable.  Actually better than what I originally started with because of all of the other improvements made to the code.  Also getting into the Rod Run season so experimenting is getting harder to find time to do.