Меню

Генератор прямоугольных импульсов atmega8



Низкочастотный DDS генератор на ATmega8

DDS генератор, или генератор Прямого Цифрового Синтеза в настоящее время уже далеко не новинка. На просторах интернета представлено большое количество схем, преимущественно на микроконтроллерах AVR. В качестве ЦАП-а в основном выступает R-2R матрица, но присутствуют конструкции и на микросхеме AD9850 (к слову, низкой стоимостью они не отличаются). Но к сожалению (или у счастью?), в них не было нужного мне: небольшие размеры и низкая стоимость. Как итог, была разработана данная схема.

В данной статье я хочу представить DDS генератор, выполненный на микроконтроллере ATmega8. Для отображения информации используется графический LCD LPH8731-3C. Данное устройство позволяет получить периодичный сигнал с произвольной формой (разрешение 100 точек) и заданной амплитудой.

Технические характеристики:

  • Напряжение питания: 5В
  • Потребляемый ток: 5В. Но так как хотелось универсальности, решил сделать этот блок съемным.

Возможная замена элементов

Микроконтроллер можно использовать только ATmega8-16AU. Операционный усилитель LM358 аналогичным (к примеру, NE532, OP04, OP221, OP290, . ) в корпусе SO-8, и про возможное несоответствие выводов забывать не стоит. Транзистор Q1 можно взять любой маломощный n-p-n, к примеру отечественный КТ315 или КТ3102. Резисторы R1-R16 желательно брать с минимальный допуском (0,5. 1%), но пойдут и более распространенные 2. 5% (но тут форма сигнала может быть немного хуже). Причем, желательно взять резисторы одного номинала (пусть будет 10кОм), и потом там где требуется 2R ставить 10кОм, а где R — 2х10кОм параллельно. Конденсаторы C1, C2 желательно брать в диапазоне 22. 33пФ. Кварцевый резонатор использован низкопрофильный, на частоту 16МГц. Резистор RV1 — многооборотный. Стабилитрон можно ставить только на 3.3В.

LCD дисплей можно использовать только с желтой подложкой и надписью «LPH8731-3C». Он встречается в мобильных телефонах Siemens A60, A65 и др. и имеет разрешение 101×80 пикселей.

Настройка

Правильно собранное устройство в наладке не нуждается, и должно работать сразу после сборки и прошивки контроллера. Если этого не произошло, то проверьте на короткое дорожки на печатной плате, правильность подключения LCD дисплея, целостность проводов от переключателя SA1 а так же исправность стабилитрона и источника питания/кабеля USB.

При успешном первом включении, необходимо с помощью осциллографа и подстроечного резистора RV1 настроить уровень выходного сигнала согласно установкам на дисплее.

Назначение кнопок: SB1 — «Влево» (Вых. напряжение меньше), SB2 — «Вправо» (Вых. напряжение больше), SB3 — «Частота +10» (Частота +100), SB4 — «Частота -10» (Частота -100) ATmega8A-AU

Источник

Генератор прямоугольных импульсов на atmega8 (асм)

Сформировать на выходах последовательности прямоугольных импульсов
Всем добрый день. Возникли трудноси с лабораторной работой. Не успеваю освоить даннный язык, из-за.

Генератор прямоугольных импульсов
Всем добрый день. Помогите разобраться со схемой. .

Генератор прямоугольных импульсов
Здравствуйте, уважаемые участники форума. Помогите, пожалуйста, построить генератор прямоугольных.

Генератор прямоугольных импульсов на ОУ
Здравствуйте! Необходима помощь с курсовой работой. Есть схема генератора прямоугольных.

Таймер1 в АТмеге8 вообще-то 16-битный, так что максимальный период получается 8,388608с. Поэтому надо использовать дополнительную переменную.

Вот код, генерирующий импульсы на PB1 с периодом 9с

Архив. Пояснений не будет. МК ATMEGA8535. PORTA — меиндр. Импульс 4500 мс, пауза 4500 мс. В итоге 9 секунд. Как и запрошено.

