Генератор сигналов своими руками на микроконтроллере

Генератор сигналов своими руками на микроконтроллере

В первой части статьи рассматривается схемотехническое решение, устройство и конструкция DDS генератора (генератор с прямым цифровым синтезом формы сигнала) на микроконтроллере Atmel ATmega16. В приборе, кроме синтеза сигнала различной формы и частоты, реализуется возможность регулировки амплитуды и смещения выходного сигнала.

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

  • простое схемотехническое решение, доступные компоненты;
  • односторонняя печатная плата;
  • сетевой источник питания;
  • специализированный выход частоты от 1 МГц до 8 МГц;
  • DDS выход с регулировкой амплитуды и смещения;
  • форма выходного DDS сигнала: синусоида, прямоугольные импульсы, пилообразные импульсы, треугольные импульсы, ЭКГ, шум;
  • для отображения текущих параметров используется двухстрочный ЖК дисплей;
  • пятикнопочная клавиатура;
  • шаг перестройки частоты: 1, 10, 10, 1000, 10000 Гц;
  • восстановление последней конфигурации при включении;
  • регулировка смещения: –5 В … +5 В;
  • регулировка амплитуды: 0 … 10 В;
  • регулировка частоты: 0 … 65534 Гц.

За основу прибора, а точнее алгоритм работы микроконтроллера, была взята разработка DDS генератора Jesper Hansen. Предложенный алгоритм был немного переработан и адаптирован под компилятор WinAVR-GCC

Сигнальный генератор имеет два выхода: выход DDS сигнала и выход высокочастотного сигнала (1 – 8 МГц) прямоугольной формы, который может использоваться для «оживления» микроконтроллеров с неправильными установками Fuse-битов или для других целей.

Высокочастотный сигнал поступает непосредственно с микроконтроллера, с вывода OC1A (PD5). DDS сигнал формируется микроконтроллером с использованием цепочки резисторов R2R (ЦАП), регулировка смещения и амплитуды возможна благодаря использованию низкопотребляющего операционного усилителя LM358N.

Блок-схема DDS генератора

Как видно, для питания устройства необходимо три напряжения: +5 В, +12 В, –12 В. Напряжения +12 В и –12 В используются для аналоговой части устройства на операционном усилителе для регулировки смещения и амплитуды.

Принципиальная схема источника питания изображена на рисунке ниже.

В источнике питания используются стабилизаторы напряжения LM7812, LM7805, LM7912 (стабилизатор отрицательного напряжения –12 В).

Внешний вид источника питания для генератора

Возможно использование компьютерного блока питания форм-фактора ATX, для этого необходимо распаять переходник в соответствии со схемой:

Принципиальная схема прибора

Для сборки прибора потребуется:

  • микроконтроллер ATmega16;
  • кварцевый резонатор 16 МГц;
  • стандартный двухстрочный ЖК индикатор на базе контроллера HD44780;
  • R2R ЦАП выполненный в виде цепочки резисторов;
  • сдвоенный операционный усилитель LM358;
  • два потенциометра;
  • пять кнопок;
  • несколько коннекторов и разъемов.

Рисунок печатной платы

Примененные компоненты, за исключением микроконтроллера и разъемов, в корпусах для поверхностного монтажа (smd).

Прибор смонтированный в корпусе

Тестовый запуск

Загрузки

Принципиальная схема и печатная плата (формат Eagle) — скачать
Проект для симуляции в среде Proteus — скачать

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

Дополниельно имеется второй вариант конструкции DDS генератора на микроконтроллере ATmega16.

Перевод: Vadim по заказу РадиоЛоцман

Сколько я занимаюсь электроникой, всегда хотел заиметь генератор сигналов различной формы. Недавно мне понадобилось получить синусоидальный сигнал с помощью цифровых методов, и я решил что сделаю себе хороший генератор! В итоге я сделал простой, но функциональный генератор сигналов который может генерировать: меандр, треугольник, синус, шум и пилообразный сигналы. Максимально генерируемая частота — 60kHz (килогерц). Пока что в настоящей прошивке, частоту можно устанавливать только при генерации меандра, для остальных сигналов можно устанавливать лишь задержку в микросекундах. Основой устройства является AVR микроконтроллер ATtiny2313, сигнал генерируется с помощью 8 битного цифро-аналогового преобразователя (ЦАП), данные о частоте, сигнале или задержки отображаются на ЖК индикаторе 8×2. Вот собственно принципиальная схема:

Для сборки понадобятся детали:
1. Микроконтроллер Attiny2313 — 1шт.
2. ЖК индикатор WH0802 или с HD44780 совместимом — 1шт.
3. Микросхема LM324 — 1шт.
4. Тактовые кнопки без фиксации — 3шт.
5. Резистор 10 кОм — 1шт.
6. Резистор 300 Ом — 1шт.
7. Резистор 2 кОм — 8шт.
8. Резистор 1 кОм — 9шт.

Читайте также:  Вазы из картона своими руками фото

ЦАП собран на резисторах и подключён напрямую к порту B микроконтроллера, сигнал после ЦАПа усиливается с помощью операционного усилителя LM324. ЖК индикатор я применил WH0802 c HD44780 совместимом контроллером, данный ЖКИ имеет 2 строки по 8 знакомест каждая. Существенно применение любого ЖК индикатора с совместимом контроллером с HD44780. Микроконтроллер применить Attiny2313 можно с любыми буквенными индексами, в любых корпусах. Кнопки можно применить любые тактовые, без фиксации. Кнопкой "Выбор" выбирается тип генерируемого сигнала. Кнопками "Плюс" и "Минус" устанавливается частота или задержка. При включении устройства оно сразу начинает генерировать сигнал, по умолчанию это меандр. Напряжение питания: 5 вольт. Вот осциллограммы генерируемых генератором сигналов:

Меандр

Шум

Пила

Синус

Треугольник

Я собрал свой генератор сигналов в пластмассовом корпусе ZIV, вот что получилось:

Первые испытания вместе с самодельным осциллографом:

Схему я собрал на печатной плате сделанной с помощью ЛУТ, рисунок печатной платы в Sprint Layout 4.0 можно найти в файлах к статье. На плате я использовал детали в SMD корпусах, исключение лишь составляет микросхема LM324, она использована в DIP корпусе. Прошивку для устройства я писал в среде BASCOM-AVR исходник прилагается. Также прилагается проект устройства в программе Proteus. Кстати, после прошивки не забудьте установить следующие фьюз биты (для программы SinaProg):

Когда-то в [Л.1] был описан управляемый генератор прямоугольных колебаний TTL-уровня на микроконтроллере ATTiny2313. Он мог вырабатывать 31 фиксированную частоту (от 0,1 Hz до 4 MHz), имел очень простую схему и управлялся подачей двоичного кода на управляющие входы. В зависимости от логического уровня на пяти управляющих разрядах, генератор вырабатывал одну из предустановленных в его программе частот, номер которой задавался подключением этих управляющих входов к «земле» или к шине питания. Скорее всего, данная схема создавалась не как самостоятельное устройство, а как составная часть, модуль для использования в других разработках (например, в качестве задающего генератора в частотомерах, часах, елочных гирляндах и т.п.) — отсюда, видимо, и не совсем удобный способ управления — должно быть, автор схемы предположил, что частоту установят один раз, на этапе проектирования готового устройства, в состав которого будет входить его схема.

Меня же данная схема заинтересовала в качестве простенького лабораторного генератора. Конечно же, это не альтернатива серьезным приборам промышленного изготовления, но кое-где и такой «микроконтроллерный мультивибратор» пригодиться может (особенно учитывая его простоту, точность и дешевизну) — к примеру, он отлично подойдет для калибровки частотомеров и в аналогичных случаях, когда надо отъюстировать какую-нибудь шкалу; его можно использовать во время экспериментов с цифровыми схемами или выходными каскадами импульсных БП; для проверки трансформаторов и катушек зажигания (подключив их к мощному источнику тока через соответствующий транзисторный ключ), различных фильтров и т.п. Да и убеждаться в работоспособности только что собранного УНЧ безопаснее, подавая на его вход сигнал от такого вот самодельного генератора, а не с любимого MP-3 плеера или «планшета» — в случае ошибок в монтаже (например, если на вход УНЧ просочится напряжение питания), в худшем случае будет разрушен копеечный выходной транзистор, а не дорогая «игрушка».

Но описанная схема имела ряд недостатков, затрудняющих ее использование в качестве лабораторного прибора: во-первых, это уже упомянутое неудобство управления (кнопки в данном случае оказались бы уместнее); во-вторых — отсутствие какой-либо индикации выбранного режима; в-третьих — отсутствие среди выходных частот сетевой (50 Hz), которая бывает нужна при работе с трансформаторами или сетевыми фильтрами; и в-четвертых — нерегулируемый уровень выходного напряжения (что бывает нужно при испытаниях тех же УНЧ). Поэтому, используя приведенную в [Л.1] схему как «техническое задание», я разработал новое устройство и «прошивку» к нему, отвечающие приведенным выше требованиям. Получившаяся схема представлена на рис.1.

Читайте также:  Plc rsc 24dc 21 phoenix contact

Рис. 1 — Принципиальная схема генератора.

Как и в оригинале, это генератор, вырабатывающий прямоугольные колебания стабильной частоты с периодом 1:1 (т.е., меандр с 50%-заполнением), но количество генерируемых частот увеличено до 42. Значения большинства вырабатываемых частот отличаются от тех, что были в [Л.1]; вдобавок уменьшено количество частот менее 1 Hz, необходимость в которых возникает довольно редко. Список всех частот, генерируемых прибором, приведен в табл.1 (в конце статьи).

Основой схемы является распространенный микроконтроллер ATTiny2313, тактовая частота которого стабилизирована кварцем на 10 MHz, что обеспечивает минимальную погрешность выходного сигнала. Выходные импульсы формируются за счет деления тактовой частоты МК при помощи 16-разрядного внутреннего таймера-счетчика T1, работающего в режиме «сброс при совпадении», они аппаратно выводятся на контакт 15 микросхемы. Внутренний 8-разрядный таймер-счетчик T0, также работающий в режиме «сброс при совпадении», формирует интервалы переключения разрядов индикатора HG1, реализуя тем самым динамическую индикацию. Выходами динамической индикации являются линии PB0 и PB1 МК, они усиленны транзисторными ключами на VT1 и VT2.

Сформированный выходной сигнал с вывода 15 МК подается на усилитель тока, который собран на транзисторе VT3, включенном по схеме эмиттерного повторителя. Применение усилительного каскада позволило развязать выход МК от нагрузки и защитить его от неожиданностей (например, от КЗ или от подачи напряжения на выход устройства). Переменным резистором R12 можно регулировать уровень выходного сигнала — от нуля до практически напряжения питания. Резистор R13 ограничивает ток через транзистор на безопасном уровне (ок. 125 mA), предохраняя последний от выхода из строя при КЗ в нагрузке. Резистор R14 «подтягивает» выход к потенциалу «земли» — это необходимо, в первую очередь, для работы с цифровой логикой: известно, что отсутствие какого либо напряжения на своем входе (а при лог.0 на выводе 15 МК транзистор VT3 закрыт, и напряжение на его эмиттере отсутствует) большинство цифровых микросхем интерпретируют как лог.1. Резистор R14 «подтягивает» выход устройства к «земле» в те моменты, когда VT3 закрыт, что уверенно распознается подключенными к этому выходу цифровыми микросхемами как лог.0. Устройство имеет возможность отключать выходной сигнал кнопкой S1. В таком состоянии импульсы на выводе 15 отсутствуют, транзистор VT3 закрыт, на выходе устройства постоянно присутствует лог.0. Повторное нажатие S1 снова включает выходной сигнал. Светодиод HL1 является индикатором наличия выходных импульсов.

Устройство питается от стабилизированного источника питания напряжением 3,5-5 V. Если необходимо запитать прибор от источника с напряжением, превышающим 5 V (например, от «Кроны» или БП от игровой приставки), то в схему необходимо ввести стабилизатор с соответствующим выходным напряжением — например, интегральный, на микросхеме типа 7805, или параметрический, на стабилитроне и транзисторе. Диод VD1 защищает схему от случайной переполюсовки питания — он может быть любым, на ток не менее 150 mA (лично я для этого использую «раритетные» Д226 или Д7 из старых запасов — надо же их куда-то девать:)). Диод можно и не ставить, если конструкция разъема питания исключает переполюсовку (или если вы уверенны, что не ошибетесь при подключении питания). При желании можно также добавить и выключатель питания.

Алгоритм работы с устройством следующий: при включении питания импульсы на выводе 15 МК отсутствуют, светодиод HL1 не горит, на табло HG1 отображается номер выбранного режима. Для того чтобы на выходе прибора появились импульсы, необходимо нажать на кнопку S1, после чего загорится HL1, сигнализируя о появлении импульсов на выводе 15 МК. Повторное нажатие на S1 снова отключит выходной сигнал (т.о. S1 работает по принципу триггера). Переключать режимы работы устройства можно как при включенном, так и при выключенном кнопкой S1 выходном сигнале. Кнопка S2 увеличивает, а S3 уменьшает номер режима. Режимы переключаются по кругу — после режима №42 (5 MHz) следует режим OF (отсутствие выходного сигнала); еще одно нажатие на S2 включит режим №1 (0,5 Hz). Кнопка S3 ведет себя аналогично, только переключает в обратную сторону (№1-OF-№42). Значение выбранного режима запоминается в энергонезависимой памяти (EEPROM), поэтому при следующем включении прибора активным будет тот режим, в котором прибор работал перед выключением питания. Состояние выхода не запоминается — при каждом включении питания выходной сигнал всегда отсутствует — это сделано для защиты схемы, которая будет подключаться к генератору, от всякого рода случайностей: сначала нужно установить необходимый режим и минимальное выходное напряжение, а лишь затем включать выходной сигнал кнопкой S1.

Читайте также:  Откатные ворота цена с монтажом

Прошивка для МК была написана на чистом ассемблере (при помощи бесплатно распространяемой среды AVR Studio-4 от фирмы-производителя данного чипа), благодаря чему занимает в его флэш-памяти всего 602 байта. Установка fuse-ячеек в программе PonyProg приведена на рис.2. (Внимание! Если используется последовательное программирование, то не трогайте биты SPIEN и RSTDISBL — они должны быть такими же, как и у нового MK — в противном случае дальнейшее перепрограммирование МК будет недоступным! Просто, перед программированием считайте fuse-ячейки «свежего» МК (Security and Configuration Bits -> Read), и при записи новых значений оставьте биты SPIEN и RSTDISBL такими, какими они были прочитаны.)

Рис.2 — Установка Fuse-ячеек в программе PonyProg.

Резисторы, используемые в устройстве — малогабаритные, мощностью 0,125 Вт (кроме R13 — он на 0,25 Вт); их сопротивление может отличаться от указанного в довольно широких пределах. Все транзисторы устройства работают в ключевом режиме, поэтому могут быть любыми маломощными, структуры NPN — как отечественными, так и зарубежными. Важно лишь, чтобы VT3 мог уверенно работать на максимальной выходной частоте прибора (5 MHz). В качестве HG1 можно использовать любой сдвоенный семисегментный индикатор для динамической индикации с общими анодами. Если нет сдвоенного, то HG1 вполне можно собрать и на двух одинарных индикаторах, вплоть до «древних» АЛСххх — главное, чтобы общим выводом для всех сегментов был анод. Светодиод HL1 — любой, который не жалко:). Все кнопки — подпружиненные, без фиксации. Выходной разъем — типа «Азия».

Рис.3 — Устройство подключено к осциллографу.

Рис.4 — Внешний вид устройства.

Рис.5 — Выходной сигнал на экране реального осциллографа.

Внешний вид генератора, подключенного к осциллографу, показан на рис.3 (слева — блок питания, он на 9В (от приставки типа Dendy), но в его корпус был установлен интегральный стабилизатор типа 7805 — в итоге, на выходе 5В), а так же, на рис.4, осциллограмма выходного сигнала, снятая при помощи осциллографа С1-19Б — на рис.5. «Внутренности» прибора не фотографировал, т.к. собрал его довольно давно и посадил крышку на клей, а разбирать (т.е. ломать) корпус как-то неохота… В качестве корпуса для данного генератора была использована разветвительная коробка для открытой электропроводки, но возможны и другие варианты. Для удобства работы таблицу режимов желательно распечатать и приклеить двухсторонним скотчем к корпусу прибора (у меня она — с обратной стороны, на фото не видна). Микроконтроллер необходимо установить на панельке, чтобы его можно было легко перенести в программатор для записи «прошивки» (разъемов для внутрисхемного программирования ISP я обычно не делаю — перенос микросхемы в панельку программатора лично мне не доставляет никаких неудобств). Тип монтажа может быть любой (вплоть до SMD); я использовал классический — печатный, но рисунок платы не привожу, т.к. она получилась довольно-таки «кривой» (практически, повторяет принципиальную схему); хороший вариант — собрать все на «макетке» с дырочками (размер

Литература:

1. Горчук Н.В. — Генератор с цифровым управлением, ж.»Радиоконструктор», 12-2009, стр.18;

Ссылка на основную публикацию
Газобетон без отделки снаружи
Здание из газобетона может стоять без наружной отделки без какого-либо ущерба для целостности блоков (речь о автоклавном газосиликате). Но, со...
Водяной насос для аквариума 220 вольт
Barbus; Китай; См. на упаковке; В боксе 60 шт. BOYU; Китай; 5 см × 4 см × 6 см; XILONG;...
Водяная баня для крема как сделать
В кулинарии, косметологии и народной медицине часто используются формулировка «водяная баня». Однако не все понимают, что это такое и как...
Газовая духовка встраиваемая с функцией микроволновки
Газовый духовой шкаф с электро-грилем и конвекцией. Независимый газовый духовой шкаф с грилем и конвекцией. Способ подключения: газовый Ширина (см):...
Adblock detector