Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Interesante
  • Sisteme të automatizuara të bazuara në mikrokontrolluesin Arduino. Ngrohja e një shtëpie të vendit duke përdorur arduino me transferimin e të dhënave në internet

Sisteme të automatizuara të bazuara në mikrokontrolluesin Arduino. Ngrohja e një shtëpie të vendit duke përdorur arduino me transferimin e të dhënave në internet

Unë jam student në një universitet teknik. Një ditë, të ulur në një kafene me një mik që atëherë studionte në një universitet mjekësor, ata vendosën të hapnin një bar. Kishte shumë ide që, në parim, meritonin vëmendje. Për shembull, një pistë kërcimi që ndryshon këndin e prirjes në varësi të stilit të muzikës... Por, krahas gjithë larmisë së ideve, kishte edhe një tjetër -

…a nuk duhet ta krijojmë birrën tonë?

Disa javë më vonë, bëra birrë duke përdorur përbërës nga fabrika ku punonte miku i babait tim. Por shumë proceset teknologjike ishin shkelur, ndaj në vend të birrës doli diçka me erë jo shumë të këndshme.

Disa vite më vonë vendosa të përsëris procesin, duke e automatizuar pak me duke përdorur Arduino OKB. Dhe kjo është ajo që ndodhi.

Do të filloj me atë që duhet të bëjë i gjithë konfigurimi.

  • Kontrolloni veten - a funksionon gjithçka, a është gjithçka e lidhur;
  • Pastroni veten;
  • Përgatituni për procesin e birrës;
  • Krijo birrë në dysheme modaliteti automatik;
  • Krijo birrën me dorë;
  • Krijo birrë automatikisht (si Makinë larëse lan rrobat).

Pika e parë në ky moment nuk zbatohet. Deri më tani nuk kam as ndonjë mendim se si ta zbatoj.
E dyta gjithashtu nuk është zbatuar, por do ta përfundoj në një të ardhme të afërt, do të pres vetëm të dorëzohen pompat nga ebay.
Pika e tretë është mjaft e thjeshtë.

Përgatitja për procesin e birrës

Një mesazh nga sistemi që është e nevojshme të derdhet uji në kazan -> programi pret që të shtypet tasti OK -> programi dërgon komanda arduino për të ndezur stafetën e gjendjes së ngurtë -> releja e gjendjes së ngurtë ndez elementin ngrohës një kilovat në tenxhere, e çon në temperaturën 37 gradë, dërgon një komandë në program që gjithçka është gati për gatim. Ruan një temperaturë prej 37 gradë.

Do të doja që të kishte një kontroll për praninë e ujit, por sensori ende pret të dërgohet nga "vëllezërit kinezë".

Pirja e birrës në modalitetin gjysmë automatik

Në parim, një procedurë e thjeshtë:

Klikoni mbi programi i kontrollit Butoni "Ngrohja", butonat e tjerë të kontrollit janë joaktivë;
- Pas ngrohjes, programi shfaq mesazhin "Gjithçka është gati, ju mund të gatuani";
- Shtoni përbërësit, zgjidhni programin e birrës - butoni "Brewing Beer" bëhet aktiv;
- Shtypni butonin “Brewing Beer”, procesi ka filluar;
- Më pas, sistemi do të njoftojë periodikisht mesazhet informativeçfarë të bëni dhe kur.

Ju duhet të ndiqni udhëzimet.

Pirja e birrës me dorë

Ky proces ju lejon të vendosni parametrat e gatimit dhe t'i ndryshoni ato gjatë ciklit të gatimit. Nuk e kam arritur ende.

Gatim automatik

Është një ëndërr. Aktualisht nuk ka komponentë për t'u zbatuar. Nuk ka mjaft pompa dhe sensorë të nivelit të ujit. Nuk e di se si të matet dendësia e mushtit, sa alkool ka në birrën e re dhe shumë më tepër. Por unë nuk dëshpërohem dhe do të automatizoj gradualisht derisa pirja e birrës të duket kështu:

I hodha përbërësit në tabakatë përkatëse, shtypa butonin dhe... pas një muaji e gjysmë mora birrën e përfunduar.

Kjo është një përmbledhje e shkurtër e procesit, tani le të kalojmë në anën teknike.

Ana teknike e procesit

Siç u tha më lart, mikrokontrolluesi i kontrollit është arduino UNO. 2 stafetë janë të lidhur me të, 2
Termometri dixhital DS18B20.

Arduino komunikon me programin kryesor nëpërmjet portës com. Sepse Unë nuk kam një pllakë emri në kohë reale për arduino, më është dashur të marr kohëmatës nga vizuale c#. Unë nuk kam përvojë në shkrimin e programeve, kështu që nëse dikush ka ndonjë ide apo kritikë, do të isha i nderuar. Kritikoni, grisni, si të thuash, nëse papritmas nuk ju pëlqen.

Këtu është teksti i programit në arduino

