РадиоКот :: Домашний термометр
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Бытовая техника >

Теги статьи: Добавить тег

Домашний термометр

Автор: Guaho_150, guaho150@gmail.com
Опубликовано 21.09.2016
Создано при помощи КотоРед.
Участник Конкурса "Поздравь Кота по-человечески 2016!"

Привет всем, друзья!

К дню рождения нашего любимого РадиоКота предлагаю вашему вниманию описание простого, но весьма полезного в хозяйстве прибора - двухканального домашнего термометра.

Особенности данной конструкции (в отличие от представленных в Инете):

  1. Одновременно показывается температура в помещении и на улице;
  2. Имеется функция "ночной режим" - в темноте яркость свечения индикаторов автоматически снижается, чтобы не "бить по глазам" и не мешать спать (удобно в случае установки прибора в спальном помещении).

 

Технические характеристики прибора:

  • Тип термодатчиков: цифровой, DS18B20, подключение по двухпроводному кабелю.
  • Диапазон измерения температуры: на улице: -55...+99 гр.С., в помещении: -9...+99 гр.С.
  • Точность измерения: ±0,5 гр.С. в диапазоне -10...+85 гр.С.
  • Дискретность отображения: 1 гр.С. (иначе говоря, десятые доли градуса не отображаются, за ненадобностью).
  • Время обновления показаний: 2 с.
  • Тип подключения датчиков: каждый из двух датчиков - на своей 2-х-проводной линии.
  • Определение неисправности датчиков/линии:  ДА.
  • Управление яркостью индикации по уровню внешнего освещения: ДА.
  • Число уровней яркости: 2 ("день" и "ночь").
  • Тип индикаторов: Светодиодные 7-сегментные, общий анод.
  • Тип индикации: Динамический.
  • Напряжение питания: 5 В.
  • Потребляемый ток: 100 мА.

 

Примечания

  1. В конструкции используются индикаторы разных цветов свечения: уличная температура - красный, домашняя - зелёный.
  2. Индикация - без ведущих нулей: к примеру, температура в 7 гр.С. будет отображаться в виде "7", а не "07".
  3. Отрицательная уличная температура в диапазоне -1...-9 гр.С. отображается на индикаторе со знаком "-" в старшем разряде; при более низких температурах зажигается дополнительный мнемонический светодиод (символ "минуса"), а на индикаторе отображаются цифры отрицательной температуры.
  4. В случае, если какой-либо датчик неисправен или отсутствует, либо линия оборвана/замкнута, на соответствующем индикаторе отображается "--".
  5. Можно было бы сделать (аппаратная часть позволяет) вариант прошивки с плавной регулировкой яркости индикаторов (с числом уровней порядка 16 - 32), однако это вызвало бы сложность в настройке и гораздо худшую повторяемость конструкции. Практика использования прибора показала, что вариант с двумя уровнями - "ярко" и "слабо" - самый оптимальный.

 

Схема прибора электрическая принципиальная

 

 

Главным элементом, обеспечивающим весь функционал устройства, является микроконтроллер PIC16F690. В его порт С выводится образ символа для динамической индикации, а порт В используется для подсветки разрядов. Линии порта А используются для обмена данными с термодатчиками, а также для АЦП напряжения с "фоторезисторного" делителя PH1-R5-R6. Конденсатор С7, включенный параллельно светодиоду D1, предотвращает паразитную засветку последнего.

 

Конструкция прибора и используемые детали

 Прибор собран на двухсторонней печатной плате. Число межслойных переходов - 12; число перемычек (типоразмера 1206) - 1 (перемычка на схеме не указана). Фото платы (извините за качество, сделано плохим аппаратом):

 

 

В конструкции использован микроконтроллер PIC16F690 в SMD корпусе SO20-300. На плате предусмотрено место под кварцевый резонатор любого типа - как для монтажа в отверстия (устанавливается на верхней стороне), так и в SMD исполнении (устанавливается на нижней стороне).

Светодиодные 7-сегментные индикаторы - с общим анодом, под статическую индикацию; маркировка использованных в авторском варианте - RL-D5623 (красный) и TOD-5263BG-N (зелёный). Транзисторы VT1...VT4 - полевые типа IRLML9301. Их можно заменить на любые подходящие по цоколёвке Р-канальные MOSFET. Также они легко могут быть заменены на биполярные транзисторы P-N-P структуры - BC856 (цоколёвка полностью совпадает: эмиттер-исток, база-затвор, колектор-сток) и им подобные; яркость свечения индикаторов при этом получается такая же, как и с полевыми транзисторами. В случае такой замены величины R16...R19 должны быть увеличены до 1 кОм. Конденсатор C5 - танталовый. Фоторезистор может быть любой имеющийся в наличии; вместо него можно включить обратно-смещённый фотодиод. Все керамические конденсаторы - типоразмера 1206, за исключением С2, С3 (0805). Резисторы - типоразмера 1206, за исключением R9, R14, R15 (0805).

В случаях, когда функция управления яркостью не нужна, её можно совсем отключить, исключив из схемы светочувствительный элемент (фоторезистор или фотодиод) и установив вместо него перемычку, либо сделать отключаемой, подключив параллельно светочувствительному элементу кнопку с фиксацией.

Комнатный датчик вынесен за переделы корпуса прибора, крепится прозрачным скотчем на кабеле питания на расстоянии 10...15 см от корпуса (другой вариант - крепление этого датчика в отдельной коробке на стене). Так сделано потому, что датчик, будучи размещён в корпусе, реагирует на тепловое излучение светодиодных индикаторов (даже если проложить теплоизоляцию) и ощутимо завышает температуру в этом случае. Кабель (неэкранированный) от комнатного датчика запаивается на плату. Также методом пайки подключается и кабель питания.

Кабель уличного датчика - неэкранированный; его концы заводятся на винтовой клеммник, расположенный на плате термометра (так сделано для удобства инсталляции этого датчика). Сам уличный датчик желательно разместить в коробке, защищающей его от прямого попадания капель дождя. В конструкции коробки необходимо предусмотреть отверстия/щели для качественной естественной вентиляции. Коробку желательно разместить так, чтобы исключить прямое попадание солнечных лучей, и подальше от поверхностей, сильно нагреваемых солнечным светом.

Размер платы подобран под пластиковый корпус под заливку компаундом G1005025B (его внутренние размеры примерно 9,5 х 4,5 х 2,2 см). Такие корпуса привлекательны своей дешевизной. Переднюю панель можно выполнить либо из прозрачного пластика (закрасив его так, чтобы оставались прозрачные окошки под индикаторы), либо методом лазерной гравировки/резки, если такая возможность (такой вариант представлен выше на фото внешенго вида прибора).

 

Особенности программирования контроллера.

Для подключения программатора на плате установлена штыревая планка U3. В данной схеме к двум линиям, использующимся при внутрисхемном программировании, подключены термодатчики. В процессе программирования они могут создавать конфликт на шине, поэтому программировать микроконтроллер нужно при отключенных датчиках. Также, для обеспечения монопольного доступа программатора к контроллеру по линии питания, джампер с контактов U2 перед программированием должен быть снят, а после программирования и отключения программатора - одет, т.к. через этот джампер на микроконтроллер поступает "+" питания.

 

Настройка.

Она сводится к установке движка подстроечного резистора R6 в положение, при котором обеспечивается нужный пользователю порог переключения яркости: в темноте яркость должна быть низкой, а при освещении, которое пользователь считает соответствующим режиму бодрствования, - высокой. Переключение яркости происходит скачкообразно и с некоторой (примерно 1...2 сек) задержкой.

 

Программная реализация.

Программа для контроллера написана на Ассемблере, её объём - около 3/4 килобайта.

Смена разрядов при динамической индикации выполняется в прерываниях от 0-го таймера с частотой 244 Гц, т.е. обновление всех 4-х разрядов происходит с частотой 61 Гц; время между сменой разрядов - примерно 4 мс. Для управления яркостью индикаторов служит другой таймер, инициализирующийся в прерывании от 0-го таймера и по истечении времени около 700 мкс гасящий индикацию, если уровень внешнего освещения слишком мал. Ещё один таймер используется для отсчёта времени при формировании импульса сброса в процедурах измерения температуры. Для отсчёта времени мощной подтяжки 1-проводной шины на время измерения температуры используется счётчик, модифицируемый в прерываниях от 0-го таймера.

Измерение температуры и индикация (запись результата в регистры образов символов) выполняется в основном цикле программы. Подпрограмма измерения - универсальная (одна на два термодатчика); в качестве входной величины ей подаётся битовая маска, указывающая, на какой линии находится термодатчик, с которым в данный момент нужно работать. Процедура измерения - распределённая во времени, выполняющаяся в 13 этапов (для данной задачи так можно было не делать, это вообще заготовка для других проектов; такой подход позволяет минимизировать время, которое забирает за один раз процесс измерения температуры, и таким образом другим процессам достаётся больше процессорного времени). Когда все этапы пройдены, процедура измерения устанавливает флаг готовности результата. Обмен данными с термометром синхронизируется с прерываниями: обработчик прерывания устанавливает флаг, который сообщает процедуре измерения температуры, что недавно завершилось прерывание, и можно начинать приём/передачу данных. За один раз передаётся/принимается 1 байт данных; это сделано для минимизации времени, уходящего на процесс обмена, с целью получить возможность управления яркостью индикаторов (процесс передачи данных и прерывания от "гасящего" таймера не должны накладываться друг на друга во времени).

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

АЦП напряжения с "фоторезисторного" делителя производится тоже в основном цикле программы. Для облегчения настройки этой цепи порог переключения выбран равным половине напряжения питания. С целью уменьшения вероятности "дрожания" яркости на переходных областях между "днём" и "ночью" используется программное усреднение результатов АЦП.

 

Файлы проекта.

В прилагаемых файлах - все необходимые для повторения устройства файлы: принципиальная схема, рисунки печатной платы, схема размещения деталей, прошивка для контроллера. Исходный код здесь не выкладывается (он хорошо откомментирован, но нуждается в тщательном "причёсывании", а времени на это нет). Кому очень нужно - пишите на электронную почту, поделюсь без проблем.


Файлы:
Прошивка
Схема и плата


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

29 15 4
2 0 0