Термометр на pic

Термометр (индикатор температуры) на микроконтроллере PIC16F628A

Источник: http://www.kaligraf.narod.ru/termoi/termoi.html

Микроконтроллеры Процессоры, проекты, программирование

Использование индикатора на регистрах сдвига позволяет создать компактный двухточечный термометр, с использованием самого простого микроконтроллера PIC12F629. Два вывода этого микроконтроллера используются для управления индикатором. Один из них выполняет функцию передачи тактового сигнала, второй информационный.

Регистры сдвига 74164 при обнаружении тактового импульса, переключают уровень сигнала с информационного входа, на выход Q0. Информация предыдущего состояния выходов сдвигается на один разряд. К выходам регистров подключены светодиодные семисегментные индикаторы.

При этом десятичная точка используется только у  второго индикатора, а к свободным выходам подключены светодиоды отрицательной температуры и номера отображаемого датчика. Для работы индикатора применены простые сдвиговые регистры 74HC164 (1553ИР8). Три таких микросхемы соединены последовательно.

В итоге, в работе индикатор не требует постоянного к нему обращения, как это необходимо при реализации динамической индикации.

В схеме термометра использованы датчики DS18B20. Каждый из них подключен к отдельному выводу МК. Возможность работы датчиков одновременно по одному проводу не использована, с целью упрощения программы. Для нейтрализации эффекта саморазогрева, питание датчиков взято с выход микроконтроллера, включаемого только на время измерения.

Особенности PIC12F629 не дают возможность использования одного вывода (GPIO3), так как он работает только на вход. Сам микроконтроллер работает от внутреннего тактового генератора, что позволило освободить две линии ввода/вывода.

Конструкция термометра

Конструктивно термометр выполнен на односторонней печатной плате. В конструкции использовано большое количество элементов поверхностного монтажа.

микросхемы регистров используются в корпусе SOIC, а сопротивления типоразмера 1206. На плате установлены две перемычки, а также два разъема для подключения датчиков.

Печатная плата размерами 64х30 мм выполнена в программе SprintLayout5 под технологию лазерно-утюжную технологию.

Файлы проекта и другие ресурсы

Архив проекта

Даташит на PIC12F629. Язык русский.

Некоторые советы по реализации схемы

Термометр на PIC12F629. Альтернативная управляющая программа от Дмитрия

Управляющая программа

Программа работы термометра  написана на языке MikroPASCAL. Использованы стандартные функции работы с устройствами шины 1-Wire.

You have no rights to post comments

Источник: https://mcucpu.ru/index.php/project/46-izmeriteli/79-thermometrpic12f629

Простой термостат – термометр с энкодером на микроконтроллере PIC16F628. Схема

В зимние месяцы, когда требуется обогрев помещений, особое значение приобретает контроль температуры. Для этой цели используются различные методы. Одним из них является электронный метод, основанный на использовании термостата. Это решение позволяет контролировать температуру и, в зависимости от условий, управлять нагревательными устройствами.

Термостат – это устройство, которое, как следует из его названия, поддерживает температуру на заданном уровне. При этом недостаточно задать только значение необходимой температуры, для правильной работы необходимо указать минимальную и максимальную температуру.

Контроллер термостата будет включать и выключать нагреватель в зависимости от того, находится ли фактическая температура в заданном диапазоне.

В данной статье термостат снабжен буквенно-цифровым дисплеем 16х1, информирующий о текущей и заданной температуре. Благодаря этому, помимо функции регулировки, устройство также играет роль электронного термометра.

Температура измеряется с использованием цифрового датчика DS18B20, работающего в диапазоне -55…+125°C. Однако отображаемый диапазон ограничен диапазоном от -55…+99,9°C, и в таком же диапазоне можно установить контролируемую термостатом температуру. Этот диапазон значительно превышает потребности пользователя, однако из-за функции термометра это может быть полезно.

Установленная температура поддерживается с точностью определяемой гистерезисом включения и выключения реле. Его величина влияет на частоту переключения реле.

Например, если предположить, что температура должна быть на уровне 25°С с точностью 0,1°С, то при снижении температуры на 0,1°С произойдет включение обогревателя, а при увеличение на 0,1°С отключение.

Поддержание температуры с максимальной точностью весьма желательно, однако слишком малая разница в температуре между включением и выключением реле вызовет частое его переключение.

