Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Вс ноя 22, 2015 22:49:30

Вот пришлось вернуться к своей старой конструкции. Занимался дома ремонтом и решил сделать на балконе емкость для хранения овощей и др. запасов в зимнее время, чтобы место свободное не пустовало в холода. Опыт подобный уже имелся, вот и решил повторить, правда условия для этого на балконе хуже, чем если бы это лепить в лоджии. Что получилось можно посмотреть на фотках. Но вопрос не в этом. Вначале планировал использовать термостат как есть, без переделок, лежит же долго, использовал редко, эпизодически, но потом было решено делать капитально и собрал конструкцию специально под эту конкретную задачу. Попытки поправить прошивку, в конечном итоге, привели к полному ее переписыванию с самого начала и до завершения всех задумок. Lavr12 и другие повторившие конструкцию, писали о некоторых недостатках, многое постарался учесть, но не все.
Мигание нагрузки в момент включения питания победить не удалось. Это нужно изменять схему включения оптопары на управлении симистором, связано с особенностями порта РА4 (с открытым коллектором). При включении питания РА4 подтянут к +5В резистором, до момента инициализации портов он находится в 3-м состоянии, естественно на управляющий транзистор подается высокий уровень, он то и включает кратковременно симистор. Очень короткий импульс, но иногда действительно заметный глазом. Решил ничего не менять, так как при включении, даже при управлении компрессором холодильника, он не успеет среагировать, не говоря об использовании нагревателей, им вообще никак это не вредит.
Мерцание индикатора при опросе датчика убрал.
Опрос датчика сделал реже, один раз за 2 секунды.
Добавлен контроль CRC и индикация отказов обращения к датчику.
Добавлены режимы работы по таймерам в случаях отказа датчика
Изменил алгоритм опроса кнопок. Добавил "плавный разгон" при длительном удержании кнопок "плюс" и "минус".
Изменена процедура установки температуры и ее сохранение в памяти.
Гистерезис теперь считается только в сторону уменьшения от уст. температуры.
И другие мелочи, о которых можно прочитать в текстовом файле комментария...

Просьба к модераторам, если это не сложно, то добавить новый архив с прошивками к статье. Помню пытался сам это сделать, но неудачно, там сбились все названия и долго все висело в редактировании.
Странно, но архив с фотками никак не хочет цепляться к сообщению пока не разбил на 2 части....
Вложения
Foto_termo-1.rar
(476.77 KiB) Скачиваний: 480
Foto_termo-2.rar
(547.34 KiB) Скачиваний: 402
Term_DS18B20_Ver3.rar
Прошивки от 20.11.2015
(265.18 KiB) Скачиваний: 580
Последний раз редактировалось Хатуль_мадан Вс ноя 22, 2015 22:55:30, всего редактировалось 1 раз.

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Вт ноя 24, 2015 22:10:39

Хатуль_мадан
у меня возникло желание собрать вот такую схемку (надоело менять лампочки) http://radio.aliot.com.ua/?p=720 .В этой схемке тоже наблюдались моргания ,о чём ему писали собравшие.Если есть желание,то свяжитесь с ним и может чего путного подскажет.

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Ср ноя 25, 2015 06:48:14

Что то не понял, а какая связь с лампочками?
Моргания были на светодиодном индикаторе в момент опроса датчика. Сейчас все устранено.
Если это к управлению нагрузкой, то тут нет смысла городить контроль перехода через ноль.
Оптопара уже содержит такой узел и переключение нагрузки происходит именно при нулевом токе.
Лампочки в качестве нагревателей я использовал в своей первой конструкции зимнего хранилища,
но тут решил отказаться из-за следующих причин:
низкая надежность нити накала;
легко разбить;
большие габариты;
лишний свет не идет на пользу;

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Ср ноя 25, 2015 08:06:57

Значит я не внимательно прочитал,где и в чём была причина морганий.Извиняюсь.

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Вс мар 13, 2016 13:30:13

Доброго времени суток. Собрал схему на выложенной печатной плате. Собрал на pic16f84a и индикаторах с общим катодом по схеме из архива. Прошивка из последних. Температуру показывает, нагрузкой не управляет. В пределах работы П-регулирования работает нормально. Если отключить режим или измеренная температура меньше гистерезиса только короткие импульсы примерно раз в две секунды. Подскажите куда копать? Пробовал шить первой версией работает нормально, но индикатор работает не правильно.
Вложения
LCD-OC.PNG
(30.93 KiB) Скачиваний: 511

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Пн мар 14, 2016 07:56:42

