Термометр на PIC16F628A + DS18B20(DS18S20) + LED + коррекция

2015-03-22

Термометр на PIC16F628A + DS18B20(DS18S20) + LED + коррекция - статья в которой подробно опишу несложный термометр с коррекцией на микроконтроллере.

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

Что может.

Вот что может новый термометр на PIC16F628A:

  1. Измерять и отображать температуру в диапазоне:
    -55...-10 и +100...+125 с точностью 1 градус(ds18b20 и ds18s20)
    -в диапазоне -9,9...+99,9 с точностью 0,1 градус(ds18b20)
    -в диапазоне -9,5...+99,5 с точностью 0,5 градус(ds18s20);
  2. Определять какой датчик подключен на линию и, в зависимости от типа датчика, выполнять нужные преобразования;
  3. Проверять датчик на аварию и выводить соответствующие коды ошибок;
  4. Запоминать и выводить на индикатор максимальную и минимальную измеренные температуры;
  5. После включения, на некоторое время, засвечиваются все сегменты и все три разряда индикатора для зрительного определения неисправных сегментов;
  6. Используется щадящая процедура записи в энергонезависимую память. Таймер в 1 минуту. О работе таймера можно узнать по мерцающей точке;
  7. Появилась возможность ручной коррекции показаний термометра. Калибровочная константа сохраняется в EEPROM память;
  8. В архиве имеется дополнительная прошивка с увеличенным периодом опроса датчика. Подобное решение позволяет снизить саморазогрев датчика;
  9. Есть возможность легкой замены индикатора с общим катодом на индикатор с общим анодом.

О схеме.

Основные изменения, которые притерепела первоначальная схема:

  1. Полностью изменена принципиальная схема(добавлен узел стабилизатора напряжения на L7805, добавлена вторая кнопка, добавлена цепочка сброса, появился разъем для внутрисхемного программирования. Удален из схемы выносной датчик и кнопка переключения датчиков);
  2. Полностью переделана печатная плата. Переходим на SMD;
  3. Изменена модель в протейсе(в соответствии с новой схемой).

Увидеть новую схему термометра на PIC16F628A с коррекцией можно на рисунке 1.

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

Рисунок 1 - Схема термометра на PIC16F628A+DS18B20(DS18S20)+LED+коррекция

Схема не сложная и заострять внимание на ней не буду. Единственное на что хотелось бы обратить ваше внимание это переключатель ХР2. Он необходим для возможности замены индикатора с общим катодом(ОК) на индикатор с общим анодом(ОА). Если планируется использовать индикатор с ОК, то устанавливаем перемычку в нижнее по схеме положение(см. рисунок 1). При этом транзисторы остаются, как на схеме. Для индикатора с ОА устанавливаем перемычку в верхнее по схеме положение(показано пунктиром) и меняем транзисторы на BC846. Не забываем применять соответствующую прошивку! Весь перечень деталей, необходимых для сборки термометра, приведен в таблице 1.

Таблица 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мм. Если есть желание разработать и прислать свой вариант платы – буду рад разместить.

Платы не в масштабе. Для изготовления плат необходимо использовать заготовки из архива.

Плата печатная термометра на PIC16F628A(вид сверху)

Рисунок 3 – Плата печатная термометра на PIC16F628A(вид сверху).

Плата печатная термометра на PIC16F628A(вид снизу)

Рисунок 4 – Плата печатная термометра на PIC16F628A(вид снизу).

Плата печатная термометра на PIC16F628A(вид снизу, детали)

Рисунок 5 – Плата печатная термометра на PIC16F628A(вид снизу детали).

Ниже фотографии термометра от Чеча Сергея Николаевича, Украина, Луганская обл, г. Перевальск. Он разработал свою печатную плату, которую можно скачать в формате Layout 6.

Фотография термометра на PIC16F628A

Фотография термометра на PIC16F628A

Фотография термометра на PIC16F628A

Фотография термометра на PIC16F628A

Фотография термометра на PIC16F628A

Фотография термометра на 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. Термометр может запоминать максимальную и минимальную измеренные температуры. Есть возможность ручной корректировки показаний. Калибровочная константа и данные о максимальной и минимальной температурах сохраняются в энергонезависимой памяти. Память можно сбросить. Если с датчиком что-то случиться – термометр выведет сообщение об ошибке. В статье приводятся печатная плата термометра и модель в протеусе. Что позволяет с легкостью повторить термометр. В архиве собраны все необходимые прошивки и дополнительные файлы. В прошивку термометра добавлена ненавязчивая реклама, от которой легко можно избавиться.

Буду рад обсудить термометр в комментариях к статьи. Спасибо за внимание!

Файлы к статье:

Термометр на PIC16F628A+DS18B20(DS18S20)+LED+коррекция(статья)

Архив с проектом (обновлён 29.12.17г.)

Фотографии

Печатная плата в Layout от Валерия

Печатная плата в Layout от Владимира

Печатная плата в Layout от Чеча Сергея Николаевича

Прочитано 19598 раз

Понравилась статья? Помоги и остальным о ней узнать! Это просто.

Комментарии  

 
0 # Ерёмин Антон 20.09.2015 20:02
Всем кто пришлет фото собранного устройства на приведенной выше плате в обратном письме высылаю прошивку без рекламы(фото сюда media собака pichobby.lg.ua. Фотографии должны быть хорошего качества. Лицевая, обратная стороны платы, устройство в работе, можно видео. Желательно к фотографиям добавить свое ФИО и город. Не стоить пугаться! Ваши данные нужны лишь для добавления авторства к фотографиям)
 
 
0 # Владимир 24.04.2016 10:41
Высылаю на общее обозрение проект, с одним термодатчиком и платой размером 45х60 мм
 
 
0 # Павел Васильевич 25.09.2015 11:01
Браво, Антон Юрьевич! Дождались обещанного варианта с коррекцией! Предыдущая конструкция зарекомендовала себя весьма удобной и надежной. Есть все основания полагать, что новая версия будет еще лучше.
На мой взгляд слабовато описание в части использования кнопок для коррекции. А в целом - спасибо!
 
 
0 # Павел Васильевич 25.09.2015 21:57
Извините, а где же второй датчик? Опять через переключатель??? :sad:
 
 
0 # Ерёмин Антон 25.09.2015 22:14
Данная конструкция на один датчик.
 
 
0 # Василий 26.10.2015 17:17
Антон, спасибо за конструкцию! Повторил, вроде заработало.
Единственное - какое-то время после первого включения мигала точка. Потом успокоилась и все стало нормально. Использую прошивку с 10с интервалом измерения.
 
 
0 # Ерёмин Антон 26.10.2015 17:27
Доброго времени, Владимир! Мерцающая точка – сигнализирует о работе таймера в 1 минуту, перед записью в память. В статье ведь все написано! Нужно лишь прочитать. Смотрите абзац перед описанием ошибки Er1!!!
 
 
0 # Василий 26.10.2015 17:45
Да, спасибо, уже разобрался.
 
 
0 # Ерёмин Антон 25.12.2015 06:53
Ввиду небольшого сбоя сообщения за 24.12.15г. были утеряны.
 
 
0 # Ерёмин Антон 26.12.2015 13:27
Доброго времени, Алексей. Жду от Вас фото платы(верх, низ), фото датчика и видео работы устройства. Почта - support собака pichobby.lg.ua
 
 
0 # Алексей 02.01.2016 15:01
С Новым Годом!! Всё заработало просто датчик бракованный. :lol:
 
 
0 # Валерий 21.01.2016 02:52
Здравствуйте, уважаемые. Работу с микроконтроллерами только осваиваю Собрал вольтметр и термометр первой версии, пока все ОК :-) . Работа связана с ремонтом хол. техники. Ситуация такова - Молдова, жара под 50, агрегат надрывается, а клиенту выдай -30, а тут -28, и никакие обоснования, что не может осилить система такую жару не приводят к согласию. Вот тут и весьма актуален термометр с коррекцией, ну, там на пару градусов в минус. Не сочтите за жлобство, но клиенты бывают иногда весьма не адекватны. Контроллера в СМД варианте пока нет в наличии, придется немного переделать печать под ДИП вариант. Спасибо автору.
 
 
0 # Ерёмин Антон 21.01.2016 23:20
Всегда пожалуйста!
 
 
0 # Валерий 22.01.2016 15:34
Итак, плата под DIP18 переразведена, сильно не мудрствовал - чуть подвигал детали. Контроллер паяется со стороны деталей, SMD компоненты применены типоразмера 1206 (зрение уж не то), добавлена шунтирующая керамика возле ног 7805 для возможности запитки без глюков от имп. БП. Запуск без проблем, правда пока нет новых тактовых кнолок (придется из чего то выдрать), но коротил пинцетом, все работает. Реклама даже прикольно, как говорит мой один знакомый (можно ляпнуть - устанавливает связь со спутником). Контроллер и индикатор установлены в панельки. Для индикатора изготовил панельку отрезав нужный кусок из 4о пиновой цанговой панельки, можно менять индикаторы по цвету в зависимости от настроения и погоды :-) . Запитал сначала от ,,Кроны,,, по истечению некоторого времени начали моргать все индикаторы - ,,села,, старая крона, тоже +. Спасибо автору.
Х.з. как скинуть архив с лайкой ПП, фото.
 
 
0 # Ерёмин Антон 22.01.2016 18:07
Здравствуйте, Валерий. Архив можно отправить на почту - media собака pichobby.lg.ua.
 
 
-1 # Валерий 22.01.2016 22:59
Архив отправил, почта пишет - успешно :-)
 
 
0 # Сергей Н 02.02.2016 19:42
Что то у меня в протеусе при индикации температур проскакивает показания которые оканчиваются на 0,2.Показывает сразу 0,3.Проверьте пожалуйста этот лаг :-?
 
 
0 # Ерёмин Антон 02.02.2016 19:55
Никакой ошибки нет. В железе все работает, а модель в протеусе упрощённая. На видео все видно.
 
 
0 # Сергей Н 02.02.2016 20:04
Ок ,у меня и закрались сомнения что на видео гуд,а у меня в протеусе лаг,мой лаг :).И еще один вопрос по поводу печатки, в лайоуте случайно нет?
 
 
0 # Ерёмин Антон 02.02.2016 20:21
Печатная плата в Layout не моя, прислал Валерий. Плата уже на сайте.
 
 
0 # Валерий 02.02.2016 20:26
В железе все работает прекрасно, температура корректируется в + и -. Мою лайку под DIP корпус Антон выложил, если контроллер в панельке, перемычки излишни. Да и ,,отшаблонить,, лайку делов на 10 минут - скрин с экрана, перевести в BMP, дальше, надеюсь понятно.
 
 
0 # Свин 13.12.2016 20:36
Здравствуйте АВТОР! А на 628 (без А) прошивка годится?
Спасибо!
 
 
0 # Ерёмин Антон 14.12.2016 20:44
Здравствуйте, СВИН. Прошивка подойдет.
 
 
0 # Алексей 17.02.2017 08:57
Здравствуйте Антон! Не могу понять зачем на схеме ХР1? Куда это подключается?
 
 
0 # Ерёмин Антон 17.02.2017 15:07
Здравствуйте, Алексей. XP1 - разъём для подключения последовательного программатора. Добавлен в схему для внутрисхемного прошивания.
 
 
0 # Алексей 18.02.2017 08:24
Спасибо!
 
 
0 # Сергей 46 13.12.2017 12:42
C какой целью мигает точка? Если для визуального эффекта, то можно этот эффект отключить и сделать её постоянно горящей? Ведь человек не сидит под дня глядя на показание термометра и думает, ага, мигает, значит запоминает. Прошу автора сделать вариант прошивки с постоянно горящей точкой не нарушая алгоритм программы.Очень понравился проект, но из за мигающей точки хочется искать подобный. Отнеситесь с пониманием. Спасибо
 
 
0 # Ерёмин Антон 14.12.2017 12:04
Доброго времени, Сергей 46. Мерцание точки отключу для Вас.
 
 
0 # Сергей 46 16.12.2017 21:12
Прошивка будет выложена здесь или пришлёте на почту? Адрес почты давал в комментариях на ваш предыдущий вариант градусника.
 
 
0 # Ерёмин Антон 18.12.2017 13:17
Здравствуйте, Сергей 46. Прошивку выложу на сайте. Может кому ещё понадобиться.
 
 
0 # Ерёмин Антон 29.12.2017 13:14
Обновил архив. Теперь есть прошивки без мерцания точки. Всех с Новым Годом!
 
 
0 # Андрей68 01.06.2018 20:01
Здравствуйте Антон! Можно в этом проекте добавить функцию ``будильника``,чтобы при достижении заданного значения температуры дэвайс кратковременно подал сигнал (как будильник в часах) и дальше продолжал выполнять функции термометра. :roll:
 
 
0 # Ерёмин Антон 03.06.2018 17:58
Здравствуйте, Андрей68. Напишите мне на почту - supportСОБАЧКАpichobby.lg .ua. Вместо СОБАЧКА - @. Опишите, как Вам это видится.
 
 
+1 # Сергей 02.03.2019 17:06
Здравствуйте Антон. Повторил данный термометр, остался доволен. Единственное, не проверил с датчиком ds18b20 по причине отсутствия онного. Всё работает прекрасно. Но, у меня возникла пара вопросов. Повторял несколько конструкций с так называемым Программным ограничением портов, и посегментная индикация. В первом случае огр. резисторы для индикатора не ставятся вообще, во втором, ставят только в ОА ( ОК ) индикатора. Вы такое не делали? Хочется минимизировать печатку.
Спасибо.
 
 
0 # Ерёмин Антон 07.03.2019 21:16
Добрый день, Сергей. Программное ограничение портов не делал, а во втором случаи сегменты будут по разному светиться и яркость свечения будет зависить от количества одновременно включенных сегментов. Чем больше включенных сегментов - тем тусклее, чем меньше - тем ярче.
 
 
0 # Александр 02.04.2022 16:32
Всем привет. Вчера собрал схему, прошил контроллер, включил и увы не заработало :cry: . При включение бежит реклама а потом мигают - - - и все. При отключение датчика выводит ошибку Er1. Прошивка из архива ОК 10 секунд. Прошу помощи.
 
 
0 # Ерёмин Антон 02.04.2022 17:21
Добрый день, Александр. Отправьте мне фото печатной платы верх и низ. Какой контроллер у вас? Пробовали прошивать прошивками без задержки 10сек?
 
 
0 # Ерёмин Антон 22.04.2022 16:06
Проблема Александра решилась. Всё банально - транзисторы были не правильно впаяны, спутаны местами коллектор и эмиттер. Александр собирал схему на макетной плате. Причём на видео даже нормально не видно, как бежит реклама, так набор каких-то символов. Движение символов при этом было слева на право, а должно быть справа на лево. Будьте внимательны при повторении схемы
 

Добавлять комментарии могут только зарегистрированные пользователи.

Все права защищены. При указании активной, индексируемой ссылки на сайт MICROPAS.RU, полное или частичное использование материалов разрешается. Уважайте чужие труды! Не забывайте проставлять ссылки! Правообладателям
© Ерёмин Антон Юрьевич 2013-2021гг.