1. Уважаемые форумчане! Убедительная просьба, используйте наиболее подходящие темы для своих сообщений. Спасибо за понимание.
    Скрыть объявление

BreweryArduino с нуля.

Тема в разделе "Автоматика", создана пользователем Николай Дементьев, 23 сен 2016.

Поделиться этой страницей

  1. Николай Дементьев

    Николай Дементьев Active Member

    Регистрация:
    01.09.2016
    785
    110
    Добрый день пивовары!
    Мой коллега занимается пивоварением и попросил меня собрать ему автоматику.
    Я посмотрел многие проекты но они не все удовлетворяли по функционалу ( помимо пива нужно "гнать" и другие напитки).
    По этому я решил сам написать программу (так-как только она требует изменения)
    На данном этапе почти закончена часть пивоварения, отдельное управление тэнами, настройка часов.
    В процессе настройка пид, управление насосом.
    В перспективе сохранение и чтение рецептов с карты памяти, настройка насоса.

    На данный момент есть следующие вопросы:
    1. Режим работы насоса при варки пива.
    2. Время отсчета засыпки хмеля : от начала кипения или от предыдущей засыпки.

    Ну и небольшое видео


    --- сообщения объединены, 23 сен 2016, дата первого сообщения: 23 сен 2016 ---


    Сижу рисую экран кипячения возник вопрос: Нужно-ли отображения температуры если мощностью тэнов управляем сами?
     

    Вложения:

  2. Gryphon3

    Gryphon3 Новенький

    Регистрация:
    15.12.2016
    4
    1
    Кнопка сенсорная. Попробовал 2 паузы. Аналогичный эффект, если щелкнуть дифавтоматом или вставить в розетку насоса, на которое подано напряжение тестер. Если питание не подано, то все нормально
     
  3. Николай Дементьев

    Николай Дементьев Active Member

    Регистрация:
    01.09.2016
    785
    110
    реле я так понял простое не твердотельное......наводка от насоса дает сработку.....кнопка с резистором?
    --- сообщения объединены, 6 июн 2017, дата первого сообщения: 6 июн 2017 ---
    Попробуйте вот с таким параметром 164 строка
    Код:
    attachInterrupt(5, Return, CHANGE); // 
     
  4. Gryphon3

    Gryphon3 Новенький

    Регистрация:
    15.12.2016
    4
    1
    Реле простое, твердотельное только заказал. Кнопка подключена по схеме с вашего сайта "с твердотельным реле на насос".
    Спасибо, попробую
    --- сообщения объединены, 9 июн 2017, дата первого сообщения: 6 июн 2017 ---
    Жаль, но не помогло. Буду ждать твердотельное на насос
     
  5. Николай Дементьев

    Николай Дементьев Active Member

    Регистрация:
    01.09.2016
    785
    110
    Попробуйте на пин подключения кнопки подать минус через резистор 1-10 кОм.
    --- сообщения объединены, 9 июн 2017, дата первого сообщения: 9 июн 2017 ---
    Кнопка или провода от нее возможно проходят рядом с силовой частью.... из-за этого возможна наводка. Так же возможно нет диода (или неисправен) на управляющей катушке реле от которой идут наводки.
     
  6. serj_3000

    serj_3000 Участник

    Регистрация:
    24.09.2016
    49
    10
    Имя:
    Сергей
    С благославления Николая выкладываю доработанную мною скетч "BreweryArduino".
    Основные изменения
    Сигнал на засыпку хмеля выдается непрерывно до нажатия на экран.
    Подчищены все замеченные форумчанами на экране артефакты.
    И по мелочи
    вид главного экрана
    Цвета надписей кое где они плохо различимы были.

    Пробуйте пишите отзывы пожелания.
     

    Вложения:

    • Класс Класс x 1
    • Отличная идея Отличная идея x 1
  7. alekseysytov

    alekseysytov Новенький

    Регистрация:
    23.04.2017
    11
    1
    Имя:
    Алексей
    Загрузил, перестал работать тач.
     
  8. Николай Дементьев

    Николай Дементьев Active Member

    Регистрация:
    01.09.2016
    785
    110
    перезагрузка по питанию.... возможно не один раз и все будет нормально... такое бывает после загрузки кода..
     
  9. alekseysytov

    alekseysytov Новенький

    Регистрация:
    23.04.2017
    11
    1
    Имя:
    Алексей
    Пара перезагрузок решила проблему.
     
  10. edyan777

    edyan777 Новенький

    Регистрация:
    08.02.2016
    20
    4
    Имя:
    Эдуард
    Скачал, пока не грузил...заранее огромное спасибо!
    По поводу работы PID-а...а нельзя отсечку сделать по достижению температуры к примеру 62 градуса, а не ждать перехода до 63 градусов? ТЭН работает тогда в режиме 30% и переход между паузами затягивается в пределах 5 минут,что критично....приходится на это время править время затирания
     
  11. Николай Дементьев

    Николай Дементьев Active Member

    Регистрация:
    01.09.2016
    785
    110
    А какие у Вас настройки ПИ режима?
     
  12. serj_3000

    serj_3000 Участник

    Регистрация:
    24.09.2016
    49
    10
    Имя:
    Сергей
    Вряд ли удастся достичь более меньшего интервала система нагрева имеет свою инерцию тут либо медленно, но точно подходим к заданной температуре либо имеем перелет на 3 -5 градусов. Мне помогло немного сократить это время подхода хорошее утепление бака.
    Как вариант влить в момент подхода горячей воды, тогда нужная температура будет достигнута просто мгновенно.
     
  13. Николай Дементьев

    Николай Дементьев Active Member

    Регистрация:
    01.09.2016
    785
    110
    serj_3000 не добавляли в настройках ПИ режима работу насоса?
    --- сообщения объединены, 12 июн 2017, дата первого сообщения: 12 июн 2017 ---
    Думаю, что это должно увеличить точность работы ПИ режима и скорость.
     
  14. Олег

    Олег Участник

    Регистрация:
    18.11.2013
    445
    16
    Николай у тебя ведь есть сайт закидывай туда все свои проекты!!!
    --- сообщения объединены, 12 июн 2017 ---
    На форуме уже не возможно что-то сказать если это мнение неугодно модераторам и админ
     
    • Не нравится Не нравится x 1
  15. serj_3000

    serj_3000 Участник

    Регистрация:
    24.09.2016
    49
    10
    Имя:
    Сергей
    Ничего такого меня текущая работа пид режима устраивает.
     
  16. lumen

    lumen Участник

    Регистрация:
    11.10.2016
    36
    0
    О ПИ. Для тех кому лень читать много букав, но страдает "перелётами", последний абзац. Науки ради позалипал в дисплей в течении долгого времени, пробуя самые разные настройки режима ПИ, и пришёл выводу, что не имеет значения какие данные вводить, ведь алгоритм работы ТЭНа всегда один и тот же: пока температура ниже заданной, ТЭН работает на полную, при достижении заданного градуса мощность ТЭНа снижается до 30%(всегда), затем при фиксировании следующего градуса ТЭН отключается, и так по кругу. (Чтоб было понятнее, далее по тексту, "следующий градус" обозначает следующий от заданного, т.е. задан 30, следующий-31 ) Добавим сюда инерцию и в итоге всегда "перелёт". Т.е. это даже в качестве имитации не годится. И дело не в том, что Николай что-то не так сделал, а в том, что система оперирует целыми градусами. Следовательно она не знает как близко подобралась к следующему градусу и продолжает греть одной и той же мощностью, и каждый раз следующий градус для неё "как снег на голову". Вся "магия" ПИ режима происходит внутри заданного градуса.Введение десятых долей градуса решило бы проблему. В качестве заданного градуса система принимала бы в качестве "эталона" заданный градус плюс 0.5. Скажем, задали 30, система стремиться к 30.5. Зафиксировала 30.1, начинает снижать мощность ТЭНа пропорционально до 0% при 30.5. Затем зафиксировала опускание до 30.4, включила ТЭН на пропорциональный процент и снова подтянула к эталону. При таком алгоритме (возможно!) пункт меню "настройки ПИ режима" окажется не атуальным и пользователю не придется вникать в эти дебри.
    В данный же момент, тем у кого случаются перелёты, могу посоветовать отключить ПИ режим, выставив второй параметр 0. В этом случае ТЭН будет полностью отключаться при фиксировании заданного градуса.

    P.S. Николаю низкий поклон за общественную деятельность. Надеюсь, моя отсебятина будет полезна)
     
  17. Николай Дементьев

    Николай Дементьев Active Member

    Регистрация:
    01.09.2016
    785
    110
    Спасибо... :)
    Давайте посмотрим на ту часть кода где получаем температуру
    Код:
    void printTemperature() {
    
    
      if (millis() - lastTempRequest >= delayInMillis) // waited long enough??
      {
        temperature = sensors.getTempCByIndex(0);
        idle = 0;
        resolution++;
        if (resolution > 12) resolution = 9;
        sensors.setResolution(tempDeviceAddress, resolution);
        sensors.requestTemperatures();
        delayInMillis = 750 / (1 << (12 - resolution));
        lastTempRequest = millis();
      }
      idle++;
    
      TempC = temperature + 0.51;
    
      myGLCD.setColor(VGA_LIME);
      if (TempC < 100) {
        myGLCD.setColor(VGA_BLACK);
        myGLCD.fillRoundRect(273, 81, 305, 131);
      }
      myGLCD.setColor(VGA_LIME);
      myGLCD.printNumI(TempC, 209, 81);
    }
    
    Посмотрим внимательно на строку
    Код:
     TempC = temperature + 0.51; 
    Здесь я округляю десятые (в большую сторону) из чего получается следующий момент:
    Допустим заданная температура 40 гр датчик выдает 39.5 после округления выводим на экран 40, но по факту она 39.5 и для ПИ регулятора это команда на остановку нагрева при этом Мы имеем пол градуса запаса.
    Вообщем думаю, что мне уже пора от теории перейти к практике :) Первая задумка это сделать эксперимент с ПИ регулятором, чтобы до конца понять как это работает и как это лучше объяснить другим :)
     
  18. lumen

    lumen Участник

    Регистрация:
    11.10.2016
    36
    0
    Николай Дементьев, прошу прощения, в код не догадался посмотреть. Ну тогда всё еще проще. Система знает десятки, значит необходимо подправит алгоритм "внутри градуса". Ведь в данный момент 30% мощность ТЭНа стоит на протяжении всего градуса, по крайней мере, если верить отображению на экране. Пока на ум приходит следующая таблица: система зафиксировала 30.1-мощность упала до 30%, 30.2-20, 30.3-10, 30.4-0.
     
  19. Николай Дементьев

    Николай Дементьев Active Member

    Регистрация:
    01.09.2016
    785
    110
    У разной плотности... разная теплопередача... на первом этапе(нагрев воды) так может и получится, но потом плотность увеличится (после варки солода) и этот номер я думаю не пройдет.
    --- сообщения объединены, 13 июн 2017, дата первого сообщения: 13 июн 2017 ---
    я вот как раз и думал, о том что бы можно было использовать разные параметры ПИ для разных этапов
     
  20. lumen

    lumen Участник

    Регистрация:
    11.10.2016
    36
    0
    Я думаю при изменении плотности, система в любом случае будет эффективно управлять ТЭНом, мы ведь не ко времени процесс нагрева привязываем. Ну а значения в таблице просто в качестве примера, естественно конкретные вводные только опытным путем можно вычислить.
     
  21. Николай Дементьев

    Николай Дементьев Active Member

    Регистрация:
    01.09.2016
    785
    110
    С увеличением плотности соответственно и растет инерция системы... вот я к чему