ОС

Цифровой термометр на 300 градусов на микроконтроллере. Делаем простой термометр на микроконтроллере

Цифровой термометр на 300 градусов на микроконтроллере. Делаем простой термометр на микроконтроллере

В данной статье проведем обзор цифрового термометра , построенного на микроконтроллере Attiny2313 , снабженного выносным цифровым датчиком DS18B20 . Пределы измерения температуры составляет от -55 до +125 градусов Цельсия, шаг измерения температуры составляет 0,1 градус. Схема очень простая, содержит минимум деталей и ее запросто можно собрать своими руками.

Описание работы схемы термометра

Самодельный электронный термометр с выносным датчиком построен на всем известном . В роли температурного датчика выступает микросхема DS18B20 фирмы Dallas. В схеме термометра можно применить до 8 цифровых датчиков. Микроконтроллер взаимодействует с DS18B20 по протоколу 1Wire.

Вначале происходит поиск и инициализация всех подключенных датчиков, затем с них происходит считывание температуры с последующим выводом на трехразрядный семисегментный индикатор HL1. Индикатор может быть применен как с общим катодом (ОК), так и с общим анодом (ОА). Подобный индикатор так же был применен . Под каждый индикатор имеется своя прошивка. Измерять температуру можно как дома, так и на улице, для этого необходимо вынести DS18B20 за окно.

Для Attiny2313 необходимо выставить фьюзы следующим образом (для программы

Или его аналоги. Приборы имеют хорошую точность, помехоустойчивость, и, по сравнению с аналоговыми решениями, значительно упрощают схему. Пределы измеряемых подобными датчиками температур, как правило, ограничены диапазоном от -55 до 125 ºС. Что же делать, если нужно измерить температуру выше 125 °С? Очевидно, нужно использовать аналоговые датчики, температурный диапазон которых может достигать +300 °С. Надо отметить, что в этом случае точность измерений снизится. Но часто при измерении больших температур знать точное значение необязательно, и погрешность в несколько градусов будет приемлемой, а при отображении на аналоговой шкале, например, на линейке светодиодов, и вовсе незаметной.

Для нормальной работы устройства в температуре 0 … 250 °С, был выбран аналоговый датчик , рабочий диапазон которого составляет -40 + 300 °С. Его параметры идеально подходят под выбранный температурный диапазон. За обработку данных отвечает микроконтроллер (МК) . Конечно, годится и любой другой, но автору этот МК представляется одним их самых доступных и популярных. Фьюз биты оставлены заводские. При решении задачи критерии точного измерения были отложены на второй план. Погрешность в пределах нескольких градусов вполне устраивала.

Цифровая индикация результатов измерений

Для цифрового отображения данных используются LCD дисплей. При желании устройство можно модернизировать, доработав код программы. Свободных портов ввода-вывода для этого достаточно. LCD дисплей подключен по 4-битной шине (Рисунок 1). Старшие разряды индикатора D4 - D7 подключены к младшим разрядам D0 - D4 микроконтроллера. Поскольку точных временных привязок в этом устройстве нет, то нет и необходимости во внешнем задающем кварцевом резонаторе. К портам PB6 и PB7 подключены управляющие выводы дисплея. Как можно видеть, все линии управления дисплея выходят с одной стороны корпуса МК, что упрощает трассировку печатной платы.

Вычисление значения температуры

Из Рисунка 1 видно, что аналоговый датчик температуры подключен прямо к входу АЦП микроконтроллера. При использовании операционного усилителя погрешность измерения была бы меньше. Напряжение на АЦП подается через делитель, образованный терморезистором и переменным резистором. Для лучшей точности настройки переменный резистор выбран многооборотным.

Таблица 1. Зависимость сопротивления от температуры.

Температура ºС

Сопротивление Ω

Построив на основании Таблицы 1 график в Mathcad (Рисунок 2), можно увидеть зависимость сопротивления аналогового датчика от приложенной температуры. Исходные данные таблицы взяты из технического описания KTY84_130. Функция имеет практически линейный характер, лишь с небольшим отклонением на высоких температурах.

При измеряемой температуре 0 ºС сопротивление терморезистора составляет 498 Ом. Напряжение на выходе делителя равно

  • U Д - напряжение на датчике температуры относительно земли,
  • U ПИТ - напряжение питания,
  • R Д - сопротивление датчика температуры,
  • R 1 - установленное сопротивление переменного резистора.

При температуре 0 ºС напряжение на входе АЦП должно составлять 0.6 В. Для вычисления значения температуры автор использовал следующую формулу:


  • АЦП - 10 разрядный цифровой код АЦП, снятый с датчика,
  • U ОТС - отсекающее значение (60), равное 0.6 В при 0 ºС.

Диапазону измеряемых температур от 0 ºС до 250 ºС соответствуют поступающие с делителя входные напряжения АЦП от 0.6 до 1.8 В. Опорное напряжение АЦП составляет 5 В, поэтому при указанных значениях цифровой код будет находится в пределах от 123 до 368. Это число помещается в регистр и конвертируется в три разряда ASCII кода. Поскольку датчик KTY84_130 рассчитан на максимальную температуру 300 ºС, лучше оставить небольшой запас и ограничится 250 ºС.

На Рисунке 5 показано устройство, собранное на макетной плате. Код программы открытый, и каждый может с легкостью доработать его под собственные задачи.

Программное обеспечение МК и виртуальная модель Proteus для LCD 16×2 -

Программное обеспечение МК и виртуальная модель Proteus для LCD 8×2 -


Это обычный цифровой термометр, на просторах интернета подобных девайсов очень много. Основа микроконтроллер PIC16F628A и цифровой датчик температуры DS18S20 (DS18B20). В качестве индикаторов применены светодиодные 3-х разрядные индикаторы зеленого цвета. Индикация динамическая. Термометр работает во всем диапазоне температур датчика DS18S20, т.е. от -55 до +125 градусов.

Собран термометр на печатной плате, вместе с индикатором. Датчик и питание подключаются отдельно. Если датчик не подключен, на индикаторе высвечивается буква Е (Error). Никаких особенностей данный прибор не имеет. Диод VD1 служит для защиты от переполюсовки источника питания.

Прибор может работать как с датчиком DS18B20, так и с датчиком DS1820(DS18S20). Под каждый датчик используется своя прошивка микроконтроллера. Ниже приведен вариант этого термометра с уже установленным на печатную плату диодным мостом и стабилизатором 7805, т.е. для питания этого устройства достаточно подключить вторичную обмотку трансформатора к разъему питания. Кроме того, на этой плате установлен светодиод, который кратковременно вспыхивает во время опроса микроконтроллером датчика температуры. Светодиод подключен между ножкой RB3 (вывод 9) и "массой", естественно с резистором. Отсутствие светодиода на плате никак на работу термометра не повлияет.

Прибор удобно разместить в любой пластиковой коробке подходящих размеров. Я разместил его в корпусе сетевого блока питания (Адаптора) вместе с трансформатором. Т.е. из коробки выходит только разъем на датчик DS18B20, а сам корпус вставляется в сеть 220В.



Файл:
Размер:
Содержимое:

sm_termo.rar
38.3 КБ
Рисунки плат (LAY) и прошивки микроконтроллера.

По просьбам тех, кто собрал предыдущую конструкцию барометра на PIC 16F684 и датчике давления BMP180, публикуем статью (продолжение). Данное устройство позволяет отображать одновременно и температуру и давление. Для этого в конструкции был применен индикатор на базе микросхемы MAX7219 которая позволяет работать с матрицей 8Х7, применение данного индикатора позволило сократить число задействованных портов микропроцессора.

Датчик температуры применен самый распространенный — 18b20, который имеет трехвыводную конструкцию. DS18B20 (Programmable Resolution 1-Wire® Digital Thermometer). Диапазон измерения температуры составляет от -55 до +125 °C. Для диапазона от -10 до +85 °C погрешность не превышает 0,5 °C.

Схема устройства показана на рисунке 1.

Индикатор MAX7219 приобретался на Aliexpress. Но данный индикатор продается уже в готовом виде и вам остается только 5ю проводниками его подключить к запрограммированной плате.

Принципиальная схема индикатора показана на рисунке 2, внизу показано фото такого индикатора.

Внешний вид собранного устройства показан на фото ниже.

Отрицательные температуры отображаются, минус перед числом и градусы отображаются без десятых долей.

Скачать рисунок печатной платы, схему и прошивку.

Термометр на микроконтроллере PIC16F628A и DS18B20(DS18S20) – статья с подробным описанием схемы запоминающего термометра и, вдобавок, - логическое продолжение ранее опубликованной мною статьи на яндекс сайте pichobbi.narod.ru. Этот термометр довольно неплохо себя зарекомендовал, и было принято решение немного его модернизировать. В этой статье расскажу, какие изменения внесены в схему и рабочую программу, опишу новые функции. Статья будет полезна новичкам. Позже переделал текущую версию термометра в .

Термометр на микроконтроллере PIC16F628A и DS18B20(DS18S20) умеет:

  • измерять и отображать температуру в диапазоне:
    -55...-10 и +100...+125 с точностью 1 градус(ds18b20 и ds18s20)
    -в диапазоне -9,9...+99,9 с точностью 0,1 градус(ds18b20)
    -в диапазоне -9,5...+99,5 с точностью 0,5 градус(ds18s20);
  • Автоматически определять датчик DS18B20 или DS18S20;
  • Автоматически проверять датчик на аварию;
  • Запоминать максимальную и минимальную измеренные температуры.

Также в термометре предусмотрена легкая замена 7 сегментного индикатора с ОК на индикатор с ОА. Организована щадящая процедура записи в EEPROM память микроконтроллера. Вольтметр, который неплохо себя зарекомендовал, описан в этой статье - .

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

Принципиальная схема термометра показана на рисунке 1

Рисунок 1 - Принципиальная схема термометра на PIC16F628A + ds18b20/ds18s20

Описывать всю принципиальную схему термометра не стану, так как она довольно проста, остановлюсь только на особенностях.

В качестве микроконтроллера применяется PIC16F628A фирмы Microchip. Это недорогой контроллер и к тому же не дефицитный.

Для измерения температуры используются цифровые датчики DS18B20 или DS18S20 фирмы Maxim. Эти датчики не дорогие, малые по размеру и информация о измеренной температуре передается в цифровом виде. Такое решение позволяет, не тревожиться о сечении проводов, о их длине и прочем. Датчики DS18B20, DS18S20 способны работать в диапазоне температур от -55… +125 °С.

Температура выводится на 7-ми сегментный 3-х разрядный LED индикатор с общим катодом (ОК) или с (ОА).

Для вывода на индикатор максимальной и минимальной измеренных температур нужна кнопка SB1. Для сброса памяти так же нужна кнопка SB1

Кнопкой SA1 можно оперативно переключать датчики(улица, дом).

Jamper необходим для переключения общего провода для LED индикатора. ВАЖНО! Если индикатор с ОК – то ставим jamper на нижнее по схеме положение, а транзисторы VT1-VT3 впаиваем p-n-p проводимости. Если LED индикатор с ОА, то jamper переводим в верхнее по схеме положение, а транзисторы VT1-VT3 впаиваем n-p-n проводимости.

В таблице 1 можно ознакомиться со всем перечнем деталей и возможной их заменой на аналог.

Таблица 1 – Перечень деталей для сборки термометра
Позиционное обозначение Наименование Аналог/замена
С1, С2 Конденсатор керамический - 0,1мкФх50В -
С3 Конденсатор электролитический - 220мкФх10В
DD1 Микроконтроллер PIC16F628A PIC16F648A
DD2,DD3 Датчик температуры DS18B20 или DS18S20
GB1 Три пальчиковых батарейки 1,5В
HG1 7-ми сегментный LED индикатор KEM-5631-ASR (OK) Любой другой маломощный для динамической индикации и подходящий по подключению.
R1,R3,R14,R15 Резистор 0,125Вт 5,1 Ом SMD типоразмер 0805
R2,R16 Резистор 0,125Вт 5,1 кОм SMD типоразмер 0805
R4,R13 Резистор 0,125Вт 4,7 кОм SMD типоразмер 0805
R17-R19 Резистор 0,125Вт 4,3 кОм SMD типоразмер 0805
R5-R12 Резистор 0,125Вт 330 Ом SMD типоразмер 0805
SA1 Любой подходящий переключатель
SB1 Кнопка тактовая
VT1-VT3 Транзистор BC556B для индикатора с ОК/ транзистор BC546B для индикатора с ОА KT3107/КТ3102
XT1 Клеммник на 3 контакта.

Для первоначальной отладки работы цифрового термометра применялась виртуальная модель, построенная в протеусе. На рисунке 2 можно увидеть упрощенную модель в протеусе

Рисунок 2 – Модель термометра на микроконтроллере PIC16F628A в Proteus’e

На рисунке 3-4 показана печатная плата цифрового термометра

Рисунок 3 – Печатная плата термометра на микроконтроллере PIC16F628A(низ) не в масштабе.

Рисунок 4 – Печатная плата термометра на микроконтроллере PIC16F628A(верх) не в масштабе.

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

Результат работы рисунки 5-7.

Рисунок 5 - Внешний вид термометра

Рисунок 6 - Внешний вид термометра

Рисунок 7 - Внешний вид термометра

ВАЖНО! В прошивку термометра не вшита реклама можно пользоваться в свое удовольствие.

Поправки, внесенные в рабочую программу:

1 автоматическое определение датчика DS18B20 или DS18S20;

2. снижено время перезаписи в EEPROM(если выполнилось условие для перезаписи) с 5 минут, до 1 минуты.

3. увеличена частота мерцания точки;

Более подробное описание работы термометра можно посмотреть в документе, который можно скачать в конце этой статьи. Если скачивать нет желания, то на сайте www.pichobbi.narod.ru также отлично расписана работа устройства.

Готовая плата отлично поместилась в китайский будильник (рисунки 8, 9).

Рисунок 8 – Вся начинка в китайском будильнике

Рисунок 9 - Вся начинка в китайском будильнике

Видео - Работа термометра на PIC16F628A