#përfshi OneWire ds(8); // sensorët e temperaturës janë të vendosur në pinin 8 int reley1 = 13; int reley2 = 12; int reley3 = 11; int reley4 = 10; int reley5 = 7; //aktivizo tens int reley6 = 6; // ngrohje në mash tun float temp1; float temp2; konfigurimi i zbrazët (void) ( Serial.begin(9600); pinMode(reley1,OUTPUT); pinMode(reley2,OUTPUT); pinMode(reley3,OUTPUT); pinMode(reley4,OUTPUT); pinMode(reley5,OUTPUT); pinMode( reley6,OUTPUT); digitalWrite(reley1,LOW); digitalWrite(reley2,LOW); digitalWrite(reley3,LOW); digitalWrite(reley4,LOW); digitalWrite(reley5,LOW); dixhitalWrite(reley6,LOW);) cikli i zbrazët (i pavlefshëm) ( if (Serial.available()) ( switch (Serial.read())( case "i": infuz(); break; case "p": progrev(); break; case "a": avariya (); break; rasti "v": varka (); break; rasti "t": temperatura (); break; ) ) ) void varka () ( digitalWrite(reley6, HIGH); while (Serial.read()! ="m") (temperatura(); nëse (temperatura 1 >= 52.00) dixhitaleWrite(reley6,LOW); tjetër digitalWrite(reley6,HIGH); ) while(Serial.read()!="n") ( //digitalWrite (reley6,HIGH); temperatura(); if(temp1>= 62.00) digitalWrite(reley6,LOW); tjetër digitalWrite(reley6,HIGH); ) while(Serial.read()!="b") ( //digitalWrite (reley6,HIGH);temperatura();if(temp1 >= 75.00) digitalWrite(reley6,LOW); tjetër DigitalWrite (reley6,HIGH); ) DigitalWrite (reley6,LOW); ndërsa(Seriali.lexo()!="c") vonesë(1000); while(Serial.read()!="x") ( digitalWrite(reley5,HIGH); temperature(); ) digitalWrite(reley5,LOW); ) void infuz() ( //temperature(); //Serial.available(); ndërsa (Serial.read()!="s")( //fikni ciklin e përgatitjes së infuzionit nëse (temp.<=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) //vonesa (1000); Serial.println("s"); ) aksident i pavlefshëm())( dixhitalWrite(reley1,LOW); digitalWrite(reley2,LOW); digitalWrite(reley3,LOW); digitalWrite(reley4,LOW); digitalWrite(reley5,LOW); ) temperatura e zbrazët() (bajt i ; prezent bajt = 0; të dhëna bajtësh; shtim bajt; zator bajt = (40, 23, 218, 43, 6, 0, 0, 22); // adresa e sensorit të temperaturës në bajtin mash varilka = (40, 255 , 240, 115 , 59, 4, 0, 234); //adresa e sensorit të temperaturës në tenxheren e prodhimit të notimit celsius; // temperatura notuese; boolean ku; nëse (!ds.search(addr))) ( //Serial .println("Nuk ka më adresa."); //Serial.println(); ds.reset_search(); vonesë(250); // return; ) if (OneWire::crc8(addr, 7) != addr) ( Serial.println("CRC nuk është i vlefshëm!"); // kthim; ) ds.reset(); ds.select(addr); ds.write(0x44, 1); // filloni konvertimin, me ndezjen e parazitëve në fund të vonesës (840) ; // ndoshta 750 ms është e mjaftueshme, ndoshta jo // ne mund të bëjmë një ds.depower() këtu, por rivendosja do të kujdeset për të. present = ds.reset(); ds.select (addr); ds.write (0xBE); // Lexoni Scratchpad për (i = 0; i< 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); } }

Gjithçka do të ishte mirë, por për disa arsye sensori i tretë tregon vazhdimisht 85 gradë. Nuk mund të them ende pse. Dhe është e nevojshme për automatizim të mëtejshëm - ruajtjen e temperaturës në frigorifer.

Unë do të përshkruaj shkurtimisht se çfarë bën programi.

Programi ndahet në nënprograme, secila prej të cilave aktivizohet nëse një simbol i caktuar shfaqet në portën e komunikimit. Për shembull, nëse shkronja "p" hyn në port, modaliteti "Ngrohja" aktivizohet. Ose, nëse "a", atëherë thirret nënprogrami avariya() dhe çdo gjë fiket. Kur thirret nënprogrami temperature(), të dhënat shkruhen në variablat globale temp1, temp2. Nga atje ata futen në nënprogramet e nevojshme.

Në të ardhmen, do të ketë nënprograme për prodhimin e varieteteve të ndryshme dhe madje edhe dritën e hënës.

Tani, në lidhje me programin kryesor të kontrollit.

Programi kryesor i kontrollit

Është shkruar në studion vizuale c#.

Kodi burimor i programit:

Kodi burimor i programit

duke përdorur Sistemin; duke përdorur System.Collections.Generic; duke përdorur System.ComponentModel; duke përdorur System.Data; duke përdorur System.Drawing; duke përdorur System.Linq; duke përdorur System.Text; duke përdorur System.Threading.Tasks; duke përdorur System.Windows.Forms; duke përdorur System.IO.Ports; hapësira e emrit WindowsFormsApplication1 ( klasa publike e pjesshme Form1: Form ( // Numri i portës së vargut; Porta Seriale1 = SerialPort i ri ("COM5", 9600); int s=0; Form1 publik () ( InitializeComponent(); ) /*konstancë private int = CP_NOCLOSE_BUTTON 0x200; zëvendësim i mbrojtur CreateParams CreateParams ( merrni ( CreateParams myCp = base.CreateParams; myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON; kthej myCp; ) )*/ private void Form1_Load. PortEmri; Port1.Open(); ) //Kontrollo butonin privat të zbrazëtisë së pajisjeve1_Klikoni(dërguesi i objektit, EventArgs e) (nëse (Port1.IsOpen == false) ( provo ( //programi mund të modifikohet informacioni nga podrugomu.com/node /987 Port1.PortName = label2.Text; Port1.Open(); Port1.Write("Kontrollo"); //Port Serial2 = SerialPort i ri ("COM4", 9600); //Port2.Open(); // etiketa 3. Text = Convert.ToString(Port2.ReadByte()); richTextBox1.Text = richTextBox1.Text + "\n" + "Fillimi i procesit të kontrollit të harduerit"+" "+DateTime.Now.ToString("HH:mm"); button1.Enabled = false; butoni2.Enabled = false; butoni3.Enabled = false; if (Port1.ReadByte() == 1000) ( richTextBox1.Text = richTextBox1.Text + "\n" + "Përfundo procesin e kontrollit të harduerit"+" "+DateTime.Now.ToString("HH:mm"); butoni1. Aktivizuar = e vërtetë; button2.Enabled = e vërtetë; button3.Enabled = e vërtetë; Port1.Close(); MessageBox.Show("Fundi i ciklit të kontrollit të harduerit" +" "+ DateTime.Now.ToString("HH:mm")) ; richTextBox1.SaveFile("CheckLOG.rtf"); ) ) kapja ( richTextBox1.Text = richTextBox1.Text + "\n" + "Gabim i procesit të kontrollit të harduerit" +" "+ DateTime.Now.ToString("HH:mm" ); ) ;) ) ) // Butoni privat i zbrazëtisë për pastrimin e pajisjeve3_Klikoni(dërguesi i objektit, EventArgs e) (nëse (Port1.IsOpen == false) ( provoni ( // programi mund të modifikohet informacioni nga podrugomu.com/node/987 MessageBox. Show(" Ju keni derdhur patjetër dezinfektues", "PARALAJMËRIM", MessageBoxButtons.OK, MessageBoxIcon.Warning); Porta 1. PortEmri = label2.Tekst; Port1.Open(); Port1.Write("Clean"); MessageBox.Show("Procesi i pastrimit të pajisjeve ka filluar", "Mesazhi informacioni"); button1.Enabled = false; butoni2.Enabled = false; butoni3.Enabled = false; nëse (Port1.ReadByte() == 1000) ( button1.Enabled = e vërtetë; button2.Enabled = e vërtetë; button3.Enabled = true; Port1.Close(); MessageBox.Show("Fundi i ciklit të pastrimit të pajisjeve"); ) ) catch ( MessageBox.Show ("Portë e pavlefshme e pajisjes e zgjedhur. Procesi i pastrimit nuk mund të fillohet", "Kujdes"); ) ) ) kontekst privat i pavlefshëmMenuStrip1_Opening(dërguesi i objektit, CancelEventArgs e) ( ) i pavlefshëm privat cOM1ToolStripMenuItem_Click(objekt dërgues e, ) ( SerialPort Port1 = SerialPort i ri ("COM1", 9600); // MessageBox.Show ("porta COM1 e zgjedhur"); label1.Visible = e vërtetë; label2.Text = "COM1"; ) private void label2_Click(dërguesi i objektit, EventArgs e) ( ) void privat com2ToolStripMenuItem_Click(dërguesi i objektit, EventArgs e) (SerialPort Port1 = new SerialPort("COM2", 9600); // MessageBox.Show("porta COM2 e zgjedhur"); label1.E dukshme = e vërtetë; label2. Text = "COM2"; ) private void com3ToolStripMenuItem_Click(dërguesi i objektit, EventArgs e) (SerialPort Port1 = new SerialPort("COM3", 9600); // MessageBox.Show("porta COM3 e zgjedhur"); etiketa1.E dukshme = e vërtetë; label2.Text = "COM3"; ) private void coOM4ToolStripMenuItem_Click(dërguesi i objektit, EventArgs e) (SerialPort1 = SerialPort i ri ("COM4", 9600); // MessageBox.Show ("porta COM4 e zgjedhur"); label1.E dukshme = e vërtetë; label2.Text = "COM4 "; ) void privat com5ToolStripMenuItem_Click(dërguesi i objektit, EventArgs e) (SerialPort1 = SerialPort i ri ("COM5", 9600); // MessageBox.Show ("porta COM5 e zgjedhur"); label1.E dukshme = e vërtetë; label2.Text = "COM5"; ) zbrazëti private com6ToolStripMenuItem_Click(dërguesi i objektit, EventArgs e) (SerialPort1 = SerialPort i ri ("COM6", 9600); // MessageBox.Show ("porta COM6 e zgjedhur"); label1.E dukshme = e vërtetë; label2. Tekst = "COM6"; ) void privat com7ToolStripMenuItem_Click(dërguesi i objektit, EventArgs e) (SerialPort Port1 = SerialPort i ri ("COM7", 9600); // MessageBox.Show ("porta COM7 e zgjedhur"); label1.E dukshme = e vërtetë; label2.Text = "COM5"; ) program privat i zbrazët BrewToolStripMenuItem_Click(dërguesi i objektit, EventArgs e) ( ) // Brew private void button2_Click(object sender, EventArgs e) ( // if (Port1.IsOpen == false) //( // provo //( //programi mund të modifikohet informacioni nga podrugomu.com/node/987 //Port1.PortName = label2. Teksti; //Port1.Open(); switch (label3.Text) (rasti "Përzgjedhur përpunimi i infuzionit": MessageBox.Show("Procesi i grumbullimit të infuzionit ka filluar", "Mesazhi informacioni"); Port1.WriteLine("i"); timer1.Start(); pushim; rasti "Përzgjedhur Cooper Brew": MessageBox.Show("Procesi i grumbullimit të Cooper filloi", "Mesazhi informacioni"); Port1.WriteLine("v"); timer3.Start(); break; ) button1.Enabled = false; butoni2.Enabled = false; butoni3.Enabled = false; // button5.Enabled = false; // richTextBox1.Text = Port1.ReadLine()+"\n"; /* nëse (Port1.ReadLine() == "e\r") ( button1.Enabled = true; button2.Enabled = true; button3.Enabled = true; button5.Enabled = true; */ //Port1.Close( ); // MessageBox.Show("Fundi i ciklit të prodhimit"); // ) // ) // kap //( // MessageBox.Show("Portë e pavlefshme e pajisjes është zgjedhur. Procesi i prodhimit nuk mund të fillohet", "Kujdes "); //) // ) ) butoni privat i zbrazët5_Klikoni(dërguesi i objektit, EventArgs e) (Port1.Write("p"); butoni1.Enabled = false; button2.Enabled = false; button3.Enabled = false; timer2. Start() Hap (); //Port1.Open(); //richTextBox1.Text = richTextBox1.Text + "\n" + Port1.ReadLine (); Port1.WriteLine ("o"); Port1.Close (); */ ) private void exitToolStripMenuItem_Click(objekt dërgues, EventArgs e) ( Mbyll(); ) private void timer1_Tick(dërguesi i objektit, EventArgs e) ( textBox1.Text = Convert.ToString(Convert.ToInt32(s / 60)); textBox2.Text = Convert.ToString(Convert.ToInt32(s));s++; label5.Text = Port1.ReadLine(); nëse (s==4200)( //70 minuta është 4200 sekonda timer1.Stop(); //timer2.Start(); //Port1.Open(); Port1.WriteLine ("s"); // Port1.Close(); MessageBox.Show ("Pureja e infuzionit ka mbaruar, lëngu duhet të filtrohet"); button1.Enabled = e vërtetë; button2.Enabled = e vërtetë; button3.Enabled = e vërtetë ; button5.Enabled = true; textBox1.Text = ""; textBox2.Text = ""; ) //Port1.Close(); ) private void label4_Click(object sender, EventArgs e) ( ) private void timer2_Tick(object dërgues, EventArgs e) ( label5 .Text = Port1.ReadLine(); if (Port1.ReadLine() == "s\r") ( timer2.Stop(); MessageBox.Show("Uji është 37 gradë. Mund të shtoni malt dhe të aktivizoni modalitetin e mashimit"); richTextBox1.Text = richTextBox1.Text + "\n" + "Përfundimi i procesit të përgatitjes së puresë. Т=37 gradë" + " " + DateTime.Now.ToString("HH:mm"); button2.Enabled = true; ) ) private void emergjenceDisableToolStripMenuItem_Click(dërguesi i objektit, EventArgs e) ( Port1.WriteLine("a"); MessageBox.Show("Përdoruesi ka mbyllur të gjithë sistemin në rast urgjence"); ) kazan privat me pure të zbrazëtitToolStripMenuItem_Click(dërguesi i objektit, EventArgs e) ( Port1.WriteLine("k"); MessageBox.Show("Modaliteti i vlimit Mash Tun është i aktivizuar. Prisni 60 minuta") ; richTextBox1.Text = richTextBox1.Text + "\n" + "Modaliteti i zierjes Mash tun është aktivizuar. Prisni 60 minuta" + " " + DateTime.Now.ToString("HH:mm "); ) private void timer3_Tick(dërguesi i objektit, EventArgs e) ( vargu s1 = ""; Port1.ReadLine(); if (s1.Substring(0, 2) == "t1") label5.Text = s1.Substring (4, 5); nëse (s1.Nënstring (0, 2) == "t2") label9.Text = s1.Substring(4, 5); s++; nëse (s == 900) ( Port1.WriteLine(" m"); MessageBox.Show("Rivendos fazën në 62 gradë"); richTextBox1.Text = richTextBox1.Text + "\n" + "Faza mash në 62 gradë" + " " + DateTime.Now.ToString ("HH: mm"); ) if(s== 2250) ( Port1.WriteLine("n"); MessageBox.Show("Fërko fazën në 78 gradë"); richTextBox1.Text = richTextBox1.Text + "\n" + "Fërko fazën në 78 gradë " + " " + DateTime.Now.ToString("HH:mm"); ) if (s ==2700) ( Port1.WriteLine("b"); MessageBox.Show("Faza e mashimit ka përfunduar, mund të kulloni wort") ; richTextBox1.Text = richTextBox1.Text + "\n" + "Faza e grumbullimit ka mbaruar. Mund ta kulloni lythin" + " " + DateTime.Now.ToString("HH:mm"); ) ) private void normalToolStripMenuItem_Click(dërguesi i objektit, EventArgs e) ( label3.Text = "Cooper brew zgjedhur"; ) ) )

Programi komunikon me arduino nëpërmjet portës com. E vetmja gjë që nuk mund ta kapërcej është se gjatë sondazhit të portit com, programi nuk ngrin ndërsa nënprogrami ekzekutohet. Pas përfundimit të nënprogramit, programi varet, por tani për tani kjo nuk është kritike dhe madje një lloj plus. I pagabueshëm - për t'ju parandaluar të shtypni ndonjë gjë gjatë një procedure të caktuar.

Në total, programi mund

- të përgatisë pajisje për gatim;
- kuzhinier;
- shkruani një regjistër të thjeshtë të punës (shumë i dobishëm për analiza të mëtejshme të prodhimit të birrës);
- zgjidhni një port për t'u lidhur me kontrolluesin e kontrollit (arduino UNO);
ziej birra dhe mash tun.

Kur të mbërrijnë pompat dhe valvulat solenoid, unë do t'i automatizoj më tej. Ndërkohë do të shtoj një program gatimi çdo të diel. Gjithsej do të ketë 5 programe. Zbatimi i modalitetit manual po pret gjithashtu radhën e tij.
Siç thotë fjala,

vazhdon...

UPD:

Këtu janë disa foto të fabrikës së birrës

Ky është një tretës. Unë kam dy nga këto. Një sensor i temperaturës DS18B20 në një kornizë të mbyllur është instaluar në anën.
Për një kohë të gjatë nuk mund ta kuptoja pse arduino ngrin periodikisht, derisa më kuptoi se gjithçka duhet të tokëzohet, përndryshe do të depërtonte në strehim, pastaj në strehimin e sensorit dhe në arduino.

Tubi i bakrit brenda është për filtrimin e lythit. Mund të bëhet më e bukur, por është më mirë të përdorni një fund të rremë. Fatkeqësisht, kinezët nuk po nxitojnë ta dërgojnë atë.

Është shumë herët për të folur për rezultatin, ja çfarë ndodhi

Pamja e përgjithshme e vatrës duket kështu.

Përdoren lidhëse të rregullta
për lidhjen e sensorëve të temperaturës, të lidhur në një prizë të dyfishtë. Është më i përshtatshëm për të larë pajisjet. E fika dhe e çova në banjë. E lava, e lidha dhe gjithçka funksionon.

Gjithçka shkumoi sipas planit, asnjë tepricë nuk doli jashtë. Dhe planet e mia të menjëhershme janë të kulloj një grumbull birre për fermentim të mëtejshëm dhe të krijoj një tjetër. Receta, në parim, mund të shihet në kodin në nënprogramin varka() të arduino.

Më në fund kanë ardhur valvulat solenoid. Procesi i automatizimit vazhdon.

Automatizimi në shoqërinë moderne është një masë e nevojshme, sepse në epokën dixhitale është jashtëzakonisht e rëndësishme të eliminohet faktori njerëzor në industri të ndryshme për të standardizuar dhe përmirësuar cilësinë e produktit. Ka gjithashtu zona ku njerëzit thjesht nuk mund të bëjnë atë që robotët janë të aftë, për shembull, prodhimin e nanomaterialeve dhe mikroqarqeve.

Sidoqoftë, automatizimi jo vetëm që ndihmon në prodhim, por mund të jetë i dobishëm edhe për një person mesatar. Për shembull, automatizimi për një fabrikë birre duke përdorur Arduino mund të thjeshtojë ndjeshëm procesin e prodhimit të një produkti. Le të kuptojmë se si mund të ndihmojë automatizimi për korrigjimin në Arduino dhe gjëra të tjera, dhe të shohim shembuj.

Përparësitë kryesore të sistemeve të automatizuara të bazuara në mikrokontrolluesin Arduino

Askush nuk ju ndalon të bashkoni tabelën tuaj dhe ta programoni vetë duke përdorur gjuhë të nivelit të ulët. Sidoqoftë, automatizimi duke përdorur Arduino dhe mikrokontrollues të gatshëm do ta lehtësojë shumë të gjithë procesin dhe do të kursejë kohë. Në fund të fundit, është shumë më e lehtë të blini një produkt të gatshëm me një sërë bibliotekash dhe ta përshtatni atë me nevojat tuaja. Dhe automatizimi i përballueshëm në Arduino mega 2560 mund të jetë i dobishëm në shumë fusha të jetës, nga çelsat e zërit për një shtëpi inteligjente deri te mbylljet elektrike me një detektor lëvizjeje. Përparësitë kryesore për të cilat është i famshëm automatizimi Arduino janë:

  1. Barrierë e ulët për hyrje. Nuk ka nevojë të marrësh një arsim inxhinieri, mjafton të shikosh disa video trajnimi dhe të kesh një bazë në programim.
  2. Një numër i madh bibliotekash tashmë të përgatitura. Arduino përdoret në të gjithë CIS nga shumë entuziastë të robotikës, deri në atë pikë sa prodhimi i pajisjeve të ndryshme elektronike bëhet hobi i tyre. Prandaj, komuniteti i përdoruesve në internet është jashtëzakonisht aktiv, poston një numër të madh boshllëqesh dhe është i gatshëm t'ju ndihmojë të zgjidhni çdo problem. Cilësia e bibliotekave vuan për shkak të pragut të ulët të hyrjes, por askush nuk ju ndalon të krijoni tuajën; mjafton të studioni semantikën e gjuhës C++ ose të përdorni përkthyes të gatshëm.
  3. Një numër i madh i pajisjeve periferike. Nuk ka rëndësi nëse keni nevojë për automatizim serë me bazë Arduino ose një sensor drite, do të gjeni çdo modul, duke përfshirë sensorët e zërit dhe njohësit e zërit. Po, disa borde kushtojnë shumë para, por gjithmonë mund të gjeni analoge të lirë, për shembull, modulin wi-fi esp8269 nga prodhuesit e palëve të treta, i cili kushton 10 herë më pak se ai zyrtar.
  4. Shumë informacion. Çdo problem me të cilin po përballeni tashmë është përballur nga dikush tjetër dhe ndoshta do ta gjeni një zgjidhje në Google. Ekziston edhe literaturë e plotë që mund të konsultoheni.

Sidoqoftë, mos mendoni se Arduino nuk ka të meta. Bordi është i famshëm për performancën e tij të ulët. Në detyra veçanërisht komplekse dhe me një sasi të madhe kodi, koha e përgjigjes mund të arrijë 1 sekondë, gjë që është e papranueshme për mikrokontrolluesit. Memoria flash e shumicës së moduleve nuk kalon 1 MB, e cila nuk mjafton për të krijuar rrjete nervore ose për të përdorur skedarë media. Sigurisht, mund të lidhni një kartë memorie ndihmëse, por kjo rrit kohën e përgjigjes, kërkon burime shtesë për ta fuqizuar atë dhe bëhet në një mënyrë gjysmë artizanale.

Sidoqoftë, sistemet e thjeshta të automatizuara, për shembull, për prodhimin e birrës ose serrave, nuk kërkojnë as një pjesë të vogël të burimeve që mund të sigurojë bordi. Prandaj, shumica e përdoruesve do t'i shohin këto mangësi të pakuptimta. Nëse vendosni të montoni printerin tuaj 3-D ose një dizajn më kompleks, duhet t'i hidhni një vështrim më të afërt analogëve. Por pengesa për hyrjen për konkurrentët e Arduino do të jetë shumë më e lartë.

Një shembull i automatizimit të procesit i bazuar në mikrokontrollues Arduino

Shembulli më i thjeshtë i automatizimit të procesit mund të jetë një serë duke përdorur Arduino. Për të krijuar çdo sistem, ia vlen të përcaktohen qartë detyrat që duhet të kryejë. Duke përdorur një serë si shembull, kjo do të ishte:

  1. Krijimi i një klime të veçantë.
  2. Ndezja dhe fikja në kohë e ndriçimit.
  3. Lotim në kohë i bimëve dhe mbajtja e lagështisë së ajrit në të njëjtin nivel.

Bazuar në këto detyra, mund të vini re menjëherë se çfarë do t'ju duhet të blini për bordin kryesor:

  1. Sensor temperature. Do të sigurojë që ajri të mos nxehet ose ftohet, duke qenë brenda kufijve të përcaktuar nga programi. Nëse temperatura ndryshon, bordi do të ndezë kondicionerin ose bateritë elektronike.
  2. Sensori i dritës. Sigurisht, ju mund të kufizoni veten në një zgjidhje softuerike dhe të blini llamba të shtrenjta që simulojnë dritën e ditës. Por nëse doni të krijoni një serë të plotë, atëherë do të jetë shumë më i përshtatshëm të instaloni një tavan automatik, i cili do të kontrollohet nga Arduino.
  3. Sensori i lagështisë. Këtu gjithçka është e njëjtë si me temperaturën, sipas skenarit të përshkruar, bordi do të ndezë spërkatës dhe lagështues, nëse është e nevojshme.

Kur blini të gjitha modulet e nevojshme, mbetet vetëm t'i programoni ato. Në fund të fundit, pa kod, këto janë vetëm pjesë të pajisjeve që nuk janë të afta për asgjë.

Programimi i mikrokontrolluesve Arduino për automatizimin e proceseve. Shembull

Ashtu si në pikën e mëparshme, për programim është e rëndësishme të ndash detyrën në nën-pika të veçanta dhe t'i kryesh ato në mënyrë sekuenciale. Programimi Arduino ndodh falë komandave në ndërfaqen AT dhe AT+, duke përdorur bibliotekat e përgatitura. Prandaj, të gjitha skriptet shkruhen në një mjedis të veçantë në C++ dhe, para se të bëni ndonjë gjë, kushtoni kohë studimit të semantikës së tij. Përveç kryerjes së funksioneve të thjeshta, sistemi është gjithashtu i aftë të ruajë skriptet në memorie flash, gjë që na nevojitet në këtë shembull.

Mos harroni se informacioni nga çdo sensor vjen në kohë reale dhe si variabla, por ju mund të kufizoni kohën e përgjigjes, pasi nuk ka nevojë të shpenzoni burime dhe të matni vazhdimisht çdo parametër. Në përputhje me rrethanat, vendosni kohën e ndezjes dhe fikjes për secilin sensor ose vendosni kohën e përgjigjes për një periudhë të caktuar.

Pershendetje te gjitheve!
Ka kaluar shumë kohë që kur vendosa të ndërtoj fabrikën time të automatizuar të birrës. Këtu është postimi i parë.
Sot kontrollori është plotësisht gati, mbetet vetëm të bëhet vetë pajisja e gatimit dhe filtrimit. Gjithçka u bë me duart e mia. Ju lutem mos gjykoni rreptësisht, unë nuk kam arsim inxhinierik, jam një humanist i thjeshtë! Unë do t'ju tregoj me radhë se si dhe nga çfarë është bërë. Kujdes, trafik, shumë foto! Shkurtimisht për zhvillimin. Krijuar në Arduino. Treguesi i zërit, i dritës, treguesi i rrymës dhe tensionit (meqenëse pajisja po korrigjon, më duhet të monitoroj këta tregues). Mbyllje emergjente. I gjithë sistemi bazohet në reletë gjysmëpërçuese. Pjesa e fuqisë është e shkëputur nga pjesa dixhitale. Kontrolli i 4 ngarkesave 25-40A (i shkallëzuar), memorie recete për 8 copë. 8 pushime të temperaturës. Ndërfaqe intuitive. Modaliteti plotësisht manual ose plotësisht automatik. Larje automatike CIP. 2 sensorë të temperaturës me saktësi 0.1g. Sensori i lëngut në kazan. Sensori i lëngut gjatë pompimit. Kapaciteti - nga 20l në 1000l. Kontrolli i ajrimit, vorbullës, pompës, daljes rezervë. PID i personalizueshëm për kapacitete të ndryshme (beta), USB për përditësime të softuerit dhe në të ardhmen e afërt - telekomandë nga iPhone/iPad. Tani mund ta kontrolloni nga një kompjuter, nga ekrani i monitorit, madje edhe nëpërmjet internetit.
Le të fillojmë. Së pari, zgjodha një rast në dyqan. Çmimet janë shumë të ndryshme. Zgjodha atë që ishte e pranueshme për nga madhësia dhe çmimi, duke parë përpara, do të them që mbushja përshtatet në kufi; nuk do të përshtatej në një rast më të vogël:

Punë komplekse për shënimin e elementeve të kontrollit. Të gjithë komponentët, përveç strehimit, telave dhe kontaktorit, janë blerë jashtë vendit. Nuk mund të blesh asgjë me një çmim të arsyeshëm në këtë vend.


Konfigurimi është vendosur, rreshti i poshtëm i butonave është lënë për të ardhmen, për zgjerimin e aftësive:

Vendosa shirit maskues dhe vizatova shenja me laps.

Është një çështje e vogël. Pritini vrimat. Ato drejtkëndëshe bëheshin me një bashkim pjesësh figure dhe një skedar me dhëmbët më të vegjël. E rrumbullakët - me një shpuese kurriz peshku me shkallë. Të vogla të rrumbullakëta - me një stërvitje.

Të gjitha vrimat u përpunuan me një skedar.

Dhe e pikturoi atë. Më lejoni të vërej se e bëra këtë më kot, bojëja prishet pa mëshirë në çdo kontakt. E kam lyer në 3-4 shtresa. Nuk kam përdorur tokë.

Prita një ditë që boja të thahej dhe vendosa elementët.


E bleva radiatorin nga një reklamë, ishte nga një qendër televizive lokale, ishte në një transmetues televiziv në një kullë televizive lokale, duhej ta shkëputja, ia dhashë fabrikës, sepse ... Unë nuk mund ta marr bashkim pjesësh figure, është e rëndë dhe e bërë nga një aliazh i panjohur.

Në anën e pasme.

Brenda.

Të montuara.

Kontrollimi i elektronikës.

Unë skicova një diagram shumë kompleks, pa diagram - askund!

I lidha gjithçka dhe e lidha me saldim. Nuk e filmova hap pas hapi, nuk pata kohë për këtë.

Një pamje tjetër. Unë bashkoj çdo terminal kompresimi.


Priza për aktivizues.

Rele SSR. Kam përdorur dy emërtime dhe prodhues të ndryshëm, është më interesante.

Kjo është ajo që ndodhi. Kam vendosur butona të ndryshëm përzgjedhjeje, më të përshtatshëm dhe të gjelbër, kështu që, mendoj se duket më bukur, përndryshe ka shumë të kuqe :)


Pastrova pak tavolinën dhe u bëra gati për provën! Në vend të një elementi ngrohjeje, ngarkesa dhe elementi ngrohës është një llambë tavoline e cilësisë së mirë.

Unë ngjita shenja në Moment Crystal. Targat speciale të porositura nga kompania. Ekzistojnë dy lloje të Graverton dhe Gedacolor, të cilat ndryshojnë në çmim, cilësi dhe qëndrueshmëri. As që mbaj mend se cilat i kam. Dhe gjithçka është gati!


Ndërkohë, një tru i ri me aftësi të reja për zhvillimin më të fundit tashmë pret në tryezë! :)

Faza tjetër është zgjedhja e komponentëve për prodhimin e birrës dhe ndërtimin përfundimtar. Por më shumë për këtë në pjesën tjetër

Çfarë do të kisha bërë ndryshe, nuk do ta kisha pikturuar; patate të skuqura të shumta janë të dukshme në foto. Por blloku është i destinuar për instalim të palëvizshëm të montuar në mur, kështu që boja nuk do të hiqet aq shumë. Për momentin gjithçka po funksionon siç pritej, mbetet vetëm të përfundoni tenxheren me të gjitha tubacionet. Çështje kohe dhe parash.

Dëshira ime për të filluar prodhuesit e birrës është, mos u përpiqni të ndërtoni një makinë menjëherë, nuk do të funksionojë. Së pari ju duhet të gërmoni në të gjitha detajet, të hidhni para dhe kohë.

Me marrëveshje me autorin e kodit, kodi nuk vihet publikisht për disa arsye: programi është përshtatur për zhvillimin tim specifik, për një cikël specifik dhe ndoshta në të ardhmen do të kthehet në një produkt komercial. Unë tregova vetëm një shembull.

Kërkoj ndjesë për cilësinë e fotove, gjithçka është bërë me telefon. Faleminderit të gjithëve që lexuan deri në fund!

Për ata që janë të interesuar në prodhimin e birrës në shtëpi,

