RSS

Arduino DDS — синтезатор частоты на базе AD9851 под управлением Arduino.

19 Сен
Arduino DDS — синтезатор частоты на базе AD9851 под управлением Arduino.

Это мой вариант широко известного синтезатора частоты на базе китайской
платы на микросхеме AD9851 под управлением Arduino UNO.
Синтезатор частоты обладает несколькими дополнительными функциями, вроде генератора качающейся частоты и работы в качестве гетеродина (с вычитанием промежуточной частоты). Подробно об этом под катом.

view1


примерная схема платы DDS такова: (представлена для варианта на AD9850)
ad9850-module
В моём варианте устройства предусмотрены 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.

Схема соединений следующая:

ardu_dds_dig

Китайская плата обеспечивает размах выходного напряжения порядка 0.8-1.0 Vp-p.
Я решил добавить в своё устройство выходные усилители.
Первый — на операционном усилителе TL082C.

ARDU_DDS_LF.JPG

Диапазон частот этого усилителя 5Гц-100КГц. Максимальный неискажённый сигнал в диапазоне частот при напряжении питания 12V составил 8Vp-p. Входным потенциометром я выставил уровень входного сигнала для получения на выходе 4Vp-p. Конденсатор С4 служит для компенсации возможного снижения коэффициента усиления на ВЧ (мне не понадобился).

Второй усилитель предназначен для усиления в диапазоне 10КГц — 60МГц. (Реально коэффициент усиления линеен от 5 КГц)

ardu_dds_hf

Конденсатор С3 (необязателен) служит для компенсации снижения амплитуды сигнала выше 30 Мгц. Регулировкой  потенциометра R2 добиваются напряжения на эммитере VT2 равного половине напряжения питания. (Получается порядка 180-200 ом, можно попробовать запаять простой резистор).
Кроме того на схеме не обозначено, что питание на усилитель идёт через RC цепочку R=27Ом, С=0.1мкф.
Входным потенциометром я так же выставил уровень выходного сигнала 4Vp-p.

Кроме того я добавил переключатель, включающий между DDS и усилителями аттенюатор (резистор 20к) дающий ослабление порядка -20ДБ.

Печатная плата усилителей (двухсторонняя):

amp_plate

Фото платы усилителей:

amp_pic

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

main

Схемы питания не отображены на принципиальных схемах. Лишь замечу, что использованный трансформатор выдаёт по вторичке 7V — использовано для питания Arduino и получения 5V стаб. для платы DDS и LCD, и 14V — получено 12V стаб. для питания выходных усилителей. Стабилизаторы простейшие на 7805 и 7812. По плате «разбросаны» конденсаторы по питанию 0.1 мкф. В общем всё стандартно — даже лень рисовать.

topview

Скачать печатные платы для Sprint Layout 6.

Программа для Arduino UNO лежит по этой ссылке. Тут же и библиотека для энкодера. Возможно программа несовершенна, но работоспособна и снабжена большим количеством комментариев. Так что флаг в руки — если кто интересуется, разбирайтесь переделывайте, совершенствуйте.

Вид сзади:

back
Примеры устройства в работе:

mode_osc

Режим генератора

mode_sweep

Генератор качающейся частоты (sweep)

mode_vco

Режим гетеродина (отображение ПЧ = 455кГц)

sweep

Гифка — демо в режиме ГКЧ. Начальная частота 1 КГц, ширина качания — 5КГц

ССЫЛКИ:
Печатные платы для Sprint Layout 6.
Библиотека «rotary» для обработки энкодера под Arduino.
Программа синтезатора частоты под Arduino.

Сохранить

 
92 комментария

Опубликовал на 19.09.2016 в Электроника

 

Метки: , , ,

