This circuit is a simple but high-quality preamplifier using a DS1882 digital potentiometer, a device specially designed for audio applications. The potentiometer is controlled over an I2C interface by an R8C/13 microcontroller. The main features of the design are its remote control and lack of moving parts.
The circuit is controlled by two buttons (volume up and volume down) and an infrared receiver connected to the microcontroller. The software in the microcontroller, written in C, is designed to interpret RC5 codes and supports the following commands:
– volume down;
Other commands could, of course, be added. The audio signal arrives via phono sockets and is taken to the digital potentiometer via coupling capacitors. The potentiometers are configured as voltage dividers with an overall resistance of 45 kΩ. The wiper position is adjusted over the I2C interface.
At the output of the potentiometers, there are two operational amplifiers in non-inverting configuration to buffer the high-impedance attenuated signal. They provide a gain of 5.7. The capacitors in the feedback network are dimensioned to provide a signal bandwidth of around 150 kHz with the unloaded output.
The value of output coupling capacitors depends on the input impedance Rin of the following power amplifier stage. As a rule of thumb a value of C=1/(100Rin) is suitable, and so the value of 10 µF shown in the circuit diagram is easily large enough in most cases. In some situations, it is useful to connect the outputs to ground via high-value resistors to provide a definite DC level.
The ±5 V supply voltages for the opamps and the DS1882 are decoupled using 100 nF capacitors. The lower-cost NE5532 opamp can be used instead of the specified device without noticeable signal degradation. All unused pins on the microcontroller are taken to ground.
As has already been described in detail in Elektor , the R8C includes a serial debugging interface and boot code that allows a program to be downloaded into its flash ROM. The serial connections are brought out at K1. To connect to a PC an RS232-to TTL level adaptor (typically incorporating a MAX232) is required; to connect via a USB port, use a USB-TTL cable . TxD from the PC should be connected to RXD1 on the R8C, and RxD on the PC should be connected to TxD1 on the R8C. J2 must be fitted for programming, taking pin 28 (MODE) on the R8C to ground. Then apply power to the circuit (for a power-on reset) or press reset button S4. The program FlashSTA can be used for programming: the web pages accompanying this article  have this software available for free download, along with the firmware for the microcontroller.
One possibility for expansion would be to add an input selection switch, which could be implemented using an analog switch IC. The IC could also be controlled over the existing I2C bus.
The structure of the RC5 remote control code has been described previously in Elektor: see the free ‘RC5 Code’ download at . The protocol specifies a five-bit address for the type of device to be controlled remotely (such as a television or VCR). In the author’s set-up the preamplifier was controlled using the remote control from a Hauppauge TV card, and so the firmware was configured to use the address reserved for TVs (‘00000’). If a different remote control is to be used, the address in the firmware must be modified accordingly. The address appears in the file ‘preamp.h’ as ‘#define IR_DEV_ADDRESS 341’, where the value 341 is the Manchester-coded form of the address ‘00000’. The coding procedure is relatively straightforward: with the address written in binary, convert each zero into ‘01’ and each one into ’10’. For the address ‘00000’ this results in ‘0101010101’. For convenience, the commands and addresses are converted into a decimal, in this case giving 341.
A timer module in the R8C is used for clocking out the RC5 signal, and the whole process is kicked off using an interrupt. It is worth noting that the infrared sensor does not work reliably if placed near to fluorescent or low-energy light bulbs, as these emit a considerable amount of light in the infrared part of the spectrum. www.elektor.com/080213