Is this possible? Display of radio frequency by reading existing circuit

Hello,

I’m an amateur hobby tinkerer at best so I apologise in advance if I ask stupid questions, but I am a quick learner. :slight_smile:

I have a Hitachi TRK-3D8E that was recently given to me.

It’s in poor condition cosmetically and has a faulty EQ along with a few other things but overall is functional. Because it’s not a great example and has little value, I’ve decided to drastically renovate it. Along with some modifications to the drivers, adding additional drivers, changing amplifiers and theming it, I would like to add a small display that shows some basic information.

The hardware I have available to me right now is an Arduino Uno and a small 4 line display. I’ve had these in a box for a while and haven’t yet braved tinkering with them.

I would like to achieve the following:

  1. Display a welcome message on power on
  2. Display the current input (tape, radio, aux etc)
  3. Display the frequency of the radio

I am aware that 1 and 2 are easily achievable but I am unsure on number 3. I was looking at this: https://create.arduino.cc/projecthub/mircemk/diy-retro-look-fm-radio-with-tea5767-module-370b88 and I like the way it displays the information.

The difference with my project is that I require to read the existing circuit as this will remain unchanged, and then display this information. Is this even possible? The above project uses a radio module that is not needed in my case.

Here is a picture of the switches on the top:

The EQ is faulty, so I will replace it with a better 7 band one. I have roughly marked this in blue. This means that the screen will sit approximately where I have indicated in red. As a result, the radio’s mechanical frequency display will not be possible, and will have to be removed.

If I understand correctly, I can use the Uno’s analogue pins to detect voltage on the switch positions and display “Tape” or “Radio” on the display, but I am hoping it will also be possible to do the same with the radio frequency.

I have the service manual and additional pics of the PCB but I am unable to attach the pdf or too many images as a new forum user.

Is what I am hoping to do possible?

Further to the above, I have hashed together this from looking through examples:

// LIBRARIES

#include <Wire.h>
#include <LiquidCrystal_I2C.h>  // Version 1.1.2

LiquidCrystal_I2C lcd(0x3F,20,4);     

const int ch_1 = A0;                                         // Inputs from source switch
const int ch_2 = A1;
const int ch_3 = A2;
const int ch_4 = A3;
const int ch_5 = A4;

int curr_source = 0;                                         // Used to store which source is currently displayed

void setup()
{   
  pinMode(ch_1, INPUT);
  pinMode(ch_2, INPUT);
  pinMode(ch_3, INPUT);
  pinMode(ch_4, INPUT);
  pinMode(ch_5, INPUT);
  pinMode(status_led, OUTPUT);
  digitalWrite(status_led, HIGH);
  
  state = STATE_WAITING;                                    // Initial state: Waiting for prefix

  lcd.init();                                                // Initialize the lcd
  lcd.backlight();                                           // Turn ON LCD backlight 
  lcd.clear();

  lcd.print("** Audio Source **");
}


void loop()
{
  if (state == STATE_WAITING)
  {
    check_source();
  }
}

void check_source (void)
{
  if (digitalRead(ch_1) == HIGH)
  {
    if (curr_source != 1)
    {
      lcd.setCursor(0, 2);
      curr_source = 1;
      lcd.print("Radio: AM");
    }
  }
  else if (digitalRead(ch_2) == HIGH)
  {
    if (curr_source != 2)
    {
      lcd.setCursor(0, 2);
      curr_source = 2;
      lcd.print("Radio: FM");
    }
  }
  else if (digitalRead(ch_3) == HIGH)
  {
    if (curr_source != 3)
    {
      lcd.setCursor(0, 2);
      curr_source = 3;
      lcd.print("Aux In");
    }
  }
  else if (digitalRead(ch_4) == HIGH)
  {
    if (curr_source != 4)
    {
      lcd.setCursor(0, 2);
      curr_source = 4;
      lcd.print("Wifi");
    }
  }
  else if (digitalRead(ch_5) == HIGH)
  {
    if (curr_source != 5)
    {
      lcd.setCursor(0, 2);
      curr_source = 5;
      lcd.print("Cassette");
    }
  }
}

What is the voltage limit for an Arduino Uno per one of the analogue pins? The Hitachi runs on 12V.

My display has an I2C connection, which as I understand it can only be connected to the analogue pins? Since I need 5 analog pins for source detection, is the only option to either connect without I2C or to drop one of the inputs?

The current inputs are:

  1. Radio FM
  2. Radio AM
  3. Aux In - when the hitachi's source switch is in the aux / line in position
  4. Aux in (Wifi) - when the hitachi's source switch is in the aux / line in position AND a seperate board is powered up
  5. Tape

I suppose I would never actually use AM radio... or I could just leave it undetected but that seems pretty sloppy. Open to suggestions!

The critical part is finding from a wiring schematic how the frequency output works ; then you can design something to work with it .

Arduino UNO/Mega Input levels are 5v , you can use a potential divider to drop 12v to 5v for these.

Anything’s possible , why to do it is a different question

Hello
You may find some good ideas here. Take a view:
https://create.arduino.cc/projecthub/projects/tags/radio

Thank you both for the replies.

@hammy I have service manual, but I am not sure what I am looking at! :weary:

I am not allowed to add attachments else I would add it here.

If you don’t mind following external links, here it is somewhere else: https://we.tl/t-8EP6znnaKy

@paulpaulson I had already looked through those but I couldn’t find anything that suggested it would read an existing circuit. Are you suggesting that it may be easier to use one of those projects and replace the built in radio?

Hello
That depends on the accesabilty of the schematic to the existing radio.
And how to find where the signal for the freqeunce processing are.

A problem that you will face, is that there is no voltage on some of the switches you mention, such as the input selector. The frequency can be found by sampling the VFO oscillator, but be aware that it is at a very high frequency, at least for FM broadcast.

That frequency is normally 10.7 mHz below the dial frequency. You need a circuit to square that sine frequency and then divide it down by some integer value and then measure the resulting square wave with your Arduino. Use math to compute the dial frequency.
Paul

Oh right. I assumed the switch would literally supply voltage to that part of the circuit. I will run a meter across them when I get back later and see what’s what.

If there’s no voltage to read, what are my options?

I haven’t run a meter across them yet, but here’s a photo of the pins on that main selector switch:

That seems like an awful lot of pins for 4 positions.

I will post again when I know a bit more.

Edit: better image.

Also, I’ve just found this in the service manual:

Looks like for each of the switch positions F, A, L and T 5.2V is supplied on one side.

F - Radio FM
A - Radio AM
L - line in / aux
T - tape / cassette

Edit:

Also this:

Can anyone help me interpret this?

No, because a signal comes into the left side from who knows what source? This is the hardware equivalent of a "snippet" and only very general conclusions can be reached from it. A full schematic (and a few hours of study) is assuredly needed.

I don't agree with your conclusion, either. I suspect those are a mixture of digital and analog signals.

...and... you will face decoding problems for the digital signals because they are using some "wire logic" like the connection between "A" and "L" on the switch you circled in red. Since they're connected, you can't distinguish between those two positions, based on the voltages there alone.

That switch is not doing selection, it's changing options according to the selection.

Ok, thanks for the advice. I didn’t have time to look at it yesterday, I’ll be taking a look today.