Чтобы уменьшить частоту переключений необходимо увеличить гистерезис. Чем больше гистерезис, тем ниже точность поддерживаемой температуры.

Увеличив гистерезис в приведенном выше примере до 0,5°C, при поддержании температуры на уровне 25°C, переключение реле не будет происходить при температуре в диапазоне 24,5…25,5°C.

Значение гистерезиса необходимо подбирать в соответствии с поставленной задачей. В данном устройстве гистерезис может быть отрегулирован в диапазоне 0…5°C.

Для управления термостатом используется энкодер. Это решение позволяет легко и быстро изменять параметры. Это гораздо более дружелюбный способ, чем использование кнопок. Параметры сохраняются в энергонезависимой памяти, поэтому вам нет необходимости устанавливать их снова после сбоя питания.

Коммутационная схема – это реле с управляемой мощностью 16А. Это дает возможность управлять нагревателем мощностью до 3 кВт. Для обеспечения безопасности, коммутационная схема выполнена на отдельной плате. Благодаря этому панель управления термостатом может быть размещена в любом удобном месте.

Управляющим элементом термостата является микроконтроллер PIC16F628 от «Microchip», который работает от внешнего кварцевого резонатора с частотой 4 МГц. Для отображения установленной и измеренной температуры применен однострочный буквенно-цифровой дисплей с возможностью отображения 16 символов. Контраст дисплея настраивается потенциометром R5.

Параметры термостата выставляются с помощью энкодера (Sw1) со встроенной кнопкой. Сигналы данных подаются на порт RA, а от кнопки – на порт RB.

Как уже было сказано выше, в качестве датчика температуры используется микросхема DS18B20, которая измеряет температуру и передает информацию в 12-битном формате. Микроконтроллер считывает результат через интерфейс 1-Wire и после вычислений выводит на дисплей температуру с разрешением 0,1°C.

Сигнал, управляющий реле, через транзисторный ключ VT1 подается на реле.

Питание термометра осуществляется с помощью стабилизатора напряжения DA1 (78l05), который обеспечивает выходное напряжение 5 В. Конденсаторы С1…С4 сглаживаю входное и выходное напряжение. Диод VD1 (1N4007) защищает схему от переплюсовки входного источника питания.

Термостат собран на двух платах: одна для системы управления с микроконтроллером и дисплеем, вторая для коммутации.

Для питания схемы термостата необходим источник питания с выходным напряжением около 12 В и током не менее 100 мА. После включения на дисплее будет отображаться фактическая температура и значение температуры, которое поддерживается термостатом.

В термостате можно запрограммировать два параметра: желаемую температуру и точность (гистерезис). Эти параметры сохраняются в энергонезависимой памяти EEPROM.

Изменение контролируемой температуры осуществляется поворотом ручки энкодера. После первого поворота отображаемое значение начнет мигать, и теперь термостат будет работать с новым значением.

Однако мигающее значение температуры указывает на то, что изменения сделаны временно. В этом режиме термостат может работать и поддерживать новую температуру, но только до тех пор, пока питание не отключится.

Чтобы отменить изменения и вернуться к значению, хранящемуся в энергонезависимой памяти, кратко нажмите кнопку энкодера. Установленное значение перестает мигать. Когда питание снова будет включено, будет использовано значение из EEPROM. Для того чтобы записать в память новую температуру необходимо нажать и удерживая кнопку энкодера в течение примерно двух секунд.

Второй параметр – гистерезис. Чтобы войти в режим изменения гистерезиса, нажмите кнопку энкодера во время нормальной работы термостата. На дисплее отобразится текущее значение в формате Term = T ± 0,0°C (значение по умолчанию 0,0°C).

Изменения делаются поворотом ручки энкодера. Как и при настройке температуры, после первого шага начинает мигать измененное значение. Чтобы отказаться от введенных изменений, кратко нажмите клавишу.

Чтобы сохранить его нажмите кнопку примерно на две секунды.

Статус активации реле отображается индикацией точки между фактической и контролируемой температурой.

Скачать рисунок печатной платы и прошивку (78,3 Kb, скачано: 115)

Источник: http://www.joyta.ru/11230-prostoj-termostat-termometr-s-enkoderom-na-mikrokontrollere-pic16f628-sxema/

