В начало | Зарегистрироваться | Заказать наши киты почтой
 
 
 
 

Термометр + термостат на микроконтроллере PIC16F876 и датчиках DS18B20

📆28 апреля 2014   ✒️dedmazay   🔎18.607   💬8  
Термометр

История этого термометра началась в далёком 2011 году. Мне понадобилось в подвале частного дома, в холодные русские зимы, включать обогреватель для того чтобы не замерзала вода в трубе. А так как труба идёт через весь подвал, измерять температуру требовалось в нескольких точках.
Также включать и выключать обогреватель надо было исходя из какой-то логики, опираясь на данные нескольких датчиков. И мной был разработан термометр с возможностью работы с несколькими датчиками (от 1 до 4) и развитой логикой управления обогревателем (охладителем). За основу был взят микроконтроллер Microchip PIC16C73B, датчики DS18B20.

Для читателей сайта datagor.ru данная конструкция была доработана под более распространенный микроконтроллер PIC16F876(A), убрана микросхема памяти AT24C16, добавлено сохранение минимальной и максимальной температуры в EEPROM.
Вкусные подробности далее.

Схема термометра

Данный термометр состоит из нескольких частей. Сам термометр, выносные датчики и силовое устройство (при необходимости). Схема термометра очень простая.
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.

Светодиоды LED2-LED5 показывают, данные какого датчика в данный момент отображаются на индикаторе, светодиоды LED6 и LED7 отображают включение силового ключа и установленный режим (нагреватель или охладитель).

Описание работы программы

Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.


Режим общих настроек термометра

Начнём с самого простого, с общих настроек. Чтобы войти в этот режим, надо в течении 3 секунд удерживать нажатой кнопку S1. Первый пункт меню, режим работы силового устройства, нагреватель или охладитель. Пункт меню отображается "out", режим нагревателя "H" от слова HOT (жара), режим охладителя "C" от слова COLD (холод).
Разница между ними в том, что в режиме нагревателя силовое устройство включается при снижение температуры до нижнего уровня (величина уровня и логика управления устанавливается в меню датчика) и выключается при достижении верхнего, а в режиме охладителя наоборот, при достижении верхнего уровня силовое устройство включается, а при достижении нижнего выключается.

При включении силового устройство режим индицируется соответствующим светодиодом. Режим нагревателя у меня индицирует красный светодиод, режим охладителя - синий. Режим переключается кнопками S3 и S1, переход в следующий пункт меню - кнопка S2.

Следующий пункт меню - время переключения на следующий датчик при отображении температуры. Пункт меню отображается "dt", время переключения меняется кнопками S3 и S1. Всего существует четыре значения: 1,2,3,4 секунды. Мне удобнее 1секунда (значение по умолчанию), остальные сделал на всякий случай. Чтобы выйти из настроек с сохранением параметром, надо нажать и удерживать в течении 3 секунд кнопку S2, выхода без сохранения параметров не существует.

Режим настроек датчика

Здесь будет посложнее. Чтобы перейти в раздел настроек датчика нужно в режиме отображения температуры сначала нажать кнопку S2, затем кнопками S1 и S3 выбрать нужный датчик, затем нажать и удерживать в течении 3 секунд кнопку S2, и вы войдёте в режим настроек данного датчика.

При определённом навыке, можно сразу нажать и удерживать в течении 3 секунд кнопку S3, поймав тот момент, когда отображается нужный датчик.
При входе в этот режим цифровой индикатор гаснет, остаётся гореть только светодиод указывающий номер датчика, двигая кнопками S3 (влево) и S1 (вправо), мы можем выбрать номер отображения данного датчика.
Так как при регистрации датчиков в термометре они сортируются по встроенному коду ROM, а мне хотелось бы чтобы они отображались в определённой последовательности, например в моём случае от ближнего конца подвала к дальнему.
Данная настройка позволяет отображать температуру в том порядке, в котором удобно, а не в порядке следования ROM датчиков.
Чтобы перейти в следующий пункт меню, надо нажать кнопку S2.

Следующий пункт меню, управление логикой включения силового устройства от данного датчика (слева на индикаторе будет отображаться "on"). По умолчанию все датчики отключены от управления, это индицируется дефисом в крайнем правом сегменте. Режима управления три, отключено (дефис в правом сегменте), режим "ИЛИ" (вертикальная линия в правом сегменте) и режим "И" (две вертикальные линии в правом сегменте). Режим "ИЛИ" означает, что если температура хотя бы одного датчика в этом режиме перешла порог включения или выключения, то силовое устройство будет включено или выключено. Включение имеет приоритет перед выключением. Если датчик вдруг сломался, а он участвует в управлении силовым устройством, программа считает, он находится в состоянии выключения.

