Проект Eldigi.ru пережил своё новое становление. В связи с этим на сайте могут быть ошибки. Нашли ошибку? Помогите проекту, выделите её и нажмите Ctrl+Enter. Подробнее...

Регулятор яркости лампы накаливания на микроконтроллере (AT89C2051, asm)

В этом проекте рассказывается о микроконтроллерном регуляторе яркости лампы накаливания (далее просто регулятор). Регулятор предназначен для использования в настольном светильнике. Описываемый регулятор отличается от аналогов наличием в нем встроенного таймера отключения нагрузки. Благодаря наличию такой функции, описанное в данном проекте устройство должно заинтересовать родителей, дети которых боятся засыпать в темноте.
Публикуемый проект содержит подробное описание устройства регулятора, правила использования устройства, описание программы, блок схемы алгоритмов.

Регулятор предназначен для управления яркостью лампы накаливания мощностью не более 100 Вт, питающейся от сети переменного тока 230 вольт частотой 50 Гц. В основе используемого метода - фазовое регулирование момента включения симистора, включенного последовательно с лампой накаливания.

Устройство, помимо изменения мощности от 0 до 100%, выполняет следующие функции:

  1. таймер отключения с возможностью задания времени от 1 до 100 минут, режим таймера устанавливается пользователем;
  2. плавное включение и выключение лампы накаливания;
  3. сохранение всех введенных настроек в энергонезависимой памяти (заданный уровень мощности, время таймера, текущий режим).

ОПИСАНИЕ СХЕМЫ
Конструктивно в авторском исполнении регулятор выполнен в виде двух печатных плат, соединенных между собой плоским кабелем. Одна из плат является платой пульта управления, на ней размещаются микроконтроллер и все элементы операторского контроля. Вторая плата является силовой и содержит клеммы подключения к питающей сети и лампе, симистор, помехоподавляющий фильтр, схему синхронизации с сетевым напряжением и источник питания регулятора.
Регулятор построен на основе микроконтроллера AT89C2051 фирмы ATMEL. Микроконтроллер имеет стандартные цепи: схему подключения к кварцевому резонатору с частотой 12 МГц (ZQ1, C1, С2) и схему сброса (VD1, R1, C3). Данные, содержащие сведения о заданных уровнях и режимах сохраняются в микросхеме энергонезависимой EEPROM памяти DD2, подключенной по шине I2C. Резисторы R3 и R6 являются подтягивающими и нужны для нормальной работы шины I2C. Светодиод HL1 отображает режимы работы регулятора. Дисплей HL2 предназначен для отображения текущего значения уровня мощности или времени таймера. Этот индикатор содержит два семисегментных светодиодных индикатора. Схема динамической индикации включает в себя набор резисторов RE1, резисторы R4-R8, транзисторы VT1 и VT2.
Кнопки S1, S2, S3 позволяют управлять регулятором. Диоды VD2, VD3, VD4 и резистор R2 являются элементами схемы динамического опроса кнопок. Схема динамического опроса кнопок введена из-за нехватки выводов микроконтроллера для непосредственного ввода-вывода всех сигналов. Так как порт P1 работает исключительно на вывод данных, это позволяет путем использования всего одного вывода порта P3 опрашивать состояние всех трех кнопок.
Секция DD3.1 микросхемы DD3 "исключающее или" 74HC86 выполняет функцию инвертора и буферного элемента между микроконтроллером и полевым транзистором (см. рисунок 2). Помимо разгрузки вывода этот инвертор необходим для формирования неактивного уровня управления симистором при сбросе микроконтроллера. При подаче питания, до того момента как произойдет инициализация микроконтроллера DD1, симистор гарантированно находится в выключенном состоянии. Узел, в который входят DD3.2, DD3.3, DD3.4 резистор R9 и конденсатор C3 обеспечивает формирование отрицательного импульса длительность около 30-40 мкс из меандра, поступающего с выхода компаратора, обеспечивающего синхронизацию с питающей сетью. Этот схема необходима для формирования внешнего прерывания по уровню, типичного для микроконтроллеров 51-го семейства. Прерывание по уровню является более помехоустойчивым и более пригодно для использования в подобных регуляторах, по сравнению с прерыванием по фронту.

