Erweiterung der Möglichkeiten von Samovar durch die zusätzliche I2CStepper-Platine mit einem Schrittmotor und vier Relais.
Das Modul kann als eigenständiges Gerät verwendet werden. Es lässt sich allein über das Menü auf einem 16x2-LCD-Display und einen Drehgeber steuern oder im Verbund mit Samovar.
Der Erweiterungsbaustein wird über den I2C-Bus mit vier Leitungen an Samovar angeschlossen (wie das LCD-Display). Samovar erkennt, dass der Erweiterungsbaustein angeschlossen ist, und kann ihn steuern.
Samovar 7.00: Die Firmware arbeitet mit Platinen mit Protokollversion 3. Am Bus können bis zu zehn Platinen mit I2C-Adressen von 1 bis 10 hängen: Platinen mit ungerader Adresse (1, 3, 5…) sind Rührwerke, Platinen mit gerader Adresse (2, 4, 6…) sind Pumpen (Dauerförderung oder Abfüllen eines eingestellten Volumens). Jede Platine teilt Samovar mit, was sie kann: Rührwerk, Förderung, Abfüllen, Relais, externer Sensor. Die Platinen werden beim Start von Samovar gesucht und danach im Hintergrund abgefragt; wird mindestens eine gefunden, erscheint auf der Hauptseite jedes Modus die Schaltfläche „I2CStepper“, die die Steuerseite der Platinen öffnet. Eine Platine, die einmal am Bus geantwortet hat, bleibt bis zum Neustart von Samovar in der Liste; bricht die Verbindung zu ihr ab, wird sie als nicht verfügbar markiert.
Im Betrieb (Rektifikationsprogramm, Lua, Modi Bier und Käse) verwendet Samovar ein Arbeitsrührwerk und eine Arbeitspumpe – die Platinen mit der niedrigsten Adresse unter den gefundenen. Sie werden beim Start des Prozesses festgelegt und ändern sich bis zu seinem Ende nicht, auch wenn während des Laufs eine Platine mit niedrigerer Adresse hinzukommt.
Im Bier-Modus schaltet das erste Relais die Würzeumwälzpumpe ein und aus (zum Beispiel für die Umwälzung der Würze im Sudkessel). Die übrigen Relais nutzt die Firmware nicht – Sie entscheiden, wofür sie dienen, und können sie aus Lua schalten. Die Relais werden vom Arbeitsrührwerk bedient, wenn es Relaisunterstützung gemeldet hat, sonst von der Arbeitspumpe.
Die Einstellungen der Platinen selbst (Modus, Geschwindigkeit, Lauf- und Pausenzeit des Rührwerks, Pumpenförderung, Abfüllvolumen und -geschwindigkeit, Schritte pro Milliliter) werden im Speicher des Nano abgelegt und auf der Registerkarte Einstellungen → I2CStepper («Настройки → I2CStepper») bearbeitet, siehe unten. Die Seite „I2CStepper“ dient nur zum manuellen Starten und Stoppen.
Die Seite „I2CStepper“
Die Seite „I2CStepper“: Die Pumpenplatine mit Adresse 2 ist gewählt
 Gerät («Устройство»)
Die Liste der am Bus gefundenen Platinen; wird bei zwei oder mehr Platinen angezeigt. Rührwerke haben eine ungerade Adresse, Pumpen eine gerade.
|
 Zustand der Platine
„Läuft“ («Работает») oder „Gestoppt“ («Остановлен»); darunter die aktuelle Pumpengeschwindigkeit und das Restvolumen.
|
 Geschwindigkeit und Volumen
Pumpengeschwindigkeit in Litern pro Stunde und Volumen in Millilitern für die Schaltfläche „Starten“ («Запустить»). „Stopp“ («Стоп») hält die Pumpe an.
|
 Relais 1
Wird angezeigt, wenn die Platine Relais unterstützt; schaltet das erste Relais der Platine.
|
 Kalibrierung der externen Pumpe
