Термометр на pic16f628a с двумя датчиками. Делаем простой термометр на микроконтроллере. Алгоритм работы программы термометра на ATmega и DS18B20

10.09.2024

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

Схема нового термостата представлена на рисунке 1.

В принципе она почти ничем не отличается от своих . Вообще это огромный плюс схем с применением микроконтроллеров.
Основа схемы — микроконтроллер PIC16F628A. В качестве датчика применен один из известных и популярных цифровых датчиков температуры DS18B20. Показания реальной температуры, величина устанавливаемой температуры стабилизации и необходимого гистерезиса выводится на семисегментный светодиодный трехразрядный индикатор с общим анодом. Резисторы R1…R4, это подтягивающие резисторы. R1 подтягивает шину передачи данных с датчика температуры DS18B20 к шине питания схемы плюс пять вольт. R2…R4 подтягивают соответствующие выводы микроконтроллера к шине плюс пять вольт.

Резисторы с пятого по двенадцатый, являются гасящими резисторами, или ограничивающими применительно к току, протекающему через светодиоды. Изменяя номинал этих резисторов, можно регулировать яркость свечения сегментов индикатора. Иногда встречаются индикаторы с разной яркость свечения отдельных сегментов, этот дефект так же можно устранить при помощи этих резисторов. Для установки температуры термостатирования применены две кнопки с соответствующими знаками «+» и «-», это кнопки SB2 и SB3. Этими же кнопками устанавливается необходимый вам гистерезис, от 0,1 ˚С до 0,9˚С при нажатой кнопке SB1 — «Гистерезис». Сигнал управления коммутирующим ключом снимается с вывода 17 микросхемы DD1. Схему ключа я не стал рисовать, выберите сами, например, из статьи « »

Обращаю ваше внимание, что в железе я устройство не проверял, все было промоделировано в Протеусе.

Соответственно печатную плату не рисовал, но если у вас появится желание повторить данный термостат, рисунок можете выслать мне на адрес — [email protected] Начинающим «радиогубителям» (шутка), это очень пригодится. Я не в курсе затей тех посетителей, которые просили об усовершенствовании термостата, но возможно это были химики, для которых важна точность температуры растворов. Я, думаю, и вы найдете применение этому устройству. Не плохо бы было, если бы и вы прокомментировали, где можно применить его. Успехов. К.В.Ю.

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

Предел измерения термометра от -55,0°С до +125,0°С. Датчик DS18B20 оцифровывает температуру с шагом 0,0625°С. На индикаторе результат измерения выводится с точностью 0,1°С. Реально производитель заявляет от погрешности +/- 0,5°С в диапазоне от -10°С до +85°С.

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

Схема:

Схема рисовалась по рисунку печатной платы, т.к. сначала придумывался дизайн, затем разводились электрические соединения, потом писалась программа и т.д.

Конструкция:


Конструктивно термометр собран на двух платах: плата индикации и плата контроллера. Платы расположены одна над другой и соединены через межплатные разъемы.

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

Незначащий ноль не гасится, инициализация на +85,0°С не игнорируется (ну не интересно это было делать). В первом разряде в случае отрицательной температуры высвечивается символ "-" (минус).
Для любителей синтетического моделирования собран проект в Proteus Professional 7.2 SP6.

На МК. Сердцем его является микроконтроллер PIC16F628A. В схеме термометра используется 4-х значный или 2+2 светодиодный индикатор с общим анодом. Датчик температуры используется типа DS18B20, и в моем случае показания датчика отображаются с точностью 0,5*С. Термометр имеет пределы измерения теемпературы от -55 до +125*С, что достаточно на все случаи жизни. Для питания термометра была использована обычная зарядка от мобилы на ИП с транзистором 13001.

Принципиальная схема термометра на микроконтроллере PIC16F628A:

Для прошивки PIC16F628A я использовал программу ProgCode, установив её на компьютер и собрав программатор ProgCode по известной схеме:

Обозначение выводов используемого микроконтроллера и цоколёвка некоторых других аналогичных МК:

Программа ProgCode и инструкции с фотографиями пошаговой прошивки находятся в архиве на форуме. Там же и все необходимые для этой схемы файлы. В программе открываем и нажимаем на кнопку "записать всё”. В моем изготовленном устройстве, как видно из фотографий, собрано 2 термометра сразу в одном корпусе, верхний индикатор показывает температуру дома, нижний - на улице. Размещается он в любом месте помещения и соединяется с датчиком гибким проводом в экране. Материал предоставил ansel73. Прошивку редактировал: [)еНиС

Часы на PIC16F628A и датчике температуры DS18B20.

4-х сегментный светодиодный индикатор.

Анимированная смена индикации.

Вариант простых часов на популярном и доступном микроконтроллере PIC16F628A. Фактически c них начинался проект на AVR .

Описание часов.


1. Функции.

– часы, формат отображения времени 24-х часовый, часы:минуты.

– цифровая коррекция точности. Возможна ежесуточная коррекция ±25 сек. Установленное значение в 1 час 0 минут 30 сек будет прибавлено/вычтено из текущего времени.

– термометр.

– индикация. Поочередная.

– настраиваемая анимация смены показаний.

– использование энергонезависимой памяти микроконтроллера для сохранения настроек при отключении питания.

– если в основном режиме нажать на кнопку PLUS , то на индикаторы выводится время, если нажать на MINUS – температура. При отпускании кнопок возобновляется автоматическая смена показаний.

2. Настройка.

2.1. При включении питания часы в основном режиме.

2.2. Нажатием на кнопку SET производится вход в режим настроек и выбора параметра для установки. По-очереди доступны для установки:

– минуты;

– часы;

– секунды (обнуляются при нажатии на кнопки PLUS или MINUS );

– величина коррекции. В старшем разряде символ " с ";

– время индикации текущего времени. В старших разрядах символы " tc ". Диапазон установки 0÷99 сек. Если установлен 0, то время отображаться не будет;

– время индикации температуры. В старших разрядах символы " tt ". Диапазон установки 0÷99 сек. Если установлен 0, то температура отображаться не будет;

– выбор эффекта анимации. В старших разрядах символы " EF ". Если установлен 0, смена информации будет проводиться без эффектов , если выбран автоматический режим (символ А ), то будет производиться поочередная смена эффектов. Если выбран режим r , то смена эффектов будет производиться случайным образом.

– выбор скорости анимации. В старшем разряде символ " P ". Диапазон установки 0÷99. Одна единица соответствует примерно 2 мсек, чем выше величина, тем медленнее идет анимация.

2.3. Устанавливаемый параметр мигает.

2.4. Удержанием кнопок PLUS / MINUS производится ускоренная установка параметра.

3. Примечания.

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

При отключении основного питания (+12 V ) индикация отключается, часы продолжают идти. Питание МК осуществляется от резервного источника.

В архиве прошивки для индикаторов с общим катодом и анодом, проект в Proteus и описание.

Вопросы, пожелания в форум .

11.03.2015

Добавлена обновленная прошивка для индикатора с общим катодом. В новой прошивке больше эффектов анимации и небольшие изменения в алгоритме. Подробное описание в архиве.

На рисунке показана схема термометра выполненного на основе микроконтроллера 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, распределенных по большому участку. Приложения, которые могут извлечь выгоду из этой особенности, включают системы контроля температуры в зданиях, и оборудовании или машинах, а так же контроль и управление температурными процессами.

  • Похожие статьи

Войти с помощью:

Случайные статьи

  • 10.10.2014

    На рисунке показана схема предварительного усилителя с тембро-блоком, тембро-блок включен в цепь обратной связи предварительного усилителя. Напряжение питания уст-ва может варьироваться от 12 до 24В, потребляемый ток не более 10 мА. Входной сигнал поступает через разделительный конденсатор С1, резисторы R1 и R2 определяют напряжение смещения транзистора VT1, после предварительного усиления …