9 Oct 2014

Using a Trinket with a turntable? Okay.

So I received one of these at the office to install:

That's right, vinyl! Back? Never gone. Our '80s era Technics (or rather the PSUs and pre-amps) are showing their age and we wanted to bring something current. The Stanton ST.150 Turntable is a nice one too. Really powerful motor, heavy base, tons of features.

 It's getting lots of love from professional DJs, but in the radio broadcast world there are two problems. One, the outputs are either consumer level unbalanced out or SPIDF digital. I avoid line level converters wherever I can and on the digital side it's AES/EBU.  This is easy enough to fix with a SPDIF to AES adaptor.

The other, bigger problem is it has no remote logic, which is something we really need to start and stop the turntable from a button press on the console.

So I'm going to void some warranties and add some basic start/stop logic using a Adafruit's awesome and tiny Trinket microcontroller.

So first a look at the guts...

The ST.150 starts and stops by pressing either one of two large buttons.  Each momentary press toggles the state of the motor by pulling a single +5V signal to ground.  I was able to trace this back to the last pin of the first internal connector.  The console however uses two discreet start/stop closures.  This is where the Trinket comes in.

With a bit of sleuthing with a multimeter, I located a logic output on pin 3 of connector 2.  Whenever the motor is running it goes high (+5V).  The Trinket will read this status to determine which logic from the console it should pay attention to: if status is low then pulse the logic only when it receives the start closure, and when high only pulse when receiving a stop.

I use an Arduino Uno to prototype so I easily get the serial feedback.  One thing I discover is the motor status does not go low until until the platter fully stops and the brake releases.  So there is a small window that long pulse from the console could be seen as a start false trigger.  To fix this I introduced a delay to lock out further triggers in that section of code.

Because the Start/Stop buttons on the ST.150 are a dry contact, I use a 5V relay to provide the trigger.  The logic out on D3 from the Trinket goes to the base of a npn transistor to trigger the relay.

Once I'm happy with the Uno prototype I can miniaturize it to the Trinket.  There is some tweaking of the code to get the Trinket to work (for example I can't use pin D1 as a pull-up input).  Then it's soldering time.

For power I took power of the turntable's 12V regulator.  The current draw is pretty small, only 35mA will idling.  It peaks to 80mA when receiving a stop pulse and energizing the relay.

The base of the turntable had enough room the mount the board.  I just used some carefully placed velcro.

If you look at the schematic, I have added a SPST switch in series with the resistor.  This is optional and isn't on the board built here.  This is because my original timing for the stop pulse mentioned above was incorrect. I was forced open it up again and reflash the Trinket.  Only problem is, D3 is shared with the USB port and won't work with a load on it. So I was forced to desolder the resistor to upload my tweaked sketch. The switch will eliminate some hassle.

Here's the sketch:
You can also view or copy the sketch here.

See below for a few more pics and the schematic.

Trinket board in its home inside the ST.150 base.  D0 and D2 are wired out to the console's On/Off logic.  And ready to spin in its new home...

And finally the schematic...

I've tinkered around with the Arduino based stuff, but this one is my first practical, permanently wired project. It went great and with any luck, helped convince the office to help fund my Arduino habit.

No comments:

Post a Comment