По описанию проблемы, вроде программа виновата. Но вот только что подправил модель под ваш вариант и проверил работу, никаких косяков не обнаружил, все работает как и задумано. Живьём проверять не на чем, нет ни индикаторов, ни такого МК. Немного непонятно, значит в режиме пропорционального регулирования все в норме, а при его отключении нагрев не включается вообще? Я такого обнаружить не смог. Может неправильно выключаете П-регулирование, или случайно включен режим холодильника ( тогда включение будет с большой задержкой и при превышении температуры). Можно попробовать в П-регулировании уменьшить гистерезис до нуля, тогда термостат будет работать в пороговом режиме, температура ниже установленной- сразу включение нагрева, если выше то выключение. Думаю не забыли подтягивающий резистор на порт РА4 т.к. у него выход с открытым коллектором. Больше не знаю что можно предположить. Мой первый вариант термостата был на PIC16F84A но индикатор с ОА, работает нормально. У всех вариантов программы одинаковый алгоритм работы, разница только в инверсии выходов для индикаооров, это никак не влияет на управление нагревом.

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Пн мар 14, 2016 19:47:14

Спасибо за ответ!
Наверное путано написал. Если отключить режим пропорционального управления, то происходит кратковременное включение нагрузки (менее секунды) с частотой примерно 2 секунды до температуры порога отключения. Гистерезис пробовал менять от 0,1 до 4 градусов. В режиме охлаждения аналогично. Но если включить режим пропорционального управления и например установить гистерезис в 1 градус происходит следующее: кратковременное включение нагрузки до температуры на один градус меньше порога отключения, нормальная работа пропорционального регулирования до порога отключения. Датчик нагревал рукой или поднося к паяльнику

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

Проверю еще раз подтягивающий резистор.

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Пн мар 14, 2016 21:08:56

продублировал подтягивающий резистор, изменений нет

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Вт мар 15, 2016 08:15:56

Попробуем еще раз разобраться, чтобы хоть знать, где копать.
Какой файл прошивки применяете, с коммутацией для анодов, или катодов?
Если стоят транзистры в цепях катодов индикатора (инверсия), то нужен 16F84_Led-OA_comm_anode c переключением разрядов высокими уровнями на выходе. Эта прошивка проверена и в железе, работала без проблем. Есть ли возможность удалить транзисторы в цепях катодов индикатора и переключить эти катоды непосредственно на соответствующие ножки МК? Прошивка при этом должна быть16F84_Led-OС_comm_cathode. Будут ли какие изменения в работе? И вообще, есть ли уверенность в исправности самого МК? Бывали случаи неисправности только некоторых ног портов.
При температуре ниже установленной, происходит кратковременное включение нагрева, с периодом опроса датчика (2 сек). А на сколько кратковременно, можете глянуть осциллографом прямо на РА4 выходе порта? Получается в процессе работы, датчик опрашивается, происходит анализ и включение нагрева, а потом что то заставляет его выключиться. Не перегружен ли выход с МК? Можно отключить все от этой ноги и посмотреть, что происходит с выходом в этом случае. Просто странное поведение. Собрано пара таких термостатов и ни на одном такого не наблюдал, на разных МК и прошивки 16F84_Led-OA_comm_anode и 16F628_Led-OA_comm_anode.
Да, небольшой отчет о зимнем холодильнике на балконе по прошествии зимы (пост выше на этой странице). В январе, когда у нас температуры за окном опускались ниже -24...-26 термостат отлично держал установленные +4 градуса с гистерезисом 0.2 гр. При этом периодичность включений нагрева была 11...12 минут и сам нагрев в среднем по 70...90 секунд. При температурах на улице до -8 градусов, включений нагрева не замечал вообще, а температура внутри почти всегда была на градус два выше установленной. Пока за эти полгода эксплуатации ни разу не зафиксировано каких либо сбоев в работе датчика и самого термостата, не знаю, как будет в дальнейшем. Повышения ежемесячного расхода электроэнергии тоже не заметил, может просто зима была теплой. Доедаем второй мешок картошки. :-) По внешнему виду, как будто ее только что туда засыпал, с осени существенных изменений нет. В общем, результатом доволен.

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Чт мар 17, 2016 21:01:32

