На рисунке показана схема термометра выполненного на основе микроконтроллера PIC16F628A, в качестве датчика используется цифровой датчик температуры DS18B20. Индикатор термометра состоит из 4-х разрадного семисегментного индикатора. Диапазон измеряемой температуры от -55 до + 125 градусов Цельсия. Температура считывается каждые 15 секунд, время считывания можно изменить в коде.
Напряжение питания термометра 5В, ток потребления 90 мА. В схеме используются транзисторы BC337 или аналогичные. Ток потребления каждого сегмента индикатора 15 мА (динамическая индикация), который ограничен резисторами 220 Ом (индикатор с общим катодом).
Файл прошивки —
DS18B20 цифровой термометр с программируемым разрешением, от 9 до 12–bit, которое может сохраняться в EEPROM памяти прибора. DS18B20 обменивается данными по 1-Wire шине и при этом может быть как единственным устройством на линии так и работать в группе. Все процессы на шине управляются центральным микропроцессором.
Диапазон измерений от –55°C до +125°C и точностью 0.5°C в диапазоне от –10°C до +85°C. В дополнение, DS18B20 может питаться напряжением линии данных (“parasite power”), при отсутствии внешнего источника напряжения.
Каждый DS18B20 имеет уникальный 64-битный последовательный код, который позволяет, общаться с множеством датчиков DS18B20 установленных на одной шине. Такой принцип позволяет использовать один микропроцессор, чтобы контролировать множество датчиков DS18B20, распределенных по большому участку. Приложения, которые могут извлечь выгоду из этой особенности, включают системы контроля температуры в зданиях, и оборудовании или машинах, а так же контроль и управление температурными процессами.
Войти с помощью:
На рисунке показана схема предварительного усилителя с тембро-блоком, тембро-блок включен в цепь обратной связи предварительного усилителя. Напряжение питания уст-ва может варьироваться от 12 до 24В, потребляемый ток не более 10 мА. Входной сигнал поступает через разделительный конденсатор С1, резисторы R1 и R2 определяют напряжение смещения транзистора VT1, после предварительного усиления …
Цифровой термометр, собранный самостоятельно с нуля, не только послужит вам по своему прямому предназначению, но, как и всё, что сделано своими руками, повысит вашу самооценку (а может быть, через несколько лет станет дорог и как память).
Без сомнения, цифровой термометр в хозяйстве - вещь полезная, но мало функциональная: кроме измерения температуры, ни на что больше не ориентирована. В этом плане термометр на микроконтроллере окажется более полезным, поскольку имеет возможность включать и выключать какую-либо нагрузку в зависимости от изменения температуры.
Однако в том случае, если вам хочется сделать что-то стоящее своими руками, то, как первый шаг, такая конструкция себя вполне оправдывает - приобретаемый вами опыт бесценен.
Итак, для начала выберем наипростейшую схему термометра, построенного на микроконтроллере PIC16F84A, цифровом датчике температуры DS18B20, обладающем точностью измерения до 0,5 градуса, и четырёхразрядном светодиодном индикаторе с общим анодом. В моём случае применён дисплей FYQ-3641BG-21E.
Достоинством схемы является её простота - из дискретных элементов нам понадобятся десяток резисторов, несколько конденсаторов и кварцевый резонатор на 4 МГц. Основной недостаток - как и все электронные устройства, терморегулятор нуждается в источнике питания.
Применение батареек делает прибор мобильным, но срок работы от одного комплекта батареек может составить всего 1-2 недели. Запитывание термометра от сетевого блока питания "привязывает" его к какой-либо розетке, что не всегда удобно.
Добавлю, что на схеме не показано подключение питания к микроконтроллеру - плюс питания подаётся на 14 вывод, а минус - на 5 вывод микросхемы.
Описание работы термометра
Назначение этого термометра всего лишь показывать температуру. Небольшие отличия от других подобных схем только в формате вывода температуры на LED индикатор, который представляет из себя 4-х разрядный сверхяркий CA04-41SRWA. В качестве датчика температуры применён DS18B20 в обычном включении с отдельным проводом питания.Показания присутствуют на индикаторе в течение 30 секунд. Затем прибор снова уходит в спящий режим и индикатор выключается.
Моделирование термометра в протеусе
Принципиальная схема термометра
Печатная плата термометра
Схема термометра на ATmega8 и DS18B20
Цифровой термометр DS18B20
Семисегментный светодиодный индикатор
Алгоритм программы термометра
Программа цифрового термометра на DS18B20
Схема и программа очень простого цифрового термометра с использованием микроконтроллера ATmega8 и датчика температуры DS18B20 . Термометр позволяет измерять температуру от 0 до 99 градусов с точностью до 0,5 градусов с разрешением 0,1 градуса
Термометр по своим характеристикам очень прост, и его можно использовать только как термометр для измерения «комнатной» температуры. Использовать в этой конструкции микроконтроллер с памятью 8 килобайт конечно расточительно, можно применить микроконтроллер и попроще. Но дело в том, что эта конструкция — основа для дальнейшего развития проекта с использованием цифрового датчика температуры DS18B20. В следующей статье будет опубликована конструкция другого термометра — на двух датчиках DS18B20, что позволит измерять температуру не только в комнате, но и «за бортом». Естественно, будет добавлена возможность измерять и отрицательные температуру. В дальнейшем в конструкцию будет добавлена функция термостата, часы, возможность работы с различными нагрузками, что позволит уже собрать несложную конструкцию — основу «умного дома». Ну а сегодня первая статья из этой серии.
Давайте посмотрим на схему термометра:
Как видите, схема очень проста, используется только необходимый минимум деталей.
В схеме, для индикации показаний, применен семисегментный трехразрядный светодиодный индикатор .
Напряжение питания конструкции
— 5 вольт. Если вы примените микроконтроллер с низковольтным питанием , то можно и понизить питающее напряжение конструкции, но в этом случае, возможно придется уменьшить номинал гасящих сопротивлений в сегментах индикатора. Приблизительно номиналы сопротивлений можно брать:
— при питании 5 вольт — 200-300 Ом
— при питании 2,7 — 3 вольта — 100-150 Ом
Транзисторы
— любые, маломощные, структуры NPN.
Датчик температуры
— DS18B20
Семисегментный индикатор
— любой трехразрядный с общим катодом. Если вы захотите применить другие, с общим анодом, тогда придется заменить транзисторы на PNP и внести изменения в программу (заменить массив двоичных кодов для вывода цифр на индикатор). Я применил индикатор красного цвета свечения, и заодно, для следующей схемы, приготовил такой-же, но голубого цвета свечения.
Распиновка микроконтроллера ATmega8:
Трехразрядный семисегментный индикатор FYT-5631AUR-21:
Датчик температуры DS18B20:
Транзисторы BC547C:
Все установки микроконтроллера заводские, FUSE-биты трогать не надо.
Для работы программы задействовано два таймера/счетчика микроконтроллера:
— восьмиразрядный Т0
— шестнадцатиразрядный Т1
С помощью восьмиразрядного таймера
Т0 настроенного на вызов прерывания по переполнению, с внутренней частотой СК/8 (период 2 миллисекунды) организован:
— расчет текущей температуры
— динамический вывод результатов измерения температуры датчиком DS18B20
С помощью шестнадцатиразрядного таймера
Т1 настроенного на вызов прерывания по переполнению, с внутренней частотой СК/64 (период 4 секунды) организованно:
— подача команды датчику DS18B20 на измерение температуры
— считывание измеренной температуры с датчика
В принципе, можно задействовать и один восьмиразрядный таймер/счетчик, также настроенный на вызов прерывания по переполнению, с внутренней частотой СК/8, и всю работу схемы организовать в процессе обработки прерывания. Но дело в том, что смысла в этом нет — датчику DS18B20 необходимо чуть меньше 1 секунды (при 12-ти битном разрешении) для конвертирования (определения) температуры, т.е., чаще чем 1 раз в секунду мы не сможем обновлять данные температуры. Кроме того, столь частое обновление температуры приведет к нагреву датчика и, соответственно, к искажению реальных данных. Использование второго счетчика позволяет отдельно задавать промежутки времени измерения температуры.
Вот так выглядит основная часть программы в Algorithm Builder:
Где:
— SP — настройка начального адреса стека
— Timer 0 — настройка таймера T0:
— Timer 1 — настройка таймера Т1:
— TIMSK — настройка прерываний от таймеров:
— Init_Display — подпрограмма настройки разрядов портов, участвующих в динамической индикации вывода данных на трехразрядный семисегментный индикатор
— 1 —> I — глобальное разрешение прерываний
Если возникнут вопросы, если что-то изложено не понятно или есть вопросы по программе, пишите — отвечу.
(2,4 KiB, 7 004 hits)
В данной статье проведем обзор цифрового термометра , построенного на микроконтроллере Attiny2313 , снабженного выносным цифровым датчиком DS18B20 . Пределы измерения температуры составляет от -55 до +125 градусов Цельсия, шаг измерения температуры составляет 0,1 градус. Схема очень простая, содержит минимум деталей и ее запросто можно собрать своими руками.
Самодельный электронный термометр с выносным датчиком построен на всем известном . В роли температурного датчика выступает микросхема DS18B20 фирмы Dallas. В схеме термометра можно применить до 8 цифровых датчиков. Микроконтроллер взаимодействует с DS18B20 по протоколу 1Wire.
Вначале происходит поиск и инициализация всех подключенных датчиков, затем с них происходит считывание температуры с последующим выводом на трехразрядный семисегментный индикатор HL1. Индикатор может быть применен как с общим катодом (ОК), так и с общим анодом (ОА). Подобный индикатор так же был применен . Под каждый индикатор имеется своя прошивка. Измерять температуру можно как дома, так и на улице, для этого необходимо вынести DS18B20 за окно.
Для Attiny2313 необходимо выставить фьюзы следующим образом (для программы