Температура и давление в кофемашине

CTPAX
Offline
Зарегистрирован: 30.03.2017

Здравствуйте товарищи. Мой уровень программирования начинающий.

Очень неспеша пишу программу автоматизации для кофемашины. Застрял на решении следующего вопроса:

На бойлере кофемашины установлен датчик температуры, с помошью которого я планирую поддерживать заданное давление в бойлере. Есть таблица зависимости температуры водяного пара и давления www.fptl.ru/spravo4nik/davlenie-vodyanogo-para.html

Задача- я задаю нужное давление P, контроллер расчитывает температуру T (в соответствии с таблицей) и поддерживает ее.

зависимость не линейная, мап не подходит. 

График выглядит так 

Подскажите как это можно реализовать?

Диапазон интересен от 70 до 115 градусов.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

ну, и какое у тебя давление будет от 70 до 100 градусов - ответ:равное атмосферному.

реализовать - никак без ломания рецепта приготовления кофе.

например: наберёшь ты нужное давление и можно остывать до комнатной температуры.

вопрос: к чему это всё?

CTPAX
Offline
Зарегистрирован: 30.03.2017

от 70 до 100 градусов манометр покажет от 0,3 до 1 бар давления, этот диапазон нужен для вывода информации на дисплей. выше 100 уже рабочая температура для бойлера, по сути я буду регулировать от 105 до 110 градусов, но задавать надо давление и видеть на дисплее его. вопрос как расчитать температуру имея давление (согласно таблице).

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

CTPAX пишет:

от 70 до 100 градусов манометр покажет от 0,3 до 1 бар давления

ты проверял?

я сомневаюсь - у тебя там вода герметично без воздушной подушки?

тогда это не кофемашина, а бомба получится - одно неверное движение и взрыв

Logik
Offline
Зарегистрирован: 05.08.2014

Чето слабое давление, обычно заявляют типа 6-15 бар.

CTPAX
Offline
Зарегистрирован: 30.03.2017

Logik пишет:

Чето слабое давление, обычно заявляют типа 6-15 бар.

Кофе готовят при давлении 9 бар. 

Реч идет о паровом бойлере. там давление не превышает 1,5 бара.

Я бы хотел услышать пути решения вопроса не флуд о кофе.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

CTPAX пишет:

Я бы хотел услышать пути решения вопроса не флуд о кофе.

я тебе ответил - ты себя убьёшь

CTPAX
Offline
Зарегистрирован: 30.03.2017

Надеюсь благоразумные люди заглядывают в эту ветку.

Прошу помощи в математическом, программном решении задачи. 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

CTPAX пишет:

Надеюсь благоразумные люди заглядывают в эту ветку.

Прошу помощи в математическом, программном решении задачи. 

да! все благие и разумные - сюда.

Logik
Offline
Зарегистрирован: 05.08.2014

Клапауций 112 пишет:

CTPAX пишет:

Надеюсь благоразумные люди заглядывают в эту ветку.

Прошу помощи в математическом, программном решении задачи. 

да! все благие и разумные - сюда.

Помянем будущего новоприставленого?

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Logik пишет:

Клапауций 112 пишет:

CTPAX пишет:

Надеюсь благоразумные люди заглядывают в эту ветку.

Прошу помощи в математическом, программном решении задачи. 

да! все благие и разумные - сюда.

Помянем будущего новоприставленого?

Иншаллах.

Jeka_M
Jeka_M аватар
Онлайн
Зарегистрирован: 06.07.2014

CTPAX пишет:

Реч идет о паровом бойлере

Хм, из него предварительно откачивается воздух? Т.к. давление 0,3 бара это ниже атмосферного давления (1,013 бар)

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Jeka_M пишет:

Хм, из него предварительно откачивается воздух? Т.к. давление 0,3 бара это ниже атмосферного давления (1,013 бар)

видимо, его датчик давления считает давление минус атмосферное.

Jeka_M
Jeka_M аватар
Онлайн
Зарегистрирован: 06.07.2014

