# CIS-E Closed Loop AFR Powah! Module (with pics and vids)



## TheRealEddie (May 8, 2006)

Hey all,

Inspired by another fellow CIS-E GTI ralliest we set out to address the WOT leaning out issue given access to an AFR Wideband sensor. Looking around the vortex and the internet in general I found a couple of approaches but settled on something perhaps a little unique. 

Most are familiar with the TT or Autotech Power Modules which essentially change the fixed amount of current supplied to the DPR at WOT. Experience with these modules is somewhat hit or miss, and with a wideband AFR we found that at mid RPMs we were already running lean and near redline things went way lean. This was on a mildly tuned 16V 2L 9A.

So the idea was basically to use the analog out provided by the AFR wideband sensor (in our case MTX-L units), use a control loop (PI or PID if you're into that kind of thing), and a voltage controlled current source to drive the DPR. The initial intent was to start with an Arduino to do the AFR A2D, control loop, and analog voltage out to drive the current source (via PWM) for protoyping and tuning. Relays would be used to disconnect the ECU from the DPR and attach the current source to the DPR under WOT only. Once we got it working we'd replace the Arduino entirely with some opamps to do the controller with the thought being that a microcontroller wouldnt be as bullet proof as some old school opamps and passive components. However, after testing the prototype breadboard with an arduino uno and some pretty overkill power filtering, I've found that the arduino holds up just fine as far as not resetting or acting up.

The arduino runs a simple interrupt driven 100Hz loop that reads the AFR, compares it to a hardcoded AFR fixed point, e.g. AFR = 12.8, and runs the error through a simple PI controller routine (with some filtering up front), to set the voltage out signal to drive the voltage controlled current source. I use the WOT signal to reset the integrator on the PI controller after the WOT is released. Why 100Hz? I chose it because the MTX-L Plus had the bandwidth to support it, and the arduino could hold the 100Hz rate loop tightly with no overruns or missed cycles (with some dev utilities running at the same time like an RTC and a SDCard writer to log all input and outputs for testing purposes).

Anyway, the voltage control current source is a basic circuit using an opamp that regulates the output current regardless of the load on the output. To me this more closely matched how we generally think of the ECU controlling the DPR (in terms of milliamps) so I went with that approach. It also allows me to configure to set the maximum current to send to the DPR to prevent saturation, overheating, or bad stuff in general.

The voltage control current source is basically on its own shield for an Arduino UNO application. That's the Fiorally Powah Module. It also has some 12V mini relays and some additional components that basically act to disconnnect the ECU from the DPR when the WOT gets triggered and simulataneously rmoves the ECU from the DPR. I put the ECU across a dummy resistor that looks like the DPR to the ECU keep it happy, but this may not be necessary. That's why there are 2 relays on the board. Each relay has a quick disconnect (within 1msec) but takes longer to relatch (<4 msec);this helps maintain keeping the circuits isolated. Im considering ditching the second relay for switching the ECU over to a dummy resistor since I really dont believe thats necessary. Since the ECU is in open loop mode anyway at WOT it shouldnt care if it sees an open circuit. 

The unit has two configurations:
1) 3-Layer Test config Arduino Uno board, Fiorally Powah Module shield, RTC/SDcard shield.
2) 2-Layer Ops config: Arduino Uno board and Fiorally Powah Module

The test config adds logging capability at the full 100Hz rate and logs WOT state, measured AFR, controller output, etc. Its helpful for tuning to see how well the set point is tracked and how the dynamic response looks. The RTC just provides a means of timestamping files and adding headers. 

Anyway, here is what the results look like:









This plot shows the measured AFR vs time along with whether the WOT was active or not, and the reference AFR. You can see it has quick transient response and maintains WOT through redline. You cant see RPM since I dont log that (I have the parts to do it but it seemed more complicated than its worth). The reference AFR is adjustable at compile time.

Here is some in car footage of it in a friends GTI. I believe the target AFR was around 13.1 at the time.





Here are some shots of the board and unit. 

Powah! Module without logging shield:










Powah! Shield:









Triple Stack with Data Logger:









Prototype from bare shield:









Original Prototyping setup with Custom Paper Plate (Chinette works best):










So far it's be run through several rallycrosses (our rally season doesnt start until May) and when I asked the last tester to turn it off so we can get a feel of how he'd do without it, he declined . The plan will be to take it some dyno runs in the future. 

I have a link to an EasyEDA project that I started which I can share if people are interested. What I'm not sure of is where the DPR stops being able to provide sufficient fuel for a more aggressive build. This will be used on a 2.1L NA competition vehicle. It may not have the control authority to feed a turbo beast.

thanks for reading,
eddie


----------



## Felix2309 (Nov 11, 2018)

Thanks for the post. I have trying to find something to use my UNO for, but a bit of this is still over my head. I have a problem with total power loss at 5600rpm. I tweeked the dpr and found it reads 12.89mA at sit which improved the the 3000+rpm power but still cuts off at 5600. I still need to get a wideband on it to see how it really stands and go from there. At one point before tweeking and after a motor swap, I was seeing 28mpg, but a bit low on power compared to now, avg 25mpg+/-. Might be fuel pump issue.


----------



## DbilasTDI (Nov 5, 2017)

Now dude that is just cool. I used to wonder how do do this analog years ago. Great work


----------



## Oroapmk2 (Jun 12, 2021)

I just came across a dyno result post on a FB group with this module so I had to google it, very interesting piece you put together!


----------

