Терморегулятор на микроконтроллере PIC16F84 датчикe DS18B20
- Сообщения: 87
- Зарегистрирован: Вс апр 10, 2011 08:17:13
С последней прош.при первом включении(сразу после прошивки МК)на индикаторах 8.80 8.80 и тишина.При последующих вкл.-выкл.изменений нет.Пробовал ставить другой PIC-ничего не меняется.Интересно,где эта собака зарылась?
- Реклама
Попробовал на макете - таже фигня. Правда на макете у меня индикация другая и индикатор один, так что часть прошивки я менял.kuchar писал(а):Попробовал последнюю прош.ВСЕ ПО-ПРЕЖНЕМУ
Покопался в прошивке. Пришел к выводу, что неправ компилятор. Странно, что Proteus симулирует нормально. Переписал спорные фрагменты кода, проверьте.
- Вложения
-
- Termometr.zip
- (3.95 КБ) 274 скачивания
- Сообщения: 87
- Зарегистрирован: Вс апр 10, 2011 08:17:13
Вот теперь включается и выключается без проблем-пробовал вплоть до дребезга в розетке,хотя и планирую питать от аккумулятора.При вкл. на индикаторах прочерки, одновременно звучит прерывистый сигнал и через секунду высвечивается температура.Вот только с алгоритмом не все понятно или это все еще тест?
Нет, это не тест. Описание работы я выкладывал. Если нужно что-то изменить, или что-то не так работает - пишите. Я сделал как понял.kuchar писал(а):...Вот только с алгоритмом не все понятно или это все еще тест?
- Сообщения: 87
- Зарегистрирован: Вс апр 10, 2011 08:17:13
Soir,я не совсем верно описал работу в зоне действия гистерезиса:например,задали температуру 38 гр.игистер.1гр.Необходимо,чтобы при превышении верхнего порога звучал сигнал тревоги и выключалось реле,а если падает ниже нижнего-то только сигнал,ведь нету смысла выключать то,что и так отключено,раз не растет температура.Если это так ,то большего не смею желать.Спасибо.
- Реклама
Попробуйте еще вот эту прошивку. Какие-то бока с компилятором, кое-что подправил, вдруг это оно.bratt писал(а):...я сначала попробую просто поменять микроконтроллер...
- Вложения
-
- Termometr.zip
- (3.06 КБ) 232 скачивания
Изменил, сигнализации по снижению температуры не было.kuchar писал(а):Необходимо,чтобы при превышении верхнего порога звучал сигнал тревоги и выключалось реле,а если падает ниже нижнего-то только сигнал,ведь нету смысла выключать то,что и так отключено,раз не растет температура.Если это так ,то большего не смею желать.Спасибо.
Только не понял выражение
В момент, когда температура ниже нижнего реле будет включено. Его тоже надо выключать? Замерзнут ведь цыплята.kuchar писал(а):...если падает ниже нижнего-то только сигнал,ведь нету смысла выключать то,что и так отключено,раз не растет температура...
- Вложения
-
- Termometr.zip
- (4.06 КБ) 247 скачиваний
- Сообщения: 87
- Зарегистрирован: Вс апр 10, 2011 08:17:13
Нет,конечно.Именно об этом я и писал,что если температура падает ниже установленной на величину гистерезиса,то нету смысла выключать реле.Скорей-наоборот.А сигнал в этом случае говорит о неисправности в цепях нагревателя.Сейчас погоняю последний вариант в обоих каналах и отпишусь.
- Сообщения: 87
- Зарегистрирован: Вс апр 10, 2011 08:17:13
Ув.SOIR.Я в восторге!!!
На таком контроллере и такой функционал.Думал,чудес не бывает-не прав.
Большое спасибо за подарок к Новому Году!А реальные испытания ближе к весне.Думаю,что спать я в период инкубации буду нормально.Кто выводил птицу-знает,что это такое и как бывает обидно ,когда после месяца ожиданий все пропадает из-за всяких провалов и перепадов в сети...
Всех с наступающими праздникамии и всех благ.
Большое спасибо за подарок к Новому Году!А реальные испытания ближе к весне.Думаю,что спать я в период инкубации буду нормально.Кто выводил птицу-знает,что это такое и как бывает обидно ,когда после месяца ожиданий все пропадает из-за всяких провалов и перепадов в сети...
Всех с наступающими праздникамии и всех благ.
Всем доброго дня!
Soir, снова я с ATmega8.

