My parents invest heavily in a very high-end audio system comprising Klipsch Heresy II speakers driven by a Luxman LV-105 amplifier. The sound is like nothing I have ever heard since. Although lacking in low end bass, the mid-range supplied by the famous Klipschorn driver is stunning. The warmth and clarity of the Luxman amplifier fills the living room with unforgettable sonic excellence. Decades later we supplemented the bass of the Klipsch main speakers with a massive 15″ PSB powered subwoofer and added center and surround speakers to make an unbelievable 5.1 surround sound system driven by a new Marantz home theater amplifier.
The Luxman amplifier was relegated to the cottage where it drove a pair of medium-sized speakers I designed and made during my university electrical engineering years. Recently, during a downsizing of my parents’ belongings, the Klipsch speakers narrowly escaped impending doom when I insisted on rescuing them and promptly installed them in the cottage to once again be driven by the Luxman amplifier.
Now we have remarkable stereo sound once again—this time at the cottage—to enjoy digital music sources such as iPods and Android mobiles. One inconvenience prevails; we must get up from the comfy listening position to manually adjust the classic analog volume control!
This has, by far, been the most ambitious and extensive project I have undertaken recently. As such, it is getting a commensurate blog post replete with gory detail. For the faint of heart, here is a brief summary:
I designed an IR remote volume control to be retrofit into this classic amp. Centered around an Arduino Pro Micro, it listens to IR commands from existing IR remotes with volume up/down buttons and controls a stepper motor which uses a toothed belt drive to turn the original volume control.
The Challenge
Preserve performance parameters as paramount whilst padding pleasure via progressive promotion of imperceptible push-button phonic power provisioning
In other words, maintain its quality but add the convenience of IR remote volume control.
The Luxman LV-105


The Luxman LV-105 amplifier represents quintessential vintage craftsmanship with a timeless appealing design.
A design feature appreciated by audiophile enthusiasts is the vacuum tube window. With the pre-heater mode enabled, the warm glow of the always-on valves beckons you to engage with it.
More information about this classic integrated amplifier may be found at hifiengine.com, audio-database.com, thevintageknob.org and classic-audio.com to name a few.
The vintage Luxman brochure uses wonderful 80’s lexicon that compels me to employ an appropriate meme. It describes Luxman’s technology as employing “computer speed transistors” (love it!) and “tubes […] traditionally regarded as the ultimate electronic device for audio” in their “BRID Integrated Amplifier” series.
I simply cannot resist showing one more techy graphic showing the concept of this hybrid amplifier design.
Look at the fantastic juxtaposition of classic analog valves next to ultra-modern MOSFET power transistors—elegant and simply beautiful.
Modifications
The first step, disassembly was handled diligently and conscientiously. I was thankful to have a copy of the service manual to guide me. Removal of the main front panel bezel required a disconcerting amount of force. I did manage to remove it—none the worse for wear—and proceeded to modify its retaining tabs so that subsequent removal will be easier by requiring much less force.


IR Remote Volume Control Design Background
When I started researching this project for how best to integrate an IR remote volume control, I initially ordered a kit from AliExpress. It includes everything from an IR remote control to an audio taper potentiometer. I thought I would swap out the analog amplifier’s original volume potentiometer with the motor controlled one in this kit.
However, after referring back to my axiom for this project to maintain the highest level of audio quality integrity, I grew increasingly concerned that the potentiometer in this kit might compromise quality. I changed tack and reasoned that I might be able to use the kit’s motorized potentiometer to drive the original volume potentiometer knob directly with a belt and pulley system. Some initial experimentation revealed that the motorized potentiometer has a clever design that included a mechanical clutch mechanism. This clutch allowed the motor to continue turning after the potentiometer hit one of its physical hard stop limits. Unfortunately this clutch also limits the torque that can be applied and I needed more torque to turn the old stiff potentiometer of the old analog amplifier’s volume control.
Back to the ol’ drawing board…
A stepper motor allows a high degree of positioning control with high torque but typically does not have absolute position feedback. A servo motor, on the other hand, does typically have position feedback but has other limitations. In my early explorations of Raspberry Pi, I had interfaced to a stepper motor by using a EasyDriver stepper motor shield peripheral. I set about designing the use of a stepper motor to drive the amp’s volume control.
The main design challenge was limiting the stepper motor to only rotate the amp’s volume control within the hard limits of its range of motion—approximately 270 degrees. I needed position feedback for the stepper motor.
A precision potentiometer coupled directly to the shaft of the stepper motor would provide a variable resistance in direct proportion to absolute stepper motor shaft position. The varying resistance of the precision position potentiometer would be evaluated on-the-fly, while the stepper motor was moving, by using an analog input on the Arduino.
The precision potentiometer was mounted to the stepper motor using a special shaft coupler that allows for some flexing as well as accommodates the two different shaft diameters.
For the prototype, I used a different coupler that turned out to be too noisy. Every time the stepper moved, it reverberated in the coupler. Switching to the coupler pictured above resulted in much quieter operation.
As pictured above, the potentiometer I used was double-ended so that it could be coupled to the motor on one end while the other end could host a gear to drive a toothed belt to a corresponding gear on the amplifiers volume control shaft. An online Belt length Calculator was handy in determining what belt length I needed. For experimenting, I ordered several sizes of gears and belts. By playing with the gear ratios, I was able to achieve a compromise between the speed of volume change and the step size of each volume change. This turned out to be a 1:1 gear ratio.
https://bstassen.wordpress.com/2016/05/10/arduino-powered-…e-volume-control/
Designing the Circuit and Layout
As an electrical engineer, I found the circuit design to be straightforward due to employment of off-the-shelf highly integrated peripherals such as the EasyDriver. Mechanical construction of the circuit and physical integration with the amplifier were much more complex tasks for me and took almost as much time and effort as writing the software for the Arduino.
I used the excellent Fritzing freeware to document the schematic:

Fritzing was also an extremely useful tool to aid in the design of an efficient breadboard layout.

The prototype turned out quite nicely and didn’t take long to build.
Filtering Arduino analog input
Stepper motor position feedback is a potentiometer connected inline. Potentiometers are mechanical analog devices whose resistance varies with wiper position which is changed by rotating the control shaft. Their mechanical nature is subject to static, bouncing, jitter and other forms of mechanically induced variability that cause the resulting resistance to vary wildly especially during actuation. The solution to stabilizing this is a combination of hardware and software filtering.
The hardware part is a simple first order low pass filter using a series resistor and parallel capacitor. The values of the capacitor and resistor are dependent on the cut-off frequency desired. The 3dB cut-off frequency can be found using this formula:
Fc=1/(2πRC)
Fc is cutoff frequency
R is resistance
C is capacitance
Choosing appropriate values of C and R to achieve a specific cut-off frequency has interactions with resulting impedance, damping, and other characteristics of the filter. This level of engineering design is beyond the scope of this article. Suffice it to say that as long as you don’t use very low values for either R or C, the results should be fine. I chose a low pass cut-off frequency of 1 Hz and mid-range values of a 10 µF capacitor and a 16 kΩ resistor.
The software part of the filtering is a simple averaging routine. Without any external influence, all things being equal and not even moving the potentiometer, successive readings of a specific analog input are subject to minor variations. Thus, instead of taking one analog input reading and using that value directly to determine the next course of action for the stepper motor, I take an average of a certain number of readings over a specific time. These parameters are configurable in my Arduino code and after some experimentation, I found using four samples with an inter-sample delay of two milliseconds achieved a good compromise of filter smoothing versus delay.
to be continued…