Самогонный аппарат

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Самогонный аппарат

Сообщение Bagir » Вт июн 09, 2020 3:09 pm

Первые 4 поста будут редактироваться. Следите за изменениями.
Предлагаю код для автоматизации процесса работы самогонного аппарата. А так же обсудить в этой теме сам тех процесс и температуры на разных стадиях работы.
АппаратМини.jpg
АппаратМини.jpg (41.46 КБ) 3772 просмотра
Лабораторное оборудованиеПоказать
Аппарат.jpg
Аппарат.jpg (99.61 КБ) 3851 просмотр
Следует обратить внимание на установку двух термодатчиков в кубе и в верхней части колонны. А так же на высоту самой колонны, которая повлечет задержку определения момента и температуры закипания. В будущем планирую поставить третий накладной термодатчик на низ колонны.
В планах по оборудованию:Показать
  • Термодатчик на низ колонны для более точной фиксации момента начала процесса
  • Датчик давления в кубе для предотвращения захлябывания колонны
  • Микрофон на трубке отбора спирта. Так же поможет не превышать мощность
  • Сервопривод на кран холодильника
  • Сервопривод на кран дефлегматора
  • Электронный термодатчик на обратку дефлегматора
  • Управление мощностью плиты пока реализовать не могу
  • Было бы здорово установить электронный ареометр
В планах по написанию кода:Показать
  • Определение процента содержания спирта по температуре закипания куба (на тесте)
  • Лог с сообщениями в меню
  • Более раннее обнаружение момента начала процесса по доп термодатчику внизу колонны
  • Управление сервоприводом крана дефлегматора
  • Расчет объемов дробной перегонки
  • Расчет общего времени процесса
План работы:
Стадия 1. Предварительный разогрев куба. Плита на максимальной мощности. Контроль температуры куба. Ждем температуру до 80 градусов. Тут надо учесть, что чем больше концентрация спирта в кубе, тем раньше он закипит. Поэтому выбираем температуру ниже, чтобы успеть получить сообщение о переходе на стадию 2.

Стадия 2. Готовность к началу. Ускоряем чтение температуры колонны и куба. Включаем охлаждение холодильника. Готовимся к началу процесса. Убавляем мощность плиты. Переход к следующей стадии при начале прогрева колонны.

Стадия 3. Работа на себя. Включаем сильное охлаждение дефлегматора, конденсируя все пары во флегму. Легкокипящие фракции собираются вверху колонны. Переход к следующей стадии через 10 минут.

Стадия 4. Отбор голов. Немного уменьшаем охлаждение дефлегматора, позволяя легкокипящим фракциям проходить через него. Не даем колонне превышать температуру в 73 градуса, чтобы этиловый спирт не выходил из аппарата.
Дальнейшее переключение стадий делаем сами. Отбираем расчетное количество голов. Не буду пока вдаваться в подробности расчета, т.к. ничего из этого не реализовано на php. Для расчетов использую excel таблицу. Но в будущем планирую перенести всё сюда.

Стадия 5. Отбор тела. Стабилизируем температуру колонны дефлегматором. Собираем тело. Максимальная температура колонны рассчитывается от температуры куба. Опытным путем выяснено, что начальная t колонны должна быть 75,4, а по завершению 77,3. Эти константы есть в коде, и подбираются для конкретного аппарата и винокура более детально. По ходу процесса сбора тела, куб продолжает нагреваться. По мере этого будет расти и температура колонны. Примерная разница температуры куба в начале и конце процесса составляет 5 градусов. Разница в колонне будет 2 градуса. Учитывая температуру закипания куба, можем высчитать максимально допустимую температуру колонны в зависимости от текущей температуры куба. При отклонении температуры колонны даем сообщение. В коде сделана задержка на такие сообщения, чтобы они не шли слишком часто.

Стадия 6. Отбор хвостов. Увеличиваем мощность плиты. Уменьшаем охлаждение дефлегматора. Максимальную температуру колонны устанавливаем на 15 градусов меньше температуры куба, но не ниже 78 градусов.