Двух канальный термометр на PIC16F628+LCD Nokia3310 (улица, дом)

Основой устройства является микроконтроллер фирмы Microchip PIC16F628A, осуществляющий получение информации от датчиков температуры, обработку полученных данных и вывод их на индикатор. Данное устройство позволяет измерять температуру по двум каналам.

В качестве датчиков температуры можно использовать цифровые датчики DS18B20 илиDS18S20. Данные цифровые датчики позволяют измерять температуры от -55 до +125°С, причем в интервале -10…

+85°С производитель гарантирует абсолютную погрешность измерения не хуже ±0,5°С. На границах диапазона измеряемых температур точность ухудшается до ±2°С.Индикация показаний термометра во всем диапазоне измеряемых температур выполняется с точностью ±0.

1°C, при использовании DS18B20, и с точностью ±0.5°C, при использовании DS18S20..

В качестве индикатора используется дисплей от самого популярного в свое время мобильного телефона Nokia3310.

Номинальное напряжение питания 2-х канального термометра …………… +3,3В.

Максимальное напряжение питания не должно превышать …………………… +3,6В.

Схема

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

Рисунок 1. Принципиальная схема 2-х канального термометра на PIC16F628A+LCD Nokia3310.

Микроконтроллер D1 PIC16F628A осуществляет обмен информацией с датчиками D2, D3 типа DS18B20 или DS18S20 по однопроводному цифровому интерфейсу 1-wire. К термометру одновременно должны подключаться только датчики одного типа. Тип датчиков с которыми будет работать термометр определяется программным обеспечением.

Вывод полученной от датчиков D2, D3 и обработанной микроконтроллером D1 информации на индикатор E1 осуществляется по последовательному интерфейсному каналу типа SPI.

Разъем Х1 служит для осуществления внутрисхемного программирования. Тип разъема и его цоколевка контактов обеспечивают подключения устройства к программатору типа PICKit2. Если под микроконтроллер устанавливается панелька типа TRS18, то разъем Х1 можно не устанавливать, а программирование микроконтроллера осуществлять с помощью любого другого программатора отдельно от устройства.

Описание работы

При включении питания и после инициализации микроконтроллера происходит тест наличия и исправности цифровых датчиков температуры.

Если какой нибудь датчик не подключен или его неисправность характеризуется наличием на линии DQ постоянного высокого уровня, при обращении к нему микроконтроллера, то на индикаторе будет выводится значение “Обрыв” на месте отображения показаний от этого датчика .

А вот если линия DQ какого либо датчика имеет замыкание на 0В, либо эту линию сам датчик, при наличии неисправности его внутренней схемы, подтягивает к 0В, то на индикаторе будет выводится значение “К.З.”.

Далее после проведения тестирования исправности датчиков, микроконтроллер осуществляет выдачу датчикам команд на начало измерения температуры.

Далее микроконтроллер осуществляет после выдержки времени, необходимой датчикам на измерение температуры, получение данных об измеренной температуре.

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

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

Данное устройства собрано на двух платах.

На плату 1 с помощью двухсторонего скотча приклеен дисплей от мобильного телефон вместе с рамкой. Непосредственно к контактам дисплея от Nokia 3310 припаян шлейфовый плоский кабель. На другой конец кабеля установлен (наколан) разъем типа IDC10.

На плате 2 собрана основная часть схемы 2-х канального термометра. Причем разъем, предназначенный для подключения к плате дисплея (типа IDC10) и разъемы для подключения датчиков температуры на принципиальной схеме не отображены.

Обе платы соединены вместе с помощъю шестигранных металлических стоек.

Плата 1 выполнена из нефольгированного стеклотекстолита и служит основанием для дисплея.

Плата 2 выполнена из одностороннего фольгированного стеклотекстолита с вытравленными на нем печатными проводниками (рисунок 2).

Рисунок 2. Печатная плата 2-х канального термометра на PIC16F628+LCD Nokia3310.

На рисунках 3 и 4 показано размещение элементов на обоих сторонах печатной платы

Рисунок 3. Размещение элементов со стороны установки выводных элементов

Рисунок 4. Размещение элементов со стороны проводников печатной платы.

На стороне установки выводных компонентов до монтажа элементов необходимо установить три перемычки (на рисунке 3 показаны красным цветом). Все SMD резисторы и конденсаторы применены в корпусе типоразмера 1206.

