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

Универсальный двухканальный термометр на AVR

Перед вами проект двухканального термометра. Он может измерять температуру в диапазоне от -50.0 до +99.9 градусов. Устройство было разработано для измерения температуры в доме и на улице, но ему также можно найти и множество других применений. При небольшом изменении программы устройство также можно использовать в качестве термостата. Термометр построен на популярном и очень широко распространенном датчике DS18B20 и микроконтроллере ATtiny2313, что значительно упростило разработку и позволило значительно уменьшить размеры. Термометр удалось сжать так, что почти все элементы расположены под трехразрядным дисплеем 15 мм. Практически все элементы SMD. Конечно, можно было бы применить TH компоненты, но в эпоху миниатюризации лучше сделать еще один шаг вперед по созданию системы с наименьшими размерами. Термометр может измерять температуру в двух местах, с помощью двух датчиков, подключенных на независимых шинах. Изменение отображаемой температуры осуществляется с помощью двух кнопок.

Проект был опубликован в журнале Электроника для всех, 08/2011 и выпускается в виде комплекта AVT2985

Принцип работы

Сердцем устройства является микроконтроллер U1 (ATTINY2313), который тактируется от внутреннего генератора 8MHz , без делителя частоты. Отсутствие кварца позволило уменьшить размеры устройства, а также освободило две ножки МК, к одной из них сейчас подключена кнопка S2. Микроконтроллер получает показания температуры с двух датчиков, преобразовывает данные в форму, пригодную для отображения на дисплее и обрабатывает нажатия кнопок S1 и S2. Конденсатор С1 (100nF), расположенный рядом с микроконтроллером — фильтрующий. Конденсаторы С2 (10 мкФ) и С3 (10 мкФ) необходимы для правильной работы U3 (78L05).Простота схемы обусловлена используемым датчиком температуры. Это 12-битный цифровой термометр, который может работать в диапазоне от -55 до +125 градусов. Время обработки (преобразования) температуры длится не дольше, чем 750 мс. Связь с микроконтроллером осуществляется по интерфейсу 1-Wire. В качестве индикатора температуры используется трехзначный светодиодный дисплей (AT5636BMR-В) с внутренними соединениями сегментов, адаптированный для динамической индикации. Резисторы R4-R11 ограничивают ток на светодиодном дисплее до 10-12 мА (на сегмент). Тем не менее, средний ток меньше из-за использования динамической индикации. Управление анодами осуществляется тремя популярными транзисторами Т1 — Т3 (BC857). Токи базы ограничены резисторами R1-R3 (3,3 кОм). Важным компонентом является разъем GP1, через который подключаются датчики и управляющий выход (в случае термостата).

Изготовление

Устройство изготовлено на основе печатной платы. Плата односторонняя, и почти все элементы SMD. Исключением является дисплей, кнопки управления и разъемы. Сборка не сложная, но требует большого мастерства при пайке SMD. Недостатком платы является отсутствие разъема для программирования, так что если придется вносить изменения в программу вам необходимо будет припаять провода программатора к плате напрямую. Но можно установить на плате миниатюрный разъем.

Распиновка разъема

Выводы 1 и 2 этого разъема это питание и заземление. Вывод 3 предназначен для подключения индикации отрицательных температур (Катодом на разъем, анодом на +5В через резистор 200 — 300 Ом). Датчики подключаются через трехжильный провод. Первый датчик подключается к выводу 5, а второй датчик к выводу 6. Устройство питается от 7-12В через стабилизатор 78L05.

Читайте также:  Замок крюк для откатных ворот своими руками

Программа написана в известной среде программирования BASCOM AVR. Она занимает около 70% памяти микроконтроллера и может быть успешно скомпилирована в демо версии BASCOM’a. Программа не сложная. Далее представлены некоторые элементы кода

Обработчик прерывания Timer0 :

Процедура управления дисплеем:

Процедура измерения температуры:

Fusebits микроконтроллера должны быть установлены для работы с внутренним RC-генератором с частотой 8 МГц

Источник

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

Этот прибор, построенный на микроконтроллере ATmega8, может быть сконфигурирован как термометр или как термостат независимо для каждого из двух каналов. Имеется возможность задавать температуру выключения нагревателя в пределах от +5 до +95 °С, разность значений температуры его выключения и включения от 0 до 4 °С и компенсировать систематическую погрешность датчиков температуры от -2 до +2 °С. Схема термометра-термостата показана на рисунке.

Два датчика DS18B20 подключают к разъемам Х1 и Х2, причем номера гнезд соответствуют номерам их выводов. Использована трехпроводная схема подключения. Уже много раз я убеждался в том, что только так можно добиться максимальной длины соединительных проводов, и везде, где это возможно, стараюсь избегать паразитного питания датчиков. При медных проводах сечением 0,5 мм 2 устойчивую связь удавалось обеспечить на расстоянии до 40 м. Показания датчиков выводятся на HG1 — трехразрядный светодиодный индикатор с общими анодами светодиодов каждого разряда. Двухцветные светодиоды HL1 и HL2 отображают состояние каждого из каналов. Сигналы управления нагревателями в режиме термостата формируются на выходах микроконтроллера РВ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. Разряды конфигурации микроконтроллера программируют в соответствии с таблицей.

Разряд Знач. Разряд Знач.
BODEN 0 SKCEL0 0
BODLEVEL 1 SKCEL1 0
BOOTRST 1 SKCEL2 1
BOOTSZ0 1 SKCEL3 0
BOOTSZ1 1 SPIEN 0
CKOPT 1 SUT0 0
EESAVE 1 SUT1 1
RSTDISBL 1 WDTON 0

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

г. Красноармейск Донецкой обл., Украина
Радио №11, 2009г.

Источник

Сдвоенный цифровой термометр на ATmega8 и DS18B20

Предлагаю свой вариант цифрового термометра с двумя датчиками температуры.
Устройство выполнено на микроконтроллере ATmega8-16PU и двух датчиков с интерфейсом 1-wire, фирмы «Dallas Semiconductor» типа DS18B20 или DS1822. Устройство используется в домашних целях, один из его датчиков устанавливается на улице, другой в помещении. Индикация значений температуры осуществляется двумя сдвоенными светодиодными 7-сегментными индикаторами с общим катодом. (например, DC56-11GWA, или подобные), расположенными друг над другом.

Знак «минус» индицируется отдельным светодиодом.
Чтобы не было заморочек со считыванием 64 разрядного идентификационного кода датчика и определения, какой из них уличный, а какой комнатный, датчики подключены к разным ножкам МК, а не висят на одной шине 1-wire. Подключение уличного датчика удобно выполнить с помощью разъема, например типа stereo-джек 3,5мм.

Читайте также:  Замена втулки шатуна змз 406 своими руками

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

Как показала практика, датчикам типа DS1822 свойственно завышать температуру на 2-3 градуса.
Для компенсации этого в EEPROM контроллера можно записать поправочные коэффициенты, для каждого из датчиков. По адресу 0x00010 записывается коэффициент для датчика находящегося в помещении, а по адресу 0x00011 находящегося на улице. Коэффициент высчитывается по следующему алгоритму: за нулевую поправку берется цифра 0x80, и если Вам необходимо внести поправку, в минус 2 градуса, то от 0x80 нужно будет отнять 2 и записать полученный результат в соответствующую ячейку EEPROM (Например: 0x80 – 2=0x7E).

Для поправки в сторону увеличения температуры необходимо будет к числу 0x80 прибавить необходимый коэффициент, см. рис. Если в соответствующих ячейках EEPROM код 0xFF или 0x80, поправочный коэффициент не учитывается.

Микроконтроллер работает от внутреннего RC-генератора, на частоте 8 МГц, кварцевый резонатор не требуется. Для работы микроконтроллера в таком режиме, нужно запрограммировать необходимые Fuse-биты, в соответствии с ниже следующим рисунком.

Для питания устройства используется малогабаритный импульсный, стабилизированный источник питания с напряжением 5В и током 250мА.

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

Скачать прошивку, проект в CodeVisionAVR, Proteus и в P-CAD вы можете ниже

Источник

Два термометра на PIC16F628A и DS18B20

Информацию о температуре в комнате и на улице (или в салоне автомобиля и за бортом) можно получить с помощью одного микроконтроллера, двух датчиков и одного 4-х цифрового светодиодного индикатора. Пределы измерения от — 55.0 до +125.0 градусов Цельсия с точностью отображения 0.1. Нужно только помнить, что конструкторы обещают погрешность датчиков не более ± 0.5 градуса в диапазоне от -10 до +85.

Процесс индикации выглядит следующим образом: 5 секунд показывается температура первого датчика — 3 секунды все потушено – 5 секунд температура второго датчика – 3 секунды перерыв – и опять сначала. На левом крайнем индикаторе горит один сегмент – первый датчик, два сегмента – второй датчик. В случае обрыва датчика или его отсутствия будет светиться надпись «OFF».

Номер датчика не будет светиться в двух случаях: если температура отрицательная (будет светиться минус) и если температура выше 100 градусов (будет светиться 1хх.х).

На фотографиях датчиков не видно, они временно припаяны со стороны проводников.

Датчики управляются портами RA4 и RA6 по последовательному интерфейсу 1- Wire (Q1 и Q2). Датчики подсоединяются к плате с помощью трехжильного неэкранированного провода диаметром 0.35 мм.
Резистор R1 и R15 обязательно 4,7 кОм. R4 в пределах 4,7-10к; R7-R14 – 270-360 Ом; R2,R3,R5,R6 – 1- 3к.
Транзисторы любые n-p-n.

Питание 4,5 – 5 вольт, ток 28.04.2014. Заменена прошивка TER5 rar. Предыдущая некорректно работала в минусовых температурах. Пауз нет, индикация каждого термометра около 30 сек.

Источник

Оцените статью