Рожковая кофеварка с программируемыми профилями пролива

Тема в разделе "Глядите, что я сделал", создана пользователем maxalex, 13 ноя 2021.

  1. maxalex

    maxalex Нерд

    • Датчики
      • Термо-сопротивление PT 100
      • Тензодатчик на 1кг
      • Аналоговый датчика давления
      • Энкодер
      • Потенциометр
      • Клавиатура 16 кнопок
    • Управляемые устройства
      • ТЕН1
      • ТЕН2
      • Электромагнитный клапан
      • Двигатель линейного привода
      • Экран 16х2

    Используемые модули:
    http://wiki.amperka.ru/продукты:iskra-mega
    https://learn.adafruit.com/adafruit-max31865-rtd-pt100-amplifier/arduino-code
    https://amperka.ru/product/troyka-encoder
    https://amperka.ru/product/keypad-4x4
    http://wiki.amperka.ru/products:troyka-display-lcd-text-16x2
    https://arduinoplus.ru/hx711-arduino/
    https://iarduino.ru/shop/Expansion-payments/drayver-motora-na-43a-bts7960.html

    Программа написана на Java и автоматически сконвертирована в C. Кроме того, на Java написан эмулятор кофемолки для отладки программы.

    Устройство кофеварки:




    Кофеварка в работе:





    Инструкция по управлению:

    0 - Режим ручного управления мощностью

    1 - Режим ручного управления давлением

    2 - 9 - Программируемые режимы

    A - Установка веса напитка для автоматической остановки заваривания

    # - выход из режима установки без изменения целевого веса.

    * - установить новое введенное значение целевого веса напитка для автоматической остановки процесса заваривания.

    B - Весы

    Переход в режим весов и обнуление веса (затаривание).

    # - выход из режима весов.

    * - переключение режима авто-определения чашки.

    C - Установка температуры

    D - Вход в меню

    * в режиме ожидания - начало пролива по программе. После пролива и забора воды для слива - слив на 100% мощности.

    # в режиме пролива - остановка пролива, набор воды.

    Параметры шага профиля пролива:

    • Тип основного параметра шага.
      • по мощности
      • по потоку
      • по давлению
    • Значение основного параметра шага.
      • До 255 для мощности.
      • До 10.0мл/c для потока.
      • До 14.0бар для давления.
    • Ограничение сверху для противоположного параметра. Если значение = 0, то это означает "без ограничений".
      • Максимальное давление для основного параметра "по мощности" и "по потоку". До 14.0бар.
      • Максимальный поток для основного параметра "по давлению". До 10.0мл/c
    • Ограничение снизу для противоположного параметра.
      • Минимальное давление для основного параметра "по мощности" и "по потоку".
      • Минимальный поток для основного параметра "по давлению".
    • Условие окончание шага.
      • Длительность шага в секундах. 0 - без ограничений. До 255 с. Шаг заканчивается через указанное количество секунд возможно, до срабатывания других ограничений, описанных ниже.
      • Повышение противоположного параметра до уровня. Шаг сразу завершается, если противоположный параметр уже больше указанного значения.
        • Повышение давления (для основного параметра "по мощности" и "по потоку"). До 14.0бар. 0 - без ограничений
        • Увеличение поток (для основного параметра "по давлению"). До 10.0мл/c. 0 - без ограничений
      • Снижение другого параметра до уровня. Шаг сразу завершается, если противоположный параметр уже меньше указанного значения.
        • Понижение давления (для основного параметра "по мощности" и "по потоку"). До 14.0бар.
        • Уменьшение поток (для основного параметра "по давлению"). До 10.0мл/c.
      • Достижение веса напитка в граммах. До 100г.
    • Скорость установки нового значения основного параметра шага.
      • Немедленно.
      • Линейно. Значение основного параметра изменяется линейного от текущего значения в начале шага до установленного в параметре. Должна быть установлена длительность шага.
      • Быстро. В начале шага значение основного параметра изменяется быстрее, чем в конце, быстро приближаясь к целевому, но достигая его только в конце шага. Должна быть установлена длительность шага.
      • Медленно. В начале шага значение основного параметра изменяется медленнее, чем в конце, достигая целевого только в конце шага. Должна быть установлена длительность шага.

    Меню:
    1. Cup auto detect
    2. Min cup weight
    3. Suck clean water
    4. Cleaning secs
    5. Scale settings
    6. PID parameters
      1. Cold start PID
      2. Keep warm PID
      3. Fresh water PID
      4. Pressure PID
      5. Flow PID
        1. Derivative
        2. Differential
        3. Integral
        4. Constant
        5. On target dif
        6. Auto setup
        7. Max rand shift %
    7. Recipe
      1. Recipe number
        1. Step number
          1. Type
          2. Value
          3. Oppos Max Value
          4. Oppos Min Value
          5. Duration Sec
          6. Stop if above
          7. Stop if below
          8. Stop weight
          9. Curve type
     
    Рокки1945 нравится это.
  2. Asper Daffy

    Asper Daffy Иксперд

    Хрена-се!
     
    Рокки1945 нравится это.
  3. maxalex

    maxalex Нерд

    Да, во-первых, я - профессиональный Java программист, во-вторых, возможности IDE для Java (Intellij Idea) на порядок выше IDE для Ардуино. Поэтому проект с применением Java получилось реализовать гораздо быстрее и проще, чем если бы писал на C, даже с учетом дополнительных затрат на написания эмулятора и конвертера в C.
     
  4. KindMan

    KindMan Гуру

    Вы сами писали конвертер? А пример его работы где можно посмотреть?
    А заливали в мегу вы прошивку после конвертера через ардуино IDE?
     
  5. maxalex

    maxalex Нерд

    Идея конвертера не моя, за основу взял проект
    https://github.com/TimReset/arduino-java
    описанный вот тут:
    https://habr.com/ru/post/274571/, секция "Преобразования Java кода в Wiring", за что автору - огромное спасибо! Конечно, пришлось развить, добавить фич, библиотек и т.д. Кроме того, дописал автогенераторы кода для удобного сохранения-вычитывания сложного дерева настроек из/в eeprom.
    Конвертер создает файл со скетчем, его открываю в Ардуино IDE, компилирую и прошиваю оттуда, да.
     
    KindMan нравится это.
  6. maxalex

    maxalex Нерд

    Пример - результат конвертации из Java в C - с первого взгляда ужасен, но работать с ним приходится не часто. Прикладываю пример.
     

    Вложения:

    • BonaFabrica.ino
      Размер файла:
      107,8 КБ
      Просмотров:
      195
  7. parovoZZ

    parovoZZ Гуру

    Хм, а если надо реализовать CDC ACM, то на Java это будет быстрее, чем на сях?
     
  8. maxalex

    maxalex Нерд

    В общем случае, для разных задач подходят разные инструменты. Задачу "реализовать CDC ACM" не понимаю, поэтому тут сказать ничего не могу.
     
    Asper Daffy нравится это.
  9. maxalex

    maxalex Нерд

    Снял обзорное видео про кофеварку:

     
    Un_ka нравится это.
  10. Un_ka

    Un_ka Гуру

    Более подходящего корпуса, чем коробка из под амперки не нашлось?
    Можно спроектировать, например во fusion360, и напечатать на 3д принтере. Или взять пищевой пластик. Те же контейнеры для еды.
     
    maxalex нравится это.
  11. maxalex

    maxalex Нерд

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

    Sandr Гик

    Эх и интересная идея с поршнем. А Вы его сами изготавливали или есть готовые такие изделия? Очень интересная конструкция, хотелось бы повторить. Вы нигде не говорите про комплектующие, про весы, про заварную группу, про двигатель, а это главное для повторения вашей идеи.
     
  13. maxalex

    maxalex Нерд

    Механику делает Максим Дейнеко - разработчик кофемолок и кофеварок Бонафабрика https://www.instagram.com/arnigius/. Возможно, есть готовые образцы механики, если нужна только она.
     
  14. Sandr

    Sandr Гик

    Вот спасибо , будим смотреть.
     
  15. Sandr

    Sandr Гик

    Я так понял Вы этот использовали бойлер.(Гибридный бойлер кофемашины) ? Бойлер.png
     
  16. maxalex

    maxalex Нерд

    Да, именно он - цилиндр-бойлер, совмещенный с группой, за счет этого - очень хорошая термо-стабильность. В нем - PT100, капсульные нагреватели 2 штуки и датчик давления (вкручивается в отверстие через переходники).
     
  17. Sandr

    Sandr Гик

    А какой датчик давления, двигатель для пресса, Вы ставили? В перечисленных вами списке нет? Много вопросов конечно по железу.
    Интересно посмотреть, что у вас получится.
    Алгоритм правильный.
    Я давно изучал устройства для заваривания кофе. Покупал и пробовал разные кофемашины и рожковые кофеварки, но всё это не то.
    Для заваривания кофе нужна интеллектуальная машина. Как у вас! Очень понравилось то, что можно создавать свой профиль.
    Менять температуру и давление, время пролива и объём.
    С нетерпением жду дальнейших разработок.
    Удачи!!!
     
  18. maxalex

    maxalex Нерд

    Большое спасибо!
    Датчик давления Максим покупал, не знаю, какой точно, на 200 PSI типа такого: https://aliexpress.ru/item/4000849001773.html.
    Линейный привод тоже Максим покупал, что-то типа такого: https://aliexpress.ru/item/33014135324.html. Но звук у него отвратительный - рекомендовать не могу. Недавно заказал на замену вот этот: https://aliexpress.ru/item/4000746198866.html, 50мм, 5мм/c, 2500N, но ещё не получил и не проверял.
    Сейчас разрабатываем другую конструкцию варки, гораздо проще и гораздо точнее.
     
  19. maxalex

    maxalex Нерд

    Интеллектуальная машина - https://decentespresso.com/. Но она дорогая, и в России не купишь.
     
  20. Sandr

    Sandr Гик

    Да машина интересная. Я случайно наткнулся на это видео. Не сочтите за рекламу. Но очень продвинутая машина. Вообщем то там рассказывают о принципах варки кофе. Многое можно почерпнуть. Если вы начали создавать кофемашину, значит вы любитель кофе. Я тоже его люблю. Поэтому много изучаю и готовлю по разному. С 31.28 -35.10 минуты про интеллектуальную машину рассказывают ..очень интересно!
    https://yandex.ru/video/preview/?fi...а+как+профи.секрет+от+чемпиона+великобритании
    Удачи вам!!!!
    С интересом буду ждать от вас новых решений !
     
    maxalex нравится это.