Конденсаторы С3 и С4- электролитический. Все резисторы и SMD конденсаторы устанавливаются на печатную плату со стороны печатных проводников (см. рисунок 4).

Микроконтроллер может устанавливаться, как непосредственно на плату, так и в 18-ногую панельку типа DIP18 (TRS18).

Датчики D1 и D2 подключаются к разъемам согласно цоколевке, указанной на рисунке 3.

Микроконтроллер PIC16F628А можно заменить на PIC16F628-04 в DIP корпусе. При переработке печатной платы можно использовать микроконтроллер и в других корпусах.

Разъем для внутрисхемного программирования Х1 – это 5 контактов от линейки контактов PLC20. Можно не устанавливать при установке микроконтроллера в панельку или, если в плату впаивается уже запрограммированный микроконтроллер.

1. Первый вариант вывода информации на индикатор.. Подключены два датчик DS18B20. Вид со стороны индикатора (Прошивка v1.0 для DS18B20;), аналогичное изображение будет и для датчикаDS18S20 ( Прошивка v1.0 для DS18S20)

2.Вид со стороны платы 2.

3. Второй вариант вывода информации на индикатор. Подключены 2 датчика DS18S20, о чем информируется в нижней строчке выводимой информации (Прошивка v1.1 для DS18S20).

4. Один из датчиков не подключен, и об этом информирует надпись “Обрыв”.

5. Оба датчика не подключены.

6.В одном из датчиков имеется замыкание сигнального вывода на минусовую линию питания. Об этом информирует нас надпись “К.З.”.

7. А здесь подключены два датчика DS18B20 (Прошивка v1.1 для DS18B20).

8. Процесс наладки термометра (виден подключенный программатор PICKit2, через который и подается питание на устройство).

Прошивка v1.0 для DS18B20 

Прошивка v1.0 для DS18S20; 

Прошивка v1.1 для DS18B20; 

Прошивка v1.1 для DS18S20;

Файлы к статье Двух канальный термометр на PIC16F628+LCD Nokia3310 (улица, дом)

Раздел: [Измерительная техника]

Источник: http://www.cavr.ru/article/5096-dvux-kanalinyj-termometr-na-pic16f628+lcd-nokia3310-(ulica,-dom)

Термометр на PIC16F628A | Полезный изобретения на микроконтроллерах

В данной статье будет описан цифровой термометр на микроконтроллере PIC16F628A с функцией памяти максимальной и минимальной измеренных температур.

Интернет пестрит всевозможными предложениями различных цифровых термометров на микроконтроллере, попадаются и запоминающие, но (меня поймет каждый радиолюбитель) всегда хочется чего-нибудь своего!!! Так и в моем случае появилась острая необходимость сделать цифровой термометр на микроконтроллере PIC16F628A, а нужен он мне был для измерения рабочей температуры мощных симисторов в процессе отладки терморегуляторов, позднее было принято решение использовать цифровой термометр и для измерения температуры в комнате и на улице.

Особенности принципиальной схемы цифрового термометра на микроконтроллере:

  • Проста в повторении;
  • Малое количество деталей;
  • Надежность при длительном использовании и при воздействии возможных помех.

Принципиальная схема термометра показана на рисунке 1

Рисунок 1 – Схема принципиальная

Важная деталь – принципиальная схема запоминающего термометра на микроконтроллере разрабатывалась параллельно с печатной платой, так как микроконтроллер вещь универсальная (каждый пин любого из портов можно настроить как на вход, так и на выход). Отсюда – разводим сначала печатную плату, так как нам удобно, а после рисуем принципиальную схему. Это очень удобная методика! Признаюсь не моя, подглядел на каком-то из форумов! Автору респект!!!

Теперь немного подробнее рассмотрим особенности отдельных узлов принципиальной схемы запоминающего термометра на микроконтроллере PIC16F628A.

Сердцем термометра является микроконтроллер PIC16F628A фирмы Microchip. Это довольно распространенный и не дорогой микроконтроллер.

Немало важным достоинством, которого является наличие энергонезависимой памяти и внутренней RC цепочки, которую можно использовать в качестве тактового генератора с фиксированной частотой 4МГц. Такое решение позволяет исключить из схемы обычный кварцевый резонатор и два конденсатора.

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