Аналогично устанавливается логика выключения силового устройства в следующем пункте меню, в которое мы попадаем нажав кнопку S2. На индикаторе отображается "OFF".

Нажав кнопку S2, мы попадаем в следующий пункт меню, это установка верхнего уровня управления силовым устройством. Он отображается буквой "H" (от HIGH - высокий) в крайнем левом сегменте индикатора. Кнопками S1 (уменьшает) и S1(увеличивает) выставляем температуру уровня, если кнопку S1 или S3 удерживать более 3 секунд, то к значению температуры начинает прибавляться (вычитаться) не 1, а 10.

Также выставляем температуру нижнего уровня в следующем пункте меню, в который попадаем нажав кнопку S2, он отображается "L" (от LOW нижний). По нажатию кнопки S2 мы попадаем в следующий пункт меню по кругу, чтобы выйти из меню настроек датчика с сохранением параметров, надо нажать и удерживать кнопку S2 в течении 3 секунд.

Чтобы понять логику управления силовым устройством, разберём пример. Предположим, что у нас подключено четыре датчика. Два из них (1 и 2) включены в режим И и два (3 и 4) в режим ИЛИ на включение, и все в режим ИЛИ на выключение. Термометр включен в режим охладителя.

Установлены следующие пороги (верхний, нижний) д1(70,50), д2(65,53), д3(30,20), д4(80,70). Установилась следующая температура: д1(75), д2(60), д3(28), д4(75). В данном состоянии охладитель включён не будет, несмотря на то что на д1 превышен порог, так как он включён в режим "И", а на д2 верхний порог не достигнут. И на датчиках д3, д4 верхний порог тоже не достигнут. Чтобы включился охладитель, необходимо, чтобы верхний порог был достигнут или на одном из датчиков д3, д4, или на обоих датчиках д1, д2.

При температуре д1(76), д2(65), д3(29), д4(79) охладитель включится. Теперь, чтобы он выключился, необходимо, чтобы на одном из датчиков (включен режим "ИЛИ" для всех датчиков на выключение) температура достигла нижнего порога. При температуре д1(66), д2(57), д3(20), д4(73) охладитель выключится. Если возникнет конфликт, часть датчиков будет включать охладитель, часть выключать, то охладитель останется включенным, так как включение имеет приоритет перед выключением. Например при температуре д1(66), д2(57), д3(20), д4(80) охладитель выключен не будет до тех пор пока температура на датчике д4 не опуститься ниже верхнего порога.

Коды ошибок, которые может выдавать термометр:
Err 1 - Не подключено ни одного датчика, термометр постоянно пытается найти подключенные датчики, как только находит, термометр переходит в режим отображения температуры. После того, как термометр перешёл в режим отображения температуры, поиск датчиков больше не производится, чтобы найти вновь подключенные датчики, надо выключить затем снова включить питание термометра.
Err 2 - Сбой оперативной памяти микроконтроллера одновременно со сбоем чтения EEPROM. Может случиться при плохом питании микроконтроллера.
Err 3 - Подключено больше чем 4 датчика.
Err 4 - Ошибка записи EEPROM.
Err 6 - Ошибка датчика. Т.е. Датчик при включении был найден, а затем при работе не отвечает. Причин может быть несколько, плохая проводка, длинный кабель, помехи, плохое питание.
Err 8 - Рестарт сторожевого таймера. Глюк программы, У меня такого не случалось.
Err 5, 7, 9 - Случаться тоже не должны, объяснить сложно, что они значат, если вдруг случаться, пишите, будем разбираться.

Конструкция

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

Разработанная печатная плата рассчитана на установку такого телефонного четырёх контактного разъёма, обратите внимание, что существуют разъёмы у которых 6 мест под контакты, а установлено только четыре. Так вот они к данной плате не подойдут, они шире. Плата односторонняя, без перемычек, разрабатывалась под корпус ProsKit 203-125A.
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.

Термометр сверху Термометр сбоку


Схема и печатная плата датчика:

Схема датчика Плата датчика

Если кабель длинный, на крайнем датчике необходимо установить дополнительный резистор (терминатор) между питанием и выводом данных, 4.7кОм (при длине шлейфа более 15 метров и нестабильной работе можно попробовать уменьшить сопротивление этого резистора).
Корпус для датчика фирмы GAINTA G401325B, крышка G401325L.
Датчик


