Сводный список записей блога

--->>>> Сводный список записей блога <<<<---

23 июня 2022

Недельный таймер с приоритетной блокировкой

Предыстория

У нас в доме нет централизованного горячего водоснабжения. Есть индивидуальные газовые проточные водонагреватели.Ну или просто - газовые колонки. 

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

Сказано - сделано. Был куплен 2кВт-бойлер. Что бы не тащить отдельную электролинию к распределительном щитку, розетка для бойлера была подключена параллельно одной из групп кухонных розеток. Основное использование этой группы - электрочайник, и непериодическое - всякие миксеры, блендеры и т.д. 
Эта группа розеток защищена 16-амперным автоматом. 16 ампер - это порядка 3.3 кВт.
Чайник 2.2 кВт, бойлер - 2 кВт. Вместе 4 кВт. Непорядок. 
На паре транзисторов, датчике тока и 12-амперном реле было собрано реле приоритета. 
При превышении определенного потребления по кухонным розеткам бойлер, как второстепенная нагрузка, отключался.

В какой то момент это реле "обмикропроцессорилось", включившись в сеть "умного дома". И функционал стал обрастать всякими "плюшками".  К примеру, включением и отключением бойлера, как второстепенной нагрузки при превышении общего потребления по другим линиям. Ибо выделенная мощность на квартиру - 5 кВт. 

С приходом двухзонного учета электроэнергии (с 23:00 до 7:00 электрика дешевле в 2 раза) возник вопрос, а нужно ли греть бойлер днем? 100 литров хватает на бытовые нужды. А вечером можно и нагреть.
И в контроллер управления питанием бойлера добавился недельный таймер с получасовыми интервалами. 

В какой то момент времени возникла необходимость сделать аналогичный таймер родственникам. Это должно быть автономное устройство, которое может настроить любой человек.

В результате и родился данный проект.

Недельный таймер с приоритетной блокировкой

Краткие характеристики управляющего модуля:

  • Встроенные часы с календарем и поддержкой перехода на сезонное время
  • Резервирование хода часов (батарейка CR2032)
  • Недельный график с 30-минутными интервалами
  • Принудительное отключение нагрузки при получении сигнала по приоритетному входу
  • Регулируемая задержка отключения по приоритету от 1 до 30 сек., с шагом 1 сек.
  • Ручное включение нагрузки с возможностью отключения через 1,2,3 или 4 часа
  • Ручное отключение нагрузки
  • 2 разнесенных по времени на 200 мсек сигнала управления нагрузкой (для возможности комбинированного управления при помощи реле и симистора)
  • Светодиодная индикация включения нагрузки и наличия питания
  • Защита от перегрева с настраиваемым порогом срабатывания 60...90° и гистерезисом 10°С.
  • Управление - энкодер + кнопка
  • Отображение информации - OLED-дисплей
  • Питание +12 вольт, до 50 мА

Внешний вид модуля
Внешний вид модуля

Схема управляющего модуля

Схема управляющего модуля

Покрупнее - в PDF-документе.

Модуль построен на мкроконтроллере AVR ATMEGA32A с тактированием от внутреннего генератора. 
К контроллеру подключен "часовой" кварцевый резонатор 32768 Гц. Этот кварц используется для подсчета  времени/даты, в т.ч. и при от резервной батарейки.

Все сигналы взаимодействия с силовым модулем выведены на разъем JP1.

Питание.

Модуль питается от 12 вольт, которые через D2 попадают на IC2 - линейный стабилизатор 7805.
Диод D2 - это отсечение фильтрующей емкости С4 от детектора наличия питания. Ну и защита от переполюсовки.
Каскад R11R12Q4 - детектор наличия питания. Q4 открывается при напряжении порядка 2.5 вольта. Соответственно, делитель R11R12 определяет минимальный уровень напряжения питания, при котором Q4 будет еще открыт. При снижении питания ниже этого порога транзистор Q4 закрывается и управляющий модуль переходит в режим пониженного энергопотребления.
При указанных на схеме номиналах пороговое напряжение будет
2.5 В * (R11/R12+1) = 2.5 * (3/1.1+1) = ~9.3 Вольт.
При коррекции номиналов делителя напряжение питания можно опустить до минимально необходимого для работы стабилизатора 7805 + падение на D2. 

