Project 006 - Denon Amplifier Motorized Volume Control Conversion

DISCLAIMER: This design is experimental, so if you decide to build one yourself then you are on your own, I can't be held responsible for any problems/issues/damage/injury that may occur if you decide to follow this build and make one yourself.

INTRO

I currently watch TV, listen to music, watch video's all through a home built media centre system running MediaPortal on a Win7 PC. A Denon amplifier gives me great sound and via MediaPortal I have just the one remote control to control everything including the volume of the TV. However, i've always wanted the additional control over the actual amplifier volume in order I can get that extra boost especially whilst playing music.

The Denon doesn't have a remote control as it's just a simple analogue amplifier. So, I came up with the idea to replace the existing volume potentiometer inside the amp with a motorized one, and have it controlled via a couple of spare buttons on my existing remote control.

The basics are: An IR led (Rx) panel mounted on the front of the amplifier will pick up the IR signals from the remote control and interface to an Arduino Nano where an output drives a small H-bridge circuit and drives the motor directly.

 

PARTS LIST

MAIN COMPONENTS:
1 * ALPS Potentiometer RK27112MC motorized 100K pot (log type for volume control applications).
1 * IR LED  (Hauppauge remote IR [tip=Vcc, ring=sig, sleeve=0vdc]).

PCB COMPONENTS:
1 * Arduino Nano
1 * LM2575HV-5 5vdc Switch Mode Regulator
5 * 1N5819 Schottky diode
1 * 330uH Inductor
1 * 220uF 63v Electrolytic capacitor
1 * 220uF 10v Electrolytic capacitor
2 * ZVN3306A N-type FET
2 * ZVP2106A P-type FET
4 * 4k7 1/4w resistors
1 * 330ohm 1/4w resistor
1 * 15ohm 2W resistor
1 * Pcb mounted buzzer (optional)
1 * 7-way Pcb Terminal Block

 

TECHNICAL

+5vdc is required for both the motor & Arduino and is derived from one of the main amplifier rails and is +40vdc unregulated, therefore a circuit with a higher operating voltage than normal in terms of voltage regulators is required. The LM2575HV-5 can operate up to 60vdc.

A TTL IR signal is received from the IR detector and input to the Arduino, and when a button is pressed on the remote control the unique HEX ID of that button press is detected. If either of the two buttons for volume up/down is detected then the Arduino outputs to drive the DC motor in the relevant direction.
The Arduino interfaces with the motor via a small, relatively low current H-bridge circuit. Four digital outputs from the Arduino drive the H-bridge directly and is either full on or full off in either direction. No analogue or PWM control is necessary since the motorized pot has a gearbox and even at full speed is still fine for use.
When no button is pressed the H-bridge is driven in the full off position, thus the motor is stopped.

