Обсуждаем цифровые устройства...
Ответить

Разработка мультиварки

Ср апр 19, 2017 08:35:06

Мультиварка Филипс после 3х лет начала глючить - то не догревает, то перегревает, вправить мозги попогает только вкл/выкл. А тут еще появилась вторая мультиварка которая с рождения не умеет поддерживать температуру - все горит и выкипает, с сервисом заморачиваться не стал, решил поставить свои мозги и заодно реализовать все хотелки которых нет в покупных устройствах.
Хотелки:
1. Для каждой программы должна быть регулировка времени И температуры, возможно еще подстройка параметров ПИД.
2. Для каждой программы возможность установки сенсорного режима (выключение происходит после выкипания жидкости).
3. Запоминание во флеш-памяти ВСЕХ настроек.
4. Более точное поддержание температуры при быстром разогреве.
5. Человеческий интерфейс (например регулировка времени в две стороны, а не по кругу)
6. Логарифмическая шкала времени, а не блин по 5 минут до 4-х часов скакать.
7. Продолжение программы при откючении и включении питания.
8. Еще что-то.


По железу уже все зделал - поменял родной контроллер на Мегу8, индикатор 4х разрядный LED + 11 светодиодов + 5 кнопок управления оталось родное.
На входе данные от двух термисторов (в крышке и дне), на выходе - управление реле включения ТЕНа и зуммера.

Интерфейс приблизительно готов - выбор программ, изменение параметров.

Осталось реализовать алгоритм управления ТЕНом.

При первом включении обраружилась очень большая инерционность термодатчика. После отключения ТЕНа температура продолжает расти примерно 30-50 сек. После включения ТЕНа температура еще продолжает падать около 20 секунд.

Сначала ходел прикрутить готовый ПИД алгоритм от паялиной станции с ШИМом в районе 30 сек, но потом поразмыслил и понял, что с ним полюбому будет перегрев сразу после этапа разогрева т.к. интегральная составляющая за время разогрева уйдет в максимум и начнет снижаться только после перегрева. Но перегрев не допустим т.к. например молоко может сбежать.
Алгоритм должен работать примерно так: начальный разогрев на 100% мощности, после достижения целевой температуры (заблаговременно с учетом инерции нагрева) резкий переход на малую мощность - это примерно 5-20% (записит от термоизоляции и открыта ли крышка) для поддержания целевой температуры.
На этапе поддержания целевой температуры классический ПИД работает нормально, но вот как реализовать переход от этапа разогрева к этапу поддержания температуры не понятно, да еще с учетом разного объема нагреваемой массы и ее начальной температуры.
Вложения
IMG_20170416_151242~01.jpg
(119.12 KiB) Скачиваний: 1855

Re: Разработка мультиварки

Ср апр 19, 2017 09:29:15

dandan писал(а):На этапе поддержания целевой температуры классический ПИД работает нормально, но вот как реализовать переход от этапа разогрева к этапу поддержания температуры не понятно, да еще с учетом разного объема нагреваемой массы и ее начальной температуры.
Можно измерять скорость роста температуры, тем самым предсказать время выхода на заданную температуру и соответственно вовремя превентивно выключить (переключить) ТЭН.

Re: Разработка мультиварки

Ср апр 19, 2017 09:48:11

Z_h_e писал(а):Можно измерять скорость роста температуры, тем самым предсказать время выхода на заданную температуру и соответственно вовремя превентивно выключить (переключить) ТЭН.

Это да. Но тогда весь процесс разогрева надо разбивать на 2 этапа: начальный нагрев и поддержание температуры.
Алгоритм первого этапа - греть на 100% и перейти на этап 2 по достижении целевой температуры с упреждением в зависимости от скорости нагрева.
Алгоритм этапа 2 - ПИ с не понятным исходным значением интегральной ссотавляющей. ведь мы не знаем, и не по-чем определить мощность которая нужна для поддержания температуры.
тут не очень универсально получается, если например в разогретую массу (этам 2) налить холодной воды, то нагрев затем возникнет опять проблема перегрева.

Можно поробовать как описано сдесь http://www.owen.ru/37081875 в пункте "Зона накопления интеграла"
Если рассогласование Е долго сохраняет знак, величина интегральной составляющей становится очень большой (эффект интегрального насыщения), что может привести к перерегулированию.
Для устранения влияния этого эффекта задают зону накопления интеграла, в пределах которой регулятор вычисляет интегральную составляющую. За пределами этой зоны, где интегральная сумма слишком велика, для формирования управляющего сигнала используется только пропорциональная составляющая. В зависимости от режима работы регулятора (нагреватель или холодильник), эта зона расположена выше или ниже уставки.

Re: Разработка мультиварки

Ср апр 19, 2017 10:49:10

dandan писал(а):За пределами этой зоны, где интегральная сумма слишком велика, для формирования управляющего сигнала используется только пропорциональная составляющая.
Я делал так. Когда управляющее воздействие 100 или более процентов не суммировал положительную ошибку, когда 0 или менее, то не интегрировалась отрицательная ошибка. Так меньше перерегулирование, но сколько то все равно есть. Если дифференциальную составляющую увеличить, то можно перерегулирование сделать минимальным, но несколько снизится скорость выхода на уставку.

Re: Разработка мультиварки

Ср апр 19, 2017 13:14:25

Может сделать типа комбинированый алгоритм. При опредеоенных значениях температуры, например меньше или больше 10% от уставки работает релейный метод, греем или выключаем на 100%. А в пределах этих 10% работает ПИД алгоритм.

Вообще странно, я в интернете готового алгоритма не нашел, хотя систем с контролем температуры и большой инерционностью же много.
Читал как люди свои мультиварки исследовали так там почти у всех наблюдается перегрев после первичного разогрева, ну и ПИДом в большинстве случаев не пахнет.
Хотя моя Филипс работает так: в процессе кипения поддержимается мощность примерно 1/30, если открыть крышку то мощность растет плавно до 5/30, если закрыть крышку то падает очень медленно (минут за 5) жо 1/30. период ШИМа 30 сек.
Вот тему нашел, жаль, что заглохла http://forum.ixbt.com/topic.cgi?id=47:11824-17

Re: Разработка мультиварки

Ср апр 19, 2017 14:04:05

Калибровка сенсоров и ПИД регулятора

Re: Разработка мультиварки

Ср апр 19, 2017 14:29:41

nbn писал(а):Калибровка сенсоров и ПИД регулятора


Ок. Там как раз есть отключение накопления интегральной составляющей при 0 и 100% мощности. Еще наложено на нее ограничение <-10*Ki и >10*Ki - вот это не понятно, как она может быть отрицательная?

Ну и конечный результат не очень - все равно есть перегрев, а это еще при одном количестве воды, налей больше и перегрев усилися.

Re: Разработка мультиварки

Ср апр 19, 2017 14:36:12

Конечно интегральная составляющая может быть отрицательной (если Вы конечно используете и отрицательные числа). Представте, Ваша уставка 80 градусов, а налили в котелок 100 градусов. При положительном Кi интергральная часть пойдет в минус. ТЭН морозить не умеет, т.е. управляющее воздействие отрицательным не будет. Котелок медленно будет остывать, а интегральная часть все больше будет уходить в минус. Остыв до 80 градусов и ниже, его вроде бы надо нагревать, то интегральаня часть так глубоко уйдет в минус, что не скоро выберется из него и ТЭН включится, например, только при 60 градусах. Именно поэтому на крайних значениях не интегрируют в ту или иную сторону.

Re: Разработка мультиварки

Ср апр 19, 2017 14:58:46

Z_h_e писал(а):Конечно интегральная составляющая может быть отрицательной (если Вы конечно используете и отрицательные числа). Представте, Ваша уставка 80 градусов, а налили в котелок 100 градусов. При положительном Кi интергральная часть пойдет в минус. ТЭН морозить не умеет, т.е. управляющее воздействие отрицательным не будет. Котелок медленно будет остывать, а интегральная часть все больше будет уходить в минус. Остыв до 80 градусов и ниже, его вроде бы надо нагревать, то интегральаня часть так глубоко уйдет в минус, что не скоро выберется из него и ТЭН включится, например, только при 60 градусах. Именно поэтому на крайних значениях не интегрируют в ту или иную сторону.

Это я понимаю, но у него есть ограничение: при 0 мощности интегральная не накапливается.
И потом, почему ограничение -10, а не 0 ?

Я все таки планирую попробовать держать интегральную в нуле (сбрасывать) при температуре скажем <10% и >5% от уставки. Интересно, что получится...

Еще мне не понятно как учитывать темпратуру датчика который в крышке, возможно он для подстраховки?

