Реклама ⓘ
Главная » Си-Би связь
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Управление синтезатором частоты на AD9850 для приемника/трансивера

Зайдя в очередной раз на сайт местного радиомагазина, обнаружил в продаже интересный девайс. Модуль DDS (direct digital synthesis) - синтезатор частоты на микросхеме AD9850. Такой:

Заявленные характеристики:

  • частота генерации от 0,029 Гц до 62,5 МГц;
  • количество разрядов ЦАП – 10;
  • выходной ток ЦАП – до 10,24 мА при напряжении ограничения 1,5 В;
  • встроенный компаратор для получения двух оппозитных ТТЛ выходов;
  • возможность цифрового управления частотой как по параллельному, так и по последовательному интерфейсу;
  • напряжение питания – 5 В;
  • потребляемый ток до 96 мА.

И вот, приобретя данный девайс, я решил тряхнуть стариной и исключительно для удовольствия и из любви к искусству изготовить блок управления любительским КВ приемником прямого преобразования на диапазоны 40 и 80 метров.

Для управления модулем синтезатора будем использовать ARDUINO UNO R3 (в моем случае – китайский совместимый клон). Информацию о частоте и других параметрах будем отображать на алфавитно-цифровом ЖК дисплее 16*2, регулировать частоту будем энкодером, переключение диапазонов – логический уровень «0» или «1» на одном из входов ARDUINO.

Схема устройства:

Выходной синусоидальный сигнал снимается с выхода OUT2 платы синтезатора. Амплитуда 0,5 В, постоянная составляющая – 0,512 В, выходное сопротивление – 100 Ом.

Выдаваемые частоты по диапазонам:

  • 80 м – 1745,00 – 1900,00 кГц (принимаемый диапазон 3490 – 3800 кГц);
  • 40 м. – 3500,00 – 3610,00 кГц (принимаемый диапазон 7000 – 7220 кГц).

Смеситель приемника прямого преобразования работает на частоте гетеродина, равной половине частоты принимаемого сигнала, поэтому выходные частоты синтезатора имеют соответствующие значения. При этом на ЖК дисплей выводится значение частоты принимаемого сигнала, т.е. из диапазона, указанного в скобках.

Для регулирования частоты используется энкодер BR1 на 24 положения, 5 выводной, с кнопкой. Кнопка энкодера управляет режимом «Грубо/Точно». После включения устройства по умолчанию включен режим «Грубо». При этом шаг изменения частоты принимаемого сигнала – 1 кГц. При однократном нажатии на кнопку (вал) энкодера режим переключается в «Точно». Шаг изменения частоты принимаемого сигнала при этом уменьшается до 10 Гц. При этом на ЖК дисплее справа от значения частоты отображается буква «Т». Повторное нажатие кнопки энкодера возвращает режим «Грубо».

На нижнюю строку ЖК индикатора выводится полоса прогресса, отображающая текущую частоту относительно полного диапазона.

Переключение диапазонов осуществляется подачей логического «0» (диапазон 80 м) или «1» (диапазон 40 м) на вход «BAND». Вход активный, т.е. при обрыве линии, на нем присутствует логическая единица, благодаря подключенному внутреннему подтягивающему резистору контролера ARDUINO. Таким образом, для переключения диапазонов достаточно механической коммутации данного входа на массу.

На вход ААС подается напряжение АРУ приемника для вывода на дисплей показаний S-метра. В моем случае напряжение АРУ 6-10 В соответствует величине принимаемого сигнала S9- S1 соответственно. Значение S выводится на ЖК дисплей.

Кроссовая плата устройства односторонняя, разведена в программе SprintLayout, изготовлена методом ЛУТ. Вид со стороны элементов:

Готовая плата:

Поработав паяльником, получили набор:

В сборе:

В работе:

При разработке использовались материалы статьи: http://nr8o.dhlpilotcentral.com/?p=83

Схема простенького приемника для применения с данным синтезатором мной уже разработана, промоделирована. На времени сборка и наладка. Это будет следующая статья.

Прикрепленные файлы:

Теги:

Опубликована: Изменена: 20.09.2016 0 3
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (53) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
+1
Сергей #
Я понимаю, что этот синтезатор можно заставить выдавать любую частоту от 0 до 60 МГц. Поэтому его можно использовать в трансивере...получается очень бюджетный синтезатор. Правильно я понимаю? Или гармоник будет много на более высоких частотах? Можно этот синтезатор применить в трансивере с ПЧ 8,8 МГц (диапазон от 160 м до 10 м)?
Правда выход слабоватый наверно?
Ответить
0
Smelter #
На сколько я понимаю, аппроксимированная синусоида раскладывается рядами Фурье на туеву хучу гармоник. Поэтому такие гуси не летают, без хороших фильтров.
Ответить
+1
Ivan #
Что то тонкая настройка грубовата для AD9850. По даташиту может шагать с точностью 0.0291 Hz
Ответить
0

[Автор]
seawar #
Возможность такая есть - подправить программу минутное дело. Просто для данного случая применения нет необходимости в такой высокой точности.
Ответить
+1
AVG #
seawar, не подскажете где подправить ваш скетч что бы шагать с точностью 0.0291 Hz ?
Я не гуру в программировании, а поэксить и создать генератор с такой точностью для любительской мастерской интересно.
Ответить
0

[Автор]
seawar #
Строка 32, начальное значение в кГц по умолчанию:
float change_step = 0.5;
Строки 162 и 168 - изменение по нажатию кнопки:
change_step = 0.5;//грубая настройка
change_step = 0.005;//точная настройка
Ответить
+1
AVG #
Спасибо за ответ.
Я правильно понимаю?
Строка 32, начальное значение в кГц по умолчанию:
float change_step = 0.5; //это 0,5кГц
Строки 162 и 168 - изменение по нажатию кнопки:
change_step = 0.5;//грубая настройка -это 0,5кГц
change_step = 0.005;//точная настройка -это 0.005кГц = 5Гц

Если записать так:
change_step = 0.0005;//точная настройка -это будет шаг 0.0005кГц = 0,5Гц
Ответить
0

[Автор]
seawar #
Да.
Ответить
0
AVG #
seawar, огромное спасибо за Ваш труд! Собрал на макетке, поделка запустилась сразу. По Вашему совету поправил шаг тонкой настройки. Попробовал, выставил точную настройку в скетче change_step = 0.0001 - шагает.

Может, подскажите можно ли сделать несколько режимов настройки.
Например, четыре:
Грубая настройка 0,5Кгц оставляем
следующая настройка 0,1Кгц
потом 0,01кГц
и четвертая 0,001кГц
т.е. переключаются в последовательности по кругу.
Ответить
0

[Автор]
seawar #
Здесь модифицированный скетч
Ловите. Четыре режима. Плюс убрал вывод на дисплей удвоенной частоты. Выводится реальная. Вместо буквы "Т" выводится номер режима (0,1,2,3).
Предупреждаю, что на практике не проверял. Теоретически, должно работать. А вообще - Ардуино прекрасная штука для изучения программирования. Это одно удовольствие - просто, как грабли. Современный электронщик должен знать, как минимум, три языка - родной, матерный и С
Ответить
+1
Ivan #
Залил Ваш модифицированный скетч в ардуину.
При старте выводится индикация "0" энкодером шагает по 0,5кГц. Частотомер на выходе AD9850 генератора подтверждает.
Нажимаю на кнопку энкодера на LCD выводится индикация "1" , НО шаг выставляет 0.001.
При следующих нажатиях индикация выводится "2"
шаг остается 0.001. Индикация "3" шаг 0.001.
Индикация "0" шаг остается 0.001 на 0,5 не переключается.
Резюме - при первом нажатии на энкодер выставляет change_step = 0.001 и последующие нажатия кнопки энкодера не меняют шаг.
Хотя индикация выводится от 0 до 3 по кругу .
Ответить
0
AVG #
Да действительно есть такая проблема.
Нехватка break;

записать надо так
case 0:
change_step = 0.5;
break;
case 1:
change_step = 0.1;
break;
case 2:
change_step = 0.01;
break;
case 3:
change_step = 0.001;
break;
Все переключается
Я еще изменил количество символов для отображения частоты сигнала вот так:
lcd.print(Frequency, 3);// частота сигнала