Максимально все что удалось получить с последней прошивкой (от 23дек.)
Скорее всего данный алгоритм не подходит для более точного поддержания температуры.
Спасибо за проделанную работу, меня устраивает полностью, на более высоких температурах разброс в пределах допустимого.
Soir,еще раз БОЛЬШОЕ спасибо, с наступающими праздниками, Мира Вам и спокойствия, будьте всегда таким!!!

Soir, снова я с ATmega8.

Максимально все что удалось получить с последней прошивкой (от 23дек.)
Скорее всего данный алгоритм не подходит для более точного поддержания температуры.
Спасибо за проделанную работу, меня устраивает полностью, на более высоких температурах разброс в пределах допустимого.
Soir,еще раз БОЛЬШОЕ спасибо, с наступающими праздниками, Мира Вам и спокойствия, будьте всегда таким!!!

- Вложения
-
- TermoATmega8_test.zip
- платы, схема, последняя прошивка
- (123.12 КБ) 468 скачиваний
Последний раз редактировалось tbogdan Пн янв 02, 2012 21:54:55, всего редактировалось 1 раз.
Можете опробовать еще один вариант прошивки.tbogdan писал(а):...Скорее всего данный алгоритм не подходит для более точного поддержания температуры...
1. Ввел коэффициент пропорциональности. Величина, на которую меняется мощность, теперь зависит от этого коэффициента. Если его установить в 0, то эта опция работать не будет. Формула расчета в описании, описание во вложении, вложение в...
В принципе я вводил этот коэффициент, чтобы увеличить реакцию устройства на отклонение от заданной величины. Может оказаться, что надо совсем на оборот. Если работа устройства ухудшится, я сделаю этот коэффициент замедляющим или "двухсторонним", то есть на ускорение и на замедление скорости изменения выходной мощности.
2. Вижу Вы используете параметр St по максимуму, поэтому увеличил ему потолок до 50%. Наверно это уже бессмысленно, мощность достигнет 100% за два приема, но на всякий случай.
P.S.
При смене прошивки нужно сбросить EEPROM.
- Вложения
-
- Termo_ATMEGA8_1.zip
- (14.97 КБ) 301 скачивание
С Новым Годом!
Мира всем и согласия!!!
Soir, получилось!!!!
Вот картинка

Есть несколько замечаний,
--Хаотические показания температуры, 3-5 градусов, пока не знаю нестабильность усилителя или наводка.
--Если температура не достигла установленной до конца программы, следующая за ней программа принимает значения как начало отсчета и за установленное время разогревает до конечной температуры, хотя желательно чтоб в данном случаи (пример), происходил нагрев до 250 градусов и дальше стабилизация до окончания программы
--Желательно, кнопку OFF/ON сделать с задержкой, защита от случайного отключения и сбоя программы.
--И еще какие то проблемы с записью EEPROM установок, еще до конца не разобрался, установки в режиме SET при выходе сохраняются только когда устройство находится в режиме ON, что не очень удобно.
С П А С И Б О!!!!
Мира всем и согласия!!!
Soir, получилось!!!!
Вот картинка