Для реализации процесса, нам потребуется очень частый опрос датчиков аппарата. Например при отборе тела период датчика колонны будет всего 2 секунды. Таймеры в МД не задуманы для такого частого рекурсивного вызова кода. Если пропустить хотя бы одну итерацию, то весть процесс остановится. Можно конечно каждый раз создавать второй таймер с запозданием ещё на пару секунд, но это добавит ещё больше "лишних действий" в системе. Намного лучше для этого использовать свой цикл, тогда процесс будет работать очень стабильно.
Но если перегоны спирта не проходят каждый день, то гонять лишний цикл неделями в пустую не имеет смысла. Поэтому мы будет каждый раз в начале процесса запускать наш цикл, и в конце останавливать.
Последний раз редактировалось Bagir Ср июн 10, 2020 9:46 am, всего редактировалось 2 раза.
За это сообщение автора Bagir поблагодарили (всего 2):
Chainik (Вт июн 09, 2020 3:43 pm) • TrDA (Вт июн 09, 2020 7:22 pm)
Рейтинг: 2.33%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Код проекта

Сообщение Bagir » Вт июн 09, 2020 3:10 pm

1. Класс самогонного аппарата
Класс alcoholMashine во вложении. В нем объект аппарата bathAlcoMash. На имя завязан цикл и html код графика.

2. Раздел в меню управления
ЭлементыПоказать
меню1.png
меню1.png (7.98 КБ) 3707 просмотров
ПереключательПоказать
меню2.png
меню2.png (18.31 КБ) 3707 просмотров
меню3.png
меню3.png (18.92 КБ) 3707 просмотров
3. Файл цикла
Во вложении. Скопировать его в \scripts\ к остальным циклам. Цикл нам нужен только на время работы аппарата. При запуске системы все циклы стартуют автоматически. Для остановки можно добавить в метод ThisComputer.StartUp код sg('cycle_alcoControl','stop');

4. html код страницы
Живой график highchartsПоказать

Код: Выделить всё

<script type="text/javascript" src="/js/jquery-3.1.1.min.js"></script>
<script type="text/javascript" src="/js/highstock.js"></script>
<script type="text/javascript">

$(function () {
    var seriesOptions = [],
        last_id = [],
        serData = [],
        now = 0,
        chart,
        seriesCounter = 0,
        names = ['Колонна', 'Куб', 'Стадия'], 
        sensornames = ['bathAlcoMash.tempColumn',
 					   'bathAlcoMash.tempCube', 
                       'bathAlcoMash.tmaxColumn'];

    Highcharts.setOptions({
        lang: {
            months: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль', 
                     'Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],

            shortMonths: ['Янв','Фев','Мар','Апр','Май','Июн','Июл', 
                          'Авг','Сен','Окт','Ноя','Дек'],

            weekdays: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],

            rangeSelectorZoom: 'Маcштаб',
            rangeSelectorFrom: 'От',
            rangeSelectorTo: 'До',
            thousandsSep: ' '
        },
        global: {
            useUTC: false
        }
    });

    function createChart() {
        chart = new Highcharts.StockChart({
            chart: {
                renderTo: 'container',
                zoomType: 'x',
                events: {
                    load: function () {
                        setInterval(function () {
                            updateChart();
                        }, 1000);
                    }
                 }
            },
            rangeSelector: {
                buttons: [
                    { type: 'minute',  count: 5,  text: '5m'  },
                    { type: 'minute',  count: 15,  text: '15m'  },
                    { type: 'hour',  count: 1,  text: '1h'  },
                    { type: 'hour',  count: 4, text: '4h' },
                    { type: 'all', text: 'All' }],
                    selected: 0,
                    inputEnabled: false
            },
            title: { text : 'График с добавлением точек' },
            legend: {
                enabled : true,
                layout : 'horizontal',
                align : 'center',
                verticalAlign : 'top',
                borderWidth: 0,
                x : 0,
                y : 20
            },
            xAxis : {
                ordinal: false
                //minRange: 3600 * 1000 // one hour
            },
            yAxis: {
                title: { text : 'Температура (°C)' }
            },
            series: seriesOptions
        });
 
 
 
        now = new Date().getTime();
        now -= now % 1000;
        for (i = 0; i < names.length; i++){
            len = chart.series[i].processedYData.length - 1;
            last = chart.series[i].processedYData[len];
            chart.series[i].addPoint([now,last], true, true);
//            alert(now + ' ' + last);
        };
    };

    $.each(names, function (i, name) {
        $.getJSON('/objects/?script=jsonhs&name='+sensornames[i], function (data) {
            last_id[i] = data.last_id;
            seriesOptions[i] = {
                name: name,
                data: data.data,
                type: 'line',
                marker: {
                    enabled: false,
                    radius: 3
                },
                shadow: true,
                tooltip: {
                    valueDecimals: 2
                }
            };
            seriesCounter += 1;
            if (seriesCounter === names.length) {
                createChart();
            };
        });
    });

    function updateChart() {
         now = 0;
         $.each(names, function (i) {
            $.getJSON('/objects/?script=jsonhs&name=' + sensornames[i] + '&lastid=' + last_id[i], function (data_) {
                if (data_.data.length > 0){
                    last_id[i] = data_.last_id;
                        $.each(data_.data, function (idx, e) {
//                            chart.series[i].addPoint(e, true, true);
                            now = e[0];
                            serData[i] = e[1];
//                            alert('Date='+now+' value='+e[1]);
                        })
                } else {
                    len = chart.series[i].processedYData.length - 1;
                    serData[i] = chart.series[i].processedYData[len];
                }
                if (i == (names.length - 1)) {
                    updateChart_();
                }
            });
        });
    };

    function updateChart_() {
//        alert(now + ' ' + serData);
        if (now > 0){
            for (i = 0; i < serData.length; i++){
                chart.series[i].addPoint([now,serData[i]], true, true);
            }
        }
    }
});

</script>
<div id="container" style="height: 100%; min-width: 500px; margin: 0 auto"></div>
5. Скрипт подготовки json для графиков highcharts
jsonПоказать

Код: Выделить всё

/*
 mode может быть первым параметром, или подпараметром для линейных графиков
 mode можно передать в name, например в случае с suntimeflags 

 *** для построения графика ПЗА
 mode=fixedperiod
 name=thrm_kitchen.pzaCalculate

 *** для построения графика с данными истории свойства объекта комнаты
 name=thrm_bathhouse.airCurrentTemp
 tonow=1   опционально для включения в график текущего времени

 *** для выделения областей на графике
 name=thrm_bathhouse.status
 mode=plotBands
 
 *** точки восхода и заката на графике
 name=suntimeflags
*/

$name = $params['name'];
// Передать параметр. Нужно для удобства вызова из кода страницы с графиками. например в случаи с suntimeflags
$mode = isset($params['mode']) ? $params['mode'] : $mode=$name;
$color = isset($params['color']) ? $params['color'] : 0;
$last_id = isset($params['lastid']) ? (int)$params['lastid'] : 0;
// Проверка наличия параметров
if (!$name && !$mode) { say('Ошибка в параметрах скрипта jsonhs'); return; }

// переопределение цвета по номеру. На html странице из JavaScript удобно в цикле отправлять номер.
switch ($color) {
 case 0: $color = '#FCFFC5'; break;
 case 1: $color = '#F0F0C0'; break;
}

$data = []; // массив для данных

switch ($mode) {
 case 'suntimeflags' : // *** флаги восхода и заката солнца
     $data[] = ['x'=>gg('sunrise')*1000, 'title'=>'sunRise', 'text'=>'Up'];
     $data[] = ['x'=>gg('sunset')*1000, 'title'=>'sunSet', 'text'=>'Down'];
     break;
  
 case 'fixedperiod' : // *** данные для графика ПЗА +20...-30
     // Собрать массив
     for ($i = 20; $i >= -30; $i--) {
       $t = callMethod($name, array('t'=>$i));
       $data[] = [$i, $t];
     }  
     break;
  

 default:             // *** Данные из истории свойств для графиков и временных интервалов
     // Получаем данные из таблицы истории
     $pvalueid = getHistoryValueId($name);
     $sql = "SELECT ID, UNIX_TIMESTAMP(ADDED) as ADDED, VALUE FROM phistory WHERE VALUE_ID=$pvalueid";
     if ($last_id > 0) { $sql .= " AND ID>$last_id"; }
     $sql .= " ORDER BY ADDED,ID";
     $arr_s = SQLSelect($sql);

     switch ($mode) {
      case 'plotBands':  // *** временные интервалы ***

       foreach($arr_s as $row) {
         // Присвоить время начала и время конца
         if ($row['VALUE']) {
          $from = $row['ADDED']*1000;
         } else {
          if ($from) {$to = $row['ADDED']*1000;}
         }
 
         // Записать группу 
         if ($from && $to) {
          $data[] = ['color'=>$color, 'from'=>$from, 'to'=>$to];
          $from=0;
          $to=0;  
         }
       }
 
       // Добавить текущее время, если последний статус начался но не закончился
       if ($from && !$to) {
         $to = time()*1000;
         $data[] = ['color'=>$color, 'from'=>$from, 'to'=>$to];
       }  
       break;

      default: // *** режим данных для линейного графика ***
       // Собрать массив
       foreach ($arr_s as $row){
         $added = $row['ADDED'];
         $t = (float)($row['VALUE']);
         $data[] = [$added*1000, $t];
         $last_id = $row['ID'];
       }

       // Добавить текущее время с последним значением чтобы продлить график
       if ( isset($params['tonow']) ) { $data[] = [time()*1000, $t]; }
     } // switch mode

 
} //switch $name

/* Собрать структуру JSON */
header('Content-Type: application/json');
echo(json_encode([
  'last_id'=>$last_id,
  'data'=>$data
]));
По поводу живых графиков. Если вы используйте другие, то пункты 4 и 5 не нужны. Все данные хранятся в истории свойств объекта аппарата. Но для процесса нужны именно живые графики. Без них не будет так наглядно.
Сценарий json разработан нашими сторожилами. Я добавил туда тоже кое что. Точки на графике и выделение областей. Подробнее об этом расскажу в теме highcharts. Все доработки по улучшению очень приветствуются! Если у вам уже есть этот сценарий, посмотрите, может этот более функциональный. Можно сделать копию своего, или переименовать этот. Но тогда в html коде надо поправить имя в нескольких местах.
Вложения
alcoholMashine.txt
v1.0 beta
(11.32 КБ) 164 скачивания
cycle_alco.zip
v1.0 beta
(1.85 КБ) 152 скачивания
Последний раз редактировалось Bagir Ср июн 10, 2020 9:32 am, всего редактировалось 6 раз.
За это сообщение автора Bagir поблагодарил:
Chainik (Ср июн 10, 2020 10:46 am)
Рейтинг: 1.16%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Перегон

Сообщение Bagir » Вт июн 09, 2020 3:11 pm

В процессе работы строится живой график. На нем можно видеть t куба, колонны, и расчетную максимальную t колонны, которую не стоит превышать. Расчетная t отображает так же стадию процесса 1-6.
график1.png
график1.png (29.32 КБ) 3795 просмотров
Давайте разберемся, что к чему. Смотрим на линию Стадии. Первый горизонт в 40 градусов показывает первоначальный нагрев куба. Цифра 40 тут ничего не значит. На этой первой стадии, мы просто греем куб до 80 градусов. Крепкие растворы запрещено, да и бессмысленно перегонять, поэтому при 80 градусов у нас ничего не закипит. А мы помним, что температура закипания раствора зависит от процентного содержания спирта. Чем больше спирта - тем ниже t закипания.
Дойдя до 80 градусов будет переход на стадию 2. Стадия готовности. Тут мы ждем резкого скачка t колонны. При этом будет переход на стадию 3. Цифра в 50 градусов тоже пустая. Символизирует переход на следующую стадию.
Стадия 3 - работа на себя. Горизонт в 70 градусов выбран только чтобы удерживать всё содержимое в аппарате. На этой стадии наша задача максимально охлаждать дефлегматор, чтобы все пары конденсировались в нем, и флегмой стекали обратно вниз, проводя при этом тепломассообмен внутри колонны. Новые теплые пары двигаются вверх, и выхватывают из флегмы легкокипящие фракции, а этиловый спирт во флегме падает обратно. Тем самым, мы скапливаем в колонне головы. Длительность этой фазы в коде выставлена 10 минут. После чего будет переход к отбору голов.
Смотрим график, это горизонт в 73 градуса. Цифра подбирается опытным путем. Задача в том, чтобы при этой температуре и мощности отбор голов был медленный. Идеально было бы 2-5 капель в секунду. Дальше мы уже будем переключать стадии сами, т.к. нашему алгоритму простым способом не узнать, сколько там накапало. Но электронные весы конечно можно и подключить.
Дальше отбор тела. Тут уже линия не в горизонте. Дело в том, что температура колонны будет по любому расти вместе с температурой куба. Но темпы роста разные. В коде можно будет посмотреть, каким образом я её вычисляю.
Ну и наконец отбор хвостов. Больше мощности и меньше охлаждение дефлегматора. Это спровоцирует рост температуры колонны. С вычислением не заморачивался, просто -15 градусов от температуры куба. Линия получается тоже растущая.

Что тут ещё стоит отметить. Видно как вначале быстро растет температура куба. Когда куб закипит, рост температуры замедлится. Жидкость трудно нагреть больше температуры кипения, особенно когда дефлегматор подливает обратно охлажденную флегму. И чем меньше спирта осталось в кубе - тем больше его температура кипения. Тут мы можем дать предупреждение, когда стоит полностью завершить отбор.
Ну и на конец о фактической температуре колонны. Видно, что я не смог удержать её в пределах желаемой на стадии "работы на себя" и стадии отбора голов. Причин было несколько. Не слитая холодная вода. Нагрелась в трубах и первое время текла не достаточно холодная. Моя индукционная плита, которая не может работать на меньшей мощности. Да и не очень то и хотелось. Это был тестовый перегон неочищенного сырца.

Ещё стоит сказать, что в процессе есть так же подголовья, и предхвостие. Это когда уже вроде всё хорошо, но портить продукт не хочется. Всё это добро отправляется в следующий перегон к новому очищенному спирту сырцу. Я не стал выделять эти стадии. Просто при сборе тела, отбираю расчетные объемы в отдельную тару.

А вот так пока что выглядит управление в меню
меню.png
меню.png (6.35 КБ) 3774 просмотра
В будущем планирую добавить лог, контроль сервоприводов, и расчет по времени и оставшемуся содержанию спирта в кубе.

График второго перегона. На этот раз удалось удержать колонну в пределах максимальной температуры. Но с моей мощностью плиты это получается только при очень холодной воде для охлаждения. Придется мудрить со стабилизатором напряжения. Нужно понизить примерно до 210 вольт. Все стадии работы описал выше, тут по сути и добавить нечего. Разве что испытал формулу в коде для определения % спирта в кубе. Сошлось с точностью 0,5% с ареометром. Теперь нужно записывать замеры при разном проценте спирта, и может быть немного подкорректировать коэффициенты в формуле. Сейчас расчет делается один раз при переходе на стадию 3. Думаю добавить на каждое десятое получение температуры куба, и вывести в меню. С 3 по 6 стадию.
график2.png
график2.png (39.96 КБ) 3676 просмотров
И вот этот же график в увеличенном масштабе на стадии отбора тела. Не нравится "пила" у максимальной линии. Рассчитывается от температуры куба. Округлений в формулах нет. Тут уже нужен анализ математика. Кому интересно, смотрите код. Там этот расчет выделен отдельным блоком.
график21.png
график21.png (67.21 КБ) 3676 просмотров
Последний раз редактировалось Bagir Сб июн 13, 2020 12:21 am, всего редактировалось 5 раз.
За это сообщение автора Bagir поблагодарил:
Chainik (Ср июн 10, 2020 10:46 am)
Рейтинг: 1.16%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Технология производства

Сообщение Bagir » Вт июн 09, 2020 3:13 pm

Моя полная технология с очисткой + один из любимых рецептов

Ставим сахарную брагу. Гидромодуль ¼. Дрожжи спиртовые. Температура 28-30 градусов. Для контроля к бочке прилеплен датчик. Строится график + оповещения при отклонении. От качества браги зависит добрая половина качества продукта.

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

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

Очистка браги бентонитом:
Для осветления браги идеально подходит бентонит – натуральная белая глина, которая входит в состав кошачьих наполнителей (туалетов). Главное, чтобы в наполнителе не было ароматических добавок, портящих запах. Проверенные марки: «Pi-Pi-Bent», «WC Closet Cat» и «Котяра». Возможно, есть и другие.
Осветление нужно начинать, когда брожение полностью закончилось, иначе метод не сработает.

Технология:
1. Перемолоть бентонит (1 столовая ложка на 10 литров браги) в кофемолке.
2. Добавить горячую воду (0,5 литра на 1 столовую ложку белой глины), затем перемешать миксером или ложкой до образования однородной массы.
3. Тонкой струей влить раствор в брагу, перемешать и оставить на 24 часа при комнатной температуре.
4. Слить брагу с осадка (желательно через тоненькую трубочку).
5. Перегнать.

