This weekend I spent a bit of time finishing up the first cut of my CSL clone tune.
Essentially I'm making my own clone along the lines of the approach Bryson has taken with his Mullet Tune, but doing it myself for the entertainment/learning value. All credit to Bryson for pioneering this approach, I'm basically just building my own version of what he's already done. If you haven't read up already I highly recommend following along in his journal.
When I do the swap, I'm going to do it in two stages.
Stage 1: Flash the car with the base CSL tune. This will give me a baseline datum point and is a known configuration to start with and ensure that the install has been successful.
Stage 2: Flash the car with V1 of my customised tune. This is a starting-point tune which blends Ignition, Injection and VANOS tables from my current Euro M3 tune with the CSL tune. The hope is that this will be an improvement on the base CSL tune and a starting point for iterative fine tuning.
(I'm getting in to a bit of detail now, so those who know more about this than me will be able to point out my mistakes :-))
Scope
For a vehicle with MSS54HP DME (not modified for flap)
Vehicle is running a Euro tune
Vehicle has a CSL airbox conversion using a MAP sensor (OE 1.0 Bar so no conversion factor required)
Vehicle is MSS54HP so does not require IAT conversion factor
For Stage 1 I'm starting with Terra's 0401 PD31 Full binary. This binary is a modified version of the 0401 full binary with support for the non-CSL boot loader, error codes, etc. I'll be loading this full binary at the time that I do the install. I'll then be flashing the CSL tune (partial binary) as well. There are a number of changes to be made to the original 0401 PD31 partial.
Change 0xE002 from 00 to 01 to make the partial work with Terra’s modified full binary (support for the non-CSL boot loader)
Enable Alternator light over canbus
Set non-CSL cam offsets
Set CSL intake flap control to always be open
Disable DTC 124 (CSL flap)
I used TunerPro to make the above changes to the partial, and now have this saved ready to go when I do the airbox install.
For Stage 2 I then took the partial I'd just generated and then added the modified ignition, injection and VANOS maps that I'd prepared. The preparation of these maps were of course the bulk of the work.
The merging of the maps is an interesting maths challenge. For this first version I took the following approach:
1: Take the standard M3 and CSL tables and interpolate both tables to allow for direct comparison.
2: Compare the difference between the tables (allowing for any conversion adjustments between the two)
3: I then manually applied a mask to blend the 2 tables together into the output table.
4: We then finish up with a nice optimisation problem. Finding the x-axis points that best describe the table as a whole and thus minimising the error. The M3 tune tables tend to have more x-axis points in the lower half of the RPM range and the CSL tune tends to have more in the upper half. This of course means that you can't just use all of the x-axis points from both maps. Ideally I would dust off my very rusty Matlab skills and write something to do it, however for now I simply added some calculations in the sheet to identify absolute change, rate of change, inflection points, etc. and then rank them by importance, this made it fairly straightforward to more manually identify the most important x-axis values to bring across.
The VANOS maps in particular are quite fascinating. There is a very significant difference in the lower RPM range between the M3 Euro and CSL tunes (example of the difference in the exhaust maps below). It's easy to see why cars with standard cams struggle so much in the lower RPM ranges with the CSL map.
Methodically working through these maps took me a reasonable amount of time (although to be honest a lot of that was diving into researching various topics to help make sure I understood correctly.
The end result was updates to the following maps:
KF_TI_N_RF_VL: Fuel Injection Full Throttle
KF_TZ_VL: Ignition Full Throttle
KF_TZ_GRUND: Ignition Ground
KF_TZ_MIN: Ignition Minimum
KF_TZ_LL: Ignition Idle
KF_EVAN1_SOLL: Intake Target
KF_EVAN1_SOLL_KATH: Intake Target Cold
KF_EVAN1_SOLL_DMAX: Intake Target Max Deviation
KF_AVAN1_SOLL: Exhaust Target
KF_AVAN1_SOLL_KATH: Exhaust Target Cold
KF_TZ_MIN and KF_TZ_LL are the ones that concern me most. For both I've erred on the side of taking the values from the CSL map, as for KF_TZ_MIN at least they appear to be more conservative. and for KF_TZ_LL it is different enough that I can't be sure there aren't changes in the 0401 program that interpret this map differently. I'll find out I guess when I get the tune running.
It's worth noting that once I have the tune up and running I'll also be doing the VE map tuning process described here.
Oh and the Haimus Racing snorkel arrived today. Well packaged and in a lovely soft bag. It seems to be a fairly nice piece. You can certainly see it's 3D printed when you look at it closely, and there is evidence of printing errors in places. The exterior has been post-processed to a fairly nice finish, and unless you look closely it looks good. It also feels nice and light for its size, but seems sturdy. All in all I'm ambivalent about it given the price (especially with shipping to NZ) (that said I haven't actually looked into how much it would cost to get one printed from CAD file), but it will look pretty nice in the engine bay I think once all is done.