1. Микроконтроллерное управление циркуляционным насосом в системе отопления.

  2. PIC16F84A

    PIC16F628A

    DS1820

    DS18S20

Обновление 15 сентября 2015!!! Добавлена прошивка для двухскоростного насоса

Обновление 10 сентября 2015!!! Добавлена прошивка для микроконтроллера pic16F628A

Устройство изначально собрано на микроконтроллере на pic16f84a (pic16f628a) . Датчик DS1820 (DS18S20) измеряет температуру трубы на выходе котла. В зависимости от температуры микроконтроллер включает или выключает циркуляционный насос. Основная его задача - включать циркуляционный насос когда труба горячая и выключать его, когда труба остывшая.

Принципиальная схема

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

При выходе температуры за заданные границы (меньше +6 и больше +68 градусов) контроллер подаёт звуковой сигнал и зажигает красный светодиод. При обрыве датчика так-же подается звуковой сигнал и горит красный светодиод.

Упрощенно и схематически это можно изобразить так:

Подробнее об индикации:
LED1: (температура)

  • не горит - температура между 7 и 39
  • зеленый - температура между 39 и 69
  • желтый - температура >69 или <7
  • красный - обрыв датчика температуры
LED2: (состояние насоса)
  • не горит - выключен
  • моргает - принудительно включен на 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

Аватар пользователя Leog - Linker.Ru

Отослал на почту, смотрите.

Аватар пользователя Resylenr

А что за эллемент на схеме маркированны как Hom1, вроде как резистор

Аватар пользователя Leog - Linker.Ru

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

Аватар пользователя Resylenr

Спасибо, просто сразу и не сообразил по фото и статье что в схеме присутствует зуммер

Аватар пользователя viknik8

Очень нужное устройство!
1.Правильно ли подключены светодиоды LED1, LED2?
2.Какой светодиод LED1 и LED2 что показывает?
3.Не могли бы вы выложить исходник или прислать на viknik8@yandex.ru с целью изменить температуру включения и выключения цирк. насоса?
4.Нет ли версии прошивки, где менялась бы скорость трехскоростного цирк. насоса?

Аватар пользователя Leog - Linker.Ru

1. светодиоды на схеме показаны неправильно

2.
LED1 -
не горит - температура между 7 и 39
зеленый - температура между 39 и 69
желтый - температура >69 или <7
красный - обрыв датчика температуры

LED2 - состояние мотора.
не горит - выключен.
моргает - принудительно включен на 30 мин (при холодной трубе)
горит - включен при горячей трубе

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

4. такой прошивки нет

Аватар пользователя Leog - Linker.Ru

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

Аватар пользователя viknik8

Вот спасибо!

Аватар пользователя Александр-22

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

Аватар пользователя Leog - Linker.Ru

Александр, ответил Вам на почту

Аватар пользователя Гость

Понимаю необходимость такого контроллера в системах с принудительной циркуляцией. А нужен ли он в системе с байбасом, где возможна либо принудительная, либо естественная циркуляция теплоносителя? Например, даст ли этот прибор экономию топлива? С ув. Faxolog@gmail.com

Аватар пользователя Leog - Linker.Ru

Вряд ли эта система даст какую-то экономию топлива. Она даёт экономию электричества, автоматически отключая циркуляционный насос при погашенном котле.

Аватар пользователя rus9892

Данное устройсво способно работать с датчиком DS18B20.
Если можно сделать прошивку под этот датчик.

Аватар пользователя Leog - Linker.Ru

Это вопрос или утверждение?

Аватар пользователя rus9892

Можно попросить Вас сделать прошивку 2.1 под датчик DS18B20

Аватар пользователя Leog - Linker.Ru

Сделать можно, а проверить не смогу.

Аватар пользователя Leog - Linker.Ru

Сделал, называется v2.2

Аватар пользователя rus9892

Не могу найти DS1820 есть только DS18B20

Аватар пользователя rus9892

спасибо. проверю напишу.

Аватар пользователя rus9892

не работает.

Аватар пользователя Leog - Linker.Ru

А подробнее?

Аватар пользователя andron

Прошивка V2.2 работает,а можно ли в ней устонавливать температуру и как это сделать?

Аватар пользователя Leog - Linker.Ru

Можно устанавливать температуру начиная с v2.1 записывая значения в EEPROM.

Подробнее написано в тексте.

Аватар пользователя andron

извините а можно как то наглядно показать просто я новичёк вэтих делах.спасибо заранее

Аватар пользователя viknik8

Наглядно можно посмотреть в программе Proteus v7.10. Все прошивки рабочие.

Аватар пользователя andron

спасибо,разобрался,всё работает.

Аватар пользователя Leog - Linker.Ru

Отлично.

Я как раз собирался вечером поясняющие скриншоты добавить. Всё равно сделаю наверное.

Аватар пользователя viknik8

Здравствуйте. Есть ли возможность переделать прогу на другой Pic, например, на PIC16F628A. PIC16F84A сняли с производства и он стал очень дорогим, да и найти его стало сложно. Я в программировании не бум-бум.

Аватар пользователя Leog - Linker.Ru

Можно попробовать, но проверять результат придется Вам самому.

Аватар пользователя viknik8

Ок!

Аватар пользователя Leog - Linker.Ru

Прошивка для pic16F628A готовa

Аватар пользователя viknik8

Спасибо за новую прошивку.Теперь можно переходить на ваше устройство, более простое и функциональное,чем было у меня до этого. Есть еще одна просьба. Многие используют насосы с несколькими скоростями, которые переключаются механически и эта их функция зачастую не используется. Хорошо бы, если бы было два выхода на включение насоса. Один выход включал насос после достижения температуры (большая скорость), затем отключался первый выход и включался второй (маленькая скорость) по истечению определенного времени,например 30 мин..Этим можно обеспечить быстрый прогрев помещения и затем экономию электроэнергии за счет уменьшения скорости насоса.Конечно можно использовать и внешний таймер, но уж так не хочется усложнять.

Аватар пользователя Leog - Linker.Ru

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

Аватар пользователя viknik8

Сейчас разобрал свой итальянский трехскоростной насос. Стоит одна ёмкость и трехполюсный переключатель (3 положения,одно направление),который переключает обмотки. Емкость постоянно подключина к одной обмотки.Так что прокатит.

Аватар пользователя Leog - Linker.Ru

Готово, проверяйте. На свой страх и риск :)

Аватар пользователя viknik8

Спасибо за прошивку.Немного не так работает.При запуске котла кнопкой включаем ручной режим. Включился насос на большой скорости (порт B2).После 30 мин. или достижении заданной температуры большая скорость отключается и включается малая (порт A0).Здесь все правильно!! А вот, если не включать ручной режим, а ждать когда температура достигнет заданной, то включится малая скорость (порт A0). Надо, чтобы включилась большая скорость (порт B2), а за тем, через 30 мин. она выключилась и включилась малая. Зимой, когда не живешь и начинаешь топить, то насос на малой скорости не может провернуть холодную незамерзайку в приемной трубе. Можно, конечно, всегда нажимать кнопку, но не удобно.

Аватар пользователя Leog - Linker.Ru

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

Аватар пользователя barbus

А возможно добавить к этому устройству LED табло и кнопки для управления и задания параметров?

Аватар пользователя Leog - Linker.Ru

Ничего невозможного в этом нет :)