I recently bought a new tuner that is about 30 years old: a Carver TX-11a made in 1988. While it sounds amazing, it’s a little annoying that there is no way to control it from my sofa. So I’m looking into building a little remote control for it, and I’m collecting some research on how to talk to its controller with a micro controller.
The main thing I’m after is being able to change the station, but I also want to be able to turn it on and off remotely if possible. My receiver has a 12V output to turn components on and off, which would be nice to use as well (though I want to be able to turn the tuner off even when the receiver is on, for when I’m streaming or using my turntable). I’ll cover that part in a separate post.
The tuner has 13 frequency presets, which is odd until you realize that it shares the button layout of its predecessor, the TX-11 (which had 16). Three of the preset buttons were reused for other purposes when the AM tuner was added to make the TX-11a. I only use four presets, though, so that’s plenty for me.
It turns out that the repair manual for the tuner is available online, which includes schematics and lists of all the parts. The component that provides the frequency reference and handles much of the user interface is a Toshiba TC9147BP. Its data sheet is also easy to find online.
The TC9147BP comes in a big 42-pin DIP and runs on 5V with TTL logic levels (presumably 3.3V logic will work for inputs, but I haven’t tested that). It has inputs for the memory buttons, and it sends the selected frequency to a display component.
The pins labeled M1 through M8 are used together with MC1 and MC2 to indicate which of the memory buttons are pressed.
My guess is that I can just connect micro controller pins directly to the inputs and not interfere with the buttons as long as the µC pins are set up as inputs (so they float). To simulate a button push, I just need to set the relevant ones to outputs and pull them high for a short period of time.
If that is correct, all I need is a total of ten pins and no external parts for this. I could get away with a lot fewer, since I don’t need all 16 presets, but it’s more fun to go for the full set! Also, this would even let me use presets that I can’t even access using the buttons!
Reading the Selected Frequency
Reading the frequency is done by monitoring a pin named DATA as well as CK1/CK2:
I don’t know why there are two clocks. The MUTE signal could act as a sort of chip select signal in the SPI sense, but even that seems unnecessary. The detailed view of the start of the sequence looks pretty straight-forward:
It should be possible to just look for the long (100µs) clock pulse and then clock in 17 bits into a 16-bit variable (the first one is garbage). An input with a trigger on the rising edge for the clock and another input to read the current state of the DATA line should be all it takes to read this data. The clock runs at 10kHz, so this should be pretty easy to keep track of.
From there, it’s then just a matter of figuring out the actual frequency and mapping that back to the station preset. The frequency is encoded as the distance from the lowest frequency in that band. I’m really only interested in FM, so the number should be added to 87.5MHz for that (or 520kHz if I want to also support AM just in case).
The next steps from here will be to open the thing up and monitor the data output to see if it works as I expect, and test the switching by attaching a µC to some button pins and have it switch back and forth. If that works, I’ll figure out how to tell the µC what to do (I’m thinking an infrared remote control).