A few weeks ago I was hanging out at SkullSpace and a group of fellow makers were working on their Arduino controlled hi-fi setup. They already had all the hardware for the setup constructed and were working on the interface when they realized that a soft-shutdown mode would be useful for saving state. Unfortunately, the power controller in the system just cuts power to the transformer that provides the Arduino 5 volts. We figured out a solution to this problem and I thought it was pretty clever, so I thought I would share it.
The power controller module used in the system takes input directly from a momentary switch and uses that to toggle a relay that passes mains power to the system’s transformers. The controller circuit operates at 12V and as I understand was chosen to allow a wider variety of fancy lower voltage buttons and power LEDs to be used. Getting the Arduino to act as a momentary switch (via transistors or relays) works fine for powering the unit down once settings have been saved. However, the actual physical power switch needs to work directly with the controller when the system is off, but talk only to the Arduino when the system is on.
To do this, we decided to hook the power button up through a DPDT relay that is switched directly by the 5 volt supply. This way, the button is connected to the power controller when the system is off (ie. no 5 volt power is present) and then once the system is on, the button is connected to the inputs on the Arduino. Since the relay physically switches the button between circuits, it doesn’t really matter that one circuit operates at 12 volts and the other at 5.
In my schematic, I assume that the input pin on the Arduino has the internal pull up resistor activated. I also assume that the relay can be driven directly by the Arduino, which often isn’t the case. You will likely need to use a transistor to drive the relay. Note that thus far the circuit is untested and should be used at your own risk.
For those interested, my schematic is available in gschem format here.