It’s been a while since I’ve made a post on the subject of engine management calibration. I don’t do “tuning” for a living anymore and the subject of cars in my life thankfully has gone back to just a hobby. That said, I once again enjoy learning something new when it comes to calibrating engine management systems. I’ve been spending a lot of time in the last few weeks with my 2JZGTE Powered Mustang studying the effects of injector characterization on the vehicle. Before getting too ahead of myself, however, I should introduce what this blog post is all about.
Injector characterization has become a popular topic in the amateur tuning communities lately and for good reason. The stability of an engine’s fuel calibration, from a control standpoint, weighs heavily on the injector flow rate and offset being correct. The goal of this blog post is to shed some light on how to collect data from your own injectors to develop operating characteristics for your application. This blog is aimed primarily towards MS3X users, however, a lot of the information in this blog is universal. Due to the differences in electrical injector drivers used between different manufacturer’s ECU’s, the operating characteristics developed in this blog may vastly differ if using an engine controller other than MS3X.
Before explaining how to collect data to determine the operating characteristics of a fuel injector we must know how the ECU uses this information to meter fuel to the engine. If you’re reading this blog it’s likely you’re already familiar with how fuel injectors are sized. Most commonly we’ll define the flow rate of an injector by how much fuel it delivers over a period of time, in cubic centimeters per minute or pounds per hour. In this blog we’ll use CC/min as our preferred measurement. Knowing how much the injector flows over time is what allows us to precisely meter fuel into the engine. The longer the fuel injector is energized, the more fuel it delivers. We expect this flow rate to be linear, so if we know a fuel injector flows 440cc/min it should flow 220cc in 30 seconds, 110cc in 15 seconds and so on. Since we’re dealing with pulse-widths only in the millisecond range our delivered quantity is actually much smaller, but we still expect the flow to be linear as we increase or decrease the injector pulse-width. MegaSquirt defines injector flow rate with a global modifier called Required Fuel. The definition of Required Fuel is the effective pulse -width required to create a stoichiometric mixture at 100% volumetric efficiency. There is a handy calculator provided in software that will calculate the Required Fuel pulse-width based on engine displacement, fuel injector flow, number of injectors, and the stoichiometric air/fuel ratio of the fuel being used. The more accurate the information entered into the calculator, the more accurate you can define the flow rate of the injector to the ECU. Once the ECU knows how much fuel the injector flows at 100% VE, for any higher or lower VE value the ECU will just correct the pulse-width based on the difference in VE percentage and whatever other modifiers are applied to the fueling equation. We should be good to go, right? Not so fast.
If you paid attention to the definition of Required Fuel in the last paragraph, you’ll notice it’s the effective pulse-width required to create a stoichiometric mixture at 100% volumetric efficiency. Since Required Fuel defines the flow rate of the injector, all fueling calculations made by the ecu are calculated as effective pulse-widths. The effective pulse-width is a theoretical value that assumes the injector flows from exactly the time it’s commanded to open to the time it’s commanded to close. In reality it doesn’t work this way. There is a delay from the time we energize the fuel injector to the time it delivers fuel. There is also a delay from the time the injector is de-energized to the time it stops delivering fuel. These two delays combined are called the injector offset, or in MegaSquirt terms Injector dead-time. In this blog, however, we’ll use the term offset as it more accurately defines the operating characteristic. As an example, if we have a Required Fuel pulse-width of 7.5ms and did not apply any injector offset, we’d likely have a leaner than stoichiometric mixture at 100% VE because we haven’t accounted for the the time it takes for the injector to begin and end flow. In that 7.5ms the injector was energized it may have only been delivering fuel for 6.5ms. In this case, there is an offset of 1ms that needs to be accounted for. By telling the ECU the injector has a 1ms offset, the ecu will then add the offset to the effective pulse-width, in this case the Required Fuel pulse-width of 7.5ms and the offset of 1ms for a commanded pulse-width of 8.5ms. The fuel injector is energized for 8.5ms, delivering fuel for 7.5ms of that time, and we now have a stoichiometric mixture. The offset of an injector is not a single, constant number. Injector offset is influenced mainly by the voltage delivered to the fuel injector. Generally speaking, injector offset increases as voltage decreases and the change in offset is exponential as voltage increases or decreases.
As important as injector offset is to maintaining a consistent calibration, it’s one of those values that are seldom calibrated for the application. Until recently, injector offset data wasn’t offered by injector manufacturers and determining accurately the offset of a specific injector seemed like black magic. Injector offset changes with fuel pressure, the electronics driving the injector, and manifold pressure. Because all of these variables have some amount of effect on the offset of the injector, most manufacturers left it up to the end user to determine the operating characteristics for their exact application. And it’s still like this today. Recently I made a post on Turbobricks.com demonstrating that an OEM fuel injector with operating characteristics taken directly from the OEM ECU varied by a considerable degree when that same injector was placed on a different ECU and engine. Because of this, even with supplied injector data, I encourage the end user to determine the operating characteristics for their exact application.
So how do we determine the operating characteristics of a fuel injector? It’s quite simple. We measure the volume of fuel delivered by the injector over the linear operating range. Wait. Linear operating range? When plotting fuel injector flow, there is a point at very low pulse-width values were the injector flow will become non linear. The point this happens on a high quality fuel injector is very low, usually below 2ms. Because the injector flow becomes non linear, it’s very hard to control the injector and we usually want to avoid operating the injector below the linear operating range. By graphing the injector flow across its linear operating range, not only can we determine exactly what the fuel injector flow rate is, but we can also determine the offset by where the linear regression intersects the X axis.
Since I want to determine the operating characteristics of the injectors used on my 2JZ, I set up a test bench on the car to collect all of the data required. Using a high current variable power supply, I isolated the car’s electrical system from the battery so the ECU and injectors were run directly off the power supply. This allowed me to operate the injectors from 10.5v to 14.2v and get an understanding of how voltage affected offset. The battery was still wired to the fuel pump with a high current battery charger to keep the battery topped off. By running the fuel pump off the battery I avoided such a large current draw on the power supply running the ecu and injectors, keeping a very stable voltage to the injectors. I removed the fuel rail from the intake manifold and set one of the injectors in a graduated cylinder to measure volume of fuel delivered. Using the MS3X ECU in test mode, I was able to control the fuel pump and how the injectors delivered fuel to the graduated cylinder.
To collect data on the operating characteristics of the injector I was testing, I first determined the operating voltages I wanted to collect data. Since my power supply went as low as 10.5v and as high as 14.2v, I decided to collect enough data to determine offset at 10.5v, 12v, 13v, and 14.2v. I started by collecting data at 10.5v. Next, I need to determine the operating range I want to collect data for. The injectors in this application run as low as 1.5ms and as high as 20ms, so I’ll collect data from 1ms to 20ms in 1ms increments. Then I needed to determine how many times I’m going to fire the injector at each increment to collect data on volume delivered. To decide this, I fire the injector at 20ms and adjust the number of injections until the test approaches the limit of the reading of the graduated cylinder. This will provide a better average for the injector flow rate. In the case of the factory injectors, 1200 injections per sample was sufficient. I also need to set fuel pressure to my operating pressure, in this case 43 psi. I haven’t determined if interval has a huge effect on data collection, I set mine to 30ms which is equivalent to about 4000rpm when operating.
It goes without saying that doing it this way is very dangerous, because you’re dealing with gasoline. Just don’t do it, you’ll burn yourself to death.
I started the test by sampling the volume delivered at 1ms commanded pulse-width, 1200 injections at 10.5v. No fuel was delivered so I moved on to 2ms commanded pulsewidth. 9cc of fuel delivered from 1200 pulses at 2ms commanded pulsewidth. I kept doing this in 1ms increments at 10.5v until I had volume delivered from 1ms all the way to 20ms. Then the test was performed all over again from 1ms to 20ms at 12v, 13v, and 14,2v. If you plan on doing this, plan on taking quite a few hours to collect all of your data.
To show an example of the entire operating range, here are the results from the data collected at 14.2v:
There are some slight discrepancies as to how linear the flow is at higher pusle-widths. I’ve found in my testing high mileage injectors lose their ability to flow in a precisely linear fashion. These injectors have a bit over 200k miles on them. Aside from that, you can note below 2ms on the graph where the injector no longer operates in the linear range with the rest of the injector. To plot a linear regression, it’s wise to reject this data from the graph since it’s not in the operating range of the injector. Looking over the data, it appears the injector operates linearly from 2ms to 20ms, so we’ll graph just that data and apply a linear regression with formula:
Rounded down, the function of the linear operating range of this injector is defined by the following equation: f(x)=9.3316x-3.7526. You can either determine the X-intercept directly from that formula, or enter the formula into a graphing calculator and verify the data in both graphs match. The X-intercept of the line is 0.402ms, and this is the offset of a stock 2JZGTE 440cc fuel injector at 14.2v and 43psi. This data was collected at 10.5v, 12v, and 13v to arrive at the following offsets for this injector:
10.5v – 0.892ms
13v – 0.516ms
14v – 0.402ms
Dynamic flow rate can also be calculated from that data collected in these graphs. Referring to the graph above, the dynamic flow rate at 20ms can be determined by doing the following:
- Determine the effective pulse-width by subtracting offset from the commanded pulse-width: 20ms-.402ms=19.598ms.
- Determine how much fuel was delivered in one single pulse. Since we measured the volume of 1200 pulses we divide the volume by the pulses: 184cc/1200=0.1533cc per pulse.
- There are 1000ms in one second, how many times does our effective pulse-width occur in one second? 1000/19.598=51.026 times.
- How much volume of fuel is delivered if we add all of the effective pulses into one second? 51.026*0.1533cc=7.822cc per second.
- Multiply by 60 to get CC/min 7.822*60=469.32cc/min dynamic flow at 43 psi.
After a few hours of collecting data I now know the injector offset values at 10.5v, 12v, 13v, and 14.2v. I also now know the dynamic flow rate at my operating pressure as a more accurate figure to apply to the Required Fuel calculator. BUT! MegaSquirt speaks in terms of percentage for defining injector offset. How do we do this?
MS3X wants an offset number that represents 100%. 13v is a nice place to put this number so we’ll call 0.516ms 100%. Now it’s as simple as calculating percentage difference for every other offset value:
10.5v – 0.892ms – 173%
12v- 0.692ms – 134%
13v – 0.516ms – 100%
14v – 0.402ms – 78%
Since the engine doesn’t operate outside of these ranges unless something is wrong, it should be OK to interpolate the shape of the curve to higher and lower voltage values.
Once I get done upgrading the secondary injectors I can apply this data to the ECU and start collecting data on the effects it has with the calibration. Stay tuned.