Nur für Pumpenplatinen: öffnet die Kalibrierseite für „Schritte/ml“ («Шагов/мл») der gewählten Platine.
|
Werden zwei oder mehr Platinen gefunden, erscheint oben die Liste „Gerät“ («Устройство») – wählen Sie darin die Platine, mit der Sie arbeiten: „Rührwerk, Adresse N“ («Мешалка, адрес N») oder „Pumpe, Adresse N“ («Насос, адрес N»). Bei nur einer Platine ist die Liste ausgeblendet. Ist die gewählte Platine nicht verfügbar, wird statt des Bedienfelds die Meldung „Der gewählte I2CStepper ist nicht verfügbar“ («Выбранный I2CStepper недоступен») angezeigt – eine andere Platine wird nicht automatisch eingesetzt, Sie müssen sie in der Liste wählen.
Für die gewählte Platine zeigt die Seite Typ und Adresse, den Zustand („Läuft“ («Работает») oder „Gestoppt“ («Остановлен»)), die aktuelle Geschwindigkeit in Schritten pro Sekunde und wie viele Schritte bis zum Halt noch übrig sind. Die Daten werden alle zwei Sekunden aktualisiert.
Steuerung. „Geschwindigkeit“ («Скорость») ist die Motorgeschwindigkeit in Schritten pro Sekunde (von 1 bis 18000), „Ziel, Schritte“ («Цель, шагов») ist die Zahl der auszuführenden Schritte. Die Schaltfläche „Starten“ («Запустить») sendet diese beiden Werte an die Platine und startet den Motor in dem Modus, der im Speicher des Nano hinterlegt ist: beim Rührwerk ist das Drehen, bei der Pumpe Abfüllen mit der angegebenen Schrittzahl. Bei einer Pumpe ist es einfacher, die Schrittzahl aus dem Volumen zu berechnen: Multiplizieren Sie die benötigten Milliliter mit „Schritte/ml“ («Шагов/мл») aus den Nano-Einstellungen. „Stopp“ («Стоп») hält den Motor an. Der Start ist nicht möglich, wenn die Pumpe nicht kalibriert ist („Schritte/ml“ ist null) oder Samovar gerade den Modus wechselt – dann wird eine Fehlermeldung angezeigt.
Relais. Hat die Platine Relaisunterstützung gemeldet, wird die Schaltfläche „Relais 1 einschalten“ («Включить реле 1») / „Relais 1 ausschalten“ («Выключить реле 1») angezeigt – sie schaltet das erste Relais der Platine (im Bier-Modus ist das die Würzepumpe). Die Relais 2–4 lassen sich von dieser Seite nicht schalten, nur aus Lua.
Kalibrierung der externen Pumpe. Die Schaltfläche gibt es nur für Pumpenplatinen, die Abfüllen unterstützen. Sie öffnet die Kalibrierseite für die gewählte Platine: Stellen Sie einen Messbehälter bereit, stellen Sie die Motorgeschwindigkeit ein und drücken Sie „Kalibrierung starten“ («Начать калибровку») – die Pumpe beginnt zu fördern. Sobald genau 100 ml aufgefangen sind, drücken Sie „100 ml festhalten“ («Зафиксировать 100 мл»): Samovar berechnet „Schritte/ml“ und schreibt den Wert in den Speicher des Nano. Wiederholen Sie die Kalibrierung nach einer Änderung der Mikroschritte des Treibers, des Motors, des Pumpenkopfs oder des Schlauchs.
Einstellungen von Samovar
Einstellungen → I2CStepper. Die Registerkarte „Einstellungen Nano I2CStepper“ («Настройки Nano I2CStepper») zeigt die Einstellungen, die im Speicher der Platine selbst liegen. Die Schaltfläche „I2C-Geräte neu suchen“ («Пересканировать I2C-устройства») durchsucht den Bus erneut nach Platinen (zum Beispiel nach dem Anschließen einer neuen). Bei mehreren Platinen wählen Sie die gewünschte in der Liste „Gerät“. Felder:
„Neue Adresse“ («Новый адрес») – die Adresse der Platine am Bus, von 1 bis 10. Eine ungerade Adresse macht die Platine zum Rührwerk, eine gerade zur Pumpe; eine bereits belegte Adresse kann nicht gewählt werden. Die neue Adresse gilt nach dem Neustart des Nano.
„Modus“ («Режим») – „Rührwerk“ («Мешалка», nur ungerade Adresse), „Pumpe“ («Насос») oder „Abfüllen“ («Наполнение», nur gerade Adresse). In diesem Modus arbeitet die Platine beim Drücken von „Starten“ und auf Befehle aus Lua und den Apps.
„Schritte/ml“ – der Kalibrierkoeffizient der Pumpe: Damit werden Milliliter und Liter pro Stunde in Motorschritte umgerechnet. Er wird durch die Kalibrierung (siehe oben) oder von Hand eingetragen. Solange er null ist, lässt sich die Pumpe nicht starten.
„Drehzahl des Rührwerks“ («Обороты мешалки»), „Laufzeit des Rührwerks, s“ («Работа мешалки, с»), „Pause des Rührwerks, s“ («Пауза мешалки, с») – die Rührwerksparameter für den eigenständigen Betrieb der Platine; bei einer Pause von 0 läuft das Rührwerk ununterbrochen.
„Pumpenförderung, ml/h“ («Подача насоса, мл/ч») und „Pumpenpause, s“ («Пауза насоса, с») – für den Modus „Pumpe“ (Dauerförderung); „Abfüllvolumen, ml“ («Объём наполнения, мл») und „Abfüllgeschwindigkeit, ml/h“ («Скорость наполнения, мл/ч») – für den Modus „Abfüllen“.
Die Schaltfläche „In Nano speichern“ («Сохранить в Nano») schreibt die Felder in den nichtflüchtigen Speicher der Platine; sie bleiben nach einem Neustart von Samovar wie auch der Platine erhalten.
Einstellungen → Pumpe («Настройки → Насос»). Wird eine I2C-Pumpe gefunden, erscheinen auf der Registerkarte zwei Felder für die Rektifikation:
„I2C-Pumpe über der Pasteurisierungssektion verwenden“ («Использовать I2C-насос над ЦП») – die Pumpe nimmt an der Rektifikation teil, wenn sie beim Start von Samovar erkannt wurde: Bei der Vorlaufabnahme wird sie zur Hauptpumpe, beim Mittellauf und beim Vorfluten arbeitet sie zusammen mit der lokalen Pumpe.
„Abnahmegeschwindigkeit über der Pasteurisierungssektion“ («Скорость отбора над ЦП») – die konstante Geschwindigkeit der I2C-Pumpe auf Mittellaufzeilen B und Vorflutzeilen C. Auf der Vorlaufzeile H wird die Geschwindigkeit der Programmzeile selbst verwendet.
Die Geschwindigkeit in Litern pro Stunde wird für diese Pumpe über „Schritte/ml“ aus dem Speicher des Nano in Schritte umgerechnet; das eigene Feld „Schrittzahl der I2C-Pumpe“ («Количество шагов I2C насоса») gibt es in den Einstellungen von Samovar nicht mehr.
Mobile Apps und Website
Die Samovar-Apps und die Samovar-Steuerseite auf der Website samovar-tool.ru erhalten alle fünf Sekunden die Liste der Platinen und ihren Zustand (Verfügbarkeit, Modus, Geschwindigkeit, Restmenge, Relaismaske) und ermöglichen es, eine Platine zu starten und zu stoppen und die Relais zu schalten. Die Nano-Einstellungen und die Kalibrierung sind über die Apps nicht verfügbar – nur über die Weboberfläche von Samovar. Wird ein Befehl abgelehnt, kommt der Grund in den Meldungen von Samovar in der Form „Blynk V37 a=N: Code“ («Blynk V37 a=N: код») an.
Schaltplan und Anschluss
Anschlussplan
Pinbelegung für den Anschluss der Peripherie:
// Pins für I2C Master - Anschluss des Displays und eventuell weiterer Geräte
// SDA_PIN 0 //A0
// SCL_PIN 2 //D2
// Pins für I2C Slave - Verbindung mit Samovar
// SDA_PIN A4
// SCL_PIN A5
// Pins für den Schrittmotor
#define STEPPER_STEP 3
#define STEPPER_DIR 4
#define STEPPER_EN 5
//Pins für die Relais
#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 für den Drehgeber
#define ENC_CLK 7 //S2
#define ENC_DT 8 //S1
#define ENC_SW 9 //KEY
Tipp.
Wenn Sie den Erweiterungsbaustein als eigenes Gerät in einem eigenen Gehäuse nutzen wollen, ist es sinnvoll, ihn mit einem USB-A-B-Kabel (Computer - Drucker) an Samovar anzuschließen. Die Modulversorgung (+/- 5 Volt) und die beiden Signale des I2C-Busses werden direkt am Display von Samovar abgegriffen. Am Gehäuse von Samovar wird eine USB-B-Buchse eingebaut.
Am Gehäuse des Erweiterungsbausteins wird eine USB-A-Buchse eingebaut.
So erhält der Arduino Nano beim Anschluss an Samovar gleichzeitig Versorgung und I2C-Bus. Beim Einsatz als eigenständiges Gerät wird statt Samovar ein separates Netzteil verwendet, zum Beispiel ein Handy-Ladegerät.
Bei einem eingebauten Netzteil wird an dessen Ausgang eine USB-B-Buchse gesetzt, und die Versorgung erfolgt über dasselbe USB-A-B-Kabel; so ist ausgeschlossen, dass versehentlich +5 Volt in Samovar eingespeist werden.
Peripherie.
Der Relaisblock wird mit 5 Volt betrieben, vorzugsweise mit Optokoppler-Ansteuerung. Sie können auch 12-Volt-Relais verwenden, verdrahtet wie bei Samovar.
Es kann jede Pumpe verwendet werden: mit Gleichstrommotor oder mit Wechselstrommotor, ein- oder dreiphasig. Der Pumpenmotor wird über ein Relais und dann über einen beliebigen Leistungsschalter gestartet und gestoppt: ein Schütz oder ein Halbleiterrelais. Für kleine Mengen kommt die Magnetkupplungspumpe 15RM in Frage. Edelstahl, leise, mit guter Förderleistung.
Für das Rührwerk oder die NBK kann jeder bipolare Schrittmotor verwendet werden, sofern Leistung und Drehmoment ausreichen. Empfohlen wird ein Nema 23 mit passendem Treiber.
Den aktuellen Sketch für den Arduino Nano, der den Schrittmotor und die vier Relais steuert, können Sie über diesen Link herunterladen. Sie brauchen die Version mit Protokoll v3; beim Wechsel von Protokoll v2 wird der Speicher der Platine neu initialisiert – prüfen Sie Adresse, Modus und „Schritte/ml“ erneut. Hauptzweck ist der Einsatz zusammen mit Samovar als Erweiterungsmodul. Verwenden Sie unbedingt die mit Samovar gelieferten Bibliotheken.
Steuerung aus Lua
Die Funktionen stehen zur Verfügung, wenn die Firmware mit Lua gebaut ist (siehe
Über die Skriptsprache Lua). Die Rührwerksfunktionen arbeiten mit dem Arbeitsrührwerk, die Pumpenfunktionen mit der Arbeitspumpe (die Platinen mit der niedrigsten Adresse, siehe oben). Alle Startfunktionen geben 1 zurück, wenn die Platine den Befehl angenommen hat, und 0, wenn nicht – auch dann, wenn die benötigte Platine nicht am Bus ist.
set_stepper_by_time(spd, direction, time) – Rührwerk starten: spd – Geschwindigkeit in Schritten pro Sekunde, direction – Richtung 0 oder 1, time – Laufzeit in Sekunden. Bei time = 0 dreht sich das Rührwerk ununterbrochen bis zu einem Stoppbefehl, spd = 0 stoppt das Rührwerk.
set_stepper_target(spd, direction, target) – Pumpe im Abfüllmodus starten: spd – Geschwindigkeit in Schritten pro Sekunde (bis 18000), direction – Richtung 0 oder 1, target – Schrittzahl. Bei spd = 0 oder target = 0 stoppt die Pumpe. Die Funktion steuert nicht den Standard-Schrittmotor von Samovar.
get_stepper_status() – wie viele Schritte die Pumpe noch machen muss (0 – sie steht oder es gibt keine Platine).
i2cpump_start(rate, volume) – volume ml mit rate l/h fördern, umgerechnet in Schritte über „Schritte/ml“ aus dem Speicher des Nano. Gibt 0 zurück, wenn die Pumpenplatine nicht angeschlossen oder nicht kalibriert ist oder die Argumente ungültig sind.
i2cpump_stop() – Pumpe stoppen.
i2cpump_get_speed() – aktuelle Pumpengeschwindigkeit in Schritten pro Sekunde.
i2cpump_get_target_ml() – das mit dem letzten Befehl i2cpump_start eingestellte Volumen, ml.
i2cpump_get_remaining_ml() – wie viel noch zu fördern ist, ml.
i2cpump_get_running() – 1, wenn die Pumpe läuft, sonst 0.
set_mixer_pump_target(Val) – das erste Relais – die Würzepumpe – einschalten (1) oder ausschalten (0).
get_mixer_pump_status() – Zustand des ersten Relais: 0 oder 1; 255, wenn es keine Platine mit Relais gibt.
set_i2c_rele_state(Num, Val) – Relais Num (1–4) einschalten (1) oder ausschalten (0). Gibt 1 zurück, wenn der Befehl ausgeführt wurde.
get_i2c_rele_state(Num) – Zustand des Relais Num (1–4): 0 oder 1; 255, wenn es keine Platine mit Relais gibt.
check_I2C_device(Addr) – prüfen, ob das Gerät mit der Adresse Addr am I2C-Bus antwortet; gibt die Adresse zurück, wenn das Gerät gefunden wurde.
Achtung. Die Relais werden vom Arbeitsrührwerk bedient, wenn es Relaisunterstützung gemeldet hat, sonst von der Arbeitspumpe. Funktionen, die den Zustand ändern, werden im Lua-Simulationsmodus und während Samovar den Modus wechselt nicht ausgeführt.
Beispiel: set_stepper_by_time(800, 0, 0) – Rührwerk ununterbrochen mit 800 Schritten pro Sekunde drehen; set_stepper_by_time(0, 0, 0) – es stoppen. i2cpump_start(6, 250) – 250 ml mit 6 l/h fördern; solange i2cpump_get_running() == 1 ist, läuft die Pumpe.