Как работает цифровой термометр на микроконтроллере. Какие компоненты используются для его создания. Какие преимущества дает использование микроконтроллера в термометре. На что обратить внимание при выборе цифрового термометра.
Принцип работы цифрового термометра на микроконтроллере
Цифровой термометр на микроконтроллере представляет собой электронное устройство для измерения температуры и отображения ее значения в цифровом виде. Основными компонентами такого термометра являются:
- Датчик температуры (например, DS18B20)
- Микроконтроллер (например, PIC16F628A или ATmega8)
- Дисплей (ЖК или семисегментный)
- Источник питания
Принцип работы цифрового термометра на микроконтроллере заключается в следующем:
- Датчик измеряет температуру и передает аналоговый сигнал в микроконтроллер
- Микроконтроллер преобразует аналоговый сигнал в цифровой с помощью АЦП
- Полученное цифровое значение температуры обрабатывается микроконтроллером
- Микроконтроллер выводит значение температуры на дисплей
Преимущества использования микроконтроллера в термометре
Применение микроконтроллера в термометре дает ряд существенных преимуществ:

- Высокая точность измерений за счет цифровой обработки сигнала
- Возможность калибровки и настройки параметров измерения
- Расширенная функциональность (память максимальных/минимальных значений, графики и т.д.)
- Возможность подключения дополнительных датчиков и устройств
- Компактность и низкое энергопотребление
Выбор компонентов для цифрового термометра
При разработке цифрового термометра на микроконтроллере важно правильно подобрать основные компоненты:
Датчик температуры
Наиболее популярные варианты датчиков:
- DS18B20 — цифровой датчик с интерфейсом 1-Wire
- LM35 — аналоговый датчик с линейной характеристикой
- DHT11/DHT22 — комбинированные датчики температуры и влажности
Микроконтроллер
Выбор микроконтроллера зависит от требуемой функциональности. Популярные варианты:
- PIC16F628A — недорогой 8-битный микроконтроллер
- ATmega8 — 8-битный микроконтроллер со встроенным АЦП
- STM32F103 — 32-битный микроконтроллер для сложных проектов
Дисплей
Для отображения температуры обычно используются:

- Семисегментные светодиодные индикаторы
- Символьные ЖК-дисплеи (например, 1602 или 2004)
- Графические OLED-дисплеи
Особенности разработки прошивки для термометра
При разработке программного обеспечения для цифрового термометра на микроконтроллере следует учитывать несколько важных моментов:
- Корректное считывание данных с датчика температуры
- Фильтрация и усреднение измерений для повышения точности
- Калибровка измерений с учетом погрешностей датчика
- Реализация дополнительных функций (память, настройки и т.д.)
Возможности расширения функционала термометра
Цифровой термометр на микроконтроллере можно дополнить различными полезными функциями:
- Запись истории измерений на SD-карту
- Передача данных по беспроводному интерфейсу (Bluetooth, Wi-Fi)
- Подключение дополнительных датчиков (влажности, давления и т.д.)
- Управление внешними устройствами (например, вентилятором)
- Звуковая или световая сигнализация при выходе за пределы
На что обратить внимание при выборе цифрового термометра
При выборе готового цифрового термометра на микроконтроллере стоит учитывать следующие параметры:

