Расширение возможностей Самовара с помощью дополнительной платы I2CStepper с шаговым двигателем и четырьмя реле.
Модуль может быть использован как самостоятельное устройство. Управление возможно как отдельно с помощью меню на LCD экране 16х2 и энкодера, так и при подключении к Самовару.
Расширитель подключается к Самовару по шине I2C четырьмя проводами (как LCD экран). Самовар понимает, что расширитель подключен и может им управлять.
Samovar 7.00: прошивка работает с платами по протоколу версии 3. На шине может быть до десяти плат с адресами I2C от 1 до 10: платы с нечётным адресом (1, 3, 5…) — мешалки, с чётным (2, 4, 6…) — насосы (прокачка или наполнение заданного объёма). Каждая плата сообщает Самовару, что умеет: мешалка, прокачка, наполнение, реле, внешний датчик. Платы ищутся при запуске Самовара и дальше опрашиваются в фоне; если хотя бы одна найдена, на главной странице любого режима появляется кнопка «I2CStepper», которая открывает страницу управления платой. Плата, однажды ответившая на шине, остаётся в списке до перезагрузки Самовара; если связь с ней потеряна, она помечается как недоступная.
В работе (программа ректификации, Lua, режимы Пиво и Сыр) Самовар использует одну рабочую мешалку и один рабочий насос — платы с наименьшим адресом среди найденных. Они фиксируются в момент запуска процесса и не меняются до его окончания, даже если во время работы появится плата с меньшим адресом.
Первое реле в режиме Пиво используется для управления насосом перекачки сусла в режиме вкл/выкл (например, для циркуляции сусла в варочнике). Остальные реле прошивка не занимает — их назначение вы определяете сами, включать их можно из Lua. Реле обслуживает рабочая мешалка, если она заявила поддержку реле, иначе рабочий насос.
Настройки самой платы (режим, обороты, время работы и паузы мешалки, подача насоса, объём и скорость наполнения, шагов на миллилитр) хранятся в памяти Nano и правятся на вкладке Настройки → I2CStepper, см. ниже. Страница «I2CStepper» служит только для ручного запуска и остановки.
Страница «I2CStepper»
Страница «I2CStepper»: выбрана плата насоса с адресом 2
 Устройство
Список плат, найденных на шине; показан, если плат две и больше. Мешалки имеют нечётный адрес, насосы — чётный.
|
 Состояние платы
«Работает» или «Остановлен»; ниже — текущая скорость насоса и оставшийся объём.
|
 Скорость и объём
Скорость насоса в литрах в час и объём в миллилитрах для кнопки «Запустить». «Стоп» останавливает насос.
|
 Реле 1
Показано, если плата поддерживает реле; переключает первое реле платы.
|
 Калибровка внешнего насоса
