Automatizare pentru fabrica de bere BeerDuino bazată pe arduino mega. Sisteme automate bazate pe microcontroler Arduino

Prieteni, am nevoie de ajutor ca bere acasă. Din momentul in care vrei sa faci termometru inteligent, a trecut mult timp și a apărut o nouă dorință - de a construi o fabrică de bere automatizată. Pentru a-l automatiza, este necesară o unitate de control. S-a decis să se renunțe la utilizarea regulatoarelor PID achiziționate pentru a controla elementul de încălzire, deoarece Există un Arduino, un releu SSR pentru acesta, un afișaj cu 4 x 20 de linii și o placă serială pentru transmiterea informațiilor pe un singur fir, fără a număra masa și puterea.
Controlerul meu Arduino, folosesc proiectul lui Rob australian, proiectul este conceput pentru Arduino Duemilanove ATmega328 - www.arduino.cc/cgi-bin/yabb2/YaBB.pl
și direct proiectul în sine -
Berăria mea va funcționa după un principiu puțin diferit, nu ca al lui Rob, mă bazez pe Spidel Braumeister, cum funcționează este clar din aceste videoclipuri: http://www.youtube.com/watch?v=x-OBE4tJ-j8&feature= player_profilepage
Dar, din păcate, nu sunt niciodată programator, știu cum să lipiz și să o fac conform instrucțiunilor. Acum, dacă ai refăcu programul lui Rob, ar fi perfect dispozitiv de control. Am asamblat controlerul și l-am testat, dar din anumite motive senzorii termici DS nu sunt recunoscuți. Există o mulțime de lucruri inutile în acest proiect pentru mine, pentru că... Nu vreau să construiesc un sistem HERMS ca al autorului, astfel încât să puteți elimina toate cele inutile din program. Toată lumea actuatoare controlat de relee cu stare solidă. Am 2 bucati, pentru elementul de incalzire si pompa. Folosesc un element de incalzire achizitionat de pe Amazon, densitate mica 4,5 kW. Nimic nu se lipește de el și chiar îl poți porni în aer și nu se va arde. Ceea ce este interesant este că afișajul este conectat printr-o placă de serie, l-am asamblat dintr-un kit achiziționat de pe eBay. Sunt folosite doar 3 fire, descarcând astfel porturile Arduino. Ce este necesar: controlul PID al elementului de încălzire pentru precizie și comoditate, există o bibliotecă gata făcută pentru Arduino, utilizată pe scară largă în proiectul www.brewtroller.com/wiki/doku.php, de asemenea, puteți împrumuta multe idei de acolo , dar proiectul este supraîncărcat cu funcții și este, de asemenea, adaptat pentru HERMS și RIMS americane. Programul ar trebui să aibă 3 moduri de funcționare: spălare CIP (încălzirea apei până la 70g (poate fi schimbată în setări) și funcționarea simultană a pompei), modul AUTO (când sunt procesați toți pașii prevăzuți în modul de programare, puteți întrerupeți și comutați forțat la pasul următor), modul MANUAL (B modul manual controlăm pur și simplu pornirea/oprirea elementului de încălzire, pompei și Ieșire AUX, este indicată temperatura.), programare AUTO (Mod Auto - încălzire apă 70g, pauză (pentru umplere, reglabilă), setare pauze de temperatură (trebuie să fie 4 pauze, cu rezervă, acid, proteine, zaharificare), cu funcționare simultană a pompei, pauză mash out - configurat cu funcționarea simultană a pompei, doar funcționarea pompei, așa-numitul mod whirlpool, când mustul se învârte într-un curent și toată turbiditatea se stabilește în centru și pomparea cu funcționare simultană al AUX și al celui de al doilea senzor de temperatură, la acesta va fi conectat un compresor de acvariu cu un aerator cu flux, Mustul curge printr-un răcitor-răcitor cu flux.
De fapt, sarcina nu este mare, dar sunt umanist, iar programarea pur și simplu nu vine ușor.

Pe în acest moment, controlerul arată astfel:

În schimb, promit să devin un mentor personal și un profesor în fabricarea berii pentru oricine este interesat! :)

