View Full Version : Early Evo code changes - things people would like thread
AndyF
25-02-2009, 11:28 AM
Just thought I'd put this up as a 'things to do' type thread regarding my disassembly work on the early ECU's.
I'll start off with a list of the stuff I'm working on at the moment and keep this updated when things are done.
Also, feel free to add your own stuff that you want me to investigate etc. and I'll add it to the list.
1) Map rescaling - code identified but needs checking
2) Anti-lag using idle speed valve - some code found but needs more disassembly work
3) Open/closed loop disabling - check on code required based on soldaves results of testing
4) Map switching - code changes work but few minor niggles to isolate and sort out
5) MAF removal - early stages at present. Still identifying code routines
6) Std ECU boost control - not looked at yet apart from at a very high level
Andy
soldave
27-02-2009, 09:57 AM
Just call this soldave's demand thread! Let's see...
7. Knock limiter causing ignition cut (as opposed to fuel cut)
8. Traction control (this is probably a crazy crazy idea but using the ABS sensors and implementing acceleration-based traction control)
9. ALDL mapping/logging through Tunerpro
That's all I can think of now but I'm sure there'll be more!
AndyF
27-02-2009, 11:00 AM
Tracing will hopefully be possible with the next release of tunerpro which is due shortly
Knock as ignition cut I will work on as I should be able to use it similarly to the rev limit which I believe is ignition cut rather than fuel.
As for traction control..... WTF :lol: :lol: :lol: I haven't got access to the ABS ECU so I'm not sure if the wheel speed sensors are actually fed back into the main ECU code but that one will be a hell of a lot of work. Would be fun to get it sorted though in the long run.
Andy
soldave
27-02-2009, 12:03 PM
Just thought I'd throw the traction control one in there. Don't want you getting too comfortable ;)
You say ALDL will be possible with the next release of Tunerpro but I thought the only issue was that nobody really had an ALDL definition file for the early Evos?
AndyF
27-02-2009, 12:07 PM
http://forum.tunerpro.net/viewtopic.php?t=938 ;)
Not ALDL, proper address tracing direct from the Ostrich. No definition files needed :D
soldave
27-02-2009, 01:00 PM
And typically, I have an Ostrich 1 which might not support it :(
AndyF
12-03-2009, 10:08 AM
Right then,
Slight update on this...
No. 1 on the list appears to be sorted although a few more bits of testing is required.
Also, there are a few ways of doing the rescaling:
1) A minor bit of code change to keep the std table sizes but rescale the rpm/load values
2) A bigger slice of code change to change both the actual table sizes and scales
At the moment, I've only tested option 1 and only done it with rpm values but it does work however both options are possible and *relatively* simple to do.
WARNING - true geeks only for this next part :lol:
The way in which the code changes work is as follows:
The std ecu code uses a series of formula to determine what column within the 'maps' it will be looking at and by manipulating these formula you can then get it to look at specific columns for specific values.
As an example, take the rpm values.
Now the engine rpm is calculated from the crank sensor raw data and the formula is
Engine rpm = 3750000 / crank sensor output
therefore if the crank sensor is outputting a value of 500 then the engine is at 3750000/500 = 7,500 rpm
The crank sensor output value is converted within the ECU to a variety of different rpm variations that are used in different routines depending upon how sensitive the calibration is required.
One of these values is used in the calculation of the column index for the fuel maps. I will nominally call this rpm4
It is calculated as follows:
rpm4 = 960000 / crank sensor output = engine rpm * 0.256
So for our case before of 7,500 rpm then rpm4 = 7,500 * 0.256 = 1,920
Now comes the science part :D
In calculating the column index the ECU takes the value for rpm4 and then multiplies it by 4 so in this case the new value = 1,920 * 4 = 7,680
Translating 7,680 into hex results in a value of 1E00 and the ECU then drops the 2nd 8 bits of the value so you are left with a value of 1E (= 30 in decimal) to use in the actual column index calc
Carrying this out for the 'usual' range of rpms gives the following values that will be used
500 - 02
1000 - 04
1500 - 06
2000 - 08
2500 - 10
3000 - 12
3500 - 14
4000 - 16
4500 - 18
5000 - 20
5500 - 22
6000 - 24
6500 - 26
7000 - 28
7500 - 30
8000 - 32
8500 - 34
9000 - 36
So we've got the rpm conversion side sorted out now and what values are calculated for the rpms that the car is at but how does the ECU then translate this into which column it uses in the table?
It uses a transform function which is similar to the stuff I posted in JB's speed density thread (and that was why I was asking about them ;) )
In the standard setup, it is a fairly simple equation to calculate the column index and is
Column index = (rpm value (calculated above) - 2) / 2
and so the column indices for the rpm values given are:
500rpm = (2 - 2)/2 = column 0
1000rpm = (4 - 2)/2 = column 1
......
6500rpm = (26 - 2)/2 = column 12
7000rpm = (28 - 2)/2 = column 13
And the ECU code also caps the maximum column number that can be calculated at 13 which ties up with the fact that there are 14 columns in the fuel map.
Now in order to change the columns that are being looked at, what we need to do is change the way in which the transform function works.
So what we do is write a new section of code that means that rather than just using the single transform function for the entire set of rpm values, we use 2 seperate formulae that change at a specific value.
As an example, say we wanted to extend the top end of the map to cover a higher rev range.
We could then add in an extra transform function that says
If we are below 6,000rpm then use the existing function of column index = (rpm value -2)/2 but if we are above 6,000rpm then use a new function of column index = (rpm value +20)/4 which would then mean that 7,000rpm would become column index (28 + 20)/4 = 12 and 8,000rpm would become (32+20)/4 = column 13
therefore the new scale would now be
column 0 = 500rpm
column 1 = 1,000rpm
.....
column 10 = 5,500rpm
column 11 = 6,000rpm
column 12 = 7,000rpm
column 13 = 8,000rpm
And the ignition maps use a slightly modified version of this for that map and also the load scales are done using the same sorts of formulae and so are changeable in the same way.
Andy
soldave
17-03-2009, 12:33 AM
You've completely lost me there Andy, which is why I'm always very grateful for any work you do on the early Evo ECUs :)
soldave
24-03-2009, 07:46 AM
Any luck testing the extended load maps? Might be useful as I start to turn up the boost on my Evo even further (am gonna edge towards holding at 1.8-1.9 bar if I don't knock).
AndyF
26-03-2009, 08:01 AM
Not done anything yet Dave,
Am hoping to get out and about a bit this weekend to do a bit more testing so will try out the extended load range then.
Andy
soldave
15-06-2009, 03:39 PM
Got one idea which might not be too hard to implement. How about something that disables A/C if throttle is above 75% (or whatever you select) and then it turns it back on if throttle goes below that for, say, 10 seconds?
Some of the DSM chips have that and it would be nice over here when I drive around a lot with the a/c on, but still want to put my foot down sometimes and get all the power I can.
AndyF
04-07-2009, 05:25 PM
7. Knock limiter causing ignition cut (as opposed to fuel cut)
Now got this sorted Dave,
Have tested it on mine and it's customisable in terms of what knock level you want it to activate and how much timing you want it to pull i.e. you can set it to pull 20 degrees of timing at a knock count above 8 if you so desire etc. This works more or less as an instant cut feature above the std knock control setup.
Andy
soldave
04-07-2009, 11:58 PM
Now got this sorted Dave,
Have tested it on mine and it's customisable in terms of what knock level you want it to activate and how much timing you want it to pull i.e. you can set it to pull 20 degrees of timing at a knock count above 8 if you so desire etc. This works more or less as an instant cut feature above the std knock control setup.
Andy
Great work on the knock cut. Will be well up for putting that in my code
AndyF
05-07-2009, 12:06 AM
I'll write up the code and a new xdf tomorrow matey.
Andy
Andy,
Can we make the radiator fan switch on earlier? Currently the fan on when the temp. reach 106 degC and I want it on earlier let say at 100 deg C. Where is in the codes need a change?
vBulletin® v3.8.7, Copyright ©2000-2012, vBulletin Solutions, Inc.