Версия 1.0 (Просто терморегулятор)

Цель этой разработки создание шаблонов для последующих версий проекта, написание функций работы с датчиками, кнопками и индикатором и т.д…

МИКРОКОНТРОЛЛЕР. «Мозгом» терморегулятора является микроконтроллер. Я выбрал заведомо «жирный» МК, так как проект будет развиваться. Для реальной схемы данной версии подойдет любой контроллер с объемом FLASH памяти 8Кб, например ATMega8 или ATMega88…

Для работы программы требуется большое количество таймеров. Они обеспечивают переключение разрядов дисплея, отсчет времени сканирования кнопок и гашения «дребезга» контактов, отсчет периодов измерения температуры и т.д. Для упрощения написания программы и для ускорения работы я использовал некое подобие RTOS. Для обслуживания переходов по меню с помощью кнопок использовал библиотеку «micro_menu».

ДАТЧИКИ ТЕМПЕРАТУРЫ. В качестве датчиков температуры используются цифровые датчики DS18B20. Один датчик выполняет функцию контроля температуры воздуха. Обычно этот датчик встраивается в корпус терморегулятора. Другой датчик выполняет, функцию предохранения от перегрева. При использовании совместно с системой водяного отопления его можно использовать как датчик температуры в трубе подачи, а при использовании совместно с системой «теплый пол», датчик устанавливается на уровне теплоносителя в пол. Любой из датчиков можно отключить при настройке терморегулятора.

Термодатчики DS18B20 работают по протоколу 1-wire. В проекте каждый датчик подключен к отдельному выводу микроконтроллера. Во первых, количество выводов МК позволяет это сделать, а во вторых, значительно упрощает программу, так как при обращении к датчикам не нужно использовать адресацию. В случае необходимости датчики легко заменяются.

При работе с данными датчика я не раз замечал что, некоторые образцы «врут», показывая неверную температуру. Причем «врут» они линейно, во всем диапазоне температур... Чтобы компенсировать неточность, в программу терморегулятора введены коэффициенты коррекции температуры для каждого датчика. Они хранятся в EEPROM и устанавливаются при сборке терморегулятора. При сбоях в работе датчиков (при ошибках обмена данными), зуммер подает четыре коротких звуковых сигнала и на дисплей выводится сообщение [Err1] или [Err2] соответственно.

РЕЛЕ. Данные от каждого датчика считывается с периодичностью 10 секунд. Если температура любого датчика превышает заданную для него температуру, программа микроконтроллера выключает реле управления. При падении температуры на 0,5°С ниже заданной, реле управления включается. Реле управления подключено к выводу микроконтроллера через транзисторный ключ.

ИНДИКАТОР. Для отображения температуры, состояния работы, пунктов меню используется семисегментный четырехразрядный индикатор… Во первых, на четырех разрядах легче отобразить пункты меню, а во вторых, именно четыре разряда понадобятся для реализации уже следующей версии проекта… Катоды индикатора подключены через транзисторные ключи.

Индикатор работает в динамическом режиме. Точка разделителя разрядов используется в устройстве как для разделения разрядов, при выводе температуры, так и для индикации состояния нагрева (при включении нагрева точка разделителя мигает). Яркость дисплея в режиме ожидания можно установить при настройке терморегулятора.

ЗУММЕР. Программа формирует различные звуковые сигналы в зависимости от состояния терморегулятора. Например, при нажатии на любую кнопку формируется короткий одиночный сигнал, при возникновении ошибки формируется четыре коротких сигнала. В терморегуляторе используется зуммер с встроенным генератором. Зуммер подключен к микроконтроллеру через транзисторный ключ.

КНОПКИ. Управляется терморегулятор двумя кнопками «+» и «-»… Для управления и переходов по меню используются комбинации длительного удержания и одновременного нажатия двух кнопок.

УПРАВЛЕНИЕ И ПРОГРАММИРОВАНИЕ.

Для установки какого либо параметра, необходимо нажать на кнопку «+» или «-». Для перехода по пунктам меню, необходимо нажать на короткое время обе кнопки. Для включения/выключения терморегулятора необходимо нажать обе кнопки и удерживать их в нажатом состоянии более 5 секунд.

Рассмотрим управление терморегулятором подробней.

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

Если перед выключением напряжения питания, терморегулятор был включен, при повторной подаче напряжения питания, зуммер подает два длинных звуковых сигнала, на дисплей выводится бегущая надпись [HELLO], после чего терморегулятор переходит в «ждущий режим».

ЖДУЩИЙ И ДЕЖУРНЫЙ РЕЖИМЫ. В программе предусмотрены режим «ожидания» и «дежурный» режим. В режиме «ожидания» на дисплей выводится состояние терморегулятора (текущая, заданная температура), при этом дисплей работает на полную яркость. Если в течении 20 секунд не будет нажата ни одна кнопка, терморегулятор перейдет в «дежурный» режим. При этом на дисплей выводится состояние терморегулятора, но дисплей работает с пониженной яркостью. Яркость дисплея в «дежурном» режиме и данные, выводимые на дисплей, устанавливаются при настройке терморегулятора.

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

УСТАНОВКА ЗАДАННОЙ ТЕМПЕРАТУРЫ ВОЗДУХА. Для установки заданной температуры воздуха нужно перейти в режим «ожидания» и нажать любую кнопку. При этом на дисплей выводится установленная ранее температура воздуха.