UDP! Subiect pe Habré!

În 2014, am dat peste un videoclip cu un bărbat care făcea bere din concentrat de must de bere. Am fost entuziasmat de ideea de a produce bere și apoi a început...
Prepararea berii din conserve a devenit neinteresantă pentru mine după a 2-a oară și am decis să trec la toate cerealele. Odată am preparat bere pe gaz și mi-am dat seama că aceasta nu era metoda mea. Am decis să o fac automat. Serile au devenit mai interesante. M-am implicat atât de mult în programare încât am codificat până la 2-3 dimineața. Erau necesare teste conditii reale. În pubele am dezgropat un cazan și un pahar tăiat.

Și cu asta am ajuns

Acum vă voi spune cum să faceți o astfel de automatizare.
Pentru a începe, vom avea nevoie de următoarele detalii. Le-am cumparat din China.
ssd1289 sau ili9341.
Releu cu stare solidă pentru controlul elementului de încălzire (sau schema circuitului)
Releu cu stare solidă pentru controlul pompei (pentru pompa pornită curent alternativ) sau (DC)
Senzor termic sau sau
Alimentare 7,5-9V 1A. De exemplu
Conectori pentru conectarea unui senzor de temperatură și a unei pompe și
(Mai mult )
(buzzer)
Rezistor de 4,7 kOhm

Circuit de joasă tensiune

Circuitul de alimentare. Atenție. Dacă nu ești sigur, ai încredere în profesioniști.

Luăm secțiunea transversală a firului în funcție de puterea totală a pompei și a elementului de încălzire. Un element de încălzire solid necesită un radiator deoarece... Nu se încălzește prea mult. Le punem totul într-o cutie. Încărcăm firmware-ul, îl configuram și preparăm bere.

(instrucțiuni în interior)

Dar funcții de bază nu am avut destule. Și am decis să pornesc wifi. Am cumpărat un modul ESP8266 de pe Aliexpress. În același timp, am comandat modulul pentru că... Băieții de pe forum chiar au cerut să o implementeze în proiect (puteți face asta fără el). Și conectat conform următoarei diagrame

Pentru mâncare modul wifi avem nevoie de o sursă de alimentare de 5V. Nu poți folosi arduino. Puteți utiliza o sursă de alimentare separată sau puteți converti 9V în 5V. Pentru a face acest lucru, puteți asambla un circuit simplu cu un stabilizator de tensiune sau puteți cumpăra unul gata făcut de la chinezi. De exemplu (există o mulțime de alte opțiuni).

Următorul pas este să flashăm modulul nostru cu firmware-ul NodeMCU. Descărcați. Hai să lansăm. Faceți clic pe Start și așteptați ca firmware-ul să termine încărcarea. ai intrebat? Grozav. Acum încărcăm scriptul. Pentru asta avem nevoie. Desigur, există și alte programe precum . Dar nu i-am putut face să lucreze cu modulul meu. În ESPlorer creăm fișier nou init.lua cu următorul conținut:

Ne schimbam nume wifi rețele și parola pentru a ta. Setați viteza la 9600. Apăsați butonul „Deschidere” (dacă nu se conectează, apăsând butoanele de resetare pe modul). Și faceți clic pe „Salvați în ESP”. După descărcarea scriptului, modulul ar trebui să se conecteze la router. Puteți verifica acest lucru conectându-vă la router și uitându-vă la clienții DHCP. Dacă modulul tău nu este vizibil acolo, atunci ceva a mers prost.

Interfața web conține următoarele funcții.
1. Monitorizarea procesului. Puteți monitoriza temperatura, starea pompei, performanța de piure și preparare. Interfața web este echipată cu o alarmă sonoră.
2. Încărcați rețetele în memoria controlerului și pe o unitate flash.
3. Construirea unui grafic global al întregului proces de gătit.






