Двухканальный таймер своими руками
Решил сделать несколько разнообразных таймеров на PIC12F629/675 с микропотреблением.
Двухканальный многофункциональный таймер.
— в режимах «пауза+импульс» пауза и импульс должны быть больше нуля.
— режимы «по сигналу 1» могут работать по включению питания, если поставить инверсию и вход посадить на 0.
— инверсия входного сигнала.
— каналы настраиваются индивидуально в EEPROM перед прошивкой.
— дискретность счета 1 секунда.
— максимальное время выдержки более 4млрд секунд (4х-байтная переменная).
— неточность первой выдержки после воздействия на вход от 0 до +1 секунды.
— среднее потребление тока без нагрузки 11 микроампер (примерно 2 года работы от CR2032).
— коррекция хода (грубая).
— сброс от пониженного питания 2,1 вольта (BOD) отключен, т.к. жрет 120мкА.
Ну как реализовать резервное питание на CR2032 и BAT54C, думаю, догадаетесь. На выход полевики 2N7002.
Падение напряжения питания с 4,5 до 3,3 вольт приводит к замедлению хода примерно на 1 секунду в сутки.
Тестовый экземпляр, спаян на макетке и промыт изопропиловым спиртом. Установлен кварц Geyer 32.768kHz 12.5pF 20ppm KX-38T (на корпусе обозначение KDS4A). С конденсаторами 18pF NP0 1206 стабильная генерация начинается через 200мс после запуска генератора, часы спешат на 8 секунд за сутки (в коррекции необходимо добавить 8 секунд к суткам). Поменял конденсаторы на 22pF — стабильная генерация через 90мс, точность хода около 0,5 секунд в сутки. Понесу в морозилку на пару часов. Температура минус 13 градусов — тикает относительно точно, генерация не срывается. П.С. Под стабильной генерацией подразумеваю «ровный» меандр без паразитных коротких импульсов и пропусков в течении 2х секунд.
Прошивка, исходник, схема, калькулятор, v1.1 (описание в архиве, читать перед прошивкой в контроллер)
Источник
Недельный таймер, двухканальное реле времени
Представляю вашему вниманию двухканальное недельное реле времени.
Устройство имеет два независимых таймера, с возможностью настройки их времени включения-выключения в каждом дне недели. Примененная микросхема часов реального времени обеспечивает достаточно высокую точность хода, наличие батарейки сохраняет ход часов при отключении от сети. Реле собрано на микроконтроллере ATmega8, отсчет времени обеспечивают часы реального времени на микросхеме ds1307, информация отображается жидкокристаллическим индикатором. Одно такое реле у меня успешно управляет светом в птичнике, другое включает подсветку и компрессор в аквариуме. Данное устройство любительское и не претендует на замену промышленных реле времени. Автор не несет никакой ответственности за возможные убытки и вред, полученный из-за применения данного устройства. Вся ответственность лежит на конечном пользователе. Схема и печатная плата являются прототипом и могут быть доработаны. Схема, файлы печатной платы, файл прошивки и исходный код приложены в архиве к статье.
Схема и детали
Внимание! Устройство включается в сеть 220 Вольт! будьте внимательны и осторожны. Большинство деталей широко распространены, и могут быть заменены на аналогичные. Сетевое напряжение понижается трансформатором Т1 и выпрямляется диодным мостом VD1 .Плата рассчитана на мост в корпусе типа RB-15 . Выпрямленное напряжение используется для питания реле и стабилизатора напряжения 5 вольт. Конденсатор С1 сглаживает пульсации выпрямленного напряжения. Напряжение вторичной обмотки в моем варианте 12 вольт, т.к. были в наличии реле с обмоткой на 12в. Стабилизатор 5 вольт построен на распространенной микросхеме 7805, схема включения – типовая. Конденсаторы С2 и С3 сглаживают пульсации напряжения и замыкают на землю высокочастотную помеху, если она появится. Часы реального времени на микросхеме ds1307 включены по типовой схеме из даташита, обмен данными с микроконтроллером происходит по шине I2C. Сохранение хода часов при отключенном питании обеспечивает батарея. Часовой кварц взят из старой материнской платы компьютера, оттуда же и корпус — держатель батарейки. Батарейка литиевая тип CR2032 –«компьютерная» 3х вольтовая. Индикатор применен широко распространенный LCD 1602, подключен он по стандартной схеме четырехбитного режима.Программа не выводит символов кириллицы, поэтому подойдет индикатор и без расширенной кодовой таблицы. Резистором R8 настраивается контраст, резистор R9 служит для снижения яркости подсветки, при необходимости. Резистор R9 мощностью 0.5-1 ватт, остальные 0.125 ватт. Кнопки — обычные тактовые, удобнее если они с длинным толкателем. Транзисторы практически любые n-p-n, я ставил КТ3102. Все диоды 1n4007. Конденсаторы С4 ,С5 устанавливаются как можно ближе к выводам микросхем. Реле К1,К2 — RT214012, так же подойдут любые другие, предназначенные для коммутации сетевого напряжения. Обращаю внимание – существует несколько типов похожих реле, с разными исполнениями силовых выводов.
Ток потребления устройства небольшой, во вторичной обмотке порядка 50-100 миллиампер, стабилизатор L7805 в корпусе ТО-220 можно использовать без радиатора.
Печатная плата
Печатная плата односторонняя, выполнена в программе Dip Trace, под выводные компоненты. Единственное исключение – микросхема ds1307 в корпусе для поверхностного монтажа. Замечу, микросхема ds1307 показала себя требовательной к топологии печатной платы, и не всегда уверенно работала на макете. Обязательным условием нормальной работы является заключение выводов 1,2 микросхемы и выводов кварцевого резонатора в земляное кольцо. А так же минимальные длины дорожек этих цепей. Для прошивки микроконтроллера в плате распаиваются штырьки у соответствующих ножек.
ЖКИ распаивается через проводной шлейф, и может быть расположен так как показано на фотографии в заголовке к статье.
Первоначально плату я делал под ЖКИ с боковым двухрядным исполнением выводов, примерно таким —
По задумке такой ЖКИ должен быть впаян в плату на проволочных стойках. Но производителей дисплеев много и вполне возможен вариант с несовпадением цоколёвки. К тому же шлейф дает возможность вынести ЖКИ в любое удобное место, не привязываясь к плате.
Плата содержит пять проволочных перемычек, одна из которых под микроконтроллером. Поэтому её надо запаивать до установки МК. Кроме того двойные выводы тактовых кнопок, так же являются сигнальными перемычками.Подключение сетевых проводов для удобства сделано через разъемный клеммник.
Программа микроконтроллера написана в среде CodeVision. Программирование осуществляется до впаивания в плату программатором, либо после, путем подключения к выводам программирования. Фьюзы устанавливаются на тактирование от внутреннего генератора 8МГц, включается сторожевой таймер, и устанавливается порог монитора питания 4 вольта. Байты конфигурации LOW-0х04 , HIGH-0х99.
Для Uniprof настройки такие:
Меню и настройка
Устройство управляется четырьмя кнопками – UP,DOWN,ENTER,BACK. Кнопки UP,DOWN пролистывают окно или значение вверх/вниз, кнопка ENTER осуществляет вход в подменю либо в режим изменения параметра, кнопка BACK выход из режима изменения параметра либо возврат на предыдущий уровень меню. Меню сделано интуитивно понятно и просто. Значения таймеров сохраняются в энергонезависимой памяти микроконтроллера, часы реального времени на микросхеме ds1307 сохраняют свое значение от резервной батареи. Сохранение происходит сразу по изменению значения.
При включении на экране отображается текущее время, день недели, и состояние выходных реле K1 и К2. Это основной экран мню. Выглядит так —
Если длительное время не нажимать никакие кнопки, автоматически, из любого подменю, будет произведен возврат на основное меню.
Нажимая на кнопки UP,DOWN можно перейти в подменю настройки недельных таймеров ,либо в подменю настройки времени и календаря –
Нажав на кнопку ENTER ,попадем в соответствующее подменю.
Настройку времени и календаря необходимо выполнить один раз при первом включении устройства. Экран настройки выглядит следующим образом –
Первая строка слева направо– часы, минуты, секунды, вторая строка слева направо – число, месяц , год, день недели. Числа разделяются двоеточием, активная позиция выбора мигает. Нажимая кнопки UP, DOWN можно изменить значение выбранного параметра. Переход к следующему параметру – кнопка ENTER. Выход из подменю настройки – кнопка BACK. Секунды устанавливаются либо в 00 либо в 30. День недели вычисляется программно.
Зайдя в настройку недельных таймеров, сначала увидим подменю выбора дня недели.
Нажимая на кнопки UP, DOWN пролистываются дни недели с понедельника по воскресенье в английском сокращении — Mon, Tue, Wed, Thu, Fri, Sut, San. Выбрав нужный день, нажимаем кнопку ENTER, попадаем в подменю настройки таймеров выбранного дня.
Верхняя строка слева направо – время включения реле К1 часы и минуты , затем время включения реле К2 часы и минуты. Секунды не учитываются.
Нижняя строка – слева направо время выключения реле К1 часы и минуты , затем время выключения реле К2 часы и минуты. Если вместо времени отображаются звездочки , значит данный таймер неактивен в этот день недели. На приведенном экране реле К1 включится в 10 часов 58 минут, и отключится в 19 часов ровно. Реле К2 неактивно – все сутки выключено. Нажимая кнопки UP,DOWN можно изменить значение выбранного параметра. Переход к следующему параметру – кнопка ENTER. Выход из подменю настройки – кнопка BACK. Активная позиция выбора мигает. Для задания неактивного состояния таймера нужно пролистать настройку часов до ** (между 23 и 0).
Время включения может быть задано как раньше времени выключения, так и наоборот позже времени выключения. Например –
Реле К1 включится в 5:50 и отключится в 10:00. Реле К2 включится в начале суток в 00:00 , в 8:50 выключится, и будет отключено до 20:00. В 20:00 реле К2 включится и будет включено до 23:59, дальнейшее состояние будет зависеть от настроек следующих суток.
Если в следующие сутки состояние реле задано как неактивное, т.е значения заданы как **, то состояние реле не измениться, включенное останется включенным, выключенное выключенным. При переходе часов с 23:59 предыдущих суток на 00:00 последующих, реле не сбрасываются , переключения состояния происходят только согласно заданного в настройках времени. То есть можно задать время включения в понедельник, а время выключения в пятницу, реле будет включено. Но! если произойдет отключение электроэнергии, алгоритм работы будет возобновлен с момента состояния на текущие сутки. Настройки реле независимы друг от друга, так же настройки предыдущих суток не влияют на настройки последующих суток.
При введении значений с кнопок проверяется соответствие чисел диапазону часов и дат. Не получиться задать 25 часов, или 60минут , так же невозможно задать 31 день в месяце где дней 30 и.т.п. Високосные года учитываются.
Настройки активируются только при нахождении в основном меню.
При первом включении микроконтроллер очищает область занятой под настройки EEPROM, инициализирует ds1307, и записывает время и дату по умолчанию – 00:00 01:01:2020. Так же в ячейки номер 10,20,30 EEPROM пишется «205» — признак того , что было первое включение и не требуется очищать память и инициализировать часы реального времени по новой. Зная это можно записать в EEPROM значения таймеров на этапе программирования. Ниже приведена таблица адресов и того, что в них лежит.
N- Число соответствующее дню недели, все числа даны в десятичном формате
Источник
Двухканальный циклический таймер на Atmega8
Автор: AntonChip. Дата публикации: 03 июля 2015 .
Циклический таймер позволяет включать и выключать нагрузку, а также выдерживать паузу на заданные интервалы времени в циклическом режиме. Устройство позволяет управлять освещением, отоплением, вентиляцией и другими электроприборами в зависимости от времени. Нагрузкой могут выступать любые электрические приборы мощность нагрузки которых не превышает максимального тока реле. Принцип работы таймера показан на графике ниже.
Возможности устройства
— 2 канала;
— Максимальная установка Таймера 1, 2 и паузы по времени — 99 минут 59 секунд;
— Максимальное количество циклов — 99
— Управление подсветкой дисплея через меню;
— Сохранение настроек в памяти микроконтроллера.
Схема таймера
Таймер построен на базе микроконтроллера Atmega8. Для более точного отсчета времени тактирование осуществляется от внешнего кварца на 8МГц. Дисплей на базе контроллера HD44780 или его аналога, 16 символов, 2 строки. Настройка осуществляется с помощью 4-х кнопок: «Меню/Вперед», «Назад», «+», «-«. Если в режиме меню кнопки не нажимались в течение 30 секунд, таймер автоматически переходит в ждущий режим без сохранения настроек. Каждое нажатие кнопки подтверждается сигналом зуммера, зуммер применен обычный без встроенного генератора. Запускается таймер при помощи кнопки «Старт», останавливается при нажатии на кнопку «Стоп».
В режиме ожидания на дисплее высвечивается информация об установленном времени таймера 1,2 и времени паузы, а также количестве циклов. В рабочем(запущенном) состоянии на индикаторе ведется обратный отсчет времени таймера 1, затем паузы 1, затем таймера 2 и паузы 2 и количества оставшихся циклов, индикатор работы мигает 1 раз в секунду.
Настройка таймера
Для входа в меню нажмите кнопку «Меню/Вперед», далее необходимо настроить параметры Таймера 1, кнопками «+» или «-» вводим необходимое значение для минут, причем разряд минут мигает раз в 1 секунду, снова нажимаем кнопку «Меню/Вперед», вводим необходимое значение для секунд, причем разряд секунд мигает раз в 1 секунду. Таким же способом настраиваются Таймер 2 и Пауза 1 и 2, т.е. кнопками «Меню/Вперед» и «Назад» можно перемещаться по меню, а кнопками «+» или «-» вводить необходимые значения.
Чтобы сохранить настройки в параметре «Save Settings?» нажмите «Yes».
Смотрите также версию таймера на ATmega328.
Внимание.
Если количество циклов равно нулю, цикл будет повторяться до бесконечности пока не будет нажата кнопка «Стоп».
Если время таймера 1 или таймера 2 равно нулю, то пауза следующая за соответствующим таймером будет пропускаться.
Установка фьюз-битов
Видео работы таймера
Источник