Спасибо огромное за труд seawar!!!
Поправленый скетч прицепил
Прикрепленный файл: _Synthethizer05_mod_AVG.ino
Ответить
0

[Автор]
seawar #
О, да Вы прекрасно ориентируетесь в коде ;). Да, бреки упустил, пардон. Скетч на гугл-драйв исправленный.
Ответить
+2
AVG #
Да где там ориентируюсь, только первый месяц, как изучаю программирование для Ардуино.
Просто Радиолюбители Советской Эпохи привыкли хорошо изучать инструкции. Ну и деду надо с внуками чем то увлекаться. 73!
Ответить
0

[Автор]
seawar #
Пофиксил.
Ответить
0

[Автор]
seawar #
Приемник изготовлен, налажен, испытан. К счастью, опасения по сильным цифровым помехам не оправдались, все прекрасно работает. Статью написал, она находится на модерации. Здесь выложена новая, 5-я версия скетча, где убрал мелкие недочеты после реальных испытаний в составе приемника.
Ответить
0

[Автор]
seawar #
Ответить
0
Денис #
Помогите настроить синтезатор, трансивер на кварцах 8МГц хотя бы на примере 7.100-7.150Мгц какие правильно задать параметры вот мой девайс
Ответить
+1
Vadix #
Переразвел плату под Ардуино Нано. У меня помеха была при импульсах энкодера - высокочастотный писк. Методом перебора установил, что по питанию от синтезатора. Вылечил установкой дросселя от синфазных помех: кольцо 20х10х4 М2500, в два провода ПЭЛ 0.4 примерно 54 витка. Включение - параллельно (одна обмотка в разрыв плюса, другая в разрыв минуса), начала обмоток совпадают. Ну и в параллель шины питания емкости керамические 0,1 мкФ. Включил дроссель между блоком питания и аналоговой частью приемника, а синтезатор до дросселя.
Ответить
0
Nokier #
Добрый день!
Я в ардуино не силён.
Но есть такой синтез. И хочется многодиапазонности.
Если вам не трудно, дайте скетч для ардуино, чтобы на 8 диапазонов.
Ответить
0

[Автор]
seawar #
Прикрепил архив с материалами к посту.
Прикрепленный файл: 8band.zip
Ответить
0
Maxim #
Повторил Вашу схему с разными прошивками всё заработало с первого раза. Вопрос как изменить прошивку для работы с промежуточной частотой?
Ответить
0

[Автор]
seawar #
Как раз планирую "подружить" данный синтезатор с трансивером "Аматор". Прикрепляю скетч на диапазоны 40 и 80 с ПЧ 500 кГц для фильтра ЭМФ-500-3Н. Выдаваемые частоты задаются в строках 26-27, ПЧ для коррктного отображения плюсуется в строке 181.
PS: В "полевых" условиях данный скетч пока не проверялся.
Прикрепленный файл: Synthethizer07.zip
Ответить
0
Maxim #
Большое спасибо за оперативный ответ всё работает
Я так думаю что ПЧ можно использовать любую, а как быть с преобразованием вверх и вниз одновременно?
Ответить
0

[Автор]
seawar #
Имеется в виду двойное преобразование? В строках 26-27 прописывается реальная выдаваемая частота, в строке 181 - то, что вы хотите видеть на экране, можно +, можно -..
Ответить
0
Maxim #
Нет я имел в виду чтобы синтезатор вырабатывал частоты и для НЧ любительских диапазонов +ПЧ и для ВЧ диапазонов -ПЧ из Вашего кода это понятно заносим частоты в строки 26-27, а как быть с отображением как отображать без перепрограммирования контроллера.
Ответить
0

[Автор]
seawar #
Нужно проверять глобальную переменную "current_band". Это номер диапазона, начиная с 0. В строке 181 заменить цифру "500" на переменную, которой по результатам проверки присваивать соответствующее значение со знаком "+" или "-".
Например: "if (current_band) >2 i_freq = -500 else i_freq = 500;"
Ответить
0

