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.

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

12 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.

  3. Jones says:


    Can I using arduino nano for this project?

      • Jones says:


        I have this tuner from Aiwa mini compo. I am still confused about how to move from FM to AM.

        one more, can I add a mp3 player chip, how to make the song that is currently playing displaying on the screen.

        sorry to ask a lot….i am still analog mind, newbie in digital.

  4. Antonio Lynch says:

    I need some help. I’ve tried this with four different tuner and none work. Please help.

  5. shakil ali says:

    thank you for this project. first of all i am sorry for my questions….can i use arduino ide to upload the file? arduino ide can take .ino file, but i dont find it in your program …there is a file called ” main.c” is that the file? OR there is two .hex files inside bin folder, .hex file can be uploaded using xloader to arduino uno…… how do i upload the file to arduino uno..help.

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