Jump to content
Sign in to follow this  
Davidv

Suggestion: New Mixture Map logic for improved results

Recommended Posts

Hi, 

Currently with mixture map you set a threshold so that samples within say 25% of the centre of a cell vertically and horizontally.
This pool of results are used to contribute towards an average value in the centre of the closest cell. 
However this means that you've got 25% variation of rpm and load, contributing to a static value in the centre - and you need to throw away 75% (?) of recorded values.

I have another idea that can let you use all of the data instead, and improve the results.

For simplicity's sake imagine a 4x4 grid, and our current load and rpm point is 25% of the way towards the lower RPM value and 25% of the way towards the lower Load value. 
If we interpolate these values, as per what the ECU does. 
Note: I have just titled the columns and rows with percentages to show what percentage of the each cell we are interpolating from.

kbnd1bt0.hev.png

We get a value of (25% * 25* 10) + ( 25% * 75% * 30) + (25% * 75% * 20) + (75% * 75 * 40)

= 0.625 + 6.075 + 3.75 + 22.5

= 32.95 is the table value that interpolation produces. 

Now lets say that you wanted to add 10% to this value.

If we just adjust the closest cell by 10%, as per current Mixture Map strategy. Then our bottom left cell changes to 44 so our table now looks like this:

ak3at0jj.zr1.png

If we do the interpolation again, but with the new value to represent running the car again after the update:

We get a value of (25% * 25* 10) + ( 25% * 75% * 30) + (25% * 75% * 20) + (75% * 75 * 44)

= 0.625 + 6.075 + 3.75 + 24.75

= 35.2 as the new overall value. Which is only makes 6.8% difference to the interpolated value, rather than the 10% we wanted.

On the other hand...

If PCLink De-interpolated the 10% that it wants to add.

Instead of adding 10% to the one cell, we split the 10% addition across the 4 cells based on the same percentage that the value was interpolated from initially. 

So:

Top left cell: (10 * 1.1 * .25 * .25) = 0.6875
Bottom left cell: (30 * 1.1 * .25 * .75) = 6.1875
Top Right Cell:   (20 * 1.1 * .25 * .75) = 4.125
Bottom Right Cell: (40 * 1.1 * .75 * .75) = 24.75


= 35.75 is the table value that de-interpolation produces. 

We were trying to add 10% and this new value produced is 10.5%. So that's pretty good!  
(The 0.5% error comes from rounding to 3 decimal places in my example)

So it's accurate to the provided data in every instance. Which is especially relevant when it's applied 1000s of times across all of the cells. You dont need to throw away any of your recorded data, it all contributes to the cell values.

Mixture map is pretty good for roughing out a map initially but because of the inaccuracies of the "nearest cell" method I don't really use it that much anymore when trying to dial in a fuel map. You always overshoot or undershoot unless you set your cell tolerances impossibly tight and have millions of samples.

And, since this is all only done in PCLINK rather than the ECU, there's not really any worry about the overheads of the extra maths involved. It's worth having it chug away for a few minutes longer if you can get an awesome result on first or second iteration of Mixture map logging.

So - that's my Friday night suggestion. 
Thanks for reading if you got this far, haha.


 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×