Introduction: Arduino Turns Off Idle Amplifier
What is this?
NovaIdle is monitoring amplifier for idle time (no music played) and turns off the amplifier with IR command It is written and tuned for the Peachtree Nova amplifier that has a tube. I wrote this program as I tend to forget the amplifier on and given the tube has limited ifetime, I am always feeling bad when I see it still on few hours later. Not to mention of course that we can be a bit more green by preserving power.
I published another version of this (for a Kenwood amplifier too)
What You need to build this?
1x Arduino (any type will do)
1x IR LED (950nm Wavelength)
1x 200 Ohm Resistor
Donwnload and install the Arduino IR library (http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html)
1x Blue LED
1x Yellow LED
1x Green LED
3x 330 Ohm Resistor (anything from 220 to 330 will do)
1x Prototype board to solder and connect the above
1x 3.5mm Earphone Stereo Jack
1x RCA to 3.5mm Stereo cable
1x USB Power supply (or you can feed it from other source)
How it works:
The program is written for Arduino, basically reading left and right signals on Analog inputs (A0 and A1) from a line level out of the Nova (connector 16 on the Peachtree user manual diagram). If no music is detected for some time (constant idleTimeToTurnOff) then the Arduino will send a power-off IR command that will turn the Nova amplifier off. Gladly the Nova has an actual power-off and not only power toggle code.
Sampling the audio in every 2 secods and the idle time is set to 5 minutes (you can change it in the code), enough time to swap CD's or to tell my Sonos which album to play next. The audio sampling is not done in one shot, as we can randomly find the Arduino ADC measuring 0, so we sample 10 consequential on each channel (left and right). The detection uses simple max on all samples.
I found it mandatory to use a load resistor on the A0 and A1 since when the Nova amplifier is off, the ADC on the Arduino is reading very random numbers. Using the load resistor to ground (10K Ohm) made the samples when amplifier is off to 0 (good!).
Overall, using Arduino for something as simple as this, is a bit of an overkill I admit, but would you like to solder and program ATTiny13 or something like that without a boot loader, spend hours on the SW deployment and HW side when with few extra dollars you get it easily with the Arduino? I decided to use the Aduino Nano for this purpose, simple small and nice one. The Arduino have enough IO ports still, so I am taking some of the internal state and expose it with LEDs, please see below. These LEDs are optional and connect/assembly only if you like. These are the LEDs that I used:
Pin Meaning LED
------- ----------- -----------------
13 Power (on-board)
12 Playing Green
11 Idle Yellow
10 Amplifier Blue
The Blue LED will light up if the unit will detect the amplifier is on.
The Yellow LED will light up if the unit will not detect any music.
The Green LED will light up if the unit will detect music is playing.
The Power LED will be on by default and blink off on each sample.
The IR LED needs to be 950 nMeter LED. You can find these pretty easily. I am using 2x100 Ohm resistors in series for this LED (200 Ohm) as I want some power when transmitting. This will drive about 18mA through the IR LED which is good and safe. Do note the polarity of the LED (long leg is positive (throough resistor to the Arduino) and short leg to ground.
The Nova does have IR Input jack and IR Output Jack that in theory I could use for this application, however when you plug in the IR Input jack it disconnectes the IR decoder internally so that the remote will stop working and to revive it I would have to pole IR from remote using an IR sensor and send it through the Arduino to the Nova. I think this is way too complicated and not really necessary.
Nova IRC odes as recorded by IRemote library
Novar IR Codes as reported by Peachtree
NEC uPD6121 protocol
custom code 00FFh
Inspecting the codes, it is clear either Peachtree or the IRemore library are reversing the LSb and MSb of each byte, but who cares :-) I took the STBY_OFF code and fixed it according to how the library actually works.
Last, but not least, I want to thank the Peachtree support for giving me the IR codes and wavelength information and being very prompt in sending replies. Good service always deserve mentioning.