Розрахунок ABV за температурою пари
ABV (Alcohol By Volume) — об'ємна частка спирту, у відсотках. У готовому продукті її міряють ареометром. Але під час перегонки міцність треба знати зараз, у колоні, кожні кілька секунд — щоб автоматика встигала реагувати. Ареометр туди не поставиш: він працює в рідині кімнатної температури, а не в потоці гарячої пари.
oCBot розв'язує це інакше: міцність обчислюється з температури пари й тиску. Жодного окремого «датчика спирту» не потрібно — потрібні давачі, які й так стоять на апараті.
Фізичний принцип#
Суміш спирту й води кипить не при одній температурі, а в діапазоні: чиста вода — 100 °C, чистий етанол — 78,4 °C (за нормального тиску). Проміжні суміші киплять десь між.
Ключове: пара над киплячою сумішшю завжди міцніша за рідину. І ця залежність жорстка — за фіксованого тиску кожній температурі кипіння відповідає рівно один склад рідини й рівно один склад пари. Це і є VLE (Vapor–Liquid Equilibrium, рівновага пара–рідина).
Отже, ланцюжок обчислення такий:
flowchart LR
T["Температура пари<br/>(верх колони)"] --> C{{"Модель<br/>рівноваги"}}
P["Тиск у колоні<br/>(надлишковий)"] --> S["Абсолютний тиск"]
B["Атмосферний тиск<br/>(барометр)"] --> S
S --> C
C --> A["ABV пари, %"]
Тиск обов'язковий, а не «уточнення». Тиск зсуває всю температурну шкалу: за +10 кПа надлишку вода кипить уже не при 100 °C, а приблизно при 102,7 °C. Якщо цього не врахувати, ті самі 92 °C будуть прочитані як зовсім інша міцність. Тому контролер бере абсолютний тиск: надлишковий у колоні + атмосферний з барометра.
Два алгоритми на вибір#
Прошивка вміє рахувати двома способами. Обидва живуть в одному модулі (rb_abv_algorithms) і викликаються з однаковими аргументами — температура пари, надлишковий тиск колони, атмосферний тиск.
| Legacy (спрощений) | VLE (розумний) | |
|---|---|---|
| Значення параметра «Алгоритм» | 0 |
1 (типово) |
| Модель | лінійна інтерполяція | справжня рівновага пара–рідина |
| Обчислень на такт | десятки | сотні (два вкладені пошуки) |
| Точність біля 40–70 % ABV | груба | висока |
| Коли доречний | історична сумісність, звірка зі старими журналами | усе нове |
Legacy — лінійна інтерполяція#
Найпростіша модель, яку десятиліттями використовують аматорські калькулятори:
- За рівнянням Антуана рахуються температури кипіння чистої води й чистого етанолу за поточного тиску.
- Виміряна температура пари відкладається на відрізку між ними — лінійно.
- Результат множиться на емпіричний коефіцієнт 95,6 (поправка «на реальний апарат»), а тоді обрізається до діапазону 0…100 %.
Модель не знає нічого про неідеальність суміші спирт–вода — а суміш дуже неідеальна (недарма існує азеотроп 95,6 %). Тому Legacy систематично «пливе» в середині діапазону. Лишається в прошивці лише для сумісності.
VLE — рівновага пара–рідина#
Тут рахується справжня термодинаміка бінарної суміші етанол–вода:
- Тиск насиченої пари кожного компонента за виміряної температури — рівняння Антуана.
- Коефіцієнти активності γ₁, γ₂ — модель Вільсона (двопараметрична, з молярними об'ємами й енергетичними константами для пари етанол–вода). Саме вона описує неідеальність, через яку суміш і поводиться «дивно».
- Загальний тиск суміші:
P = x₁·γ₁·p₁ˢᵃᵗ + x₂·γ₂·p₂ˢᵃᵗ. - Пошук складу рідини: методом половинного ділення (40 ітерацій) добирається такий склад рідини, який за виміряної температури дає рівно виміряний тиск. Це і є рідина, що зараз кипить у цій точці колони.
- Склад пари над нею:
y₁ = x₁·γ₁·p₁ˢᵃᵗ / P. - Мольна частка переводиться в об'ємні відсотки через густини й молярні маси компонентів.
Обчислення повністю детерміноване: тих самих трьох чисел на вході завжди достатньо, жодного стану чи історії не зберігається.
Зворотна задача: яка температура відповідає потрібній міцності#
Той самий модуль вміє рахувати й у зворотний бік: цільова ABV + тиск → цільова температура пари. Функція шукає температуру половинним діленням у діапазоні між точками кипіння чистих компонентів (із запасом ±2 °C).
Навіщо це потрібно: керувати процесом за температурою зручніше, ніж за міцністю. Уставка «тримати 40 % ABV» один раз перераховується в «тримати верх колони на 88,3 °C», і далі працює звичайний температурний контур — швидкий, гладкий і зрозумілий оператору за показами того самого давача. Як це застосовано в сценаріях — у статті ABV у сценаріях.
Що саме показує це число#
Розрахунок дає міцність пари в тій точці, де стоїть давач температури — а не міцність продукту в приймальній ємності. Це різні величини. Пара, що дійде до холодильника й сконденсується, дасть приблизно цю міцність; те, що вже накопичилось у банці, — усереднення за весь час відбору.
Межі застосовності#
- Модель бінарна — знає лише етанол і воду. Голови, хвости, сивушні олії, розчинені гази в моделі відсутні. На тілі погону це дає похибку в межах десятих відсотка, на головах — більше.
- Давач має бути в парі, а не в конденсаті. Якщо термометр залитий флегмою або притиснутий до холодної стінки, він міряє не те, і розрахунок буде впевнено помилковим — модель не має способу це виявити.
- Інерція давача важить. Товста гільза згладжує й запізнює покази; регулювання за таким сигналом стає повільнішим. Для колон краще тонкий давач у потоці пари.
- Точність тиску напряму стає точністю ABV. Похибка барометра чи датчика колони в кілька кПа зсуває результат помітно сильніше, ніж здається.
- Потрібна рівновага. Під час бурхливих перехідних режимів (щойно додали потужність, щойно змінили відбір) пара й рідина не встигли прийти в рівновагу — число стрибає. Це не збій розрахунку, а стан апарата.
Далі#
- Скрипт «Розрахунок ABV» — як увімкнути це на своєму апараті: давачі, параметри, покази.
- ABV у сценаріях — як за цим числом керувати подачею браги й потужністю.