Это мой вариант широко известного синтезатора частоты на базе китайской
платы на микросхеме AD9851 под управлением Arduino UNO.
Синтезатор частоты обладает несколькими дополнительными функциями, вроде генератора качающейся частоты и работы в качестве гетеродина (с вычитанием промежуточной частоты). Подробно об этом под катом.
примерная схема платы DDS такова: (представлена для варианта на AD9850)
В моём варианте устройства предусмотрены 3 режима работы (переключение тумблером на 3 положения):
1. Режим генератора.
В этом режиме синтезатор работает как генератор синусоидального сигнала от 5Гц до 60МГц (микросхема AD9851 позволяет синтезировать частоты до 70 мгц, но, учитывая снижение при частотах выше 50 МГц амплитуды сигнала и его качества, я ограничил диапазон). Шаг изменения можно последовательно менять кнопкой энкодера от 1 ГЦ до 1 МГц (1Гц, 10Гц, 100Гц, 1КГц, 10КГц, 100КГц, 1МГц). Так же при нажатии на дополнительную кнопку в режиме генератора происходит переключение к величине шага 1КГц из любой позиции.
2. Режим работы в качестве гетеродина
В этом режиме на дисплей выводится частота с учётом ПЧ (Fвых = Fдисп + Fпч).
Нужные значения ПЧ заносятся в программу перед заливкой её в Arduino. Выбор ПЧ
последовательно осуществляется дополнительной кнопкой.
3. Режим качания частоты
В этом режиме происходит качание частоты начиная от частоты на дисплее и вверх до достижения выбранного предела. Ширина качания в этом режиме выбирается нажатием на дополнительную кнопку.
В данной программе установлены следующие величины ширины качания:
1КГц — шаг 1Гц
5КГц — шаг 1Гц
10КГц — шаг 2Гц
50КГц — шаг 5Гц
100КГц — шаг 10Гц
При необходимости величины ширины и шага можно настроить самостоятельно в программе перед заливкой её в Arduino.
Схема соединений следующая:
Китайская плата обеспечивает размах выходного напряжения порядка 0.8-1.0 Vp-p.
Я решил добавить в своё устройство выходные усилители.
Первый — на операционном усилителе TL082C.
Диапазон частот этого усилителя 5Гц-100КГц. Максимальный неискажённый сигнал в диапазоне частот при напряжении питания 12V составил 8Vp-p. Входным потенциометром я выставил уровень входного сигнала для получения на выходе 4Vp-p. Конденсатор С4 служит для компенсации возможного снижения коэффициента усиления на ВЧ (мне не понадобился).
Второй усилитель предназначен для усиления в диапазоне 10КГц — 60МГц. (Реально коэффициент усиления линеен от 5 КГц)
Конденсатор С3 (необязателен) служит для компенсации снижения амплитуды сигнала выше 30 Мгц. Регулировкой потенциометра R2 добиваются напряжения на эммитере VT2 равного половине напряжения питания. (Получается порядка 180-200 ом, можно попробовать запаять простой резистор).
Кроме того на схеме не обозначено, что питание на усилитель идёт через RC цепочку R=27Ом, С=0.1мкф.
Входным потенциометром я так же выставил уровень выходного сигнала 4Vp-p.
Кроме того я добавил переключатель, включающий между DDS и усилителями аттенюатор (резистор 20к) дающий ослабление порядка -20ДБ.
Печатная плата усилителей (двухсторонняя):
Фото платы усилителей:
Главная плата:
Схемы питания не отображены на принципиальных схемах. Лишь замечу, что использованный трансформатор выдаёт по вторичке 7V — использовано для питания Arduino и получения 5V стаб. для платы DDS и LCD, и 14V — получено 12V стаб. для питания выходных усилителей. Стабилизаторы простейшие на 7805 и 7812. По плате «разбросаны» конденсаторы по питанию 0.1 мкф. В общем всё стандартно — даже лень рисовать.
Скачать печатные платы для Sprint Layout 6.
Программа для Arduino UNO лежит по этой ссылке. Тут же и библиотека для энкодера. Возможно программа несовершенна, но работоспособна и снабжена большим количеством комментариев. Так что флаг в руки — если кто интересуется, разбирайтесь переделывайте, совершенствуйте.
Вид сзади:
Примеры устройства в работе:
ССЫЛКИ:
Печатные платы для Sprint Layout 6.
Библиотека «rotary» для обработки энкодера под Arduino.
Программа синтезатора частоты под Arduino.
streametch
15.01.2018 at 20:23
Да, заработало, из макета спаял на плате и всё заработало 🙂 Спасибо!
Ant Sapelov
17.01.2018 at 06:32
Набрал в поиске «ардуино генератор синуса» куча народа паяет R-2R ЦАП на макетной плате, считает таблицы синусов. Сначала подумал, что в дурдом попал… Спасибо за вменяемый подход к проблеме, 9851 заказал, будем пробовать.
Igor
17.01.2018 at 17:59
Всё заработало без проблем. Автору огромное спасибо!!!
Igor
23.01.2018 at 12:49
Доброго времени суток! При использовании синтезатора в режиме генератора возникла необходимость при включении использовать не значение стартовой частоты прописанное в строке (int_fast32_t rx=1000000; // Стартовая частота VFO), а последнее набранное валкодером. Как можно это реализовать в этом скетче. Спасибо!
krepsky
26.01.2018 at 20:59
Насчёт сохранения значений попробуйте тут почитать:
http://robocraft.ru/blog/arduino/82.html
или тут:
https://soltau.ru/index.php/arduino/item/378-kak-khranit-dannye-v-arduino
или к примеру вот тут:
http://radioprog.ru/post/117
Это первые три ссылки, которые выдал Google.
Igor
29.01.2018 at 09:07
Спасибо, что не прошли мимо! Ответ нашёл по ссылке
http://raxp2.blogspot.com/2015/05/dds-ad9850-hc-sr08-vbs.html . Всё отлично работает. Ещё раз спасибо всех благ и удачи!
юрий
11.02.2018 at 10:51
собрал всё правильно но частоту выдаёт в полтара раза меньше чем на дисплее либо кварц на dds на 20 мгц либо умножение на 4 может кто даст совет
john john
24.05.2018 at 17:01
А синхронизацию для входа Х осциллографа где с него брать?
Юргент
27.06.2018 at 21:45
скажите пожалуйста, что за тип выходных разъемов используется в данном приборе?
Аноним
27.06.2018 at 21:48
Юргент, BNC
Karal Ural
09.08.2018 at 18:26
генератор до 150МГц реально разогнать? хотелось повторить проект но потолок в 60МГц меня останавливает 😦
krepsky
10.08.2018 at 16:01
для этого синтезатора потолок 70 мгц. если надо выше, то как вариант синтезатор на si5351. там можно до 200 мгц. правда не синус, а меандр.
AlankoR
09.10.2018 at 18:59
Подскажи как корпус называется?
krepsky
15.10.2018 at 19:54
Не помню уже — давно брал.
leksey441
12.02.2019 at 22:13
Так и не ответили откуда-же брать синхронизацию на осцл?
Аноним
12.02.2019 at 23:09
leksey441, во во, а то толку от него не много.
leksey441
15.02.2019 at 00:03
Аноним,я попробовал с выхода прямоугольных импульсов,не получилось….
Александр
17.03.2019 at 14:38
Подскажи, как можно реализовать что бы формировался сигнал типа ЛЧМ?
krepsky
17.03.2019 at 14:45
Не готов дать ответ.
Есть следующие источники:
Для ЧМ: https://www.analog.com/media/en/technical-documentation/application-notes/AN-543.pdf
Для АМ: https://www.analog.com/media/en/technical-documentation/application-notes/AN-423.pdf
Дмитрий Гончар
21.03.2019 at 16:05
Хотел повторить вашу конструкцию, но не могу скачать скетч и библиотеку, не открывается в меня данный сайт, помогите пожалуйста. Спасибо!
Дмитрий Гончар
22.03.2019 at 20:21
Кто может, пожалуйста скачайте скетч и библиотеку, не могу открыть данный сервис для скачивания. Спасибо!
Дмитрий Гончар
30.03.2019 at 08:56
Уважаемый krepsky, помогите с прошивкой, не могу скачать , данный сервис заблокирован.
krepsky
31.03.2019 at 13:53
Проверил — всё нормально скачивается. Не знаю, в чём проблема. Могу прислать на почту.
Дмитрий Гончар
01.04.2019 at 07:42
Большое спасибо, это у меня проблема , у нас блокируют этот сервис. Буду весьма признателен за помощь dimon7388@gmail.com
и короткий вопрос , прошивка под AD9850 или AD9851 ?
Спасибо!
krepsky
07.04.2019 at 08:44
Выслал на почту. Для изменения кода с 9851 на 9850 надо поменять всего 2 строки.
int32_t freq = frequency * 4294967296./180000000; // note 180 MHz clock on 9851.
в ней вместо 180 (для 9851) поставить 125 (для 9850)
и
tfr_byte(0x001); // Final control byte, LSB 1 to enable 6 x xtal multiplier on 9851 set to 0x000 for 9850
Для 9851 — 0x001, для 9850 — 0x000
и изменить ограничение верхней частоты не выше 50000000:
if ((rx+rif) >60000000){rx=(60000000-rif);}; // ВЕРХНИЙ VFO LIMIT
Дмитрий Гончар
07.04.2019 at 10:22
Всё получил, огромное спасибо! Так же спасибо за комментарии , теперь всё понятно.
Karal Ural
15.04.2019 at 03:13
можно использовать вариант с внешней синхронизацией для входа Х отсюда http://cxem.net/izmer/izmer161.php
Alexander
16.04.2019 at 03:37
Вот получение пилы из меандра http://forum.cxem.net/uploads/monthly_03_2012/post-6444-0-03096900-1332669171_thumb.gif для входа Х
Taras Parashchuk
01.08.2019 at 11:19
Подскажите генератора AD9851 соединяется одновременно с входами низкочастотного и высокочастотного усилителей ? То есть входы усилителей соединены паралельно и подключены к выходу модуля AD9851 ? Они не мешают друг другу ?
Taras Parashchuk
01.08.2019 at 11:20
Подскажите выход генератора AD9851 соединяется одновременно с входами низкочастотного и высокочастотного усилителей ? То есть входы усилителей соединены паралельно и подключены к выходу модуля AD9851 ? Они не мешают друг другу ?
krepsky
10.08.2019 at 14:06
Нормально работают и параллельно. Можно, конечно, городить и коммутацию, но мне просто было лень заморачиваться.
Борис
21.08.2019 at 23:58
Добрый вечер! Пожалуйста, сообщите какие изменения необходимо внести в программу для обеспечения диапазона от 5000 Гц до 20000 Гц.
Борис
23.08.2019 at 00:44
Добрый вечер! Попробовал собрать устройство. Использовал AD9850. Изменения по Вашей рекомендации в программе сделал. Скетч компилируется и грузится в Ардуино Уно, но на энкодер реакции нет. Вращение вала на табло ничего не меняет. На кнопку энкодера реакции тоже нет. Пожалуйста, подскажите, в чём может быть дело. Кроме этого, схема с подключением синтезатора (AD9850) почти не читаема. Можете ли Вы прислать таблицу его соединения с Ардуино Уно, возможно, что здесь ошибка. Линии энкодера, как показано, заводятся на Pin2 и Pin3 Ардуино (прерывания).
Борис
30.08.2019 at 23:44
Схема не работает. Использую AD9850. Изменения в программе не помогают. При загрузке чёрные прямоугольники. Программа не работает.
Борис
31.08.2019 at 23:22
Схема заработала, разобрался. Помог рисунок печатной платы для правильного соединения с AD9850 и остальных элементов устройства…
Аноним
29.11.2019 at 17:15
Добрый день! Подскажите пожалуйста, какой ток должен быть обеспечен для 5 В и для 12В. Также мне, как начинающему, не ясно, где и как устанавливать добавочные конденсаторы. Спасибо.
Александр.
Karal Ural
18.12.2019 at 01:19
Собрал усилитель по вашей схеме, из ВЧ транзисторов под руками оказались КТ316В у которых потолок 800МГц, получил на синусе линейную характеристику от 2КГц до 2МГц (запитан от 9в), неужели транзисторы не справляются и нужно прикрутить С2 3.3пф ???
Taras
12.01.2020 at 21:45
К чему подключены выводы A0, A1 Arduino,
а также выводы 7,6.
На плате выведены площадки под пайку а в схеме нет.
Аноним
15.08.2020 at 15:32
Уважаемые! Помогите чайнику! Не загружается библиотека энкодера, пишет, что в данной папке нет корректных библиотек!
Аноним
16.08.2020 at 11:50
Я так понимаю, что тема заглохла! Оно и понятно, время бежит вперед и появляются новые интересные проекты. Со своей проблемой разобрался, все работает. Спасибо автору!
Alex DPR
20.10.2020 at 04:10
В усилителе на S9018 не работает обратная связь, в следствии чего уровень усиления не держит на одном уровне, вероятно ошибка в схеме. Очень жаль, зря потратил пол ночи.
Владимир
05.04.2022 at 12:00
Уважаемый автор, повторил вашу конструкцию на AD9850, но не на UNO, а на Nano. Не заработало. Причем на LCD все отображается корректно — режимы и частота меняются. Вопрос — надо использовать UNO?