I2CStepper — отдельный модуль на Arduino Nano со своим шаговым двигателем, четырьмя реле, внешним датчиком, LCD 16×2 и энкодером. Текущая прошивка использует протокол I2C v3.
Модуль может быть использован как самостоятельное устройство. Управление возможно как отдельно с помощью меню на LCD экране 16х2 и энкодера, так и при подключении к Самовару.
Расширитель подключается к Самовару по шине I2C четырьмя проводами (как LCD экран). Самовар понимает, что расширитель подключен и может им управлять.
Samovar поддерживает до десяти плат с адресами 1–10: нечётный адрес — мешалка, чётный — насос/наполнение. В работе используются платы с наименьшим адресом каждого типа. Мешалка работает по скорости, времени работы и паузе; насос — по мл/ч; режим наполнения — по заданным объёму и скорости.
Если устройство сообщает поддержку реле, первое реле переключается со страницы I2CStepper, все четыре — из Lua. Назначение реле задаёт пользователь: прошивка Самовара его не определяет.
Модули ищутся на шине при загрузке Самовара. Если модуль найден, на страницах режимов Дистилляция, Бражная колонна и Пиво появляется вкладка «I2CStepper», которая открывает страницу ручного управления платой: скорость, число шагов, запуск и остановка, реле 1. Настройки самой платы (адрес, режим, обороты, время работы и пауза мешалки, подача насоса, объём и скорость наполнения, шагов на 1 мл) правятся на вкладке Настройки → «I2CStepper» и хранятся в памяти Nano. Калибровка внешнего насоса запускается кнопкой «Калибровка внешнего насоса» на странице I2CStepper; результат записывается в поле «Шагов/мл» платы.
Схема соединений
Распиновка подключения периферии:
// Пины для 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 находятся в репозитории I2CStepper. После перехода на протокол v3 проверьте адрес платы, режим и калибровку «Шагов/мл»: при смене версии структура EEPROM инициализируется заново.
Текущие режимы:
— Mixer: мешалка, обороты в минуту, время работы, пауза, реверс после паузы и плавный старт.
— Pump: непрерывная подача в мл/ч с необязательной паузой.
— Fill: дозированный налив заданного объёма в мл.
Внешний датчик может останавливать насос или ставить его на паузу. При зависании I2C сам модуль останавливает шаговик и выключает реле; после восстановления требуется подтверждение энкодером.
Внимание.
Функция Lua set_stepper_target(spd, direction, target) управляет только насосом I2CStepper (рабочей платой с чётным адресом): скорость, направление и число шагов. Если насос не отвечает на шине, функция возвращает 0; штатным шаговиком Самовара она не управляет.
--set_stepper_target(spd, direction, target) //spd - скорость в шагах в секунду,
direction - прямое или обратное направление,
target - количество шагов
При spd = 0 шаговый двигатель будет остановлен.
Пример
set_stepper_target(950, 0, 1000)
Пример задаёт скорость 950, направление 0 и перемещение на 1000 шагов.