This page has been updated for 2019 to reflect some changes and refinements to the digital controller.

The project started when I acquired a Thorens TD-124 turntable. This is a great Swiss made turntable from the 1950’s featuring a heavy platter, very precise bearings, and a number of nice features, my favorite of which is the clutch that lets you stop the rotation to load and unload records. It also has a very pretty art-deco design. Its become quite collectible.

To me the weak link on this turntable is the motor. I replaced it with a high quality DC motor/tachometer and designed a motor controller for it.

A High Quality Turntable Motor System

My goal was perfect speed stability and no audible motor noise. The approach is simple in concept; the tachometer on the motor fires a one-shot with a fixed pulse width. This pulse is fed to an integrator the output of which drives the motor. When the duty cycle is less than 50% (slow) the integrator ramps up raising the motor voltage and speeding it up. If the duty cycle exceeds 50% (fast) the integrator ramps down lowering the motor voltage and slowing it down. The system reaches stability when the duty cycle of the pulse is exactly 50%.



The first version of this controller was completely analog using a 555 timer for the one-shot and this worked very well. However it required high quality resistors and capacitors for the one-shot timing and the variations in individual 555 chips made re-calibration necessary upon replacing chips.

Analog version of motor controller

Larger schematic – opens in a new tab

In the current version of the motor controller the 555 timer has been replaced by a PIC microcontroller for the one-shot. This opens a whole new range of possibilities. The time base is an 8 mHz. crystal and the speed adjustment is accomplished by the encoder. Whenever an adjustment is made the new timing information is stored in an EEPROM in the PIC chip so the speed settings are remembered when powered off. A purist might have taken the time to replace the analog integrator and output transistor with something digital as well but the motor takes so little power to run and the analog output works so well that I didn’t bother.

I did several updates to the hardware and software in the Fall of 2018. The 16F1823 has a nice built-in comparator which the tachometer can drive directly. I now use that rather than the external comparator that was a holdover from the analog controller design. This left me with an unused opamp section in the dual opamp so I used that as a “current doubler” driving the pass transistor. I also did a bunch of work on the rotary encoder software. Encoders can be noisy and sometimes give sporadic false readings. A combination of software de-bouncing and input hysteresis makes the encoder much smoother.


Larger schematic – opens in a new tab
Motor Controller Software
Motor Controller Software Source Code
Motor Controller Software hex file

The hex file can be used to program a 16F1823 controller chip using a Microchip PicKit 3 programmer or equivalent.

My motor pulley is a little larger than the one on the original motor and I always run the turntable’s own speed selector at 78 RPM and set the motor speed to get the rotational speed I want, usually 33.33 RPM. This lets the motor run very slowly, about 600 RPM, lowering the motor vibration frequency from the original 30 Hz. to about 10 Hz. and this is much easier to deal with. With a little gentle filtering the turntable contributes no significant L.F. noise at all.

The Thorens TD-124 with the digital motor controller in lower left
Closeup of the digital motor controller
Fall 2018 version of controller board
Fall 2018 version of controller board