27 МОСКОВСКАЯ ВСТРЕЧА
Форум самогонщиков Сайт Барахолка Магазин 27 МОСКОВСКАЯ ВСТРЕЧА

Автоматика Самовар

Форум самогонщиков Вопросы по электр(он)ике
1 ... 48 49 50 51 52 53 54 ... 130 51
dranek Кандидат наук Минск 326 257
Отв.1000  12 Авг. 23, 08:28
logvinov, я бы попробовал 0.5-1 мФ неполярный и 50-500 мФ электролит прямо на клемник разводки датчиков.
Провода в экранах?
Не видно на фото, под esp32 колодки поставил? проще менять было бы. А вдруг это её глюки?
Ну и как я уже писал ещё одна мера это перевод датчиков на 5В. Тоже можно всё в районе клемника сделать.
А вот ещё. Планирую у себя попробовать, хоть вроде всё и заработало. Жду детали из китая.

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

P.S. есть еще вариант перегрева, с открытой крышкой тоже отваливаются? Пирометром поводить можно, посмотреть где как что греется.
logvinov Магистр Москва 259 45
Отв.1001  12 Авг. 23, 10:23
Провода в экранах?dranek, 12 Авг. 23, 08:28
Нет датчики 2м Китай без экранов, без оплетки.
Не видно на фото, под esp32 колодки поставилdranek, 12 Авг. 23, 08:28
да поставил на гребёнки? От соединениях на гребёнок возможно помехи? Плотное соединения.
P.S. есть еще вариант перегрева, с открытой крышкой тоже отваливаются?dranek, 12 Авг. 23, 08:28
Не нагреется, и потребления тока всего 0.03 Ампера. Мне кажется что один какой то датчик глючит и за этого сбой сразу всех.. Померил я питание на сигнальном проводе относительно земли, так там 3.3в но скачками то 3.0-3.3-3.2 поддяжка по питанию 4.7Ком.возможно остальные пины на плате тоже нужно к земле поддятнуть, которые не задействованы, хотя читал что они программного подтянуты.
dranek Кандидат наук Минск 326 257
Отв.1002  12 Авг. 23, 10:34, через 11 мин
один какой то датчик глючит и за этого сбой сразу всех..logvinov, 12 Авг. 23, 10:23
Очень даже может быть.
От соединениях на гребёнок возможно помехи?logvinov, 12 Авг. 23, 10:23
Вряд ли.
Померил я питание на сигнальном проводе относительно земли, так там 3.3в но скачками то 3.0-3.3-3.2logvinov, 12 Авг. 23, 10:23
Датчики сигнальный провод на землю соединяют импульсно. Принцип их работы.
Мои 2-х метровые датчики оба глючили пока оплётку не одел.

P.S. Оплётка не должна касаться колонны, соединять с массой со стороны разъёма, поверх намотать изолирующий слой чего нибудь. Это чтоб во первых не создавать излишних контуров токов, во вторых если на колонне вдруг появится потенциал не передать его на массу Самовара.
P.S.S. И я бы на всякий ещё оплётку надел внутри корпуса Самовара на сигнальные провода датчиков, они там хоть и короткие, но рядом находится драйвер шаговика, который херачит высокотоковыми импульсами 12 В в сторону двигателя.

Добавлено через 2дн. 3ч. 26мин.:

Заканчиваю перегонку в режиме "дисцилляция". После первоначального нагрева Самовар начинает выполнение программы, но не отключает разгонный ТЭН. Проверил дважды.
Это так и задумано?
Мне кажется неправильным. Теряется смысл разгона. Прошивка актуальная.

И еще, не смотря на все мои старания после навески датчиков на аппарат Самовар при инициализации их опять все перестаёт определять, только несколько, хотя с запомненными адресами работает нормально. Если датчики убрать от аппарата находит все. Вот такой шайтан. Другие ставить не пробовал.

Посмотрел обучающее видео про нбк, захотелось попробовать. Читал в теме в одном из анонсов прошивки, что можно управлять через lua скрипты, но примеров не нашёл. Кто нибудь это пробовал с Самоваром? Можете скриптами поделиться? Чтоб велосипед не изобретать. Планирую в октябре запустить, когда из китая все недостающие железки придут.