- Диапазон измеряемых температур
- Точность и разрешающая способность измерений
- Тип и размер дисплея
- Наличие дополнительных функций (память, графики и т.д.)
- Возможность калибровки и настройки
- Автономность работы от батарей
Применение цифровых термометров на микроконтроллерах
Цифровые термометры на основе микроконтроллеров находят широкое применение в различных областях:
- Бытовая техника (холодильники, кондиционеры)
- Метеостанции и системы «умный дом»
- Промышленное оборудование и автоматика
- Медицинские приборы
- Автомобильная электроника
Заключение
Цифровые термометры на микроконтроллерах обладают широкими возможностями и высокой точностью измерений. Их применение позволяет создавать компактные и функциональные устройства для измерения и контроля температуры в различных сферах. При разработке собственного термометра важно правильно подобрать компоненты и уделить внимание программной части для получения надежного и точного прибора.
Термометр на микроконтроллере для четырех датчиков DS18B20
Схема самодельного термометра, предназначенного для отображения данных с четырех датчиков DS18B20, используется микроконтроллер.
К этому микроконтроллерному термометру можно подключить до четырёх цифровых датчиков температуры DS18B20, расположив их в тех местах, где необходимо контролировать температуру, и соединив с прибором, общим для всех трёхпроводным кабелем. Значения температуры отображаются на четырёхстрочном символьном ЖКИ.
Принципиальная схема
Схема термометра изображена на рис. 1. Напряжение 5 В для его питания подают, например, от зарядного устройства для сотового телефона. Включают и выключают термометр выключателем SA1.
Управляет датчиками температуры BK1-BK4 и считывает результаты их работы микроконтроллер DD1 (PIC16F628A-I/P), работающий от встроенного тактового генератора.
Индикатор HG1 связан с микроконтроллером трёхразрядной шиной управления (линии RA2-RA4 микроконтроллера) и четырёхразрядной шиной данных (линии RB0-RB3).
Поскольку выход RA4 микроконтроллера, в отличие от других, выполнен по схеме с открытым стоком, для него предусмотрен нагрузочный резистор R2, поддерживающий здесь высокий логический уровень, когда внутренний транзистор микроконтроллера закрыт.
Рис. 1. Схема термометра для четырех датчиков DS18B20, используется PIC16F628A.
Неиспользуемые линии разрядов D0-D3 шины данных индикатора во избежание воздействия на них помех соединены с общим проводом.
Оптимальную контрастность изображения на экране ЖКИ устанавливают подстроечным резистором R4.
Детали и печатная плата
Термометр собран на односторонней печатной плате из фольгированного стеклотекстолита, изображённой на рис. 2. В собранном виде вместе с индикатором она показана на рис. 3.
Рис. 2. Печатная плата для схемы термометра на микроконтроллере PIC16F628A.
Рис. 3. Плата готового устройства с дисплеем.
Когда датчики BK1-BK4 подключены к прибору, как показано на схеме, цепи +5 В (выв. 3) и ввода-вывода информации (выв. 2) всех четырёх датчиков соединены параллельно. Но их выводы 1, обычно соединяемые с общим проводом прибора, в данном случае подключены раздельно к линиям RA0, RA1, RA6 и RA7 микроконтроллера.
Это позволяет его программе включать датчики раздельно. Чтобы включить, например, датчик BK1, программа переводит линию RA0 в режим выхода и устанавливает на нём низкий логический уровень напряжения. Это эквивалентно соединению вывода 1 датчика с общим проводом.
Цепь питания датчика замыкается, и он включается. Потребляемый им ток не превышает 1,5 мА при нагрузочной способности линии порта микроконтроллера 25 мА. Остальные три линии из четырёх, перечисленные выше, программа оставляет в режиме входов.
Их входное сопротивление в этом режиме очень велико, и цепи питания трёх датчиков остаются разомкнутыми.
Следует заметить, что нельзя управлять питанием датчиков DS18B20, отключая от плюса питающего напряжения их выводы 3. Дело в том, что в этих датчиках предусмотрена возможность так называемого «паразитного питания», когда для их нормальной работы достаточно напряжения высокого логического уровня, поступающего на информационный вывод 2 в процессе обмена информацией с микроконтроллером.
Каждый датчик DS18B20 имеет уникальный номер длиной 64 двоичных разряда, хранящийся в его ПЗУ Это позволяет ведущему устройству интерфейса 1 -Wire (микроконтроллеру) различать соединённые параллельно ведомые устройства (датчики) по этим номерам, не прибегая к отключению питания от каждого из них.
Для этого предусмотрены специальные команды, на которые реагирует только ведомое устройство с указанным в команде номером. Но чтобы воспользоваться такой командой, нужно знать этот номер, а он уникален и от датчика к датчику не повторяется.
Существует алгоритм программного определения номеров всех соединённых параллельно датчиков. Но он очень сложен, проще оказалось определять номера, включая датчики по одному, и лишь затем подключать их все параллельно.
При нажатии на кнопку SB1 программа микроконтроллера поочерёдно включает по одному датчику, запрашивает его номер и запоминает его в EEPROM. В случае отсутствия датчика «принятая» от него информация состоит из одних логических единиц.
Поскольку такого номера у реального датчика быть не может, запись его в EEPROM эквивалентна стиранию хранившейся информации о ранее подключённом датчике.
Завершив определение номеров датчиков, программа включает их все и отправляет общую (без указания номеров) команду выполнить измерение температуры. Её принимают и исполняют все датчики.
По готовности результатов программа обращается к каждому датчику отдельно по его уникальному номеру, считывает измеренные значения температуры и отправляет их на индикатор. Далее циклы измерения, считывания результатов и их вывода на индикатор периодически повторяются.
При повторном включении термометра вновь нажимать на кнопку SB1 для определения номеров датчиков нет никакой необходимости, поскольку эти номера уже записаны в энергонезависимой памяти микроконтроллера. Программа сразу же начнёт выполнять циклы измерения температуры.
Более того, теперь все зарегистрированные датчики можно соединить одноимёнными выводами параллельно и подключить их к устройству одной тройкой проводов. Например, такой, как показана на рис. 4 (датчики в разъёмы не вставлены).
Новое раздельное подключение датчиков и нажатие на кнопку SB1 потребуются лишь при замене любого из них или всего комплекта.
Программа микроконтроллера создана в среде PIC Simulator IDE v6.97, в которой предусмотрены средства работы с интерфейсом 1-Wire. Но для связи с устройствами по этому интерфейсу может быть использован только один вывод микроконтроллера, заданный при инициализации программы.
Для датчика DS18B20 в среде программирования имеются процедуры высокого уровня (например, послать определённую команду), но в программе они не использованы, так как могут работать только при условии, что к микроконтроллеру подключён единственный датчик. Применены только низкоуровневые процедуры 1wireInit (инициализация интерфейса), 1wireSendByte (передача байта), 1wireGetByte (приём байта) и 1wireGetBit (приём одного двоичного разряда).
Измеренное датчиком DS18B20 12-разрядное значение температуры находится в двух байтах его оперативной памяти, которые могут быть прочитаны ведущим интерфейса.
Сразу после включения датчика, когда измерение ещё не выполнялось, это значение равно 85 °C. Чтобы датчик выполнил измерение, ему нужно подать соответствую щую команду.
Процесс определения температуры занимает около 750 мс, после чего полученное значение может быть считано. Чтобы точно узнать момент готовности информации о температуре, после команды начала измерения ведущий может периодически посылать запросы чтения разряда состояния датчика.
Ответом на запрос будет логический 0, если измерение ещё продолжается, или логическая 1, когда оно завершено. При параллельном соединении датчиков, получивших команду одновременно, логическая 1 будет принята только по завершении измерения всеми датчиками.
Чтобы избежать операций с дробными числами, полученные от датчиков 12-разрядные значения температуры с ценой младшего разряда 0,0625 оС программа округляет для вывода на индикатор до целых чисел, в 10 раз больших реальных значений.
Например, при температуре 25,25 оС прочитанное из датчика двоичное число 000110010100 умножением на десять и последующим сдвигом на четыре разряда вправо преобразуется в целое десятичное число 252. На индикаторе оно будет выглядеть как 25,2, поскольку после второго разряда всегда предусмотрен вывод десятичной запятой.
ЖКИ-модуль LCD1604 на основе контролера HD44780, применённый в качестве HG1, не содержит в своём знакогенераторе русских букв и некоторых других символов, необходимых для формирования нужных сообщений на экране. Многие русские буквы можно вывести, используя их схожесть с латинскими.
Рис. 4. Подключение датчиков по трем проводам.
Для вывода остальных использована возможность загрузить в первые восемь ячеек знакогенератора изображения символов, вид которых на экране определён пользователем с помощью операторов Lcddefchar.
Если двоичные коды, заданные в рассматриваемой программе этими операторами, расположить столбцами, как в таблице, то можно увидеть, что единицами в них сформированы изображения символа, образующего вместе с буквой N знак номера №, символа градуса и букв Я, З, И.
Эти буквы использованы для вывода сообщения «НЕТ СВЯЗИ» вместо значения температуры при отсутствии подключённого датчика.
Прошивка для микроконтроллера — Скачать.
К. Абдукаримов, г. Шымкент, Казахстан. Р-08-2014.
Термометр на PIC16F628A | Полезный изобретения на микроконтроллерах
В данной статье будет описан цифровой термометр на микроконтроллере PIC16F628A с функцией памяти максимальной и минимальной измеренных температур.
Интернет пестрит всевозможными предложениями различных цифровых термометров на микроконтроллере, попадаются и запоминающие, но (меня поймет каждый радиолюбитель) всегда хочется чего-нибудь своего!!! Так и в моем случае появилась острая необходимость сделать цифровой термометр на микроконтроллере PIC16F628A, а нужен он мне был для измерения рабочей температуры мощных симисторов в процессе отладки терморегуляторов, позднее было принято решение использовать цифровой термометр и для измерения температуры в комнате и на улице.
Особенности принципиальной схемы цифрового термометра на микроконтроллере:
- Проста в повторении;
- Малое количество деталей;
- Надежность при длительном использовании и при воздействии возможных помех.
Принципиальная схема термометра показана на рисунке 1
Рисунок 1 — Схема принципиальная
Важная деталь — принципиальная схема запоминающего термометра на микроконтроллере разрабатывалась параллельно с печатной платой, так как микроконтроллер вещь универсальная (каждый пин любого из портов можно настроить как на вход, так и на выход). Отсюда – разводим сначала печатную плату, так как нам удобно, а после рисуем принципиальную схему. Это очень удобная методика! Признаюсь не моя, подглядел на каком-то из форумов! Автору респект!!!
Теперь немного подробнее рассмотрим особенности отдельных узлов принципиальной схемы запоминающего термометра на микроконтроллере PIC16F628A.
Сердцем термометра является микроконтроллер PIC16F628A фирмы Microchip. Это довольно распространенный и не дорогой микроконтроллер. Немало важным достоинством, которого является наличие энергонезависимой памяти и внутренней RC цепочки, которую можно использовать в качестве тактового генератора с фиксированной частотой 4МГц.
В качестве датчика температуры был выбран широко распространенный цифровой датчик DS18B20 фирмы Maxim, он не дорогой и передает информацию о измеренной температуре в цифровом виде, что позволяет не заботится о длине проводов, их сечении и прочее. Датчик DS18B20 способен измерять температуру от -55… +125 °С.
Информация выводится на 3-х разрядный семисегментный индикатор с общим катодом (ОК). Резисторы R5-R12 – токоограничивающие, катоды индикатора включены через транзисторы, это сделано для того чтобы не нагружать отдельные пины микроконтроллера. Кнопка SB1 нужна для отображения максимальной и минимальной измеренной температуры, а также для сброса этих величин.
В процессе разработки цифрового термометра на микроконтроллере была создана его упрощенная виртуальная модель в программе протеус см. рисунок 2
Печатная плата цифрового термометра, показанная на рисунке 3-4, была разработана в программе Sprint-Layout 5. Если программы нет, тогда можно воспользоваться PDF файлами печатной платы термометра, которые подготовлены в масштабе 1:1. Сам ими пользуюсь. В архиве также есть платы в зеркале. Текстолит выбран двухсторонний.
Рисунок 3 — Плата печатная вид снизу
Рисунок 4 — Плата печатная вид сверху
Плату разрабатывал, учитывая воздействие возможных помех. Для этого в схему были добавлены барьерные резисторы R1, R3, R14-R15. А также два конденсатора С1-С2. Термометр на микроконтроллере PIC16F628A
Рабочая программа для микроконтроллера была написана на языке ассемблер и отлажена в MPLab v 8. 8. В результате получился вот какой термометр рисунки 5-7.
Рисунок 5 — Внешний вид термометра
Рисунок 6 — Внешний вид термометра(плюсовая температура)
Рисунок 7 — Внешний вид термометра(минусовая температура)
Рассмотрим что умеет делать термометр.При первом подключении цифрового термометра к источнику питания напряжением +5В. Однако в битах конфигурации микроконтроллера отключен детектор снижения напряжения, так что можно падавать и меньшее напряжение. На индикаторе на некоторое время высветятся три прочерка, это стартовая заставка, далее будет отображаться текущая температура датчика. Температура выводится на индикатор в диапазоне от -9,9 до 99°С с точностью до 0,1°С, в диапазоне от -55 до -10 и от 100 до 125 °С с точностью до 1°С. Незначащий первый разряд по необходимости гаситься. При первом запуске пороговые температуры обязательно перезапишутся во временной памяти, а после 5 минут и в энергонезависимой, при последующих запусках перезапись происходит только если выполняется условие превышения пороговых температур(максимальной или минимальной).
Если кратковременно нажать на кнопку SB1, то на индикатор будут поочередно выведены максимальная и минимальная измеренные температуры(и две заставки одна для максимальной -П- и одна для минимальной -U-), если кнопку нажать и удерживать до появлений трех прочерков, то произойдет сброс пороговых температур.
Термометр на PIC16F628A автоматически определяет наличие и исправность датчика DS18B20, исправность линии связи датчика DS18B20 с термометром. При отсутствии и обрыве датчика DS18B20, коротком замыкании плюсового провода с проводом информации, при переполюсовке плюсового и минусового проводов линии связи датчика DS18B20 с термометром на индикаторе появится сообщение Er1. Каждую секунду происходит повторная проверка датчика DS18B20 и линии связи. Если причина аварии будет устранена, термометр вернется к основному циклу. При коротком замыкании минусового провода линии связи с информационным проводом на индикаторе появиться сообщение Er2.
Готовую плату термометра разместил в китайском будильнике, предварительно выкинув от туда все не нужное. Вот что из этого получилось(рисунки 8, 9).
Рисунок 8 — Плата термометра в китайском будильнике
Рисунок 9 — Плата термометра в китайском будильнике
Технические характеристики:
- Диапазон измеряемых температур———————————————от -55 до +125 С
- Разрешающая способность измерения и отображения
- от-50 до -10 и от +100 до +120 С————————————————————1 С
- от-9,9 до+99,9—————————————————————————0,1 С
- Точность измерения температуры DS18B20 прибор высокой точности имеющий заводскую калибровку.
- Напряжение питания———————————————————————-5 Вольт
И так подведем итоги…. У нас получился термометр на микроконтроллере PIC16F628A с энергонезависимой памятью, которую, по желанию, можно сбросить. Выбран щадящий режим записи в энергонезависимую память. Есть возможность просмотреть самую минимальную и самую максимальную измеренную температуру одним нажатием на кнопку. Принципиальная схема термометра проста и не содержит дефицитных деталей. В схеме применяются микроконтроллер PIC16F628A и датчик температуры DS18B20. Печатная плата проработана с учетом воздействия возможных помех, размеры платы 70х42. Термометр способен работать от трех батареек типоразмера АА. Средний ток потребления 25мА. Исходный файл прошивки микроконтроллера может пригодится новичкам в программировании.
Посмотрите также:
Термометр на микроконтроллере PIC16F628A и DS18B20(DS18S20)
Файлы к статье:
Архив с платами в формате PDF
Архив с проектом
Внимание! Архив с проектом был перезалит. Устранена одна ошибка неверной записи в энергонезависимую память. Все проверено в железе. Отдельное спасибо Михаилу Маруфенко за выявление ошибки!!!
Удачи всем! И пусть детали будут только исправные!
Схема цифрового датчика температуры с использованием микроконтроллеров 8051 и AVR
Датчики температуры широко используются в электронном оборудовании для отображения температуры. Вы можете видеть цифровые часы, отображающие значение комнатной температуры. Это происходит из-за встроенного в него датчика температуры. В этом проекте я покажу вам, как спроектировать схему цифрового датчика температуры. В процессе я объясню две схемы: одна с использованием микроконтроллера 8051, а другая с использованием микроконтроллера ATmega8.
Значение температуры является аналоговым. Следовательно, он преобразуется в цифровое значение с помощью аналого-цифрового преобразователя (АЦП), а затем отображается. В этой статье описывается то же преобразование аналогового значения в цифровое значение.
[adsense1]
Outline
Принцип работы схемы цифрового датчика температуры
Основной принцип этой схемы состоит в том, чтобы принимать аналоговые значения температуры, преобразовывать их в цифровые значения и отображать цифровое значение температуры на ЖК-дисплее или 7-сегментном дисплее.
Здесь используются микроконтроллеры 8051 и ATmega8. ATmega8 имеет встроенный аналого-цифровой преобразователь с шестью мультиплексированными каналами 10-битного разрешения. Это уменьшает взаимодействие внешнего аналого-цифрового преобразователя IC. Аналоговое значение температуры напрямую подается на входные каналы АЦП микроконтроллера. Метод последовательного приближения используется для внутреннего аналого-цифрового преобразования.
Но в случае с микроконтроллером 8051 (в данном проекте используется AT89C51) он не имеет встроенного АЦП, как ATmega8. Следовательно, я собираюсь соединить внешнюю микросхему АЦП ADC0804 с микроконтроллером 8051 для преобразования аналоговых значений температуры в цифровые значения.
[адсенс2]
Связанный пост: Термометр со шкалой Цельсия, использующий микроконтроллер AT89C51
Цепь цифрового датчика температуры с использованием 8051
Принципиальная схема
Необходимые компоненты
- AT89C51 (8051 микроконтроллер)
- 11,0592 МГц Cystal
- 2 конденсатора 33 пФ
- Конденсатор 10 мкФ/16 В
- 3 резистора 10 кОм
- Блок резисторов 1 кОм x 8
- потенциометр 10 кОм
- ЖК-дисплей 16X2
- АЦП0804
- ЛМ35
- Конденсатор 150 пФ
- Резистор 330 Ом
- Блок питания
- Соединительные провода
- 8051 Программатор
Схемотехника
Контакты цифровых выходов микросхемы АЦП подключены к контактам PORT3 микросхемы 8051. Контакты PORT0 подтянуты с помощью блока резисторов 1 кОм и подключены к контактам данных ЖК-дисплея 16×2. P2.0 и P2.1 8051 подключены к RS и E LCD.
LM35 подключен к контакту аналогового входа VIN+ (контакт 6) ADC0804. Основные компоненты, такие как осциллятор, сброс и т. д., здесь не объясняются.
Код
Рабочий
После выполнения всех подключений и записи кода на микроконтроллер 8051 включите питание. Датчик температуры LM35 передает аналоговые данные о температуре на ADC0804, которые он преобразует в цифровые значения и отправляет на 8051.
После получения цифровых значений микроконтроллер 8051 выполняет небольшой расчет, а затем отображает температуру на ЖК-дисплее.
Цепь цифрового датчика температуры с использованием ATmega8
Схема цепи
Схема цепи цифрового датчика температурыКомпоненты цепи:
- Резисторы – R1–R7 номиналом 330 Ом каждый.
- Датчик температуры LM35
- Микроконтроллер ATmega8
- 7-сегментный дисплей
Схема цифрового датчика температуры
Цифровая схема датчика температуры состоит из микроконтроллера ATmega8, датчика температуры LM35, 7-сегментного дисплея. Датчик температуры Lm35 подключен к одному из каналов АЦП микроконтроллера.
ATmega8 имеет шесть каналов АЦП на порту C. Контакты PC0-PC5 Atmega8 действуют как каналы АЦП. Это показывает, что можно связать шесть аналоговых значений. Но за один раз выполняется только одно преобразование в зависимости от приоритета входных каналов. Разрешение АЦП 10 бит. Помните, что для преобразования Vref и Avcc подключаются извне, как показано на схеме.
Как правило, все контакты порта микроконтроллера ATmega8 действуют как обычные контакты ввода/вывода, пока не будут объявлены их специальные функции. Регистры АЦП внутри контроллера должны быть объявлены, чтобы порт C действовал как канал АЦП.
Датчик температуры Lm35 имеет три контакта. Поместите плоскую поверхность к себе, первый контакт — это Vcc, второй контакт — это выход, а третий контакт — это земля. Выходной контакт датчика температуры подключен к первому каналу АЦП, т.е. контакту PC0 микроконтроллера.
Семисегментный дисплей имеет восемь контактов и один общий контакт. Оставив Dp, подключите все семь контактов к порту B. Подключите A к PB0, B к PB1,_____, G к PB6. Используемый здесь семисегментный дисплей представляет собой обычный катодный дисплей. Между контроллером и дисплеем использовались токоограничивающие резисторы.
Видео моделирования цепи цифрового датчика температуры
Как работать с цепью цифрового датчика температуры?
Сначала подайте питание на цепь. Микроконтроллер постоянно проверяет вход на канал АЦП. Он преобразует аналоговую температуру в цифровое значение и отображается в семи сегментах. Увеличивайте или уменьшайте значение температуры, нажимая на стрелки под дисплеем датчика температуры. Всякий раз, когда происходит изменение, канал АЦП преобразует ввод и отображает его в виде семи сегментов. Отображаемое значение температуры в два раза превышает исходное значение. Это происходит из-за различий в размере шага. Итак, перед отображением значения разделите значение на 2 и вычтите из него 1, чтобы отобразить точное значение.
Алгоритм программирования для микроконтроллера
Следующие шаги объясняют, как настроить внутренние регистры АЦП микроконтроллера ATmega8 и отобразить значение на семисегментном дисплее.
- Первоначально выберите один канал из шести каналов АЦП, к которому подключен датчик температуры, и выберите источник опорного напряжения с помощью регистра ADMUX.
Пример: ADMUX=01000000.
Если выбран канал ADC0 и выбран Avcc с внешним конденсатором на выводе Aref
- Включите АЦП и выберите предварительно скалярное значение с помощью регистра ADCSRA.
Пример: ADCSRA = (1<
- Проверить бит флага в регистре ADCSRA, который устанавливается после завершения преобразования.
- Считайте значение из регистра ADC и назначьте значение порту B, которое отображается в семи сегментах.
- Полученное двузначное значение может быть отображено на двух семи сегментах.
Цифровой датчик температуры Выходной видеоматериал проекта
Применение схемы цифрового датчика температуры
- Цифровые датчики температуры широко используются в повседневной жизни
- Они используются в экологических целях.
- Цифровые датчики температуры можно найти в кондиционерах, где они регулируют температуру в зависимости от температуры в помещении.
- Их можно увидеть в цифровых часах, показывающих комнатную температуру вместе со временем.
- Его можно использовать на приборных панелях в автомобиле для отображения температуры двигателя, чтобы избежать внезапной остановки из-за перегрева.
- Нет необходимости во внешней микросхеме АЦП для преобразования в случае ATmega8.
Цифровой дисплей термометра на базе микроконтроллера — Подвал схем
Имея подходящий микроконтроллер, цифровой датчик температуры, карту памяти SD и немного ноу-хау, вы можете создать собственный цифровой дисплей термометра для наружного применения. Статья Томми Тайлера в июльском номере журнала Circuit Cellar объясняет, как он построил такую систему. Он тщательно детализирует аппаратное обеспечение, прошивку и процесс сборки.
Ниже приводится сокращенная версия статьи о проекте Тайлера. (Полная статья находится в Circuit Cellar 264 .)
Сборка цифрового термометра на основе MCU
Томми Тайлер
Не знаете, что делать с неиспользуемой цифровой фоторамкой? С небольшими усилиями в раму можно установить крошечную печатную плату, чтобы превратить цветной экран тонкопленочного транзистора (TFT) в «совершенный» дисплей наружного термометра (см. 9).0022 Фото 1 ). Представьте себе термометр с реальными числовыми цифрами (а не с семисегментными фигурками), достаточно большой, чтобы его можно было считывать на расстоянии от 40 до 50 центов при любых условиях освещения. Объедините это с безбликовым, высококонтрастным экраном, широкими углами обзора и точностью ±0,5°F без калибровки, и вы получите замечательный термометр, который является скорее произведением искусства, чем инструментом, и может быть настроен и настроен. гордо выставлены.
Можно использовать цифровую фоторамку практически любого размера и любой марки, хотя фоторамка с диагональю экрана 4,5 или 7 дюймов идеальна для цифр высотой 2 дюйма. Если у вас нет выброшенной рамы для использования, некоторые сделки доступны менее чем за 30 долларов, если вы их ищете. Поищите в Интернете распроданные, отремонтированные или открытые устройства. Модификации легкие. Просто просверлите несколько отверстий и припаяйте несколько проводов. Печатная плата размером с почтовую марку разработана с компонентами для поверхностного монтажа, поэтому она достаточно мала, чтобы ее можно было спрятать внутри рамы. Ни одна из модификаций не мешает вам использовать рамку так, как она изначально задумывалась, для показа фотографий.
— РЕКЛАМА —
— Реклама здесь —
Фото 1: TFT-экран легко трансформируется в уличный термометр с добавлением небольшой печатной платы.
ФОТОРАМА ДИСПЛЕЙ
Хотя цифровые фоторамки различаются по деталям и функциям, их основные функции схожи. Почти все они могут хранить изображения во внешней памяти, обычно на небольшой SD-карте, подобной используемой в цифровых камерах. У большинства есть полдюжины или около того кнопочных переключателей, которые управляют работой рамки и выбирают то, что отображается. Обычно есть кнопка «Меню», кнопка «Ввод» или «Выбор» и несколько кнопок курсора для навигации по экранным меню.
Фоторамки имеют режим просмотра слайд-шоу, который автоматически последовательно перемещается по изображениям. Вы можете установить время отображения каждого изображения по своему усмотрению. Вы также можете отключить таймер и использовать ручной пошаговый режим слайд-шоу, в котором выбранное изображение постоянно отображается до тех пор, пока нажатием кнопки не будет выбрано другое. Это режим работы, используемый для термометра, и он является ключом к его точности.
Фоторамка загружена изображениями всех возможных температур в точном порядке возрастания. После включения кадр переходит в режим слайд-шоу, отображая первое изображение в памяти, которое обеспечивает известную начальную точку. Основываясь на повторных измерениях температуры, кадр продолжает увеличивать или уменьшать изображение на 1° за раз, пока отображаемая температура не совпадет с истинной температурой. После этой начальной синхронизации показания дисплея просто увеличиваются или уменьшаются всякий раз, когда температура повышается или падает на 1° или более.
Рамка реагирует настолько надежно, что дисплей никогда не рассинхронизируется с реальной температурой. После отключения питания термометр автоматически ресинхронизируется. На самом деле, для интересной и успокаивающей демонстрации в любое время достаточно на мгновение отключить питание. Синхронизация может занять минуту или около того из-за времени отклика системы, но это не считается проблемой, поскольку предположительно перебои с питанием будут нечастыми.
ОПИСАНИЕ ЦЕПИ
Рисунок 1 показывает схему термометра. Микропроцессор PIC18F14K22 U1 компании Microchip Technology периодически опрашивает U3, откалиброванный на заводе «интеллектуальный» датчик температуры, который передает цифровое значение текущей температуры через контакт ввода/вывода RC5. Выходные контакты PIC RC4 и RC3 управляют секциями U2, четырехъядерного аналогового переключателя Texas Instruments TS3A4751 SPST с чрезвычайно низким сопротивлением в открытом состоянии. Два из этих полупроводниковых переключателей подключены параллельно механическим переключателям в раме, которые увеличивают и уменьшают отображаемую температуру. RC6 обеспечивает дополнительный выход на тот случай, если вы работаете с редкой фоторамкой, для которой требуется нажатие третьего переключателя для перехода в режим слайд-шоу…
Рисунок 1: На этой схеме термометра показана часть фоторамки Coby DP700 с входом компаратора напряжения, который реагирует на разные уровни напряжения от его переключателей > и <.
Рисунок 1 включает часть схемы Coby DP700, показывающую такое расположение. Переключатели SW3 (>) и SW4 (<) совместно используют входной контакт 110 микросхемы процессора кадров (U100). SW3 понижает напряжение примерно до 1,5 В, чтобы увеличить дисплей, а SW4 понижает его до 0 В, чтобы уменьшить его. Если вы можете получить доступ к клеммам для пайки этих переключателей, вы можете построить этот проект. Использование твердотельного аналогового переключателя для U2 позволяет плате управления PIC работать практически с любой моделью фоторамки, не беспокоясь о напряжении, полярности или конфигурации схемы переключателя.
Выход PIC RB7 постоянно передает информацию обо всем, что делает термометр. Транзистор Q1 обеспечивает стандартный последовательный выход RS-232 со скоростью 38400 бит/с, без контроля четности и двумя стоповыми битами, используя вывод DTR для подтягивания напряжения. Это в основном для тестирования, устранения неполадок или, возможно, экспериментов с изменениями прошивки. Плата также включает в себя стандартный интерфейс внутрисхемного последовательного программирования (ICSP) для программирования PIC с помощью программатора/отладчика Microchip PICkit2 или аналогичного инструмента программирования.
— РЕКЛАМА —
— Реклама здесь —
На фото 2 показана печатная плата термометра в сборе…
Фото 2: Печатная плата термометра в сборе. Пятиконтактный разъем представляет собой прямой разъем для программатора Microchip PICkit2. Трехконтактный разъем является диагностическим последовательным выходом.
ЧТО ПОД КАПОТОМ?
В качестве примера для проекта я использовал фоторамку Coby DP700, потому что она широко доступна, легко модифицируется и имеет отличное качество по низкой цене. На рис. 2 показаны основные компоненты этой рамы…
Рисунок 2: Основные компоненты фоторамки Colby DP700
Плоский кабель достаточно длинный, чтобы дисплей мог открываться примерно на 90°, но не более того. Из-за этого неудобно держать его открытым при подключении проводов, если только у вас больше рук, чем у меня. Одним из решений является использование держателя, сделанного из обрезков древесины, для защиты ленточного кабеля от напряжения или повреждения во время модификации и тестирования.
Отрежьте кусок обычной сосновой доски размером 1″ × 4″ длиной ровно 7,5″. Срежьте фаски на противоположных концах доски внизу с одной стороны и сделайте надрез в центре этой кромки (см. фото 3a ). Ослабьте лицевую панель и сдвиньте ее вверх настолько, чтобы можно было вставить плату в задний корпус рядом с нижней частью, ниже нижнего края лицевой панели (см. , фото 3b ).
Фото 3а: Нижняя кромка сосновой доски надрезана и скошена. b: Плата прикреплена к заднему корпусу внизу, под нижним краем лицевой панели.
Скошенные углы платы должны выходить за внутренний радиус заднего корпуса. Временно скрепите лицевую панель и заднюю часть корпуса скотчем, пока вы закрепляете плату на месте двумя из четырех винтов лицевой панели. Оставьте плату установленной, пока не завершите весь проект, включая все испытания.
Если вам нужно получить доступ к основной печатной плате, чтобы припаять провода и установить плату PIC, поверните лицевую панель и дисплей перпендикулярно задней части корпуса, как открытую книгу, и надежно закрепите их на монтажной плате с помощью липкой ленты (см. Фото 4a ). Позже, во время настройки и тестирования, когда вам нужно будет видеть экран, поверните лицевую панель и дисплей обратно вниз и прикрепите их к задней части корпуса с помощью липкой ленты (см. , фото 4b ).
Фото 4a. Лицевая панель и дисплей надежно прикреплены к монтажной плате с помощью липкой ленты. b: Во время настройки и тестирования лицевую панель и дисплей можно откинуть вниз и прикрепить к задней части корпуса с помощью липкой ленты.
МЕХАНИЧЕСКИЕ МОДИФИКАЦИИ
Единственная механическая модификация — добавление 3,5-мм стереоразъема для подключения выносного датчика температуры. Возможно, вам удастся просверлить в раме отверстие диаметром 0,25 дюйма и прикрепить домкрат с помощью кольцевой гайки с накаткой. Но иногда штекер стерео торчит так, что портит внешний вид рамки или мешает закрепить ее на стене. Вот способ установки домкрата, который удерживает его и кабель датчика вплотную к задней части рамы и вне поля зрения.
Отрежьте кусок перфорированной проектной доски размером 0,6″ × 0,7″ и расширьте от трех до пяти отверстий, которые совпадают с клеммами на боковой стороне домкрата, с помощью сверла 3/32″ (см. Рисунок 3). Перфорированная панель действует как прокладка для стереоразъема при приклеивании к корпусу.
Рис. 3: Перфорированная плата отделяет разъем от задней части корпуса, освобождая стереоразъем.
Прежде чем что-либо прикреплять к перфорированной плате, используйте ее в качестве ориентира для сверления соответствующих отверстий для клемм в задней части корпуса. Выберите положение внизу и справа в углублении, чтобы оно не задевало разъем питания, но не выступало ниже нижнего края заднего корпуса (см. 9).0022 Фото 5 )…
Фото 5: Используйте перфорированную доску в качестве направляющей для сверления
ОКОНЧАТЕЛЬНАЯ ПРОВОДКА
Руководствуясь схемой подключения в фото , фото 6 , сначала подготовьте основную печатную плату, подключив шесть изолированных проводов длиной от 8 до 10 дюймов, один провод на 3,3 В, один провод на землю, два провода на SW4 и два провода к SW3.
Фото 6: Схема подключения
Припаяйте к плате PIC все девять проводов — шесть от основной платы и три от стереоразъема. Обрежьте лишнюю длину проводов, чтобы плата PIC легко располагалась на пустом месте рядом с основной печатной платой. Прокладывайте провода так, чтобы они не защемились при замене лицевой панели и дисплея. Используйте клейкую ленту, чтобы закрепить все на месте и предотвратить короткое замыкание платы PIC.
ДАТЧИК ЗАЩИТЫ ОТ ПОГОДЫ
— РЕКЛАМА—
—Реклама—
Цифровой датчик температуры Microchip DS18S20 представляет собой трехвыводной корпус того же размера, что и транзистор TO-92 (см. Рисунок 4 )…
Изоляция коротких сращенных проводов с помощью защитной оболочки всегда является проблемой, поскольку защитная оболочка мешает пайке. Один из способов сделать зонд маленьким и прочным — капнуть немного быстросхватывающейся эпоксидной смолы на припаянные выводы, предварительно убедившись, что они не соприкасаются, и медленно вращать устройство в течение нескольких минут, пока эпоксидная смола не перестанет течь и не начнет затвердевать. . Защитите всю сборку от атмосферных воздействий с помощью термоусадочной трубки диаметром 0,25 дюйма или около того.
ЗАГРУЗКА ИЗОБРАЖЕНИЙ В ПАМЯТЬ
Некоторые фоторамки не имеют встроенной памяти, поэтому для температурных изображений я использовал съемную карту памяти SD. Это также позволяет легко изменить внешний вид дисплея в любое время. Емкости любой карты, которую вы сможете найти, более чем достаточно, так как средний размер изображений составляет всего около 25 КБ каждое, а 141 из них — менее 5 МБ. Хорошим источником стандартных SD-карт емкостью 32 МБ является OEMPCWorld. Их SD-карты стоят менее 4 долларов каждая, включая бесплатную доставку почтой первого класса почтовой службы США. Просто введите на их сайте «32-мегабайтная SD-карта».
Доступен загружаемый пакет с изображениями в формате 16 × 9, показывающими температуру в диапазоне от –20 до 120°F цифрами высотой около 2″. Изображения 16 × 9, естественно, подходят для экрана Coby и большинства других брендов. Также есть набор изображений 4 × 3 для кадров с таким форматом. На самом деле, любой размер будет работать в любом кадре. Если вы используете изображения 4 × 3 в Coby 16 × 9 с параметром Show Type, настроенным как Fit Screen, по бокам будут полосы. Но если он настроен на полноэкранный режим, изображения будут расширяться, чтобы убрать полосы, а цифры будут высотой около 2–5/8 дюймов.
Имена загружаемых файлов имеют последовательный числовой префикс от 100 до 240, поэтому Windows перечислит их по порядку, прежде чем вы скопируете их на SD-карту. Обратите внимание, что последовательность изображений следующая: 70°, 71°, 72°…119°, 120°, –20°, –19°, –18°…–2°, –1°, 0°, 1° , 2°…67°, 68°, 69°. На первом фото не самая низкая температура. Таким образом, синхронизация может начинаться с 70°, а не с -20°. Вы можете разделить температурный диапазон таким образом, пока на SD-карте нет посторонних изображений, потому что кадр рассматривает SD-карту, по сути, как бесконечную кольцевую память, оборачиваясь от самого высокого к самому низкому изображению при увеличении, и от низшего к высшему при уменьшении…
НАСТРОЙКА И ЗАКЛЮЧИТЕЛЬНЫЙ ТЕСТ
Перед подключением или отключением датчика температуры всегда лучше убедиться, что питание рамы отключено. Расположите рамку так, чтобы был виден экран. Подключите датчик и SD-карту, затем подключите питание к раме. Через несколько секунд то, что вы увидите на экране, будет зависеть от того, как кадр использовался и настраивался в последний раз. Он может начать показывать изображения из внутренней памяти или может начать показывать изображения температуры с SD-карты. В любом случае изображения, вероятно, на какое-то время начнут быстро меняться, потому что кадр думает, что синхронизирует свое начальное отображение с температурой сенсора. Вы не можете использовать экранные меню для проверки настроек кадра, пока он пролистывает все эти изображения, поэтому вам придется подождать. Через пару минут, когда все уляжется и дисплей перестанет быстро меняться, нажмите «Меню», чтобы открыть главное меню. С помощью кнопок со стрелками влево или вправо выберите подменю «Настройка», затем с помощью кнопок «Ввод», «Влево», «Вправо», «Вверх» и «Вниз» установите следующие параметры: «Время интервала» = «Выкл.», «Эффект перехода» = «Без эффекта», «Тип показа» = По размеру экрана, волшебное слайд-шоу = выкл.…
После завершения всех настроек на мгновение отключите питание от рамы и убедитесь, что она правильно включается. На несколько секунд должен появиться логотип Coby, а затем первое изображение в памяти, начальная температура 70°F. Примерно через 12 с дисплей должен начать изменяться с шагом в 1°, пока не дойдет до текущей температуры датчика. Нагрейте датчик рукой, чтобы убедиться, что датчик реагирует.
Самое время продемонстрировать индикатор ошибки, встроенный в термометр, чтобы предупредить вас, если PIC не может связаться с датчиком температуры. Отключите питание и отсоедините датчик, затем восстановите питание при отключенном датчике. Отображение начнется с 70 ° F, как и раньше, но на этот раз оно будет увеличиваться, пока не достигнет 9.9°F, где он остановится. Поэтому, если вы когда-нибудь заметите, что дисплей застрял на 99 °, когда вы знаете, что на улице не так жарко, проверьте, не отключен ли датчик или поврежден.
Если кажется, что все работает правильно, вы можете пропустить следующий раздел по устранению неполадок. Закройте раму и начните думать, как и где вы будете ее устанавливать…
О ПРОШИВКЕ
Авторство разработки прошивки PIC принадлежит Кевину Р. Тиммерману — талантливому внештатному инженеру-разработчику программного обеспечения и владельцу веб-сайта Compendium Arcana, — который сотрудничал со мной в этом проекте. Задний двор Кевина в Мичигане, а также мой в Колорадо были площадками для бета-тестирования дизайна.
Загрузка микропрограммы включает файл Temperature.hex, необходимый для программирования PIC, а также следующие исходные файлы на случай, если вы захотите внести изменения:
inverted_main.c
one_wire.c
предохранители_14k22.c
one_wire.h
стандарт.ч
Файл с именем one_wire.c предназначен исключительно для отправки и получения сообщений к/от датчика температуры. Если вы используете фоторамку, отличную от Coby DP700, к которой предъявляются особые требования, единственный файл, который вам может потребоваться изменить, это inverted_main.c. Прошивка доступна на FTP-сайте Circuit Cellar.
НЕОГРАНИЧЕННЫЕ ВАРИАНТЫ
Когда вы закончите проект, вы будете удовлетворены знанием того, что у вас, вероятно, самый точный термометр в округе — при условии, что вы примете разумные меры предосторожности при обнаружении датчика. Не размещайте его на солнце или вблизи источников тепла (например, вентиляционных отверстий или воздуховодов). Даже размещение его слишком близко к плохо изолированной стене, крыше или окну может повлиять на его точность. В Интернете есть статьи о лучших местах для установки уличных термометров.
Даже после того, как вы завершили свои модификации рамы и закрыли ее обратно, существует бесконечное количество способов настроить проект на свой вкус…
Для тех, кто живет за границей или привык выражать температуру в градусах Цельсия, в загрузку включен альтернативный набор изображений, охватывающий диапазон от –28,9°C до 48,9°C. Такие изображения, как 70°F, 71°F, 72°F и т. д., заменяются их эквивалентами по Цельсию 21,1°C, 21,7°C, 22,2°C и т. д. Контроль термометра не может определить разницу. Он продолжает увеличивать и уменьшать изображения, как если бы он отображал температуру в градусах Фаренгейта. Показывая температуру в десятых долях градуса Цельсия, точность термометра остается неизменной. Датчик температуры по своей сути является стоградусным устройством, и можно модифицировать прошивку PIC, чтобы использовать сообщаемую температуру в градусах Цельсия, никогда не преобразовывая ее в градусы Фаренгейта. Но этот метод намного проще и позволяет переключаться между градусами Цельсия и Фаренгейта, просто заменяя SD-карту…
Томми Тайлер с отличием окончил Университет Вандербильта по специальности «Машиностроение». Он ушел на пенсию после того, как более 40 лет руководил проектированием промышленных приборов, медицинской электроники, бытовой электроники и встроенных роботизированных систем транспортировки материалов. Томми получил 17 патентов с 1960 по 1995 год. Его текущие увлечения — электроника, техническое письмо и иллюстрация, а также музыка. Томми является экспертом форума JP1 по технологии инфракрасного дистанционного управления.
ИСТОЧНИКИ
Цифровая фоторамка DP700
Коби Электроникс Корп.