SDR радио на Arduino и DDS модуле AD9850


Программно определяемое радио/радиосистема (Software-defined radio, SDR) – радиопередатчик и/или радиоприёмник, использующий технологию, позволяющую с помощью программного обеспечения устанавливать или изменять рабочие радиочастотные параметры, включая, в частности, диапазон частот, тип модуляции или выходную мощность, за исключением изменения рабочих параметров, используемых в ходе обычной предварительно определённой работы с предварительными установками радиоустройства, согласно той или иной спецификации или системы (Википедия).

SDR выполняет значительную часть цифровой обработки сигналов на обычном персональном компьютере или на ПЛИС. Целью такой схемы является радиоприёмник или радиопередатчик произвольных радиосистем, изменяемый путём программной переконфигурации (отсюда происходит альтернативное наименование таких систем — программно конфигурируемые). В настоящее время подобные радиосистемы находят широкое применение, одним из их основных достоинств является возможность обслуживания большого количество радиопротоколов. Ряд экспертов полагают, что в будущем технология SDR станет доминирующей среди всех радиосистем.

Внешний вид проекта SDR радио на Arduino и DDS модуле AD9850Оборудование для SDR обычно состоит из супергетеродинного приёмника, который преобразует сигнал с радиочастоты на промежуточную, аналого-цифрового и цифро-аналогового преобразователей (АЦП и ЦАП).

В данной статье мы рассмотрим реализацию технологии SDR на основе платы Arduino и DDS модуле AD9850.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. ЖК дисплей 16х2 (купить на AliExpress).
  3. DDS модуль AD9850 (купить на AliExpress).
  4. Инкрементальный энкодер c кнопкой (Rotary Encoder) (купить на AliExpress - не уверен в том, что в нем есть кнопка, но она точно есть в этом лоте - купить на AliExpress № 2, но он продается, к сожалению, только по 5 штук).
  5. Микросхема 74HC4066.
  6. Транзистор BF494 (2 шт.).
  7. Транзистор BC547 (2 шт.) (купить на AliExpress).
  8. Варикап BB212 (2 шт.).
  9. Резисторы, конденсаторы, катушки индуктивности согласно далее представленной схемы.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Основные принципы работы проекта

"Сердцем" проекта является DDS модуль AD9850, подключенный к плате Arduino. Аббревиатура DDS (Direct Digital Synthesis) означает прямой цифровой синтез. При этом способе любой сигнал можно сформировать в цифровом виде, а затем преобразовать его в аналоговый вид с помощью цифро-аналогового преобразователя (ЦАП). Ранее на нашем сайте мы рассматривали эту технологию в проекте генератора сигналов на Arduino и DDS модуле AD9833.

AD9850 – это устройство с высокой степенью интеграции, в котором используется комбинация усовершенствованной технологии прямого цифрового синтеза (DDS, direct digital synthesis), высококачественного цифро-аналогового преобразователя и компаратора, обеспечивающая функции синтеза частоты с цифровым программным управлением и генерации тактовых сигналов. При работе от точного опорного источника тактового сигнала AD9850 формирует стабильный аналоговый выходной синусоидальный сигнал с программируемыми частотой и фазой. Этот синусоидальный сигнал может быть использован непосредственно в качестве источника частоты или преобразован внутренними средствами компонента в прямоугольное колебание. Более подробно о данном модуле можно прочитать на сайте analog.com.

Внешний вид DDS модуля AD9850 показан на следующем рисунке.

Внешний вид DDS модуля AD9850

Ранее автор данного проекта (ссылка на оригинал приведена в конце статьи) создавал на основе модуля AD9850 и платы Arduino простой генератор переменной частоты (VFO), работу которого можно посмотреть в следующем видео:

Этот проект генератора переменной частоты он и использовал в качестве основы для создания данного проекта SDR радио на Arduino и DDS модуле AD9850.

Схема проекта

Аналоговая часть схемы нашего SDR приемника на основе платы Arduino и DDS модуле AD9850 представлена на следующем рисунке.