Есть несколько замечаний,
--Хаотические показания температуры, 3-5 градусов, пока не знаю нестабильность усилителя или наводка.
--Если температура не достигла установленной до конца программы, следующая за ней программа принимает значения как начало отсчета и за установленное время разогревает до конечной температуры, хотя желательно чтоб в данном случаи (пример), происходил нагрев до 250 градусов и дальше стабилизация до окончания программы
--Желательно, кнопку OFF/ON сделать с задержкой, защита от случайного отключения и сбоя программы.
--И еще какие то проблемы с записью EEPROM установок, еще до конца не разобрался, установки в режиме SET при выходе сохраняются только когда устройство находится в режиме ON, что не очень удобно.
С П А С И Б О!!!!
- Сообщения: 87
- Зарегистрирован: Вс апр 10, 2011 08:17:13
С Новым Годом всех.
Soir,погонял последнюю прошивку для т-рег.с двумя индикаторами,все работает,но есть одно замечание:реле включено,когда температура ниже нижнего порога,затем по достижении верхнего(c учетом гистерезиса)оно выключается,а вот снова включается
когда темп. упадет ниже нижнего порога,а желательно,чтобы оно включалось и в зоне действия гистерезиса.Посмотрите при случае,пожалуйста.С ув.
Soir,погонял последнюю прошивку для т-рег.с двумя индикаторами,все работает,но есть одно замечание:реле включено,когда температура ниже нижнего порога,затем по достижении верхнего(c учетом гистерезиса)оно выключается,а вот снова включается
когда темп. упадет ниже нижнего порога,а желательно,чтобы оно включалось и в зоне действия гистерезиса.Посмотрите при случае,пожалуйста.С ув.
Если их раньше не было, а с новой прошивкой появились, то возможно причина наводок в резко меняющейся нагрузке. У Вас установлен шаг изменения (St) 50%. Кстати при таком шаге коэффициент пропорциональности не работает. Он настроен так, чтобы St не превышал 50%.tbogdan писал(а):Есть несколько замечаний...
--Хаотические показания температуры, 3-5 градусов, пока не знаю нестабильность усилителя или наводка.
Можете поэкспериментировать, уменьшив St как раньше, до 20% и понаблюдать за стабильностью показаний.
Ну и я, кажется, упоминал о возможных нестабильных показаниях и предлагал усреднять... Предложение в силе. Только уточните зависимость и частоту изменений.
Сделать завершение предыдущей программы за счет времени следующей или следующую отложить, до выхода первой на режим?tbogdan писал(а):--Если температура не достигла установленной до конца программы, следующая за ней программа принимает значения как начало отсчета и за установленное время разогревает до конечной температуры, хотя желательно чтоб в данном случаи (пример), происходил нагрев до 250 градусов и дальше стабилизация до окончания программы
Может проще задавать достаточное время с некоторым запасом?
Задержка есть для всех кнопок. Состояние кнопки определяется каждые 4 мсек. Если нажатое состояние определяется программой не менее 10 раз подряд (итого, время ~40 мсек), то кнопка только тогда считается нажатой. Обычно этого хватает для подавления дребезга с одной стороны, а с другой стороны не тормозит работу кнопок. Если есть ложные срабатывания - скажите, я увечу это время. Кроме того, кнопки Start и Set имеют блокировку от длинного нажатия. То есть, чтобы кнопка сработала повторно, ее нужно отпустить и нажать снова.tbogdan писал(а):--Желательно, кнопку OFF/ON сделать с задержкой, защита от случайного отключения и сбоя программы.
Если есть влияние наводок - попробуйте установить параллельно кнопкам конденсаторы.
Что-то напутал при добавлении коэффициента пропорциональности. Исправил, проверьте.tbogdan писал(а):--И еще какие то проблемы с записью EEPROM установок, еще до конца не разобрался, установки в режиме SET при выходе сохраняются только когда устройство находится в режиме ON, что не очень удобно.
- Вложения
-
- Termo_ATMega8.zip
- (4.97 КБ) 226 скачиваний
Опробовал при разных установках, наилучшее при h=1, St=20, d=1, c=1, n=0.5
если можно сделать так, когда выставлена стабилизация, то SP не расчитывается а принимает установленное значение для этой программы. (например Р0=300, Р1=300 то SP для Р1 равно 300)
С уважением!
о кнопке OFF/ON, я имел в виду не дребезг, а чтоб вкл./выкл. надо придержать , например, 1 сек., это только для OFF/ON, остальные все нормально.Soir писал(а):Задержка есть для всех кнопок. Состояние кнопки определяется каждые 4 мсек.
при разных загрузках печи получается разное время, иногда не хватает несколько минут для завершения программыSoir писал(а):]Сделать завершение предыдущей программы за счет времени следующей или следующую отложить, до выхода первой на режим?
Может проще задавать достаточное время с некоторым запасом?
если можно сделать так, когда выставлена стабилизация, то SP не расчитывается а принимает установленное значение для этой программы. (например Р0=300, Р1=300 то SP для Р1 равно 300)
С этой прошивкой вроде нормально, последний разряд меняется +/- 1 иногда +/- 2Soir писал(а):Можете поэкспериментировать, уменьшив St как раньше, до 20% и понаблюдать за стабильностью показаний.
Ну и я, кажется, упоминал о возможных нестабильных показаниях и предлагал усреднять... Предложение в силе. Только уточните зависимость и частоту изменений.
С уважением!
Понятно, сделал 0,76 сек. Такое время получилось из-за лени что-то менять в программе. Надо другое - скажите.tbogdan писал(а):о кнопке OFF/ON, я имел в виду не дребезг, а чтоб вкл./выкл. надо придержать , например, 1 сек., это только для OFF/ON, остальные все нормально.
Сделал, не проверял.tbogdan писал(а):если можно сделать так, когда выставлена стабилизация, то SP не расчитывается а принимает установленное значение для этой программы. (например Р0=300, Р1=300 то SP для Р1 равно 300)
А я ничего и не менял в этой части, начиная с первого варианта прошивки...tbogdan писал(а):С этой прошивкой вроде нормально, последний разряд меняется +/- 1 иногда +/- 2
Хотя наверно надо, учитывая, что гистерезис у Вас 1 град, а скорость регулирования высокая...
Вобщем, для пробы вариант с усреднением значений. Частота смены показаний осталась прежняя - каждые 0,5 сек. Измерения проводятся 10 раз в течении 0,5 сек суммируются и делятся на 10. Прошивка Termo_ATMega8_2.hex. И еще в ней уменьшил предел установки температуры до 1000 град. Максимальная измеряемая температура ведь 1000 град?
- Вложения
-
- Termo_ATMega8.zip
- (10.1 КБ) 261 скачивание
Посмотрел при случае... Давайте подробнее...kuchar писал(а):...а вот снова включается
когда темп. упадет ниже нижнего порога,а желательно,чтобы оно включалось и в зоне действия гистерезиса.Посмотрите при случае...
Температура стала больше установленной + гистерезис - реле выключилось. Когда оно должно включиться? Когда температура станет ниже установленной + плюс гистерезис? То есть уменьшится на 0,1 градус? Температура тут же опять поднимется и реле снова выключится и т.д. На 0,1 градус температура может меняться также в следствие влияния случайных факторов, если температура близка к установленной реле должно все это отщелкивать? Именно для того, чтоб такого не было и сделан гистерезис. Гистерезис для работы реле убрать, оставить только для сигнализации? Или я неправильно понял? Может нужно два гистерезиса, отдельно для сигнализации, отдельно для реле. Или если в данном устройстве гистерезис "двухсторонний", то использовать его половинки? Например. Установлена температура 40 градусов, гистерезис 1 градус. Тогда реле будет выключаться при 41 град, включаться при 40, а сигнализация при 39 (ну и при 41, разумеется).
Soir,надеюсь что это последние изменения, работает отлично,
показания измерителя стабильны, (+\- 1)
то что я писал о нестабильных показаниях, причина была банальная, наводка на термопару при контакте с корпусом печки, изолировал термопару и все прошло.
Пока пусть поработает, возможно будут еще какие-то вопросы.
Хочу поблагодарить, за терпение и проделанную работу.
Еще раз СПАСИБО!!!