Conectați-vă la interfața web

Automatizare în societatea modernămasura necesara, pentru că în era digitală este extrem de important să excludem factor umanîn diverse industrii pentru standardizarea și îmbunătățirea calității produselor. Există, de asemenea, zone în care oamenii pur și simplu nu pot face ceea ce sunt capabili roboții, de exemplu, producția de nanomateriale și microcircuite.

Cu toate acestea, automatizarea nu ajută doar la producție, dar poate fi utilă și pentru omul obișnuit. De exemplu, automatizarea unei fabrici de bere care utilizează Arduino poate simplifica semnificativ procesul de producere a unui produs. Să ne dăm seama cum poate ajuta automatizarea pentru rectificare pe Arduino și alte lucruri și să ne uităm la exemple.

Principalele avantaje ale sistemelor automatizate bazate pe microcontrolerul Arduino

Nimeni nu-ți interzice să dormi comision propriuși programați-l singur folosind limbaje de nivel scăzut. Cu toate acestea, automatizarea folosind Arduino și microcontrolere gata făcute va facilita foarte mult întregul proces și va economisi timp. La urma urmei, este mult mai ușor să cumperi un produs gata făcut cu un set de biblioteci și să-l adaptezi nevoilor tale. Iar automatizarea la prețuri accesibile pe Arduino mega 2560 poate fi utilă în multe domenii ale vieții, de la comutatoare vocale la casă inteligentăși până la zăvoare electrice cu detector de mișcare. Principalele avantaje pentru care automatizarea Arduino este renumită sunt:

  1. Barieră scăzută la intrare. Nu este nevoie să obțineți o educație de inginer, este suficient să vizionați câteva videoclipuri de instruire și să aveți o bază în programare.
  2. Un număr mare de biblioteci deja pregătite. Arduino este folosit în întreaga CSI de mulți pasionați de robotică, până în punctul în care producția de diverse electronice devine hobby-ul lor. În consecință, comunitatea de utilizatori online este extrem de activă, postează un număr mare de spații libere și este gata să vă ajute să rezolvați orice problemă. Calitatea bibliotecilor suferă din cauza pragului scăzut de intrare, dar nimeni nu vă interzice să vă creați propria este suficient să studiați semantica limbajului C++ sau să folosiți traducători gata făcute;
  3. Un număr mare de periferice. Nu contează dacă aveți nevoie de automatizare pentru seră bazată pe Arduino sau de un senzor de lumină, veți găsi orice module, inclusiv senzori de sunet și recunoaștere de voce. Da, unele plăci costă mulți bani, dar poți găsi oricând analogi ieftini, De exemplu, modul wi-fi din producători terți esp8269, care costă de 10 ori mai puțin decât cel oficial.
  4. O mulțime de informații. Orice problemă cu care te confrunți a fost deja confruntă de altcineva și probabil vei găsi o soluție pe Google. Există și literatură completă pe care o puteți consulta.

Cu toate acestea, să nu credeți că Arduino nu are defecte. Placa este renumită pentru performanța sa scăzută. În special sarcini complexe iar la cantitati mari Timpul de răspuns al codului poate ajunge la 1 secundă, ceea ce este inacceptabil pentru microcontrolere. Memoria flash a majorității modulelor nu depășește 1 MB, ceea ce nu este suficient pentru a crea rețele neuronale sau a utiliza fișiere media. Desigur, puteți conecta un card de memorie auxiliar, dar acest lucru crește și timpul de răspuns și ia resurse suplimentare pentru alimentația ei și se face într-un mod semi-artisanal.

Cu toate acestea, simplu sisteme automatizate, de exemplu, pentru fabricarea berii sau sere, nu necesită nici măcar o fracțiune din resursele pe care consiliul le poate oferi. În consecință, majoritatea utilizatorilor vor găsi aceste deficiențe lipsite de sens. Dacă decideți să vă asamblați propria imprimantă 3-D sau un design mai complex, ar trebui să aruncați o privire mai atentă asupra analogilor. Dar bariera de intrare pentru concurenții lui Arduino va fi mult mai mare.

Un exemplu de automatizare a procesului bazat pe microcontrolerul Arduino

Cel mai simplu exemplu de automatizare a proceselor poate fi o seră folosind Arduino. Pentru a crea orice sistem, merită să definiți clar sarcinile pe care trebuie să le îndeplinească. Folosind o seră ca exemplu, aceasta ar fi:

  1. Crearea unui climat deosebit.
  2. Pornirea și oprirea în timp util a luminii.
  3. Udarea în timp util a plantelor și menținerea umidității aerului la același nivel.

Pe baza acestor sarcini, puteți observa imediat ce va trebui să cumpărați pentru placa principală:

  1. Senzor de temperatura. Se va asigura ca aerul sa nu se incalzeasca sau sa se raceasca, fiind in limitele prescrise de program. Dacă temperatura se schimbă, placa va porni aparatul de aer condiționat sau bateriile electronice.
  2. Senzor de lumină. Desigur, te poți limita soluție softwareși cumpărați lămpi scumpe cu imitație lumina zilei. Dar dacă doriți să creați o seră cu drepturi depline, atunci va fi mult mai convenabil să instalați un tavan automat, care va fi controlat de Arduino.
  3. Senzor de umiditate. Aici totul este la fel ca și cu temperatura, conform scenariului prescris, placa va porni pulverizatoarele și umidificatoarele, dacă este necesar.

Când achiziționați toate modulele necesare, nu rămâne decât să le programați. La urma urmei, fără cod, acestea sunt doar bucăți de hardware care nu sunt capabile de nimic.

Programarea microcontrolerelor Arduino pentru automatizarea proceselor. Exemplu

Ca și în punctul anterior, pentru programare este important să împărțiți sarcina în subpuncte separate și să le executați secvenţial. Programarea Arduino are loc datorită comenzilor din interfața AT și AT+, folosind biblioteci pregătite. În consecință, toate scripturile sunt scrise într-un mediu special în C++ și, înainte de a face orice, dedică timp studierii semanticii sale. Pe lângă performanţă funcții simple, sistemul este, de asemenea, capabil să stocheze scripturi în memoria flash, care este ceea ce avem nevoie în acest exemplu.

Nu uitați că informațiile de la fiecare senzor vin în timp real și ca variabile, dar puteți limita timpul de răspuns, deoarece nu este nevoie să cheltuiți resurse și să măsurați fiecare parametru în mod constant. În consecință, setați timpul de pornire și oprire pentru fiecare senzor sau setați timpul de răspuns pentru o anumită perioadă.

Sunt student la o universitate tehnică. Într-o zi, stând într-o cafenea cu un prieten care atunci studia la o facultate de medicină, au decis să deschidă un bar. Au fost multe idei care, în principiu, meritau o oarecare atenție. De exemplu, un ring de dans care schimbă unghiul de înclinare în funcție de stilul de muzică... Dar, alături de toată varietatea de idei, a mai fost și una -

… nu ar trebui să ne producem propria bere?

Câteva săptămâni mai târziu, am fabricat bere folosind ingrediente de la fabrica de bere unde lucra prietenul tatălui meu. Dar multe procese tehnologice au fost încălcate, așa că în loc de bere a ieșit ceva cu un miros nu prea plăcut.

Câțiva ani mai târziu am decis să repet procesul, automatizându-l puțin cu folosind Arduino O.N.U. Și asta s-a întâmplat.

Să începem cu ceea ce ar trebui să facă întreaga configurație.

  • Verificați-vă - totul funcționează, este totul conectat;
  • Curata-te;
  • Pregătiți-vă pentru procesul de preparare a berii;
  • Prepara bere pe podea modul automat;
  • Preparați berea manual;
  • Preparați berea automat (cum ar fi maşină de spălat spala hainele).