Точно, я затупил.

SLKH
Offline
Зарегистрирован: 17.08.2015

CTPAX пишет:

Здравствуйте товарищи. Мой уровень программирования начинающий.

Очень неспеша пишу программу автоматизации для кофемашины. Застрял на решении следующего вопроса:

На бойлере кофемашины установлен датчик температуры, с помошью которого я планирую поддерживать заданное давление в бойлере. Есть таблица зависимости температуры водяного пара и давления www.fptl.ru/spravo4nik/davlenie-vodyanogo-para.html

Задача- я задаю нужное давление P, контроллер расчитывает температуру T (в соответствии с таблицей) и поддерживает ее.

зависимость не линейная, мап не подходит. 

График выглядит так 

 

Подскажите как это можно реализовать?

Диапазон интересен от 70 до 115 градусов.

ээ... а если очень неспешно, за чашечкой кофе, рассчитать нужную температуру T (в соответствии с таблицей), задать её контроллеру - и пусть поддерживает?

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

SLKH пишет:

ээ... а если очень неспешно, за чашечкой кофе, рассчитать нужную температуру T (в соответствии с таблицей), задать её контроллеру - и пусть поддерживает?

это неспортивно - нужна формула

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

SLKH пишет:

ээ... а если очень неспешно, за чашечкой кофе, рассчитать нужную температуру T (в соответствии с таблицей), задать её контроллеру - и пусть поддерживает?

Не наш метод!

evgta
Offline
Зарегистрирован: 02.09.2016

а что уже напрямую измерять давление не интересно?

https://ru.aliexpress.com/item/foo/32622062762.html?spm=2114.10010208.1000023.10.wAMBXf

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

evgta пишет:

а что уже напрямую измерять давление не интересно?

я запретил.

SLKH
Offline
Зарегистрирован: 17.08.2015

Клапауций 112 пишет:

SLKH пишет:

ээ... а если очень неспешно, за чашечкой кофе, рассчитать нужную температуру T (в соответствии с таблицей), задать её контроллеру - и пусть поддерживает?

это неспортивно - нужна формула

тогда всё просто:  

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

SLKH пишет:

тогда всё просто:  

расходимся - этот читер всё испортил.

Logik
Offline
Зарегистрирован: 05.08.2014

Клапауций 112 пишет:

SLKH пишет:

тогда всё просто:  

расходимся - этот читер всё испортил.

Какое там! С такой математикой все намного увлекательней. Правильность решения уравнения оцениваем по мощности взрыва бойлера.

CTPAX
Offline
Зарегистрирован: 30.03.2017

Тут походу одна школота тусуется, поду на С++ форум, там бородатые дядьки в свитерах быстро раскатают все по полкам, а вы продолжайте взрывать бойлеры ))

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

CTPAX пишет:

Тут походу одна школота тусуется, поду на С++ форум, там бородатые дядьки в свитерах быстро раскатают все по полкам, а вы продолжайте взрывать бойлеры ))

Вот только бородатым дядькам учить школотника математике  и физике будет ну очень напряжно. Ведь вопрос не в Си.

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

Подобно  вашей кофеварке работают и автоклавы стерилизационные. Там температура  до 137С  обычно. Задается температура стерилизации(например 121С или 134С) При 121 градусе водяной пар имеет давление ~1,2 Бара, при 134С-~ 2,1 Бара(приблизительно, точнее ,по-мойму, 2,04).Точно так-же и вам нужно задать температуру и давление пара  будет соответствовать тому , что написано в таблице. Можно наоборот- задавать давление - и при достижении заданного давления  температура должна соответствовать таблице.Конечно при нагревании до 102 гр необходимо стравить воздух из камеры . Иначе температура и давление не будут соответствовать.

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

 

CTPAX пишет:

На бойлере кофемашины установлен датчик температуры, с помошью которого я планирую поддерживать заданное давление в бойлере. Есть таблица зависимости температуры водяного пара и давления www.fptl.ru/spravo4nik/davlenie-vodyanogo-para.html

Задача- я задаю нужное давление P, контроллер расчитывает температуру T (в соответствии с таблицей) и поддерживает ее.

У вас есть датчик температуры . Так и задавайте температуру  и контролируйте ее , а давление  дополнительно визуально манометром смотрим  или ,если есть датчик ,- контроллером.При изменении температуры на 0,1 гр - давление изменится незначительно . При изменении давления на 0,1 бара - температура может измениться на пару -тройку градусов..

CTPAX
Offline
Зарегистрирован: 30.03.2017

Видимо задача не легко решается, буду тогда опираться чисто на показания температуры. Раз уж посчитать программным путем имея таблицу зависимости не просто.

Logik
Offline
Зарегистрирован: 05.08.2014

чего ж непростого. просто линейно-кусочная апроксимация к примеру. Если уж формулу раскрутить страшно.

CTPAX
Offline
Зарегистрирован: 30.03.2017

я как бы потому сюда и обратился что для меня это пока темный лес, про кусочную почитаю, спасибо за наводку

Logik
Offline
Зарегистрирован: 05.08.2014

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

CTPAX
Offline
Зарегистрирован: 30.03.2017

Не учи отца… в программировании я не силен, но физику процессов и кофемашину прекрассно знаю. Мне нужны программные советы а не мамины переживания на пустом месте. К слову у машины есть пресостат для ограничения давления в бойлере и антивпкуумный клапан для спуска воздуха.

Logik
Offline
Зарегистрирован: 05.08.2014

Кто ж тя знает, отец или школяр, а пятно кипятка на карму никому не хочется.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

CTPAX пишет:
у машины есть пресостат для ограничения давления в бойлере и антивпкуумный клапан для спуска воздуха.
Там ещё есть неонка и этот ... как его ... думатель с анализатором.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

CTPAX пишет:
Не учи отца… в программировании я не силен, но физику процессов и кофемашину прекрассно знаю.

Мда странно. Ведь почему вода кипит при 100 градусах. Так наверно потому, что давление атмосферное. А вот повысьте давление в закрытой емкости вода будет кипеть при большем давлении.  Почему емкость разрывается. Не потому что вода закипает, а скорее потому что закипеть не может из-за большого давления. Вот это давление и разрывает стенки. Так что поставьте предохранительный клапан на нужное давление и будет вам нужная температура. Вот только огонь надо убавить, когда начнет свистеть.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Я  все ждал, что кто-то по делу ответит. Не судьба... Даже Евгений решил ответить реминисценцией к "Сказке о тройке".

----------------------

1. сама функция зависимости давления от температуры - имеет показательную форму. Но на это насрать в маленьком отрезке.

2. берем что-нибудь вогнутое, как на графике. Первый вогнутый многочлен: P = a*t^2 +b*t + c. Квдратный трехчлен, уж простите! ;)

3. Три неизвестных, значит нужно взять три уравнения. Это границы (70 и 120, если я правильно помню?) и что-то посередине. На свой вкус. Я бы взял точку не ровно по сердине, а ближе к концу, 100 или 105.

4. решаете систему из трех линейных уравнений - получаете  полином 2-ого порядка (он же - вы не поверите! - "квадратный трехчлен"), интерполирующий вашу функцию.

5. можете проверить его на расхождения с таблицей, если они вас не устраивают, то берите 4 точки и третью степень и т.д.

6. Как опытный математик вам скажу, что, даже если вам не понравятся расхождения, я посоветую остановиться на второй степени, Вам точнее - точно нахер не нужно.

Я даже заикаться не стану про сплайн-интерполяцию. Там гладкость второго порядка обеспечивается, Вы ведь совсем не понимаете, что такое гладкость, и зачем она, если это не про женский зад? Ну и слава Б..гу! "Во многой мудрости - много печали".

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

короче в экселе есть возможность построить график по точкам. лучше со сглаживанием. а потом расчитать функцию из графика. эксель выдаст формулу, вставишь в код. гугли. зная формулу из температуры легко посчитаешь давление. 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