R14Q5D3 - это развязка питания МК от стабилизатора IC2 и от резервной батарейки GB1.
R14Q5 - это "идеальный диод", поскольку даже диод Шоттки имеет неприличное падение напряжения с точки зрения полного использования ресурса батарейки.

При пропадании основного напряжения D3 отсекает дисплей и датчик температуры. Те. от батарейки питается только микроконтроллер.

Управление нагрузкой

Q2R9 и Q3R10 - это каскады типа "открытый сток" для управления реле и оптопарой для управления симистором. 
Внимание! Диод для защиты от броска напряжения самоиндукции в катушке реле должен быть установлен рядом с реле на силовой плате.
Управление симистором должно производиться при помощи оптопары со встроенным детектором нуля (МОС3063 или аналогичные).

Управляющие сигналы включения реле и симистора разнесены по времени. При включении нагрузки сначала включается симистор, через 200 мс включается реле, еще через 200 мс симистор отключается.
Выключение нагрузки производится аналогично - включается симистор, через 200 мс выключается реле, еще через 200 мс выключается симистор. Т.е. процесс отключения нагрузки длится 400 мс после момента наступления события необходимости отключения.

Приоритетный вход

Каскад R7R8D1Q1 - детектор сигнала приоритета. На этот вход может быть подано как постоянное положительное напряжение до 12 вольт, так и переменное напряжение от трансформатора тока. При использовании трансформатора тока он должен быть зашунтирован соответствующим резистором. Резистор должен быть подобран таким образом, что бы амплитудная составляющая на нем достигала порога открытия Q1 (0.55-0.6 Вольт) при соответствующем токе через первичку трансформатора.

Пусть есть трансформатор с коэффициентом трансформации 1:1000. И необходимо отключить нагрузку, если ток по приоритетному потребителю достигнет 2 А. При коэффициенте 1:1000 ток вторичной обмотки ТТ составит 2 мА. Для получения напряжения 0.6 В вторичку нужно зашунтировать резистором 0.6/0.002 = 300 Ом.

Задержка реакции управляющего модуля регулируемая, от 1 до 30 сек. Т.е. короткие броски тока по приоритетному потребителю не приводят к отключению нагрузки. 
Важно! В установленное время задержки реакции не входит время, необходимое для выключения нагрузки (см. выше - 400 мс).

Детектор температуры

В качестве детектора температуры можно применить 1-Wire-датчик температуры DS18B20. Датчик подключается по трехпроводной схеме, поэтому можно спокойно применять даже "нелицензионные китайские копии" данного датчика температуры. Датчик устанавливается непосредственно на силовой плате либо выносится на трех проводах в область силовых клемм или реле.
R1R5 - защитные диоды. R4 - подтяжка шины 1-Wire к питанию.

Контроль температуры имеет гистерезис - отключение нагрузки происходит по достижению температуры уставки, повторное включение нагрузки - при снижении температуры ниже порога повторного включения, который на 10° ниже температуры уставки. 
Так же, если разница между текущей температурой и температурой уставки составляет менее 10°С - на дисплее будет отражено соответствующее предупреждение.

Уровень уставки выбирается в диапазоне 60-90°С с шагом в 1°.

Отображение и управление

Управление осуществляется энкодером SW1 и кнопкой S1. 
В настройках устройства предусмотрена инверсия вращения энкодера как для всех операций, так и только для перемещения по пунктам меню.

Информация отображается на OLED-дисплее HG1 с контроллером SSD1306.

Светодиод LED1 в нормальном режиме работы отображает состояние нагрузки. LED2 подключен к выходу стабилизатора IC2 и индицирует наличие напряжения питания.
Токозадающие резисторы R2 и R3 определяют яркость свечения светодиодов. При применении современных ярких диодов сопротивления этих резисторов можно увеличить до достижения комфортного уровня яркости свечения.

У меня для синего светодиода LED2 стоит балластный резистор 18 кОм, для желтого LED1 я был вынужден поставить 10 кОм. Иначе в темном помещении эти диоды сродни прожекторам.

Индикация аппаратных ошибок

