СЕНСОРНЫЕ ПРОГРАММЫ. Часть 1.

… в начале славного пути.

Как мы все знаем, сенсорных программ для мультиварок пока не существует. Существует сенсорная программа «РИС» для рисоварок, которую более 20 лет придумали ушлые японцы, чтобы обидеть русского человека. Китайцы и корейцы бережно скопировали и сохранили эту программу, после чего российский коммерсант, не разобравшись, что к чему, написал на кнопке «РИС» слово «КАША», обозвал прибор мультиваркой и продает это своим соотечественникам с пожеланиями долгой и счастливой жизни. Бог ему судья.

Что такое сенсорная программа? В чем отличие сенсорной программы от автоматической? Что можно и что нельзя готовить на сенсорных программах? Это вопросы — интересующие многих, и мы считаем своим долгом разъяснить эту тему, перед тем как перейдем к инженерной зауми. Так вот, оказалось, что «Сенсорное» и «Автоматическое» — синонимы, то есть, если мы говорим «Сенсорная программа», то должны подразумевать «Автоматическая программа» и наоборот. Технический термин «Автомат» — это любая машина, принимающая решение на основании данных, полученных от сенсоров, то есть, работающая без оперативного управления человеком, по программе, которая меняется произвольно в зависимости от реакции сенсоров (датчиков) на изменяющиеся условия. Основным признаком сенсорной программы является невозможность установки времени выполнения — программа сама определяет время окончания своей работы, что естественно. В быту можно встретить не так уж много программ-автоматов — это модные сейчас «роботы-пылесосы», системы фокусировки фото и видео камер, некоторые стиральные машины. В просторечном русском языке слово «автомат» очень часто употребляется некорректно — автоматами называют множество устройств, которые не имеют никакого отношение к значению этого термина. Слово «автоматически» часто употребляется как синоним к повторяющемуся, бездумному, чередующимуся, заученному, сомо-собой-разумеющемуся, что не верно по сути. Но это уже вопрос к филологам. Также, вероятно, требуется разъяснить термин «FUZZY logic», который тоже прочно вошел в наш быт. Fuzzy Logic (Нечеткая Логика) — всего лишь математический алгоритм обработки данных, поступающих от сенсоров, и является неотъемлемой частью любой сенсорной программы. Если в приборе есть сенсорная программа, значит, там уже есть алгоритм Нечеткой Логики. Просто рекламисты и маркетологи от большого ума и недостатка фантазии решили почему-то вынести это словосочетание на коробки и в рекламные буклеты.

Тем не менее, как мы выяснили ранее, сенсорных программ, кроме программы «РИС», нет, но очень хочется. Мы хоть и наполовину азиаты, но разнообразие каш и гарниров у нас гораздо шире. Мы с удовольствием уминаем и перловку, и гречку, и овсянку, и пшенку, да еще хотим выбрать на воде или на молоке, да еще добавить изюму, яблочка или тыквы… и мы тоже хотели бы иметь для этого сенсорные программы. А наши скрепы — Йогурт и Творог? Создавать такие программы, как вы уже наверное поняли, придется с нуля и почти вслепую — скопировать не у кого, а ноосфера молчит.

Самая важная и ответственная часть разработки сенсорной программы — калибровка сенсоров и ПИД регулятора. Выглядит это так (далее прямая речь нашего инженера, орфография и артикуляция сохранены):

Для ПИД регулятора была написана функция (финальный код):

003

Основой служила формула:

002

Никаких оптимизаций и упрощений не проводилось. Предоставлено решение «в лоб». Единственное, в ходе тестирования было решено наложить ограничение на накопленную невязку равную 10Ki.
Функция вызывалась раз в полсекунды. В качестве данных она получает уставку и текущую температуру. Выдает процент мощности, который должен быть в данный момент.
Следует заметить, ввиду несовершенства примененной цепи синхронизации с сетью, а также конечным временем включения симисторов, существуют «мертвые зоны» в диапазоне управления. Это около 4% снизу и около 2% сверху. Т.е. на управляющие воздействия в 4%,3%,2%,1%,0% ТЭН выдает одно и тоже значение  около 15Вт. ТЭН не отключается полностью, и это — существенный недостаток при хорошей теплоизоляции мультиварочной чаши. Так же и сверху: 98%, 99%, 100% всегда одно и тоже воздействие около 780Вт. Всего этого неудобства планируется избежать, применив число-импульсное (вместо текущего фазового) управление мощностью в последующих вариантах.
Было решено тестирование проводить на 1л воды. Управляющий термодатчик был установлен в крышке мультиварки.
В ходе тестирования дополнительно фиксировались температура воды и потребляемая устройством мощность сторонними приборами.
Первым включением ненастроенного регулятора (коэффициенты не фиксировались), был получен следующий график. Уставкой была выбрана температура 90С:

