A simple AVR controlled FM receiver.

In my everyday life I listen to the radio a lot. Some days ago, my home FM receiver din;t want to cooperate with me. It would turn on or off by it self, change the station etc. Most probably a switch contact must be dirty. I decided to take it apart and thoroughly clean it. When I tried to unscrew it, I saw that it is using safety screw and it needs a 20+ centimeter (8+ inches) screw driver. It seemed easier to me to design and make a new FM radio receiver, than go search and buy an appropriate screw driver…

I opened my drawer with the various parts from home appliances and found two digitally controlled tuners. One it was from an old TV and FM PC card, from Philips (controlled via I2C bus), and one tuner from and old home HI-FI receiver, with no markings. I decided to use the second one. The presence of TV signal to the first, discouraged me a bit.

Upon taking apart the tuner, I saw it uses two Sanyo (now ON Semi) integrated circuits. To LC72131M witch is PLL Frequency Synthesizer and the LA1837M, witch is a single chip AM/FM tuner ic. LC72131 in order to communicate with it environment, uses a Sanyo SPI like bus. Sanyo calls it CCB (Computer Control Bus). Since it resembles to an SPI bus it is really simple to be implemented in software (Bit Banging).

The problem was that the tuner was completely anonymous. No markings no nothing. It uses a 15 pin header connector, without any infos on the pins. I grubbed my multimeter and started reverse engineering the pins. After some minutes (with the help of the integrated circuits datasheet) I knew what every pin’s function is. After that it came to me the model of the HI-FI I had removed the tuner, found its schematic diagram over the internets, and confirmed my findings.

I grubbed an AVR development board (Arduino UNO), witch utilizes an ATmega328p micro (it is an overkill for this project), a 16×2 liquid crystal display and started building the circuit. I an hour or so, I had started writing the code (in plain C) in Code::Blocks. In the afternoon I had a working code capable of sending commands to the tuner and tune it in stations. Next day I had a fully functional FM radio receiver with a display for the frequency, Stereo mode, and PLL tune indicator. It is controlled by three dip switches. Two for increasing and decreasing the frequency and one for manual or automatic tuning.

All the files (photos, datasheets, schematic, code) for this project are available on my GitHub page HERE. For this implementation I have not enabled the AM capabilities of the synthesizer and the tuner, as I don;t care for AM stations. It is fairly easy though for someone to enable it. The code is well documented.

I might continue adding features. Memory storing for my favorite stations, IR control etc.

Advertisements
This entry was posted in AVR, Electronics, Science and tagged , , , , , , , , , , , . Bookmark the permalink.

3 Responses to A simple AVR controlled FM receiver.

  1. Marius says:

    Absolutely amazing! Ingenious idea.
    Although I’m not at all skilled in electronics (I know only the very basics of it), I would love to give a try. I have 1-2 radio-tuners in my trash box. Hopefully, I’ll take some time for it in the near future. 🙂
    Keep in touch.

  2. metrologsastem says:

    How did you flash arduino. Found your project. But I did not understand what program you used during development. And if you can podstkazhite which of the project files is firmware. Sincerely.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s