Sunday, November 03, 2013

AVLS Driver/Automotive Arduino Controller

A while ago, I swapped out the engine in my 2001 Subaru Impreza 2.5RS to one from a 2011 model. This new engine had a feature called I-Active Valve Lift System (AVLS) that allowed the engine to run one cam profile for smooth idling and another for a slight increase in power. This system is normally operated by the ECU. Because it's not available for the original ECU in my car, I decided to make my own.

Arduino Uno R3 mounted in a TuxCase lower enclosure and custom AVLS Driver Shield PCB boards.
I used an Arduino Uno R3 microcontroller for this project because of the low cost and ease of use when prototyping. Programming an Arduino is also very easy to learn. Next, I designed a simple circuit on a bread board using a 9V regulator to lower the voltage down from the car, and a Bipolar NPN transistor to switch the AVLS solenoids on. I chose a transistor because it works with a PWM signal, which is used by the solenoids.

AVLS Driver Shield populated.
I then designed a custom Shield to more permanently mount the components using EAGLE PCB by CadSoft. On the custom PCB, I added a second transistor to control future projects. I also added fuse holders, LED indicators, and Molex connectors for power and signal I/O. The boards were manufactured by OSH Park who do small orders of custom PCBs for hobbyists and prototyping.

Spacers.

AVLS Driver Shield attached to lid that also acts as a heat sink.
Lastly, I designed an upper enclosure to fit on top of a TuxCase to house all the components. I designed the AVLS Shield to use the top lid as an heat sink and mount. The components were waterjetted out of aluminium and just stacked to form the the upper enclosure.

Completed enclosure.
While I am not completely satisfied with the enclosure, it will serve its purpose for testing. One day, I would like to design a PCB with both Arduino and my components on a single board. It would have a water tight enclosure to allow it to sit in the engine bay.

This AVLS Driver can also control other devices and has room more inputs to create smarter control algorithms. Once I test this board and make some revisions, I will release the board design as open source so others may use it.