92 responses to “Arduino DDS — синтезатор частоты на базе AD9851 под управлением Arduino.

  1. streametch

    15.01.2018 at 20:23

    Да, заработало, из макета спаял на плате и всё заработало 🙂 Спасибо!

     
  2. Ant Sapelov

    17.01.2018 at 06:32

    Набрал в поиске «ардуино генератор синуса» куча народа паяет R-2R ЦАП на макетной плате, считает таблицы синусов. Сначала подумал, что в дурдом попал… Спасибо за вменяемый подход к проблеме, 9851 заказал, будем пробовать.

     
  3. Igor

    17.01.2018 at 17:59

    Всё заработало без проблем. Автору огромное спасибо!!!

     
  4. Igor

    23.01.2018 at 12:49

    Доброго времени суток! При использовании синтезатора в режиме генератора возникла необходимость при включении использовать не значение стартовой частоты прописанное в строке (int_fast32_t rx=1000000; // Стартовая частота VFO), а последнее набранное валкодером. Как можно это реализовать в этом скетче. Спасибо!

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

     
  6. Igor

    29.01.2018 at 09:07

    Спасибо, что не прошли мимо! Ответ нашёл по ссылке
    http://raxp2.blogspot.com/2015/05/dds-ad9850-hc-sr08-vbs.html . Всё отлично работает. Ещё раз спасибо всех благ и удачи!

     
  7. юрий

    11.02.2018 at 10:51

    собрал всё правильно но частоту выдаёт в полтара раза меньше чем на дисплее либо кварц на dds на 20 мгц либо умножение на 4 может кто даст совет

     
  8. john john

    24.05.2018 at 17:01

    А синхронизацию для входа Х осциллографа где с него брать?

     
  9. Юргент

    27.06.2018 at 21:45

    скажите пожалуйста, что за тип выходных разъемов используется в данном приборе?

     
  10. Аноним

    27.06.2018 at 21:48

    Юргент, BNC

     
  11. Karal Ural

    09.08.2018 at 18:26

    генератор до 150МГц реально разогнать? хотелось повторить проект но потолок в 60МГц меня останавливает 😦

     
  12. krepsky

    10.08.2018 at 16:01

    для этого синтезатора потолок 70 мгц. если надо выше, то как вариант синтезатор на si5351. там можно до 200 мгц. правда не синус, а меандр.

     
  13. AlankoR

    09.10.2018 at 18:59

    Подскажи как корпус называется?

     
  14. krepsky

    15.10.2018 at 19:54

    Не помню уже — давно брал.

     
  15. leksey441

    12.02.2019 at 22:13

    Так и не ответили откуда-же брать синхронизацию на осцл?

     
  16. Аноним

    12.02.2019 at 23:09

    leksey441, во во, а то толку от него не много.

     
  17. leksey441

    15.02.2019 at 00:03

    Аноним,я попробовал с выхода прямоугольных импульсов,не получилось….

     
  18. Александр

    17.03.2019 at 14:38

    Подскажи, как можно реализовать что бы формировался сигнал типа ЛЧМ?

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

     
  20. Дмитрий Гончар

    21.03.2019 at 16:05

    Хотел повторить вашу конструкцию, но не могу скачать скетч и библиотеку, не открывается в меня данный сайт, помогите пожалуйста. Спасибо!

     
  21. Дмитрий Гончар

    22.03.2019 at 20:21

    Кто может, пожалуйста скачайте скетч и библиотеку, не могу открыть данный сервис для скачивания. Спасибо!

     
  22. Дмитрий Гончар

    30.03.2019 at 08:56

    Уважаемый krepsky, помогите с прошивкой, не могу скачать , данный сервис заблокирован.

     
  23. krepsky

    31.03.2019 at 13:53

    Проверил — всё нормально скачивается. Не знаю, в чём проблема. Могу прислать на почту.

     
  24. Дмитрий Гончар

    01.04.2019 at 07:42

    Большое спасибо, это у меня проблема , у нас блокируют этот сервис. Буду весьма признателен за помощь dimon7388@gmail.com
    и короткий вопрос , прошивка под AD9850 или AD9851 ?
    Спасибо!

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

     
  26. Дмитрий Гончар

    07.04.2019 at 10:22

    Всё получил, огромное спасибо! Так же спасибо за комментарии , теперь всё понятно.

     
  27. Karal Ural

    15.04.2019 at 03:13

    можно использовать вариант с внешней синхронизацией для входа Х отсюда http://cxem.net/izmer/izmer161.php

     
  28. Alexander

    16.04.2019 at 03:37

    Вот получение пилы из меандра http://forum.cxem.net/uploads/monthly_03_2012/post-6444-0-03096900-1332669171_thumb.gif для входа Х

     
  29. Taras Parashchuk

    01.08.2019 at 11:19

    Подскажите генератора AD9851 соединяется одновременно с входами низкочастотного и высокочастотного усилителей ? То есть входы усилителей соединены паралельно и подключены к выходу модуля AD9851 ? Они не мешают друг другу ?

     
  30. Taras Parashchuk

    01.08.2019 at 11:20

    Подскажите выход генератора AD9851 соединяется одновременно с входами низкочастотного и высокочастотного усилителей ? То есть входы усилителей соединены паралельно и подключены к выходу модуля AD9851 ? Они не мешают друг другу ?

     
  31. krepsky

    10.08.2019 at 14:06

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

     
  32. Борис

    21.08.2019 at 23:58

    Добрый вечер! Пожалуйста, сообщите какие изменения необходимо внести в программу для обеспечения диапазона от 5000 Гц до 20000 Гц.

     
  33. Борис

    23.08.2019 at 00:44

    Добрый вечер! Попробовал собрать устройство. Использовал AD9850. Изменения по Вашей рекомендации в программе сделал. Скетч компилируется и грузится в Ардуино Уно, но на энкодер реакции нет. Вращение вала на табло ничего не меняет. На кнопку энкодера реакции тоже нет. Пожалуйста, подскажите, в чём может быть дело. Кроме этого, схема с подключением синтезатора (AD9850) почти не читаема. Можете ли Вы прислать таблицу его соединения с Ардуино Уно, возможно, что здесь ошибка. Линии энкодера, как показано, заводятся на Pin2 и Pin3 Ардуино (прерывания).

     
  34. Борис

    30.08.2019 at 23:44

    Схема не работает. Использую AD9850. Изменения в программе не помогают. При загрузке чёрные прямоугольники. Программа не работает.

     
  35. Борис

    31.08.2019 at 23:22

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

     
  36. Аноним

    29.11.2019 at 17:15

    Добрый день! Подскажите пожалуйста, какой ток должен быть обеспечен для 5 В и для 12В. Также мне, как начинающему, не ясно, где и как устанавливать добавочные конденсаторы. Спасибо.

    Александр.

     
  37. Karal Ural

    18.12.2019 at 01:19

    Собрал усилитель по вашей схеме, из ВЧ транзисторов под руками оказались КТ316В у которых потолок 800МГц, получил на синусе линейную характеристику от 2КГц до 2МГц (запитан от 9в), неужели транзисторы не справляются и нужно прикрутить С2 3.3пф ???

     
  38. Taras

    12.01.2020 at 21:45

    К чему подключены выводы A0, A1 Arduino,
    а также выводы 7,6.
    На плате выведены площадки под пайку а в схеме нет.

     
  39. Аноним

    15.08.2020 at 15:32

    Уважаемые! Помогите чайнику! Не загружается библиотека энкодера, пишет, что в данной папке нет корректных библиотек!

     
  40. Аноним

    16.08.2020 at 11:50

    Я так понимаю, что тема заглохла! Оно и понятно, время бежит вперед и появляются новые интересные проекты. Со своей проблемой разобрался, все работает. Спасибо автору!

     
  41. Alex DPR

    20.10.2020 at 04:10

    В усилителе на S9018 не работает обратная связь, в следствии чего уровень усиления не держит на одном уровне, вероятно ошибка в схеме. Очень жаль, зря потратил пол ночи.

     
  42. Владимир

    05.04.2022 at 12:00

    Уважаемый автор, повторил вашу конструкцию на AD9850, но не на UNO, а на Nano. Не заработало. Причем на LCD все отображается корректно — режимы и частота меняются. Вопрос — надо использовать UNO?

     

Оставьте комментарий