В качестве датчика температуры был выбран широко распространенный цифровой датчик DS18B20 фирмы Maxim, он не дорогой и передает информацию о измеренной температуре в цифровом виде, что позволяет не заботится о длине проводов, их сечении и прочее. Датчик DS18B20 способен измерять температуру от -55… +125 °С.

Информация выводится на 3-х разрядный семисегментный индикатор с общим катодом (ОК).

Резисторы R5-R12 – токоограничивающие, катоды индикатора включены через транзисторы, это сделано для того чтобы не нагружать отдельные пины микроконтроллера.

Кнопка SB1 нужна для отображения максимальной и минимальной измеренной температуры, а также для сброса этих величин. Кнопка SA1 переключает датчики(дом, улица).

В процессе разработки цифрового термометра на микроконтроллере была создана его упрощенная виртуальная модель в программе протеус см. рисунок 2

Печатная плата цифрового термометра, показанная на рисунке 3-4, была разработана в программе Sprint-Layout 5. Если программы нет, тогда можно воспользоваться PDF файлами печатной платы термометра, которые подготовлены в масштабе 1:1. Сам ими пользуюсь. В архиве также есть платы в зеркале. Текстолит выбран двухсторонний.

Рисунок 3 – Плата печатная вид снизу

Рисунок 4 – Плата печатная вид сверху

Плату разрабатывал, учитывая воздействие возможных помех. Для этого в схему были добавлены барьерные резисторы R1, R3, R14-R15. А также два конденсатора С1-С2. Термометр на микроконтроллере PIC16F628A, собранный из заведомо рабочих деталей, не требует наладки и начинает работать сразу после включения.

Рабочая программа для микроконтроллера была написана на языке ассемблер и отлажена в MPLab v 8.8. В результате получился вот какой термометр рисунки 5-7.

Рисунок 5 – Внешний вид термометра

Рисунок 6 – Внешний вид термометра(плюсовая температура)

Рисунок 7 – Внешний вид термометра(минусовая температура)

Рассмотрим что умеет делать термометр.При первом подключении цифрового термометра к источнику питания напряжением +5В. Однако в битах конфигурации микроконтроллера отключен детектор снижения напряжения, так что можно падавать и меньшее напряжение.

На индикаторе на некоторое время высветятся три прочерка, это стартовая заставка, далее будет отображаться текущая температура датчика. Температура выводится на индикатор в диапазоне от -9,9 до 99°С с точностью до 0,1°С, в диапазоне от -55 до -10 и от 100 до 125 °С с точностью до 1°С. Незначащий первый разряд по необходимости гаситься.

При первом запуске пороговые температуры обязательно перезапишутся во временной памяти, а после 5 минут и в энергонезависимой, при последующих запусках перезапись происходит только если выполняется условие превышения пороговых температур(максимальной или минимальной).

Почему энергонезависимая память перезапишется не сразу, а через 5 минут??? Это специальный прием, который задает щадящий режим работы энергонезависимой памяти. За первые пять минут температура может измениться несколько раз, а запишется все равно самая максимальная/минимальная.

О том, что происходит запись в энергонезависимую память, свидетельствуют три нижних квадрата, которые высвечиваются на некоторое время. Замечу, что в диапазоне температур, когда точность отображения 0,1°С сравнение порогов происходит с учетом десятых, в другом диапазоне десятые не учитываются. Температура измеряется где-то раз в 780 мс.

Если кратковременно нажать на кнопку SB1, то на индикатор будут поочередно выведены максимальная и минимальная измеренные температуры(и две заставки одна для максимальной -П- и одна для минимальной -U-), если кнопку нажать и удерживать до появлений трех прочерков, то произойдет сброс пороговых температур.

Термометр на PIC16F628A автоматически определяет наличие и исправность датчика DS18B20, исправность линии связи датчика DS18B20 с термометром.

При отсутствии и обрыве датчика DS18B20, коротком замыкании плюсового провода с проводом информации, при переполюсовке плюсового и минусового проводов линии связи датчика DS18B20 с термометром на индикаторе появится сообщение Er1. Каждую секунду происходит повторная проверка датчика DS18B20 и линии связи.

Если причина аварии будет устранена, термометр вернется к основному циклу. При коротком замыкании минусового провода линии связи с информационным проводом на индикаторе появиться сообщение Er2.