wdrakula пишет:
P = a*t^2 +b*t + c. 

Ладно дожую эту хрень .

выберете 3 точки (P1,t1) (P2,t2) (P3,t3) Это уже известные величины . Осталось найти a,b,c

Система из трех линейных уравнений.

P1 = a*t1^2 +b*t1 + c.

P2 = a*t2^2 +b*t2 + c.

P3 = a*t3^2 +b*t3 + c.  Решаем и получаем. Но это все упрощено. Можно подогнать к другой кривой. Можно решать методом наименьших квадратов. Так что если долго ковырять, то мозговую геморойку можно наковырять. Но как я сказал ранее: ТС ищет не решение проблему, нерешеную проблему, что бы забить на нее.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

CTPAX, Вы бы написали, в чем именно у Вас проблемы.

Что касается зависимости давления насыщающих паров от температуры, то она имеет аналитическое выражение. Если мне не изменяет память - экспонента. У Вас какие-то проблемы с расчетом экспоненты?

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

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Мда.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

А зачем функция то? 70...120 градусов, игого 50 градусов. Там какое-то супер разрешение? Тык датчик вроде максимум что может - 0.1 градуса (также и по барам если пляшем от давления). So nah трехчлены-полиномы, только голову ломать. Запихал в массив и всё, EEPROM дешёвая...

CTPAX
Offline
Зарегистрирован: 30.03.2017

qwone пишет:

Мда странно. Ведь почему вода кипит при 100 градусах. Так наверно потому, что давление атмосферное.

Ок, КЭП

wdrakula, jeka_tm, andriano
 
Идеальным было бы найти формулу которая строит похожую кривую на необходимом мне диапазоне. 
С экселем делал, собственно график в первом посте от туда и есть. тренды построенные по всему диапазоне не совпадают с кривой, но зато формула корректрная выводится, которая соответствует этому тренду. Gотом сгененировал тренды на узком диапазоне (80-120С') тренды совпали с графиком, но формула не соответствует этим трендам, то бишь по ней если считать в график не попадаешь.
Сам файл Excel
 
Voodoo Doll
 
Массивом делал, не нравится разрешение. Либо массив побольше делать тогда придется, если ничего не выйдет с формулой.
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

CTPAX пишет:

Идеальным было бы найти формулу которая строит похожую кривую на необходимом мне диапазоне. 
И в чем проблема?
Первое, что попалось в Гугле по запросу "давление насыщенного пара формула":
Цитата:
Массивом делал, не нравится разрешение. Либо массив побольше делать тогда придется, если ничего не выйдет с формулой.

Как Вы делали с массивом, не знаю, но, судя по Вашим впечатлениям, - неправильно.

Массив должен быть составной частью сеточной функции. 

В Вашем случае нужно составить массив значений границ интервалов температуры. Для каждого из значений массива вычисляется соответствующее давление и находится его логарифм. Люгарифмы записываются в отдельный массив, размер которого равен размеру массива температур. Для вычисления давления:

1. находим интервал в массиве температур, внутри которого лежит нужная нам температура*,

2. линейной интерполяцией по значениям массива логарифма давлений в найденном интервале находим нужное нам значение,

3. экспоненцируем для получения значения давления.

* Если выбрана равномерная сетка, номер нужного интервала просто вычисляем. Если сетка неравномерная, и количество интервалов не более 20, ищем нужный обычным перебором. Если интервалов больше 20, ищем бинарным поиском.

CTPAX
Offline
Зарегистрирован: 30.03.2017

andriano пишет:

В Вашем случае нужно составить массив значений границ интервалов температуры. Для каждого из значений массива вычисляется соответствующее давление и находится его логарифм. Люгарифмы записываются в отдельный массив, размер которого равен размеру массива температур. Для вычисления давления:

1. находим интервал в массиве температур, внутри которого лежит нужная нам температура*,

2. линейной интерполяцией по значениям массива логарифма давлений в найденном интервале находим нужное нам значение,

3. экспоненцируем для получения значения давления.

Принцип я понимаю, но для реализации этой схемы не достаточно опыта.

С формулами думаю будет проще, накопал такую https://planetcalc.ru/2161/

Кто-нибудь может ее разгадать в виде кода?

Logik
Offline
Зарегистрирован: 05.08.2014

Вобще нужно бы сразу определится с требуемой точностью значения давления, затем посмотреть на погрешности измерения температуры. Таки подумать о давлении в бойлере при интервале 70-100С,  а потом уже рассуждать с каким шагом массив нужен и достаточна ли квадратичная апроксимация.

CTPAX
Offline
Зарегистрирован: 30.03.2017

Давление до сотых, рабочее будет 1,25 бара к примеру

решил делать через массив, а промежуточные значения высчитывать как в этой таблице эксель делается http://www.planetaexcel.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=237163&action=download

SLKH
Offline
Зарегистрирован: 17.08.2015

Продолжаю не понимать задачу.

СТРАХ, поясните (без программирования), пож. про кофе-машину.

Вам нужно одно конкретное давление поддерживать? или на разных этапах разное? или для разных кофе (кофий? кофиёв?)  ?

Номинал задаете потенциометром/переключателем,  или ещё как?

 

 

/2 Штирлиц, привет! 

Была у меня любовь с автоклавами, сильная, но рне взаимная. Так там заданные температуры (108/112/120, рыба) держались по датчикам давления, оказалось, что точнее штатных pt100. 

CTPAX
Offline
Зарегистрирован: 30.03.2017

SLKH

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

так вот это давление иногда необходимо регулировать, снимая панели и залазия во внутрь машины (подкрутить пружину пресостата).

а давление необходимо высчитывать и выводить на дисплей, все бариста регулируют давление в бойлере, соотношение с температурой им не известно.

Кофемашина без панелей

SLKH
Offline
Зарегистрирован: 17.08.2015

CTPAX пишет:

Давление до сотых, рабочее будет 1,25 бара к примеру

решил делать через массив, а промежуточные значения высчитывать как в этой таблице эксель делается http://www.planetaexcel.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=237163&action=download

ну что там высчитывать? 

вар1: предписать контроллеру держать температуру 106 цельсиевых градусов (что соответствует 1,25б). всё.

 

если на разных этапах нужны разные величины:

вар2: предписывать держать разные температуры. про давление вообще ничего ему не говорить, при отсутствии соотв. датчиков оно ему нафиг не нужно.

Logik
Offline
Зарегистрирован: 05.08.2014

Ну да. Учитывая что при 105С будет 1,21Бар то задавать давление до сотых - значить держать температуру до 0,2С что не так просто, но решаемо. 

В итоге - массив температур на 30 элеменотов от 1,00Бар до 1,29Бар для определения температур до десятой даже. Пусть 1,00Бар -100,0С, 1,01Бар 100,2С 1,02Бар -100,5С

const byte T_p[]={0, 2, 5,...}

 и типа T=100.0+0.1*T_p[(int)((P-1)*100)]

А еще логичней сразу держать давление и температуру в форме с фиксированой точкой.

До 1,69Бар что соответствует 115С - надо всего 70 байт масива. Элементарно!

SLKH
Offline
Зарегистрирован: 17.08.2015

CTPAX пишет:

SLKH

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

так вот это давление иногда необходимо регулировать, снимая панели и залазия во внутрь машины (подкрутить пружину пресостата).

а давление необходимо высчитывать и выводить на дисплей, все бариста регулируют давление в бойлере, соотношение с температурой им не известно.

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

 

вариант прямой:

объявляем/заполняем байтовый массив: 21 элемент; значения - округленные до целых килопаскали из таблицы;  диапазон 0-120 град.

если тепература (целые град. цельсия) больше 99, выводим на дисплей элемент массива с номером (t-100).

с точкой в первом знакоместе видим результат в барах.

всё.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Да уж, я не кофеман, но заварить кофе в турке, в мелкой галечке такой кайф, не то, что от бездушной машины