При подаче питания проверяется корректность старта генератора на "часовом" кварце. Если генератор не запускается - светодиод LED1 начинает часто мигать, на дисплей выводится сообщение об ошибке.
Так же, если дисплей не обнаружен - светодиод LED1 тоже начнет часто мигать. Надпись об отсутствии дисплея на дисплей не выводится.
В режиме индикации ошибок нагрузка не включается.

Перемычка No Lock

Если запаять указанную пермычку, отключится функционал контроля приоритетной нагрузки. Из меню исчезнет пункт настройки длительности задержки реакции на приоритетный сигнал.

Конструкция и печатная плата

Конструктивно управляющий модуль - это печатная плата 38.5 х 44.5 мм, на которой вторым слоем установлен OLED-дисплей.

Дисплей устанавливается на двух нейлоновых стойках с резьбой 2мм. Высота стоек определяется конечной конструкцией устройства, длиной штока энкодера и толкателя кнопки.

Подключение дисплея - можно через пару гребенка PLS + разъем PBS, или просто длинной гребенкой PLS. Или 4 проводка. Общая высота разъема + обойма на гребенке дают 8.4+2.54 = 10.94 мм. Т.е. для конструкции разъем+гребенка идеально подходят стойки 11 мм.

У меня в конструкции стоят стойки 10 мм и разъем PBS на плате модуля. С гребенки PLS на дисплее я снял обойму и на 1 мм обрезал штыри. 

Кварцевый резонатор паяется к двум площадкам возле МК, а сам резонатор кладется на контроллер и фиксируется каплей термоклея.

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

Монтаж остальных деталей особенностей не имеет. 

Внешний вид платы

Управляющий модуль - верх
Управляющий модуль - низ

Готовый файл для ЛУТ (позитив)

Герберы

Прошивка и фьюзы

Прошивка - сборка 1.0.379

Фьюзы

Фьюзы

Работа с управляющим модулем

Отображение информации на дисплее
(Увы, качество фотографий оставляет желать лучшего, фотографировалось на тапок)

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

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

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

Общий список всех пунктов меню:

меню

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

Состояние принудительного включения или выключения нагрузки сохранится до наступления планового события включения/выключения нагрузки из расписания.
Если выбрано временное включение нагрузки - на 1,2,3 или 4 часа  - по истечении этого времени нагрузка отключится.

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

Если при принудительно включенном состоянии поступит сигнал от приоритетной нагрузки, управляющий модуль отключит нагрузку до исчезновения приоритетного сигнала.

При блокировке нагрузки приоритетным сигналом так же возможно ручное включение нагрузки.

Пункт меню "Расписание".

Позволяет как просмотреть всё недельное расписание, так и просматривать/редактировать расписание по дням недели.

Недельное расписание:

DisplayWeeklyDiary

Просмотр/изменение одного дня:

DisplayDiadyDayEdit

В режиме редактирования суточного расписания отображается 48 получасовых интервалов. Перемещение по интервалам - вращением энкодера.

Нажатие на энкодер включает или выключает соответствующий интервал.
Нажатие и удержание кнопки энкодера переключает текущий интервал и копирует состояние интервала на все последующие до конца суток.

Например, для графика "нагрузка включена с 0:00 до 7:00 и с 20:30 до 0:00" достаточно стать на первый интервал, нажать и удерживать энкодер. Включенное состояние установится на все 48 интервалов. Далее, выбрать интервал 7:00-7:30 - первый, когда нагрузка должна быть выключена, нажать и удерживать энкодер. Состояние выключенной нагрузки установится для этого и всех последующих интервалов. И аналогично, для интервала 20:30-21:00 длинным нажатием проставить включенное состояние для выбранного и всех последующих интервалов.

Настройка даты-времени

DisplaySetDateTime

Параметры меняются в следующей последовательности - Год > Месяц > Число > Часы > Минуты > Автопереход на сезонное/летнее время.
День недели вычисляется автоматически.

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

Сохранение новой даты-времени происходит только в момент последнего нажатия на энкодер, когда выбран параметр "Автолето"

Пункт "Часы ждущ." - Если включен - в режиме ожидания на дисплее в случайных местах будет отображаться текущее время. Если выключен - то в режиме ожидания дисплей будет выключен.

Пункт "Энкодер" - позволяет изменить реакцию на направление вращения энкодера как в целом, так и для перемещения по пунктам меню.

Пункт "Порог перегрева"

DisplayOverheatLevel

В данном режиме в верхней части отображается температура датчика DS18B20. Если датчик не подключен - будет отображаться 0°С.
Порог перегрева изменяется вращением энкодера, сохранение - нажатием на энкодер. Нажатие на кнопку отмены выходит из данного режима без сохранения изменений.

Пункт "Задержка блок." 

DisplayLockImmuneTime

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

Время изменяется вращением энкодера, сохранение - нажатием на энкодер. Нажатие на кнопку отмены выходит из данного режима без сохранения изменений.

Пункт меню "Информация"

DisplayVersion

Здесь просто отображается название устройства и версия прошивки.

_______________________________________________________________________________

А дальше самое интересное. Управляющий модуль - это хорошо. Но ему же надо как то обеспечить питание и предоставить реле и тиристор для управления нагрузкой.

Силовой модуль

Первая мысль была - найти какой то мелкий БП. Но под руками такого БП нету. Заказывать из Китая - долго, да и кот в мешке. Делать небольшой импульсник - там нужен трансформатор.
Вторая мысль. Конденсаторный блок питания. Но конденсаторы занимают много места.
Третья мысль. В сети я встречал интересную микросхемку LinkSwitch от Power Integrations. А именно - LNK304. Вот я и решил попробовать в деле эту крошку.
Это ШИМ-контроллер, требует из обвязки пару дросселей, конденсаторов, пару диодов и резисторов.
Позволяет получить 12 Вольт и ток 120 мА.

Реле для коммутации нагрузки было взято G2RL112DC от OMRON. 12 ампер 250 вольт.
Катушка 12 вольт, 360 Ом. 
Симистор - BT139-800. Оптопара MOC3063.

ВНИМАНИЕ! Блок питания на LNK304 построен по бестрансформаторной схеме!
Все элементы блока питания и подключенного модуля управления находятся под сетевым напряжением!
Категорически запрещается касание частей включенной в электросеть схемы!
Попытка подключения программатора к МК при включенном в сеть таймере с высокой долей вероятности может привести к смерти устройства, программатора и даже ПК!
Изолированные ручки на кнопку и энкодер обязательны!
Дисплей должен быть за защитным стеклом!

Схема

Схема силового модуля

Схема в PDF-формате

Блок питания

D1D2, L1L2, C1C2C3C4C5, R2R5R6R8, IC1 - элементы блока питания. Включение и номиналы - согласно даташита на IC1 LNK304.

LNK304P - микросхема в корпусе DIP-8
LNK304D - микросхема в корпусе SO-8 для поверхностного монтажа

Про диоды D4 и D5. В даташите указано, что падение на них должно быть приблизительно одинаковое. D5 может быть любой выпрямительный. А вот D4 - нужен быстрый диод. С временем восстановления не более 75 нс. А лучше не более 35 нс. 
Прямо в даташите рекомендуется в качестве D4 использовать, как минимум, UF4005. И 1N4005 для D5. Но там же рекомендуется использовать для D4 диод пошустрее, например, BYV26E.
Для D5 его тоже можно применить, для соблюдения идентичности падения на этих диодах. Для SMD-решений в качестве быстрого диода можно применить ES2J.

Конденсатор C5 должен быть Low ESR.

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

Делитель R6R5 определяет выходное напряжение. Напряжение на конденсаторе C4 соответствует выходному. На входе FB пороговый уровень 1.65 вольта. Соответственно, элементы делителя при входных 12 вольтах должны обеспечить напряжение 1.65 В.

1.65В * (R6/R5+1) = 1.65 * (13/2.05+1) = 12.11 В.

Из стандартных резисторов можно попробовать применить пары
10кОм + 1.6кОм = 11.96В
13кОм + 2.1кОм = 11.86В
16кОм + 2.6кОм =11.80В

Управление нагрузкой

