Простой измеритель температуры с жк дисплеем на мк

Простой многоканальный термометр.

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

Схему долго не искал, сразу попался на глаза термометр на PIC-контроллере, автор которого Ondrej Slovak, и так как имеется нормальный программатор, решил собрать эту схему.
Чем она мне понравилась, ну довольно простая, мало деталей и возможность подключать к этому термометру несколько датчиков температуры, которые можно установить в разных местах. Например один в помещении, другой на улице.
Датчики температуры в этом термометре самые обычные, DS18B20. Термометр позволяет подключить к себе от одного, до пятнадцати подобных датчиков, для контроля за температурой в пятнадцати различных мест (может кому-то и понадобится).
Диапазон измерения температуры этого термометра от -55 до +125 ° C, разрешение 0,1 ° C, то есть хватит на все случаи жизни, только если не на крайнем Севере, где температура может опускать и ниже 55-ти градусов.
Температуры ниже -9,9 или выше +99,9 ° C, отображаются с разрешением в 1 ° C. Отрицательные температуры отображаются со знаком «-«, а положительные без знака.
В качестве цифрового индикатора температуры, применён 3-х разрядный светодиодный индикатор с общим анодом.
Отображение температуры различных датчиков происходит автоматически. Сначала анимацией отображается номер температурного датчика в шестнадцатеричном формате (цифры от 1 до 9 и буквы A,B,C,D,E,F) в течении 3 секунд, затем индикация температуры этого датчика (10 секунд).
Как это всё отображается на цифровом индикаторе, видно на анимационном рисунке ниже. Рисунок отображает температуру и номера всех пятнадцати (если они будут) подключенных к термометру датчиков.

Поиск подключенных датчиков происходит после включения питания термометра.
Если к термометру подключён только один датчик, то его номер не отображается и на индикатор выводится только температура этого датчика без всякой анимации.
Термометр собран на микроконтроллере PIC16F88, его так-же можно собрать и на микроконтроллере PIC16F628A. В прикреплённом архиве в конце статьи, имеются прошивки для этих двух микроконтроллеров.
Ниже приведена схема термометра в авторском варианте.

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

Если при включении термометра ни один датчик не будет найден, на дисплее отображается ошибка — E.00. Поиск датчиков при этом по-прежнему повторяется.

При включении термометра и первоначальном поиске датчиков, их серийные номера (первые 8 бит) загружаются и сохраняются в памяти микроконтроллера, и датчикам присваиваются номера (1- самому маленькому номеру и далее по возрастанию до F, если датчиков 15), и может случиться так, что два или более датчиков, которые подключены к термометру, могут иметь один и тот же байт (номер). В этом случае на индикаторе будет отображаться ошибка [E.02] и поиск датчиков будет повторяться.
Если будет отображаться такая ошибка, то нужно будет поочередным изъятием датчиков из термометра, определить, какие из них имеют одни и те же коды (ошибка пропадёт) и заменить этот датчик на другой.

В авторском варианте термометр собран на двухсторонней печатной плате, а если убрать ICSP разъем для внутрисхемного программирования, то на односторонней печатной плате (смотри на рисунке ниже).

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

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

Я особо заморачиваться не стал, и собрал термометр на макетной плате. Индикатор поставил зелёного цвета, такой индикатор более приятен для глаз, особенно в тёмное время суток.

Поставил ещё стабилизатор на пять вольт. Наружный датчик подсоединил к термометру гибкими проводами, длинной три метра, свитыми между собой наподобие витой пары.
Провода припаял к датчику, потом закрыл место пайки и частично сам датчик термо-усадочной трубкой, и потом сами выводы проводов залил ещё клеем для герметизации, так как датчик будет находиться на улице, и это необходимо для защиты его от воздействия всевозможных атмосферных осадков.

С обратной стороны монтаж сделал обычными проводами, в качестве резисторов 300 Ом, поставил резисторы SMD.
Естественно разъём для внутрисхемного программирования устанавливать не стал, он мне тан не нужен.
В качестве блока питания здесь можно использовать любую зарядку для сотового телефона (смартфона).
Я поставил вот такую зарядку, которая давно валялась дома без дела после замены телефона.

Можно поставить в термометр и второй датчик, для контроля температуры, например в помещении, в котором установлен термометр, но мне пока это без надобности, а если понадобится — так поставить второй датчик, дело пяти минут.

Скачать архив;
Архив

Урок 12. Измерение температуры при помощи AVR. Простой термометр на AVR.

Продолжаем осваивать периферию, на очереди измерение температуры. Рассмотрим вариант измерения, при помощи датчика температуры DS18b20.

Характеристики датчика: диапазон измерения от -55 до +125°С. Точность измерения ±0,5°С гарантируется в диапазоне от -10 до +85°С. Возможность измерения с разрешением 9, 10, 11 и 12 бит, т.е. с шагом 0,5; 0,25; 0,125; 0,0625°С. Для обмена информацией с AVR микроконтроллером используется 1-Wire протокол. Каждый датчик имеет свой уникальный адрес, поэтому имеется возможность посадить на шину сразу несколько датчиков.

Для сборки схемы понадобится жк дисплей, датчик и резистор на 4,7кОм. Теперь перейдем непосредственно к прошивке.

#include #include // 1 Wire Bus functions #asm .equ __w1_port=0x18 ;PORTB .equ __w1_bit=2 #endasm #include #include // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x12 ;PORTD #endasm #include #include char lcd_buf[17]; void main(void) < float temper; lcd_init(16); w1_init(); ds18b20_init(0,-20,50,DS18B20_12BIT_RES); while(1) < temper=ds18b20_temperature(0); sprintf(lcd_buf,"t=%.1fxdfC",temper); lcd_clear(); lcd_puts(lcd_buf); delay_ms(1500); >; >

Теперь обо всем по порядку:

#asm .equ __w1_port=0x18 ;PORTB .equ __w1_bit=2 #endasm

Данный код означает, что датчик подключен к порту В, PB2 ножке

Используется протокол 1wire, тип датчика ds18b20

float temper; w1_init(); ds18b20_init(0,-20,50,DS18B20_12BIT_RES);

Переменная temper (с плавающей точкой) используется для хранения температуры,
w1_init(); — ищем датчик,
ds18b20_init(0,-20,50,DS18B20_12BIT_RES); — настройка датчика: 0-номер датчика, -20 -нижний предел измерения, 50 — верхний предел измерения,
DS18B20_12BIT_RES используется 12 битный режим(с шагом 0,0625°С). В принципе настройку можно не производить, по умолчанию выставлен 12 битный режим. Показано лишь для того, чтобы вы могли самостоятельно изменить режим измерения, если это понадобится.

temper=ds18b20_temperature(0); sprintf(lcd_buf,»t=%.1fxdfC»,temper); lcd_clear(); lcd_puts(lcd_buf); delay_ms(1500);

temper=ds18b20_temperature(0); — читаем значение температуры с датчика
sprintf(lcd_buf,»t=%.1fxdfC»,temper); преобразовываем к понятному для lcd виду %.1f — вывод числа с плавающей точкой 1 знак после запятой, не забываем в свойствах проекта указать (s)printf features float.
xdf — вывод на экран значка градуса.

В результате должно получиться нечто похожее

Отрицательной температуры поблизости не было :D, поэтому попробовал остудить бутылочкой соуса из холодильника, результат что то не сильно впечатлил.

Читайте также  Балласт от энергосберегайки в качестве зарядного устройства мобильника

Зато от нагрева рукой, температура довольно быстро повысилась.

Проект доступен тут
Проект для DS18s20
Проект для двух датчиков
Проект для DS18b20 на семисегментниках
Проект Алексея(Alyes)для Atmega16 и шести сегментов + бонус видео устройства

249 комментариев: Урок 12. Измерение температуры при помощи AVR. Простой термометр на AVR.

Здравствуйте! На семисигментниках собрал термометр с отображением до десятых долей градуса.В протеусе все ОК.В железе при вкл на индикаторе отображается ересь-как будто два итображения чисел вместе накладываются Железо вроде ОК ( с программой на два знака(целые значения температуры) все норм работает!Программу тоже пошагово проверял все нормально. Может кто подскажет в чем дело-писал пропеты и посложнее и все получалось , а тут споткнулся…

это нормально попробуйте реже опрашивать для начала.

Здравствуйте Уважаемый Admin! Подскажите пожалуйста как в Codevisionavr 2.05 сделать проект с двумя и более температурными датчиками DS18B20? В конце Вашей статьи есть Проект Алексея(Alyes), выполненный в CVAVR 2.05, но заставить работать его с двумя датчиками никак не могу добиться. Подскажите пожалуйста куда какие стоки нужно добавить?
Спасибо.

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

// 1 Wire Bus interface functions
#include

// DS1820 Temperature Sensor functions
#include

void main(void)
<
// Declare your local variables here
float temper;
unsigned int x;

// 1 Wire Bus initialization
// 1 Wire Data port: PORTD
// 1 Wire Data bit: 7
// Note: 1 Wire port settings must be specified in the
// Project|Configure|C Compiler|Libraries|1 Wire IDE menu.
w1_init();
ds18b20_init(0,-20,50,DS18B20_12BIT_RES);

// Global enable interrupts
#asm(«sei»)

while (1)
<
temper=ds18b20_temperature(0);
if (temper>1000)
<
temper=4096.0-temper;
minus=1;
>

x=temper*10;
nom4=x%10;//разборка целого числа на отдельный сегмент…
x=x/10;
nom3=x%10;
nom2=x/10;
nom5=10;
nom6=11;
if(minus==0)
<
nom1=12;
>
else
<
nom1=13;
>
>
>

Цифровой термометр на ATMega8

Добрый день! Хочу поделиться с сообществом своей реализацией цифрового бытового термометра на контроллере ATMega8 и датчиках DS18x20.

Вступление
Немного предистории…
Это не первая конструкция электронного термометра, собранного мною. Несколько ранее (когда я был знаком только с PIC контроллерами) я собрал бытовой термометр на PIC16F628, датчиках DS18S20 и 2-х строчном ЖК индикаторе на основе контроллера HD44780. Программу писал, на C с использованием среды PIC C Compiler. Использовал готовые библиотеки кода для общения с датчиками и LCD дисплеем. Электронную схему выполнил на макетке, все детали в DIP корпусах.

Этот термометр до сих пор исправно работает (установлен на кухне) и показывает температуру «за бортом» и на балконе.
Спустя некоторое время, после знакомства с AVR и освоения ЛУТ технологии в связке с SMD компонентами у меня и зародилась идея создать более компактную и более дешевую версию такого цифрового термометра.
Вот что из этого получилось.

Постановка задачи
Исходное задание звучит так:

  • Измерение температуры датчиками DS18B20 и DS18S20 одновременно.
  • Подключения нескольких датчиков на одну шину 1-Wire для многоточечных измерений температуры.
  • Дешевый индикатор, видимый в темноте.
  • Компактный корпус.
  • Удобство подключения проводов от датчиков и источника питания.
  • Внешний источник питания 5В для простоты реализации.
  • Отображение целого значения температуры в °С (т.к. у нас всего 2 разряда на индикаторе).

Итак, условие о применении любых датчиков серии DS18x20 возникло из-за того, что у меня в наличии как раз остались один DS18S20 и один DS18B20. Как выяснилось, покопавшись в сети, прошивок термометров, работающих одновременно с этими двумя датчиками нету. (возможно плохо искал, но тем не менее). Почитав даташиты на эти датчики, стало понятно, что представление температуры в них выполнено по разному. Значит будем создавать свой универсальный код микроконтроллера! Об этом подробнее в программной части.
Выбор дешевого индикатора, который бы еще и светился сводится, конечно же, к применению семисегментного. Тут альтернативы нет.
Выбор компактного корпуса у меня занял некоторое время. Свой выбор я остановил на обычной телефонной евророзетке с двумя разъемами RJ11.

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

Размеры телефонной розетки наложили жесткие ограничения на размер печатной платы. Поэтому всю разводку электрической схемы на дорожках выполнить не удалось — пришлось применять некоторое количество коротких отрезков провода МГТФ. Также я отказался от применения внешнего кварцевого резонатора и использовал внутренний RC генератор 1МГц.
Два разъема RJ11 служат для подключения внешнего источника питания и выносного датчика температуры DS18x20. Причем оба разъема равнозначны и их нельзя перепутать, т.к. цепи питания и шина 1-Wire разнесены на разные контакты (получилась небольшая защита от «дурака»). Блок питания и выносной датчик (можно и не один) подключаются обычными телефонными 4-х жильными проводами с разъемом RJ11. Датчики DS18x20 необходимо хорошенько изолировать от воздействия окружающей среды при работе на открытом воздухе. В своей конструкции я вывел 2-ой датчик температуры из корпуса прибора наружу на коротком проводнике (измерение температуры в комнате).
Далее приведу фото получившейся конструкции:

Для индикации минусовой температуры служит отдельный светодиод. Первоначально я хотел поставить прямоугольный советский светодиод (не помню марку, вроде КИПМО какой-то), но мощность излучения оставляла желать лучшего… Поэтому я его заменил на SMD светодиод красного свечения:

Программная часть
Код писался в CV AVR. Использовал библиотеку «ds18b20.h». Использовалась динамическая индикация. Переключение между индикаторами происходит программно по прерыванию таймера.
Полностью приводить код не буду. Покажу только главный цикл:

Внимание! Прошивка и исходный код написаны для индикатора с общим катодом.
Некоторые пояснения по коду:
Временное отключение прерываний в коде связано с тем, что необходимо точно соблюсти временные интервалы при работе с датчиками 1-Wire. В моменты, когда прерывания отключаются также теряется динамическая индикация светодиодного индикатора, поэтому на это время индикатор нужно гасить.

Для более детального изучения работы с температурными датчиками DS18x20 обратитесь к даташитам. Также имеется пример работы с ними в среде CV AVR.

Заключение
Демонстрация работы:

Все замечания и предложения приветствуются. Надеюсь, для кого-нибудь данная статья окажется полезной.
Также, привожу все файлы (схема, плата, исх. код) проекта.
Даташит на DS18S20.
Даташит на DS18B20.

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

  • ATMega8,
  • AVR,
  • Dallas,
  • DS18x20
  • +1
  • 07 октября 2011, 20:23
  • serge_wddm
  • 3

Комментарии ( 47 )

  • Vga
  • 07 октября 2011, 20:38
  • N1X
  • 07 октября 2011, 20:48
  • en1gma
  • 07 октября 2011, 22:14
  • ursadon
  • 07 октября 2011, 21:00

Видимо, потому что не требуется включать мозги (и калибровать заодно).

Ну, мозги там тоже включать особо не надо. А вот калибровать — да, меня останавливает именно это.

Кстати, я тут тоже собираюсь термометр делать. На LM75A. 😀

«В жизни каждого эмбеддера наступает момент, когда он понимает, что ему пора сделать термометр. »

Схема электронного термометра с выносным датчиком своими руками

На замену не совсем удобным аналоговым измерителям температуры, в основе работы которых лежит свойство жидкости расширяться и сжиматься, промышленность предложила дискретные устройства. Эти совсем несложные приборы обладают рядом неоспоримых преимуществ. Купить измеритель можно практически в любом магазине бытовой или климатической техники, но гораздо интереснее изготовить электронный термометр с выносным датчиком своими руками.

Читайте также  Мощный преобразователь напряжения для автомобильного усилителя

Суть устройства

Термометр, разговорный аналог — градусник, предназначен для измерения температуры окружающей среды. Первое устройство было изобретено в 1714 году немецким физиком Д. Г. Фаренгейтом. В основе своей конструкции он использовал прозрачную запаянную колбу, внутри которой находился спирт. После в качестве жидкости учёный применил ртуть. Но шкала аналогового измерителя, существующая и по сей день, была разработана лишь только через 30 лет шведским астрономом и метеорологом Андерс Цельсием. За начальные точки он предложил взять температуру тающего льда и кипения воды.

Интересным фактом является то, что изначально числом 100 была отмечена температура таяния льда, а за ноль взята точка кипения. Впоследствии шкалу «перевернули». По некоторым мнениям это сделал сам Цельсий, по другим — его соотечественники ботаник Линней и астроном Штремер.

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

Поэтому из-за своих отличных характеристик термометр с цифровой схемой практически не имеет конкурентов. Предлагаемые в продаже спиртовые приборы проигрывают ему по точности и удобству восприятия данных.

Электронные модели могут располагаться в любом месте, ведь в контролируемом помещении необходимо расположить только небольшой датчик, подключённый к устройству. Этот тип используется во многих технологических процессах промышленности, например, строительных, аграрных, энергетических. С их помощью контролируется:

  • температура воздуха в производственных и жилых зданиях;
  • проверка нагрева сыпучих продуктов;
  • состояние вязких материалов.

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

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

Проводимость материала изменяется в зависимости от температуры окружающей среды. Основываясь на этом и проектируется схема электронного градусника. Так, чаще всего в конструкции применяется термопара. Это электронный прибор, стоящий из двух сваренных между собой металлов. На поверхности каждого из них имеется контактная площадка, подключённая к измерительной схеме. При нагревании или охлаждении контактов возникает термоэлектродвижущая сила, появление и изменение которой регистрируется платой электроники.

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

Обработанные данные выводятся на дисплей, с которого уже визуально снимаются пользователем. Цифровые градусники позволяют измерять изменения температуры в диапазоне от -50 ° С до 100 ° С.

Всего же в конструкции простого термометра можно выделить пять блоков:

  1. Датчик — устройство, изменяющее свои параметры в зависимости от величины воздействующей на него температуры.
  2. Измерительные провода — используются для выноса датчика и его расположения в различных местах, требующих контроля над температурой. Чаще всего это небольшого сечения в диаметре проводники, даже необязательно экранированные.
  3. Плата электроники — содержит блок анализатора, фиксирующий изменения приходящего от датчика сигнала, а затем передающий его на экран.
  4. Дисплей — монохромный или цветной экран, предназначенный для отображения данных об измеренной температуре.
  5. Блок питания — собирается на типовых для радиоэлектроники интегральных микросхемах. Используется для стабилизации и преобразования питания, подающегося на все узлы платы.

Особенности изготовления

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

При выборе схемы учитывают характеристики, которые она сможет обеспечить будущему измерительному устройству. В первую очередь — это диапазон измеряемых температур, а во вторую – погрешность. Конструктивно можно собрать проводную и беспроводную модель. При сборке второго типа используется радиомодуль, значительно удорожающий изделие.

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

Суть метода заключается в том, что с помощью, например, Sprint Layout, рисуется печатная схема устройства и распечатывается в зеркальном отображении в масштабе 1:1 на лазерном принтере. Затем, приложив отпечатанный рисунок изображением вниз к фольгированному слою, проглаживают чертёж разогретым утюгом. Из-за особенностей тонера изображение линий перенесётся на стеклотекстолит. Далее плата погружается в ванную с реактивом, например, FeCl3.

В качестве индикатора можно использовать светодиодную матрицу, но лучше приобрести любой монохромный экран. Простой экран можно взять буквально за «копейки», например, подойдёт от старых системных блоков, выполненных в форм-факторе АТ. Если планируется конструкция с выносным датчиком, то неплохим вариантом будет использование шлейфа с диаметром проводника от 0,3 мм2, но в принципе подойдёт любой провод. При этом чем вынос датчика больше, тем большего сечения нужен и провод.

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

Простой термометр

Конструкция простого термометра состоит всего из трёх деталей и тестера. В качестве датчика температуры в схеме используется LM35. Это интегральный прибор с калиброванным выходом по напряжению. Амплитуда на выходе датчика пропорциональна температуре. Точность измерений составляет 0,75° C. Запитывать интегральную микросхему можно как от однополярного источника, так и двухполярного. Предел измерений от -55 ° до 150° C.

В качестве мультиметра можно использовать стрелочный или цифровой прибор. К датчику согласно схеме подключают источник питания. Например, КРОНу или три соединённых последовательно пальчиковых батарейки. Измеритель же подключают к клеммам V и COM и переводят в режим измерения температуры. Потребление датчика при работе не превышает 10 мкА.

Диапазон измерения мультиметра устанавливается на два вольта. Отображённый на экране результат и будет соответствовать измеряемой температуре. Последняя цифра в числе обозначает десятые доли градуса.

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

Цифровая схема

Одна из самых простых схем состоит всего из нескольких элементов. В основе конструкции лежит использование датчика, выдающего значение температуры в цифровом коде. Стоимость термодатчика LM 335 не превышает 50 центов, при этом после калибровки его точность измерения составляет от 0,3 ° до 1,5° C. Датчик может измерять температуру от — 40 ° до 100° C. Выпускается он в двух корпусах — TO-92 и SOIC. В качестве аналога можно использовать отечественную микросхему К1019ЕМ1.

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

Читайте также  Символьный жки на базе контроллера hd44780

Uвых = Vвых1 * T / To, где:

  • Uвых – напряжение на выходе микросхемы;
  • Uвых1 – напряжение на выходе при эталонной температуре;
  • T и To – измеряемая и эталонная температура.

Напряжение, формирующее выходной сигнал, зависит от температуры, поэтому питание, подающееся на датчик, должно осуществляться от источника тока. Собирается он на двух транзисторах КТ209 и не требует дополнительных настроек. Максимальный ток питания не превышает 5 мА. Увеличение выходного напряжения на 10 мВ соответствует приросту температуры на один градус.

Использование микроконтроллера

Применение в схеме самодельного термометра микроконтроллера подразумевает использование программы, управляющей его работой. В качестве микросхемы применяется ATmega8, а датчика температуры — DS18B20.

В схеме используется небольшое число радиодеталей. Она несложная и не нуждается после сборки в какой-либо наладке. Напряжение питания микроконтроллера составляет пять вольт. Для его стабилизации используется микросхема L7805. Транзисторы можно использовать любые с NPN структурой. В качестве индикатора подойдёт трёхразрядный сегментный дисплей с общим катодом.

Температура устройством может изменяться в интервале от -55 ° до 125º С с шагом в 0,1º С. Погрешность измерения не превышает 0,5º С. Обмен данными между датчиком и микроконтроллером происходит по шине 1-Wire. При большом расстоянии выноса измерительной микросхемы DS18B20 от ATmega8 необходимо подобрать подтягивающее сопротивление. Распаять его лучше непосредственно на вывод датчика.

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

Точный термометр

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

Основой конструкции является микросхема ICL707 и светящийся индикатор. Питание можно подавать от любого источника с выходной амплитудой 12 В. На DA3 собран нормирующий преобразователь, изменяющий своё выходное напряжение в зависимости от сигнала, поступаемого с датчика.

Настройка заключается в выставлении на 36 ноге микросхемы напряжения, равного одному вольту. Делается это с помощью резисторов R3 и R4. Вместо датчика подключают резистор на 100 Ом. Изменением сопротивления R14 устанавливают нули на цифровом индикаторе. После чего устройство готово к измерениям.

PicHobby.lg.ua

Полезные изобретения на микроконтроллерах

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

  • Автор: Ерёмин Антон
  • Комментарии (134)

Термометр на микроконтроллере 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 память микроконтроллера. Вольтметр, который неплохо себя зарекомендовал, описан в этой статье — Вольтметр на PIC16F676.

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

Принципиальная схема термометра показана на рисунке 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 — Вся начинка в китайском будильнике