Главная » Статьи » УСТРОЙСТВА НА МК |
Данный DDS функциональный генератор (версия 2.0) сигналов собран на микроконтроллере AVR, обладает хорошей функциональностью, имеет амплитудный контроль, а также собран на односторонней печатной плате. Данный генератор базируется на алгоритме DDS-генератора Jesper,
программа была модернизирована под AVR-GCC C с вставками кода на
ассемблере. Генератор имеет два выходных сигнала: первый - DDS сигналы,
второй - высокоскоростной (1..8МГц) "прямоугольный" выход, который может
использоваться для оживления МК с неправильными фузами и для других
целей. Основные характеристики DDS-генератора V2.0: На представленной ниже блок-схеме, приведена логическая структура функционального генератора: Как вы можете видеть, устройство требует наличие нескольких питающих напряжений: +5В, -12В, +12В. Напряжения +12В и -12В используются для регулирования амплитуды сигнала и смещения. Блок питания сконструирован с использованием трансформатора и нескольких микросхем стабилизаторов напряжения: Блок питания собран на отдельной плате: Если самому собирать блок питания нет желания, то можно использовать обычный ATX блок питания от компьютера, где уже присутствуют все необходимые напряжения. Разводка ATX разъема. LCD-экран Все действия отображаются через LCD-экранчик. Управление генератором осуществляется пятью клавишами Клавиши вверх/вниз используются для перемещения по меню, клавиши влево/вправо для изменения значения частоты. Когда центральная клавиша нажата - начинается генерирование выбранного сигнала. Повторное нажатие клавиши останавливает генератор. Система меню генератора: Для установки шага изменения частоты предусмотрено отдельное значение. Это удобно, если вам необходимо менять частоту в широких пределах. Генератор шума не имеет каких-либо настроек. Для него используется обычная функция rand() непрерывно подающиеся на выход DDS-генератора. Высокоскоростной выход HS имеет 4 режима частоты: 1, 2, 4 и 8 МГц. Принципиальная схема Схема функционального генератора простая и содержит легкодоступные элементы: Плата: Функциональный генератор собран в пластиковом боксе: Тестовый запуск: Программное обеспечение Как я уже говорил выше, в основе своей программы я использовал алгоритм DDS-генератора Jesper. Я добавил несколько строчек кода на ассемблере для реализации останова генерирования. Теперь алгоритм содержит 10 ЦПУ циклов, вместо 9. void static inline Signal_OUT(const uint8_t *signal, uint8_t ad2, uint8_t ad1, uint8_t ad0){ Таблица форм DDS-сигналов размещена во флэш памяти МК, адрес которой
начинается с 0xXX00. Эти секции определены в makefile, в соответствующих
местах в памяти: Библиотеку для работы с LCD можно взять здесь. Не хочу вдаваться в подробное описание кода программы. Исходный код хорошо прокомментирован (правда на английском языке) и если будут какие либо вопросы по нему, то всегда можете воспользоваться нашим форумом по МК или в комментариях к статье. Тестирование Я тестировал генератор с осциллографом и частотомером. Все сигналы хорошо генерируются во всем диапазоне частот (1...65535 Гц). Регулирование амплитуды и смещения работает нормально. В следующей версии генератора думаю реализовать сигнал нарастающей синусоиды. Последнюю версию ПО (WinAVR), исходник, файлы EagleCAD и Proteus можете скачать ниже. Список радиоэлементов
Скачать список элементов (PDF) Прикрепленные файлы:
Источник: http://hmelectro.ru/proekts/dds_generator/ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Просмотров: 7344 | | |
Всего комментариев: 0 | |