Термометр на PIC16F628A + DS18B20(DS18S20) + LED + коррекция - статья в которой подробно опишу несложный термометр с коррекцией на микроконтроллере.
С момента публикации статьи о предыдущей версии термометра прошло немало времени. Устройство пользуется довольно неплохой популярностью. В мой адрес приходит немало писем с просьбой о модернизации. По возможности, на все письма отвечаю и модернизирую прошивку. В очередном письме автор попросил добавить возможность ручной корректировки показаний. Меня это заинтересовало.
Что может.
Вот что может новый термометр на PIC16F628A:
- Измерять и отображать температуру в диапазоне:
-55...-10 и +100...+125 с точностью 1 градус(ds18b20 и ds18s20)
-в диапазоне -9,9...+99,9 с точностью 0,1 градус(ds18b20)
-в диапазоне -9,5...+99,5 с точностью 0,5 градус(ds18s20); - Определять какой датчик подключен на линию и, в зависимости от типа датчика, выполнять нужные преобразования;
- Проверять датчик на аварию и выводить соответствующие коды ошибок;
- Запоминать и выводить на индикатор максимальную и минимальную измеренные температуры;
- После включения, на некоторое время, засвечиваются все сегменты и все три разряда индикатора для зрительного определения неисправных сегментов;
- Используется щадящая процедура записи в энергонезависимую память. Таймер в 1 минуту. О работе таймера можно узнать по мерцающей точке;
- Появилась возможность ручной коррекции показаний термометра. Калибровочная константа сохраняется в EEPROM память;
- В архиве имеется дополнительная прошивка с увеличенным периодом опроса датчика. Подобное решение позволяет снизить саморазогрев датчика;
- Есть возможность легкой замены индикатора с общим катодом на индикатор с общим анодом.
О схеме.
Основные изменения, которые притерепела первоначальная схема:
- Полностью изменена принципиальная схема(добавлен узел стабилизатора напряжения на L7805, добавлена вторая кнопка, добавлена цепочка сброса, появился разъем для внутрисхемного программирования. Удален из схемы выносной датчик и кнопка переключения датчиков);
- Полностью переделана печатная плата. Переходим на SMD;
- Изменена модель в протейсе(в соответствии с новой схемой).
Увидеть новую схему термометра на PIC16F628A с коррекцией можно на рисунке 1.
Рисунок 1 - Схема термометра на PIC16F628A+DS18B20(DS18S20)+LED+коррекция
Схема не сложная и заострять внимание на ней не буду. Единственное на что хотелось бы обратить ваше внимание это переключатель ХР2. Он необходим для возможности замены индикатора с общим катодом(ОК) на индикатор с общим анодом(ОА). Если планируется использовать индикатор с ОК, то устанавливаем перемычку в нижнее по схеме положение(см. рисунок 1). При этом транзисторы остаются, как на схеме. Для индикатора с ОА устанавливаем перемычку в верхнее по схеме положение(показано пунктиром) и меняем транзисторы на BC846. Не забываем применять соответствующую прошивку! Весь перечень деталей, необходимых для сборки термометра, приведен в таблице 1.
Позиционное обозначение | Наименование | Аналог/замена |
С1, С4 | Конденсатор керамический - 0,1мкФх50В | SMD типоразмер 0805 |
С2 | Конденсатор электролитический - 470мкФх25В | |
С3 | Конденсатор электролитический - 1000мкФх10В | |
DA1 | Микросхема L7805 | КРЕН 5 |
DD1 | Микроконтроллер PIC16F628A | PIC16F648A. Корпус SOIC |
DD2 | Датчик температуры DS18B20 или DS18S20 | |
HG1 | 7-ми сегментный LED индикатор KEM-5631-ASR (OK) | Любой другой маломощный для динамической индикации и подходящий по подключению. |
R1 | Резистор 0,125Вт 10 кОм | SMD типоразмер 0805 |
R2 | Резистор 0,125Вт 470 Ом | |
R3,R4 | Резистор 0,125Вт 5,1 кОм | |
R5-R7, R9-R12, R15-R17 | Резистор 0,125Вт 330 Ом | |
R8, R14 | Резистор 0,125Вт 5,1 Ом | |
R13 | Резистор 0,125Вт 4,7 кОм | |
R18-R20 | Резистор 0,125Вт 8,2 кОм | |
SB1, SB2 | Кнопка тактовая | |
VT1-VT3 | Транзистор BC856B для индикатора с ОК/ транзистор BC846B для индикатора с ОА | Корпус SOT23 |
XP1 | Штекер платный 5 контактов | |
XP2 | Штекер платный 3 контакта |
Моделируем.
Протестировать прошивки можно на упрощенной модели термометра, которая была специально для этого создана, в программе протеус. Модель термометра в протеусе показана на рисунке 2. Не смущайтесь большому количеству кнопок. Дополнительные кнопки были введены в модель для возможности создания аварийных режимов работы датчика.
Рисунок 2 – Модель термометра(упрощённая) в протеусе.
О печатной плате.
Теперь несколько слов о печатной плате. Плата разрабатывалась в P-CAD 2006, совместно с принципиальной схемой. На всех уровнях контролировалось отсутствие ошибок встроенными средствами P-CAD. Конечный результат показан на рисунках 3,4,5. Плата получилась 65х45мм. Если есть желание разработать и прислать свой вариант платы – буду рад разместить.
Платы не в масштабе. Для изготовления плат необходимо использовать заготовки из архива.
Рисунок 3 – Плата печатная термометра на PIC16F628A(вид сверху).
Рисунок 4 – Плата печатная термометра на PIC16F628A(вид снизу).
Рисунок 5 – Плата печатная термометра на PIC16F628A(вид снизу детали).
О прошивке.
Осталось немного рассказать о возможностях новой прошивки термометра на PIC16F628A. Так как в схеме используются датчики DS18B20(DS18S20), то диапазон измеряемых температур ограничен их конструктивными особенностями. Вот почему термометр может измерять температуру от-55 до +125 градусов Цельсия, чего вполне достаточно для домашнего применения! В первоначальную версию прошивки была добавлена функция зрительной проверки сегментов LED индикатора. Все довольно просто – на некоторое время засвечивается весь LED индикатор, что позволяет выявить нерабочие сегменты.
Кнопка SB1(одиночное нажатие) – проверяем максимальную/ минимальную измеренные температуры. Кнопка SB1(зажимаем) – сбрасываем значения температур, хранимых в памяти. Мерцающая точка – сигнализирует о работе таймера в 1 минуту, перед записью в память. Напомню, что таймер в 1 минуту необходим для реализации процедуры щадящей записи в EEPROM память. Датчик DS18B20(DS18S20) опрашивается где-то раз в 0,8 секунд для обычной прошивки и раз в 10 сек для прошивки с 10 секундным интервалом. Нажатие на кнопку SB2 – выведет на индикацию текущее значение коррекции. Теперь, используя кнопки SB1 и SB2, можно установить новое значение, которое может находиться в пределах от -5 до +5 градусов Цельсия. Через 10 секунд после последнего нажатия на любую из кнопок произойдет запись значения коррекции в энергонезависимую память. Три квадрата, которые на некоторое время появляются на дисплее, свидетельствуют о записи значений в память. Ошибки термометра:
Er1 – обрыв датчика, сигнальный провод датчика замкнул на «+» питания;
Er2 – сигнальный провод датчика замкнул на «минус» питания.
В прошивку добавлена небольшая реклама, которая выводится только в момент включения термометра и на последующую работу и функциональность совсем не влияет. Всем кто пришлет фото собранного устройства на приведенной выше плате - в обратном письме высылаю прошивку без рекламы(фото сюда media собака pichobby.lg.ua. Фотографии должны быть хорошего качества. Лицевая, обратная стороны платы, устройство в работе, можно видео. Желательно к фотографиям добавить свое ФИО и город. Не стоить пугаться! Ваши данные нужны лишь для добавления авторства к фотографиям).
Вот так работает термометр
Буду рад обсудить термометр в комментариях к статьи. Спасибо за внимание!
Файлы к статье:
Термометр на PIC16F628A+DS18B20(DS18S20)+LED+коррекция(статья)
Архив с проектом (обновлён 29.12.17г.)
Печатная плата в Layout от Валерия
Комментарии
На мой взгляд слабовато описание в части использования кнопок для коррекции. А в целом - спасибо!
Единственное - какое-то время после первого включения мигала точка. Потом успокоилась и все стало нормально. Использую прошивку с 10с интервалом измерения.
Х.з. как скинуть архив с лайкой ПП, фото.
Спасибо!
Спасибо.