Pull to refresh

Простой цифровой генератор сигналов произвольной формы

Reading time2 min
Views35K


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






Цифровой генератор сигналов «Nyx» (Никта). Технические характеристики:
Частота дискретизации 131072 Гц.
Диапазон генерируемых частот 1 – 65536 Гц, с шагом перестройки 1 Гц.
32 битный аккумулятор что теоретически позволяет получить разрешение 0,000030518 Гц.
8 ми битный выход, размах напряжения от -15В до +15В.
Генератор построен на базе микроконтроллера atmel ATMEGA16, в качестве ЦАП была использована R-2R сеть, выход которой был пропущен через операционные усилители, что позволило регулировать амплитуду генерируемого сигнала и его смещение относительно земли.

Программное обеспечение было написано на Си, со вставкой на ассемблере. Генератор работает по принципу прямого цифрового синтеза. Подробно прочитать теоретический материал по проблемам цифрового синтеза сигналов можно по ссылкам в конце оригинальной страницы. Программа построена следующим образом. В ОЗУ МК выделяется массив на 256 элементов, в котором хранится значение генерируемого сигнала в количестве одного периода. Заполнение массива значения производится перед началом синтеза в зависимости от того, какой сигнал необходимо получить на выходе. Именно данный механизм позволяет описать генерируемый сигнал формулой, а не вручную забивать таблицей, как это сделано в других конструкциях. После запуска генератора 131072 раз в секунду начинает срабатывать прерывание, в котором происходит приращение значения аккумулятора, отсечение первых 8 бит от значения переменной и вызов соответствующего элемента массива. Весь процесс занимает 113 тактов микроконтроллера.

В отличие от аналогов, задание частоты производится с цифровой клавиатуры, а не при помощи кнопок «+» и «-», что повышает скорость использования генератора. Продумайте обязательно интерфейс управления прибором. Сколько необходимо совершить телодвижений что бы задать частоту 32698 Гц? Хорошая идея использовать энкодер.
Если на выходе необходимо получить только синусоидальный сигнал, то хорошей идеей будет установить фильтр низких частот, который бы отсекал шумы, на гармониках частоты дискретизации. Но это неприемлемо, если генератор сигналов на выходе имеет прямоугольный сигнал – фильтр завалит фронты.

image
image

Несмотря на то, что согласно теореме Котельникова (Найквиста) для восстановления с частотой f нужно производить отсчеты (дискретизацию) с частотой 2f восстанавливаемый сигнал будет иметь искажения формы. Таким образом хоть предельная восстанавливаемая частота составляет 65536 Гц реально потолок порядка 20 000 Гц. На высоких частотах форма сигнала синусоиду напоминать не будет совсем, поэтому при наладке схем учитывайте эту особенность.

Клавиатура представляет собой неполную матрицу 4*4 которая опрашивается динамически. ЖК экран WH1602. Корпус приборный промышленный, куплен в МЭК. Окошки выпилены дремелем.

Исходный код прошивки

Что бы было бы неплохо сделать:
1) Реализовать программный или аппаратный ШИМ, что позволит использовать генератор для управления мощностью, отдаваемой в нагрузку.
2) Вывести отдельно прямоугольный сигнал высокой частоты, аппаратно генерируемый таймерами на МК (частоты порядка мегагерца)
Оригинал статьи (как обычно наверное ляжет)
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 64: ↑59 and ↓5+54
Comments16

Articles