I have configured IR codes 7A0/FA0 & 7A1/FA1 which are the CH. Up/Dn button on the Hauppauge remote as this is a rocker style button right opposite the Tv volume control (which I didn't want to disturb). To do this it was necessary to disable the CH. Up/Dn buttons, which I never used, in MediaPortal setup in order to avoid conflict.

Note about the 15ohm (2W) resistor:
As this amp will be in use at least 12hrs per day I wanted a safe design so decided to install a 15ohm resistor in series with the supply to the H-bridge. Now, the spec for the ZVN/ZVP FET's gives a max. drain current of about 270mA. However, if you calculate what the current would be if say the Arduino crashed and both left side FET's were turned on, then you get 5v / 15ohm = 330mA which is more than the max. drain current allowable right?...........wrong!
The FET spec says, RDS(on) i.e. the effective resistance between Drain & Source (in saturation) is 5ohms (just to test I measured it at 4.66ohms), so with 2 FET's per side we are looking at 9.32ohms per side. So add that to the 15ohm resistor then the total resistance is 24.32ohms, thus at 5vdc this is 205.6mA. Well within the FET limits = A safe design.
The DC motor is rated at 100mA (@5vdc) nominal, 150mA max., so fits in with the above nicely.

Schematic diagram (Note: Not shown is Vin which is fused):

 

ARDUINO CODE

Version 1.2 of the code.

Notes:
- Impossible to drive both N & P-type FETs on same sides of the H-bridge at the same time.
- Impossible to drive both Left & Right at same time.
- The mS delay is a means to smooth out the motor control.
- Beeper output (optional).
{codecitation }

/*
IR Receiver - Motorized Volume Control for Denon Amplifier
By Ian Johnston
Version 1.2, 03/10/11
IR code library (IRremote.h) Ken Shirriff's - www.arcfn.com
*/


#include <IRremote.h>
int RECV_PIN = 7;        // IR LED pin
IRrecv irrecv(RECV_PIN);
decode_results results;
int Q1 = 2;              // Dig Out
int Q2 = 3;              // Dig Out
int Q3 = 4;              // Dig Out
int Q4 = 5;              // Dig Out
int BEEP_PIN = 6;        // Beeper pin
int Code = 0;


// SETUP
void setup()
{
  //Serial.begin(9600);
  irrecv.enableIRIn();   // Start the receiver
  pinMode(Q1, OUTPUT);   // Setup the H-bridge outputs
  pinMode(Q2, OUTPUT);
  pinMode(Q3, OUTPUT);
  pinMode(Q4, OUTPUT);
  pinMode(BEEP_PIN, OUTPUT);
  digitalWrite(Q1, HIGH);  // Set Motor to stop as initial state
  digitalWrite(Q2, LOW);
  digitalWrite(Q3, HIGH);
  digitalWrite(Q4, LOW);
  digitalWrite(BEEP_PIN, HIGH);  // Beeper on
  delay (500);
  digitalWrite(BEEP_PIN, LOW);  // Beeper off
}


// MAIN LOOP
void loop() {
  if (irrecv.decode(&results)) {
    //Serial.println(results.value, HEX);
    Code = results.value;
    irrecv.resume(); // Receive the next value
  }
 
  if (Code == 0x7A0 || Code == 0xFA0) {  // Motor drive clockwise
    digitalWrite(Q1, HIGH);
    digitalWrite(Q2, LOW);
    digitalWrite(Q3, LOW);
    digitalWrite(Q4, HIGH);
    digitalWrite(BEEP_PIN, HIGH);  // Beeper on
    delay(80);
    digitalWrite(BEEP_PIN, LOW);  // Beeper off
    delay(140);
    Code = 0;
    MotorStop();
  }
 
  if (Code == 0x7A1 || Code == 0xFA1) {  // Motor drive anti-clockwise
    digitalWrite(Q1, LOW);
    digitalWrite(Q2, HIGH);
    digitalWrite(Q3, HIGH);
    digitalWrite(Q4, LOW);
    digitalWrite(BEEP_PIN, HIGH);  // Beeper on
    delay(80);
    digitalWrite(BEEP_PIN, LOW);  // Beeper off
    delay(140);
    Code = 0;
    MotorStop();
  } 
 
  MotorStop();
}


// MOTOR STOP
void MotorStop() {
  digitalWrite(Q1, HIGH);
  digitalWrite(Q2, LOW);
  digitalWrite(Q3, HIGH);
  digitalWrite(Q4, LOW);
}

{/codecitation}
 

PHOTOS & VIDEOS (LATEST AT THE TOP)

02/10/11 - Final Pcb.


 

 01/10/11 - Video of the remote in operation. Uses the Ch. Up/Dn buttons on the remote.

 


 

29/09/11 - Kick off project photos.

The amplifier prior to dissassembly:

 

The original fitted volume potentiometer (100k log). You can see there is a fair amount of room behind the pot which will be necessary for the clutch/motor assembly:

 

The motor driven potentiometer fitted. You can see the small 5vdc motor on the back of the pot assembly:

 

Overview of the amplifier internals with the new motorized pot fitted and awaiting the control pcb: