ECU stuff
It’s been a bit. Life has been busy, the weather has been rainy & cold, and I’ve been spending a little time with another hobby, so I haven’t had a ton of time for the car.
I do have several hours driving on the Link ECU, though, between initial adjustment passes and drives on the few nice days we’ve had. I’ve even taken it to a couple events with zero hiccups. It’s not perfect yet, but drivability is really good.
Initially, I wasn’t sure what to expect. But it felt pretty ok out of the box! After 4 or 5 adjustment iterations, drivability was almost as good as with the AEM unit. I even managed to work up to WOT pulls with timing maps from my old ECU and AFRs in a decent place.
The main thing I need to tune, other than a proper WOT dyno session, is tip-in fuel. The basemap has tip-in turned almost off, so it spikes a bit lean with any large TPS movements. I haven’t touched it at all yet, that’s the next step. But even that is not terrible, it doesn’t “skip” when the throttle is stabbed, but I can probably make it better.
Closed loop FTW
Immediate drivability is really credit to the closed loop functionality (o2 correction enabled). It kinda Just Worked and kept the AFRs at my targets, even though it was correcting _a lot_ out of the box. On the first drive it was adding like 8-10% fuel all over. I tried turning o2 correction off initially, but it was undrivably lean, so I learned to tune from the logged O2 correction values.
While driving, I look at AFRs more than anything else. More than even RPM, I think. Well, now that’s kind of a thing of the past. Like (pre-crazy) Kanye said: “He got a new b, now you’re Jennifer Aniston.”
While O2 correction is enabled, “CL O2 Correction % 1” & 2 are my new favorite parameters. I even added them to the CAN output + navpod because I kept looking at the laptop while driving. It’s the big yellow numbers here, -7 means it’s pulling 7% fuel, top is front bank, bottom is rear:
Because it was so lean without correction, I figured I’d just log the O2 correction percentages, then use that to adjust the fuel maps. The Link software has a “Mixture map” feature that shows the AFRs in each cell, then you can adjust from there.
With o2 correction on, the mixture map is useless, though, cause the AFRs are perfect. There is no way (that I know of) to co opt it to show o2 correction instead. A while ago I wrote my own log analyzer app with a “mixture map” feature too. So I just tweaked it to read from my new besties: CL O2 Correction % 1 & 2 to show correction per cell. I haven't fixed the colors yet, so all red, but good enough:
From there, I was able to adjust the fuel map. You can see that I'm not crazy far off. This is the front bank, negative is pulling that % of fuel, positive would be adding fuel. The rear bank is just about 0 correction as it runs leaner than the front.
Derp
The initial 2 or 3 passes over the fuel tables were not without WTF moments. After I had a table of O2 correction percentages, I’d adjust the fuel table to basically reflect the correction percentages. But on the next drive, the ECU would still add the SAME amount of O2 correction. Like my changes were not making changes. Sometimes I’d add fuel to the table, and the next drive it would correct to add MORE fuel than the last drive. WTF.
I went down a couple rabbit holes. Do I not understand the O2 correction values? And then a deeper rabbit hole: is something not set up correctly? The VE modeling approach relies on correct injector and fuel pressure settings. You should be able to add 5% to the VE fuel table and see it go 5% richer. If not, some setting is probably not set up correctly. I triple, quadruple checked everything, downloaded the latest ID injector data, looked at every table, and everything looked correct.
During this process I stumbled onto the IAT fuel trim. Turns out it was adding fuel at temps under 100F, and aggressively pulling fuel at higher temps. Each subsequent drive had higher IATs, which pulled more fuel and offset my changes to the fuel table. No bueno. I mostly zero’d it out and we were off to the races.
Closed loop all the time?
Before pulling the trigger on the Link, I did a lot of reading and watched a bunch of YouTube videos on tuning both the haltech and the Link. In a number of the videos, including official videos from like Haltech, people mentioned that they used closed loop (o2 correction enabled) even in WOT, high RPM scenarios. When I loaded up the basemap from SoS for the Link, O2 correction was enabled
_all the time_ for all the load and all the RPM. This was super surprising to me.
Standard practice in days of old was to disable O2 correction under load. Stock motors do this because narrowband O2 sensors only accurately read stoich (14.7 AFR). But it’s always been in my head that, even with a wideband, it’s bad juju to use closed loop under load. Mostly because, if the O2 sensor goes bad, is inaccurate, or has some wiring issue, it could make things go lean and: pop goes the motor.
Why is closed loop forever ok now? Really, because CAN bus (IMO). The wideband controllers are connected to the ECU through the CAN bus, the ECU is reading AFR in digital form. The key here is that the wideband controllers are ALSO emitting data about the state and health of the sensor, like, is a sensor is bad, is it not heated up, etc. Out of the box, the SoS Link basemap has a bunch of protections based on data readability and errors from the wideband controllers. If there is an error condition, it’ll throw a CEL, turn off O2 correction, and lower the revlimit. Cool.
My plan is to run closed loop all the time, but tune it so it is mostly making 0% correction, erring on the rich side where it’s removing ~1% fuel.
Any quirks fixed?
I was curious if the new ECU and new injectors would change a couple quirks
1) The rear bank ran 1-5% leaner than the front bank
Well, the rear bank still runs leaner than the front, and it’s about the same as with the AEM. I guess this is a property of the fuel rail design?
2) Both banks run pretty lean after hot start for ~1-2 minutes
Stilllll happens! Why? I dunno! Hot fuel condensing on the something something… Not sure. But the O2 correction works its magic here so, ok, I guess it’s fine.
3) There was a voltage drop at the ECU under load. (Also the AEM ECU read lower voltage than the chassis voltage gauge)
Voltage drop is still there, but maybe slightly less pronounced. With more data I can see that the VTEC solenoids have a big effect:
More info on
my voltage drop thread.
Logging
Logging stuff with the Link is pretty cool. I’m still scratching the surface with it, but a few things that have been super useful. I really don’t like their log analysis tools so far though, generally the software is super clunky. (Like all software engineers, I am trained to dislike software written by literally anyone other than me. But, like, also their software is really hard to use) Supporting the log files in my own software was pretty quick. Now I got sweet charts and total control:
The Link internally logs
_everything_, hundreds of parameters. This means I don’t have to think about what I want to log ahead of time. I can’t tell you how many times, with the AEM, that something weird would happen on a drive, then I’d have to take the car out with the laptop and try to reproduce the issue so I could see what was going on in data. Also since I keep data from all drives, I can go back and dig into parameters I didn’t think of ahead of time. It’s been super helpful already.
Even logging all parameters, it can internally store like 36 hours of data. The AEM would log maybe 20 minutes, so I had to make sure to try any situations I wanted to tweak in the last 20 mins of the drive.
Another cool thing is that it starts internally logging from the moment you turn on the key, and logs through cranking. Tuning cranking has been a lot easier than with the AEM. Here is a cold start at 6am in 40F weather. Not shown in the logs: my neighbors seething anger when I start the car at 6am:
There’s a bunch more I’ll dig into later like CAN setup (which was a pain), and more learnings as I have more time tuning. The plan is still to take it out to driving ambition for a proper dyno session. But I want to spend more time with partial throttle before I go, likely a couple more months the way things are going.