Осветление браги чаем каркаде:
Каркаде – это чайный напиток из сушеных цветков суданской розы. Благодаря повышенной кислотности он осветляет брагу не хуже бентонита.

Технология:
1. Цветки чая каркаде (70 грамм на 10 литров браги) залить 1 литром воды и довести до кипения, постоянно перемешивания. При другом количестве браги изменить пропорции.
2. Выключить огонь, накрыть емкость крышкой и охладить до 20-30°C.
3. Влить каркаде в брагу, перемешать и оставить на сутки (желательно при температуре 25-30°C).
4. Слить очищенную брагу с осадка и перегнать любым доступным способом.

После осветления брага приобретет красный оттенок. Это нормально и на вкус самогона не влияет.

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

Технология:
1. Желатин (2 грамма на 10 литров браги) залить холодной водой (200 мл на 1 грамм желатина).
2. Настоять в течение суток при комнатной температуре, каждые 8 часов меняя воду.
3. В разбухший желатин добавить теплую воду в пропорции, указанной в 1-м пункте.
4. Полученную массу вылить в брагу.
5. Через 2-3 дня слить брагу с осадка и перегнать.
Для сахарной браги я использую бентонит. 1 столовая ложка на 10 литров браги. По моим наблюдениям это очень важный момент.

Первая дистилляция браги на спирт сырец. Многие первый раз не делают дробную перегонку. Я снимаю 30% голов от общего их количества. Расчет делаю по сахару: 5кг сахара * 70мл * 30% = 105мл. Сейчас у меня появился способ определять % спирта в браге по температуре её закипания. В колонну засыпаю медную насадку. Медь очень эффективна при первом перегоне браги.

Сортировка до 11%. У спирта очень трудно отобрать примеси. Поэтому чем ниже % спирта перед очисткой, тем лучше. Главное, чтобы потом всё это влезло в куб.

Проводим щелочную очисткуПоказать
Сивушные масла растворяются в других маслах, а этиловый спирт малой концентрации, не растворяется. Альдегиды и свободные кислоты тоже не растворяются в маслах, поэтому перед очисткой самогона требуется обработать его щёлочью. Она нейтрализует кислоты, разложит сложные эфиры, полимеризует альдегиды и сделает их растворимыми в масле. Изменение кислотно-щелочного равновесия с введением щелочного раствора не влияет на растворимость этилового спирта и сивушных масел. В качестве щёлочи обычно используют пищевую соду.
При использовании щёлочи очищаемую жидкость нельзя подогревать, чтобы избежать омыления масла.
После того как щёлочь отстоится, следует слить осадок и перелить раствор в другую ёмкость. Щелочная очистка сделает самогон мягче и уберёт посторонние запахи.
Сода 150г + Соль 300г на 23л спиртового раствора. Очистка маслом будет более эффективна после щелочной.

Очистка масломПоказать
Смешайте самогон с чистой водой в пропорции 1:3, крепость должна получиться не более 20% (чем она ниже, тем лучше очистится от сивушных масел)
Добавьте в раствор масла из расчета 20 мл на литр Потрясите одну минуту, чтобы полученная жидкость хорошо перемешалась. Оставьте раствор на 3 минуты, чтобы он настоялся. Снова взболтайте ёмкость. Повторите процедуру несколько раз. Поставьте в тёмное место. Температура воздуха не должна быть высокой, чем прохладнее, тем лучше. Для этого подойдёт погреб или холодильник. Когда на поверхности раствора появится плёнка (через сутки), слейте очищенный самогон, стараясь не повредить плёнку, в которой собрались все вредные химические элементы. Сделать это можно с помощью трубочки со шлангом
Масло рафинированное 20 грамм на 1 литр. Масло хорошо впитывает сивуху, отнимая её у слабого раствора.


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


Перед второй дистилляцией можно разнообразить напиток, добавив прямо в куб
На 10 литров разбавленного сырца
40 грамм протертого корня имбиря
15 гвоздик
5 зерен кориандра


Дробная дистилляция сырца. Отбор 70% голов (вторая половина) расчет по спирту.
3л СС * 90% = 2,7л АС
2,7л АС * 15% * 70% = 283мл


Сортировка 41%. Вода бутилированная или родниковая. Перед сортировкой обе жидкости охлаждаем в холодильнике. Выдерживаем в темном прохладном месте трое суток.


Очистка через угольную колонну. Кокосовый активированный уголь. После очистки сразу разливаем по бутылкам. Можно дать постоять ещё пару дней.


Постараюсь со временем в спойлерах добавить полное описание каждой стадии процесса.
Последний раз редактировалось Bagir Сб июн 13, 2020 11:03 am, всего редактировалось 6 раз.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Самогонный аппарат

Сообщение Chainik » Вт июн 09, 2020 3:54 pm

Bagir, не торопитесь, в нашем деле "качество важнее количества" )))
Чувствую, надо подбирать площадку под строительство завода ))

По делу могу сказать вот что. Помню, у вас были МегаД 328. Новые 2561 поддерживают кучу I2C-датчиков. Так что для планируемого к установке оборудования кое-что очень может пригодиться.
Bagir писал(а):
Вт июн 09, 2020 3:09 pm
В планах по оборудованию:
Датчик давления в кубе для предотвращения захлябывания колонны
https://ab-log.ru/smart-house/ethernet/ ... ure-sensor
Bagir писал(а):
Вт июн 09, 2020 3:09 pm
Микрофон на трубке отбора спирта. Так же поможет не превышать мощность
Возможно, простой микрофон можно будет заменить датчиком шума.
https://ab-log.ru/forum/viewtopic.php?f ... 100#p38891
Bagir писал(а):
Вт июн 09, 2020 3:09 pm
Управление мощностью плиты пока реализовать не могу
Если мощность плиты управляется поворотом механической ручки, может быть к ней тоже сервопривод прикрутить?
А если требуется измерять очень высокую температуру (когда диапазон измерений превышает верхнюю границу для наших любимых DS18B20), можно использовать I2C-датчик MLX90614 (цифровой бесконтактный ИК-датчик температуры -70+380C).
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Самогонный аппарат

Сообщение Bagir » Вт июн 09, 2020 5:47 pm

Chainik писал(а):
Вт июн 09, 2020 3:54 pm
Bagir, не торопитесь, в нашем деле "качество важнее количества" )))
Тоже в этом полностью уверен. Поэтому решил оформлять постепенно. Добавил резервы на первые три поста. Код допилим по ходу дела, но то что есть выложу сегодня, правда ближе к ночи. Испытание цикла вместо таймеров в боевом режиме навело на некоторые мысли по улучшению кода.
Chainik писал(а):
Вт июн 09, 2020 3:54 pm
Помню, у вас были МегаД 328. Новые 2561 поддерживают кучу I2C-датчиков. Так что для планируемого к установке оборудования кое-что очень может пригодиться.
Так и есть. У меня много 238, но есть уже и парочка 2561. Не устоял перед соблазном поддержки множества датчиков. Одна из них в бане, как раз рядом с аппаратом.
Chainik писал(а):
Вт июн 09, 2020 3:54 pm
Датчик давления в кубе для предотвращения захлябывания колонны
Именно то что надо. Только у этого предел измерений 0-10 Bar. В аппарате актуальная цифра будет в пределах 0,2 Bar. Я делал на пробу манометр из трубки с водой. Работает, но уж больно заморочно, да и нам полюбому нужен цифровой. У меня были случаи, когда колонна захлябывалась от большого количества насадки в ней. По сути очень нужный контроль.
Chainik писал(а):
Вт июн 09, 2020 3:54 pm
Возможно, простой микрофон можно будет заменить датчиком шума.
Отлично подойдет. В такие моменты я просто подношу силиконовый шланг к уху. Если прикрепить на него датчик шума, и изолировать от внешних шумов, будет самое то.
Chainik писал(а):
Вт июн 09, 2020 3:54 pm
мощность плиты
У меня ручка, подающая импульсы. Сделать можно, но не будет четкой гарантии без обратной связи. Пока отложил этот момент. Но в будущем вернусь. К плите у меня много претензий. Например диапазон её регулировки от 1 до 15. 15 это 3кВт. Но минимальный уровень работы без такта 5. А этой мощности многовато для отбора голов. Приходится включать на этот момент электрокотел, чтобы немного сбить напряжение в сети. Извращение, но хорошо помогает. Планирую установить стабилизатор напряжения, и немного сбить его настройку хотя бы на 215 вольт.

