FM радио модуль RDA5807M

Однажды на страницах Aliexpress наткнулся на интересную и недорогую микросхему – RDA5807m. Это FM тюнер, в распоряжении которого имеется IC интерфейс, стерео выход звука, цифровые настройки громкости звука, частоты радиостанции, поддерживается RDS. Такое радио часто можно встретить в формате модуля, на котором расположена микросхема тюнера, кварц на частоту 32,768 кГц и пара конденсаторов – ничего особенного просто чуть удобнее паять. И в честь этой покупки предлагаю рассмотреть конструкцию на микроконтроллере несложного радиоприемника.

Лот на Aliexpress

Характеристики FM-тюнера RDA5807m:

  • Все в одном корпусе, практически не требуется внешних компонентов
  • КМОП технология
  • Полоса частот от 50 МГц до 115 МГц
  • Настраиваемый шаг между каналами – 200 кГц, 100 кГц, 50 кГц, 25 кГц
  • Поддерживает RDS/RBDS
  • Высококачественный АЦП
  • Синтезатор частот полностью встроен в микросхему
  • Автоматическая регулировка усиления
  • Цифровое адаптивное подавление шума
  • Поддержка выхода звука как в моно, так и в стерео
  • Индикатор уровня сигнала (Receive signal strength indicator — RSSI) и SNR
  • Усилитель низких частот
  • Регулировка звука и функция mute
  • Цифровой интерфейс IC
  • Нагрузка на выходе звукового канала 32 Ом
  • Встроенный LDO регулятор
  • Корпус MSOP (10 выводов)

Электрические параметры FM тюнера RDA5807m:

  • Напряжение питания — 3 вольта (от 1,8 до 3,3 вольт)
  • Температура окружающей среды — 27 градусов Цельсия (от -20 до +75 градусов Цельсия)
  • Ток потребления в рабочем режиме — до 21 мА
  • Ток потребления в спящем режиме – 5 мкА
  • Коэффициент нелинейных искажений – 0,15 – 0,2 %
  • Максимальная частота I2C – 400 кГц

Схема радиоприемника на базе тюнера RDA5807m:

Схема радиоприемника на базе тюнера RDA5807m

В качестве микроконтроллера будем использовать ATmega8a. Это очень популярный и общедоступный микроконтроллер. Использовать его можно как в DIP корпусе, так и в TQFP (здесь только расположение выводов различается для этой схемы). Для продолжительной корректной работы этого микроконтроллера на выводе reset должен быть положительный уровень напряжения, для этой цели используется резистор R1, который подтягивает напряжение питания, создавая надежный потенциал, что предотвращает самопроизвольное перезапускание микроконтроллера. Кнопка S1 предназначена для ручной перезагрузки микроконтроллера. В качестве тактового генератора используется внутренний RC генератор на частоту 8 МГц. В качестве индикатора в схеме используется ЖК дисплей на базе микроконтроллера PCD8544 или более известен этот экран по названию Nokia 5110 или Nokia 3110. Для подключения такого дисплея к микроконтроллеру не нужны дополнительные компоненты, все соединяется в соответствии со схемой. Вся схема устройства питается от напряжения 3,3 вольта, которые получаем посредством стабилизатора AMS1117-3,3. Однако для получения звука достаточной громкости необходимо использовать усилитель звука, который питается от более высокого напряжения. В схеме применен усилитель на базе микросхемы TDA7056B, однако этот усилитель можно заменить на абсолютно любой другой, подходящий для вас. Данный усилитель звука имеет регулировку громкости потенциометром R6. Схема усилителя построена в соответствии с даташитом, хотя ее можно и доработать для более качественного звука. TDA7056B является моно усилителем, поэтому от модуля RDA5807m берем только один канал звука, либо параллелим их вместе. Если использовать наушники с сопротивлением 32 Ом, то можно слушать радио без усилителя, согласно даташиту на тюнер. Для усилителя на TDA7056B оптимально использовать динамик с сопротивлением 8 Ом. Модуль радио RDA5807m получает настройки от микроконтроллера посредством цифрового интерфейса I2C. Для работы I2C необходимы резисторы R3 и R5, которые формируют положительный перепад напряжения на линиях передачи данных. Из особенностей I2C в RDA5807m необходимо отметить, что в модуля нет возможности обратиться к конкретному регистру, чтобы настроить параметры в одном регистре, необходимо перезаписать и все остальные. После старта I2C и передачи адреса микросхемы с битом чтения или записи указатель регистра автоматически становится на начало регистров чтения или на начало регистров записи и после обращения к одному (первому) регистру указатель автоматически переходит на другой (второй, третий и так далее) регистр. Диаграмму формирования сигналов по линиям I2C для модуля RDA5807m можно посмотреть в даташите, который прилагается в конце статьи. Там же находится и карта регистров радио. Мое мнение, такая организация управления достаточно неудобная, хотя и имеет место быть. Ну и наконец, в схеме есть четыре кнопки – S2 – S5, которыми можно настраивать частоту радиостанции или перебирать список радиостанций для города Минска.

По поводу работы радио. Принимает модуль RDA5807m сигнал радио достаточно уверенно, иногда лучше радио, встроенного в мобильный телефон, иногда хуже. При этом в качестве антенны использовался кусок провода (примерно 50 см) и к тому же все это располагалось вблизи от WiFi антенны, которая, скорее всего, вносила помехи в прием. В разное время суток качество сигнала может отличаться по множеству причин.

Все это безобразие собиралось, проверялось на отладочной плате:

Усилитель на TDA7056B собран на отдельной плате в виде небольшого модуля:

Форм фактор модуля RDA5807m не очень удобный, поэтому был изготовлен небольшой переходник на штыревые соединения с шагом между гребенками для установки на беспаечную макетную плату:

Распиновка модуля радио, согласно источникам, изготавливавших этот продукт:

Переходник на штырьки сохраняет порядок расположения выводов исходного модуля.

Ну, и микроконтроллер Atmega8a в минимальной отладочной плате:

В память микроконтроллер изначально записаны 15 популярных радиостанций города Минска (к слову схема адаптирована только к этому городу по сохраненным в памяти частотам радиостанций, однако при желании можно настроить под любой другой город, либо вручную сохранять заданное количество станций). Перебор сохраненных станций осуществляется кнопками S4 и S5, последняя выбранная станция сохраняется в eeprom и загружается при следующем включении. Обычный поиск радиостанций осуществляется кнопками S2 и S3, шаг составляет 100 кГц. Будем считать данный функционал основой, а любые изменения можно внести в исходный код, предоставленный в конце статьи, перекомпилировать и получить новую прошивку.

В целом RDA5807m достаточно неплохой тюнер среднего уровня, набор настроек позволяет использовать практически любые функции, связанные с приемом радиосигнала. Размер же самой микросхемы и отсутствие необходимости в обвязке большим количеством дополнительных элементов позволяет встраивать радио почти в любое устройство.

Для программирования микроконтроллера необходимо знать конфигурацию фьюз битов, скриншот из AVR Studio:

К статье прилагается прошивка для микроконтроллера ATmega8a, исходный код в программе AVR Studio 4, даташит на RDA5807m и небольшое видео.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 МК AVR 8-бит ATmega8A 1
IC2 Аудио усилителья TDA7056B 1 Или любой другой усилитель
IC3 Радио модуль RDA5807M 1 Готовый модуль с обвязкой
VR1 Линейный регулятор L7805AB 1
VR2 Линейный регулятор AMS1117-3.3 1
C1, C4, C5, C7, C12 Конденсатор 100 нФ 5
C2 Электролитический конденсатор 470 мкФ 1
C3, C9 Электролитический конденсатор 10 мкФ 2
C6, C10 Электролитический конденсатор 220 мкФ 2
C8 Конденсатор 470 нФ 1 Пленочный
C11 Конденсатор 1 мкФ 1
R1, R3, R5 Резистор 10 кОм 3
R2 Резистор 4.7 кОм 1
R4 Резистор 100 кОм 1
R6 Переменный резистор 1 МОм 1
HG1 LCD-дисплей PCD8544 1 Nokia 5110
S1-S5 Тактовая кнопка TC-A109 5
Ls1 Динамик 3 Вт 1 Сопротивление 8 — 32 Ом