[Автор]
seawar #
Ну, или, чтоб не плодить строки, вместо цифры "500" в строке 181 вставить буквально следующее выражение: "(((2-current_band)/abs(current_band-2))*500)".
Ответить
0

[Автор]
seawar #
Пардон, в данном выражении при current_band=2 деление на ноль. Хотя, если компилятор "умный", возможно, будет работать. В любом случае, творите, выдумывайте, пробуйте - код открыт.
Ответить
0
Vitya #
Всем доброго времени суток, суть проблемы в следующем, собрал данный синтезатор, все заработало сразу, но мне нужно немного переделать программу, времени разбираться нет, кому не сложно помогите, нужно чтобы изменялась частота от 0,001 кГц до 30 МГц, с шагами 0,001; 0,01 ; 0,1 ; 1 ; 10; 100; 1000 кГц, на дисплее отображалась реальная частота, и не было этой буквы "s9" ,т.е. функция "с" метра вообще не нужна, буду очень благодарен кто поможет.
Ответить
0
Phil #
Хотелось бы сделать на основе такого синтезатора телеграфный трансивер. Для этого нужна расстройка в режимах прием/передача на 600 Гц. Может быть, кто-то подскажет, как это можно сделать?
Ответить
0
UT4NJ #
Всем привет! Подскажите пожалуйста, что это за плата, на которой установлены модули?
Прикрепленный файл: UTB8.WwzF3QydeJk43PUq6AyQpXaD.jpg
Ответить
+1
Dima #
Очень хорошая и полезная тема. Я по ней начал изучать Ардуино. Очень интересует вопрос о подобном синтезе более высоких частот 144-430 Мгц. DDS чипов для таких частот не встречал. Может попробовать MAX2871 ADF4350 ADF4351 ?
Ответить
0
VIKTOR #
Как схемно решён вопрос переключения диапазонов? И как это нашло отражение в скетче?
( _Synthethizer05_mod_AVG.ino)
Или есть какой то более поздний вариант скетча, который обеспечивает работу в восьми диапазонах?
Ответить
0

[Автор]
seawar #
Смотрите выше пост от 14.06.2017. Там прикреплен архив с файлами "8band.zip". Для переключения 8 диапазонов дополнительно задействуются аналоговые входы ардуино AD4, AD5. Это отражено в скетче Synthethizer06.
Отредактирован 15.11.2019 14:59
Ответить
0

[Автор]
seawar #
Последняя версия скетча на 8 bands с расширенными диапазонами и дополнительным шагом перестройки 100 кГц (по умолчанию).
Прикрепленный файл: Synthethizer06_1.zip
Ответить
0
my_name_VIKTOR #
Спасибо! Посмотрел. Интересно. Блок управления переключением диапазонов по сравнению со скетчем в (8band.zip) не изменился?
Каким выходам (band_commutator.spl) соответствуют входы А4, А5 и 13 Arduino?
Ответить
0

[Автор]
seawar #
Q0 - D13, Q1 - AD4, Q2 - AD5. Схему с двухконтурными преселекторами не реализовывал, сделал одноконтурные. Галетный переключатель 8п2н. Одно направление переключает диапазон, второе подключает ко входу приемника нужный одиночный параллельный контур на массу. Для приемника прямого преобразования избирательность по зеркальному каналу не критична.
Отредактирован 16.11.2019 10:02
Ответить
0
my_name_VIKTOR #
Тестирую скетч 75186_Synthethizer06_1 при помощи Arduino UNO. Переключение всех диапазонов не происходит. Переключается только между первым и вторым диапазонами. Переключаю путём подачи низкого уровня на 13-й пин Ардуино. Пины А4 и А5 не активны. Разбираюсь.
Заложена хорошая фишка :) с изменением шага настройки. В режиме, когда шаг (Q или T) не отображается (Это третье состояние, Пустое знакоместо на индикаторе) ручкой энкодера производится переключение сразу в одну из трёх точек диапазона: начало, середину или конец.
Ответить
0

