Печать

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

Опубликовано . Опубликовано в Устройства на AVR

Рейтинг:   / 11
ПлохоОтлично 

Двухканальный термометр - термостат выполнен на микроконтроллере 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, чтобы обеспечить приемлемую яркость.

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

Файлы:
Исходный код программы(Си), файл прошивки и EEPROM микроконтроллера
Дата 10.09.2012 Размер файла 15.07 KB Закачек 3386

Комментарии  

0 #1 Женька 19.09.2012 11:00
Является ли эта статья первоисточником ? если нет киньте ссылочкой пожалуйста. Есть несколько вопросов к автору.
Сообщить модератору
0 #2 AntonChip 19.09.2012 19:09
Цитирую Женька:
Является ли эта статья первоисточником? если нет киньте ссылочкой пожалуйста. Есть несколько вопросов к автору.

Статья опубликована в журнале Радио 2009-11
Сообщить модератору
0 #3 androlega 23.02.2013 01:14
Кто нибудь собрал этот термостат,почем у то у меня не получается.
Сообщить модератору
+1 #4 AntonChip 24.02.2013 00:15
Цитирую androlega:
Кто нибудь собрал этот термостат,почему то у меня не получается.

Что именно не работает?
Сообщить модератору
0 #5 androlega 28.02.2013 21:06
После долгих просмотров ошибок,всё заработало,спас ибо.
Сообщить модератору
0 #6 СергейЧ 13.06.2013 20:54
А у кого есть печатная плата даного девайса? Скиньте пожалуйста на мыло
И каким програматором шили контроллер? Заранее благодарен!!!
Сообщить модератору
0 #7 tyz252 18.09.2013 12:58
Скиньте пожалуйста печатную плату, если не сложно
Сообщить модератору
0 #8 chirics 04.12.2013 12:24
Если есть возможность, поделитесь платой :-)
Сообщить модератору
0 #9 СергейЧ 01.02.2014 01:43
Данный терморегулятор 100% рабочий, вот только беда, работает 2-3 дня, иногда 5 дней и происходит какой-то сбой. Начинает показывать какую-то чепуху по показаниях температуры и вместо констант занесенных в энергонезависим ую память. Снятие питания ничего не дает, только после прошивки МК начинает работать, но недолго. Может это связано с калибровочной константой, которую я не ввел (по незнанию как это сделать)? Может кто подскажет более детально, для новичка? Откуда и куда что писать? Заранее благодарен, Сергей.
Сообщить модератору
0 #10 Виталик 26.03.2014 01:57
можно пожалуйста и мне печатную плату?
у всех ли такая проблема как у Сергейча?
Сообщить модератору
0 #11 Саша 29.07.2014 12:55
Пожалуйста можно печатную плату, заранее спасибо!!!
Сообщить модератору
0 #12 Алексий 16.09.2014 16:08
Есть ли у кого нибудь печатная плата,пожалуйст а!Заранее спасибо.
Сообщить модератору
0 #13 iron 14.11.2014 18:23
для источника с помощью BASCOM AVR Gimana......? PB6 PB7 и используется для хранения, его кристалл?
Сообщить модератору
0 #14 iron 14.11.2014 18:24
tolong kirimi file bas nya
Сообщить модератору
-1 #15 vladi 04.01.2015 12:18
прочитать калибровочную константу, находящуюся в старшем байте слова, расположенного по адресу 0x0003 сигнатуры микроконтроллер а. После загрузки в программатор файла Termo2ch.epp, но перед программировани ем, эту константу записывают в нулевую ячейку буфера EEPROM программатора. ????? А по подробнее, не все гуру в этих делах есть много начинающих.
Сообщить модератору
0 #16 AntonChip 04.01.2015 13:08
Работаю с AVR Studio и STK500. Соединяемся с программатором. Открывается окошко загрузчика. Кликаем на вкладку Advanced. Считываем калибровочный байт для нужной частоты. Значение этого байта вставляем в нулевую ячейку файла EEPROM, пишем EEPROM в контроллер
Сообщить модератору
0 #17 m1tya52 19.02.2016 17:56
Как здесь выложить файл?
Сообщить модератору
0 #18 AntonChip 20.02.2016 07:47
Цитирую m1tya52:
Как здесь выложить файл?

Присылайте файл мне на почту , выложу
Сообщить модератору
0 #19 Игорек 01.05.2016 10:19
Схема реально рабочая, из журнала Радио, а глючит обычно с импульсными БП. С обычными без проблем.
Cделал 3 шт.
Сообщить модератору

Рекомендуем посмотреть