Силовое устройство

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

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

Файлы

Во вложении файлы прошивки для микроконтроллера PIC16F876 и PIC16F876A.
🎁Termometr_hex.zip  18.26 Kb ⇣ 90

Биты конфигурации включены в HEX файл, на всякий случай, дублирую:
#FUSES WDT
#FUSES HS
#FUSES PUT
#FUSES NOPROTECT
#FUSES BROWNOUT
#FUSES NOLVP
#FUSES NOCPD
#FUSES NOWRT
#FUSES NODEBUG


Файлы Eagle схем и печатных плат:
🎁Termometr_Eagle.zip  167.34 Kb ⇣ 99

Камрад, рассмотри датагорские рекомендации

🌼 Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.




 

Читательское голосование

Нравится

Статью одобрили 18 читателей.

Для участия в голосовании зарегистрируйтесь и войдите на сайт с вашими логином и паролем.
 

Поделись с друзьями!

 

 

Связанные материалы

 

Схема на Датагоре. Новая статья Работа с датчиком DHT11. Строим термометр-гигрометр на ATMEGA8... Привет любителям электроники! Сегодня я решил познакомиться с датчиком влажности DHT11, который...
Схема на Датагоре. Новая статья USB адаптер для чтения и программирования цифровых термостатов MAXIM/DALLAS DS1821... В статье описано, как за час сделать простой USB-адаптер для чтения/записи цифровых термометров...
Схема на Датагоре. Новая статья Простой цифровой термометр на ATmega8535 + DS18B20... Доброго времени суток! Представляю простой, цифровой термометр на индикаторе ИЖЦ21-4/7,...
Схема на Датагоре. Новая статья Термостат для отопления дачи инфракрасными обогревателями Иколайн. Дежурный режим, часы. DS1307, DS1631, Atmega8, энкодер... Как говорит мой коллега, что бы Гаврилов ни делал — все равно термометр получается… Новая статья об...
Схема на Датагоре. Новая статья Немного про шину 1-Wire и цифровой термометр DS18b20... Здравствуйте, друзья. Хочу предложить вашему вниманию несколько простых функций для работы с шиной...
Схема на Датагоре. Новая статья Регулятор громкости на TDA7313 и PIC 16F876A.... Для новой конструкции мне понадобился блок управления громкостью и тембрами. Я выбрал...
Схема на Датагоре. Новая статья Датчик угла поворота. Сельсин-датчик и приёмник на микроконтроллере.... Схема сельсин-датчика и программа микроконтроллера практически полностью взяты из журнала Радио №4...
Схема на Датагоре. Новая статья Таймер от 1 секунды до 100 часов на микроконтроллере ATMEL AT89C2051... Картинка от Novelty Kitchen Timers В радиолюбительской практике частенько необходим таймер:...
Схема на Датагоре. Новая статья PIC16F876: таймер вытяжного вентилятора в ванной и электронный термометр... Я недавно делал капитальный ремонт ванной комнаты и возник вопрос, как управлять вентилятором...
Схема на Датагоре. Новая статья Радиолюбительские конструкции на PIC микроконтроллерах, Кн.2, Н.И. Заец... Радиолюбительские конструкции на PIC микроконтроллерах, Кн.2, Солон-Пресс, 2005г. Автор: Н.И.Заец...
Схема на Датагоре. Новая статья Автомат управления бойлером Ariston. Экономим электроэнергию и ресурс котла... Задумался я над вопросом, отключать или не отключать бойлер периодически? Одно из множества...
Схема на Датагоре. Новая статья Счётчик витков для намоточного станка на ATtiny13... Случилось так, что припекло мне трансформатор мотать, всё бы хорошо, да станка только не хватает -...
 

Комментарии, вопросы, ответы, дополнения, отзывы

 

<
Читатель Датагора

tarip

<
Читатель Датагора

dedmazay

<
Читатель Датагора

honder

<
Читатель Датагора

dedmazay

<
Читатель Датагора

Datagor

<
Читатель Датагора

logvoleg

<
Читатель Датагора

dedmazay

<
Читатель Датагора

P32L

Добавить комментарий, вопрос, отзыв 💬

Камрады, будьте дружелюбны, соблюдайте правила!

  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
 
 
В начало | Зарегистрироваться | Заказать наши киты почтой