Minimum IPW
Thread Starter
Joined: Feb 2007
Posts: 9,486
Likes: 67
From: Melbourne, Australia
of course...
but if the manufacturer cant guarantee if the injector will open under 1ms, then there isn't much point in targeting less than 1ms...
this is NOT a case where "less is more" - no fuel = no go :P hehe
but if the manufacturer cant guarantee if the injector will open under 1ms, then there isn't much point in targeting less than 1ms...
this is NOT a case where "less is more" - no fuel = no go :P hehe
Not being guaranteed to be linear is of course different to not actually opening at all at small pulse widths.
Mitsubishi only guarantee their engine for 300 HP, but that hardly stops you
ID are the ones to try for small engines/big injector combos, look for Tony's Honda idling on massive injectors at small pulse widths, think it is 1.6 or 1.8 liter.
Mitsubishi only guarantee their engine for 300 HP, but that hardly stops you

ID are the ones to try for small engines/big injector combos, look for Tony's Honda idling on massive injectors at small pulse widths, think it is 1.6 or 1.8 liter.
Thread Starter
Joined: Feb 2007
Posts: 9,486
Likes: 67
From: Melbourne, Australia
ok so on an EvoX GSR I dropped the 1.28 to 1.024ms (the next drop down)
and idle became erratic
P0300 popped up
and STFT went from -20% to +10%
I believe injectors either weren't firing properly, or the ECU was somehow dropping sub 1.28ms IPW requests???
and idle became erratic
P0300 popped up
and STFT went from -20% to +10%
I believe injectors either weren't firing properly, or the ECU was somehow dropping sub 1.28ms IPW requests???
Tephra, just looking at your fuel trims, it looks like maybe you had tuned the dead time and injector scaling around this minimum and now that you removed the minimum, you are getting too much fuel?
Last edited by 03whitegsr; Aug 17, 2010 at 01:54 PM.
Thread Starter
Joined: Feb 2007
Posts: 9,486
Likes: 67
From: Melbourne, Australia
So I have recoded the ECU to allow for finer MINIMUM IPW control.
Previously the ECU was just multiplying the value by 32 and then by 8
so for 1.28ms the raw value is 5:
5*32*8 = 1280 (1.28ms)
Increasing or decreasing that raw value resulted in big jumps in minimum IPW:
ie
4: 4*32*8 = 1.024ms
6: 6*32*8 = 1.536ms
I've replaced the 32* with 2* and now have 0.016ms level control
WOOT
ps - ID said that 1ms was too low, 1.1ms would be ok - hence me need to recode this configuration option.
Previously the ECU was just multiplying the value by 32 and then by 8
so for 1.28ms the raw value is 5:
5*32*8 = 1280 (1.28ms)
Increasing or decreasing that raw value resulted in big jumps in minimum IPW:
ie
4: 4*32*8 = 1.024ms
6: 6*32*8 = 1.536ms
I've replaced the 32* with 2* and now have 0.016ms level control
WOOT

ps - ID said that 1ms was too low, 1.1ms would be ok - hence me need to recode this configuration option.
Last edited by tephra; Aug 17, 2010 at 09:45 PM.
Looking through the main IPW sub at the point where latency is added to the IPW, there looks to be an additional adder at low pulse widths. The adder is based on the IPW without latency when it is below 0x104 (260 = 2.08ms)
IPW (no latency)/4 is used as a lookup for a table at 37C7 which is then divided by 2 and added to the IPW (no latency). The latency is then added after this is done. When IPW (no latency) is above 2.08ms it skips this adder.
The net effect is the minimum IPW (no latency) can not be any less then ~0.208ms.
Here is the table and scaling for 96530006.
Here is the net effect. The lower axis is the desired IPW before latency. Blue line is actual IPW and red line is the table above as the amount of IPW added based on desired IPW.
IPW (no latency)/4 is used as a lookup for a table at 37C7 which is then divided by 2 and added to the IPW (no latency). The latency is then added after this is done. When IPW (no latency) is above 2.08ms it skips this adder.
The net effect is the minimum IPW (no latency) can not be any less then ~0.208ms.
Here is the table and scaling for 96530006.
Code:
<scaling name="IPWAdder_2" units="Minimum IPW [ms]" toexpr="x*0.004" frexpr="x/0.004" format="%.3f" min="0" max="1.2" inc="0.004" storagetype="uint8"/>
<scaling name="IPW16" units="ms" toexpr="x*2*8/1000" frexpr="x*1000/8/2" format="%.3f" min="0" max="65" inc="1" storagetype="uint16" endian="big"/>
<table name="IPW Minimum - Engine Speed Minimum" address="1504" category="IPW Main Sub" type="1D" level="1" scaling="RPMStatLimit"/>
<table name="IPW Minimum" address="1502" category="IPW Main Sub" type="1D" level="1" scaling="IPW16"/>
<table name="IPW - Low Pulse Width Correction" address="37C7" category="IPW Main Sub" type="2D" level="1" scaling="IPWAdder_2">
<table name="Base Injector Pulse Width (no latency)" type="Static X Axis" elements="66">
<data>0 ms</data>
<data>0.032 ms</data>
<data>0.064 ms</data>
<data>0.096 ms</data>
<data>0.128 ms</data>
<data>0.160 ms</data>
<data>0.192 ms</data>
<data>0.224 ms</data>
<data>0.256 ms</data>
<data>0.288 ms</data>
<data>0.320 ms</data>
<data>0.352 ms</data>
<data>0.384 ms</data>
<data>0.416 ms</data>
<data>0.448 ms</data>
<data>0.480 ms</data>
<data>0.512 ms</data>
<data>0.544 ms</data>
<data>0.576 ms</data>
<data>0.608 ms</data>
<data>0.640 ms</data>
<data>0.672 ms</data>
<data>0.704 ms</data>
<data>0.736 ms</data>
<data>0.768 ms</data>
<data>0.800 ms</data>
<data>0.832 ms</data>
<data>0.864 ms</data>
<data>0.896 ms</data>
<data>0.928 ms</data>
<data>0.960 ms</data>
<data>0.992 ms</data>
<data>1.024 ms</data>
<data>1.056 ms</data>
<data>1.088 ms</data>
<data>1.120 ms</data>
<data>1.152 ms</data>
<data>1.184 ms</data>
<data>1.216 ms</data>
<data>1.248 ms</data>
<data>1.280 ms</data>
<data>1.312 ms</data>
<data>1.344 ms</data>
<data>1.376 ms</data>
<data>1.408 ms</data>
<data>1.440 ms</data>
<data>1.472 ms</data>
<data>1.504 ms</data>
<data>1.536 ms</data>
<data>1.568 ms</data>
<data>1.600 ms</data>
<data>1.632 ms</data>
<data>1.664 ms</data>
<data>1.696 ms</data>
<data>1.728 ms</data>
<data>1.760 ms</data>
<data>1.792 ms</data>
<data>1.824 ms</data>
<data>1.856 ms</data>
<data>1.888 ms</data>
<data>1.920 ms</data>
<data>1.952 ms</data>
<data>1.984 ms</data>
<data>2.016 ms</data>
<data>2.048 ms</data>
<data>2.080 ms</data>
</table>
</table>
Last edited by 03whitegsr; Aug 18, 2010 at 05:47 AM.
Thread Starter
Joined: Feb 2007
Posts: 9,486
Likes: 67
From: Melbourne, Australia
Yes the same thing exists in EvoX code - however I don't believe its causing any problems - since we are still being lower bound limited by 1.28ms
either way I have sent the 1.088ms minimum test ROM to the guy to see if it idles better
either way I have sent the 1.088ms minimum test ROM to the guy to see if it idles better