Описание силовой платы. Напряжение сети переменного тока поступает на первичную обмотку трансформатора T1. Напряжение вторичной обмотки трансформатора поступает на мостовой выпрямитель из диодов VD2-VD5 и узел синхронизации с сетью, состоящий из резисторов R7-R9, диодов VD6 и VD7, микросхемы компаратора DA2. Стабилизатор DA1 формирует стабилизированное напряжение питания 5 вольт, необходимое для питания регулятора. Несмотря на наличие трансформатора, управляющая часть регулятора гальванически не развязана от сетевого напряжения. Необходимость введения трансформатора обусловлена наличием светодиодного дисплея, который наряду с другими цепями потребляет относительно большой ток, в связи с чем, схема питания с гасящим конденсатором становится неуместной.
Управляющий (одиночный) импульс с платы пульта, длительностью 25 микросекунд, поступает на затвор полевого транзистора VT1, который формирует управляющий импульс тока для симистора BT136 (Philips). Резистор R3 обеспечивает ток управляющего электрода, достаточный для включения симистора во всем рабочем температурном диапазоне симистора. Резистор R4 необходим для обеспечения помехоустойчивости симистора в выключенном состоянии.
Помехоподавляющий фильтр (C7, L1, C8) снижает помехи, вносимые в питающую сеть, источником которых является любой регулятор с фазовым принципом регулирования.

Схема подключения регулятора изображена на рисунке 3 (схему можно скачать из раздела Дополнительные материалы). Плоский кабель наколот на ответные части разъема типа IDC. Правильно собранное устройство не требует настройки.
На фотографии внешний вид регулятора в авторском исполнении.

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

ОПИСАНИЕ РАБОТЫ РЕГУЛЯТОРА
Регулятор имеет три кнопки управления, семисегментный светодиодный индикатор на два знакоместа и светодиод отображения текущего режима.
Регулятор работает в двух продолжительных режимах: с включенным таймером отключения нагрузки и без него. При включенном таймере светодиод "Таймер" горит постоянно, при отключенном таймере светодиод "Таймер" не горит.
Существует еще один режим, который является кратковременным - режим установки времени таймера. В режиме установки времени срабатывания таймера светодиод мигает с периодом 1 секунда. Перевод в этот режим происходит после продолжительного удержания кнопки "Режим" в течение более 2-х секунд. Короткое нажатие на эту же кнопку изменяет текущий продолжительный режим. Выход из режима установки времени таймера происходит или при повторном длительном нажатии или по истечению 2-х секунд без нажатия кнопок "Больше" и "Меньше"
К примеру, если таймер регулятора был выключен, то после короткого нажатия на кнопку "Режим" (т.е. длительностью менее 2-х секунд) загорится светодиод "Таймер", включится таймер, который сразу же начинает отсчет времени от того значения, которое сохранено в памяти.
Светодиодный дисплей показывает двухзначное число активного параметра. Фактически, при работающем регуляторе на этом дисплее почти все время отображается уровень мощности в процентах от полной мощности, за которую принимается мощность, когда все сетевое напряжение подается на лампу. Уровень мощности может изменяться от 0 до 100 %. Так как дисплей имеет всего два знакоместа, то уровень мощности, соответствующий 100% показывается в виде "00", уровень нулевой мощности в виде " 0". В режиме установки времени таймера дисплей показывает текущую уставку таймера в минутах с диапазоном от 1 до 100 минут.
Изменение значений установленной мощности и времени таймера происходит при нажатии на кнопки "Больше" и "Меньше". Меняется текущая активная величина. Скорость изменения параметра при нажатии кнопок является постоянной.
После истечения времени таймера регулятор плавно выключает лампу с фиксированным темпом изменения яркости. Светодиод "Таймер" продолжает гореть, показывая, что таймер включен. По периметру светодиодного дисплея начинает двигаться по часовой стрелке "змейка", образованная четырьмя соседними сегментами, находящимися по периметру дисплея. Это свидетельствует о том, что регулятор включен, но таймер уже выключил лампу. Повторное включение лампы возможно либо при нажатии на кнопки "Больше" и "Меньше", либо при выключении и повторном включении питающего напряжения.
После изменения параметров или текущего режима происходит сохранение введенных настроек в энергонезависимой памяти данных. Условием сохранения является наличие двух событий - изменение заданных параметров или режима и отсутствие нажатий кнопок в течение 2 секунд после этого.
При включении регулятора микроконтроллер извлекает из энергонезависимой памяти заданные значения параметров и сохраненный режим работы и таким образом регулятор находится в том же состоянии, что и до выключения с обнуленным таймером отключения.

ОПИСАНИЕ ПРОГРАММЫ МИКРОКОНТРОЛЛЕРА
Исходный текст программы публикуется вместе с данной статьей как есть. Программа доступна для повторения и изменения, но автор не несет ответственности за ее работоспособность при каждом повторении конструкции.
Программа написана на ассемблере в виде монолитного текста. Стиль программирования и оформления программы автор не обсуждает. Он значительно изменился, так как с момента окончания разработки данного устройства прошло 2 года, в течении которых регулятор успешно работает.
Текст программы содержит подробные комментарий на русском языке, поэтому ниже будут пояснены только основные, так сказать, "идейные" моменты этой программы.
Программа управления регулятора использует два прерывания микроконтроллера MCS51: прерывание по уровню на входе INT0 и прерывание таймера T0. Прерывание таймера T0 имеет более высокий приоритет.
В основной фоновой программе выполняется инициализация микроконтроллера, считывание сохраненных параметров из энергонезависимой памяти перед началом работы регулятора и постоянный контроль бита необходимости сохранения параметров, который устанавливается в подпрограмме обработки прерывания INT0. При установленном бите фоновая программа записывает изменившиеся значения в энергонезависимую память и сбрасывает бит.
Прерывание таймера T0 предназначено для формирования импульса управления симистором длительностью около 25 микросекунд по окончанию времени загруженного в таймер и загрузки таймера T0 новым табличным значением времени задержки, соответствующим текущему уровню мощности. Сам таймер по выходу из прерывания T0 оказывается выключенным. Таким образом, таймер T0 подготавливается к началу новой полуволны сетевого напряжения. Это позволяет сократить время реакции микроконтроллера. Сам таймер запускается в самом начале прерывания INT0.
Подпрограмма обработки прерывания INT0 является, в сущности, ключевой частью программы регулятора. В момент "перехода через 0" новой полуволны сетевого напряжения на входе микроконтроллера INT0 внешней схемой формируется отрицательный импульс. Этот импульс и является причиной возникновения прерывания INT0.
В подпрограмме прерывания INT0 в первую очередь запускается таймер T0. Затем производится динамический опрос кнопок и сохранение результата опроса. После окончания опроса кнопок порт P1 начинает работать исключительно на светодиодный дисплей.
Содержимое вспомогательных регистров выводится на соответствующее знакоместо светодиодного семисегментного индикатора. Данные для отображения подготавливаются в предыдущем полупериоде. Это позволяет сократить время необходимое для вывода данных на индикацию.
В каждом полупериоде сетевого напряжения знакоместа дисплея чередуются. Таким образом, частота динамической индикации составляет 50 Гц.
После обработки индикации производится анализ состояния кнопок в соответствии с текущим активным режимом. Одновременно обеспечивается защита от дребезга контактов. Возможно, кому-то этот фрагмент программы покажется нерациональным, автор не будет с этим спорить но, тем не менее, все надежно работает.
По ходу обработки прерывания INT0 контролируются различные вспомогательные биты, определяющие режим работы регулятора. Посредством этих битов и различных счетчиков реализуются антидребезг, темп изменения параметров, темп изменения яркости лампы при включении и выключении регулятора, выделение коротких и длительных нажатий на кнопки, выдержка времени необходимости сохранения параметров и т.п.
Особенностью разработанной программы является использование оригинальной, как представляется автору, таблицы углов задержки включения симистора. Данная таблица получена путем вычисления в таблице Excel 100 интервалов времени за полупериод сетевого напряжения, уменьшенного на 5%. Интервалы времени рассчитывались из условия равенства интегралов мгновенного значения синусоиды. При этом получаются неравномерные интервалы времени, соответствующие различным уровням мощности. Максимальному уровню мощности соответствует минимальная задержка.

Графическая иллюстрация результата расчета приведена на рисунке 4. Для наглядности расчет выполнен для 20 интервалов. Как видно из графиков интервал времени между соседними точками на максимуме синусоиды почти в три раза меньше времени первого интервала.

Пояснение таблицы углов включения симистора
Полученная неравномерность таблицы позволяет сделать более равномерное изменение яркости лампы при изменении уровня мощности. Положительным результатом такого подхода является то, что с момента "перехода сетевого напряжения через 0", до момента времени, соответствующего 99% интеграла напряжения за полупериод, проходит порядка 640 микросекунд. Это свидетельствует о том, что в распоряжении микроконтроллера достаточно времени для выполнения различных операций без потери максимально возможной мощности. Таким образом, если не учитывать потери на симисторе, регулятор с установленным значением мощности 100% будет выдавать на нагрузку почти такую же мощность, какую потребляет просто включенная в розетку та же самая нагрузка!
Конечно, при этом желательно, чтобы используемый симистор имел как можно меньшее значение тока управления, которое можно считать практически равным току удержания симистора. Если ток удержания симистора относительно большой, то слишком быстрое включение симистора при установленном уровне мощности 100% не даст результата - импульс управления окончится, а симистор так и не включится.
Таблица построена на основании того факта, что частота питающего напряжения является самым стабильным параметром в отечественной энергосистеме, отклонения частоты в сети не превышают 5%.