Готовую плату термометра разместил в китайском будильнике, предварительно выкинув от туда все не нужное. Вот что из этого получилось(рисунки 8, 9).

Рисунок 8 – Плата термометра в китайском будильнике

Рисунок 9 – Плата термометра в китайском будильнике

Технические характеристики:

  • Диапазон измеряемых температур———————————————от -55 до +125 С
  • Разрешающая способность измерения и отображения
  • от-50 до -10 и от +100 до +120 С———————————————————–1 С
  • от-9,9 до+99,9—————————————————————————0,1 С
  • Точность измерения температуры DS18B20 прибор высокой точности имеющий заводскую калибровку.
  • Напряжение питания———————————————————————-5 Вольт

И так подведем итоги…. У нас получился термометр на микроконтроллере PIC16F628A с энергонезависимой памятью, которую, по желанию, можно сбросить. Выбран щадящий режим записи в энергонезависимую память. Есть возможность просмотреть самую минимальную и самую максимальную измеренную температуру одним нажатием на кнопку.

Принципиальная схема термометра проста и не содержит дефицитных деталей. В схеме применяются микроконтроллер PIC16F628A и датчик температуры DS18B20. Печатная плата проработана с учетом воздействия возможных помех, размеры платы 70х42. Термометр способен работать от трех батареек типоразмера АА. Средний ток потребления 25мА.

Исходный файл прошивки микроконтроллера может пригодится новичкам в программировании.

Посмотрите также:

Термометр на микроконтроллере PIC16F628A и DS18B20(DS18S20)

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

Архив с платами в формате PDF
Архив с проектом

Внимание! Архив с проектом был перезалит. Устранена одна ошибка неверной записи в энергонезависимую память. Все проверено в железе. Отдельное спасибо Михаилу Маруфенко за выявление ошибки!!!

Удачи всем! И пусть детали будут только исправные!

Источник: http://pichobbi.narod.ru/

Двухзонный термометр на РIС-контроллере

Автор предлагает конструкцию термометра с двумя выносными датчиками, который позволяет измерять температуру независимо в двух точках. Информация выводится на ЖКИ.

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

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

Во-вторых, датчик термопары необходимо изолировать при измерении температуры находящегося под напряжением теплоотвода или транзистора. В-третьих, часто возникает необходимость измерять температуру сразу на двух элементах устройства, например, на обоих транзисторах полумостового генератора. Так и возникла идея собрать прибор, избавленный от этих недостатков.

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

 

 Рис. 1

Напряжение питания, В…………………………………… 6…15Интервал измеряемой температуры, °С ……….. -50…+125Разрешение отображения температуры, °С   …………. 0,1Основа термометра — микроконтроллер PIC16F873A-I/SO. В качестве термодатчиков применены распространённые цифровые датчики DS18B20.

Датчики ВК1 и ВК2 подключены к разным портам микроконтроллера, что позволило использовать упрощённую процедуру их опроса. Датчики опрашиваются поочерёдно с интервалом около 1 с. Точность измерения применённых датчиков равна 0,0625 °С, что неудобно для отображения, поэтому значения температуры программно округляются до 0,1 °С.

Информация отображается на однострочном знакосинтезирующем ЖКИ. Подстроечным резистором R5 регулирует контрастность ЖКИ. Разъём ХР1 предназначен для подключения программатора. Обратите внимание, что расположение его контактов не совпадает со стандартной цоколёвкой программатора PicKit.

Термометр собран на плате из фольгированного с двух сторон стеклотекстолита толщиной 2 мм. Её чертёж показан на рис. 2, а расположение деталей — на рис. 3.

  
Плата термометра разработана под стандартный пластмассовый корпус для радиолюбительских конструкций  размерами 126x65x25 мм с отсеком под батарею “Крона”. В верхней крышке корпуса необходимо вырезать прямоугольное отверстие под экран ЖКИ, а в боковых стенках — под выключатель и провода термодатчиков. Фотографии собранной платы приведены на рис. 4 и рис. 5.   

На датчики следует надеть термоусажи-ваемые трубки, желательно разного цвета. Внешний вид готового устройства показан на рис. 6. Правильно собранное устройство начинает работать сразу и в налаживании не нуждается. В качестве ЖКИ подойдёт любой аналогичный однострочный шестнад-цатисимвольный подходящих габаритов на основе процессора HD44780.

 
Рис. 1

Б. ЛАЗАРЕВ, г. Вязьма Смоленской обл. ж. Радио, 2015г №6 стр. 42-43

Источник: http://radio-hobby.org/modules/news/article.php?storyid=1529

Простой термометр на ds1821 на базе популярного микроконтроллера pic16f628a

Представленный Вашему вниманию простой термометр разработан на базе популярного микроконтроллера PIC16F628A фирмы Microchip. В качестве датчика используется цифровой термометр DS1821 от Dallas Semiconductor. Отличительной особенностью данного устройства является использование малого количества электронных элементов и простота изготовления.

Назначение

Термометр предназначен для измерения температуры воздуха в доме, в теплице, в подвале и на улице.

Также его можно использовать для измерения температуры воздуха салона автомобиля, холодильника или морозильной камеры; температуры поверхности нагревательных приборов (масляных радиаторов и батарей отопления) и других предметов,а также температуры жидкостей ( при герметизации датчика и подводящих проводов).

Основные параметры

Датчик температуры способен измерять температуру в диапазоне от -55°C до +125°C. Причем погрешность измерении самого датчика DS1821 в интервале температур от 0°C до +85°C составляет ±1.0°C. Индикация показаний простого термометра во всем диапазоне измеряемых температур выполняется с точностью ±1.0°C.

Напряжение питания термометра +5В постоянного тока. Ток потребления не больше 9мА. Также можно питать цифровой термометр от трех элементов питания с общим напряжением +4,5В, но при этом для сохранения энергии элементов питания необходимо установить по цепи питания выключатель и включать его только на время измерений.

Схема

Принципиальная схема представлена на рисунке 1.

Рисунок 1. Принципиальная схема простого термометра на DS1821(Вариант 1)

Основой термометра является микроконтроллер D1 PIC16F628А, работающий от внутреннего тактового генератора на частоте 4 МГц.

Обмен данными и командами между микроконтроллером D1 и микросхемой цифрового датчика температуры U1 происходит с помощью однопроводного интерфейса 1-Wire. Резистор R1 является нагрузочным резистором для линии интерфейса 1-Wire. Выход DQ датчика U1 подключен к выводу 3 микроконтроллера D1 (порт RA3).

Питание +5В на датчик подается через резистор R2. Этот резистор выполняет функцию защиты от случайного короткого замыкания цепи питания, при использовании выносного датчика. Данный резистор при желании можно из схемы исключить, заменив его перемычкой.

В устройстве реализована динамическая индикация. Обновление изображения каждого индикатора осуществляется с частотой более 100Гц, что исключает мерцание индикаторов.

Управление сегментами индикатора (катодами светодиодов индикаторов) микроконтроллер осуществляет с помощью порта В. Резисторы R3…R10 ограничиваю ток протекающий через светодиоды индикаторов.

Управление разрядами индикаторов выполняется микроконтроллером через выводы порта А (RA0, RA7, RA6).

Описание работы

При включении питания после инициализации микроконтроллера происходит тест наличия и исправности цифрового датчика температуры.

Если датчик не подключен или его неисправность характеризуется наличием на линии DQ постоянного высокого уровня, при обращении к нему микроконтроллера, то на индикаторе будет выводится значение” L – H “.

 А вот если линия DQ имеет замыкание на 0В, либо эту линию сам датчик, при наличии неисправности его внутренней схемы, подтягивает к 0В, то на индикаторе выводится значение ” L – L “.

Далее если тест исправности датчика прошел успешно, микроконтроллер выдает датчику команду на измерение температуры. После окончания измерения цифровым датчиком температуры, микроконтроллер считывает значение температуры, обрабатывает его и выводит на индикатор.

Для удобства считывания показаний температуры незначащие нули в первых с права разрядах потушены, а на их месте выводится знак минус при отрицательных температурах.

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

Цифровой термометр собран на односторонней печатной плате, показанной на рисунке 2.

Рисунок 2. Печатная плата простого термометра на DS1821 (Вариант 1).

На рисунках 3 и 4 показано размещение элементов на обоих сторонах печатной платы, так же смотри

Рисунок 3. Размещение элементов со стороны установки индикаторов.

Рисунок 4. Размещение элементов со стороны проводников печатной платы.

На стороне установки индикаторов до монтажа элементов необходимо установить четыре перемычки (на рисунке 3 показаны красным цветом).

