I still have a Philips 212 turntable that I bought new around 1974. This turntable is a bit of a classic from the heyday of affordable, but high quality, Hi-Fi gear.
Over the years, my 212 developed all the ailments familiar to owners of these machines. The main power switch failed, and then the touch buttons stopped working. This post details my repair/modification project.
The Philips 212 was built before the era of low cost integrated circuits, so everything inside is designed with discrete transistors. An advantage of this is the machine can be troubleshot and fixed without hunting down specialized components, but some parts can still be hard to get. Surprisingly, the bulbs that light the buttons are particularly scarce. They are also, annoyingly, integral to the circuit operation so that when a bulb burns out, the problem is not just that a button no longer lights up when touched, the button itself also ceases to work.
To be blunt, the circuit has not aged well over the decades. I’m sure those Philips designers were clever guys in 1971, but a design rule I learned early on is that circuit robustness is inversely proportional to the number of trim pots. The 212 has five trim-pot tweaks under the hood. I’m an old “analog” guy, so the decision to give up on the original circuit was not made lightly. Maybe this design made sense in 1971, but the more I stared at the circuit, a voice in my head became louder, telling that a little micro-controller could run the entire machine in its sleep.
The Philips 212 schematic and service manual are linked here: philips_ga212_sm
Almost everything on controller board can be replaced by a micro-controller. I used an Arduino Uno clone from Adafruit called the Metro Mini.
Schematics, board files and Arduino code can be found at: https://github.com/lens42/Philips-212-turntable-arduino-based-controller
FUNCTION RUN DOWN
Touch button sensing for 33 RPM, OFF, and 45 RPM — The original touch sensing design used finger impedance to draw a uA (or so) current that activates a discrete transistor flip-flop. Since CMOS logic and micro-controllers have VERY low input leakage current, I now simply connect the touch buttons to Arduino inputs and 10MegOhm pull-up resistors to 5V. A finger touch overdrives the pull-up resistor and forces an input low. All speed select and OFF logic is Arduino controlled.
33, OFF, and 45 button illumination — I replaced incandescent bulbs with white LEDs, mercifully retiring the old circuit that utilized the bulbs in the control logic.
33 and 45 fine speed adjust — The Arduino clock is more than precise enough to give the new design sufficient accuracy without needing adjustments, but the Philips 212’s fine speed adjust is still desired for occasionally tuning records up or down. In order to retain the outer appearance and functionality, two of the old potentiometers are mounted on the new board and read by Arduino analog inputs A0 and A1. A small adjustment (up to about 2%) is made to the speed controller set-point depending on trim pot rotation.
Motor speed control — The original circuit drove the motor with DC, controlled by feedback from a tachometer winding. In the old circuit, the tachometer sinusoidal output was rectified and filtered to supply a DC feedback signal. Rather than replicate that, I square up the tach’s sine output with a comparator (IC1A, LM339D), and then measure period by counting time between pulses. The tachometer period provides more accurate feedback, won’t drift, and requires no trim pots. Motor drive is from an Arduino PWM output (D11) and a MOSFET switch (Q1) connected to the 9V supply. The original drive was DC, but I took an educated chance that the 500Hz Arduino PWM output will look enough like DC to the motor. Additionally, the rubber drive belt and inertia in the platter smooth out the short drive pulses. I also opted for simple proportional control of the motor, and not PID, figuring to try the easiest path first. Turntable speed seems very stable with this scheme.
Power — The original circuit is powered from a discrete transistor -9V regulator circuit that was adjusted by yet another trim pot. This was replaced with fixed-output three-terminal linear regulator ICs (U1 and U2) to supply +9V motor drive, and +5V to power the Arduino, LEDs, and buttons.
Auto-Shutoff — A photo-resistor/bulb combination (R404 and LA412 in the old Philips schematic) is mounted on a bracket inside the turntable. This is the auto shutoff module. When the tonearm reaches the end of a record, a thin metal vane interrupts light from a bulb that falls on the photo resistor. I replaced the bulb with a small white LED, though there would really be no problem leaving the old bulb in and powering it from 9V through 36 Ohms (as in the original schematic), but I wanted all the incandescent bulbs out.
In order to minimize mechanical changes, I broke open one of the bulbs and soldered an LED in the bulb base. You could skip the bulb and solder the LED directly to the socket, but I found the socket’s plastic unable to take much heat and gave up on that idea. In the new circuit, the LED is powered from 5V through 130 Ohms, and the photo resistor is biased from 5V through 10 kOhms. The photo resistor voltage is read by the Arduino A2 input and compared to a selected threshold (see photo_trip below)
PCB and Mechanical — A new printed circuit board which matched the footprint of the original board was fabricated. This allowed easy board swapping with no special cutting or drilling. It was particularly useful to precisely copy the mounting hole locations and slot locations for the bracket that holds the speed adjust potentiometers. The new board also allows the button LEDs to be mounted to the PCB, eliminating some hardware and wiring.
The schematic and PCB were designed in Eagle. I have an Eagle Premium license, so my 5″ x 6″ board was not a problem, but it exceeds the 4″ x 6″ limit for Eagle Standard. The circuitry could probably be housed in as small as 2″ x 4″ with a a different mounting scheme however.
Arduino Sketch – This is my first Arduino sketch for a real project (as opposed to blinking LEDs and other tutorials). There is probably a lot of badly conceived code in this, but it does run. I’m sure the hive mind can improve on it. Please feel free to let me know in the comments how it can better. I won’t feel bad.
Calibration/Set-Up — Once the hardware is built and installed, control variables need to set. Since I’ve only modified one turntable, I don’t know if the values I chose will work for every GA212 (but you can certainly start with them). In order to perform set up, operate the turntable with the Arduino connected via USB to a computer running the Arduino IDE so that you can edit parameters and measure results.
I should note that I had no problem plugging and unplugging the USB connector to my laptop while the turntable was powered or un-powered. By the letter of USB law, you should not back-power a laptop USB output, which is sort of what I WAS doing when connecting my powered-on turntable to my laptop. But, since both sides (laptop and Arduino) are at 5V, there did not seem to be a problem. I can’t guarantee this will be OK every time. If you are worried about this, you’ll have to power off the turntable each time you upload a new sketch. I didn’t have the patience for that, but still lived to tell the tale. YMMV.
One other small note is that I put a small “mouse hole” in a corner of the plastic base so that I could run the USB cable out while machine was all together.
Four parameters need to be set. You’ll find these in the Arduino sketch:
t_err_range is the gain of the motor control loop. The code is such that a larger number equals lower gain. I set this by monitoring the PWM motor drive output with an oscilloscope to watch for oscillation in the pulse width, and testing different values (starting with 6000). The goal is to use the highest loop gain (lowest t_err_range) that is not so high that it causes oscillation in the PWM output. The t_err_range value I used was 7000. Unfortunately I can’t think of any way to test this without an oscilloscope, but if you don’t have one, you’d probably be fine just using 7000.
t_set_33 is the 33 RPM set-point for the motor controller. The number is the period of the tachometer output waveform at 33.3 RPM (in microseconds). Since the tachometer measures the motor (not the platter), which drives the platter via a belt and with a large speed reduction, the target period is not 1/33.3 RPM, but rather about 25ms, or a t_set_33 value of 25000. Note that any t_err_range adjustment requires a subsequent t_set_33 and t_set_45 readjustment since the control loop is not perfect and the actual output RPM depends both on the target period and the gain. The t_set_33 value used was 24650.
t_set_45 is the 45 RPM set-point for the motor controller. The same discussion in t_set_33 applies here. The t_set_45 value used was 17700.
The final values of t_set_33 and t_set_45 were determined by measuring platter RPM with a 60Hz strobe illuminating the strobe ring on the platter. My “strobe” was a white LED driven by a digital waveform generator with a 60Hz 20% duty-cycle square pulse. The generator frequency accuracy was more than adequate for this purpose.
photo_trip is the threshold of the auto-stop end-of-record photo sensor. A vane interrupts light to trigger auto stop, but the threshold may depend on the exact position of the LED and it’s intensity. I determined the correct threshold by serially monitoring the analog reading while moving the tone arm. The photo_trip value used was 800.
I had the boards fabricated by JLCPCB. https://jlcpcb.com/
In spite of the large board size, the price was less than $35 for 5 boards and slow shipping. I’ve had zero problems with JLC on about a dozen projects.
SPECIAL NOTES IF YOU DECIDE TO UNDERTAKE THIS MODIFICATION
- When taking apart the turntable, be very careful when disconnecting the wires from the touch buttons. The parts of the buttons that look like metal (the ring and dot) ARE NOT METAL. They are plastic with a metallized surface coating that is easily scratched. Also BE CAREFUL NOT TO LOSE THE TINY CLIPS that attach wires to the buttons. In hind sight it may be a better strategy to NOT remove wires from the buttons at all, but instead unsolder or cut the touch-button wires from the controller board and leave the buttons undisturbed. Then just solder the wire ends to the new board.
If I were to re-spin the board, this is what I would do differently (All these, except #5, are reflected in the latest board docs, but I have not fabbed rev 2 boards. My 212 works, so I’m done unless there is a big demand from readers.)
- Leave more space between AC transformer and Motor/Tach wire pads. There was no reason for 0.1″ spacing.
- Leave more space between the touch button wiring pads. Having them 0.1″ apart makes them more sensitive to board leakage.
- Add holes in the board at the center of the 45 and 33 RPM trim pots. It would help getting the pots lined up so the little knobs can be positioned more easily for reassembly.
- I put the Arduino in a socket header. It’s not super tight. I would add two holes so the Arduino can be secured with a tie wrap (as shown in my pics where I drilled the holes later).
- It’s not a “mistake” per se, but I thought about making the Arduino USB socket accessible (for future software upgrades?) without opening the turntable, but I didn’t do this)
So far this turntable has been working beautifully. As far as I can tell, the speed is at least as steady as the original, even with PWM drive to the motor and simple proportional feedback. I am very happy how this turned out, though it was a lot more work than I thought. I’ll leave it to others to decide if a Philips 212 warrants this level of effort to keep running. Though, now, the effort for others will hopefully be much less. This project was probably not justified from a purely economic standpoint, but it was an itch I had to scratch. The Philips 212 was a very nice, but not legendary, machine like Thorens, but it has good “bones”. If you have one that’s mechanically sound, but collecting dust because of controller problems, this may be a nice resurrection project.
I have not thought about whether I want to supply boards or parts. I’ll have to see what the reaction is to this post. It was certainly not a money making enterprise.