### Ability to log injector duty cycle

Posted:

**January 18th, 2012, 5:48 pm**US guys are speaking about their IDC's but I can't find such a variable to be logged in VT.

Forum for users of VersaTuner tuning software for Mazda ECUs

https://www.versatune.net/forum/

Page **1** of **1**

Posted: **January 18th, 2012, 5:48 pm**

US guys are speaking about their IDC's but I can't find such a variable to be logged in VT.

Posted: **January 18th, 2012, 7:57 pm**

There's no PID for that, but the injector duty cycle is actually calculated based on the RPM and the injector pulse width, and for these you have PID's.

I'm calculating it like this:

Injector_DC = 100*RPM*INJ_Pulse_Width/(2*60*1000*1000) = RPM*INJ_Pulse_Width/1200000

If you're interested to know how I've got to that formula you can read below, if not you can simply stop here and copy the formula in your excel where you can make a new column using the replacing the RPM and INJ_Pulse_Width variables with the right table columns to compute the injector duty cycle for each line.

So why this formula:

- the injector pulse width is in microseconds (at least this is how it's logged by my dashdaq - need to check if VT logs it the same way);

- the engine RPM is in revolutions per minute;

- the injector can stay open maximum half of the time required for a complete engine revolution;

- the injector duty cycle is actually a percent of how much the injector stays open within half of the time required for the engine to complete a revolution (which is the maximum time an injector can stay open);

So the formula is obtained like this:

1. RPM means RPM/60 per second and RPM/(60*1000*1000) per microsecond;

2. half of it is RPM/(2*60*1000*1000);

3. you need to get the amount time in microseconds from here for the maximum time an injector can stay open at this RPM, so this is going to be (2*60*1000*1000)/RPM;

4. when you calculate the percent of time the injector stays open it's going to be:

100*INJ_Pulse_Width/INJ_MAX_Time = 100*INJ_Pulse_Width/((2*60*1000*1000)/RPM) = 100*INJ_Pulse_Width*RPM/(2*60*1000*1000).

Possible flaws: this is how I compute it in my script that I use to parse the logs from my dashdaq (which logs this specific PID in microseconds). If the injector pulse width is not in microseconds then you may need to cut or add the right number of 0's at #3 above.

I guess the Versatuner Developers can use this formula and add a new (fake) PID based on the RPM and injector pulse width variables. Basically this is the only reason why one would need to log the injector pulse width, to calculate later the injector duty cycle. I guess this is how "the US guys" get the IDC in their AP, that or the software reading its logs already has that implemented.

Later edit: here it is better explained (or not?): http://injector-rehab.com/shop/idc.html

I'm calculating it like this:

Injector_DC = 100*RPM*INJ_Pulse_Width/(2*60*1000*1000) = RPM*INJ_Pulse_Width/1200000

If you're interested to know how I've got to that formula you can read below, if not you can simply stop here and copy the formula in your excel where you can make a new column using the replacing the RPM and INJ_Pulse_Width variables with the right table columns to compute the injector duty cycle for each line.

So why this formula:

- the injector pulse width is in microseconds (at least this is how it's logged by my dashdaq - need to check if VT logs it the same way);

- the engine RPM is in revolutions per minute;

- the injector can stay open maximum half of the time required for a complete engine revolution;

- the injector duty cycle is actually a percent of how much the injector stays open within half of the time required for the engine to complete a revolution (which is the maximum time an injector can stay open);

So the formula is obtained like this:

1. RPM means RPM/60 per second and RPM/(60*1000*1000) per microsecond;

2. half of it is RPM/(2*60*1000*1000);

3. you need to get the amount time in microseconds from here for the maximum time an injector can stay open at this RPM, so this is going to be (2*60*1000*1000)/RPM;

4. when you calculate the percent of time the injector stays open it's going to be:

100*INJ_Pulse_Width/INJ_MAX_Time = 100*INJ_Pulse_Width/((2*60*1000*1000)/RPM) = 100*INJ_Pulse_Width*RPM/(2*60*1000*1000).

Possible flaws: this is how I compute it in my script that I use to parse the logs from my dashdaq (which logs this specific PID in microseconds). If the injector pulse width is not in microseconds then you may need to cut or add the right number of 0's at #3 above.

I guess the Versatuner Developers can use this formula and add a new (fake) PID based on the RPM and injector pulse width variables. Basically this is the only reason why one would need to log the injector pulse width, to calculate later the injector duty cycle. I guess this is how "the US guys" get the IDC in their AP, that or the software reading its logs already has that implemented.

Later edit: here it is better explained (or not?): http://injector-rehab.com/shop/idc.html

Posted: **January 19th, 2012, 12:30 pm**

Wow, I'll try that, thanks!

Posted: **January 20th, 2012, 10:09 am**

I get following as max IDC of one sample run:

rpm 5000 1/min

injector pulse width (IPW) 9 ms

-> injector duty cycle (IDC) 38 %

Do you get something similar?

So IDC is IPW/time_of_one_engine_cycle = IPW/2*time_of_one_revolution in a 4-stroke engine.

I can't understand how somebody gets IDC close to 100%, that would mean that it's spraying also during exhaust phase... maybe they calculate it somehow differently...

If I would take just intake and compression phases into consideration, that would mean half the time available, I would get IDC 76%.

rpm 5000 1/min

injector pulse width (IPW) 9 ms

-> injector duty cycle (IDC) 38 %

Do you get something similar?

So IDC is IPW/time_of_one_engine_cycle = IPW/2*time_of_one_revolution in a 4-stroke engine.

I can't understand how somebody gets IDC close to 100%, that would mean that it's spraying also during exhaust phase... maybe they calculate it somehow differently...

If I would take just intake and compression phases into consideration, that would mean half the time available, I would get IDC 76%.

Posted: **January 20th, 2012, 10:49 am**

you have to consider that injection can only happen during intake and compression. Your duty cycle is actually 76% not 38%.

Duty cycles > 100 imply that injection is happening during combustion.

Duty cycles > 100 imply that injection is happening during combustion.

Posted: **January 20th, 2012, 5:27 pm**

Thanks Steve!

So IDC is injector_pulse_width/time_of_one_revolution.

Was just wondering if my IDC's would somehow already be too high and thus reducing my WGDC.

So IDC is injector_pulse_width/time_of_one_revolution.

Was just wondering if my IDC's would somehow already be too high and thus reducing my WGDC.

Posted: **January 20th, 2012, 5:50 pm**

It takes high load at high rpm to hit that. I can't recall if a K04 can hit that.

Either way, it will be fixed in the next release of VT. I have that limit disabled in the internal beta version that I run. It works quite well

Either way, it will be fixed in the next release of VT. I have that limit disabled in the internal beta version that I run. It works quite well

Posted: **January 21st, 2012, 2:29 am**

Ok, I checked my logs and indeed the IDC doesn't go above like 35%. I changed my formula already, so I will not divide it by two anymore.

Posted: **July 7th, 2021, 9:02 am**

@mituc Wow great write up and excellent link to Injector-Rehab.

I found this thread investigating what the IPW unit of measure was for VT.

I expected it to be milliseconds but suspected it to be in microseconds which you confirmed, thank-you.

FWIW my brain works better converting the logged value to milliseconds when doing the math but whatever works eh.

That said your equation made it way easier to enter into MegaLogView HD

InjectorDutyCycle = 100*[Fuel injection pulse width]*[RPM]/(1*60*1000*1000)

I've used the value "1" when calculating the "cycles per microsecond" because this is for a rotary engine.

(I know I could have just removed it but it is a reminder that this value needs to reflect the number cycles per injector pulse)

Thanks again!

I found this thread investigating what the IPW unit of measure was for VT.

I expected it to be milliseconds but suspected it to be in microseconds which you confirmed, thank-you.

FWIW my brain works better converting the logged value to milliseconds when doing the math but whatever works eh.

That said your equation made it way easier to enter into MegaLogView HD

InjectorDutyCycle = 100*[Fuel injection pulse width]*[RPM]/(1*60*1000*1000)

I've used the value "1" when calculating the "cycles per microsecond" because this is for a rotary engine.

(I know I could have just removed it but it is a reminder that this value needs to reflect the number cycles per injector pulse)

Thanks again!