[Автор]
seawar #
Все верно. Номер диапазона формируется как двоичное число со старшим двоичным разрядом А5, средним A4 и младшим D13. 000d - диапазон 160м, 001d - диапазон 80м, 010d - диапазон 40м, 011d - диапазон 20м, 100d - диапазон 17м, 101d - диапазон 15м, 110d - диапазон 12м, 111d - диапазон 10м. Естественно, меняя только младший разряд, переключаете диапазоны 160 и 80 м. Когда шаг не отображается, он равен 100 кГц, наибольшее значение. Я его ввел специально для быстрой перестройки на расширенных диапазонах. Так что, все в порядке, когда диапазон 160 м, занимающий всего 200 кГц, прощелкивается в три импульса..
Ответить
0
my_name_VIKTOR #
Да. Всё так Всё это понятно. Но вот почему не работают аналоговые входы 4 и 5 Ардуино?
Формируются сигналы диапазона 160м (000) и 80м (001). Остальные разряды при любой коммутации остаются нулями.
В корректности последних строк скетча есть сомнения.
Например в строке: return(digitalRead(band_select)+digit1+digit2)
аргументом является сумма: (band_select)+digit1+digit2 В то же время в выборе диапазона участвует только первое слагаемое: (band_select). И ещё вопрос:Почему для формирования разрядов Q2 и Q3 не использованы цифровые пины Ардуино? Ведь пины 8, 9, 10 и 11 остались свободными! Может имеет смысл задействовать для переключения диапазонов три цифровых пина?
Короче: будем думать :)
Отредактирован 17.11.2019 00:09
Ответить
0

[Автор]
seawar #
Возможно, "не работают аналоговые входы 4 и 5 Ардуино", так как в оригинальной изначальной схеме (и плате) они посажены на землю. Их надо оторвать,прежде, чем что-то подавать. Пины 8-11 подключены к плате 9850. Аналоговые вводы я задействовал как раз по причине нехватки цифровых. У меня данный скетч прекрасно функционирует, выложил я его без изменений, как есть.
Да, еще замечание: диапазоны переключаются ТОЛЬКО последовательно. Скетч реагирует на изменение на пине 13 (чет - нечет). Так что, если пытаться переключать только старшие разряды, реакции не будет.
Отредактирован 17.11.2019 07:53
Ответить
+1
my_name_VIKTOR #
Да-да. Насчёт свободных цифровых пинов на Ардуино я сбойнул.Пока плата AD9850 едет из Китая, собираю управление синтезатором на макетке. Кросс-плата тоже пока не готова, поэтому однозначно утверждаю, что аналоговые пины не заземлены. Буду разбираться.
Спасибо за предоставленную информацию. Синтезатор должен получиться хороший. Будет работать. Всего доброго!
Ответить
+1

[Автор]
seawar #
Конечно, будет работать. У меня на основе этой схемы уже три девайса работают - приемник на 8 диапазонов, двухдиапазонный трансивер и ГСС с функцией генератора качающейся частоты.
Ответить
0
сенатор #
Сделал синтезатор, но не могу залить для управления синтезатором программу для двухдиапазонного приемника для которого он и строился.
Ответить
0

[Автор]
seawar #
А подробнее?
Ответить
+2
my_name_VIKTOR #
Прежде, чем загружать скетч в Ардуино нужно отсоединить цифровые входы Ардуино №0 и №1 от схемы синтезатора. Именно по ним (TX и RX) происходит обмен данными с компьютером во время загрузки. А так как на них что-то "висит", то это что-то и не даёт выполнить загрузку.
Ответить
0
harri #
Не могу открыть второй файл с информацией на ( 10 КБ), пишет что файл поврежден.
Ответить
0

[Автор]
seawar #
Это исходный код ардуино. Для корректного открытия его нужно скачать и поместить в папку с таким же названием, как и сам файл (не считая расширение .ino). Еще возможно, версия среды ардуино ИДЕ устаревшая, обновитесь.
Ответить
0
Vitalgar #
Чем можно заменить HCF4532B ?
Ответить
0

[Автор]
seawar #
MC14532
Ответить
0

[Автор]
seawar #
Можно использовать схему на диодах. См. вложение.
Прикрепленный файл: Encoder_8-3.JPG
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

UNI-T UT-61A
UNI-T UT-61A
МиниПК MK809V - 4 ядра, Android 4.4.2 Металлоискатель MD3010II
вверх