Добавлено через 4мин.:

Заметил одну особенность. При слабом сигнале wi-fi Самовар хуже определяет датчики температуры при инициализации.
Kuban Кандидат наук Краснодар 476 356
Отв.1003  14 Авг. 23, 14:43
Заканчиваю перегонку в режиме "дисцилляция". После первоначального нагрева Самовар начинает выполнение программы, но не отключает разгонный ТЭН. Проверил дважды.
Это так и задумано?dranek, 12 Авг. 23, 10:34
Самовар может управлять дополнительным разгонным ТЭНом на режимах "Ректификация" и "Пиво"
logvinov Магистр Москва 259 45
Отв.1004  14 Авг. 23, 15:03, через 21 мин
Если датчики убрать от аппарата находит все. Вот такой шайтан. Другие ставить не пробовал.dranek, 12 Авг. 23, 10:34
Я даже на ардуине собрал чтоб проверить датчики, всё работают и Id определяются, как только ставлю на самовар определяет пару раз и всё после id датчиков нет, резистор менял, и поключадся к пину самовара, и мозги менял и питание давал от стабилизатора 5в , всё перепробывал не нашёл выход,остались только разъемы, сегодня с них сразу припояю к esp. WiFi рядом, связь изумительная. Причём по одному, два датчика определяет, как только больше всё теряет все датчики.
lkosoj Куратор Видное 495 513
Отв.1005  14 Авг. 23, 15:05, через 2 мин
После первоначального нагрева Самовар начинает выполнение программы, но не отключает разгонный ТЭН. Проверил дважды.
Это так и задумано?dranek, 12 Авг. 23, 10:34
Да, в случае дистилляции это не разгонный тэн, а дополнительный. Он не отключается. Можно сделать отключение как дополнительную настройку - после начала кипения отключать дополнительный тэн.
logvinov Магистр Москва 259 45
Отв.1006  14 Авг. 23, 15:08, через 3 мин
Купил ещё 2 датчика без гильз, тоже самое. И драйвер уберал чтоб небыло выбрасов. Правод брал пожарный в оплетке медной.куда копать хз, уже 2самовара и везде одна и таже ошибка.
dranek Кандидат наук Минск 326 257
Отв.1007  14 Авг. 23, 15:11, через 4 мин
lkosoj, Я конечно не гуру в самогонном деле, но мне кажется это логичным. Разгон есть разгон, смысл - быстрее выйти на параметры. А дополнительный ТЭН проще через тройник. Или еще одну розетку в параллель сделать.
Kuban Кандидат наук Краснодар 476 356
Отв.1008  14 Авг. 23, 15:29, через 18 мин
. Причём по одному, два датчика определяет, как только больше всё теряет все датчики.logvinov, 14 Авг. 23, 15:03
У меня было такое. Надо поискать записи - как победил....
logvinov Магистр Москва 259 45
Отв.1009  14 Авг. 23, 15:46, через 18 мин
меня было такое. Надо поискать записи - как победил....Kuban, 14 Авг. 23, 15:29
буду признателен
Kuban Кандидат наук Краснодар 476 356
Отв.1010  14 Авг. 23, 16:09, через 23 мин
Во, нашел:)
Проблема: Самовар видит только 1 датчик температуры. Другие не видит. Датчики рабочие.
Как боролся вначале. Подключил 1 датчик, он определился назначил его как "Куб". Выключаю Самовар по питанию, потом второй датчик - определился - назначил как "Пар", опять выключаю Самовар по питанию, и так далее. В итоге получаю следующее: подключаю датчик - он не появился в списке - грешу на разьем. Меняю этот по разъемам с первым - оба определились. Блинн.. Менял и ставил новые только на холодную. В итоге после многочасовых попыток определились все. НО начали отваливаться при перезагрузке.
Разъемы подключения (USB) были распаяны на дополнительной печатной плате из старого фольгированного гетинакса.
Решение: Переделал плату на новом стеклотекстолите, распаял на плату новые разьемы.
И все! Все датчики определяются. Для проверки подбросил вместо старых еще 3 новых - никаких проблем. Эта плата работает уже 2 года без сбоев. Так что ESP и Самовар здесь не причем оказались. Все дело было в утечке токов в этом гетинаксе.
Думаю, в вашем случае, если уберете колодку с винтами (которая в принципе там не нужна, ибо ничего на ней не будет никогда скручиваться/перекручиваться) и соедините разъемы перемычками на нормальной пайке, проблема уйдет.
П.с. кстати один из таких разъемов на 3 пина у меня тоже глючил (не на датчиках - в другом соединении, засаживал центральный на боковой)
logvinov Магистр Москва 259 45
Отв.1011  14 Авг. 23, 16:20, через 11 мин
Думаю, в вашем случае, если уберете колодку с винтами (которая в принципе там не нужна, ибо ничего на ней не будет никогда скручиваться/перекручиваться) и соедините разъемы перемычками на нормальной пайке, проблемаKuban, 14 Авг. 23, 16:09
Я собрал ещё один самовар, и разъемы всё поключил последовательно друг за другом от питания до земли и без всяких колодок, вот теперь буду менять разъмы либо подключу сразу без разъемов.

Добавлено через 6ч. 22мин.:

Ну вообще ситуация как не как решается
Выкинул всё разъемы скрутил всё датчики в один через какой то прикольный разъем с китая. Датчики всё определились, но поставил по питанию конденсатор, и резистор сменил на 2.2кОм.запустил в работу уже 3 часа работа идёт.
IMG_20230814_204605.jpg
IMG_20230814_204605. Автоматика Самовар. Вопросы по электр(он)ике.
IMG_20230814_204610.jpg
IMG_20230814_204610. Автоматика Самовар. Вопросы по электр(он)ике.
IMG_20230814_224030.jpg
IMG_20230814_224030. Автоматика Самовар. Вопросы по электр(он)ике.
dranek Кандидат наук Минск 326 257
Отв.1012  15 Авг. 23, 14:13
Набросал алгоритм для управления НБК.
Ранее lua скриптов не писывал, интересует реализуемо ли?
Вот, кидайте тапки:
1) ( в качестве граничных условий)
Планируемая конструкция НБК (железо по максимуму из того, что уже есть)
Колонна снизу вверх и после поворота вниз.
1. Емкость с отработанной брагой либо каналья.
2. Заглушка на кламп 2" со штуцером 10 мм для слива отработанной браги.
3. Теплообменник подогрева добавочной воды в парогенератор (дефлегматор от бражной колонны).
4. Узел подачи пара (короткая царга с боковым штуцером 8 мм и гнездом под термодатчик ( узел отбора голов подходит)). На штуцере на тройнике подключен манометр.
5. Две царги 2" 50 и 40 см, внутри суммарно 19 тарелок. (нашел в продаже 25 шт, будет мало добавлю)
6. Царга 2" 50 см, внутри 6 тарелок, в верхнее гнездо для термодатчика вставлена трубка 6 мм для подачи подогретой браги.
7. Диоптр 2" 20 см с датчиком захлёба.
8. Поворотный узел от дисциллятора с заужением до 8 мм и конденсатором на выходе, в верхней точке ставится датчик температуры пара, вместо воды на охлаждение подаётся брага от перистальтического насоса для предподогрева.
9. Окончательный конденсатор, подключенный к водопроводной воде.
10. трубка и канистра для СС.

Парогенератор 6 дм. куб. отдельно стоящий со своим регулятором подпитки через предподогрев от бака обессоленой воды (поплавковый датчик, э/м клапан, жиклер или игольчатый кран + ротаметр, давление подачи за счёт перепада по уровню) либо вместо бака подключение напрямую от бытового фильтра обратного осмоса, и системой безопасности (отключение ТЭНа при снижении уровня по второму поплавковому датчику) Тут пока не суть.

2) Управление
1. ТЭН - мощность в парогенератор.
2. Шаговый двигатель перистальтического насоса (подключается вместо штатного в Самоваре, с большей производительностью) - количество подаваемой браги.
3. Насос воды на охлаждение - подача воды при появлении пара в царге.

3) Контроль
1. Т внизу колонны (Тн).
2. Т пара в верхней точке колонны (Тп).
3. Т Спирта Сырца - Ттса
4. Тводы на выходе охлаждения.
5. Датчик захлёба.
6. Датчик протока воды.

4) Логика, алгоритм будущего lua скрипта.
4.1)Инициализация.
Используем переменную РЕЖИМ, для определения в каком месте скрипта выполнять инструкции. Изначально РЕЖИМ= 0.
dТопт=? оптимальная дельта между температурой пара и температурой уходящей отработанной браги, подбирается опытным путём при перегонке в ручном режиме. Должно получиться что то около 3.

4.2)Скрипт ежесекундного выполнения.

Выбор по РЕЖИМ
Если РЕЖИМ=0 --включение парогенератора.
    Включаем нагрев ТЭНа на мощности 100%.
    РЕЖИМ =1
Если РЕЖИМ=1 --Прогрев колонны
    Если Тп>90°С то
         РЕЖИМ =2 -- Прогрев закончен
         Тбаз=Тн -- Запоминаем температуру пара внизу колонны.
         Включаем подачу воды на охлаждение на 30% мощности.
         Включаем насос подачи браги на 1%.
Если РЕЖИМ= 2 -- Отбор СС с непрерывным поиском оптимального режима
    Если сработал датчик захлеба снижаем мощность ТЭНа на 10% и блокируем эту инструкцию на 30 сек.
    Если Ттса (температура СС)>40 °С то увеличиваем подачу воды на 10%, оповещение и блокируем эту инструкцию на 20 сек.
    Если нет протока воды в течении 30 сек или Ттса (температура СС)>50 °С или Тводы>60 °С то оповещение и вызов функции Останов.
    Если Тбаз-Тн<dТопт-0.3 (перегрев) то увеличиваем подачу браги на 1% и блокируем эту инструкцию на 10 сек.
    Если Тбаз-Тн>dТопт+0.3 то (недогрев) снижаем подачу браги на 1% и блокируем эту инструкцию на 10 сек.
    Если Тп>90 то --закончилась брага (?)
         оповещение и вызов функции Останов.
    Если Тн<70 то --прекратилась подача пара
         оповещение и вызов функции Останов.
Если РЕЖИМ=3 -- Ничего не делаем.

функция Останов
       РЕЖИМ =3
        Отключаем перистальтический насос.
       Выключаем нагрев ТЭН.
       Отключаем подачу воды на охлаждение.
logvinov Магистр Москва 259 45
Отв.1013  15 Авг. 23, 22:01
Очень интересно, но нечего пока что для меня не понятно. Как только всё сделаешь сделайте пожалуйста фото устройства. Тоже хочу такое чудо для получения сс
dranek Кандидат наук Минск 326 257
Отв.1014  17 Авг. 23, 01:35
Набросал вот черновик скрипта
--      Исходные данные 
MaxStepper=1000 --максимальное количество шагов в минуту перистальтического насоса подбирается экспериментально
dStepStepper=MaxStepper*0.01 --Приращение шагов перистальтического насоса при регулировке 1%
MaxPower=1800 --максимальная мощность либо напряжение регулятора
StepPower=MaxPower*0.1 --шаг изменения мощности либо напряжения регулятора
dTopt = 3 --найденное опытным путём оптимальное отклонение температуры браги от температуры пара

--      Чтение глобальных переменных
Regim = getObject("Regim","NUMERIC")+0 -- читаем глобальную переменную Regim
TankTempBas = getObject("TankTempBas","NUMERIC")+0 -- читаем запомненную базовую температуру пара внизу колонны
--      Чтение текущих температур и мощности
CurrentStepper=getNumVariable("CurrentStepper")+0 -- текущая скорость подачи браги в шагах/мин.
SteamTemp=getNumVariable("SteamTemp")+0 -- температура пара
TCC = getNumVariable("ACPTemp")+0 -- температура СС
WaterTemp = getNumVariable("WaterTemp")+0 -- температура воды
TankTemp = getNumVariable("TankTemp")+0  --значение температуры куба
dT = TankTempBas-TankTemp -- текущее отклонение температуры пара
CurrentPower=getNumVariable("target_power_volt") + 0 -- запоминаем текущую мощность (напряжение) на ТЭН-е

local function startPump()
   pinMode(4, OUTPUT) --устанавливаем режим пина
   digitalWrite(4, HIGH) --устанавливаем на 4 ноге высокий уровень => включаем насос
   setObject("pump_started", "true") --сохраняем признак включения насоса
   sendMsg("Насос включён", -1) --отчитываемся в консоль браузера
   sendMsg("Насос включён", 2) --отправляем сообщение оператору
end

local function stopPump()
   pinMode(4, OUTPUT) --устанавливаем режим пина
   digitalWrite(4, LOW) --устанавливаем на 4 ноге низкий уровень => выключаем насос
   setObject("pump_started", "false") --сохраняем признак выключения насоса
   sendMsg("Насос выключен", -1) --сообщаем в консоль браузера
   sendMsg("Насос выключен", 2) --отправляем сообщение оператору
end

local function Stop() -- функция останова
   Regim = 0 -- сброс алгоритма
   set_stepper_target(0, 0, 0) --Отключаем перистальтический насос.
   setPower(0) -- Выключаем нагрев ТЭН.
   openValve(0) -- выключаем клапан воды
   stopPump()  -- отключаем насос
   setNumVariable("SetScriptOff",1)-- прерываем цикл скрипта
   setLuaStatus("Скрипт остановлен")
end      

if Regim == 0 then --включение парогенератора.
   setPower(1) -- включаем нагрев
   setCurrentPower(maxPower) -- ставим мощность ТЭН-а на максимум
   Regim = 1
   sendMsg("Включаем нагрев", 0)
elseif Regim == 1 then --Прогрев колонны
    if SteamTemp>90 then --верх колонны прогрелся
      Regim = 2 -- Прогрев закончен
      TankTempBas=TankTemp -- Запоминаем температуру пара внизу колонны.
      setObject("TankTempBas",TankTempBas)
      openValve(1) -- включаем клапан воды
      startPump()--включаем водяной насос
      set_stepper_target(dStepStepper, 0, 0) -- Включаем насос подачи браги на 1%.
      sendMsg("Колонна прогрета, включаем воду и подачу браги", 0)
   end
elseif Regim == 2 then -- Отбор СС с непрерывным поиском оптимального режима
   if getTimer(6)==0 and dT < dTopt-0.3  then -- брага на сливе слишком горячая
      if CurrentStepper<MaxStepper+2 then
         CurrentStepper=CurrentStepper+dStepStepper
         set_stepper_target(CurrentStepper, 0, 0) --увеличиваем подачу браги на 1%
         setTimer(6,10) --и блокируем эту инструкцию на 10 сек.
         setNumVariable("CurrentStepper",CurrentStepper) -- запоминаем текущую подачу браги
      else
      sendMsg("Недостаточная производительность насоса подачи браги", 0)
      end
   end
      if getTimer(7)==0 and dT > dTopt+0.3 then -- брага на сливе слишком холодная
         if CurrentStepper>0 then
         CurrentStepper=CurrentStepper-dStepStepper --снижаем подачу браги на 1%
         set_stepper_target(CurrentStepper, 0, 0)
         setTimer(7,10) -- и блокируем эту инструкцию на 10 сек.
         setNumVariable("CurrentStepper",CurrentStepper) -- запоминаем текущую подачу браги
         end
      end
   if SteamTemp > 90  then
      sendMsg("Закончилась брага", 0) 
      Stop()
   end
   if TankTemp < 70 then
      sendMsg("Прекратилась подача пара", 0)
      Stop()
   end
end
            -- Обработка аварий
   if digitalRead(27)==1 then -- сработал датчик захлеба
      if getTimer(2)==0 then -- если нет блокировки функции
         if getTimer(1)>0 and getTimer(1)<10 then --в 1-ю секунду последних 10 сек. задержки
            if currentPower > stepPower-1 then -- если текущая мощность выше 10%
            setCurrentPower(currentPower-stepPower)  --снижаем мощность ТЭНа на шаг мощности
            setTimer(2,30) -- блокируем реакцию на датчик захлёба на 30 сек
            end
         end
      if getTimer(1)==0 then --если не взведен таймер задержки взводим
      setTimer(1,20) -- на 20-10=10 сек
      end
   else --датчик захлёба передумал
   setTimer(1,0)  --сбрасываем таймер задержки
   setTimer(2,0)  --сбрасываем таймер блокировки
   end
   
   if (digitalRead(36)==0 or TCC > 50 or WaterTemp>60) then --нет протока воды, перегрев СС или слива воды
      if getTimer(5)==0 then -- если нет блокировки функции
         if getTimer(4)>0 and getTimer(4)<10 then --в 1-ю секунду последних 10 сек. задержки
         sendMsg("Недостаточное охлаждение, останов", 0)
         Stop()
         end
      end
      if getTimer(4)==0 then --если не взведен таймер задержки взводим
      setTimer(4,40) -- на 40-10=30 сек
      end
   else --восстановлен проток воды, снят перегрев СС или слива воды
   setTimer(4,0) --сбрасываем таймер задержки
   setTimer(5,0)  --сбрасываем таймер блокировки
   end
--Обработка нажатия кнопки ручного останова скрипта
--проверяем признак завершения работы скрипта, если он установлен, то завершаем работу
if (getNumVariable("SetScriptOff") + 0) == 1 then
  Stop() --всё отключаем
end
setObject("Regim",Regim) -- сохраняем глобальную переменную Regim

И есть проблема.
Не понятно как из LUA скрипта управлять производительностью штатного перистальтического насоса и насоса воды?
Это странно, потому что мощностью ТЭН-а управлять есть функция.
Fnr Специалист Иркутск 115 10
Отв.1015  17 Авг. 23, 12:25
И есть проблема.
Не понятно как из LUA скрипта управлять производительностью штатного перистальтического насоса и насоса воды?
Это странно, потому что мощностью ТЭН-а управлять есть функция.dranek, 17 Авг. 23, 01:35
вода автоматом же держит нужную температуру

а перисталик программой регулируется скорость
dranek Кандидат наук Минск 326 257
Отв.1016  17 Авг. 23, 12:58, через 34 мин
Fnr, ну по воде может и не надо, а перильстатическим насосом хочу регулировать подачу браги в НБК, такого режима в Самоваре не видел. Поэтому из lua скрипта.

По мере дописки скрипта буду править его в предыдущем посте, чтоб не растить тему.
dranek Кандидат наук Минск 326 257
Отв.1017  18 Авг. 23, 02:21
Нашел в исходном коде описание LUA функций
"set_stepper_by_time(uint16_t spd, uint8_t direction, uint16_t time) //spd - скорость в оборотах в минуту, direction - прямое или обратное направление, time - время включения двигателя в секундах"
,"set_stepper_target(uint16_t spd, uint8_t direction, uint32_t target) //spd - скорость в шагах в секунду, direction - прямое или обратное направление, target - количество шагов",
"get_stepper_status" - я так понял управление перистальтическим насосом подключенным через расширитель портов,
"set_mixer_pump_target", "get_mixer_pump_status" - управление неким насосом тоже на расширителе, что за он пока не понял.

А нужных мне нету, придётся видать расширитель портов ставить. В исходный код лезть не хочу, мало что там понимаю.

К каким пинам расширителя портов и как подключать драйвер второго перистальтического насоса? Где можно схему посмотреть?
lkosoj Куратор Видное 495 513
Отв.1018  18 Авг. 23, 21:33
"get_stepper_status" - я так понял управление перистальтическим насосом подключенным через расширитель портовdranek, 18 Авг. 23, 02:21
Этот расширитель реализован на Arduino Nano. Его описание тут.
Можно добавить в Lua функции для управления штатным шаговиком, если в этом есть необходимость.
dranek Кандидат наук Минск 326 257
Отв.1019  18 Авг. 23, 21:35, через 3 мин
lkosoj, да, похоже необходимость есть. Моя задача упростится.