Термометр термостат на микроконтроллере PIC16F876 и датчиках DS18B20
Термометр + термостат на микроконтроллере PIC16F876 и датчиках DS18B20
История этого термометра началась в далёком 2011 году. Мне понадобилось в подвале частного дома, в холодные русские зимы, включать обогреватель для того чтобы не замерзала вода в трубе. А так как труба идёт через весь подвал, измерять температуру требовалось в нескольких точках.
Также включать и выключать обогреватель надо было исходя из какой-то логики, опираясь на данные нескольких датчиков. И мной был разработан термометр с возможностью работы с несколькими датчиками (от 1 до 4) и развитой логикой управления обогревателем (охладителем). За основу был взят микроконтроллер Microchip PIC16C73B, датчики DS18B20.
Для читателей сайта datagor.ru данная конструкция была доработана под более распространенный микроконтроллер PIC16F876(A), убрана микросхема памяти AT24C16, добавлено сохранение минимальной и максимальной температуры в EEPROM.
Вкусные подробности далее.
Arduino программатор PIC-ов.
Во как. Было такое подозрение. Сейчас попробую навесным монтажем сделать.
Кстати, в какой-то момент чип прочитался, но не стирался. Причём несколько раз программа показывала разные модели контроллеров. Чудеса.
SieOK
- #28
AlexGyver nRF24L01
Когда залез на сайт автора, немножко прозрел, занёс в закладки, и вот наконец-то то что надо. Зарегистрировался.
———————
Предыстория такова — понадобилось разово запрограммировать парочку PIC16F676, есть уже интересный проект паяльной станции, готовы печатные платы, всё собрано, даже собран программатор https://drive.google.com/file/d/1R0hs2tJRL9UQa5GvN7LYhbGIbJkaDu7T/view?usp=sharing
Работая с проектами на ардуино всё просто, так же казалось и с PIC, но не тут то было
Оказывается в PIC-контроллер можно заливать прошивку четырьмя способами: https://radiohlam.ru/progr_asm_6/
Более того для полного понимания прошивки разных МК нужно знать отличие между ними. Очень хорошая ссылка на сводную таблицу для того чтобы быстро разобраться почему программатор заливает прошивку в один контроллер, и не заливает в другой (плюс там ещё и распиновки из даташитов даны) https://radiohlam.ru/pic_param/
Результатом анализа разных схем программаторов ( а хотелось попроще и поуниверсальней ) стала сводная таблица в картинке:
и несколько схемных решений:
1 — Программатор ART2003 от LPT-порта:
2 — Multi PIC Programmer 5 ver.2 с какого-то японского сайта:
3 — Упрощенная схема Multi PIC Programmer (Источник: Радиоаматор №9, 2014 ) :
4 — Классический JDM-программатор без поддержки VPP:
5 — Классический JDM-программатор c поддержкой VPP:
Но контроллер PIC16F676 так запрограммирован и не был.
Пробовал заливать прошивку программами IC-Prog_v-1.05, IC-Prog_v-1.06, WinPic800, PicPGM, WinPICpgm, затёр даже калибровочную константу, пришлось купить ещё один контроллер в этом же магазине из этой же партии.
Результат всех моих усилий в виде архива (дистрибутивы программ, собранные и отредактированные материалы, сводная таблица для локального просмотра) можно взять на гуглодиске, может кому пригодится:
ПРОСТЫЕ__PIC-AVR.rar
drive.google.com
- #29
SieOK
- #30
У кого нет повышающего DC-DC использованного в статье, его легко сделать самому из копеечных деталей:
— Схема преобразователя
— Схема регулировки VPP:
— Вид макетной сборки :
AlexIz
- #31
ТехнарьКто
- #32
Что значит тоже? У меня все замечательно работает, даже на такой макетке. Но для макетной платы пришлось на плате ардуино нано убрать все неиспользуемые в схеме штыри. Менять скетч как предлагает DAK я просто не пробовал. Ардуина должна быть 5-ти вольтовая 16Mhz.
Konstantin900
- #33
Что значит тоже? У меня все замечательно работает, даже на такой макетке. Но для макетной платы пришлось на плате ардуино нано убрать все неиспользуемые в схеме штыри. Менять скетч как предлагает DAK я просто не пробовал. Ардуина должна быть 5-ти вольтовая 16Mhz.
PIC какой прошивать пытаетесь? Я не экстрасенс. Есть PIC контроллеры с однократной возможностью записи. Есть PIC контроллеры не поддерживаемые этим программатором. Вариантов сделать из рабочей конструкции кирпич, очень много. Питание подавать только со вставленным в схему PIC-ом. Питание подавать сразу два, 5 вольт и 13 вольт одновременно. Питание 13 вольт на PIC подавать только через токоограничительный резистор, на схеме 10 КОм. Питание 5 вольт на PIC контроллер подавать одновременно с питанием на ардуино программатор. Если с азов то сначала надо установить драйвер для платы ардуино. Из Arduino IDE в ардуину используемую как программатор должны прошиваться скетчи. Если не прошивается — разбирайтесь, это азы. Ардуина программатор с неправильно подключенным или совсем не подключенным PIC-ом работать не будет. Нет PIC нечего прошивать, стираться и прошиватся естественно не будет. Прошитый как программатор ардуино с предварительно подключенным PIC-ом для прошивки. Подать питающие напряжения, если 5V от USB, а 13 вольт со стороны то сначала подать 13 вольт поскольку это важно для перевода PIC в режим программирования. Включить программатор в USB. Запустить программу ArdPicProgHost. Выбрать в программе Номер com порта программатора ардуино. Если порт выбран, просто навести на это окошко указатель мышки и нажать левую кнопку мыши. Подождать когда окно выбора порта сменит цвет на зеленый. Выгрузить ArdPicProgHost нажав мышкой на крест в углу окна программы. Снова запустить ArdPicProgHost. При всем этом программатор из USB не вытаскивать, как вначале включили, так и не трогать. В ArdPicProgHost запущенный второй раз навести на окошко выбора порта указатель мышки и нажать левую кнопку мыши. Подождать когда окно выбора порта сменит цвет на зеленый. И только теперь в программе правильно определиться тип подключенного PIC контроллера если подключение выполнено правильно и подключен поддерживаемый скетчем PIC. Это "pic12f629, pic12f675, pic16f630, pic16f676, pic16f84, pic16f84a, pic16f87, pic16f88, pic16f627, pic16f627a, pic16f628, pic16f628a, pic16f648a, pic16f882, pic16f883, pic16f884, pic16f886, pic16f887".
Другие PIC тоже можно подключить если внести изменения в скетч. Поскольку скетч и программа разработаны другими людьми, а предоставленный функционал меня устраивает, скетч и ArdPicProgHost приведены здесь в том виде, котором их выложили авторы.
Чем смог, надеюсь помог.
Схема подключения термостата POER PTC26
Подключить термостат POER PTC26 сможет каждый, это очень просто. Сзади есть клемник для подключения проводов. Выход 1и 2 это сеть, то есть провода идут от розетки. Выход 3 и 4 это нагрузка, которой управляет термостат (насос, электрический нагреватель, котел, теплый пол и т.д.). Выход 5 и 6 это подключение выносного датчика температуры, который идет в комплекте.
Что такое ПИД терморегулятор и его отличия от двухпозиционного терморегулятора
В настоящее время при необходимости автоматизации процессов нагрева, охлаждения, или поддержания заданной температуры трудно обойтись без терморегулятора. Например, вы хотите установить тёплый пол, или вы собрались построить свой собственный инкубатор, вы без всякого сомнения столкнетесь с выбором терморегулятора. Эта статья описывает основные типы терморегуляторов и их различия.
Принцип работы двухпозиционного терморегулятора.
Терморегуляторы используют для поддержания заданной температуры, исходя из этого можно выделить 2 типа работы терморегулятора — нагрев и охлаждение, рассмотрим подробней на простом примере. Например, у нас есть небольшой ящик, внутри которого нам необходимо поддерживать заданную температуру, скажем 35°C при начальной температуре 25°C. Нам понадобится: терморегулятор, датчик температуры, нагреватель. Для начала убедимся в том, что терморегулятор работает в нужном нам режиме, в данном случае — нагрев. Поместим датчик температуры в наш ящик, и подключим нагрузку — нагреватель. Включаем терморегулятор, выставляем нужную нам температуру и гистерезис. Будем наблюдать следующее:
На данном графике видно, как изменяется температура при регулировании. После преодоления отметки в 35°C терморегулятор выключает нагреватель, но он всё ещё горячий и продолжает нагревать ящик. В результате этого температура поднимается до 38°C, затем плавно снижается до установленной температуры и величину гистерезиса, в нашем случае до 34.5°C. Далее цикл повторяется, включается нагреватель, температура поднимается и колебания продолжаться в небольшом пределе. На этом простом примере продемонстрирована работа обычного двухпозиционного терморегулятора.
Принцип работы ПИД терморегулятора.
Проделаем тот же эксперимент с ПИД терморегулятором:
Можно заметить, что колебания температуры на втором цикле нагрева-охлаждения (18мин), значительно меньше, чем при использовании двухпозиционного терморегулятора. Это связанно с тем, что ПИД регулятор с помощью обратной связи и алгоритмов прогнозирования может за несколько циклов нагрева – охлаждения подстроиться таким образом, чтобы вовремя включать-выключать нагрузку (нагреватель), в результате обеспечивая минимальные отклонения температуры от заданной. На графике видно, как после второго цикла нагрева — охлаждения температура установилась в заданном значении.
Подведём итоги.
Каждый из представленных типов терморегуляторов выполняет свою задачу, если у вас есть необходимость в поддержании температуры в очень узких пределах, то вам стоит остановиться на выборе ПИД терморегулятора, если же точность поддержания температуры для ваших целей не столь важна, можно выбрать двухпозиционный терморегулятор, который стоит значительно дешевле ПИД терморегулятора.
Сеть интернет магазинов электроники и автоматики. График работы с пн-пт: 10:00 до 19:00,(+7 GMT)
Сфера применения PIC-микроконтроллеров
Как уже было сказано, семейство PIC16 очень любят радиолюбители. К тому же оно хорошо описано в большом количестве литературы. По количеству учебников с семейством PIC, на момент написания статьи, может посоревноваться только семейство AVR.
Давайте рассмотрим несколько схем с применением микроконтроллеров семейства PIC.
Таймер для управления нагрузкой на PIC16f628
Простейшая автоматика на микроконтроллерах PIC – это стихия 8-битного семейства. Их объём памяти не позволяет делать сложных систем, но отлично подходит для самостоятельного выполнения пары поставленных задач. Так и эта схема трёхканального таймера на Pic16f628, поможет вам управлять нагрузкой любой мощности. Мощность нагрузки зависит только от установленного реле/пускателя/контактора и пропускной способности электросети.
Настраивается прибор с помощью набора из 4-х кнопок SB1-SB4, на HG1 выводятся параметры, это дисплей типа LCD на 2 строки по 16 символов. В схеме используется внешний кварцевый резонатор на 4 МГц, а KV1 – это реле, с питанием катушки в 24 В, вы можете использовать любое реле, лишь бы оно подходило по напряжению катушки к вашему БП. МК питается от 5 В стабилизированного источника.
Вы можете использовать от 1 до 3 каналов в управлении нагрузкой, стоит только продублировать схему, добавив реле к выводам RA3, RA4 микроконтроллера.
Часы-будильник на МК PIC16f628A
Такие часы, согласно заявлениям разработчика, получились весьма точными, их погрешность весьма мала – порядка 30 секунд в год.
С незначительными переделками вы можете использовать любые 7-мисегментные индикаторы. Питаются от блока питания на 5В, при этом, при отключении от сети продолжают работать от батареек, что вы можете увидеть в правом верхнем углу схемы.
Регулятор мощности паяльника на PIC16f628A
У начинающих радиолюбителей не всегда есть возможность купить паяльную станцию. Но они могут собрать её сами. На схеме ниже представлен регулируемый блок питания на PIC16f628, для работы паяльника. В основу схемы вложено фазоимпульсное управление. Это, по сути, доработанный и осовремененный аналог классического тиристорного регулятора, но с микроконтроллерным управлением.
Схема довольно простая, в нижней части реализация светодиодной индикации. Главный силовой элемент – тиристор BT139, а MOC3041 – нужен для гальванической развязки МК от сети и управления тиристором с помощью логического уровня в 5 В.
Термостат для инкубатора или PID регулятор на arduino
Применение термостата с ПИД управлением не ограничено птицеводством, КО , проект может использоваться пивоварами для поддержания температуры сусла, винокурами в перегонных аппаратах, может просто греть воду в бойлере до приятной температуры, после небольших изменений, в самодельных паяльных станциях, муфельных печах, кароче везде где требуется контроль температуры с высокой точность. Принцип работы и отличие от банального термостата с гистерезисом показан в видео:
Ниже схемы подключения и исходные коды проекта.
О датчиках температуры:
Исходные коды проекта написаны нескольких типов датчиков:
- — датчик температуры с интерфейсом I2C, подробнее про работу с датчиком написано тут. Возможно датчик потребует корректировку температуры. — не дорогой и распространенный, достаточно точный аналоговый датчик температуры, подробнее про него тут. — высокоточный датчик температуры с интерфейсом I2C. Оптимальный выбор.
Имея навыки программирования ардуино, изменить код под другие датчики температуры труда не составит.
О ЖКИ индикаторе:
Решил не усложнять и взял стандартный текстовый экран WH1602A, про подключение подобных экранов к ардуино уже написано тут. Подключается напрямую, без переходников на I2C. Указанные в проекте номера выходов для подключения ЖКИ совпадают с китайским LCD Keypad Shield, я его использовал на стадии отладки.
Органы управления:
Настройка температуры терморегулятора осуществляется с помощью энкодера, удобно использовать модуль KY-040 по китайской номенклатуре
О реле:
В регуляторе крайне не рекомендуется использовать электромеханические реле, от частого переключения они выйдут из строя, особенно это относится к китайским релейным модулям за пару долларов.
Правильным решением будет использование твердотельного реле, либо модуль с симистором (что по сути является одним и тем же) на необходимый ток. Например SSR-25DA на 25А, если мощность нагревателя в районе нескольких киловатт, OMRON G3MB 202P держит до 2А или 440Вт.
У меня они в наличии не оказались, пришлось закупить в местном магазине радиодеталей оптосимистор MOC3063 для гальванической развязки и «детекции нуля» с симистором BT137x-800 на 8А и собирать твердотельное реле на макетке. Схема взята из даташита на MOC3063.
Схема подключения:
Возможно на этой будет понятней.
Схема подключения актуальная для датчиков с интерфейсом I2C (MCP9808, TMP102), в случаи использования аналогового LM35, его выход подключается к аналоговому входу А5.
Методика настройки ПИД-регулятора
Выбор алгоритма управления и его настройка является основной задачей в процессе проектирования и последующего удовлетворительного запуска агрегата в промышленную или иную эксплуатацию.
В основе методики лежит закон Циглера-Никольса, являющийся эмпирическим и основанным на использовании данных, полученных экспериментально на реальном объекте.
В результате ознакомления с методикой, а также при близком рассмотрении объектов регулирования, были выбраны формулы и коэффициенты ближе всего подходящие к реальному объекту регулирования.
Объект регулирования – камерная электрическая печь. Число зон регулирования от 24 до 40. Каждая зона есть набор электронагревателей. Материал нагревателей нихром. Тип — проволочные, навитые на керамические трубки.
Требования: поддержание температуры по зонам печи +/- 5С.
МЕТОДИКА:
Настройка пропорциональной компоненты (Xp)
- Перед настройкой зоны пропорциональности интегральная и дифференциальная компоненты отключаются:
- Постоянная интегрирования устанавливается минимально возможной (Ти =0),
- Постоянная дифференцирования минимально возможной (Тд = 0).
Тο — начальная температура в системе;
Тsp — заданная температура (уставка);
∆T — размах колебаний температуры;
∆t — период колебаний температуры.
- Меняем значение пропорциональной составляющей Xp от минимума (0) до момента, пока не появятся устойчивые колебания системы с периодом ∆t.
Система должна находится в постоянном колебательном процессе, притом колебательный процесс незатухающий, где ∆T– характеристика колебания равная значению величины рассогласования (±10С, или как по заданию). Колебания должны быть одинаковы от Тsp.
После получения данной кривой на нашем объекте, засекаем время периода колебаний ʌt – полный период. Данное время есть характеристика системы, оборудования.
3. Используя полученные параметры рассчитываем Ти и Тд.
Зона пропорциональности | Коэффициент передачи | Постоянная времени интегрирования | Постоянная времени дифференцирования | |
П-регулятор | 2*PBs | 0.5*Xp | ||
ПИ-регулятор | 2.2*PBs | 0.45*Xp | 0.83*ʌТ | |
ПИД-регулятор | 1.67*PBs | 0.6*Xp | 0.5*ʌТ | 0.125*ʌТ |
Цифры в формулах для расчета коэффициентов ПИД-регулирования скорректированы на основе запуска камерной электрической печи в опытно-промышленную эксплуатацию. И конечно в зависимости от типа объекта регулирования могут незначительно меняться.