Заголовок сообщения: Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20
Добавлено: Вс ноя 22, 2015 22:49:30
Держит паяльник хвостом
Карма: 19
Рейтинг сообщений: 150
Зарегистрирован: Ср мар 03, 2010 11:48:00 Сообщений: 997 Откуда: Уфа
Рейтинг сообщения:1
Вот пришлось вернуться к своей старой конструкции. Занимался дома ремонтом и решил сделать на балконе емкость для хранения овощей и др. запасов в зимнее время, чтобы место свободное не пустовало в холода. Опыт подобный уже имелся, вот и решил повторить, правда условия для этого на балконе хуже, чем если бы это лепить в лоджии. Что получилось можно посмотреть на фотках. Но вопрос не в этом. Вначале планировал использовать термостат как есть, без переделок, лежит же долго, использовал редко, эпизодически, но потом было решено делать капитально и собрал конструкцию специально под эту конкретную задачу. Попытки поправить прошивку, в конечном итоге, привели к полному ее переписыванию с самого начала и до завершения всех задумок. Lavr12 и другие повторившие конструкцию, писали о некоторых недостатках, многое постарался учесть, но не все. Мигание нагрузки в момент включения питания победить не удалось. Это нужно изменять схему включения оптопары на управлении симистором, связано с особенностями порта РА4 (с открытым коллектором). При включении питания РА4 подтянут к +5В резистором, до момента инициализации портов он находится в 3-м состоянии, естественно на управляющий транзистор подается высокий уровень, он то и включает кратковременно симистор. Очень короткий импульс, но иногда действительно заметный глазом. Решил ничего не менять, так как при включении, даже при управлении компрессором холодильника, он не успеет среагировать, не говоря об использовании нагревателей, им вообще никак это не вредит. Мерцание индикатора при опросе датчика убрал. Опрос датчика сделал реже, один раз за 2 секунды. Добавлен контроль CRC и индикация отказов обращения к датчику. Добавлены режимы работы по таймерам в случаях отказа датчика Изменил алгоритм опроса кнопок. Добавил "плавный разгон" при длительном удержании кнопок "плюс" и "минус". Изменена процедура установки температуры и ее сохранение в памяти. Гистерезис теперь считается только в сторону уменьшения от уст. температуры. И другие мелочи, о которых можно прочитать в текстовом файле комментария...
Просьба к модераторам, если это не сложно, то добавить новый архив с прошивками к статье. Помню пытался сам это сделать, но неудачно, там сбились все названия и долго все висело в редактировании. Странно, но архив с фотками никак не хочет цепляться к сообщению пока не разбил на 2 части....
Хатуль_мадан у меня возникло желание собрать вот такую схемку (надоело менять лампочки) http://radio.aliot.com.ua/?p=720 .В этой схемке тоже наблюдались моргания ,о чём ему писали собравшие.Если есть желание,то свяжитесь с ним и может чего путного подскажет.
Заголовок сообщения: Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20
Добавлено: Ср ноя 25, 2015 06:48:14
Держит паяльник хвостом
Карма: 19
Рейтинг сообщений: 150
Зарегистрирован: Ср мар 03, 2010 11:48:00 Сообщений: 997 Откуда: Уфа
Рейтинг сообщения:0
Что то не понял, а какая связь с лампочками? Моргания были на светодиодном индикаторе в момент опроса датчика. Сейчас все устранено. Если это к управлению нагрузкой, то тут нет смысла городить контроль перехода через ноль. Оптопара уже содержит такой узел и переключение нагрузки происходит именно при нулевом токе. Лампочки в качестве нагревателей я использовал в своей первой конструкции зимнего хранилища, но тут решил отказаться из-за следующих причин: низкая надежность нити накала; легко разбить; большие габариты; лишний свет не идет на пользу;
Доброго времени суток. Собрал схему на выложенной печатной плате. Собрал на pic16f84a и индикаторах с общим катодом по схеме из архива. Прошивка из последних. Температуру показывает, нагрузкой не управляет. В пределах работы П-регулирования работает нормально. Если отключить режим или измеренная температура меньше гистерезиса только короткие импульсы примерно раз в две секунды. Подскажите куда копать? Пробовал шить первой версией работает нормально, но индикатор работает не правильно.
Заголовок сообщения: Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20
Добавлено: Пн мар 14, 2016 07:56:42
Держит паяльник хвостом
Карма: 19
Рейтинг сообщений: 150
Зарегистрирован: Ср мар 03, 2010 11:48:00 Сообщений: 997 Откуда: Уфа
Рейтинг сообщения:0
По описанию проблемы, вроде программа виновата. Но вот только что подправил модель под ваш вариант и проверил работу, никаких косяков не обнаружил, все работает как и задумано. Живьём проверять не на чем, нет ни индикаторов, ни такого МК. Немного непонятно, значит в режиме пропорционального регулирования все в норме, а при его отключении нагрев не включается вообще? Я такого обнаружить не смог. Может неправильно выключаете П-регулирование, или случайно включен режим холодильника ( тогда включение будет с большой задержкой и при превышении температуры). Можно попробовать в П-регулировании уменьшить гистерезис до нуля, тогда термостат будет работать в пороговом режиме, температура ниже установленной- сразу включение нагрева, если выше то выключение. Думаю не забыли подтягивающий резистор на порт РА4 т.к. у него выход с открытым коллектором. Больше не знаю что можно предположить. Мой первый вариант термостата был на PIC16F84A но индикатор с ОА, работает нормально. У всех вариантов программы одинаковый алгоритм работы, разница только в инверсии выходов для индикаооров, это никак не влияет на управление нагревом.
Спасибо за ответ! Наверное путано написал. Если отключить режим пропорционального управления, то происходит кратковременное включение нагрузки (менее секунды) с частотой примерно 2 секунды до температуры порога отключения. Гистерезис пробовал менять от 0,1 до 4 градусов. В режиме охлаждения аналогично. Но если включить режим пропорционального управления и например установить гистерезис в 1 градус происходит следующее: кратковременное включение нагрузки до температуры на один градус меньше порога отключения, нормальная работа пропорционального регулирования до порога отключения. Датчик нагревал рукой или поднося к паяльнику
Первый вариант прошивки пробовал залить, работает нормально, но при опросе датчика небольшое мигание и индикатор не пойми что показывает.
Заголовок сообщения: Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20
Добавлено: Вт мар 15, 2016 08:15:56
Держит паяльник хвостом
Карма: 19
Рейтинг сообщений: 150
Зарегистрирован: Ср мар 03, 2010 11:48:00 Сообщений: 997 Откуда: Уфа
Рейтинг сообщения:0
Попробуем еще раз разобраться, чтобы хоть знать, где копать. Какой файл прошивки применяете, с коммутацией для анодов, или катодов? Если стоят транзистры в цепях катодов индикатора (инверсия), то нужен 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
Добавлено: Чт апр 21, 2016 14:13:08
Открыл глаза
Зарегистрирован: Чт май 01, 2014 22:09:14 Сообщений: 53
Рейтинг сообщения:0
Спасибо автору.... Неплохая конструкция. Но при использовании в инкубаторе...возникли проблемы с повышенными показаниями на 1.5-2 градуса.... Конечно думаю про датчик и про саморазогрев..... Как можно избавится от этой неприятности. Поскольку при повышении на 0.5 градуса он все равно недогревает, а на 0.8 начинает перегревать. Может попробывать фантомное питание,? Автор не могли бы вы переделать прошивку с опросом датчика раз в 10-15 секунд?
Заголовок сообщения: Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20
Добавлено: Пт апр 22, 2016 10:47:35
Держит паяльник хвостом
Карма: 19
Рейтинг сообщений: 150
Зарегистрирован: Ср мар 03, 2010 11:48:00 Сообщений: 997 Откуда: Уфа
Рейтинг сообщения:0
Саморазогрев возможен, но маловероятен. Сейчас опрос идет раз в 2 сек. Все интервалы привязаны к этому периоду, изменить можно, но надо ли? Возможно сам датчик имеет отклонение, может попробовать его заменить? У меня есть один, который показывает в меньшую сторону, например температуру тела всегда показывает 35.8 ... 36.2 градуса, занижено, но стабильно. Можно попробовать ввести поправочный коэффициент, но нет уверенности что он линеен во всем диапазоне температур. Про недогрев или перегрев думаю можно поэкспериментировать с гистерезисом, или вовсе выставить его нулевым. Тут наверно в большей степени сказывается инерционность нагревателя и всей системы в целом. Попробуйте еще подобрать резистор подтягивающий однопроводку с датчика, R1 по схеме. Может ток там завышен?
Mожно как-либо увеличить максимальное значение гистерезиса с 4 до 15-25 градусов?Думаю 4х градусов для управления бойлером будет маловато,слишком часто будет включаться-отключаться.
Заголовок сообщения: Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20
Добавлено: Чт май 05, 2016 11:48:42
Держит паяльник хвостом
Карма: 19
Рейтинг сообщений: 150
Зарегистрирован: Ср мар 03, 2010 11:48:00 Сообщений: 997 Откуда: Уфа
Рейтинг сообщения:0
Вода будет остывать довольно долго на 4 градуса. За всю ночь может остыть градусов на 20. И что плохого, если бойлер включится лишний раз в час? Сделать можно, вот только думаю надо ли, наоборот уменьшил. В первых версиях было 8 или 16 градусов (1 байт в формате датчика).
При условии,что ночью нет расхода горячей воды,то да, она и на 10 градусов не остынет,а днем,когда то посуду помоешь,то еще че-нибудь на 4 градуса остывать будет очень быстро. Нужно еще не забывать что датчик в конструкции бойлера находится в нижней трети емкости,куда поступает холодная вода,так что остывать он будет еще быстрее,чем горячая вода в верхней половине бойлера. Не совсем понял про 1 байт в формате датчика,по какому адресу он находится чтобы попробовать на программаторе его изменить?Насколько я разобрался в теме этот параметр не в ЕЕПРОМ находится?
Заголовок сообщения: Re: Терморегулятор на микроконтроллере PIC16Fxx и DS18B20
Добавлено: Чт май 05, 2016 18:37:55
Держит паяльник хвостом
Карма: 19
Рейтинг сообщений: 150
Зарегистрирован: Ср мар 03, 2010 11:48:00 Сообщений: 997 Откуда: Уфа
Рейтинг сообщения:0
Нет, переменная гистерезиса находится в епром, а ограничение ее максимума в программе. Формат температуры с датчика это 12 битное число, где младшие 4 бита это десятые доли градуса. Значит оставшиеся 4 старшие бита, в байте установки гистерезиса, могут содержать максимум 16 целых градусов. Если надо гистерезис 20 градусов, то в математике расчетов надо выделять на эту переменную 2 байта, или отказываться от дробных долей градуса. Не пойму зачем все это надо. Израсходовал 5 литров горячей воды, датчик остыл и включился нагрев, как только эти 5 литров снова нагреются, произойдет отключение нагрева. К тому же в бойлере граница между холодной и горячей водой четко выражена, они не смешиваются. Поэтому изменение гистерезиса вообще ничем не поможет, верх может быть нагрет более 50 гр, а внизу холодная вода 10 гр. Так гистерезис теперь более 40 градусов выставлять? Тут только менять положение датчика в бойлере, другого пути не знаю.
Менять положение датчика датчика в бойлере не вариант. А вот иметь возможность играться гистерезисом в более широких пределах,хотя бы 15 градусов...Универсальность конструкции от этого точно не пострадает.
Так собран уже,поменять индикатор на 4х разрядный и все,силовые элементы едут из Китая,а пока можно контролировать работу по светодиодам или какой-нибудь временный вариант придумать типа высоковольтный полевик и диодный мост. Индикаторы 4х разрядные есть ARK SR420361N OK.ПИК 628А,а то на фото отсвечивает
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения