Ampliación de las posibilidades de Samovar con la placa adicional I2CStepper, con un motor paso a paso y cuatro relés.
El módulo puede usarse como dispositivo independiente. Puede controlarse por sí solo con el menú de una pantalla LCD de 16x2 y un encoder, o conectado a Samovar.
El expansor se conecta a Samovar por el bus I2C con cuatro cables (como la pantalla LCD). Samovar detecta que el expansor está conectado y puede controlarlo.
Samovar 7.00: el firmware trabaja con placas que usan la versión 3 del protocolo. En el bus puede haber hasta diez placas con direcciones I2C de 1 a 10: las placas con dirección impar (1, 3, 5…) son agitadores, y las de dirección par (2, 4, 6…) son bombas (bombeo continuo o llenado de un volumen fijado). Cada placa le dice a Samovar qué sabe hacer: agitador, bombeo, llenado, relés, sensor externo. Las placas se buscan al arrancar Samovar y después se consultan en segundo plano; si se encuentra al menos una, en la página principal de cada modo aparece el botón «I2CStepper», que abre la página de control de las placas. Una placa que haya respondido una vez en el bus permanece en la lista hasta que se reinicia Samovar; si se pierde la comunicación con ella, se marca como no disponible.
Durante el trabajo (programa de rectificación, Lua, modos Cerveza y Queso) Samovar usa un agitador de trabajo y una bomba de trabajo: las placas con la dirección más baja entre las encontradas. Se fijan al iniciar el proceso y no cambian hasta que termina, aunque durante la tanda aparezca una placa con una dirección más baja.
En el modo Cerveza el primer relé se usa para encender y apagar la bomba de trasiego del mosto (por ejemplo, para recircular el mosto en la olla de elaboración). El firmware no usa los demás relés: usted decide para qué sirven, y puede conmutarlos desde Lua. Los relés los atiende el agitador de trabajo si ha declarado soporte de relés y, si no, la bomba de trabajo.
Los ajustes de las propias placas (modo, velocidad, tiempo de trabajo y pausa del agitador, caudal de la bomba, volumen y ritmo de llenado, pasos por mililitro) se guardan en la memoria de la Nano y se editan en la pestaña Ajustes → I2CStepper («Настройки → I2CStepper»), véase más abajo. La página «I2CStepper» solo sirve para el arranque y la parada manuales.
La página «I2CStepper»
La página «I2CStepper»: está seleccionada la placa de bomba con dirección 2
 Dispositivo («Устройство»)
La lista de placas encontradas en el bus; se muestra si hay dos o más placas. Los agitadores tienen dirección impar, las bombas par.
|
 Estado de la placa
«En marcha» («Работает») o «Detenido» («Остановлен»); debajo están la velocidad actual de la bomba y el volumen restante.
|
 Velocidad y volumen
Velocidad de la bomba en litros por hora y volumen en mililitros para el botón «Iniciar» («Запустить»). «Parar» («Стоп») detiene la bomba.
|
 Relé 1
Se muestra si la placa admite relés; conmuta el primer relé de la placa.
|
 Calibración de la bomba externa