Re: Разработка мультиварки

Ср апр 19, 2017 15:14:25

Тут другой принцип. Я останавливал интегрирование, если управляющее воздействие выходило за некие рамки. Вы же пишете про <-10*Ki и >10*Ki. Т.е сама сумма ошибок не может быть меньше -10Ki и больше 10Ki (не забывайте что Кi - это коэффициент). Какие преимущества и недостатки в этих реализациях я не знаю. Могу посоветовать - пробуйте, тут практика наверное лучше теории.

Добавлено after 4 minutes 23 seconds:
Возможно у Вас все нормально работает и так. Просто неудачные коэффициенты ПИД.

Re: Разработка мультиварки

Чт апр 20, 2017 21:56:13

Поразмыслил на счет дифференциальной составляющей и придумал, что формула должна быть такой:
К*(Т2-Т1)/|Т0-Т1|
где
Т0-целевая температура
Т1-текущая температура
Т2-прошлая температура
по этой формуле должна учитывать скорость нагрева и заблаговременно, еще до достижения целевой температуры снижаться мощность.

Добавлено after 1 hour 12 minutes 12 seconds:
В классическом варианте:
"Дифференциальная составляющая вносит свой вклад в мощность и представляет из себя производную температуры, взятую также с определенным коэффициентом (в программе для контроллера необходимо брать разницу между текущим значением невязки и предыдущим). Температура растет и приближается к нужному значению, а следовательно невязка в предыдущий момент больше текущего значения невязки, а производная отрицательная. Таким образом, дифференциальная составляющая начинает постепенно снижать мощность до того, как температура достигла необходимого значения. С этим вроде разобрались, вспоминаем про вторую проблему регулятора "
С ростом температуры производная температуры практически не будет меняться, и будет более менее стабильной и отрицательной. И к приближению к целевой температуре не будет снижать мощность. Диф составляющая будет уходить в минус если производная растет, т.е. рост температуры увеличивается. Поэтому утверждение "дифференциальная составляющая начинает постепенно снижать мощность до того, как температура достигла необходимого значения" - не правда.
Может невязки надо не вычитать, а делить?

И еще "необходимо брать разницу между текущим значением невязки и предыдущим" - так это же тоже самое, что разница температур на предыдущем шаге и текущем.

Добавлено after 7 hours 26 minutes 51 second:
Испытал рабочий проект.
5 литров, нижний тен 800 ватт.
Коэфициенты такие:
Интервал шима и расчетов 30 сек.
Кп=5, Ки=0.2, Кд=3.
Пробовал греть 0.5л воды до разных температур. Вобщем неплохо, при подходе к целевой динамика сильно замедляется, последние 5 градусов доходят за 5-10 минут, возможно это медленно, но перегрева нет, стабилизируется с точностью 1 градус.
При открытии крышки темп. падает на 5 градусов, затем нагоняет минут 5.
Что интересно, при 95 градусах мощность 8%, а при 100 и еле-еле кипении мощность уже 18%, т.е. в 2 раза больше.
Теперь думаю, коэф пид делать для каждой программы свои? Кнопок маловато, чтобы потом все это на ходу регулировать.

Re: Разработка мультиварки

Пт апр 28, 2017 14:43:59

Почти все получилось. ПИД работает не плохо. Интегральный не суммирует при краевых значениях.
При варке риса и выкипании воды мощность резко падает до нуля и держится так минуты 3, по этому фактору сделел сенсорное отключение прораммы для варки круп.

Коэф. ПИД примерно такие: Кп=5, Ки=0.5, Кд=6. Интервал шима 30 сек

Re: Разработка мультиварки

Пт май 05, 2017 08:43:11

А такое понятие как несимметричный ПИД регулятор существует?
Наблюдая за работой обычного ПИД-регулятора в мультиварке я вижу, что при перегреве реакция на снижение мощности должна быть сильнее, т.к. перегрев не допустим (может вспенится молоко например), а вот при недогрее температура должна увеличиваться плавно.
Вот и получается, что при перегреве, П и И должены быть больше, но про такой принцип нигде не нашел описания.

Re: Разработка мультиварки

Ср май 10, 2017 00:31:33

Правильно настроенный регулятор никогда не даст перерегулирования. Тем более, на таком статическом объекте, как "кастрюля с кипятильником". Настраивайте коэффициенты.
Ответить