Был сильно занят, потому некогда было расписывать проект. Используются программные таймеры. Модуль генератора как конечный автомат. Аппаратный таймер настраивается на прерывание каждые 1 мс.
Автомат генератора работает следующим образом.
0 состояние: инициализация, установка программного таймера на 4500 мс. Установка состояния ожидания таймера.
1 состояние: если время не вышло, выход. Если вышло, переключение пина, переустановка таймера.

Можно сделать еще проще. Но если вы покажете этот проект профессору, зачет вам обеспечен :)))

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Генератор прямоугольных импульсов на ОУ
Всем читающим доброго времени суток. Прежде чем задать вопрос, позволю себе небольшую преамбулу.

Генератор прямоугольных импульсов на ОУ
Добрый день. Мне нужно сделать генератор прямоугольных импульсов на ОУ. «Схемотеническое».

Генератор прямоугольных импульсов. Таймер с фиксированной паузой и продолжительностью
Доброго времени суток форумчани. Пишу генератор импульсов. Как зделать так чтобы в таймера было.

построение пачки прямоугольных импульсов
как построить то что изображено на рисунке в matlab’е?

Источник

Генератор импульсов на ATmega8

Приветствую!

Радиолюбителям, схемотехникам иногда необходимо настроить какое-нибудь цифровое устройство, как например, счетчик импульсов, тахометр, осциллограф и т.п. Или просто узнать, работает ли оно. Очень удобно пользоваться генератором, выдающим прямоугольные импульсы различной частоты.

Проект такого генератора я и хочу предложить.

Сначала схема генератора импульсов:

Основу устройства составляет популярный микроконтроллер ATmega8 фирмы Atmel.

Описание схемы. Вся схема питается напряжением 5 В. Микроконтроллер тактируется частотой 8 МГц, которая стабилизирована кварцем Х1. Для генерации импульсов используется таймер/счетчик №1. В виде кнопок на схеме, подключенных к выводам PC3, PC4 и PC5 изображен энкодер. Две крайних кнопки заменяют переключение энкодера при вращении, а кнопка посередине – это кнопка энкодера, замыкающаяся при нажатии на его ось. Прямоугольные импульсы заданной с помощью энкодера частоты амплитудой 5 В снимаются с выхода таймера 1 (OCR1A). Для отображения выходной частоты применяется 16-и символьный однострочный ЖК-дисплей WH1601, подключенный к порту D микроконтроллера. Дисплей тоже распространенный, на драйвере HD44780. Резистором R1 регулируется контраст дисплея. Обмен данными между МК и дисплеем организован с помощью 4-х проводной шины. Разъем J1 для внутрисхемного программирования МК.

Теперь о программе для микроконтроллера.

Программа написана в среде разработки CodeVisionAVR. В данной среде имеются готовые библиотеки для работы с дисплеем, да и настройка МК понятна и проста. Я использовал версию до выхода CodeVisionAVR версии 3.12. Она немного отличается в генерации кода с использованием Wizarda. Но, в основном, все то же самое. Далее все описано на примере работы с CodeVisionAVR версии 3.12. В интернете полно ссылок для изучения данной среды, например: изучение интегрированной среды разработки CodeVisionAVR.

Запускаем CVAVR. Создаем новый проект (New Project). Программа предложит использовать мастер создания проекта.

Соглашаемся. Затем выбираем семейство контроллера.

Далее с левой стороны выбираем закладку Chip, выбираем контроллер (ATmega8), вводим его рабочую частоту (8 МГц).

Настраиваем порты ввода-вывода. Нужно сделать выходом бит 1 порта B (PB1) – с него снимается генерируемая частота. Порт D пока оставляем как есть. А выводы, с которых будет считываться состояние энкодера (PC3, PC4, PC5) настроить на вход (Data Direction: In) и включить внутреннюю подтяжку к питанию (Pullup/Output Value – значение P).