001

Несмотря на поспешность эксперимента, графики дают полезную информацию:
Ни температура крышки, ни температура внутренней поверхности чаши не равна температуре воды в чаше.
Наш термодатчик на базе NTC-резистора имеет некую температурную инерцию по сравнению с К-термопарой логгера Fluke. Видимо сыграло различие масс датчиков. Также имеются небольшие разногласия в их показаниях.
График температуры крышки имеет определенный «пик», соответствующий образованию конденсата на крышке и, как следствие, изменению его теплоемкостных характеристик. Полезный эффект для автоматического (сенсорного) определения момента кипения.
Ненастроенный регулятор «пошел в разнос»: на графике видны колебания, увеличивающие свою амплитуду.
Первой «пристрелкой» были коэфф-ты Kp=20 Ki=0.002. Здесь и впоследствии уставка равна 80С. Результат получился следующий:
Image 2

Наблюдается большое перерегулирование, а в нашем случае, перегрев воды в начале. Также видны колебания. Понятно, что настройку двух параметров одновременно вести не стоит. Было решено настраивать пропорциональный коэффициент.
Ввиду программной ошибки наблюдалось отсутствие регулирования здесь:
004

Эта ошибка была исправлена.
В следующем эксперименте Кп=10, остальные коэфф-ты равны нулю:

Image 3

Опять большое перерегулирование, но колебаний нет и точность поддержания температуры достаточно высока. Температура воды в этом эксперименте не фиксировалась. Поясню образовавшуюся ступеньку на графике:
005

В это время произошло зависание скрипта, который забирал данные с регулятора. Поэтому небольшая часть данных потеряна. Также были приняты меры по устранению последующих зависаний скрипта.
В целях борьбы с перерегулированием было решено уменьшить Кп до 2. Результат:

Image 5

Перерегулирования нет, но и нагрев затянулся. Как и положено пропорциональному регулятору – наличие статической ошибки, которая с уменьшением Кп только увеличилась. Статическая ошибка около 5С. Теория рекомендует вводить интегральную составляющую в регулятор, что мы и сделаем в следующем эксперименте.
В этой попытке коэфф-ты были следующие Kp=2 Ki=0.0001 Kd=0:

Image 6

Появилось небольшое перерегулирование и статическая ошибка не успела скомпенсироваться за время эксперимента, хотя и характер изменения температуры верный. Очевидно, необходимо увеличивать величину коэфф-та интегральной составляющей.
Коэфф-ты следующего эксперимента Kp=2 Ki=0.001 Kd=0:
Image 7

Наличествует перерегулирование и колебания, но точность высока. Статическая ошибка скомпенсирована!
Пояснить нехарактерный вид графика не могу. Вероятнее всего конденсат попал на датчик. По крайней мере, так было, когда я проверял его, желая найти причину.
В следующем эксперименте в программный код было добавлено ограничение на интегральную составляющую. Сделано этого для снижения перерегулирования. Также был добавлен дифференциальный коэфф-т по той же причине.
Эксперимент с коэфф-тами Kp=2 Ki=0.001 Kd = -10:
Image 8

Видим, что перерегулирование осталось на прежнем уровне, но качество стабилизации улучшилось. Точность около 0.5С. Виден «шум» потребляемой мощности. Это эффект от введения Kd.
После консультации с поваром было решено остановить такие «общие» эксперименты и подгонять коэффициенты под каждый рецепт индивидуально.
Поваром было замечено, что для приготовления йогурта перегрев недопустим. Так как регулятор с интегральной составляющей всегда работает с перерегулированием ( хотя и малым ), вероятно для режима «йогурт» придется отказаться от интегральной составляющей, а ограничиться только пропорциональной с соответствующей коррекцией уставки (на величину статической ошибки) либо очень точно подобрать все коэффициенты.

____________________________________________

Как вы понимаете, уважаемые читатели, это самое начало создание прибора, который будет иметь право называться «МУЛЬТИВАРКОЙ». И будет иметь право носить на себе кнопку «Йогурт»… Йогурт — это очень не просто, ибо как говорил еще Конфуций: «Творожная масса — это творожный импульс, деленный на творожную скорость».

____________________________________________

Данный пост явлется логическим продолжением серии постов о создании Идеальной панели управления Идеальной мультиваркой. Предыдущие посты про это тут, тут и здесь. Или просто выбрать все записи по тэгу «Клуб Разработчика»