Вечером выложу отчет с тестовым перегоном в третьем посте. К ночи будет код во втором посте.
После даже начальной автоматизации процесса, работать с аппаратом стало намного удобнее. Продукт стал на порядок выше качеством. Раньше, с термометрами, я мог допускать значительные отклонения температур и прихватывать лишнего. Сейчас могу себе позволить даже отойти от аппарата. График работы и на телефоне. А критичные сообщения приходят на браслет. Но об этом чуть позже.
По поводу очистки продукта, и всего полного процесса, тоже напишу пост. Это конечно всё есть в Интернете, и каждый пишет свою технологию, но у меня точно есть чем поделиться :)
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Самогонный аппарат

Сообщение xor » Вт июн 09, 2020 9:49 pm

отбор голов как думаете контролировать? думал про весы. сейчас больше склоняюсь к контактному датчику в приемную емкость
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Самогонный аппарат

Сообщение xor » Вт июн 09, 2020 10:02 pm

Фига себе у вас плитка! 40 минут греет бак. у меня 2 кВт плитка делает это гораздо неспешнее + сенсорное управление. и аппарат по-проще - см-1 с предохладителем-укреплятором. двух датчиков температуры мне вполне хватает для контроля. тоже нужно управлять водой и нагревом.
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Самогонный аппарат

Сообщение Bagir » Ср июн 10, 2020 1:01 am

xor писал(а):
Вт июн 09, 2020 9:49 pm
отбор голов как думаете контролировать? думал про весы. сейчас больше склоняюсь к контактному датчику в приемную емкость
Мне тоже хотелось автоматизировать и эту стадию с последующим авто переключением. Но автоматизация замены приемной емкости дело не простое. А без неё от идеи остается только половина. Пока что отложил этот момент, но когда перенесу в php из excel формулы расчета дробной перегонки, то вернусь к задаче снова.
xor писал(а):
Вт июн 09, 2020 10:02 pm
Фига себе у вас плитка! 40 минут греет бак. у меня 2 кВт плитка делает это гораздо неспешнее + сенсорное управление. и аппарат по-проще - см-1 с предохладителем-укреплятором. двух датчиков температуры мне вполне хватает для контроля. тоже нужно управлять водой и нагревом.
Да, скорость нагрева меня радует. А вот минимальная мощность не очень. Трудно снимать головы. Буду что то изобретать. Если аппарат не очень высокий, то двух датчиков вполне достаточно. У меня просто пары спирта в течении двух минут пробираются через колонну. Приходится делать поправку на температуру закипания куба, а она участвует в формулах. На код не особо повлияет. Сейчас в условии смотрю на t колонны, а буду смотреть на t нового термодатчика. Больше он ни для чего не нужен. К тому же раньше получу сообщение о начале процесса. А если добавлю управление мощностью, то смогу заранее её понизить.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Самогонный аппарат

Сообщение Bagir » Ср июн 10, 2020 10:15 am

xor писал(а):
Вт июн 09, 2020 9:49 pm
отбор голов как думаете контролировать? думал про весы. сейчас больше склоняюсь к контактному датчику в приемную емкость
Для расчета фракций я пользуюсь калькулятором Леопольда в excel, немного отредактировав его для себя. В будущем хотел сделать php версию и добавить в класс самогонного аппарата. Так что скорее всего весы. Приемная тара у меня разная. Мерная колба для голов и хвостов и трехлитровая банка для тела. В коде я мог бы учитывать вес тары, чтобы не обнулять весы. Так что если есть варианты оборудования, буду рад попробовать. По сути мне нужен только датчик веса. А приемную тару на разных стадиях я мог бы вычитать в коде.
Калькулятор ЛеопольдаПоказать
Калькулятор.png
Калькулятор.png (107.01 КБ) 3701 просмотр
Выложил код в начале темы. Сегодня будет ещё испытание. Хочу доделать расчет % спирта в кубе по температуре закипания. В коде это есть, но надо проверить. Скорее всего выведу эту цифру в меню.
Ещё в меню добавлю лог. Думаю сделать так: Добавить свойство с историей на 1 день. Записывать в этой свойство сообщения. А в меню вывести через график charts. Я видел, что там можно сделать что то наподобие чата сообщений. Поищу код на форуме, где то точно было.
За это сообщение автора Bagir поблагодарил:
TrDA (Ср июн 10, 2020 8:15 pm)
Рейтинг: 1.16%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить