Дифференциальный термометр

Я уверен, что каждый может себе представить такую ситуацию — сначала мне нужно подойти к одному термометру и прочитать по нему, что температура в теплице 22,3°С. Затем переходим ко второму термометру и проверяем, достигла ли температура наружного воздуха 15,6°C. Можно ли открыть окна в теплице, чтобы проветрить ее, не опасаясь повредить растения? Какая именно разница температур?

Представленная схема наглядно показывает нам три значения температуры: первое TEMP1, второе TEMP2 и разницу между ними TEMP1 – TEMP2. Если TEMP1 > TEMP2, результат положительный, в противном случае — отрицательный. Может ли это упростить вашу жизнь? Да, если нам принципиально знать разницу значений между температурами, а не сами их значения — хотя эти значения тоже стоит иметь под рукой, отсюда и три дисплея.

Описание схемы

— основные параметры:измерение двух температур в диапазоне –55…+125°С с разрешением 0,1°С
— отображение разницы этих температур с разрешением 0,1°С (1°С для значений -100°С и ниже)
— сигнализация об ошибке связи с датчиками
— три дисплея, показывающие температуры: первую, вторую и разницу между ними (дифференциал)
— большие, читаемые семисегментные светодиодные дисплеи
— датчики температуры с цифровыми выходами, не требующие калибровки
—источник питания постоянного тока 9…35 В, ток потребления до 50 мА

Принципиальная схема термометра представлена на рис. 1. Важнейшим элементом является МК ATmega8.

Принципиальная схема дифференциального термометра
Рис. 1. Принципиальная схема дифференциального термометра

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

Результаты измерений и расчетов отображаются на четырехразрядных семисегментных светодиодных индикаторах. Текущее значение первой температуры (TEMP1) отображается на дисплее LED1, второй температуры (TEMP2) — на LED3, а LED2 отображает разницу между ними. Каждый из этих дисплеев имеет четыре цифры для отображения температуры с разрешением 0,1°C и возможный знак минус для температуры ниже 0°C — только на дисплее LED2. Разрешение показаний можно изменить на 1°C, если дифференциальная температура ниже –100°C. Общие аноды каждого из двенадцати разрядов подключены к PNP-транзисторам T1-T20, которые один за другим входят в состояние насыщения. Ток сегментов цифр и точек ограничен резисторами R13-R20 сопротивлением 330 Ом, что делает их яркость достаточно высокой, а потребление тока достаточно низким, чтобы их можно было питать непосредственно от выходов МК.
  Цифровые датчики температуры типа DS18B20 следует подключать к клеммам разъема J2 и J3. Напряжение, питающее эти датчики, фильтруется простыми RC-фильтрами, состоящими из резистора 100 Ом и конденсаторов 100 нФ и 100 мкФ, что повышает стабильность показаний. Для защиты входов МК от повреждений, вызванных помехами и электростатическими разрядами, возникающими в кабелях, были добавлены диоды D1…D4. Их задача — ограничить мгновенное значение напряжения на линии передачи данных диапазоном –0,7…+5,7 В. Резисторы R22 и R27 ограничивают ток этих диодов. В свою очередь резисторы R25 и R29 ограничивают ток встроенных в микроконтроллер защитных диодов, поскольку их прямое напряжение может быть несколько ниже, чем у используемого 1N4148.

Резисторы R24 и R28 необходимы для правильной работы шины 1-Wire.
 Хотя датчики имеют встроенные адреса, благодаря чему их можно подключить к одному кабелю и вызывать по уникальному адресу, такое решение менее удобно в реализации, чем два отдельных разъема, к которым подключается один датчик. Тогда изучение их адресов становится ненужным.
Напряжение питания схемы подается на клеммы разъема J4. Диод D5 защищает схему от переплюсовки входного питания.

Монтаж и наладка

Схема собрана на двухсторонней печатной плате размерами 140х60 мм.

Расположение элементов на печатной плате дифференциального термометра
Рис. 2 Расположение элементов на печатной плате дифференциального термометра

В Sprint Layout файлы верхней и нижней стороны размещены раздельно:

На этапе запуска необходимо запрограммировать Flash-память микроконтроллера, изменить ее FUSE BIT. Вот их новые значения:
Low Fuse = 0х24
High Fuse = 0xD9,
где активируется внутренний RC-генератор с частотой 8 МГц и Brown-Out Detector, который выведет МК в ноль, если напряжение его питания упадет ниже 4 В. Это существенно снижает риск возникновения проблем при запуске МК.

Правильно запрограммированная схема готова к работе после подключения двух цифровых датчиков температуры типа DS128B20 к клеммам разъема J2 и J3. Это может быть готовый модуль с проводами с двойной изоляцией.

Напряжение, питающее схему, может находиться в диапазоне 9…35 В. Как нижняя, так и верхняя границы этого диапазона обусловлены необходимостью обеспечения надлежащих условий работы стабилизатора типа 7805. Ток потребления схемы должен быть не более 50 мА и зависит от содержимого, отображаемого на дисплеях. По этой причине нет необходимости использовать радиатор для стабилизатора, пока напряжение питания не превышает примерно 15 В — для большего значения следует установить 7805 на небольшой радиатор.

В прототипе использовались три светодиодных дисплея с разными цветами подсветки: красный для первой температуры, синий для второй температуры и зеленый для дифференциальной температуры. В ходе тестирования выяснилось, что дисплей с зелеными светодиодами (LED-AF5643FG) светит гораздо меньше двух других, хотя он от того же производителя и имеет одинаковый сегментный ток. Ничто не мешает вам использовать дисплеи других цветов или даже спаять три одинаковых дисплея без каких-либо модификаций схемы.

После включения питания схема дважды пытается связаться с датчиками. В это время на дисплеях отображаются только прочерки. Если все работает правильно, термометр возвращается в нормальный режим работы примерно через четыре секунды. Иногда первое чтение температуры с DS18B20 после включения питания не приводит к обновлению его внутренних регистров, хотя ранее преобразование было принудительным. В такой ситуации температура, отображаемая схемой, будет равна 85°C, поскольку это содержимое регистров системы DS18B20 по умолчанию, что может ввести оператора в заблуждение. Эти черточки будут появляться до тех пор, пока не будут получены два правильных значения температуры.

После успешного завершения схема периодически измеряет температуры TEMP1 и TEMP2 и обновляет содержимое всех дисплеев. Это происходит примерно каждые 1,2 секунды. Дифференциальная температура отображается со знаком, т.е. она становится отрицательной, если TEMP2 превышает TEMP1. Из-за ограниченного количества цифр температуры -100°С и ниже отображаются с разрешением 1°С, в остальных случаях разрешение составляет 0,1°С. Точность измерений такая же, как и у используемых датчиков. Стоит отметить, что отображаемая дифференциальная температура будет иметь вдвое большую абсолютную погрешность, чем каждая из текущих температур (TEMP1 и TEMP2) по отдельности.

Из-за циклических прерываний (с частотой 1 кГц), задачей которых является обновление содержимого дисплея, иногда в этот обмен битами закрадываются ошибки, возникающие, например, из-за задержек. Поэтому реализован механизм проверки контрольной суммы (CRC), который отклоняет любой результат измерения, для которого вычисленная контрольная сумма не соответствует полученной. Об отдельных ошибках не сообщается – результат измерения просто обновится через секунду-две. Однако если подряд возникнет хотя бы четыре таких нарушения, то вместо температуры, показываемой одним из неисправных датчиков (LED1 или LED3), и в месте индикации перепада температуры (LED2) появится информация об ошибке – фото 1 . Восстановление корректной работы датчика температуры автоматически восстанавливает индикацию разности температур и той, которая ранее вышла из строя.

Внешний вид дисплея с сообщением об ошибке датчика
Фото 1. Внешний вид дисплея с сообщением об ошибке датчика

Лицевая и обратная сторона термометра

Перевод статьи из журнала Elektronika Praktyczna 06.2023

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
US1 МК AVR 8-бит ATmega8 1
US2 Линейный регулятор LM7805 1
T1-T12 Биполярный транзистор BC556 12
LED1 LED-дисплей AF5643FS 1
LED2 LED-дисплей AF5643FG 1
LED3 LED-дисплей AF5643FB 1
D5 Диод Шоттки 1N5819 1
D1-D4 Выпрямительный диод 1N4148 4
Резистор 2.2 кОм 15
Резистор 330 Ом 8
Резистор 100 Ом 6
Конденсатор 0.1 мкФ 6
Электролитический конденсатор 100 мкФ 16В 4
Электролитический конденсатор 22 мкФ 50В 1