Целью проекта было создание простой схемы на базе микроконтроллера (МК) AVR. При этом схема должна была использовать максимум возможностей МК и содержать минимальное количество внешних компонентов.
Генератор выдает синусоидальный сигнал в диапазоне 20 Гц…20 кГц с размахом напряжения около 3,5 В и искажениями менее 1%. Настройка ступенчатая и плавная в пределах диапозона. Сигнал создается в цифровом виде с разрешением 8 бит и частотой дискретизации 625 кГц.
Принципиальная схема генератора представлена на рис. 1.
Рис.1. Принципиальная схема DDS генератора
Сердцем схемы является ATtiny25, содержащий 2 КБ FLASH-памяти, 10-битный АЦП и быстродействующий таймер с ШИМ-выходами.
Диапазон генератора выбирается 3-позиционным переключателем S1 и составляет в положениях 1, 2 и 3 (20…200 Гц, 200 Гц…2 кГц и 2…20 кГц соответственно). Переключатель устанавливает напряжение 0 В, +2,5 В или +5 В на входе PB2, измеряемое аналого-цифровым преобразователем.
Регулировка частоты в пределах диапазона осуществляется потенциометром Р1. Любые «хлопки» потенциометра фильтруются с помощью цифрового фильтра с постоянной времени 50 мс.
Потенциометр Р2 обеспечивает регулировку уровня выходного сигнала.
Для получения синусоидального сигнала используется прямой цифровой синтез (DDS). В постоянную память помещается 1024 отсчета значения одного периода синусоидального сигнала. Эти значения считываются через интервалы времени, равные периоду выборки Ts (1,6 мкс). После каждого чтения адрес памяти (представляющий фазу сигнала) изменяется на значение ∆ = f•1024Ts, где f — частота генерируемого сигнала. В общем случае ∆ — дробное число.
МК использует формат фиксированной точки. И фаза, и ее приращение имеют 32 бита, из которых 6 старших игнорируются, следующие 10 определяют адрес памяти, а 16 младших являются дробной частью. Наименьшее ненулевое значение ∆, которое можно получить, составляет 1/65536; его соответствующая частота будет 1/65536/(1024•1,6 мкс)=0,00931 Гц. В генераторе значение ∆ находится в пределах от 0,03276 до 32,76.
Синтез происходит в прерываниях Таймера 0, которые генерируются каждые 32 периода внутренней тактовой частоты схемы (20 МГц). Таким образом, частота создаваемого синусоидального сигнала является производной тактовой частоты схемы. Источником этой синхронизации является внутренний RC-генератор. В данном примере его частота может немного отличаться от стандартной. Поэтому в схеме реализована возможность настройки (калибровки) RC-генератора с точностью примерно 1%.
Цифро-аналоговый преобразователь основан на схемах широтно-импульсной модуляции (ШИМ) микроконтроллера. Метод обработки ШИМ использует тот факт, что прямоугольный цифровой сигнал с амплитудой U и коэффициентом заполнения K (0…1) имеет среднее значение, равное U•K. После фильтрации переменной составляющей сигнала мы получаем напряжение, прямо пропорциональное коэффициенту K. Схема, состоящая из генератора прямоугольных импульсов с регулируемой шириной и фильтра нижних частот, становится цифро-аналоговым преобразователем.
На рис. 2 показана идея ШИМ-обработки.
Рис. 2. Принцип работы ШИМ-преобразователя
На рис. 2 показана идея ШИМ-обработки. Цифровой сигнал отображается зеленым цветом (до фильтра), а его среднее значение (после фильтра) — красным.
При проектировании генератора предполагалось использовать высокую частоту fPWM – несколько МГц. Однако модулятор ШИМ, работающий на частоте 80 МГц и работающий с разрешением 8 бит, будет генерировать сигнал с частотой 80 МГц/256 = 312,5 кГц.
Поэтому были использованы два модулятора. Каждый из них имеет 4-битное разрешение, поэтому fPWM=80 МГц/16=5 МГц. Модулятор А обрабатывает старшие 4 бита каждого семпла, а модулятор Б – нижние 4 бита (с меньшим весом в 16 раз). Сигналы обоих модуляторов суммируются в R1/R2. Подходящие веса обеспечиваются соотношением сопротивлений 1:16.
Резистор R2 вместе с С1 образует фильтр нижних частот 1-го порядка. Синусоидальный выходной сигнал имеет частоту до 20 кГц. Фильтр не должен ослаблять его более чем на 0,5 дБ, отсюда и частота среза fg 70 кГц.fPWM составляет 5 МГц, поэтому пульсации достигают примерно 100 мВ от пика до пика. Их уменьшение осуществляется за счет добавления второго фильтра нижних частот R3 и C2, снижающий пульсации до нескольких милливольт, как показано на рис. 3.
Рис. 3. Уменьшение пульсаций за счет добавления второго фильтра
Монтаж и наладка
Расположение элементов представлено на рис. 4. Обратите внимание на R1-R3, которые берутся с допуском 1%.
Рис. 4 Расположение элементов на печатной плате
Правильно собранное устройство с использованием исправных компонентов работает сразу после включения питания, требуется лишь простая калибровка. Калибровка выполняется только при первом запуске генератора.
Калибровка внутреннего RC-генератора предполагает уменьшение или увеличение состояния регистра OSCCAL. Программа генератора сохраняет новое значение OSCCAL в энергонезависимой памяти EEPROM, и это значение восстанавливается при каждом включении питания.
Для проведения калибровки подключите частотомер к разъему J1, затем перемычкой «ДИАПАЗОН» выберите диапазон 200Гц…2кГц (перемычка в среднем положении 0,2-2 кГц) и с помощью потенциометра P1 установите одну из частот 200 Гц, 1 кГц или 2 кГц на выбор. Корректировка уменьшением (-) или увеличением (+) частоты на одну ступень производится с помощью разъема J2 «КАЛИБРОВКА» путем замыкания его среднего контакта на один из крайних контактов (+ или -), по необходимости. Для этого можно использовать кнопку. Чтобы предотвратить эффект джиттера (дребезга) контактов кнопки, программа не реагирует на изменения состояния PB2, если они короче 20 мс.
Во время калибровки избегайте установки частоты выше номинальной, так как это приведет к превышению допустимой тактовой частоты схемы.
Программировать микроконтроллер можно через разъем J3 (до переключения S1 в положение 2). Настройки FUSE BIT следующие:
LOW BYTE= 0xF1:
CKDIV8=1
CKOUT=1
SUT1:0=11 (14 CK+16K CK+64 мс)
CKSEL3:0=0001 (PLL Clock_
HIGH BYTE = 0xDF:
RSTDISBL=1
DWEN = 1
SPIEN=0
WDTON=1
EESAVE=1,
BODLEVEL2:0=111
EXTENDED=0xFF:
SELFPRGEN = 1
Для питания генератора используется стабилизированное напряжение 5 В±10%.
Общий вид платы генератора DDS:
Статья из журнала ELEKTRONIKA PRAKTYCZNA 5.2010
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
U1 | МК AVR 8-бит | ATtiny25 | 1 | |||
R1 | Резистор | 1.1 кОм | 1 | 1 | ||
R2 | Резистор | 18 кОм | 1 | 1 | ||
R3 | Резистор | 1 кОм | 1 | 1 | ||
R4-R6 | Резистор | 10 кОм | 3 | 5 | ||
С1 | Конденсатор | 2700 пФ | 1 | |||
С2 | Конденсатор | 470 пФ | 1 | |||
С3 | Конденсатор | 10 мкФ 16В | 1 | |||
С4 | Конденсатор | 0.1 мкФ | 1 | |||
Р1 | Переменный резистор | 10 кОм | 1 | |||
Р2 | Переменный резистор | 10 кОм | 1 | |||