В данной статье описано простое многофункциональное устройство на микроконтроллере.
Основу устройства составляет микроконтроллер фирмы Аtmel АТmega 16L-8Рl. Микроконтроллер был выбран исходя из следующих его достоинств:
-
наличие восьми десятиразрядных АЦП;
-
значительный объем Flash-памяти;
-
наличие таймера реального времени.
Такое число АЦП позволяет использовать недорогие датчики температуры ТМР35-ТМР37. В данной разработке используются более дорогие, но и более точные датчики АD592 из-за наличия у них токового выхода, что позволяет обойтись всего двумя соединительными проводами и дает возможность использовать длинную линию связи. Ниже будут приведены схемные решения, позволяющие подключить недорогие датчики. Большой объем Flash-памяти необходим для реализации системы меню и относительно большого числа мелодий.
Основные возможности устройства:
-
отсчет времени с индикацией часов, минут, дня недели, числа, месяца, года;
-
измерение и отображение температуры от трех независимых датчиков;
-
наличие трех будильников с возможностью установки на каждый день недели;
-
калибровка хода часов и узлов измерения температуры;
-
автоматическое определение високосного года и переход с зимнего времени на летнее и наоборот;
-
управление лампой накаливания (плавное зажигание, регулирование мощности, включение по будильникам, выключение или включение по таймеру);
-
управление мощной внешней на грузкой (например, электрообогревателем): регулирование мощности,
управление по таймеру, стабилизация температуры комнаты (по внешнему, встроенному датчикам или
по среднему значению); -
энергонезависимость часов (в качестве резервного источника питания используется литиевый элемент питания);
-
правление осуществляется пятью кнопками;
-
удобное и гибкое меню.
Оригинальным является узел определения перехода через нуль фазы сетевого питающего напряжения без применения оптоизоляторов, тем не менее низковольтная часть устройства гальванически развязана от сетевого напряжения.
Устройство выполнено в виде двух блоков, один из которых (базовый) представляет собой бра с элементами управления и индикации, второй блок — корпус с розетками и установленным в нем симистором на радиаторе для управления электрообогревателем.
Принципиальная схема базовой конструкции приведена на рис. 1.
На элементах R1, R2, VD2-VD5 собран датчик перехода сетевого напряжения через нуль. Переменное напряжение с вторичной обмотки трансформатора питания низковольтной части ограничивается параметрическими стабилизаторами R1VD5 и R2VD4 относительно уровня общего провода и включенными встречно-параллельно диодами между входами встроенного во все микроконтроллеры АVR аналогового компаратора. В момент перехода сетевого напряжения через нулевое значение происходит переключение компаратора, что отслеживается программно, вызывая прерывание.Данный способ позволяет более точно отследить момент перехода через нуль сетевого напряжения, построен на более дешевых и широко доступных элементах. Недостатком является необходимость наличия микроконтроллера, имеющего в своем составе аналоговый компаратор с двумя информационными входами.
Вывод информации осуществляется с помощью дисплея на жидких кристаллах, имеющего 16 символов в две строки со встроенным контроллером. Связь с микроконтроллером четырех-проводная, плюс два управляющих сигнала: сигнал данные/команда RS и сигнал строба Е. Подстроечный резистор R15 служит для регулировки контраста отображения индикации. Подсветка управляется микроконтроллером через транзистор VT2. Чтение данных из дисплея не предусмотрено, поэтому вывод RW индикатора замкнут на общий провод (запись данных). Поскольку при лог. О на шине Е шина данных и управляющий вывод находятся в высокоимпендансном состоянии, эти выводы используются для ввода данных в микроконтроллер с пяти кнопок. Для предотвращения искажения выводимой на индикатор информации при одновременном нажатии на кнопки последовательно с ними включены развязывающие диоды VD12-VD16.
На элементах VD6, С1, R6, R7, VT1 и встроенном во входной порт микроконтроллера резисторе выполнен датчик наличия сетевого напряжения питания. Когда сетевое напряжение есть, транзистор VТ1 открыт, на выводе прерывания INТО микроконтроллера — лог. 0. При отключении от сети на выводе INТО будет лог. 1.
Узел управления лампой накаливания выполнен на элементах U1, VD11, R12, R18, С9, RU2. Способ управления выбран фазоимпульсный, поскольку он обеспечивает плавное изменение яркости лампы. Данный способ регулирования мощности имеет существенный недостаток — создание помех, которые можно услышать, если включить радиоприемник в диапазоне длинных или средних волн. Существуют способы снизить уровень помех, например, при помощи LС-фильтров. В данной конструкции LС-фильтры не используются по конструктивным причинам, но при повторении конструкции рекомендуется установить стандартный дроссель и высоковольтные конденсаторы, бумажные или металлопленочные, в цепь питания лампы. К сожалению, из-за большого тока во втором канале управления затруднительно установить дроссель из-за его значительных габаритов. Впрочем, если мощность силовой нагрузки не регулировать, а просто коммутировать, дроссель может и не понадобиться.
Микроконтроллер с помощью встроенного 16-разрядного таймера с блоком сравнения управляет силовым оптосимистором, нагрузкой которого является лампа накаливания мощностью не более 100 Вт (в авторском варианте используется лампа фирмы Philips мощностью 60 Вт с отражателем и матовой поверхностью). Второй канал 16-разрядного таймера используется для управления внешней нагрузкой. Принцип регулирования основан на отсчете выдержки времени от точки перехода сетевого напряжения через нуль до включения силовых симисторов. В момент перехода через нуль программно устанавливаются в единицу выводы микроконтроллера, управляющие нагрузкой, тем самым отключая симисторы. После отсчета времени, соответствующего необходимой мощности нагрузки, эти выводы программно сбрасываются, открывая силовые симисторы. Данный способ позволяет регулировать мощность нагрузки в широких пределах. Для цепи управления лампой накаливания реализована плавная подача напряжения питания при включении, что способствует значительному продлению срока службы лампы.
Блок питания собран по классической трансформаторной схеме с интегральным стабилизатором DA2 на 5 В. Резервное питание поступает от литиевого элемента GB1 напряжением 3 В. Для нормальной работы необходимо выполнение следующих условий: микроконтроллер должен быть рассчитан на напряжение питания 2,7...5,5 В, этому требованию отвечают микроконтроллеры, имеющие в своем обозначении литеру L; диод VD10 должен иметь минимальное падение напряжения (диод Шоттки).
Резисторы R13, R14 образуют делитель для измерения напряжения литиевого элемента питания с помощью АЦП. Литиевый элемент CR2032 имеет емкость 200...250 мА-ч. Ток потребления устройства от элемента питания составляет 200...300 мкА в режиме микропотребления (с отсчетом времени) и 2 мкА при наличии сетевого напряжения. Исходя из указанных значений емкости элемента и максимального тока потребления можно предположить, что отсчет времени в режиме резервного питания сохранится в течение примерно месяца. Однако это было бы верно, если бы микроконтроллер был работоспособен при напряжении питания от 2 В. К сожалению, в данном устройстве при использовании диода Шоттки срок работы резервного питания уменьшается. Впрочем длительная работа от резервного источника питания не имеет смысла, т. к. происходит только отсчет времени и сохранение различных параметров в ОЗУ, а индикация и остальные периферийные устройства не функционируют. При длительном отключении сетевого напряжения элемент питания на этот срок лучше извлечь из устройства. Несколько продлить срок работы без сетевого напряжения можно, используя вместо диода Шоттки малогабаритное герконовое реле или низкопороговый полевой транзистор. Также можно использовать батарею элементов на напряжение 4,5...6 В или экономичный повышающий преобразователь напряжения.
Для звукового оповещения предусмотрен пьезокерамический излучатель BF1, подключенный к порту микроконтроллера через транзистор VT3. Для задания тактовой частоты 4 МГц используется встроенный в микроконтроллер генератор. Для таймера реального времени, реализованного на таймере-счетчике 2 микроконтроллера, установлен кварцевый резонатор ZQ1 на частоту 32768 Гц.
Датчики температуры AD592 с токовым выходом подключаются непосредственно к входам АЦП микроконтроллера. Для преобразования тока в напряжение служат резисторы R3—R5. Номиналы резисторов рассчитываются по формуле:
К = Uоп/Iмакс.датч
где Uоп— опорное напряжение, В; может использоваться как встроенный в микроконтроллер источник опорного напряжения на 2,56 В, так и внешний; Iмакс.датч — выходной ток датчика температуры при максимальной заданной пользователем температуре. Для повышения точности измерения рекомендуется выбрать верхнюю границу измеряемой температуры на уровне 40...50 °С. Для AD592 выходной ток при температуре 25 °С составляет 298,2 мкА, температурный коэффициент равен 1 мкА/°С.
Датчик температуры DA1, расположенный на плате, изначально предназначался для проверки правильности функционирования узла измерения температуры. Из-за фиксированного расположения проводить его калибровку затруднительно. При желании можно этот датчик не устанавливать, используя для измерения комнатной температуры внешний датчик. Любая систематическая погрешность легко устраняется программной калибровкой.
При установке датчиков температуры с выходом по напряжению (рис. 2)
потребуется дополнительный конденсатор, который желательно установить в непосредственной близости к датчику.
Подборки резисторов в этом случае не требуется из-за отсутствия таковых. В этом случае при применении внешнего источника опорного напряжения выбор последнего должен происходить в соответствии с напряжением датчика, соответствующим максимальной выбранной температуре.
Блок управления сильноточной нагрузкой показан на рис. 3.
Управляющий сигнал с микроконтроллера открывает оптосимистор U2, который включен в управляющую цепь силового симистора VS1. Двуцветный светодиод HL1 индицирует зеленым свечением наличие сетевого напряжения, а красным — перегорание сетевого предохранителя FU3. Трехпозиционным переключателем SA1 выбирается режим включения нагрузки: отключение от сетевого напряжения, включение напрямую, минуя управляющий симистор, либо через симистор с возможностью управления нагрузкой дистанционно. Через блок управления сильноточной нагрузкой транзитом проходит сигнал с датчика температуры. Это удобно, когда требуется измерять температуру вблизи обогревателя, находящегося на значительном удалении от управляющего устройства. Если управление сильноточной нагрузкой не используется, датчик температуры можно подключать прямо к разъему XS2, измеряя температуру внутри помещения.
Устройство выполнено на нескольких платах: на одной располагаются все основные элементы блока управления, на плате, установленной под передней панелью рядом с индикатором, располагаются кнопки управления (рис. 4), плата блока управления сильноточной нагрузкой расположена в отдельном корпусе.
Автор придерживается мнения, что печатные платы лучше всего разводить под имеющиеся корпус и комплектацию. Вот общие рекомендации по расположению элементов и разводке платы. Блокировочные конденсаторы должны устанавливаться вблизи выводов питания микросхем, то же касается и конденсатора в цепи RESET микроконтроллера. Общий провод от таких конденсаторов желательно выделить и развести его отдельно к выводу GND микроконтроллера. Также автор рекомендует для всего, что должно соединяться с основной платой проводниками (кнопки, разъемы на корпусе, выносные датчики и т. п.), использовать разъемы. Располагать элементы необходимо, разделяя высоковольтные и низковольтные цепи, стараясь, чтобы они не пересекались друг с другом. После монтажа желательно покрыть высоковольтные цепи на плате и радиодетали, принадлежащие к этим цепям, электроизоляционным лаком в несколько слоев. При монтаже и наладке необходимо соблюдать правила электробезопасности.
Конструкция внешних датчиков произвольна. Желательно датчики герметизировать, чтобы можно было впоследствии калибровать их, опуская в воду. Хорошие результаты дает применение термоусадочных трубок разных диаметров.
Микроконтроллер ATmegal6L-8PI можно заменить на более дешевый ATmega8535L-8PI, если не использовать большой набор мелодий, а всего одну или две. Для перехода на этот микроконтроллер придется незначительно переделать программу.
Также можно использовать внешний источник опорного напряжения, который подключается к выводу 32 AREF (нумерация дана для корпуса DIP).
В программе предусмотрено использование датчика освещенности на фотодиоде
(рис. 5) для автоматического включения подсветки LCD-индикатора.
Полезно будет добавить подсветку кнопки включения лампы (рис. 6).
В программе можно выбрать различные способы подсветки: постоянное свечение светодиода, мигание с частотой пересчета таймера реального времени или отключение подсветки.
Индикатор — любой формата 16 символов в две строки с встроенным контроллером, совместимым с HD44780. При замене может возникнуть проблема несовместимости кодировок русского шрифта, которая устраняется только путем замены подключаемого файла text.inc, в котором необходимо заменить весь текст на кодировку используемого индикатора. У примененного автором индикатора кодировка формата Epson, но более предпочтительной является кодировка ASCII, при которой текст в программу можно вводить напрямую. В случае применения нерусифицированного индикатора его можно русифицировать известными методами или выводить информацию на английском или другом языке.
Звукоизлучатель — любой с достаточной громкостью звучания. В корпусе прибора желательно просверлить отверстия напротив излучателя для улучшения его слышимости. Если громкость все же недостаточна, можно вместо пьезоизлучателя применить малогабаритную динамическую головку. В этом случае резистор R10 можно исключить. Трансформатор — малогабаритный для печатного монтажа, например фирмы Hahm, но подойдет любой на выходное напряжение 7... 10 В и ток около 0,5 А. Выпрямительный мост — любой низковольтный на ток 0,5... 1 А, VD7 — диод Шоттки на ток 0,5...1А или любой выпрямительный на тот же ток. Диоды VD9, VD10 — диоды Шоттки с минимальным падением напряжения. Остальные диоды — КД521Б или любые импульсные или выпрямительные. Оптосимистор Ul — S26MD01 или подобный на ток от 0,6 А. Необходимо проследить, чтобы симистор не имел узла Zero-cross, который переключает симистор только при переходе через нуль сетевого напряжения. Оптосимистор U2 — 5П50 (отечественный аналог — АОУ163), подойдут импортные МОС3020М—МОС3022М, симистор VSl — MAC16M, подойдут любые на ток 10... 16 А, например отечественные КУ208Г, ТС106-10-6, ТС112-10-6, ТС112-16-6. Резисторы R3—R5 желательно использовать прецизионные С2-29В-0,125; Rll, R18—R20 MF-2, ОМЛТ-2; R21 — MF-1, ОМЛТ-1; под-строечный резистор R15 — СП5-2ВБ, СПЗ-19а; остальные резисторы — MF-0,125, ОМЛТ-0,125. Варисторы RU1—RU3 — JVR20N-391M. Конденсаторы оксидные — SR, керамические — К10-17а, С9— К73-17 на напряжение 400.. .630 В. Разъемы для подключения датчиков температуры и кабеля к блоку управления сильноточной нагрузкой — ОНЦ-ВГ-1-3/16Р (В — ответная часть), розетки XS5, XS6 — обычные для открытой проводки. Разъем программирования ХР1 зависит от типа применяемого программатора. В авторском варианте это IDC-10М с разводкой выводов, соответствующей программатору STK-200 производства Atmel. Программировать лучше внутрисхем-но, но разъем под микроконтроллер предусмотреть все же стоит.
После монтажа радиоэлементов не вставляя микроконтроллер в разъем и включив питание необходимо проверить напряжения +12 В и +5 В. Затем выключить питание, установить микроконтроллер и, подав питание, запрограммировать его. При необходимости можно установить оптимальную контрастность изображения на индикаторе подстроечным резистором R15.
Наладка заключается в калибровке датчиков температуры. В главном меню выбирается пункт «Уст. параметров» — «Калибровка термодатчиков». Затем выбирается тип датчика (встроенный, внешний датчик для измерения уличной температуры и внешний датчик для измерения комнатной температуры). Первая калибровочная константа подбирается при температуре датчика О °С (датчик опускается в воду с тающим снегом или льдом), на индикаторе при этом необходимо кнопками «Up» и «Down» установить значение температуры, близкое к нулю. Затем, нажав кнопку «Enter» (константа сохраняется в памяти EEPROM микроконтроллера), необходимо установить температуру по второй произвольной точке, определяемой по образцовому термометру, чем ближе она будет к максимальной границе измеряемой температуры, тем точнее будет произведена калибровка. Достаточную точность можно получить, используя для калибровки температуру человеческого тела.
Система меню, отображаемая индикация и действия кнопок в каждом конкретном случае поясняются в файле mode.doc в приложении к файлу прошивки. Добавление функций устройства и пунктов меню не составит большого труда. Программа, написанная на ассемблере . Число мелодий определяется подключаемым файлом melody.inc, в котором пользователь может сам задать нужные мелодии, пользуясь о приведенной методикой.
При программировании следует обратить внимание на биты Fuse. При неправильном их программировании устройство может не отвечать заявленным требованиям или вообще быть неработоспособным. Так для установки тактовой частоты 4 МГц необходимо выставить биты CKEL0—CKEL3 в ООП. Чтобы обеспечить микропотребление, необходимо запрограммировать следующие биты: BODEN = 1, OCDEN = 1, JTGEN = 1 (1 — незап-рограммированньй бит). Остальные биты оставить по умолчанию.
Сергей Лузгин, г. Екатеринбург
при копировании материалов ссылка на источник обязательна