При последующих нажатиях на кнопки «+» или «-» заданная температура будет соответственно увеличиваться или уменьшаться на 0,5°С. Интервал в полградуса выбран для удобства и ускорения набора температуры. Сохранение заданной температуры происходит при отпускании кнопки. Температуру воздуха можно установить в пределах 10..30°С. Для возврата в режим «ожидания» нужно либо нажать обе кнопки одновременно, либо подождать 10 секунд, после чего переход будет осуществлен автоматически.

НАСТРОИКА ТЕРМОРЕГУЛЯТОРА. Для установки других параметров нужно, находясь в режиме «ожидания», нажать обе кнопки. При этом терморегулятор переходит в режим «установки». На дисплей выводится надпись [ SEt].

Переходы по пунктам меню «установки» происходят по нажатию обоих кнопок. Установка параметров происходит по нажатию кнопок «+» и «-».

ВЫБОР ИСПОЛЬЗУЕМЫХ ДАТЧИКОВ. Первый пункт меню «установки» позволяет выбрать используемые датчики температуры. При входе в подменю «выбор датчиков» на дисплей выводится надпись [SS12]. Далее, кнопками можно включить/выключить датчики, при этом на дисплей последовательно выводятся надписи [SS1 ]..[SS 2]..[SS12], обозначающие соответственно – включен только датчик 1, включен только датчик 2, включены оба датчика. Сохранение параметра происходит при отпускании кнопки.

УСТАНОВКА МАКСИМАЛЬНОЙ ТЕМПЕРАТУРЫ ПОЛА. Второй пункт меню позволяет установить максимальную температуру датчика 2. При входе в подменю «установки максимальной температуры датчика 2» на дисплей выводится установленная ранее температура.

При последующих нажатиях на кнопки «+» или «-» температура будет соответственно увеличиваться или уменьшаться на 0,5°С. Максимальную температуру датчика 2 можно установить в пределах 10..80°С. Сохранение температуры происходит при отпускании кнопки.

УСТАНОВКА ЯРКОСТИ ДИСПЛЕЯ. Третий пункт меню позволяет установить яркость дисплея в «дежурном» режиме. При входе в подменю «установка яркости дисплея» на дисплей выводится установленная ранее яркость.

Значение яркости можно установить в пределах 1..9 (соответственно минимальная и максимальная яркость). Сохранение параметра происходит при отпускании кнопки.

УСТАНОВКА ДАННЫХ ВЫВОДИМЫХ НА ДИСПЛЕЙ. Следующий пункт меню позволяет выбрать данные, которые выводятся на дисплей в режиме «ожидания». При входе в подменю «выбор данных дисплея» на дисплей выводится номер выводимых параметров.

В зависимости от выбранного параметра, в режиме «ожидания», на дисплей будут выводиться следующие данные:

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

  2. на дисплей выводится только температура пола;

  3. на дисплей последовательно выводится температура воздуха и температура пола;

  4. на дисплей последовательно выводится заданная температура воздуха и текущая температура воздуха;

  5. на дисплей последовательно выводится заданная температура пола и текущая температура пола;

  6. на дисплей последовательно выводится заданная температура воздуха, текущая температура воздуха, заданная температура пола и текущая температура пола.

Сохранение параметра происходит при отпускании кнопки. Время переключения отображаемых параметров в случаях выбора пунктов 3..6 составляет 10 секунд. Ниже показаны данные выводимые на дисплей в дежурных режимах.

Вывод установленной температуры воздуха (символ r с чертой вверху).

Вывод текущей температуры воздуха (символ r).

Вывод установленной максимальной температуры пола (символ L с чертой вверху).

Вывод текущей температуры пола (символ L).

При следующем нажатии на обе кнопки происходит переход в режим «ожидания». Переход так-же происходит автоматически, если в течении 10 секунд не будет нажата ни одна из кнопок.

ВЫКЛЮЧЕНИЕ ТЕРМОРЕГУЛЯТОРА. Для выключения терморегулятора нужно перейти в режим «ожидания», нажать и удерживать обе кнопки более 5 секунд. После чего, зуммер подает два длинных звуковых сигнала, на дисплей выводится бегущая надпись [Good bYE], и терморегулятор выключается.

ВКЛЮЧЕНИЕ ТЕРМОРЕГУЛЯТОРА. Для включения терморегулятора нужно нажать и удерживать обе кнопки более 5 секунд. После чего, зуммер подает два длинных звуковых сигнала, на дисплей выводится бегущая надпись [HELLO], после чего терморегулятор переходит в «активный дежурный режим».

Что еще можно сделать в данной версии:

При разработке проекта я составлял полную схему для максимально универсального терморегулятора, в ней выводы с обработкой внешних прерываний были заняты. Для текущей версии можно подключить кнопки к выводам с обработкой внешних прерываний INT0 и INT1. Это позволить отказаться от постоянного программного сканирования состояния кнопок…

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

Поскольку коэффициенты коррекции температуры устанавливаются при прошивке микроконтроллера, их невозможно изменить с помощью кнопок. Можно добавить еще один пункт меню «установка коэффициентов коррекции температуры датчиков».

Поскольку устанавливаемых параметров в данной версии не много, я не делал пункт меню «сброс параметров в заводские установки». В последующих версиях этот пункт будет присутствовать…