В этой статье рассматривается схемотехническое решение, устройство и конструкция 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 генератора

Блок-схема 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 208 Скачать