Page 1 of 1

Calculation basis for estimated AFR?

Posted: Tue Oct 02, 2018 6:22 am
by Torque
I was wondering how the estimated AFR values are guestimated?

If I understand it correctly you don't have any airmass values from the MAF sensors .. it's % vs voltage you have(?)
Also there is no direct value for injector capacity (?)

I might be totally wrong with my assumptions, would be interesting to know.
:D

Or is it possibly based on the manual calibration one can do?

Re: Calculation basis for estimated AFR?

Posted: Tue Oct 02, 2018 1:06 pm
by Matt
This has been covered on here before (search) but basically it is calculated from 14.7 matches 0 (filted value) and above below this is richer/leaner. The original calculations came from the Japanese ROM editor program, from which Nistune was originally based

Honestly, I want to remove this 'estiamted AFR' because it only works in a handful of cases and confuses so many tuners who think this is a 'target AFR'.

But there are other tuners who wanted it back after I removed it, so I've only made this drop down available in 'expert mode'. Those tuners will set the map to their target AFR and then trim the VQ map. It does work, but is not the way we tune these ECUs

As soon as you change to 1000CC injectors (and end up with a very flat map) then this calculation is not even close

Re: Calculation basis for estimated AFR?

Posted: Tue Oct 02, 2018 8:46 pm
by Torque
OK, thanks .. I knew it was somewhere on this forum but didn't find it.

So is there still a point in setting the fuel map to a predefined value and adjust K to match these estimated AF ratios?
Also the autotuner must have some merit? (I've not used it yet)

Re: Calculation basis for estimated AFR?

Posted: Wed Oct 03, 2018 3:38 pm
by Matt
Not really. Even with K / TIM adjusted for cruise, you wont necessarily hit the high numbers (10:1) AFR with the base mixtures set correctly. As I try to point out to people it just trims on top of the base mixture

Even with a flat map, the mixtures increase, because as MAF (load) increases, so does TP which is part of the calculation for final injection

More info on calculations here:
https://www.nistune.com/docs/Workshop%2 ... %20Web.pdf

Re: Calculation basis for estimated AFR?

Posted: Wed Oct 03, 2018 7:56 pm
by Torque
Thank you, that's helpful.

I think I know all the PDFs on there but to my knowledge none outlines the problem in bold writing.

I just did a log Estimated vs actual AFR values..
My K is spot on, but as you said on higher loads the actual mixture deviates.

What would you suggest to do to bring TP > 52 to what I intended (estimated AFR)
Is there any way to do this on a calculation basis?

Can I use the estimated pulse-width view to get mixtures right? Meaning is estimated pulse-width a reliable presentation?
How about the AutoTuner? (is there documentation on this one?)

NT_AFR.JPG
(320.12 KiB) Downloaded 2396 times

Re: Calculation basis for estimated AFR?

Posted: Thu Oct 04, 2018 1:24 am
by Torque
So that's from the document ... I think it does not make it clear at all what actually is going on.
:(

If I understand you correctly a 'filtered value' of lets say '30' at TP 50 will not give the same mixture as '30' at TP 100.

NT_FUEL.JPG
(93.66 KiB) Downloaded 2392 times

Re: Calculation basis for estimated AFR?

Posted: Thu Oct 04, 2018 10:49 am
by Matt
What would you suggest to do to bring TP > 52 to what I intended (estimated AFR)
You will not be able to do this unless you modify the VQ map (which is what other tuners have done)

Hence why I wanted to remove estimated AFR to avoid this confusion. So I cannot suggest trying to reach an arbitrarily calculated number when the real AFRs use so many factors

What you pasted above is only one of the pages from the sides. This part gets the base fuel calculation figure.

The calculation section where final injection time takes TP (from KxMAF/RPM) and then multiplies against the calculated fuel value, and adds total latency and trims to come up with a final injection pulsewidth

Re: Calculation basis for estimated AFR?

Posted: Thu Oct 04, 2018 10:50 am
by Matt
If I understand you correctly a 'filtered value' of lets say '30' at TP 50 will not give the same mixture as '30' at TP 100.
correct. As TP increases, so does the injection time.

Re: Calculation basis for estimated AFR?

Posted: Thu Oct 04, 2018 9:38 pm
by Torque
OK, thanks Matt ..

I think I got all the information then.

Is there a value in NT that shows the actual result of the injector time calculation?
I would think that your estimated pulse-width is based on that?

Re: Calculation basis for estimated AFR?

Posted: Fri Oct 05, 2018 9:59 am
by Matt
No there isn't an estimated calculation. It would be quite difficult and potentially inaccurate

As you can tell from the slides, it would need to take into consideration the TP value, TIM, fuel number, enrichment factors, latency and fuel trims.

Your best bet is look at actual injection pulsewidth the ECU calculates (and uses) in the 'Trace' window and view 'injection time'

Re: Calculation basis for estimated AFR?

Posted: Fri Oct 05, 2018 7:26 pm
by Torque
Thank you .. it seems like a lot of moving targets for the calculation.

But how (based on what) do you calculate the estimated pule-width in that table view then?


I will have a look at the injection times from the .log, these are the real values I hope?









Matt wrote:No there isn't an estimated calculation. It would be quite difficult and potentially inaccurate

As you can tell from the slides, it would need to take into consideration the TP value, TIM, fuel number, enrichment factors, latency and fuel trims.

Your best bet is look at actual injection pulsewidth the ECU calculates (and uses) in the 'Trace' window and view 'injection time'

Re: Calculation basis for estimated AFR?

Posted: Sat Oct 06, 2018 5:59 am
by Matt
Trace 'injection time' is what the ECU reports (and uses) so is accurate
But how (based on what) do you calculate the estimated pule-width in that table view then?
That is buried in the code there. You are requesting me to trawl through that ...

Code: Select all

Factor(int rawvalue)
    if (rawvalue >= 0x80)
        return (double)((rawvalue -= 0x40) / (double)0x80);
    else
        return (double)((rawvalue += 0x80) / (double)0x80);

AFRatio(BYTE rawvalue) 
    return (double)STOICH_VALUE / Factor(rawvalue); 
where STOICH_VALUE is 14.7:1

Basically as I wrote the first post, take the Filtered value (Factor) and divide it by 128 and then divide that result by 14.7:1