Primul punct nu a fost implementat momentan. Până acum nu am nici măcar gânduri despre cum să o implementez.
Nici cel de-al doilea nu este implementat, dar îl voi termina în viitorul apropiat, doar voi aștepta să fie livrate pompele de pe ebay.
Al treilea punct este destul de simplu.

Pregătirea pentru procesul de preparare a berii

Un mesaj de la sistem că este necesar să se toarne apă în cuvă -> programul așteaptă apăsarea tastei OK -> programul trimite arduino o comandă de pornire a releului de stare solidă -> starea solidă releul pornește elementul de încălzire de un kilowatt din cuvă, îl aduce la o temperatură de 37 de grade, trimite o comandă programului că totul este gata pentru gătit. Mentine o temperatura de 37 de grade.

Aș dori să se verifice prezența apei, dar senzorul încă așteaptă să fie trimis de la „frații chinezi”.

Prepararea berii în modul semi-automat

În principiu, o procedură simplă:

Faceți clic pe program de control Butonul „Încălzire”, celelalte butoane de control sunt inactive;
- După încălzire, programul afișează mesajul „Totul este gata, poți găti”;
- Adăugați ingredientele, selectați programul de preparare - devine activ butonul „Brewing Beer”;
- Apăsați butonul „Brewing Beer”, procesul a început;
- În continuare, sistemul va notifica periodic mesaje informative ce să faci și când.

Trebuie să urmați instrucțiunile.

Prepararea berii manual

Acest proces vă permite să setați parametrii de gătit și să îi modificați în timpul ciclului de gătit. Nu am ajuns încă la asta.

Gătit automat

Acesta este un vis. În prezent, nu există componente de implementat. Nu sunt suficiente pompe și senzori de nivel de apă. Nu știu cum să măsoare densitatea mustului, cât de mult alcool este în berea tânără și multe altele. Dar nu disper și mă voi automatiza treptat până când prepararea berii arată așa:

Am aruncat ingredientele în tăvile corespunzătoare, am apăsat butonul și... după o lună și jumătate am primit berea finită.

Aceasta este o scurtă prezentare generală a procesului, acum să trecem la partea tehnică.

Partea tehnică a procesului

După cum sa menționat mai sus, microcontrolerul de control este arduino UNO. La el sunt conectate 2 relee, 2
termometru digital DS18B20.

Arduino comunică cu programul principal prin port com. Deoarece Nu am o plăcuță de identificare în timp real pentru arduino, a trebuit să iau cronometre din visual c#. Nu am experiență în scris programe, așa că dacă cineva are idei sau critici, aș fi onorat. Criticați, rupeți, ca să spunem așa, dacă dintr-o dată nu vă place.

Iată textul programului pe arduino

#include OneWire ds(8); // senzorii de temperatură sunt amplasați pe pinul 8 int reley1 = 13; int reley2 = 12; int reley3 = 11; int reley4 = 10; int reley5 = 7; //activează tens int reley6 = 6; // se încălzește pe mash tun float temp1; float temp2; void setup(void) ( Serial.begin(9600); pinMode(reley1,OUTPUT); pinMode(reley2,OUTPUT); pinMode(reley3,OUTPUT); pinMode(reley4,OUTPUT); pinMode(reley5,OUTPUT); pinMode( reley6, OUTPUT); digitalWrite(reley2,LOW); digitalWrite(reley6,LOW) (serial.disponibil()) i": infuz(); pauză; caz "p": progrev(); pauză; caz "a": avariya (); pauză; caz "v": varka(); pauză; caz "t": pauză; ) ) void varka() ( digitalWrite(reley6, HIGH); while(Serial.read()! ="m") (temperatură(); if (temp1 >= 52.00) digitalWrite(reley6,LOW); else digitalWrite(reley6, HIGH); ) while(Serial.read()!="n") ( //digitalWrite (reley6,HIGH); if(temp1>= 62.00) digitalWrite(reley6,LOW); else digitalWrite(reley6,HIGH); (Serial.read()!="b") ( //digitalWrite (reley6,HIGH); temperature(); if(temp1 >= 75.00) digitalWrite(reley6,LOW);<=69.50) digitalWrite(reley5,HIGH); else digitalWrite(reley5,LOW); } digitalWrite(reley5,LOW); } void progrev() { while (temp1 <=36.00) temperature(); digitalWrite(reley6,HIGH); digitalWrite(reley6,LOW); //while (temperature() >40,0) //întârziere(1000);< 9; i++) { // we need 9 bytes data[i] = ds.read(); } int16_t raw = (data << 8) | data; byte cfg = (data & 0x60); if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms celsius = (float)raw / 16.0; for(i = 0; i<8; i++) { if (addr[i] == zator[i]) gde = true; else { gde = false; break; } } if (gde) { Serial.print("t2 "); //temperatura варочника temp2 = celsius; Serial.print(temp2); Serial.println(); } else { Serial.print("t1 "); //температура затора temp2 = celsius; Serial.print(temp1); } }

Serial.println("s"); ) accident accident())( digitalWrite(reley1,LOW); digitalWrite(reley2,LOW); digitalWrite(reley3,LOW); digitalWrite(reley4,LOW); digitalWrite(reley5,LOW); ) void temperature() (octetul i ; byte prezent = 0 byte zator = (40, 23, 218, 43, 6, 0, 0, 22); , 59, 4, 0, 234 //adresa senzorului de temperatură în rezervorul de infuzare float celsius if (!ds.search(addr)) ( //Serial.println; ."); //Serial.println(); ds.reset_search(); delay(250); // return; ) if (OneWire::crc8(addr, 7) != addr) ( Serial.println("CRC nu este valid!"); // return; ) ds.reset(); ds.select(addr); ds.write(0x44, 1); // începe conversia, cu pornirea parazitului la întârziere finală (840) ; // poate 750ms este suficient, poate nu // s-ar putea să facem un ds.depower() dar resetarea se va ocupa de aceasta = ds.reset(); i = 0; i

Totul ar fi bine, dar din anumite motive al treilea senzor arată în mod constant 85 de grade. Nu pot spune încă de ce. Și este necesar pentru o automatizare suplimentară - menținerea temperaturii în frigider.

Voi descrie pe scurt ce face programul.

Programul este împărțit în subrutine, fiecare dintre acestea fiind activată dacă pe portul com apare un anumit simbol. De exemplu, dacă litera „p” intră în port, modul „Încălzire” este activat. Sau, dacă „a”, atunci subrutina avariya() este apelată și totul este oprit. La apelarea subrutinei temperature(), datele sunt scrise în variabilele globale temp1, temp2. De acolo intră în subrutinele necesare.

În viitor, vor exista subrutine pentru prepararea diferitelor soiuri și chiar luciu de lună.

Acum, referitor la programul principal de control.

Programul principal de control

Este scris în Visual Studio C#.

Cod sursa programului:

folosind System; folosind System.Collections.Generic; folosind System.ComponentModel; folosind System.Data; folosind System.Drawing; folosind System.Linq; folosind System.Text; folosind System.Threading.Tasks; folosind System.Windows.Forms; folosind System.IO.Ports; namespace WindowsFormsApplication1 ( clasă parțială publică Form1: Form ( // String portnumber; SerialPort Port1 = new SerialPort("COM5", 9600); int s=0; public Form1() ( InitializeComponent(); ) /*private const int CP_NOCLOSE_BUTTON = 0x200; suprascrie protejată CreateParams CreateParams ( get ( CreateParams myCp = base.CreateParams; myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON; return myCp; ) )*/ private void Form1_Load, Event(Argject Port sender.1_T) PortName; Port1.Open() //Verificarea echipamentului private void button1_Click(object sender, EventArgs e) ( if (Port1.IsOpen == false) ( try ( //programul poate fi modificat de la podrugomu.com/node); /987 Port1.PortName = etichetă2.Text("Verifică" Port2 = new SerialPort("COM4", 9600) Text = Convert.ToString(); ReadByte()); //verificarea citirilor portului MessageBox.Show("Procesul de verificare hardware a început", "Mesaj de informare"); PortName = label2.Text; Text; //Port1.Open(); Puteți adăuga malț și porni modul de piure"); richTextBox1.Text = richTextBox1.Text + "\n" + "Sfârșitul procesului de preparare a piureului. Т=37 de grade" + " " + DateTime.Now.ToString("HH:mm"); button2.Enabled = true; ) ) private void emergencyDisableToolStripMenuItem_Click(sender object, EventArgs e) ( Port1.WriteLine("a"); MessageBox.Show("Utilizatorul a oprit întregul sistem"); Așteptați 60 de minute") ; richTextBox1.Text = richTextBox1.Text + "\n" + "Modul de fierbere a mash tun este activat" + " " + DateTime.Now.ToString("HH:mm") private void. timer3_Tick(emițător obiect, EventArgs e) ( șir s1 = ""; Port1.ReadLine(); if (s1.Substring(0, 2) == "t1") label5.Text = s1.Substring(4, 5); if (s1.Substring (0, 2) == "t2") label9.Text = s1.Substring(4, 5 s++ if (s == 900) ( Port1.WriteLine("m"); MessageBox. Show("Suprascrie faza la 62 de grade"); richTextBox1.Text = richTextBox1.Text + "\n" + "Etapa de mash la 62 de grade" + " " + DateTime.Now.ToString("HH:mm");

Codul sursă al programului

Programul comunică cu arduino prin portul com. Singurul lucru pe care nu îl pot depăși este că atunci când interogând portul com, programul nu se îngheață în timp ce subrutina este executată. După sfârșitul subrutinei, programul se blochează, dar deocamdată acest lucru nu este critic și chiar un fel de plus. Foolproof - pentru a vă împiedica să apăsați ceva în timpul unei anumite proceduri.

În total, programul poate
- pregatirea echipamentelor pentru gatit;
- bucătar;
- scrieți un jurnal de lucru simplu (foarte util pentru analiza ulterioară a berii);
fierbe bere și piure ton.

Când sosesc pompele și supapele solenoide, le voi automatiza în continuare. Între timp, voi adăuga un program de gătit în fiecare duminică. Vor fi 5 programe în total. Implementarea modului manual își așteaptă și rândul.
După cum se spune,

de continuat...

UPD:

Iată câteva fotografii ale fabricii de bere

Acesta este un digestor. Am două dintre acestea. Un senzor de temperatură DS18B20 într-un cadru etanș este instalat pe lateral.
Multă vreme nu am putut înțelege de ce arduino îngheață periodic, până când mi-am dat seama că totul trebuie împământat, altfel s-ar sparge la carcasă, apoi la carcasa senzorului și la arduino.

Tubul de cupru din interior este pentru filtrarea mustului. Poate fi făcut mai frumos, dar este mai bine să folosiți un fund fals. Din păcate, chinezii nu se grăbesc să-l trimită.

Este prea devreme să vorbim despre rezultat, iată ce s-a întâmplat

Vederea generală a cuvei arată astfel.

Conectori obișnuiți folosiți
pentru conectarea senzorilor de temperatură, conectați la o priză dublă. Este mai convenabil să spălați echipamentul. L-am oprit și l-am dus la baie. L-am spalat, am conectat si totul merge.

Totul a spumat conform programului, nu s-a scurs niciun exces. Și planurile mele imediate sunt să scurg un lot de bere pentru o fermentație ulterioară și să prepar încă una. Rețeta, în principiu, poate fi vizualizată în codul din subrutina varka() a arduino.

Electrovalvele au sosit în sfârșit. Procesul de automatizare continuă.