Все резисторы, примененые в данном устройстве, в SMD исполнении, и в корпусе типоразмера 0805. Такой же корпус и у конденсатора С1. Резисторы и конденсатор устанавливаются на печатную плату со стороны печатных проводников (см. рисунок 4).

Микроконтроллер устанавливается в 18-ногую панельку типа TRS18. Можно заранее запрограммированный микроконтроллер впаять непосредственно в плату.

Датчик для измерения температуры в доме можно установить непосредственно на плату (как показано на рисунке 3 и на фото в начале статьи), но при этом может появиться дополнительная погрешность, за счет нагрева датчика теплом, исходящим от контроллера и индикаторов.

Если датчик делать выносным, то длина проводов “теоретически” может достигать до 100м. Но на практике по рекомендациям из различных публикаций, особенно при измерении отрицательных температур, длину проводов следует ограничить до 6…10м.

Устройство проверялось с длиной проводов примерно 9м.

Микроконтроллер PIC16F628А можно заменить на PIC16F628-04 в DIP корпусе. При переработке печатной платы можно использовать микроконтроллер и в других корпусах.

В устройстве примены семисегментные светоизлучающие индикаторы с общим анодом SA04-11SRWA фирмы KINGBRIGHT. Их можно заменить на любые импортные сверхяркие индикаторы. Возможно придется подобрать номинал резисторов R3…R10 для обеспечения нужной яркости.

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

Но тогда это уже будет совсем не “простой термометр”.

Раздел: [Измерительная техника]

Источник: http://2zv.ru/article/944-prostoj-termometr-na-ds1821-na-baze-populyarnogo-mikrokontrollera-pic16f628a

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}

Назначение этого термометра всего лишь показывать температуру. Небольшие отличия от других подобных схем только в формате вывода температуры на LED индикатор, который представляет из себя 4-х разрядный сверхяркий  CA04-41SRWA. В качестве датчика температуры применён DS18B20 в обычном включении с отдельным проводом питания.

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

На индикатор выводится подсказка:

Затем на индикатор выводятся сами показания температуры.

Вид вывода показаний следущий:

Отличие формы вывода есть только для низких положительных температур. При индикации такой температуры к символу “градус” добавлен знак “C”. То есть градусы цельсия.Символ “градус” присутствует на индикаторе при любой измеряемой температуре.

Датчик температуры DS18B20 измеряет температуру с разрешением 0,0625 градусов цельсия. Термометр считывает показания из датчика и округляет их до десятых долей градуса.

Десятые доли градуса выводятся на индикацию во всех режимах индикации, кроме режима температур меньших, чем -10 градусов цельсия. Это сделано для того, чтобы на показаниях отрицательных температур всегда присутствовал знак “минус”.

Показания присутствуют на индикаторе в течение 30 секунд. Затем прибор снова уходит в спящий режим и индикатор выключается.

Модель в протеусе позволила отработать программную часть термометра не собирая сам прибор в железе. Все режимы оттестированы. Сбоев при моделировании в программе нет.

Саму модель можно загрузить по ссылке:

termo_i_v2.DSN

Схема нарисована отталкиваясь от рисунка печатной платы. Сначала была сделана разводка проводников печатной платы, таким образом, чтобы длина проводников и расположениен деталей было оптимальным и только после того, как на печатной плате было получено соответствие портов микроконтроллера PIC16F628A выводам индикатора CA04-41SRWA была составлена точная принципиальная схема.

Печатная плата сделана в программе SprintLayout 5.0.  Скачать файл печатной платы в формате lay можно по ссылке:  

Termoi_v2.lay

  Плата разработана под PIC16F628A в SOIC корпусе.

Прошивку можно скачать по ссылке: termo_i2.hex

Прошивка, в которой индикация включена постоянно. Кнопка не задействована, её можно не устанавливать на печатную плату. Печатная плата та-же самая, как и схема и никаких других изменений не требуется. В отличие от программы, расчитанной на батарейное питание, нет перехода в режим SLEEP:                    termo_i_5.hex

Прошивка, в которой реализован скроллинг 7-ми сегментного 4-х разрядного дисплея. Весь процесс индикации температуры выглядит так, как показано на рисунке. Для просмотра в браузере должна быть разрешена GIF анимация:    termoscr_0.HEX