Автору респект! Уменьшил номинал подтягивающего резистора (R2) до 1,6К и все заработало как надо. VT5 - BC846 - возможная причина.

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Чт апр 21, 2016 14:13:08

Спасибо автору.... Неплохая конструкция. Но при использовании в инкубаторе...возникли проблемы с повышенными показаниями на 1.5-2 градуса.... Конечно думаю про датчик и про саморазогрев..... Как можно избавится от этой неприятности. Поскольку при повышении на 0.5 градуса он все равно недогревает, а на 0.8 начинает перегревать. Может попробывать фантомное питание,? Автор не могли бы вы переделать прошивку с опросом датчика раз в 10-15 секунд?

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Пт апр 22, 2016 10:47:35

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

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Ср май 04, 2016 21:15:18

Mожно как-либо увеличить максимальное значение гистерезиса с 4 до 15-25 градусов?Думаю 4х градусов для управления бойлером будет маловато,слишком часто будет включаться-отключаться.

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Чт май 05, 2016 11:48:42

Вода будет остывать довольно долго на 4 градуса. За всю ночь может остыть градусов на 20. И что плохого, если бойлер включится лишний раз в час? Сделать можно, вот только думаю надо ли, наоборот уменьшил. В первых версиях было 8 или 16 градусов (1 байт в формате датчика).

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Чт май 05, 2016 12:08:25

При условии,что ночью нет расхода горячей воды,то да, она и на 10 градусов не остынет,а днем,когда то посуду помоешь,то еще че-нибудь на 4 градуса остывать будет очень быстро.
Нужно еще не забывать что датчик в конструкции бойлера находится в нижней трети емкости,куда поступает холодная вода,так что остывать он будет еще быстрее,чем горячая вода в верхней половине бойлера.
Не совсем понял про 1 байт в формате датчика,по какому адресу он находится чтобы попробовать на программаторе его изменить?Насколько я разобрался в теме этот параметр не в ЕЕПРОМ находится?

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Чт май 05, 2016 18:37:55

Нет, переменная гистерезиса находится в епром, а ограничение ее максимума в программе. Формат температуры с датчика это 12 битное число, где младшие 4 бита это десятые доли градуса. Значит оставшиеся 4 старшие бита, в байте установки гистерезиса, могут содержать максимум 16 целых градусов. Если надо гистерезис 20 градусов, то в математике расчетов надо выделять на эту переменную 2 байта, или отказываться от дробных долей градуса.
Не пойму зачем все это надо. Израсходовал 5 литров горячей воды, датчик остыл и включился нагрев, как только эти 5 литров снова нагреются, произойдет отключение нагрева. К тому же в бойлере граница между холодной и горячей водой четко выражена, они не смешиваются. Поэтому изменение гистерезиса вообще ничем не поможет, верх может быть нагрет более 50 гр, а внизу холодная вода 10 гр. Так гистерезис теперь более 40 градусов выставлять? Тут только менять положение датчика в бойлере, другого пути не знаю.

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Пт май 06, 2016 11:19:16

Менять положение датчика датчика в бойлере не вариант.
А вот иметь возможность играться гистерезисом в более широких пределах,хотя бы 15 градусов...Универсальность конструкции от этого точно не пострадает. :)

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Пт май 06, 2016 11:41:34

Не вопрос :))
Как только соберёте регулятор, увеличу гистерезис до 15 градусов. Сообщите тип МК и индикатора, чтобы не плодить кучу прошивок.

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Пт май 06, 2016 13:53:18

Так собран уже,поменять индикатор на 4х разрядный и все,силовые элементы едут из Китая,а пока можно контролировать работу по светодиодам или какой-нибудь временный вариант придумать типа высоковольтный полевик и диодный мост. :)
Индикаторы 4х разрядные есть ARK SR420361N OK.ПИК 628А,а то на фото отсвечивает :)

Изображение

Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20

Пт май 06, 2016 14:55:10

Держите. dT максимально 15,2 гр.
Вложения
Termostat_DS18B20_16F628_LED-OA_dT_15.rar
(2.1 KiB) Скачиваний: 317
Ответить