С работы попал на дачу. Только что приехал домой. Сразу залил последнюю версию (4.2). После надписи Soir ошибка 2. Проверял на2х процессорах. Залил прошивку 4.1. Все запустилось нормально, но испытать на реальном объекте, просто сил нет. Ужасно устал. Завтра, с утра, стоматолог и сразу испытания. К вечеру смогу сказать что-то вразумительное. Сейчас просто вырубаюсь. Извините!
Да, я тоже, когда проверил в железе, столкнулся с таким же. А Proteus был всем доволен... Погонял у себя версии 4.0 и 4.1 (немного доработал, исправил выявленные ошибки, выкладываю последние варианты). По 4.0 реагирует быстро, но проскакивает заданную температуру. При 40 град температура достигла 48 град, затем 37 и на следующем проходе уже установилась, точность поддержания 0,2 - 0,3 град. (это именно в этом варианте, в выложенных ранее была "мертвая зона" при низких значениях коэффициента пропорциональности, что не позволяло точно вывести температуру). Версия 4.1 работает медленнее, но зато не проскакивает так далеко. До входа в стабильный режим колебания 41-38 град. А дальше те же 0,2-0,3 град. Еще раз версия 4.2. Некий гибрид 4.0 и 4.1. По идее должно получиться нечто среднее. В железе не проверял, смогу только вечером. P.S. Все проверки провожу на стенде, состоящем из понижающего трансформатора, лампочки 24V 0,1А и датчика, упакованных в отрезок ПВХ трубки. Настройки: t 40,0; St 10; Pr0.1; d 0,1. Конечно, это совсем не полевые условия и у Вас результаты могут быть другими.
немного доработал, исправил выявленные ошибки, выкладываю последние варианты.
Здравствуйте, Уважаемый Soir! Вы быстрее меняете прошивки, чем я успеваю проверять Сегодня игрался с версией 4.1 (предпоследней) Пока что, минимальный разбег, составляет 2,5 *С. Но вариантов проверки, еще уйма. Сейчас я сделал такую конструкцию. В литровую банку, положил лампу 40Вт. На неё, поставил еще одну банку, на дне которой уложен мох (4см) залитый водой, на мох поставил черенки винограда ( пока того, который мне не жалко) и датчик. Все это обернул с боков,куском вспененного полиэтилена, толщиной 2см. Конструкция, долго нагревается и долго остывает. Поэтому проверка занимает много времени. Как я говорил, между моим нагревателем и датчиком, слой влажного мха 4см, (который видимо и создает мне проблемы). Когда в районе датчика, температура достигает установленной, та часть мха, что касается дна, уже успевает разогреться очень сильно. В результате, мощность на нагревателе уже падает до 0 а температура еще растет. Когда температура снижается, ниже заданной, мощность начинает расти и успевает выйти на 100% до того как начнет, подниматься температура в районе датчика. На данном этапе, я с установленным Pr-0,5, постепенно увеличивал время. Но стабилизации достигнуть пока не получается. Завтра думаю, эту конструкцию, взять с собой на работу, и в течении суток, смогу экспериментировать. Микросхем у меня только 2. Какие прошивки, на Ваш взгляд, стоит проверять в первую очередь, для такой конструкции. И с каких установок St и Pr, ориентировочно, начать проверку?
Так дела не будет, я уже говорил что надо снять единичную характеристику... если включить нагреватель, через какое время температура установится? Вот примерно постоянная времени регулирования должна составлять минимум половину от этого времени. Либо надо использовать два регулятора для каждой зоны отдельно, если есть необходимость регулировать температуру в двух зонах одновременно и между ними стоит преграда.
если включить нагреватель, через какое время температура установится? Вот примерно постоянная времени регулирования должна составлять минимум половину от этого времени.
А от какой температуры, начинать отсчет? От той, что сейчас на подоконнике, где стоит конструкция? А если завтра, похолодает и ветер повернет в окно? Температура на подоконнике, упадет градусов на 5. Я так понимаю, нужно учитывать время, за которое температура, повышается на 1 или сколько-то градусов. Так и то, эта величина будет не линейна. Чем больше разница между наружной и требуемой, тем медленнее будет идти прогрев.
Alexeyslav писал(а):
Либо надо использовать два регулятора для каждой зоны отдельно, если есть необходимость регулировать температуру в двух зонах одновременно и между ними стоит преграда.
Но тогда почему, при использовании того, что я выкладывал download/file.php?id=96492 мне чудесно удавалось, обходится одним? Да и не нужно мне в двух зонах. Только в одной! Но, она отделена от нагревателя, довольно инерционной прослойкой.
Уважаемый Soir, я вот чего подумал. А что получится, если сделать так, чтоб мощность останавливалась, как только начинается повышение температуры. Сейчас, если я правильно понимаю, у нас мощность повышается, при любом значении температуры, которое ниже установленной. А если сделать так, чтоб при снижении температуры, ниже установленной, начала повышаться мощность но, как только, снижение прекратится и температура начнет опять подниматься, мощность перестала увеличиваться. По идее, это не даст мощности падать до 0 и подниматься до 100% если в этом нет необходимости. Может я конечно и не правильно мыслю. Не силен я в этом.
Последний раз редактировалось Niks13 Вт фев 28, 2012 20:17:10, всего редактировалось 1 раз.
Завтра думаю, эту конструкцию, взять с собой на работу, и в течении суток, смогу экспериментировать. Микросхем у меня только 2. Какие прошивки, на Ваш взгляд, стоит проверять в первую очередь, для такой конструкции. И с каких установок St и Pr, ориентировочно, начать проверку?
Для Ваших условий, как я понимаю, надо делать медленный регулятор. Из прошивок это 4.1. Прошивку 4.2 проверил, мне не понравилось самому, идея была хорошая, но где-то видно ошибся. Но с ней пока не стоит заморачиваться. Pr выбирать минимальный, а St побольше. Если сравнивать с Вашим старым термостатом, то главная разница состоит наверно в том, что он работал в узком диапазоне выходной мощности. И соотвественно не разгонялся от 0 до 100. Могу еще Вам предложить оба варианта (4.0 и 4.1) с ограниченими диапазона выходной мощности. Если и они не пойдут, тогда не знаю, чем еще помочь. Сейчас нарисую...
Если сравнивать с Вашим старым термостатом, то главная разница состоит наверно в том, что он работал в узком диапазоне выходной мощности. И соотвественно не разгонялся от 0 до 100.
У него, тоже весь диапазон использовался. При включении, лампа загоралась на полную мощность, но при приближении к заданной Т, притухала все сильнее. Температура, проскакивала заданную и она гасла полностью, а потом медленно начинала загораться. Было несколько, затихающих выходов, а потом температура стабилизировалась и лампа светилась с определенным накалом. Температура, на обычном спиртовом термометре, стояла как вкопанная. Цифрового, у меня небыло и сказать точность в десятых, я не могу.
Могу еще Вам предложить оба варианта (4.0 и 4.1) с ограниченими диапазона выходной мощности.
Так требуемая мощность в % зависит ведь от максимальной нагревателя? А тот вариант, что я предлагал выше, не годится?
Soir писал(а):
Если и они не пойдут, тогда не знаю, чем еще помочь.
Уважаемый, Soir. Вы, в любом случае, мне уже помогли. Из такого обилия прошивок, я в любом случае найду ту, которая меня устроит. Тем более, что одна такая, уже есть. Я писал раньше. А если я поиграюсь подольше, с записью установок и полученными результатами, то 100% смогу добиться высокой точности, хотя в данном случае, она мне особо не нужна. Это для моей конструкции, столько проблем возникает, а для других целей, просто великолепный терморегулятор получился. Только, его бы, как-то, в отдельную статью или тему оформить, чтоб людям не штудировать столько страниц
Последний раз редактировалось Niks13 Вт фев 28, 2012 21:25:57, всего редактировалось 1 раз.
От температуры переходный процесс не зависит. главное это время за которое будет достигнуто 70% от максимальной температуры. Весь диапазон от начальной до максимальной при которой наступит равновесное состояние и будет принято за 100%. Тот момент когда температура достигнет 70% и будет постоянной времени объекта. на это и надо настраивать регулятор. Чтобы построить эту характеристику нужно постоянно снимать показания термометра и строить график. Вручную конечно делать это довольно накладно, я бы сделал термометр который бы выдавал значения каждую минуту в терминал, а потом в экселе построит график по снятым данным.
Естественно, в процессе температура повысится значительно выше номинала. Это и является основной проблемой измерения постоянной времени на натуре.(ага, что бы было если бы люди измеряли постоянную времени разгона ядерного реактора). Альтернатива - измерить теплопроводность и теплоемкость разделяющего слоя, по нему можно будет хоть как-то используя математику оценить постоянную времени. Но я так понял, эксперимент на натуре - наиболее реалистичный...
Так требуемая мощность в % зависит ведь от максимальной нагревателя? А тот вариант, что я предлагал выше, не годится?
Не редактируйте сообщения, на которые уже дан ответ. Я не видел Вашего варианта. Мощность можно ограничить программно, что я уже сделал. Параметр L - минимальная мощность, H - максимальная. Если выставить 0 и 100 соответственно, то они не будут влиять на работу остальной части регулятора. По поводу Вашего предложения. Сейчас попробую изменить прошивки, пусть будет так.
Niks13 писал(а):
Температура, на обычном спиртовом термометре, стояла как вкопанная. Цифрового, у меня небыло и сказать точность в десятых, я не могу.
Но сейчас у Вас уже есть цифровой, проверьте. А заодно и наоборот, проверьте спиртовым работу нового регулятора. Будет интересно, может и получите ответ на все вопросы.
Ну вот собственно и варианты. 4.0 и 4.1 это те же, но с ограничениями по мощности. 4.1.1 это 4.1 с Вашим предложением. Есть еще идеи, но уже завтра над ними подумаю, если Вам не надоело.
Не редактируйте сообщения, на которые уже дан ответ.
Да я начинаю редактировать, когда ответа еще нет, но пока я пишу, Вы уже отвечаете. А мне же не видно, что там уже ответ есть
Soir писал(а):
если Вам не надоело.
Мне нет! Дорогие мне черенки, буду ставить 11-12 марта, так что времени еще валом. Главное, чтоб я Вас не сильно утомил.
Soir писал(а):
При смене прошивки сотрите EEPROM.
Эх, знал-бы я как это делается Ладно. Сейчас найду. Я когда в ИКПРОГЕ жму стереть микросхему, еепром же тоже стирается? Я вот стер, потом прочитал. В еепроме одни фф
Я когда в ИКПРОГЕ жму стереть микросхему, еепром же тоже стирается? Я вот стер, потом прочитал. В еепроме одни фф
А что такое ИКПРОГЕ? Это IC-prog? В ней стирается. FF - значит стерто.
Форум что-то глюкает. Пишет слишком много соединений и страницы не открываются. Да, я имел ввиду IC-prog. Просто лень было раскладку менять. Залил в микросхемы, прошивки 4.1 и 4.1.1 в схему поставил 4.1.1 Сейчас запустил. Посмотрю что покажет, но пределы регулировки мощности, мне очень понравились. Думаю, что с таким количеством регулировок, этот термостат подойдет для любых нужд. ОГРОМНОЕ СПАСИБО, Soir!!!! Возьму и программатор на работу. Только не знаю, есть ли КОМпорт на рабочем компе. P.S. Погонял малость 4.1.1 За стабилизацию температуры, пока сказать ни чего не могу, но при установке, нижнего предела, мощности (L) она часто не выходит на установленный режим. Т.е. была установлена L-10% Лампа слегка светится. Устанавливаю L-5% Проходит 5сек, включается индикация текущей температуры, а лампа остается светится, с тем-же накалом. Начинаю смотреть установки. L стоит как и ставил 5% а вот А-10%. Все это, проверял при температуре, выше заданной. Так что, это не связано, с регулированием самого термостата.
L стоит как и ставил 5% а вот А-10%. Все это, проверял при температуре, выше заданной.
L и H это границы, в которых может меняться A. Они устанавливаются только вручную и самостоятельно программой не меняются. При включении, когда A=0, мощность может нарастать, пройдет L и продолжит расти пока не упрется в H. (Если алгоритм не повернет ее обратно раньше). Затем, при необходимости, может снижаться пока не упрется в L. То же самое, если в ручном режиме мощность была установлена вне ограничений L или H, а затем был переход в автоматический режим. Мощность по алгоритму войдет в границы и уже не будет из них выходить. Там еще есть ограничения при установке пределов: L не может быть выше H, а H, соответственно, не может быть ниже L. Так задумывалось... Может что-то не учел...
Блин!!! Пока довез свою конструкцию на работу, оторвал лампочку, а паяльник я с собой не додумался взять Буду завтра и послезавтра проверять значит.
Soir писал(а):
L и H это границы, в которых может меняться A.
Здравствуйте, Уважаемый Soir! Принцип работы я понял правильно. Просто у меня была такая ситуация. Реальная Т +30*С. Заданная +26*С. Мощность на нагревателе (А), падает до установленной L. L- установлена на 10%. Соответственно А упала до 10% и остановилась. Теперь, я решил изменить L и поставить 5%. Установил L-5% но А, так и осталась 10% . Впрочем сейчас только до меня дошло, что А примет значение L не через 5сек, как я подумал, а по истечении времени St. В общем, ступил я! Извините! Все там нормально. Жаль только что целые сутки теряю из за обрыва лампочки.
Уважаемый Soir! Вы по моей просьбе дорабатывалм Ваше изделие http://radiokot.ru/forum/download/file.php?id=94431 до прошивки http://radiokot.ru/forum/download/file.php?id=94465. В протеусе все работает как надо, но на макетке пошла проблемма. При первом включении все работает правильно. При втором включении МК начинает работать с момента достижения температуры Т2. Такое впечатление, что МК запомнил свое последнее состояние и начинает с него. А при включении питания должно быть как бы заново, разумеется кроме настроек.
Чтобы Вам было чем заняться, еще вариант. Пропущу номер 4.2, что-то с ним никак, версия 4.3 - ПИД регулятор. За основу взял код LordN, выложенный здесь. (Только за основу, некоторые изменения все же внес.) Соответствие коэффициентов условным обозначениям при индикации (в скобках величины по умолчанию): Tint -> in (20) Tquant -> ti (2) Tdiff -> di (5) Zp -> Pr (1) St (5) как был, так и остался. Без него не удавалось застабилизировать регулятор. Правда я лишь поверхностно прошелся по подбору параметров. Практически сразу наткнулся на оптимальные для моей системы (сделал по умолчанию) и дальше не экспериментировал. Результат лучше, чем все предыдущие. Быстро выходит на режим, практически не проскакивает установленную температуру, точность поддержания 0,1-0,2 град, при изменении напряжения в сети в пределах 150-240 Вольт кратковременные отклонения не более 0,5 град. Еще раз подчеркну, что тщательной прогонке новую прошивку я не подвергал. Выявите глюки - пишите. ---------- Вс мар 04, 2012 16:15 Перезалил прошивку, исправил мелкие ошибки.
При первом включении все работает правильно. При втором включении МК начинает работать с момента достижения температуры Т2. Такое впечатление, что МК запомнил свое последнее состояние и начинает с него. А при включении питания должно быть как бы заново, разумеется кроме настроек.
В память пишутся только пороги температур t-1 и t-2. Вы можете в этом убедиться, считав EEPROM контроллера. В адрес 0х00 пишется 0, если запись в память проводилась. По адресам 0х01 и 0х02 хранятся данные t-1, по адресам 0х03 и 0х04 хранятся данные t-2. Значения не прямые, в 16-тиричном формате со смещением для удобства обработки, но перевести их понятный вид нетрудно. Нужно содержимое младшего адреса перевести в десятичный формат, умножить на 256, прибавить к нему содержимое старшего адреса, также переведенного в десятичный формат, отнять 550 и разделить на 10. Например: по адресу 0х01 хранится 05, по адресу 0х02 хранится 45. После преобразования в десятичный формат получим: t-1 = (5*256 + 69 - 550)/10 = 79,9 град. Аналогично для t-2. Все. Поэтому мне непонятно, что запоминается еще. Может Вы не до конца сбрасываете питание. После отключения питания разрядите конденсаторы, или сделайте паузу для того, чтобы они разрядились сами. Если все-таки такой эффект имеет место, то считайте EEPROM и вышлите его мне. Я тогда уже сам посмотрю и поковыряю прошивку, хотя даже не представляю где можно так накосячить. Бывают иногда глюки компилятора. Или же буду проверять у себя на макете.
В память пишутся только пороги температур t-1 и t-2. Вы можете в этом убедиться, считав EEPROM контроллера. В адрес 0х00 пишется 0, если запись в память проводилась. По адресам 0х01 и 0х02 хранятся данные t-1, по адресам 0х03 и 0х04 хранятся данные t-2. Значения не прямые, в 16-тиричном формате со смещением для удобства обработки, но перевести их понятный вид нетрудно. Нужно содержимое младшего адреса перевести в десятичный формат, умножить на 256, прибавить к нему содержимое старшего адреса, также переведенного в десятичный формат, отнять 550 и разделить на 10. Например: по адресу 0х01 хранится 05, по адресу 0х02 хранится 45. После преобразования в десятичный формат получим: t-1 = (5*256 + 69 - 550)/10 = 79,9 град. Аналогично для t-2. Все.
В связи с возрастом и недостатком специального образования мало что понял.
Цитата:
Может Вы не до конца сбрасываете питание. После отключения питания разрядите конденсаторы, или сделайте паузу для того, чтобы они разрядились сами.
Припаял 1к на питание, подождал, то же самое. EEPROM высылаю.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения