Injector Scaling Formula
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Its a bit of a head scratcher I will admit.
I know that eval is true for evo6 and evo7, plus most if not all earlier ecus.
Did they change it for the evo9, I do not know.
But I have found that using that 34140/x eval does seem to give the correct size (with 2.7bar) on most non-stock injectors, which helps a lot in dialing in new injectors.
I know that eval is true for evo6 and evo7, plus most if not all earlier ecus.
Did they change it for the evo9, I do not know.
But I have found that using that 34140/x eval does seem to give the correct size (with 2.7bar) on most non-stock injectors, which helps a lot in dialing in new injectors.
No, I am not saying Mitsu scale injectors from a 2.7 bar base.
What I have noticed, from FIC injector data sheets, is that the injector latency (for an evo) is close to what they now publish for 2.7 bar usage.
The flow rates seem to be close to what they publish for 3bar operation, when viewed with 34140/x eval.
Sorry for misleading you there.
What I have noticed, from FIC injector data sheets, is that the injector latency (for an evo) is close to what they now publish for 2.7 bar usage.
The flow rates seem to be close to what they publish for 3bar operation, when viewed with 34140/x eval.
Sorry for misleading you there.
This scaling likely has to with the counter frequency that controls the injectors, right?
It's based on time, but ultimately ecu time is clock dependent. With the rpm signal being based on 7,500,000 it seems like injector flow/sec would be based on that same counter (or a division of it).
Maybe just look at what counter is controlling the injector outputs and look at the control registers to figure out the clock divider setup?
It's based on time, but ultimately ecu time is clock dependent. With the rpm signal being based on 7,500,000 it seems like injector flow/sec would be based on that same counter (or a division of it).
Maybe just look at what counter is controlling the injector outputs and look at the control registers to figure out the clock divider setup?
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
This scaling likely has to with the counter frequency that controls the injectors, right?
It's based on time, but ultimately ecu time is clock dependent. With the rpm signal being based on 7,500,000 it seems like injector flow/sec would be based on that same counter (or a division of it).
Maybe just look at what counter is controlling the injector outputs and look at the control registers to figure out the clock divider setup?
It's based on time, but ultimately ecu time is clock dependent. With the rpm signal being based on 7,500,000 it seems like injector flow/sec would be based on that same counter (or a division of it).
Maybe just look at what counter is controlling the injector outputs and look at the control registers to figure out the clock divider setup?
For sure, I've tried to understand what's going on at the first part in the CAS interrupt that eventually leads to the main IPW routine and never really got any where with it. I feel like I know what it's doing I just can't follow the code well enough to match it up to what I feel like had to happen in that section of code.
It's been a long time since I looked at this stuff. If I recall correctly though, the IPW routine ends up basically loading some values into counters and starting those counters. Those counters have their own interrupts that end up driving the I/O ports. The CAS interrupt doesn't really drive any of the I/O ports though. It's basically a time keeper for keeping track of the current engine cycle then calculates fuel and timing counter values based on cycle airflow and the primary correction values calculated in the main loop.
Anyway, seems like relating it to those counters is the way to figure this out.
I will say, I charted out the values in the injector scaling thread and used all the different values presented in here. I learned 2 things.
1. 31050 provides the best fit to the empirical data.
2. The empirical data is all over the place and is probably not real trust worthy in the first place. There needs to be A LOT more data points and on standardized intakes/MAF calibration/fuel for it to be meaningful. It's pretty clear by the variance that people are using random combinations of injector scaling, latency, MAF scaling, and fuel map changes to adjust for simple injector changes. I have no doubt, that shouldn't be needed...
It's been a long time since I looked at this stuff. If I recall correctly though, the IPW routine ends up basically loading some values into counters and starting those counters. Those counters have their own interrupts that end up driving the I/O ports. The CAS interrupt doesn't really drive any of the I/O ports though. It's basically a time keeper for keeping track of the current engine cycle then calculates fuel and timing counter values based on cycle airflow and the primary correction values calculated in the main loop.
Anyway, seems like relating it to those counters is the way to figure this out.
I will say, I charted out the values in the injector scaling thread and used all the different values presented in here. I learned 2 things.
1. 31050 provides the best fit to the empirical data.
2. The empirical data is all over the place and is probably not real trust worthy in the first place. There needs to be A LOT more data points and on standardized intakes/MAF calibration/fuel for it to be meaningful. It's pretty clear by the variance that people are using random combinations of injector scaling, latency, MAF scaling, and fuel map changes to adjust for simple injector changes. I have no doubt, that shouldn't be needed...
Looking at the counters, it looks like 8K thru 8P are for injector outputs. (code is there for 6 cylinder operation)
Prescalar 1 is set at 3.
Prescalar for 8I thru 8P is set to 32.
With a clock frequency of 7.5M, that would mean the injectors are on a counter running at 78125Hz or 12.8usec per count.
As mrfred pointed out, 582 gets divided by injector scaling. This also gets multiplied by a value that I think is some form of the requested fuel. Hard to say though as I have it labeled as requested IPW but I don't think it actually is IPW at all but is a fuel mass request.
Something else here, MUT34 is used as a table switching setup in LOTS of places. It's used here too and is used to select a value from a table and is multiplied with injector size. All the values are set to 0x83. From how MUT34 is used in some other areas of the ROM, I'm wondering if it is actually a fuel selection variable. Almost like the ECU is setup for up to 8 different main configurations simply by changing MUT34 (set to 0 all the time in 96530006). In this case, I'm wondering if this is a stochiometric AFR setting. 131 is a lambda of 1.02, or a stochiometric AFR of 15.0:1. I seam to remember though that 14.7:1 is actually just based on isoctane and doesn't really reflect actual gasoline. Although it is very close, I believe typical gasoline has a true stochiometric AFR around 14.9:1. Of course, you don't see this on something like a wideband as the wideband reads excess oxygen and then simply relates it to stochiometric AFR, which for gasoline has been set as 14.7:1 in the industry.
It's a thought anyway...
I wonder if that 0x83 value could be used to compensate for E85 without having to put BS numbers in for injector scaling.
Prescalar 1 is set at 3.
Prescalar for 8I thru 8P is set to 32.
With a clock frequency of 7.5M, that would mean the injectors are on a counter running at 78125Hz or 12.8usec per count.
As mrfred pointed out, 582 gets divided by injector scaling. This also gets multiplied by a value that I think is some form of the requested fuel. Hard to say though as I have it labeled as requested IPW but I don't think it actually is IPW at all but is a fuel mass request.
Something else here, MUT34 is used as a table switching setup in LOTS of places. It's used here too and is used to select a value from a table and is multiplied with injector size. All the values are set to 0x83. From how MUT34 is used in some other areas of the ROM, I'm wondering if it is actually a fuel selection variable. Almost like the ECU is setup for up to 8 different main configurations simply by changing MUT34 (set to 0 all the time in 96530006). In this case, I'm wondering if this is a stochiometric AFR setting. 131 is a lambda of 1.02, or a stochiometric AFR of 15.0:1. I seam to remember though that 14.7:1 is actually just based on isoctane and doesn't really reflect actual gasoline. Although it is very close, I believe typical gasoline has a true stochiometric AFR around 14.9:1. Of course, you don't see this on something like a wideband as the wideband reads excess oxygen and then simply relates it to stochiometric AFR, which for gasoline has been set as 14.7:1 in the industry.
It's a thought anyway...
I wonder if that 0x83 value could be used to compensate for E85 without having to put BS numbers in for injector scaling.
Last edited by 03whitegsr; Jul 23, 2014 at 11:04 PM.
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Other way, right?
It's multiplying the injector size by 131 and then I think it divides by 128. It's effectively making the injector 2% larger.
If it were accounting for ethanol it would be a value less than 128, effectively making the smaller.
It's multiplying the injector size by 131 and then I think it divides by 128. It's effectively making the injector 2% larger.
If it were accounting for ethanol it would be a value less than 128, effectively making the smaller.
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Thanks for responding on this again. I've asked FIC again if they can flow test a stock Evo 8/9 injector. In the mean time, I'll look at my disassem again for confirmation of this.