Реле K1 и симистор T1 отвечают за включение нагрузки. Подводящие дорожки и провода должны быть рассчитаны на ток нагрузки. Дорожки очень желательно усилить, напаяв на них кусочки многожильного провода сечением 1-1.5-2 квадрата. Либо подводящие провода взять достаточной длины и припаять их по всей длине дорожек.
На схеме силовые дорожки нарисованы утолщенными линиями.
IC3 - оптопара с детектором нуля, это управление симистором.
D3 - диод защиты от тока самоиндукции реле.

Контроль температуры

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

Вход приоритетной нагрузки

К коннектору XT4 подключается трансформатор тока.
Например, вот такой, от товарищей китайцев - 5А/5мА

Трансформатор тока

Резистор R7 подбирается (рассчитывается) по уровню порогового тока. Падение напряжения на этом резисторе должно составлять не менее 0.55-0.6 вольта для срабатывания отключения нагрузки. Принцип расчета резистора см. выше, в описании модуля управления.

Конструктивное решение

Плата силового модуля разработана в двух вариантах. 

Для корпуса Cradex Z-102 на DIN-рейку

Z102

И для корпуса Cradex Z-27 - вилка-розетка.

Z-27


Корпус Z-102 на DIN-рейку.

Для данного корпуса было подсмотрено в реле напряжения Zubr достаточно изящное решение с клеммником. 
Там на плату прикручен клеммник, и непосредственно в него заведены выводы реле. 

клеммник

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

Компоновка в корпусе.

Z102 - компоновка

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

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

Модуль управления устанавливается на плату на нейлоновых стойках 36 мм.
Дисплей на плате управления - на стойках 11 мм. 
Энкодер для данного корпуса необходимо подобрать с коротким штоком (либо обрезать длинный) и использовать невысокую пластмассовую ручку, поскольку пространство над модулем в корпусе электрощита может быть ограничено.

Плата для корпуса Z-102

power board 102 top
p b 102 bot

Плата односторонняя. На плате необходимо установить 4 перемычки, выполненные изолированным проводом.

Катод диода D1 можно завести непосредственно в клеммник.

Герберы

Готовый PDF для печати LUT.

Корпус Cradex Z-27 - вилка-розетка

Компоновка в корпусе

Z27компоновка

Здесь плата крепится в корпусе на 5мм нейлоновых стойках. Да, в данном корпусе есть и свои точки крепления для плат - но они не подошли по различным причинам.

На этой плате применено гораздо больше деталей для поверхностного монтажа, включая симистор BT139B-800E в корпусе D2PACK и ШИМ-контроллер блока питания - LNK304D - в корпусе SO-8. Быстрый диод применен ES2J, остальные - 1N4007 в SMD-исполнении. 

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

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

Термодатчик здесь установлен на плате, в левой части. При желании его можно на проводах вынести куда то в район силовых проводов... Но с учетом того, что корпус закрытый - перегрев силовых частей термодатчик отследит. В тестах при выключенном реле температура внутри корпуса была +32°С, при включенном  +35°С. Температура в помещении была +28°С.

Плата для корпуса Z-27

Z27 верх
Z27 низ

Розовым цветом на рисунке обозначены рекомендуемые области для припаивания силовых проводов L-in и L-out.

Для резистора R5 предусмотрено 2 последовательно соединенных посадочных места для удобства подбора нестандартного сопротивления. У меня делитель получился 13кОм + (2кОм+75 Ом)

Герберы

Готовый PDF для печати LUT

Немножко фото готовой конструкции






РадиоКОТ - https://radiokot.ru/artfiles/6703


2 комментария:

  1. Анонимный03 ноября, 2023 20:41

    Индикатор не заводится, I2C адрес 78 или 7А?

    ОтветитьУдалить
    Ответы
    1. Сканируются оба. Если не находит ни на одном из адресов - тогда ошибка.

      Удалить

======= !!! ВНИМАНИЕ !!! ======================================================================
Гугл умный и боится спама. Поэтому иногда ваши комментарии Гугл отправляет мне на премодерацию. Отправлять или нет - решаю не я, а алгоритмы Гугла. Если ваш комментарий не появился сразу, значит я получу уведомление и опубликую ваш комментарий через некоторое время. Я стараюсь это делать достаточно оперативно.