I have a quite simple task I can't wrap my head around. I have an old home 5.1 sound system with optical input that plays sounds from my media center. Its remote broke, and while I tried to fix it, I understood how much I hate having one more remote on my desk.

I'd like an microcontroller to "push" the required sequence of buttons to wake sound system up and make it switch to desired AV2 audio input.

I found service manual with schematic in PDF, it appears that buttons are just a "voltage ladder":

Compilation from service manual images

The device guesses which button was pressed by measuring the resistance (ranging from 200 Ohm to 1K). In theory I can easily solder 2 wires and apply the required resistance between them myself.

The problem is that I don't really know how to do that.

Do I need to make an array of transistors with similar resistors and close the circuit through required resistor one at a time? But won't the voltage drop on a transistor make this approach impossible?

Or should I use some form of analog output (PWM + "low pass filter")? But won't the voltage of my microcontroller fry the circuit of the audio system?

I can fit a relay board inside, after all, but it is stupid.

Please point me in the right direction.

(as far as I can understand, the circuit operates on 4.8V)

  • \$\begingroup\$ you can estimate from the resistance values what "voltage" detected each button is represented by, and then just use a DAC chip (or onboard peripheral if you have a DAC on your micrcontroller) to output a similar voltage directly to the controller in order to hijack it's operation. \$\endgroup\$
    – KyranF
    Oct 27, 2014 at 10:29
  • 3
    \$\begingroup\$ Digital potentiometer (I2C or SPI controlled). Array of little reed relays? Bypass the switches with NPN transistors? \$\endgroup\$
    – Majenko
    Oct 27, 2014 at 10:30
  • \$\begingroup\$ @KyranF, I plan to use cheap Arduino Mini, it has no pure analog outputs, plus I am really afraid to fry the circuit of the audio system if i supply too much current to it. \$\endgroup\$
    – Alexander
    Oct 27, 2014 at 10:36
  • 1
    \$\begingroup\$ 50mA is a little too high for direct drive. The Arduino is absolute maximum 40mA, and recommended maximum 20mA. \$\endgroup\$
    – Majenko
    Oct 27, 2014 at 12:21
  • 2
    \$\begingroup\$ As for digipots, a 10KΩ 256 tap, like the MAX5395, would give you roughly 40Ω resolution. If you look at the circuit you have it's not the resistance that matters, but the resistance ratio between R873 and the other resistors switched into the circuit - it's a voltage divider. \$\endgroup\$
    – Majenko
    Oct 27, 2014 at 12:26

1 Answer 1


You have many options open to you, depending on a) how small and discrete you want it to be, and b) what your level of expertise is.

The simplest method is just to use some devices to short out the buttons thus emulating a button press. Options include:

  • Small reed relays
  • NPN transistors
  • Opto-isolators

A more complex option is to replace the whole board with a digital potentiometer. The voltage seen at KEY1 is determined by the ratio of R873 to a combination of R837, R844, R849 and R860. It's basically running as a voltage divider. You can use a digital potentiometer to replace all those resistors and buttons and just set the required resistance to get the right voltage at that pin. You would have to calculate the voltages each combination of resistors would equate to and ensure that the digital potentiometer (or combination of digital potentiometers - you can chain them together to increase resolution) can give an accurate enough voltage for it to be seen as the correct button press, and that very much depends on the device reading the buttons.

Simplest would be little reed relays - fairly discrete and simple to wire up.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.