В этой статье рассматривается схемотехническое решение, устройство и конструкция DDS генератора (генератор с прямым цифровым синтезом формы сигнала) на микроконтроллере ATmega16 фирмы Atmel. В приборе, кроме синтеза сигнала различной формы и частоты, реализуется возможность регулировки амплитуды и смещения выходного сигнала.
Основные характеристики прибора:
- простое схемотехническое решение, доступные компоненты;
- односторонняя печатная плата;
- сетевой источник питания;
- специализированный выход частоты от 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 В).
Принципиальная схема прибора
Рисунок печатной платы
Вид со стороны установки элементов
Внешний вид платы с установленными компонентами
Список использованных элементов
Обозначение в схеме |
Номинал |
R1 | 470 Ом |
R2, R6, R8, R10, R12, R14, R16, R18 |
10 кОм |
R3, R21 | 100 кОм |
R4, R5, R7, R9, R11, R13, R15, R17, R19 |
20 кОм |
R20 | 100 Ом |
R22 | 12 кОм |
R23 | 150 Ом |
POT1 | Потенциометр 1 кОм |
POT2 | Потенциометр 47 кОм |
POT3 | Пдстроечный резистор 10 кОм |
C1, С2 | 100 нФ |
C3, С4 | 18 пФ |
Q1 | Кварцевый резонатор 16 МГц |
IC1 | Микроконтроллер Atmel ATMEGA16P |
IC2 | Операционный усилитель LM358N |
BNC1 - BNC2 | Коннектор типа BNC |
S1 - S6 | Кнопки |
LCD Header | 16-выводный коннектор для подключения дисплея |
LCD Module | ЖК модуль на базе контроллера HD44780 |
ISP | Коннектор 2×3 для внутрисхемного программирования |
POWER | Коннектор для подключения питания |
LED1 | Светодиод зеленого цвета свечения, 3 мм |
ON/OFF | Миниатюрный выключатель |
Изменения в программном обеспечении микроконтроллера
Изменения в исходном коде связаны лишь с назначением кнопок подключенных к порту D микроконтроллера:
1.Кнопки «влево» и «вправо»
#define LEFT 3 //PORTD #define RIGHT 1 //PORTD
2.Кнопки «вниз» и «вверх»
#define DOWN 4 //PORTD #define UP 0 //PORTD
Кроме того для последних версий компилятора AVR-GCC необходимо внести изменения в следующие строчки кода:
struct signal{ volatile uint8_t mode; //signal volatile uint8_t fr1; //Frequency [0..7] volatile uint8_t fr2; //Frequency [8..15] volatile uint8_t fr3; //Frequency [16..31] volatile uint32_t freq; //frequency value volatile uint8_t flag; //if 0 generator is OFF, 1 is ON volatile uint32_t acc; //accumulator volatile uint8_t ON; volatile uint8_t HSfreq; //high speed frequency [1...4Mhz] volatile uint32_t deltafreq; //frequency step value }SG;
Fuse-биты микроконтроллера ATmega16: HIGH = 0×59, LOW = 0×CF – это соответствует тому, что будут запрограммированы следующие биты: OCDEN, SPIEN, BOOTSZ1, BOOTSZ2, SUT1, SUT0.
Архив для статьи "DDS генератор на ATmega16" | |
Описание: Исходный проект AVR GCC, схема и плата в формате Eagle | |
Размер файла: 168.74 KB Количество загрузок: 5 280 | Скачать |
Комментарии
Нужно получить на выходе генерированный сигнал с током по амплитуде от 0 до 1 А (вручную регулирование, напр., потенциометром) . То есть важна форма и амплитуда тока, напряжение абсолютно не интересно. Т.е. выход должен работать как источник тока, не зависимо от нагрузки.
Подскажите, пожалуйста, каким методом реализовывали бы такую задачу Вы?
sxem.org/.../...
и еще вопрос обязателно корректировать прошивку с переназначением кнопок?
Да, можно, 16A более энергоэффективн а
Отличие в применяемых контроллерах и меню, кнопки переназначать необязательно
спасибо за ответ! буду собирать а то на атмега8 мне не нравится,часто слетает прошивка в момент подключения и отключения к измеряемым устройствам