Solo para placas de bomba: abre la página de calibración de «Pasos/ml» («Шагов/мл») de la placa seleccionada.
|
Si se encuentran dos o más placas, arriba aparece la lista «Dispositivo» («Устройство»): elija en ella la placa con la que trabaja: «Agitador, dirección N» («Мешалка, адрес N») o «Bomba, dirección N» («Насос, адрес N»). Con una sola placa la lista está oculta. Si la placa seleccionada no está disponible, en lugar del panel se muestra el mensaje «El I2CStepper seleccionado no está disponible» («Выбранный I2CStepper недоступен»): no se sustituye automáticamente por otra placa, tiene que elegirla en la lista.
Para la placa seleccionada la página muestra su tipo y dirección, su estado («En marcha» («Работает») o «Detenido» («Остановлен»)), la velocidad actual en pasos por segundo y cuántos pasos quedan hasta que se detenga. Los datos se actualizan cada dos segundos.
Control. «Velocidad» («Скорость») es la velocidad del motor en pasos por segundo (de 1 a 18000), «Objetivo, pasos» («Цель, шагов») es cuántos pasos dar. El botón «Iniciar» («Запустить») envía estos dos valores a la placa y arranca el motor en el modo guardado en la memoria de la Nano: para un agitador es giro, para una bomba es llenado con el número de pasos indicado. Para una bomba es más fácil calcular el número de pasos a partir del volumen: multiplique los mililitros necesarios por «Pasos/ml» («Шагов/мл») de los ajustes de la Nano. «Parar» («Стоп») detiene el motor. No se puede arrancar si la bomba no está calibrada («Pasos/ml» es cero) o si Samovar está cambiando de modo en ese momento; en ese caso se muestra un mensaje de error.
Relés. Si la placa ha declarado soporte de relés, se muestra el botón «Encender relé 1» («Включить реле 1») / «Apagar relé 1» («Выключить реле 1»): conmuta el primer relé de la placa (en el modo Cerveza es la bomba del mosto). Los relés 2–4 no pueden conmutarse desde esta página, solo desde Lua.
Calibración de la bomba externa. El botón solo está disponible para placas de bomba que admiten llenado. Abre la página de calibración de la placa seleccionada: prepare un recipiente graduado, fije la velocidad del motor y pulse «Iniciar calibración» («Начать калибровку»): la bomba empieza a bombear. Cuando se hayan recogido exactamente 100 ml, pulse «Fijar 100 ml» («Зафиксировать 100 мл»): Samovar calcula «Pasos/ml» y escribe el valor en la memoria de la Nano. Repita la calibración después de cambiar los micropasos del driver, el motor, el cabezal de la bomba o el tubo.
Ajustes de Samovar
Ajustes → I2CStepper. La pestaña «Ajustes de la Nano I2CStepper» («Настройки Nano I2CStepper») muestra los ajustes guardados en la memoria de la propia placa. El botón «Volver a escanear dispositivos I2C» («Пересканировать I2C-устройства») vuelve a buscar placas en el bus (por ejemplo, tras conectar una nueva). Si hay varias placas, elija la que necesite en la lista «Dispositivo». Campos:
«Nueva dirección» («Новый адрес»): la dirección de la placa en el bus, de 1 a 10. Una dirección impar convierte la placa en agitador, una par en bomba; no puede elegirse una dirección ya ocupada. La nueva dirección se aplica tras reiniciar la Nano.
«Modo» («Режим»): «Agitador» («Мешалка», solo dirección impar), «Bomba» («Насос») o «Llenado» («Наполнение», solo dirección par). La placa trabaja en este modo al pulsar «Iniciar» y con los comandos de Lua y de las aplicaciones.
«Pasos/ml»: el coeficiente de calibración de la bomba; sirve para convertir mililitros y litros por hora en pasos del motor. Se rellena con la calibración (véase más arriba) o a mano. Mientras sea cero, la bomba no puede arrancarse.
«Velocidad del agitador» («Обороты мешалки»), «Trabajo del agitador, s» («Работа мешалки, с»), «Pausa del agitador, s» («Пауза мешалки, с»): los parámetros del agitador para el funcionamiento independiente de la placa; con pausa 0 el agitador funciona de forma continua.
«Caudal de la bomba, ml/h» («Подача насоса, мл/ч») y «Pausa de la bomba, s» («Пауза насоса, с»): para el modo «Bomba» (bombeo continuo); «Volumen de llenado, ml» («Объём наполнения, мл») y «Ritmo de llenado, ml/h» («Скорость наполнения, мл/ч»): para el modo «Llenado».
El botón «Guardar en la Nano» («Сохранить в Nano») escribe los campos en la memoria no volátil de la placa; se conservan tras reiniciar tanto Samovar como la placa.
Ajustes → Bomba («Настройки → Насос»). Si se encuentra una bomba I2C, en la pestaña aparecen dos campos para la rectificación:
«Usar la bomba I2C sobre la sección de pasteurización» («Использовать I2C-насос над ЦП»): la bomba participa en la rectificación si se detectó al arrancar Samovar: durante la extracción de cabezas pasa a ser la bomba principal, y durante el corazón y la preinundación trabaja junto con la bomba local.
«Velocidad de extracción sobre la sección de pasteurización» («Скорость отбора над ЦП»): la velocidad constante de la bomba I2C en las líneas de corazón B y de preinundación C. En la línea de cabezas H se usa la velocidad de la propia línea del programa.
La velocidad en litros por hora de esta bomba se convierte en pasos con «Pasos/ml» de la memoria de la Nano; el campo aparte «Número de pasos de la bomba I2C» («Количество шагов I2C насоса») ya no existe en los ajustes de Samovar.
Aplicaciones móviles y sitio web
Las aplicaciones de Samovar y la página de control de Samovar en el sitio samovar-tool.ru reciben cada cinco segundos la lista de placas y su estado (disponibilidad, modo, velocidad, cantidad restante, máscara de relés) y permiten arrancar y detener una placa y conmutar los relés. Los ajustes de la Nano y la calibración no están disponibles desde las aplicaciones, solo desde la interfaz web de Samovar. Si un comando se rechaza, el motivo llega en los mensajes de Samovar en la forma «Blynk V37 a=N: código» («Blynk V37 a=N: код»).
Esquema y conexión
Esquema de conexión
Asignación de pines para conectar periféricos:
// Pins for I2C Master - connecting the screen and potentially other devices
// SDA_PIN 0 //A0
// SCL_PIN 2 //D2
// Pins for I2C Slave - communication with Samovar
// SDA_PIN A4
// SCL_PIN A5
// Pins for the stepper motor
#define STEPPER_STEP 3
#define STEPPER_DIR 4
#define STEPPER_EN 5
//Pins for the relays
#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
// Pins for the encoder
#define ENC_CLK 7 //S2
#define ENC_DT 8 //S1
#define ENC_SW 9 //KEY
Consejo.
Si piensa usar el expansor como dispositivo aparte en su propia caja, conviene conectarlo a Samovar con un cable USB A-B (ordenador - impresora). La alimentación del módulo (+/- 5 voltios) y las dos señales del bus I2C se toman directamente de la pantalla de Samovar. En la caja de Samovar se monta un conector USB-B.
En la caja del expansor se monta un conector USB-A.
Así, al conectarlo a Samovar, la Arduino Nano recibe a la vez la alimentación y el bus I2C. Cuando se usa como dispositivo independiente, en lugar de Samovar se usa una fuente de alimentación aparte, por ejemplo un cargador de teléfono.
Si se usa una fuente de alimentación integrada, a su salida se pone un conector USB-B y la alimentación se lleva con el mismo cable USB A-B, lo que evita meter por error +5 voltios en Samovar.
Periféricos.
El bloque de relés se usa a 5 voltios, preferiblemente con control por optoacoplador. También pueden usarse relés de 12 voltios, conectados igual que en Samovar.
Puede usarse cualquier bomba: con motor de corriente continua o de corriente alterna monofásico o trifásico. El motor de la bomba se arranca y se detiene a través de un relé y después de cualquier interruptor de potencia: un contactor o un relé de estado sólido. Para volúmenes pequeños, considere la bomba de arrastre magnético 15RM. Acero inoxidable, silenciosa y con buen caudal.
Para el agitador o la NBK puede usarse cualquier motor paso a paso bipolar, siempre que tenga potencia y par suficientes. Se recomienda un Nema 23 con el driver adecuado.
El sketch actual para la Arduino Nano que controla el motor paso a paso y los cuatro relés puede descargarse desde este enlace . Necesita la versión con el protocolo v3; al pasar desde el protocolo v2 la memoria de la placa se inicializa de nuevo: vuelva a comprobar la dirección, el modo y «Pasos/ml». Su finalidad principal es usarse junto con Samovar como módulo de expansión. Debe usar las bibliotecas que se entregan con Samovar.
Control desde Lua
Las funciones están disponibles cuando el firmware se compila con Lua (consulte
Sobre el lenguaje de scripts Lua). Las funciones del agitador trabajan con el agitador de trabajo, y las de la bomba con la bomba de trabajo (las placas con la dirección más baja, véase más arriba). Todas las funciones de arranque devuelven 1 si la placa aceptó el comando y 0 si no, también cuando la placa necesaria no está en el bus.
set_stepper_by_time(spd, direction, time) – arrancar el agitador: spd – velocidad en pasos por segundo, direction – sentido 0 o 1, time – tiempo de trabajo en segundos. Con time = 0 el agitador gira de forma continua hasta un comando de parada; spd = 0 detiene el agitador.
set_stepper_target(spd, direction, target) – arrancar la bomba en modo de llenado: spd – velocidad en pasos por segundo (hasta 18000), direction – sentido 0 o 1, target – número de pasos. Con spd = 0 o target = 0 la bomba se detiene. La función no controla el motor paso a paso estándar de Samovar.
get_stepper_status() – cuántos pasos le quedan por dar a la bomba (0 – está detenida o no hay placa).
i2cpump_start(rate, volume) – bombear volume ml a rate l/h, convertidos en pasos con «Pasos/ml» de la memoria de la Nano. Devuelve 0 si la placa de bomba no está conectada, no está calibrada o los argumentos no son válidos.
i2cpump_stop() – detener la bomba.
i2cpump_get_speed() – velocidad actual de la bomba en pasos por segundo.
i2cpump_get_target_ml() – el volumen fijado por el último comando i2cpump_start, ml.
i2cpump_get_remaining_ml() – cuánto queda por bombear, ml.
i2cpump_get_running() – 1 si la bomba está en marcha; si no, 0.
set_mixer_pump_target(Val) – encender (1) o apagar (0) el primer relé, la bomba del mosto.
get_mixer_pump_status() – estado del primer relé: 0 o 1; 255 si no hay placa con relés.
set_i2c_rele_state(Num, Val) – encender (1) o apagar (0) el relé Num (1–4). Devuelve 1 si el comando se ejecutó.
get_i2c_rele_state(Num) – estado del relé Num (1–4): 0 o 1; 255 si no hay placa con relés.
check_I2C_device(Addr) – comprobar si el dispositivo con dirección Addr responde en el bus I2C; devuelve la dirección si el dispositivo se encuentra.
Atención. Los relés los atiende el agitador de trabajo si ha declarado soporte de relés; si no, la bomba de trabajo. Las funciones que cambian el estado no se ejecutan en el modo de simulación de Lua ni mientras Samovar cambia de modo.
Ejemplo: set_stepper_by_time(800, 0, 0) – girar el agitador de forma continua a 800 pasos por segundo; set_stepper_by_time(0, 0, 0) – detenerlo. i2cpump_start(6, 250) – bombear 250 ml a 6 l/h; mientras i2cpump_get_running() == 1, la bomba está en marcha.