Переходим на вкладку Timers/Counters. Здесь нужно настроить 2 таймера: Timer0 и Timer1, остальные таймеры оставляем выключенными (Clock Value: Stopped).

Устанавливаем частоту Timer0 125 кГц. Данный таймер необходим для периодического опроса состояния энкодера. Опрос будет происходить каждый раз, как только таймер досчитает до верхнего значения. Поскольку Timer0 8-и разрядный, то верхнее значение у него 255. А чтобы контроллер прерывал выполнение основной программы для опроса энкодера, нужно включить прерывание по переполнению Timer0 (Overflow Interrupt).

Настраиваем Timer1. Нужно выбрать режим (Mode) CTC (Clear Timer on Compare – Сброс при совпадении). В этом режиме выход таймера будет переключаться в лог. 0 как только содержимое счетного регистра TCNT1 совпадет с регистром OCR1A. За счет изменения значения в регистре OCR1A мы и будет изменять частоту выходных импульсов. В схеме используется выход А таймера 1. Для него нужно выбрать значение Toggle on Compare Match (переключиться в другое состояние при совпадении). В общем, смотрим картинку:

Следующий шаг – подключение дисплея. В CodeVisionAVR достаточно указать к какому порту МК будет подключен дисплей. Выбираем порт D.

Теперь нужно сгенерировать код программы. Нажимаем Program ->Generate, Save and Exit

Программа предложит сохранить 3 файла: файл кода (расширение .с), файл проекта (.prj) и файл ресурсов (.cwp).

Теперь нужно зайти в настройки Project -> Configure и проверить, что правильно заданы тип МК и его тактовая частота:

Готовый проект для CVAVR

ATmega8_Generator (316,0 KiB, 1 311 hits)

Для прошивки МК нужен файл с расширением .hex. В готовом проекте это файл Gen_mega8.hex. Он расположен в папке Release/Exe/.

Если есть желание написать программу с нуля, то в проекте есть комментарии, какие команды для чего нужны. Или можно просто вставить готовый код из файла gen_mega8.c. И, изменяя его, смотреть как это отражается на готовом устройстве. Для генерации файла прошивки МК нужно нажать кнопку Build the project. Файл с расширением .hex сгенерится в папку Release/Exe/.
Fuse-биты контроллера программируются на работу с внешним кварцевым резонатором 8 МГц в соответствии с рисунком:

Теперь об управлении генератором импульсов.

После подачи питания происходит инициализация дисплея и энкодера (настраиваются выводы, к которым подключен энкодер). Далее по дисплею пробегает полоса (необязательная “фишка”, была сделана для тренировки вывода на дисплей) и высвечивается надпись “Генератор выкл.”. Спустя 2 сек дисплей очищается. Частота на выходе появляется после вращения ручки энкодера, и изменяется на единицы Герц. При нажатии и удержании кнопки энкодера около 0.5 сек на экран выводится сообщение “Отпусти кнопку”. После этого вращением ручки энкодера частота меняется по десяткам Герц. Для изменения частоты на сотни (тысячи) Герц нужно еще раз (2 раза) нажать кнопку энкодера. Затем все снова начинается с единиц Герц.

Для увеличения нагрузочной способности генератора выход МК можно включить через транзистор.

О точности выходной частоты.

Значения выходной частоты проверялись осциллографом. На малых частотах, примерно до 200Гц, значения совпадают с измеренными на осциллографе, затем чем больше частота, тем больше погрешность (это получается из-за нецелых чисел, записываемых в регистр сравнения). Точность можно повысить, если в регистр сравнения заносить константы из массива (мне высокие частоты не нужны были, да и просто лень считать и заносить числа в массив)). На высоких частотах, чтобы повысить точность, нужно брать другую частоту таймера.

Недавно приобрел очень удобный и компактный мультиметр, которым можно померить частоту (до 9.999 МГц). Вот его видеообзор . А заказать можно по этой ссылке .

Микроконтроллер можно прошить специальным программатором либо сделать простой программатор самому. Например, я успешно использую программатор USBasp. Такой программатор можно заказать по ссылке по очень привлекательной цене.

[contact-form-7 title=”Контактная форма 1″]

Если Вы нашли что-то полезное, поделитесь с друзьями:

Источник

Цифровой генератор на ATMEGA8

Автор: Soir. Опубликовано в Измерения

Еще один простой цифровой генератор, который п озволяет генерировать:

— сигналы разной формы с частотой до 64999 Гц;

— прямоугольные импульсы до 8 МГц

— видеосигнал, вертикальные полосы градации серого.

Не претендую на авторство этого проекта, в интернете много вариантов такого генератора, первоисточник мне установить не удалось. За основу взял эту разработку. Переделал схему и прошивку под ATMEGA8 (такие переработки тоже попадались), переработал под свои потребности. Генератор собран и испытан. Если по ходу эксплуатации буду что-то дорабатывать, то все обновления будут выкладываться в этой статье.

Описание генератора.

1. Генерирование сигналов.

– синусоида, диапазон 1 ÷ 64 999 Гц;

– прямоугольные импульсы, диапазон 1 ÷ 64 999 Гц;

– треугольные импульсы, диапазон 1 ÷ 64 999 Гц;

– прямая пила, диапазон 1 ÷ 64 999 Гц;

– обратная пила, диапазон 1 ÷ 64 999 Гц;

импульсы. Ступенчато от 1кГц до 8МГц.

— видеосигнал вертикальных полос градации серого и звуковой сигнал 1 кГц.

В основном режиме при остановленном генераторе кнопками UP / DOWN выбор формы сигнала.

Кнопками LEFT / RIGHT перемещение между разрядами частоты. Устанавливаемый разряд мигает. При установке тысяч и десятков тысяч существуют программные ограничения, чтобы максимальная частота не превысила 64 999 Гц.

При установке частоты высокочастотных импульсов частота устанавливается ступенчато из ряда: 8000, 4000, 2000, 1000, 500, 400, 250, 200, 125, 100, 50, 40, 25, 16, 10, 8, 5, 4, 2, 1 кГц.

Запуск/остановка генератора производится кнопкой START .

При запущенном генераторе можно изменять частоту только для высокочастотного генератора. Для изменения других параметров следует сначала остановить генератор.

Выбранные настройки записываются в энергонезависимую память.

Осциллограммы работы генератора:

Телевизионный сигнал вертикальные полосы:

В архиве прошивка для микроконтроллера, FUSE, проект в Proteus (почти схема), описание, файл LCDALPHA.DLL для корректного отображения кириллицы при симуляции в Proteus.

Добавил схему, по которой велось изготовление прибора, и печатную плату.

Печатная плата состоит из двух частей — основная и кнопки управления.

Печатаная плата разрабатывалась по имеющиеся в наличии детали и под условия монтажа в конкретный корпус, в котором уже установлен источник стабилизированного питания +-9V.

Изменения в прошивке и схеме. Теперь для изменения параметров генератора (форма, частота сигнала. ) вручную останавливать генератор нет необходимости. Если изменение параметров производится при запущенном генераторе, то на время нажатой кнопки генерация прекращается, а после отпускания кнопки автоматически возобновляется.
Это повлекло за собой небольшие изменения в схеме и индикации.

Еще доработана прошивка. Добавлен выход сигнала ШИМ. Частота ШИМ от 1 Гц до 1 МГц. Ширина импульсов регулируется от 1 до 99%. Весь спектр частот разбит на 6 диапазонов в каждом диапазоне 10 фиксированных частот. В верхнем диапазоне регулировка ширины импульсов неравномерная, связано с возможностями МК.

Изменений в схеме нет. Выход сигнала ШИМ производится на выход HS.

Также устранены мелкие баги.

Для обсуждения материалов статьи создана тема на форуме. Все вопросы туда.

Источник

Читайте также:  Генератор в моторе 7 букв сканворд