Pse më duhej automatizimi?

Automatizimi nevojitet për të lehtësuar procesin, sepse... vetë ky kontrollues do të monitorojë temperaturën, do ta mbajë atë dhe do ta ngrejë atë në pauzën e kërkuar të temperaturës. Ju gjithashtu mund të përdorni një sinjal zanor për të treguar ndërhyrjen e nevojshme, për shembull, duhet të shtoni malt ose të bëni një test jodi.

Vendosa të bëj automatizimin tim nga një projekt i gatshëm. Ai funksionon në arduino, një sensor i temperaturës, dy stafetë, një ekran dhe butona janë të lidhur me të. Releja e parë kontrollon elementin e ngrohjes, stafeta e dytë kontrollon pompën. Pompa e puresë është shumë e përshtatshme sepse... nuk ka nevojë të përzihet pureja gjatë gjithë procesit të purejes (unë rekomandoj të lexoni ato të mia të mëparshme për më shumë detaje se si të krijoni birrën)

Unë mblodha automatizimin e parë duke përdorur module:

- Arduino mini
- Blloku i dy releve 15A
- Ekrani 2004
- Sensor temperature
- 4 butona
- Furnizimi me energji 5 volt
Komoditeti i montimit modular është se nuk është e vështirë të merren të gjitha pjesët dhe praktikisht nuk ka nevojë të lidhni asgjë. Por disavantazhi më i madh është numri i madh i telave, dhe stafeta e lirë kineze krijoi ndërhyrje në ekran, kështu që stafeta mekanike duhej të zëvendësohej me një stafetë të ngurtë.

Me kalimin e kohës, arrita në përfundimin se më duhej të ndërtoja automatizimin tim në një çip me memorie 64 kb (Arduino mini ka vetëm 32 kb) në një tabelë. Nuk gjeta një zgjidhje të gatshme, kështu që fillova të krijoj vetë një qark dhe më pas një tabelë për zanatin tim.

Skema:

Kam zhvilluar dhe vizatuar diagramin, si të thuash, në gjunjë dhe për veten time, kështu që disa mangësi janë të mundshme, por diagrami funksionon plotësisht:

Paguaj:

Unë vizatova qarkun, pastaj mbetet të vizatoj tabelën, së pari e vizatova duke përdorur programin Sprint-Layout 6, shumë i përshtatshëm, por nuk ka funksionalitet të mjaftueshëm, kështu që vendosa të largohem prej tij drejt programit DipTrace dhe kjo është ajo që kam marrë:

Ju mund të shkarkoni burimet.
Siç mund ta shihni, unë e quajta fabrikën time QRBeer dhe ky është tashmë versioni 0.5...

Bordi është gati, gjithçka që mbetet është ta prodhojmë disi. Për këtë vendosa të përdor. Pse ata dhe jo LUT? Sapo vendosa ta provoj këtë teknologji të re për veten time, tashmë e kam provuar LUT, e ndjeva, si të thuash, nuk do të them që më pëlqeu ...

Fotorezist:

Për të bërë bordet e qarkut të printuar duke përdorur fotorezist, do t'ju duhet:
- Film printer
-
- Llamba ultraviolet
- Hiri i sodës

llambë ultravjollcë

Së pari, unë do të ndaj informacione se si e bëra timen Llambë UV. Në fillim doja të përdorja një llambë të gatshme, dhe më pas vendosa ta montoj duke përdorur gjashtë LED 3W:
dhe gjithashtu të blera në Tao:


I ngjita LED-të në radiator, megjithëse ato mund të ishin montuar në një PCB, dyshoj se do të ishin mbinxehur.
Ja çfarë mora:


Prodhimi i bordit

1. Pra, unë kam përgatitur shabllonin, ajo që mbetet është ta printoni në film. Siç shkrova më lart, më duhet një film për një printer, e provova filmin si për printer lazer ashtu edhe për një printer inkjet, opsioni më i mirë merret vetëm me film për printim me bojë. Ju duhet të printoni në imazh negativ dhe pasqyrë:

E laminova menjëherë shabllonin në mënyrë që gjurmët e gishtërinjve dhe mbeturinat të mund të laheshin lehtësisht.
2. Më pas duhet të lyejmë me rërë bordin tonë të ardhshëm (petëzuar me tekstil me fije qelqi). Një sfungjer i rregullt pak i lagur ose sfungjer melamine është i përshtatshëm për këtë:


3. Pas kësaj procedure, bakri ende duhet të lyhet me aceton:


Siç mund ta shihni në foton time, e hoqa nga yndyra me një pecetë të zakonshme dhe e derdha acetonin në një shishe peroksidi, kështu që është më i përshtatshëm për t'u marrë ...
4. Hapi tjetër është të prisni pak fotorezistin që të përshtatet me dërrasën tuaj të ardhshme dhe të hiqni me kujdes filmin e sipërm mbrojtës në mënyrë që të mos e dëmtoni atë. Nëse fotorezisti është shtëpiak, duhet të hiqni anën mat, nëse është kinez, atëherë nuk ka asnjë ndryshim ...
5. Më pas, ngjisim fotorezistin në PCB në mënyrë që të mos shfaqen flluska ajri nën fotorezist, përndryshe gjurmët nuk do të shfaqen në vende të tilla, preni tepricën...
Procesi i ngjitjes së fotorezistit është i ngjashëm me ngjitjen e një filmi mbrojtës në një telefon.


6. Kur fotorezisti është ngjitur, tekstoliti me të duhet të kalohet 2-3 herë në një laminator ose të përdoret një hekur i ngrohtë dhe të hekuroset përmes një fletë letre të palosur në gjysmë:


Gjëja kryesore nuk është të mbinxehni fotorezistin, përndryshe do të dalë kështu:


Nëse kur ngjitni fotorezistin ju del një “jamb”, atëherë është më mirë ta hiqni (lajeni ose gërvishtni) dhe ta ringjisni, përndryshe pas gdhendjes së dërrasës do të jetë e trishtuar... Nuk do ta heq. këtë fotorezist, do t'ju tregoj rezultatin përfundimtar.
7. Vendosni një shabllon në PCB me fotorezist dhe shtypni me xham (e mora nga një kornizë e vjetër fotografie) dhe vendosni një peshë në xhami:


8. Ne ndriçojmë fotorezistin duke përdorur një llambë UV. Llamba ime zgjat rreth 2 minuta:


Siç mund ta shihni, fotorezisti që u ekspozua ndryshoi ngjyrën nga blu e hapur në blu të errët, dhe fotorezisti i ekspozuar është shumë i brishtë.
9. Hiqni xhamin dhe shabllonin. Fotorezisti i tepërt mund (opsionale) të shkurtohet dhe të ndahet me kujdes me piskatore:


10. Hapi tjetër është të lani fotorezistin e pazhvilluar me alkali; për ta bërë këtë, merrni 2 gota ujë dhe një lugë gjelle sode, përzieni mirë. Qëroni shtresën e sipërme mbrojtëse të fotorezistit dhe zhytni tekstolitin tonë në një tretësirë ​​alkaline.


11. Merrni një furçë dhe fërkoni tre pjesë të fotorezistit në alkali, gradualisht fotorezisti i pazhvilluar lahet:


Nuk mund ta derdhni alkalin, por ta lini në dërrasën tjetër ose të lani fotorezistin pas gdhendjes, por më shumë për këtë më vonë...
12. Gravurë në tabelë:
Ka dy metoda më të arritshme: gravurë me klorur ferrik ose peroksid + acid citrik dhe kripë. Unë nuk do të shkruaj për klorurin e hekurit, por ndoshta do ta përshkruaj duke përdorur peroksid:
- 100 ml. peroksid hidrogjeni 3% - shitet në një farmaci për 7-12 rubla
- 30 gr. acid citrik (i disponueshëm në çdo dyqan ushqimor)
- 1 lugë gjelle. lugë kripë (si kripa e imët ashtu edhe ajo e gurit do të bëjnë)


E gjithë kjo përzihet në një enë dhe bordi me fotorezistin e përfunduar zhytet atje, pas një kohe shfaqen flluska në tabelë:


Dhe pas ca kohësh, "bakri i zhveshur" do të gdhendet plotësisht:


Nga rruga, nëse gdhendni në një temperaturë më të lartë, për shembull me një llambë inkandeshente ose në një banjë uji, atëherë gravurja do të zvogëlohet me tre, gjëja kryesore është të mos e teproni, përndryshe teprica do të gdhende ...
13. Mënyra më e përshtatshme për të hequr fotorezistin është në të njëjtin alkali në të cilin është larë fotorezisti i pagdhendur; pas 20 minutash ai do të bjerë vetë dhe nuk ka nevojë të fërkoni asgjë...

Dhe këtu janë "jambet" e mia:


Edhe pse jo domethënëse, por gjithsesi, pakujdesia është fajtore për gjithçka, nuk vuri re flluska ajri nën fotorezist ose mbinxehje...

Unë e kam "të pastër" tabelën e mëposhtme:


14. Më pas, shponi vrima dhe rrafshoni tabelën:


15. Saldoni të gjitha pjesët dhe lani fluksin e tepërt:


Kam bashkuar komponentët SMD me një stacion saldimi kinez infra të kuqe, shumë i përshtatshëm:

Kjo është e gjitha, pjesa më e vështirë ka mbaruar, gjithçka që mbetet është të testoni gjurmët për qarqe të shkurtra dhe të filloni të programoni çipin.

Programimi atmega644

1. Për të filluar programimin, duhet të ngarkoni ngarkuesin në të. Kjo nuk është e vështirë për t'u bërë duke përdorur Arduino UNO, por së pari duhet të shkarkoni dhe instaloni programin.
2. Hapi tjetër është të shtoni ose merrni menjëherë një montim të gatshëm në programin e instaluar:
3. Ngarko skicën ArduinoISP në UNO:

4. Dhe lidhni bordin tonë me UNO:


Sipas udhëzimeve të skicës:
// emri i pinit // rivendosja e skllav: 10: // MOSI: 11: // MISO: 12: // SCK: 13:
Rezulton sipas skemës sime si kjo:

5. Më pas, instaloni bordin tonë në cilësimet dhe ngarkoni ngarkuesin:




Nëse gjithçka shkoi mirë, do të shohim mesazhin: "Regjistrimi i bootloader përfundoi"
Në këtë pikë, ngarkimi i bootloader"a ka përfunduar, mund të lidhni ekranin, butonat, sensorin e temperaturës dhe të mbushni

Artikujt më të mirë mbi këtë temë