РЕЗУЛЬТАТЫ РАЗРАБОТКИ
В ходе разработки автором преследовалась цель изучения особенностей программы устройства, действующего в режиме реального времени и выработка методов оптимизации программы с учетом требуемых режимов.
Дополнительно изучались методы разработки программы для устройств с кнопками управления, имеющими двойной контекст. Получен практический навык работы с I2C памятью в устройстве, работающем в режиме реального времени. Впервые автор использовал микроконтроллер в устройстве гальванически связанном с питающей сетью. Регулятор оказался вполне помехоустойчивым. За время использования регулятора, а это время уже превышает один год, регулятор ни разу не "зависал" несмотря на то, что не имеет в своем составе ватчдог-таймера.
За время эксплуатации регулятора ни разу не сгорела лампа накаливания, управляемая от него, так как при включении регулятора обеспечивается постепенный плавный нагрев нити лампы накаливания.
Регулятор дает автору возможность экономить деньги, не тратя лишней электроэнергии, дополнительно позволяя использовать настольную лампу в роли ночного светильника. Таким образом, данный проект оказался насколько поучительным, настолько и выгодным для автора.

Данный материал был подготовлен и опубликован автором в учебных целях, чтобы помочь тем, кто только начал осваивать программирование микроконтроллеров. Именно поэтому данный проект содержит подробное описание устройства и его программы.

Эта статья в PDF формате (189 Кб). Загрузок: 427
Принципиальные электрические схемы и перечень элементов в PDF (93 Кб). Загрузок: 824
Проект в Keil uVision2 и блок-схемы алгоритмов в PDF, прошивка и исходник (107 Кб). Загрузок: 478
Файл расчета таблицы задержек в Excel (7 Кб). Загрузок: 376

Автор статьи: Габидуллин Ильдар г. Уфа E-mail: ildar-ufa@yandex.ru
Просмотров: 6143

Splan 7.0.0.9 Rus + Portable + Viewer Fiinal
26.04.2014
sPlan – удобный инструмент для черчения электронных схем. Имеет простой и интуитивно понятный интерфейс. В программе заложены... подробнее...

Очень удобная программа для чтения pdf Foxit Reader
26.04.2014
Foxit Reader - Компактная и шустрая программа для чтения PDF файлов. Может служить альтернативой для популярного просмотрщика PDF - Adobe Reader.... подробнее...

Proteus 7.7 SP2 + Crack v1.0.2 + RUS
22.04.2014
Proteus VSM - программа-симулятор микроконтроллерных устройств. Поддерживает МК: PIC, 8051, AVR, HC11, ARM7/LPC2000 и другие распространенные процессоры.... подробнее...

Новое становление сайта Eldigi.ru
01.04.2014
Проект Eldigi.ru который долгое время находился в застывшем состоянии снова принимается за работу с новымы силами, с новыми статьями и с... подробнее...

Proteus 7.7 SP2 + Crack v1.0.2 + RUS
22.04.2014
Proteus VSM - программа-симулятор микроконтроллерных устройств. Поддерживает МК: PIC, 8051, AVR, HC11, ARM7/LPC2000 и другие распространенные процессоры.... подробнее...

Splan 7.0.0.9 Rus + Portable + Viewer Fiinal
26.04.2014
sPlan – удобный инструмент для черчения электронных схем. Имеет простой и интуитивно понятный интерфейс. В программе заложены... подробнее...

Цифровая паяльная станция своими руками (ATmega8, C)
27.05.2012
Состав: ATmega8, LM358, IRFZ44, 7805, мост, 13 резисторов, один потенциометр, 2 электролита, 4 конденсатора, трехразрядный светодиодный семисегментный... подробнее...

Тахометр на AVR микроконтроллере (ATtiny2313, C)
13.01.2010
Данное устройство представляет собой неплохой тахометр, предел его измерений составляет 100 - 9990 об/мин. Точность измерения - ± 3 об/мин.... подробнее...

Охранное устройство с оповещением по телефонной линии (PIC16F628)
09.08.2008
Устройство предназначено для охраны помещения ( магазин , квартира ) с применением датчика движения и датчика открывания двери (... подробнее...

Тахометр на AVR микроконтроллере (ATtiny2313, C)
13.01.2010
Данное устройство представляет собой неплохой тахометр, предел его измерений составляет 100 - 9990 об/мин. Точность измерения - ± 3 об/мин.... подробнее...

Электронный замок с управлением от таблеток iBUTTON (PIC16F628A, C)
09.08.2008
Ниже представлена схема замка с использованием электронных ключей Touch Memory типа DS1990A. Устройство собрано на базе микроконтроллера... подробнее...

Контроллер LCD HD44780 (AT89S8252)
09.08.2008
Символьные жидкокристаллические индикаторы со встроенными контроллерами получили широкое распространение в бытовых приборах... подробнее...