Цифровой электронный регулятор на базе AT90S2313-10PI
Цифровой электронный регулятор на базе AT90S2313-10PI
В статье представлен цифровой электронный регулятор, на базе микроконтроллера AVR. Особенностью данного устройства является то, что применяемый микроконтроллер реализует функцию управляемого генератора ШИМ-сигнала.
Представляемый цифровой электронный регулятор (далее регулятор) имеет следующие технические характеристики: число шагов регулирования – 99; диапазон регулирования уровня сигнала – 25 дБ; напряжение питания – 5 В; потребление тока по каналу напряжения:+5 В, не более 100 мА; переменная составляющая выходного напряжения (пульсация) ~ 50 мВ. Регулятор можно применить везде, где необходимо регулировать уровень напряжения аналогового сигнала, (который может быть управляющим) при этом контролировать его уровень в относительных единицах (в %). Например, данный регулятор можно применить в качестве регулятора громкости, а так же для регулирования яркости ламп накаливания или для управления вентиляторами.

Фактически, регулятор представляет собой ЦАП, где двухзначному числу, индицируемому на индикаторе устройства ставится в соответствие выходной уровень постоянного напряжения.
Принципиальная схема регулятора на базе микроконтроллера AT90S2313-10PI представлена на рис.1.
В AT90S2313 предусмотрены два таймера счетчика общего назначения: 8-разрядный таймер/счетчик О (Т/СО) и 16-разрядный таймер/счетчик 1 (Т/С1). (Т/С1) может работать в режиме ШИМ. В качестве источников импульсов для таймера/счетчика 1 можно выбрать сигнал с тактовой частотой микроконтроллера (СК) импульсы предварительного делителя (СК/8, СК/64, СК/256, СК/1024) или импульсы с соответствующего внешнего вывода. Рассмотрим регистры управления Т/С1. Это регистры TCCR1А и TCCR1 В. Т/С1 можно использовать как 8-, 9-, 10-разрядный широтно-импульсного модулятор. В этом случае счетчик и регистр OCR1A работают как защищенный от дребезга независимый ШИМ с отцентрированными импульсами.
При выборе режима широтно-импульсного модуляции (ШИМ) таймер/счетчик 1 и регистр совпадения OCR1A формируют как 8-, 9-, 10-разрядный непрерывный, свободный от «дрожания» и правильной по фазе сигнал, выводимый на вывод 15 (ОС1) микроконтроллера. Таймер/счетчик 1 работает как реверсивный счетчик, считающий от нуля до конечного значения. Конечное значение таймера и частота ШИМ, приведены в табл.1.
При достижении конечного значения счетчик начинает считать в обратную сторону до нуля, после чего рабочий цикл повторяется. Когда значение счетчика совпадет с 8, 9, 10 младшими битами регистра OCR1A, вывод 15 (ОС1) устанавливается или сбрасывается в соответствии установками битов СОМ1А1 и СОМ1А0 в регистре TCCR1A.
В целом программные ресурсы данного микроконтроллера позволяют реализовать ШИМ с достаточно гибким управлением и с достаточно большим диапазоном задаваемых частот.
В устройстве выбран 8-ми разрядный ШИМ. Поэтому в регистр TCCR1A загружается число 0Ы1000001. Для согласования двухразрядного числа индицируемого на индикаторах HG1.1 и HG1.2 с выходным напряжением регулятора в программе заложена формула:
Y= 255 – 2,5 X, где X – число индицируемое на индикаторах; Y – число загружаемое в счетчик таймер/счетчика 1. Понятно, что частота ШИМ «привязана» к частоте кварцевого резонатора ZQ1 подключаемого к микроконтроллеру. Нетрудно подсчитать , что при частоте кварцевого резонатора 10 МГц в программе, при 8-ми разрядном ШИМ, можно задать минимальную частоту ШИМ – 10000000 Гц / 1024 510 = 19,15 Гц и максимальную – 10000000 Гц/510 = 19607,8 Гц. В регуляторе частота ШИМ задана максимальной – 19607,8 Гц. Для того, что бы выходное значение напряжения регулятора увеличивалось, необходимо с увеличением относительного значения, индицируемого на индикаторах увеличивать коэффициент заполнения ц ШИМ-сигнала. М = ти/Тп где t – длительность импульса ШИМ-сигнала; Тп – период ШИМ-сигнала. Максимальный уровень выходного напряжения регулятора будет при ц = 1. В начале статьи показана фотография регулятора. На индикаторе регулятора задано максимальное относительное значение выходного напряжения.
В регуляторе три основных функциональных узла. Это генератор ШИМ-сигнала выполненный на базе микроконтроллера AT90S2313, сглаживающий LC-фильтр и усилительный каскад, выполненный на транзисторе VT1. Индикатор HL1 управляется с вывода 11 микроконтроллера DD1.C порта В микроконтроллер DD1 управляет клавиатурой (кнопки S1…S3) и динамической индикацией. Динамическая индикация собрана на транзисторах VT1, VT2, сдвоенного цифрового семисегментного индикатора HG1. Резисторы Р5…Р12токоограничительные для сегментов вышеуказанных индикаторов. Коды для включения индикатора HG1, при функционировании динамической индикации поступают на порт В микроконтроллера DD1. Для функционирования клавиатуры задействован так же вывод 6 микроконтроллера DD1. Рабочая частота 10 МГц микроконтроллера DD1 задается генератором с внешним резонатором ZQ1. ШИМ-сигнал с вывода 15 микроконтроллера DD1 через резистор R4, поступает на LC-фильтр (L1, С4) и далее на базу эмитерного повторителя (транзистор VT1).
В интерфейс устройства входят клавиатура (кнопки S1…S3), индикатор HL1, и сдвоенный семисегментный индикатор HG1. Кнопки клавиатуры имеют следующее назначение:
51 ( # ) – увеличение на единицу относительного значения выходного напряжения (в %) при удержании данной кнопки в нажатом состоянии более 2 секунд, значение выходного напряжения индицируемое на дисплее увеличивается на 5 единиц за 1 секунду;
52 ( * ) – уменьшение на единицу относительного значения выходного напряжения (в %) при удержании данной кнопки в нажатом состоянии более 2 секунд, значение выходного напряжения индицируемое на дисплее уменьшается на 5 единиц за 1 секунду;
53 ( С ) – выключение регулятора, при выключении регулятора выключается индикатор HL1, на выводе регулятора устанавливается значение напряжения равное нулю.
Системный сброс микроконтроллера DD1 осуществляется сигналом низкого уровня, через RC-цепь (резистор R3, конденсатор СЗ). Сразу после подачи питания инициализируются регистры, счетчики, стек, таймеры Т/СО и Т/С1, сторожевой таймер, порты ввода/вывода. При инициализации индикатор HL1, отключен. На индикаторах HG1, HG2 индицируются нули.
Для перевода устройства в рабочий режим необходимо кнопками S1 ( # ), S2 ( *) установить необходимое значение выходного напряжения. При значении выходного напряжение, отличном от нуля будет включен индикатор HL1. Для выключения необходимо нажать на кнопку S3 (С), при этом на выходе устройства установится нулевое значение выходного напряжения.
Программа состоит из трех основных частей: инициализации, основной программы, работающей в замкнутом цикле и подпрограммы обработки прерывания от таймера Т/СО (соответственно метки INIT, SE1, SO).
В основной программе происходит инкремент, декремент заданного значения ШИМ (заданного значения выходного напряжения). В подпрограмме обработки прерывания от таймера Т/СО происходит опрос клавиатуры и перекодировка двоичного числа значений времени в код для отображения информации на семисегментнных индикаторах и отображения разрядов в динамической индикации.
В памяти данных микроконтроллера с адреса $60 по $61 организован буфер отображения для динамической индикации.
Каждый байт из функциональной группы в цикле, в подпрограмме обработки прерывания таймера Т/СО (метка SO), после перекодировки выводится в порт В микроконтроллера. Для включения индикаторов HG1, HG2 необходимо установить лог. 0 на выводах 2, 3, микроконтроллера DD1 соответственно. Так, например для того чтобы на индикаторе HG1 индицировалось число «1», необходимо двоично-десятичное число расположенное по адресу $60 перекодировать, вывести в порт В микроконтроллера и установить лог. 0 на выводе 2 микроконтроллера DD1. Записывая поочередно после перекодировки, в цикле, в порт В микроконтроллера байты из функциональной группы буфера отображения, и лог. 0 на соответствующий выводы порта D мы получаем режим динамической индикации.
При нажатии на кнопку S1 относительное значение выходного напряжения на дисплее увеличивается на единицу. Одновременно запускается счетчик организованный на R2, формирующий интервал 2 сек. Если кнопка удерживается более 2 секунд, значение индицируемое на дисплее увеличивается на 5 единиц за 1 секунду. Интервал времени в течении которого происходит увеличение времени организован в R1. При отпускании кнопки S1 все вышеуказанные счетчики обнуляются.
Совершенно аналогичным образом организована работа кнопки S2 для уменьшения относительного значения выходного напряжения, индицируемого на дисплее. При нажатии на кнопку S2, текущее значение индируемое на дисплее уменьшается на единицу. Если кнопка удерживается более 2 секунд, значение индицируемое на дисплее, уменьшается на 5 единиц за 1 секунду. Счетчики приведенного алгоритма для кнопки S2 организованы соответственно в регистрах R3, R4.
В регистре R22 осуществляется выбор разрядов в динамической индикации. При инициализации в R22 заносится число 0600000001. При каждом обращении к подпрограмме обработки прерывания единица сдвигается влево, подготавливая включение следующего разряда.
В подпрограмме так же осуществляется проверка: не вышла ли единица за пределы разрядной сетки, т. е. после числа ОЬОООООЮО в R22 загружается снова 0Ь00000001.
Все флаги, которые используются при работе программы, выполнены на регистрах R24, R25. Назначение каждого флага приведено в тексте программы. Файл прошивки можно скачать с сайта издательства www.ra-publish.com.ua
В принципиальной схеме (рис.1) применены конденсаторы С1, С2, С5, С6 типа К10-17а. Конденсатор СЗ, С7 типа К50-35, конденсатор С4 типа К50-24. Конденсатор С5 устанавливаются между цепью +5V и общим проводником микроконтроллера DD1. В схемах применены резисторы типа С2-ЗЗН-0.125.
Дроссель L1 выполнен на магнитопроводе типа МП 140. Типоразмер магнитопровода – К28х 16 х 9. Обмотка дросселя содержит 150 витков провода ПЭТВ-2 0,28.
Сдвоенный индикатор HG1 зеленого цвета типа DA56-11GWA. Подойдут любые, другие индикаторы с общим анодом и приемлемой яркостью свечения, например отечественные типа АЛС321. Можно подобрать другие, более наглядные, или с другими габаритными размерами, элементы индикации, с учетом оговоренных выше требований. Индикатор HL1 типа ЗЛ341К красного цвета, можно подобрать абсолютно любой с I =10мА.
Комментов пока нет