-
Микроконтроллерное управление циркуляционным насосом в системе отопления.
-
PIC16F84A
,
PIC16F628A
,
DS1820
,
DS18S20
Обновление 15 сентября 2015!!! Добавлена прошивка для двухскоростного насоса
Обновление 10 сентября 2015!!! Добавлена прошивка для микроконтроллера pic16F628A
Устройство изначально собрано на микроконтроллере на pic16f84a (pic16f628a) . Датчик DS1820 (DS18S20) измеряет температуру трубы на выходе котла. В зависимости от температуры микроконтроллер включает или выключает циркуляционный насос. Основная его задача - включать циркуляционный насос когда труба горячая и выключать его, когда труба остывшая.
Для ускорения прогрева системы отопления при запуске котла, пока труба холодная, нажатием на кнопку можно перевести контроллер на пол часа в ручной режим. При этом насос включается при холодной трубе. Если в течение получаса труба не разогреется, контроллер переходит в штатный режим, отключая насос.
При выходе температуры за заданные границы (меньше +6 и больше +68 градусов) контроллер подаёт звуковой сигнал и зажигает красный светодиод. При обрыве датчика так-же подается звуковой сигнал и горит красный светодиод.
Упрощенно и схематически это можно изобразить так:
Подробнее об индикации:
LED1: (температура)
- не горит - температура между 7 и 39
- зеленый - температура между 39 и 69
- желтый - температура >69 или <7
- красный - обрыв датчика температуры
- не горит - выключен
- моргает - принудительно включен на 30 мин (при холодной трубе)
- горит - включен при горячей трубе
В прошивке начиная с версии 2.1 добавлена возможность задавать свои пороговые значения температуры. Значения температуры записываются в ячейки EEPROM с адресами 0, 1 и 2. Значения в ячейках должны быть равны t°C * 2 (температура порога в градусах Цельсия умноженной на 2)
В нулевой ячейке записывается нижний порог (T0), в первой - порог включения насоса (T1). Во второй - верхний порог (T2). Верхний порог T2 не может быть больше 240 (120°С). И разница между значениями T0, T1 и T2 должна быть не менее 2 (1°С).
Если эти условия будут не соблюдены, или в EEPROM ничего не записано (сплошные FF), то будут использоваться значения по умолчанию 12, 68 и 136 (6°С, 34°С и 68°С)
На этом скриншоте видно, что при загрузке прошивки v2.2 в первые 3 ячейки EEPROM по адресам 00H, 01H и 02H загружаются значения:
- 0CH (12 => 6°C)
- 44H (68 => 34°C)
- 88H (136 => 68°C)
Если нужно установить другие пороги температуры, то надо изменить эти значения. Например, необходимо установить пороги 12, 45 и 75°C.
- 12 => 12*2=24 => 18H
- 45 => 45*2=90 => 5AH
- 75 => 75*2=150 => 96H
Таким образом, в ячейки EEPROM перед прошивкой надо внести новые значения 18H, 5AH и 96H.
Update: В v2.2 добавлена возможность выбирать тип датчика температуру DS1820 или DS18B20 установкой перемычки Jmp1.
В окончательно собранном виде. Корпус обошелся в полцарства.
Печатная плата
Печатная плата в формате .lay: (доступно зарегистрированным пользователям)
Принципиальная схема включения двухскоростного насоса. Ничего принципиально в принципиальной схеме не изменилось. Добавлен второй узел (обведён пунктиром) для подключения вывода повышенной скорости насоса. По логике работы контроллера в режиме скоренного разогрева включается второй симисторный узел. В нормальном режиме второй узел отключен и включен первый.
Этой схеме соответствует прошивка версии 2.2.2
!!! Прошивка v2.2.2 не проверялась на реальном устройстве
Прошивка
Версия 2.2.2 для двухскоростного насоса
Версия 2.2.2 для pic16F84a от 15.09.2015: (доступно зарегистрированным пользователям)
Версия 2.2.2 для pic16F628a от 15.09.2015: (доступно зарегистрированным пользователям)
Конфигурация фюзов для pic16f628a 0x3FE9
В версии 2.2.1 исправлена ошибка выбора датчика температуры. Прошивка доступна для двух микроконтроллеров:
Версия 2.2.1 для pic16F84a от 10.09.2015: (доступно зарегистрированным пользователям)
Версия 2.2.1 для pic16F628a от 10.09.2015: (доступно зарегистрированным пользователям)
Конфигурация фюзов для pic16f628a 0x3FE9
В версии 2.2 добавлена возможность выбора датчика температуры DS1820 или DS18B20. Выбор DS18B20 осуществляется установкой перемычки Jmp1. Прошивка не проверена в железе. Отпишитесь, кто проверит.
Версия 2.2 от 26.01.2015: (доступно зарегистрированным пользователям)
В версии 2.1 добавлена возможность устанавливать свои значения температуры при прошивке.
Версия 2.1 от 08.10.2014: (доступно зарегистрированным пользователям)
В версии 2.0 исправлен небольшой баг, проявлявшийся только при обрыве датчика температуры.
Версия 2.0 от 15.12.2013: (доступно зарегистрированным пользователям)
Версия 1.0 от 08.10.2009: (доступно зарегистрированным пользователям)
Дата первой публикации: 2010-март-09- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
ОБСУЖДЕНИЯ
занимаюсь с DS1820.не могли бы вы прислать часть программы, в которой происходит считывание температуры с датчика(включая сброс,присутствие, запись и чтение).Заранее благодарен. мой mail: vadya-kirillov@mail.ru
Отослал на почту, смотрите.
А что за эллемент на схеме маркированны как Hom1, вроде как резистор
Это пьезокерамический излучатель, пищалка от какой-то китайской игрушки. На фото в открытой коробке к нему красный и черный проводки подходят. Можно поставить что угодно, лишь бы пищало, или добавить на транзисторе усилитель.
Спасибо, просто сразу и не сообразил по фото и статье что в схеме присутствует зуммер
Очень нужное устройство!
1.Правильно ли подключены светодиоды LED1, LED2?
2.Какой светодиод LED1 и LED2 что показывает?
3.Не могли бы вы выложить исходник или прислать на viknik8@yandex.ru с целью изменить температуру включения и выключения цирк. насоса?
4.Нет ли версии прошивки, где менялась бы скорость трехскоростного цирк. насоса?
1. светодиоды на схеме показаны неправильно
2.
LED1 -
не горит - температура между 7 и 39
зеленый - температура между 39 и 69
желтый - температура >69 или <7
красный - обрыв датчика температуры
LED2 - состояние мотора.
не горит - выключен.
моргает - принудительно включен на 30 мин (при холодной трубе)
горит - включен при горячей трубе
3. не могу, ядро используется в коммерческих разработках, но может попозже сделаю хранение температуры во флеш-памяти.
4. такой прошивки нет
Добавил прошивку с возможностью задания другой температуры
Вот спасибо!
Можно приобрести у вас готовый Микроконтроллерное управление циркуляционным насосом в системе отопления. так как у неня возраст заниматься этим не позволяет,изучать программирование микроконтролеров,на работе занимался обслуживанием промэлектроники,индукционные печи по нагреву метвлла.Если можно ответ на почту.
Александр, ответил Вам на почту
Понимаю необходимость такого контроллера в системах с принудительной циркуляцией. А нужен ли он в системе с байбасом, где возможна либо принудительная, либо естественная циркуляция теплоносителя? Например, даст ли этот прибор экономию топлива? С ув. Faxolog@gmail.com
Вряд ли эта система даст какую-то экономию топлива. Она даёт экономию электричества, автоматически отключая циркуляционный насос при погашенном котле.
Данное устройсво способно работать с датчиком DS18B20.
Если можно сделать прошивку под этот датчик.
Это вопрос или утверждение?
Можно попросить Вас сделать прошивку 2.1 под датчик DS18B20
Сделать можно, а проверить не смогу.
Сделал, называется v2.2
Не могу найти DS1820 есть только DS18B20
спасибо. проверю напишу.
не работает.
А подробнее?
Прошивка V2.2 работает,а можно ли в ней устонавливать температуру и как это сделать?
Можно устанавливать температуру начиная с v2.1 записывая значения в EEPROM.
Подробнее написано в тексте.
извините а можно как то наглядно показать просто я новичёк вэтих делах.спасибо заранее
Наглядно можно посмотреть в программе Proteus v7.10. Все прошивки рабочие.
спасибо,разобрался,всё работает.
Отлично.
Я как раз собирался вечером поясняющие скриншоты добавить. Всё равно сделаю наверное.
Здравствуйте. Есть ли возможность переделать прогу на другой Pic, например, на PIC16F628A. PIC16F84A сняли с производства и он стал очень дорогим, да и найти его стало сложно. Я в программировании не бум-бум.
Можно попробовать, но проверять результат придется Вам самому.
Ок!
Прошивка для pic16F628A готовa
Спасибо за новую прошивку.Теперь можно переходить на ваше устройство, более простое и функциональное,чем было у меня до этого. Есть еще одна просьба. Многие используют насосы с несколькими скоростями, которые переключаются механически и эта их функция зачастую не используется. Хорошо бы, если бы было два выхода на включение насоса. Один выход включал насос после достижения температуры (большая скорость), затем отключался первый выход и включался второй (маленькая скорость) по истечению определенного времени,например 30 мин..Этим можно обеспечить быстрый прогрев помещения и затем экономию электроэнергии за счет уменьшения скорости насоса.Конечно можно использовать и внешний таймер, но уж так не хочется усложнять.
Вы уверены, что сможете управлять многоскоростным насосом таким образом? По моему, там происходит переключение скоростей за счет коммутации обмоток и конденсатора, если я не ошибаюсь.
Сейчас разобрал свой итальянский трехскоростной насос. Стоит одна ёмкость и трехполюсный переключатель (3 положения,одно направление),который переключает обмотки. Емкость постоянно подключина к одной обмотки.Так что прокатит.
Готово, проверяйте. На свой страх и риск :)
Спасибо за прошивку.Немного не так работает.При запуске котла кнопкой включаем ручной режим. Включился насос на большой скорости (порт B2).После 30 мин. или достижении заданной температуры большая скорость отключается и включается малая (порт A0).Здесь все правильно!! А вот, если не включать ручной режим, а ждать когда температура достигнет заданной, то включится малая скорость (порт A0). Надо, чтобы включилась большая скорость (порт B2), а за тем, через 30 мин. она выключилась и включилась малая. Зимой, когда не живешь и начинаешь топить, то насос на малой скорости не может провернуть холодную незамерзайку в приемной трубе. Можно, конечно, всегда нажимать кнопку, но не удобно.
С таким алгоритмом возни побольше, и придется внутреннюю документацию подправлять, чтоб потом не запутаться. Сделаю попозже, как время будет.
А возможно добавить к этому устройству LED табло и кнопки для управления и задания параметров?
Ничего невозможного в этом нет :)