Аналоговая часть схемы SDR приемника на основе платы Arduino и DDS модуле AD9850На входе схемы стоит приемник прямого преобразования (Direct Conversion receiver), на входе которого находится аттенюатор, роль которого выполняет потенциометр 1 кОм. Далее в схеме идет преселектор (входная цепь), переключаемый между диапазонами 7-14 МГц и 14-30 МГц. Настройка преселектора осуществляется с помощью потенциометра. Напряжение настройки стабилизируется с помощью варикапов BB212, но вместо них можно использовать и стабилитрон (zener diode) на 6.8 V или 8.2 V.

Далее в схеме располагается усилитель радиочастоты (УРЧ), который улучшает чувствительность приемника и предотвращает просачивание сигнала гетеродина (смесителя) в антенну. Смеситель построен на основе переключателя 74HC4066. С помощью потенциометра 5 кОм производится обнаружение самого слабого AM сигнала от мощных вещательных станций. Чаще всего это производится на критической (граничной) частоте, которую можно найти при помощи перестройки преселектора по диапазону частот. За смесителем следует однотранзисторный усилитель, выход которого подключается ко входу звуковой карты компьютера.

Цифровая часть схемы SDR приемника на основе платы Arduino и DDS модуле AD9850 представлена на следующем рисунке.

Цифровая часть схемы SDR приемника на основе платы Arduino и DDS модуле AD9850Аудио фильтрация выполняется одной из бесплатных программ для цифровой обработки сигналов (DSP), например:

  • HDSDR "http://www.hdsdr.de";
  • SDRadio "https://www.sdradio.eu/weaksignals/sdradio/index.html".

Автор проекта использовал программу SDRadio как самую простую для обработки радиосигналов. Также с нашим приемником можно использовать бесплатную программу "MULTIPSK" (http://f6cte.free.fr/index_anglais.htm), с помощью которой можно декодировать различные цифровые радиосигналы, например, от WeatherFAX – это можно посмотреть на представленном ниже видео проекта.

Во время записи видео условия для распространения коротких волн (SW) были достаточно плохими, по сравнению с RTLSDR наш проект обеспечивает немного более худшие результаты, но зато как приятно будет многим насладиться приемом коротких волн на радиоприемнике, собранным своими руками.

Исходный код программы (скетча)

Полный комплект всех необходим программ и библиотек для данного проекта от его автора можно скачать по этой ссылке. Здесь, в коде программы я привел только файл основной программы проекта из скачанного архива под названием AD9850_LCD_ROTARY_WMENUS.ino с частично переведенными мною комментариями.

Скетч в файле AD9850_LCD_ROTARY_WMENUS.ino используется для формирования сигнала на выходе схемы в диапазоне от 1 до 30 МГц. Начальная частота устанавливается при помощи внесения изменений в строку: int_fast32_t rx=7200000. Значение частоты на выходе проекта отображается на экране ЖК дисплея 16х2. Если у вас есть возможность воспользоваться калиброванным частотомером, то его с помощью вы можете настроить частоту int32_t freq = frequency * 4294967295/125000000;" чтобы на выходе модуля AD9850 обеспечить более точное значение частоты. При использовании данного скетча вам не нужно подключать переключатель и резистор к контакту A5 платы Arduino.

Также в скачанном архиве проекта вы найдете скетч с именем AD9850_LCD_ROTARY_WMENUS_IF. С помощью этого скетча на выходе устройства также формируется частота в диапазоне от 1 до 30 МГц. Но данный скетч также использует и промежуточную частоту (Intermediate frequency, IF). Начальная частота настраивается также, как и в предыдущем скетче. В случае использования данного скетча вам необходимо подключить переключатель и резистор к контакту A5 платы Arduino как показано на представленной выше схеме проекта. Промежуточная частота (IF) в данном скетче задается с помощью строки: int_fast32_t iffreq = 4192000. Это значение частоты будет вычитаться из частоты нашего основного сигнала. Когда контакт A5 платы Arduino будет замкнут на землю (на нем будет low), то выходная частота и частота, отображаемая на ЖК дисплее, будут равны. А когда на контакте A5 платы Arduino будет напряжение высокого уровня (high), то выходная частота устройства будет равна разности частот, отображаемой на ЖК дисплее, и промежуточной частоты.

Видео, демонстрирующее работу проекта

Также можете посмотреть еще очень подробное обучающее видео (на английском языке) по принципам работы технологии SDR (если кто то хочет разобраться в этих вопросах поглубже).

Источник статьи

(Проголосуй первым!)
Загрузка...
8 232 просмотров

Комментарии

SDR радио на Arduino и DDS модуле AD9850 — 18 комментариев

    • Ну что я могу поделать, это все санкции которые если верить ТВ не работают. Сейчас на многие западные ресурсы доступ из России заблокирован

  1. Представленная схема синтезатора на arduini nano, а библиотека представленная в тексте на arduino uno. В проекте также дана схема синтезатора на arduino uno. Скетч данного проекта не компелируется с представленной схемой с Ардуино нано. и работать не будет. Дайте пожалуйста библиотеку для arduino nano.

    • А разве библиотеки для Arduino Uno и Arduino Nano чем то отличаются? У них же в основе один и тот же микроконтроллер. Скорее всего, у вас какие то неполадки общего плана с Ардуино

  2. Здравствуйте. У меня для дипломного проекта это. Как мне сделать это?.

        • Ну здесь вроде все описано как его делать, у вас какой то конкретный вопрос?

          • Можно купить этот проект. Можете ли вы сделать этот проект и прислать его мне?

            • К сожалению, пока не могу, нет доступа к необходимому железу поскольку сменил место работы.

            • Да, я могу написать вам на email, который вы использовали для написания данного комментария, если он корректный

    • Добрый день. Ну обычно все подобные простые SDR устройства подключаются к компьютеру для удобства отображения информации. А без компьютера вы что с его помощью хотите делать?

      • просто использовать как обычный приемник SSB без подключения к компу возможно?? и проясните нижнюю часть схемы на ВС547 и переключателя S2

        • Да, AD9850 можно использовать как обычный приемник SSB, но не напрямую "в лоб", а в составе специальной схемы. Это будет не совсем классический приемник, а, скорее, приемник с прямым преобразованием и цифровым гетеродином (DDS).

          Это очень популярная и интересная конструкция для радиолюбителей.

          Как это работает (Принципиальная схема идеи)
          1. AD9850 сам по себе не является приемником. Это задающий генератор (гетеродин). Его роль в приемнике SSB:
          2. AD9850 генерирует высокостабильную и перестраиваемую синусоидальную волну (гетеродин), частота которой точно настроена на несущую частоту принимаемого SSB сигнала.
          3. Смеситель (отдельная микросхема, например, SA602/612 или NE602) принимает два сигнала:
          Антенный сигнал (например, на 7.050 МГц USB).
          Сигнал от гетеродина AD9850.
          4. На выходе смесителя получается разностный сигнал (звуковая частота), который и содержит голосовую информацию.
          5. Этот НЧ-сигнал усиливается и фильтруется звуковым усилителем НЧ (например, на LM386) и подается на динамик или наушники.

          Блок-схема простого SSB приемника на AD9850
          Антенна -> [Полосовой фильтр] -> [Смеситель (NE602)] -> [НЧ-усилитель (LM386)] -> Динамик
          |
          \/
          [Гетеродин (AD9850)] -> [Цепочка управления: Кнопки, Энкодер, Arduino]

          Что вам понадобится, кроме самого AD9850:
          1. Смеситель / Детектор продукта: Обязательно! Это сердце приемника прямого преобразования. Классический выбор - NE602/SA602 или более современная SA818.
          2. Усилитель НЧ (Звуковой усилитель): Например, LM386 или TDA7052, чтобы услышать сигнал в наушниках.
          3. Управляющий контроллер: Чтобы задавать частоту AD9850. Без компьютера это можно сделать с помощью:
          Arduino (Nano/Uno) + энкодер (для плавной перестройки) + кнопки.
          Готовый DDS-модуль с собственными кнопками (встречаются редко).
          4. Полосовые фильтры (по желанию, но очень желательно): На входе смесителя, чтобы ослабить помехи от мощных станций вне нужного диапазона.
          5. Усилитель ВЧ на входе (по желанию): Для повышения чувствительности.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *