Двухканальный термометр - термостат выполнен на микроконтроллере ATmega8 и цифровых датчиках температуры DS18B20. Два датчика DS18B20 подключают к разъемам Х1 и Х2, причем номера гнезд соответствуют номерам их выводов. Использована трехпроводная схема подключения. Уже много раз я убеждался в том, что только так можно добиться максимальной длины соединительных проводов, и везде, где это возможно, стараюсь избегать паразитного питания датчиков. При медных проводах сечением 0,5 мм2 устойчивую связь удавалось обеспечить на расстоянии до 40 м.

Показания датчиков выводятся на HG1 — трехразрядный светодиодный индикатор с общими анодами светодиодов каждого разряда. Двухцветные светодиоды HL1 и HL2 отображают состояние каждого из каналов.

Двухканальный термометр-термостат на ATmega8 - схема

Сигналы управления нагревателями в режиме термостата формируются на выходах микроконтроллера РВ6 (первый канал) и РВ7 (второй канал). Управление двухпозиционное: нагреватель включен или выключен. Для гальванической развязки прибора от исполнительных устройств установлены оптроны U1 и U2. В моем варианте к разъемам Х4 и Х5 подключены цепи управления двух симисторов ВТ139, коммутирующих нагревательные элементы. При необходимости оптроны можно заменить транзисторами, включив в их коллекторные цепи обмотки электромагнитных реле.

В течение 4...5 с после подачи на прибор питания происходит инициализация датчиков и начальный сбор их показаний. В это время поочередно мигают все элементы индикатора HG1. Далее устанавливается режим измерения и отображения температуры. В этом режиме нагреватели выключены.

Показания датчиков на индикаторе чередуются с периодом 5 с. Если температура измерена датчиком, подключенным к разъему Х1, светится светодиод HL1, а подключенным к разъему Х2 — HL2. При этом, если соответствующий канал сконфигурирован как термометр, цвет свечения желтый, если как термостат, то при поданной команде на включение нагревателя он красный, а при ее отсутствии — зеленый.

После нажатия на кнопку SB2 отображаются показания только первого датчика, а после нажатия на SB3 -только второго. Если какой-либо датчик не подключен, в его цепи произошел обрыв, замыкание или температура вышла за пределы 0,1...99,9 °С, на индикатор вместо значения температуры выводится надпись "Err", а соответствующий нагреватель выключается.

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

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

В этом режиме кнопками SB2 и SB3 выбирают необходимый параметр:

ut1 (ut2) — установка температуры выключения нагревателя в канале 1 (2);
dt1 (dt2) — установка разности температуры(гистерезиса) выключения и включения нагревателя в канале 1 (2).

Например, при установке температуры выключения водонагревателя 35°С и разности 1,5 °С нагревание произойдет до температуры 35 °С, по ее достижении нагреватель будет выключен и вновь включен, когда температура понизится до 33,5 °С. Оптимальным выбором разности достигают компромисса между точностью поддержания температуры и частотой включений нагревателя.

со1 (со2) — корректировка показаний датчика 1 (2). Введенное значение суммируется (с учетом знака) с этими показаниями прежде, чем они поступят на дальнейшую обработку. Это позволяет скомпенсировать возможную погрешность датчика.

В случае повторного кратковременного нажатия на кнопку SB1 на индикатор выводится хранящееся в памяти микроконтроллера значение выбранного параметра, после чего кнопками SB2 и SB3 (соответственно уменьшение и увеличение на 0,1 °С) задают его новое значение. При длительном удержании этих кнопок изменение параметра начинает происходить быстрее (приблизительно 10 раз в секунду). Через 5с после последнего нажатия на любую кнопку установленное значение запоминается в энергонезависимой памяти микроконтроллера, а на индикатор выводится текущая температура.

Коды программы из файла Termo2ch.hex записывают в программную (FLASH) память микроконтроллера, а информацию из файла Termo2ch.epp — в его EEPROM. Разряды конфигурации микроконтроллера программируют в соответствии с таблицей:

Установка fuse-битов микроконтроллера

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

Поскольку интерфейс 1-Wire, используемый датчиками, критичен к тактовой частоте микроконтроллера, необходима точная настройка его внутреннего тактового генератора на 8 МГц. Для этого следует, подключив используемый экземпляр микроконтроллера к программатору, прочитать калибровочную константу, находящуюся в старшем байте слова, расположенного по адресу 0x0003 сигнатуры микроконтроллера. После загрузки в программатор файла Termo2ch.epp, но перед программированием, эту константу записывают в нулевую ячейку буфера EEPROM программатора.

Микроконтроллер АТmega8 может быть заменен на ATmega8L. При замене индикатора CPD-05211SR2/A аналогичным другого типа придется, возможно, подобрать резисторы R8—R15, чтобы обеспечить приемлемую яркость.

Автор: Котов И.


Архив для статьи "Двухканальный термометр-термостат на Atmega8"
Описание: Исходный код программы(Си), файл прошивки и EEPROM микроконтроллера
Размер файла: 15.07 KB Количество загрузок: 5 023 Скачать