Термометр на 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(вид снизу детали).

О прошивке.

Осталось немного рассказать о возможностях новой прошивки термометра на 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+коррекция(статья)

Архив с проектом

Фотографии

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

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

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

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

Комментарии  

 
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 16:17
Антон, спасибо за конструкцию! Повторил, вроде заработало.
Единственное - какое-то время после первого включения мигала точка. Потом успокоилась и все стало нормально. Использую прошивку с 10с интервалом измерения.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Ерёмин Антон 26.10.2015 16:27
Доброго времени, Владимир! Мерцающая точка – сигнализирует о работе таймера в 1 минуту, перед записью в память. В статье ведь все написано! Нужно лишь прочитать. Смотрите абзац перед описанием ошибки Er1!!!
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Василий 26.10.2015 16:45
Да, спасибо, уже разобрался.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Ерёмин Антон 25.12.2015 05:53
Ввиду небольшого сбоя сообщения за 24.12.15г. были утеряны.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Ерёмин Антон 26.12.2015 12:27
Доброго времени, Алексей. Жду от Вас фото платы(верх, низ), фото датчика и видео работы устройства. Почта - support собака pichobby.lg.ua
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Алексей 02.01.2016 14:01
С Новым Годом!! Всё заработало просто датчик бракованный. :lol:
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Валерий 21.01.2016 01:52
Здравствуйте, уважаемые. Работу с микроконтроллерами только осваиваю Собрал вольтметр и термометр первой версии, пока все ОК :-) . Работа связана с ремонтом хол. техники. Ситуация такова - Молдова, жара под 50, агрегат надрывается, а клиенту выдай -30, а тут -28, и никакие обоснования, что не может осилить система такую жару не приводят к согласию. Вот тут и весьма актуален термометр с коррекцией, ну, там на пару градусов в минус. Не сочтите за жлобство, но клиенты бывают иногда весьма не адекватны. Контроллера в СМД варианте пока нет в наличии, придется немного переделать печать под ДИП вариант. Спасибо автору.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Ерёмин Антон 21.01.2016 22:20
Всегда пожалуйста!
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Валерий 22.01.2016 14:34
Итак, плата под DIP18 переразведена, сильно не мудрствовал - чуть подвигал детали. Контроллер паяется со стороны деталей, SMD компоненты применены типоразмера 1206 (зрение уж не то), добавлена шунтирующая керамика возле ног 7805 для возможности запитки без глюков от имп. БП. Запуск без проблем, правда пока нет новых тактовых кнолок (придется из чего то выдрать), но коротил пинцетом, все работает. Реклама даже прикольно, как говорит мой один знакомый (можно ляпнуть - устанавливает связь со спутником). Контроллер и индикатор установлены в панельки. Для индикатора изготовил панельку отрезав нужный кусок из 4о пиновой цанговой панельки, можно менять индикаторы по цвету в зависимости от настроения и погоды :-) . Запитал сначала от ,,Кроны,,, по истечению некоторого времени начали моргать все индикаторы - ,,села,, старая крона, тоже +. Спасибо автору.
Х.з. как скинуть архив с лайкой ПП, фото.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Ерёмин Антон 22.01.2016 17:07
Здравствуйте, Валерий. Архив можно отправить на почту - media собака pichobby.lg.ua.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Валерий 22.01.2016 21:59
Архив отправил, почта пишет - успешно :-)
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Сергей Н 02.02.2016 18:42
Что то у меня в протеусе при индикации температур проскакивает показания которые оканчиваются на 0,2.Показывает сразу 0,3.Проверьте пожалуйста этот лаг :-?
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Ерёмин Антон 02.02.2016 18:55
Никакой ошибки нет. В железе все работает, а модель в протеусе упрощённая. На видео все видно.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Сергей Н 02.02.2016 19:04
Ок ,у меня и закрались сомнения что на видео гуд,а у меня в протеусе лаг,мой лаг :).И еще один вопрос по поводу печатки, в лайоуте случайно нет?
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Ерёмин Антон 02.02.2016 19:21
Печатная плата в Layout не моя, прислал Валерий. Плата уже на сайте.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Валерий 02.02.2016 19:26
В железе все работает прекрасно, температура корректируется в + и -. Мою лайку под DIP корпус Антон выложил, если контроллер в панельке, перемычки излишни. Да и ,,отшаблонить,, лайку делов на 10 минут - скрин с экрана, перевести в BMP, дальше, надеюсь понятно.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Свин 13.12.2016 19:36
Здравствуйте АВТОР! А на 628 (без А) прошивка годится?
Спасибо!
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Ерёмин Антон 14.12.2016 19:44
Здравствуйте, СВИН. Прошивка подойдет.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Алексей 17.02.2017 07:57
Здравствуйте Антон! Не могу понять зачем на схеме ХР1? Куда это подключается?
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Ерёмин Антон 17.02.2017 14:07
Здравствуйте, Алексей. XP1 - разъём для подключения последовательного программатора. Добавлен в схему для внутрисхемного прошивания.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Алексей 18.02.2017 07:24
Спасибо!
Ответить | Ответить с цитатой | Цитировать
 

Добавить комментарий

Уважаемые посетители сайта! Ваш e-mail мне совершенно не нужен, его требует система для идентификации Вас в комментариях, как уникального пользователя. Рассылок никаких не будет. Так что смело следите за темой.


Защитный код
Обновить

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