Только у плат-насосов: открывает страницу калибровки «Шагов/мл» для выбранной платы.
|
Если найдено две платы и больше, вверху появляется список «Устройство» — в нём выбирается плата, с которой вы работаете: «Мешалка, адрес N» или «Насос, адрес N». При одной плате список скрыт. Если выбранная плата недоступна, вместо панели выводится сообщение «Выбранный I2CStepper недоступен» — другая плата автоматически не подставляется, её нужно выбрать в списке.
Для выбранной платы показывается её тип и адрес, состояние («Работает» или «Остановлен»), текущая скорость в шагах в секунду и сколько шагов осталось сделать до остановки. Данные обновляются каждые две секунды.
Управление. «Скорость» — скорость двигателя в шагах в секунду (от 1 до 18000), «Цель, шагов» — сколько шагов сделать. Кнопка «Запустить» передаёт эти два значения плате и запускает двигатель в режиме, записанном в памяти Nano: у мешалки это вращение, у насоса — наполнение заданным числом шагов. Для насоса число шагов проще посчитать из объёма: умножьте нужные миллилитры на «Шагов/мл» из настроек Nano. «Стоп» останавливает двигатель. Запуск невозможен, если насос не откалиброван («Шагов/мл» равно нулю) или Самовар как раз переключает режим — тогда выводится сообщение об ошибке.
Реле. Если плата заявила поддержку реле, показана кнопка «Включить реле 1» / «Выключить реле 1» — она переключает первое реле платы (в режиме Пиво это насос сусла). Реле 2–4 со страницы не переключаются, только из Lua.
Калибровка внешнего насоса. Кнопка есть только у плат-насосов с поддержкой наполнения. Она открывает страницу калибровки для выбранной платы: подготовьте мерную ёмкость, задайте скорость двигателя и нажмите «Начать калибровку» — насос начнёт качать. Когда наберётся ровно 100 мл, нажмите «Зафиксировать 100 мл»: Самовар посчитает «Шагов/мл» и запишет значение в память Nano. Повторяйте калибровку после изменения микрошагов драйвера, двигателя, головки насоса или трубки.
Настройки Самовара
Настройки → I2CStepper. Вкладка «Настройки Nano I2CStepper» показывает настройки, хранящиеся в памяти самой платы. Кнопка «Пересканировать I2C-устройства» заново ищет платы на шине (например, после подключения новой). При нескольких платах нужная выбирается в списке «Устройство». Поля:
«Новый адрес» — адрес платы на шине от 1 до 10. Нечётный адрес делает плату мешалкой, чётный — насосом; занятый адрес выбрать нельзя. Новый адрес начнёт действовать после перезагрузки Nano.
«Режим» — «Мешалка» (только для нечётного адреса), «Насос» или «Наполнение» (только для чётного). В этом режиме плата работает по кнопке «Запустить» и по командам из Lua и приложений.
«Шагов/мл» — калибровочный коэффициент насоса: по нему миллилитры и литры в час пересчитываются в шаги двигателя. Заполняется калибровкой (см. выше) или вручную. Пока он равен нулю, насос запустить нельзя.
«Обороты мешалки», «Работа мешалки, с», «Пауза мешалки, с» — параметры мешалки для автономной работы платы; при паузе 0 мешалка работает непрерывно.
«Подача насоса, мл/ч» и «Пауза насоса, с» — режим «Насос» (непрерывная прокачка); «Объём наполнения, мл» и «Скорость наполнения, мл/ч» — режим «Наполнение».
Кнопка «Сохранить в Nano» записывает поля в энергонезависимую память платы; они переживают перезапуск и Самовара, и платы.
Настройки → Насос. Если найден I2C-насос, на вкладке появляются два поля для ректификации:
«Использовать I2C-насос над ЦП» — насос участвует в ректификации, если был обнаружен при запуске Самовара: на отборе голов он становится основным насосом, на теле и предзахлёбе работает одновременно с локальным насосом.
«Скорость отбора над ЦП» — постоянная скорость I2C-насоса на строках тела B и предзахлёба C. На строке голов H берётся скорость самой строки программы.
Скорость в литрах в час для этого насоса пересчитывается в шаги по «Шагов/мл» из памяти Nano, отдельного поля «Количество шагов I2C насоса» в настройках Самовара больше нет.
Мобильные приложения и сайт
Приложения Самовар и страница «Управление» на сайте samovar-tool.ru получают список плат и их состояние (доступность, режим, скорость, остаток, маска реле) раз в пять секунд и позволяют запустить и остановить плату, а также переключить реле. Настройки Nano и калибровка через приложения недоступны — только через веб-интерфейс Самовара. Если команда отклонена, причина приходит в сообщениях Самовара в виде «Blynk V37 a=N: код».
Схема и подключение
Схема соединений
Распиновка подключения периферии:
// Пины для I2C Master - подключение экрана и потенциально других устройств
// SDA_PIN 0 //A0
// SCL_PIN 2 //D2
// Пины для I2C Slave - связь с Samovar
// SDA_PIN A4
// SCL_PIN A5
// Пины для шагового двигателя
#define STEPPER_STEP 3
#define STEPPER_DIR 4
#define STEPPER_EN 5
//Пины для реле
#define MIXER_PUMP_PIN 13 // RELE_PIN1
#define RELE_PIN2 10 // RELE_PIN2
#define RELE_PIN3 11 // RELE_PIN3
#define RELE_PIN4 12 // RELE_PIN4
// Пины для Encoder
#define ENC_CLK 7 //S2
#define ENC_DT 8 //S1
#define ENC_SW 9 //KEY
Совет.
Если планируется использовать расширитель как отдельное устройство, в отдельном корпусе, имеет смысл подключать его к Самовару через USB кабель А-В (компьютер - принтер). Непосредственно от дисплея Самовара берется питание для модуля +/- 5 вольт и два сигнала шины I2C. На корпусе Самовара монтируется разъем USB-B.
На корпусе расширителя монтируется разъем USB-A.
Таким образом, при подключении к Самовару Arduino Nano одновременно подключается и к питанию и к шине I2C. В случае использования как самостоятельное устройство, вместо Самовара используется отдельный блок питания, например зарядка от телефона.
При использовании встроенного блока питания на выход БП ставится разъем USB-B, и для подачи питания используется тот же кабель USB A-B, что исключает случайную подачу +5 вольт на Самовар.
Периферия.
Блок реле используется на напряжение 5 вольт, предпочтительно с управлением через оптопаты. Можно использовать и 12-ти вольтовые реле с подключением по принципу как в Самоваре.
Насос можно использовать любой. Двигатель постоянного напряжения или переменного одно- или трех- фазный. Потому как пуск и остановка двигателя насоса осуществятся через реле и далее через любой силовой коммутатор: контактор или твердотельное реле. Для небольших объемов можно присмотреться к насосу с магнитным приводом 15RM. Нержавейка, тихий, с хорошей производительностью.
Шаговый двигатель для мешалки или НБК можно использовать любой биполярный, при условии, что у него хватит мощности и крутящего момента. Рекомендуется Nema 23 с соответствующим драйвером.
Актуальный скетч для Arduino Nano, управляющий шаговым двигателем и четырьмя реле можно скачать по ссылке . Нужна версия с протоколом v3; при переходе с протокола v2 память платы инициализируется заново — заново проверьте адрес, режим и «Шагов/мл». Основное назначение - использование совместно с Самоваром как модуль расширения. Необходимо использовать библиотеки, идущие в комплекте с Самоваром.
Управление из Lua
Функции доступны, когда прошивка собрана с Lua (см.
О скриптовом языке программирования Lua). Функции мешалки работают с рабочей мешалкой, функции насоса — с рабочим насосом (платы с наименьшим адресом, см. выше). Все функции запуска возвращают 1, если команда принята платой, и 0, если нет — в том числе если нужной платы нет на шине.
set_stepper_by_time(spd, direction, time) – запустить мешалку: spd – скорость в шагах в секунду, direction – направление 0 или 1, time – время работы в секундах. При time = 0 мешалка крутится непрерывно до команды остановки, spd = 0 останавливает мешалку.
set_stepper_target(spd, direction, target) – запустить насос в режиме наполнения: spd – скорость в шагах в секунду (до 18000), direction – направление 0 или 1, target – количество шагов. При spd = 0 или target = 0 насос останавливается. Штатным шаговым двигателем Самовара функция не управляет.
get_stepper_status() – сколько шагов осталось сделать насосу (0 – стоит или платы нет).
i2cpump_start(rate, volume) – перекачать volume мл со скоростью rate л/ч, пересчёт в шаги по «Шагов/мл» из памяти Nano. Возвращает 0, если плата насоса не подключена, не откалибрована или аргументы неверны.
i2cpump_stop() – остановить насос.
i2cpump_get_speed() – текущая скорость насоса в шагах в секунду.
i2cpump_get_target_ml() – объём, заданный последней командой i2cpump_start, мл.
i2cpump_get_remaining_ml() – сколько осталось перекачать, мл.
i2cpump_get_running() – 1, если насос работает, иначе 0.
set_mixer_pump_target(Val) – включить (1) или выключить (0) первое реле – насос сусла.
get_mixer_pump_status() – состояние первого реле: 0 или 1; 255, если платы с реле нет.
set_i2c_rele_state(Num, Val) – включить (1) или выключить (0) реле Num (1–4). Возвращает 1, если команда выполнена.
get_i2c_rele_state(Num) – состояние реле Num (1–4): 0 или 1; 255, если платы с реле нет.
check_I2C_device(Addr) – проверить, отвечает ли устройство с адресом Addr на шине I2C; возвращает адрес, если устройство найдено.
Внимание. Реле обслуживает рабочая мешалка, если она заявила поддержку реле; иначе рабочий насос. Функции, меняющие состояние, не выполняются в режиме симуляции Lua и во время переключения режима Самовара.
Пример: set_stepper_by_time(800, 0, 0) – крутить мешалку непрерывно на 800 шагах в секунду; set_stepper_by_time(0, 0, 0) – остановить. i2cpump_start(6, 250) – перекачать 250 мл со скоростью 6 л/ч; пока i2cpump_get_running() == 1, насос работает.