To avoid COVID-19 lockdown-induced insanity, I was searching around for things to do when I found this old Hitachi WM-860E car radio that I’ve had lying around for years. It’s probably an early 70’s model with SW, LW & MW bands, all mono. I powered it up and it worked reasonably well on MW & LW, although with lots of interference but couldn’t get anything on SW (except noise). (This isn’t my radio in the two photos below – I forgot to take pics before I started stripping it down – but this the same model).
I had a spare TEA5767 FM radio module and some ATMEGA328Ps lying around so decided it would be a useful COVID-19 project to rip out the old electronics and replace with a modern, highly integrated digital design. I’d also use it my next classic restoration, if the lockdown ever ends and I’m still able to restore another car.
So, here’s the stripped down chassis minus the electronics and electro-mechanical tuning mechanism (which is a work of art incidentally). I’ve locked the keys into position and they can’t be used anymore. I’d have to replace the original potentiometers are they were too noisy to be of any use. I also ended up replacing the tuning knob shaft as it proved too impractical to re-use.
The replacement electronics would be based around the TEA5767 FM radio and TDA7376 power amplifier. It would have a 128 x 32 OLED display sitting behind the radio graticule to provide tuning information and a 74HC4053 analogue switch would be used to select between the FM radio or an external auxiliary input. It would be controlled with an ATMEGA328P 8 bit microcontroller c/w Arduino bootloader. Decided to make two modules 1) The controller and FM radio and 2) the amplifier. This gives some flexibility to make changes without having to ditch the whole effort.
I made the PCB’s using the hot iron toner transfer process. Here’s the controller & FM radio board:
Unfortunately, in my ham-fisted soldering attempts I pulled one of the pads off the TEA5767 module but managed to make contact on the other side of where it was supposed to be soldered. So had to invert it and solder it to the bottom of the board:
There’s header connectors for the amplifier, an OLED display, rotary encoder (for tuning and mode selection) and a serial port for programming. The amplifier header supplies left & right audio, +5V plus source select and mute signals. There’s a couple of unused headers for analogue & digital I/O if ever needed in future.
The amplifier module has headers for the primary input from the controller/radio board, volume control and the auxiliary input (INPUT_2). The analogue switch (74HC4053) is not fitted in this photo but is bypassed to allow experimenting with the attenuation. I finally settled on attenuator values that gave me around 12W total output – well within the maximum 35W rating per channel. At full volume, it easily fills a large room and there’s very little discernable distortion at this power level. The sound quality and clarity is also very good.
Here’s the assembled radio (with a shortened case and a new backplate). The rotary encoder is on the right – I made some 3D printed parts to mount it and couple it to the input shaft. The heatsink is fashioned from a lump of ally I found in the scrap bin – it works very well! The volume control potentiometers from ebay are new-old-stock and fitted nicely. I’ve still got to add the auxiliary input and aerial connectors.
Here it is powered-up (I had to discard the original knobs as they wouldn’t fit the new potentiometer & encoder shafts):
You have to look hard and cock your head a bit to see the tuning data on the OLED. If you don’t know the OLED is there you’d easily miss it. And this is exactly what I wanted.
In summary, the “new” radio provides:
Digitally tuned FM Radio
87.5 – 108 MHz
10 preset stations
Manual tuning mode
Auxiliary input for DAB, iPod, etc.
12W power output
The PCB design data & circuit diagrams are available here in PDF form plus the source files for Design Spark PCB V9.0.2 from RS Components.
The software and libraries are here. It was compiled with the Arduino IDE V1.0.6 and uses the following public libraries: Wire.h, EEPROM.h and the SSD1306Ascii-1.1.3 library by William Greiman.