показания измерителя стабильны, (+\- 1)
то что я писал о нестабильных показаниях, причина была банальная, наводка на термопару при контакте с корпусом печки, изолировал термопару и все прошло.
Пока пусть поработает, возможно будут еще какие-то вопросы.
Хочу поблагодарить, за терпение и проделанную работу.
Еще раз СПАСИБО!!!

И какой вариант прошивки финальный? Хочу удалить лишнее, чтоб не путаться.tbogdan писал(а):надеюсь что это последние изменения, работает отлично...
Пока пусть поработает, возможно будут еще какие-то вопросы...
- Сообщения: 87
- Зарегистрирован: Вс апр 10, 2011 08:17:13
Ув.Soir. Именно так.Я не смог правильно сформулировать ситуацию.Поскольку данный терморегулятор используется в основном для контроля температуры,а не для ее поддержания,Soir писал(а): Например. Установлена температура 40 градусов, гистерезис 1 градус. Тогда реле будет выключаться при 41 град, включаться при 40, а сигнализация при 39 (ну и при 41, разумеется).
то он должен отследить превышение температуры,например 38гр.При установленном гистерезисе в 1гр.,т.е. при 39гр.он отключит нагрузку,подаст сигнал тревоги,
что он и делает.Здесь все правильно,это критическая для него ситуация.А дальше темп. падает и при 38гр.он должен включить нагрузку и выключить сигнал.Дальше,
если темп.упадет до 37гр.,должен подать сигнал(реле конечно включено).А на последней прошивке при 39гр. он работает правильно,но включает реле при 37гр.,а
не при38гр.,т.е.он блокирует работу основного терморегулятора,который выставлен на 38 гр. с гистерезисом 0,1гр.Вроде правильно?


