Gumagawa kami ng automation para sa isang brewery sa isang board. Nag-aaral kami sa atmega644. Gumagawa kami ng isang board gamit ang photoresist. Mga awtomatikong system batay sa Arduino microcontroller

Bakit kailangan ko ng automation?

Kailangan ang automation para mapadali ang proseso, dahil... ang controller na ito mismo ay susubaybayan ang temperatura, pananatilihin ito at itataas ito sa kinakailangang pag-pause ng temperatura. Signal din tunog signal tungkol sa kinakailangang interbensyon, halimbawa, kailangan mong magdagdag ng malt o gumawa ng isang pagsubok sa yodo.

Nagpasya akong gumawa ng sarili kong automation mula sa isang yari na proyekto. Tumatakbo ito sa arduino, isang sensor ng temperatura, dalawang relay, isang display at mga pindutan ay konektado dito. Kinokontrol ng unang relay ang elemento ng pag-init, kinokontrol ng pangalawang relay ang bomba. Ang mashing pump ay napaka-convenient dahil... hindi na kailangang pukawin ang mash sa buong proseso ng pagmamasa (inirerekumenda kong basahin ang mga nauna ko para sa higit pang mga detalye kung paano magtimpla ng beer)

Binuo ko ang unang automation gamit ang mga module:

- Arduino mini
- Block ng dalawang 15A relay
- Display 2004
- Sensor ng temperatura
- 4 na mga pindutan
- 5 volt power supply
Ang kaginhawahan ng modular assembly ay hindi mahirap makuha ang lahat ng mga bahagi at halos hindi na kailangang maghinang ng anuman. Ngunit ang pinakamalaking kawalan ay ang malaking bilang ng mga wire, at ang murang Chinese relay ay lumikha ng interference sa display, kaya ang mechanical relay ay kailangang mapalitan ng solid-state.

Sa paglipas ng panahon, dumating ako sa konklusyon na kailangan kong buuin ang aking automation sa isang chip na may 64kb ng memorya (ang Arduino mini ay may 32kb lamang) sa isang board. Handa na solusyon Hindi ko ito nakita, kaya nagsimula akong lumikha ng isang circuit sa aking sarili at pagkatapos ay isang board para sa aking craft.

Scheme:

Binuo at iginuhit ko ang diagram, wika nga, sa aking mga tuhod at para sa aking sarili, kaya ang ilang mga pagkukulang ay posible, ngunit ang diagram ay ganap na gumagana:

Magbayad:

Iginuhit ko ang circuit, pagkatapos ay nananatili itong gumuhit ng board, una kong iginuhit ito gamit ang programa Sprint-Layout 6, napaka-maginhawa, ngunit wala itong sapat na pag-andar, kaya nagpasya akong lumayo mula dito patungo sa programa DipTrace at ito ang nakuha ko:

Maaari mong i-download ang mga mapagkukunan.
Tulad ng nakikita mo, pinangalanan ko ang aking brewery na QRBeer at ito ay bersyon 0.5 na...

Ang board ay handa na, ang natitira na lang ay upang kahit papaano ay gawin ito. Para dito nagpasya akong gamitin . Bakit sila at hindi si LUT? Nagpasya lang akong subukan ito para sa aking sarili bagong teknolohiya, nasubukan ko na ang LUT, naramdaman ko, sabi nga, hindi ko sasabihin na nagustuhan ko ito...

Photoresist:

Upang makagawa ng mga naka-print na circuit board gamit ang photoresist kakailanganin mo:
- Printer film
-
- UV lamp
- Soda abo

UV lamp

Una, ibabahagi ko ang impormasyon kung paano ko ginawa ang akin UV lamp. Sa una gusto kong gumamit ng isang handa na lampara, at pagkatapos ay nagpasya akong tipunin ito gamit ang anim na 3W LEDs:
at binili din sa Tao:


Idinikit ko ang mga LED sa radiator, bagaman maaari silang i-assemble sa isang PCB, duda ako na sila ay mag-overheat.
Narito ang nakuha ko:


Paggawa ng board

1. Kaya, inihanda ko ang template, ang natitira ay i-print ito sa pelikula. Tulad ng isinulat ko sa itaas, kailangan ko ng isang pelikula para sa printer, sinubukan ko ang pelikula para sa pareho laser printer, at para sa inkjet, pinakamahusay na pagpipilian nakuha lamang sa pelikula para sa pag-print ng inkjet. Kailangan mong mag-print sa negatibo at mirror na imahe:

Agad kong nilaminate ang template para madaling mahugasan ang mga fingerprint at debris.
2. Susunod na kailangan naming buhangin ang aming hinaharap na board (fiberglass laminate). Ang isang bahagyang basa na regular na espongha o melamine na espongha ay angkop para dito:


3. Pagkatapos ng pamamaraang ito, ang tanso ay kailangan pa ring degreased na may acetone:


Tulad ng nakikita mo sa aking larawan, na-degrease ko ito ng isang regular na napkin, at ibinuhos ko ang acetone sa isang bote ng peroxide, kaya mas maginhawang kunin...
4. Ang susunod na hakbang ay bahagyang gupitin ang photoresist upang magkasya sa iyong hinaharap na board at maingat na alisin ang tuktok proteksiyon na pelikula para hindi masira. Kung ang photoresist ay domestic, kailangan mong alisan ng balat ang matte na bahagi, kung ito ay Chinese, kung gayon walang pagkakaiba ...
5. Susunod, idikit namin ang photoresist sa PCB upang walang mga bula ng hangin na lilitaw sa ilalim ng photoresist, kung hindi man ay hindi lilitaw ang mga track sa mga naturang lugar, putulin ang labis...
Ang proseso ng gluing photoresist ay katulad ng gluing ng protective film sa isang telepono.


6. Kapag ang photoresist ay nakadikit, ang textolite kasama nito ay dapat na dumaan sa isang laminator 2-3 beses o gumamit ng isang mainit na bakal at plantsa sa pamamagitan ng isang sheet ng papel na nakatiklop sa kalahati:


Ang pangunahing bagay ay hindi mag-overheat ng photoresist, kung hindi man ito ay magiging ganito:


Kung nakakuha ka ng "jamb" sa pagdikit ng photoresist, pagkatapos ay mas mahusay na tanggalin ito (labhan ito o kaskasin ito) at muling idikit, kung hindi, pagkatapos ng pag-ukit ng board ay malungkot ito ... hindi ko tatanggalin itong photoresist, ipapakita ko sa iyo ang resulta.
7. Maglagay ng template sa PCB na may photoresist at pindutin ito ng salamin (kinuha ko ito mula sa lumang frame ng larawan), at maglagay ng timbang sa baso:


8. Pinapaliwanag namin ang photoresist gamit ang UV lamp. Ang aking lampara ay tumatagal ng mga 2 minuto:


Tulad ng nakikita mo, ang photoresist na nakalantad ay nagbago ng kulay mula sa mapusyaw na asul hanggang sa madilim na asul, at ang nakalantad na photoresist ay napakarupok.
9. Alisin ang salamin at template. Ang labis na photoresist ay maaaring (opsyonal) na putulin at maingat na paghiwalayin gamit ang mga sipit:


10. Ang susunod na hakbang ay upang hugasan ang hindi nabuong photoresist na may alkali upang gawin ito, kumuha ng 2 baso ng tubig at isang kutsara ng soda ash, ihalo nang mabuti. Alisan ng balat ang tuktok na protective film ng photoresist at isawsaw ang aming textolite sa isang alkaline na solusyon.


11. Kumuha ng brush at kuskusin ang tatlong piraso ng photoresist sa alkali, unti-unting nahuhugasan ang hindi nabuong photoresist:


Hindi mo maaaring ibuhos ang alkali, ngunit iwanan ito sa susunod na board o upang hugasan ang photoresist pagkatapos ng pag-ukit, ngunit higit pa sa na mamaya...
12. Pag-ukit ng board:
Mayroong dalawang pinaka-naa-access na paraan: pag-ukit gamit ang ferric chloride o peroxide + citric acid at asin. Tungkol sa ferric chloride Hindi ako magsusulat, ngunit malamang na ilalarawan ko ito sa tulong ng peroxide:
- 100 ML. hydrogen peroxide 3% - ibinebenta ito sa isang parmasya para sa 7-12 rubles
- 30 gr. sitriko acid(magagamit sa anumang grocery store)
- 1 tbsp. kutsara ng asin (parehong masarap at batong asin ang gagawin)


Ang lahat ng ito ay halo-halong sa isang lalagyan at ang board na may natapos na photoresist ay inilubog doon, pagkaraan ng ilang sandali ay lumilitaw ang mga bula sa board:


At pagkaraan ng ilang oras, ang "hubad na tanso" ay ganap na maukit:


Oo nga pala, kung lason ka pa mataas na temperatura, halimbawa, na may isang maliwanag na lampara o sa isang paliguan ng tubig, pagkatapos ay ang tatlong ukit ay mababawasan, ang pangunahing bagay ay hindi labis na labis, kung hindi man ang labis ay maukit...
13. Ang pinaka-maginhawang paraan upang alisin ang photoresist ay sa parehong alkali kung saan ang hindi natanggal na photoresist ay nahuhugasan;

At narito ang aking mga "jambs":


Bagaman hindi makabuluhan, ngunit gayon pa man, ang kawalang-ingat ay dapat sisihin sa lahat, hindi napansin ang mga bula ng hangin sa ilalim ng photoresist o sobrang init...

Nakuha ko ang sumusunod na board na "malinis":


14. Susunod, mag-drill ng mga butas at lata ang board:


15. Ihinang ang lahat ng bahagi at hugasan ang labis na pagkilos ng bagay:


Soldered SMD component mula sa Chinese infrared istasyon ng paghihinang, napaka maginhawa:

Iyon lang, ang pinakamahirap na bahagi ay tapos na, ang natitira ay ang pag-ring sa mga track para sa paksa maikling circuit at simulan ang pagprograma ng chip.

Programming atmega644

1. Upang simulan ang programming, kailangan mong i-load ang bootloader dito. Hindi ito mahirap gawin gamit ang Arduino UNO, ngunit kailangan mo munang i-download at i-install ang program.
2. Ang susunod na hakbang sa naka-install na programa magdagdag o kumuha kaagad ng isang handa na pagpupulong:
3. Punan ang sketch ng UNO ArduinoISP:

4. At ikonekta ang aming board sa UNO:


Ayon sa mga tagubilin sa sketch:
// pangalan ng pin // pag-reset ng alipin: 10: // MOSI: 11: // MISO: 12: // SCK: 13:
Ito ay lumalabas ayon sa aking pamamaraan tulad nito:

5. Susunod, i-install ang aming board sa mga setting at i-load ang bootloader:




Kung naging maayos ang lahat, makikita natin ang mensahe: "Kumpleto na ang pag-record ng bootloader"
Sa puntong ito, nakumpleto ang paglo-load ng bootloader"a, maaari mong ikonekta ang display, mga pindutan, sensor ng temperatura at punan

Noong 2014, nakita ko ang isang video ng isang lalaking gumagawa ng beer mula sa beer wort concentrate. Natuwa ako sa ideya ng paggawa ng serbesa at pagkatapos ay nagsimula ito...
Ang paggawa ng serbesa mula sa de-latang pagkain ay naging hindi kawili-wili sa akin pagkatapos ng ikalawang pagkakataon at nagpasya akong lumipat sa all-grain. Minsan ay nagtimpla ako ng beer sa gas at napagtanto ko na hindi ito ang aking paraan. Nagpasya akong gawin itong awtomatiko. Ang mga gabi ay naging mas kawili-wili. Masyado akong nasangkot sa programming kaya nag-code ako hanggang 2-3 am. Kinailangan ang mga pagsubok tunay na kondisyon. Sa mga bin ay naghukay ako ng boiler at isang hiwa na baso.

At ito ang natapos ko

Ngayon sasabihin ko sa iyo kung paano gawin ang naturang automation.
Upang magsimula, kakailanganin namin ang mga sumusunod na detalye. Binili ko sila sa China.
ssd1289 o ili9341.
Solid state relay para sa pagkontrol sa heating element (o circuit diagram)
Solid state relay para sa pump control (para sa pump on alternating current) o (DC)
Thermal sensor o o
Power supply 7.5-9V 1A. Halimbawa
Mga konektor para sa pagkonekta ng isang sensor ng temperatura at isang bomba at
(higit pa)
(buzzer)
4.7 kOhm risistor

Mababang boltahe circuit

Sirkit ng kuryente. Mag-ingat ka. Kung hindi ka sigurado, magtiwala sa mga propesyonal.

Kinukuha namin ang wire cross-section depende sa kabuuang kapangyarihan ng pump at heating element. Ang isang solidong heating element ay nangangailangan ng radiator dahil... Hindi naman masyadong uminit. Inilalagay namin ang lahat sa isang kahon. Ina-upload namin ang firmware, i-configure ito at gumawa ng beer.

(mga tagubilin sa loob)

Pero pangunahing pag-andar Wala akong sapat. At nagpasya akong i-on ang wifi. Bumili ako ng ESP8266 module sa Aliexpress. Sabay order ko ng module kasi... Ang mga lalaki mula sa forum ay talagang hiniling na ipatupad ito sa proyekto (magagawa mo ito nang wala ito). At konektado ayon sa sumusunod na diagram

Para sa pagkain module ng wifi kailangan namin ng 5V power supply. Hindi mo magagamit ang arduino. Maaari kang gumamit ng hiwalay na power supply o i-convert ang 9V sa 5V. Upang gawin ito, maaari kang mag-ipon ng isang simpleng circuit na may stabilizer ng boltahe o bumili ng isang handa na mula sa Intsik. Halimbawa (mayroong maraming iba pang mga pagpipilian).

Ang susunod na hakbang ay ang pag-flash ng firmware ng aming module firmware ng NodeMCU. I-download. Ilunsad natin. I-click ang Start at hintaying matapos ang pag-upload ng firmware. nagtanong ka ba Magaling yan. Ngayon ini-load namin ang script. Para dito kailangan natin. Siyempre, may iba pang mga programa tulad ng . Ngunit hindi ko sila magawang gamitin sa aking module. Sa ESPlorer kami ay gumagawa bagong file init.lua na may sumusunod na nilalaman:

Pagpapalit ng pangalan mga wifi network at password para sa iyo. Itakda ang bilis sa 9600. Pindutin ang "Buksan" na buton (kung hindi ito kumonekta, pindutin ang i-reset ang mga pindutan sa modyul). At i-click ang "I-save sa ESP". Pagkatapos i-download ang script, dapat kumonekta ang module sa iyong router. Maaari mong suriin ito sa pamamagitan ng pag-log in sa router at pagtingin Mga kliyente ng DHCP. Kung hindi makikita ang iyong module doon, may nangyaring mali.

Ang web interface ay naglalaman ng mga sumusunod na function.
1. Pagsubaybay sa proseso. Maaari mong subaybayan ang temperatura, katayuan ng bomba, pagmamasa at pagganap ng paggawa ng serbesa. Ang web interface ay nilagyan ng naririnig na alarma.
2. I-load ang mga recipe sa memorya ng controller at sa isang flash drive.
3. Pagbuo ng isang pandaigdigang graph ng buong proseso ng pagluluto.






Mag-login sa web interface

Ako ay isang estudyante sa isang teknikal na unibersidad. Isang araw, nakaupo sa isang cafe kasama ang isang kaibigan na noon ay nag-aaral sa isang medikal na unibersidad, nagpasya silang magbukas ng isang bar. Mayroong maraming mga ideya na, sa prinsipyo, ay karapat-dapat ng ilang pansin. Halimbawa, isang dance floor na nagbabago ng anggulo ng hilig depende sa istilo ng musika... Ngunit, kasama ng lahat ng iba't ibang ideya, mayroon ding isa pa -

…hindi ba tayo dapat magtimpla ng sarili nating beer?

Makalipas ang ilang linggo, nagtimpla ako ng beer gamit ang mga sangkap mula sa serbeserya kung saan nagtatrabaho ang kaibigan ng aking ama. Pero marami teknolohikal na proseso ay nilabag, kaya sa halip na beer, may lumabas na hindi masyadong kaaya-ayang amoy.

Pagkalipas ng ilang taon, nagpasya akong ulitin ang proseso, automating ito ng kaunti gamit ang Arduino UNO. At ito ang nangyari.

Magsisimula ako sa kung ano ang dapat gawin ng buong setup.

  • Suriin ang iyong sarili - gumagana ba ang lahat, konektado ba ang lahat;
  • Linisin ang iyong sarili;
  • Maghanda para sa proseso ng paggawa ng serbesa;
  • Magtimpla ng beer sa sahig awtomatikong mode;
  • Mag-brew ng beer nang manu-mano;
  • Awtomatikong mag-brew ng beer (tulad ng washing machine naglalaba ng damit).

Unang punto sa sa ngayon hindi ipinatupad. Sa ngayon ay wala pa akong iniisip kung paano ito ipatupad.
Yung pangalawa, hindi rin na-implement, pero tatapusin ko in the near future, I’ll just wait for the pumps from ebay to be delivered.
Ang ikatlong punto ay medyo simple.

Paghahanda para sa proseso ng paggawa ng serbesa

Isang mensahe mula sa system na kinakailangang magbuhos ng tubig sa vat -> hinihintay ng program na pinindot ang OK key -> pinapadala ng program ang arduino ng command para i-on ang solid-state relay -> ang solid-state Ang relay ay lumiliko sa isang kilowatt heating element sa vat, dinadala ito sa temperatura na 37 degrees, nagpapadala ng utos sa programa na ang lahat ay handa na para sa pagluluto. Pinapanatili ang temperatura na 37 degrees.

Gusto kong magkaroon ng tseke para sa pagkakaroon ng tubig, ngunit naghihintay pa rin ang sensor na maipadala mula sa "mga kapatid na Tsino".

Brewing beer sa semi-awtomatikong mode

Sa prinsipyo, isang simpleng pamamaraan:

Mag-click sa programa ng kontrol"Pag-init" na buton, ang iba pang mga control button ay hindi aktibo;
- Pagkatapos ng pag-init, ipinapakita ng programa ang mensahe na "Handa na ang lahat, maaari kang magluto";
- Idagdag ang mga sangkap, piliin ang programa ng paggawa ng serbesa - ang pindutan ng "Brewing Beer" ay magiging aktibo;
- Pindutin ang pindutan ng "Brewing Beer", ang proseso ay nagsimula na;
- Susunod, pana-panahong aabisuhan ang system mga mensahe ng impormasyon ano ang gagawin at kailan.

Kailangan mong sundin ang mga tagubilin.

Manu-manong paggawa ng beer

Binibigyang-daan ka ng prosesong ito na magtakda ng mga parameter sa pagluluto at baguhin ang mga ito sa panahon ng ikot ng pagluluto. Hindi pa nakakarating dito.

Awtomatikong pagluluto

Ito ay isang panaginip. Sa kasalukuyan ay walang mga sangkap na ipapatupad. Walang sapat na mga pump at water level sensor. Hindi ko alam kung paano sukatin ang density ng wort, kung gaano karaming alkohol ang nasa batang beer, at marami pang iba. Ngunit hindi ako nawawalan ng pag-asa at unti-unting mag-o-automate hanggang sa magmukhang ganito ang paggawa ng beer:

Inihagis ko ang mga sangkap sa naaangkop na mga tray, pinindot ang buton at... pagkaraan ng isang buwan at kalahati ay natanggap ko ang natapos na beer.

Ito ay isang maikling pangkalahatang-ideya ng proseso, ngayon ay lumipat tayo sa teknikal na bahagi.

Teknikal na bahagi ng proseso

Tulad ng nakasaad sa itaas, ang control microcontroller ay arduino UNO. 2 relay ang konektado dito, 2
digital thermometer DS18B20.

Nakikipag-ugnayan ang Arduino sa pangunahing programa sa pamamagitan ng com port. kasi Wala akong real-time na nameplate para sa arduino, kailangan kong kumuha ng mga timer mula sa visual c#. Wala akong karanasan sa pagsusulat ng mga programa, kaya kung sinuman ay may anumang mga ideya o kritisismo, ako ay pararangalan. Pumuna, punitin, kumbaga, kung biglang hindi mo nagustuhan.

Narito ang teksto ng programa sa arduino

#isama OneWire ds(8); // Ang mga sensor ng temperatura ay matatagpuan sa pin 8 int reley1 = 13; int reley2 = 12; int reley3 = 11; int reley4 = 10; int reley5 = 7; //paganahin ang tens int reley6 = 6; // init sa 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); i": infuz(); break; case "p": progrev(); break; case "a": avariya (); break; case "v": varka(); break; case "t": break; ) ) void varka() ( digitalWrite(reley6, HIGH); while(Serial.read()! ="m") ( temperature(); 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); habang (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) //delay(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"); ) void accident())( digitalWrite(reley1,LOW); digitalWrite(reley2,LOW); digitalWrite(reley3,LOW); digitalWrite(reley4,LOW); digitalWrite(reley5,LOW); ) void temperature() ( byte i ; byte present = 0; byte na addr; , 59, 4, 0, 234); //address ng temperature sensor sa brewing tank na float celsius; ."); //Serial.println(); ds.reset_search(); delay(250); // return; ) if (OneWire::crc8(addr, 7) != addr) ( Serial.println("CRC ay hindi wasto!"); // return; ) ds.reset(); ds.select(addr); ds.write(0x44, 1); // simulan ang conversion, na may parasite power on sa end delay(840) ; // siguro ay sapat na ang 750ms, maaaring hindi // maaari tayong gumawa ng ds.depower() dito, ngunit ang pag-reset ang bahala dito = ds.reset(); i = 0; i

Magiging maayos ang lahat, ngunit sa ilang kadahilanan ang pangatlong sensor ay patuloy na nagpapakita ng 85 degrees. Hindi ko pa masabi kung bakit. At ito ay kinakailangan para sa karagdagang automation - pagpapanatili ng temperatura sa refrigerator.

Ilalarawan ko nang maikli kung ano ang ginagawa ng programa.

Ang programa ay nahahati sa mga subroutine, na ang bawat isa ay isinaaktibo kung ang isang tiyak na simbolo ay lilitaw sa com port. Halimbawa, kung ang titik na "p" ay pumasok sa port, ang "Warming" mode ay isinaaktibo. O, kung "a", pagkatapos ay ang avariya() subroutine ay tinatawag at lahat ay naka-off. Kapag tinatawag ang temperature() subroutine, isinusulat ang data sa mga global variable na temp1, temp2. Mula doon nakapasok sila sa mga kinakailangang subroutine.

Sa hinaharap, magkakaroon ng mga subroutine para sa paggawa ng iba't ibang uri at maging ang moonshine.

Ngayon, tungkol sa pangunahing programa ng kontrol.

Pangunahing programa ng kontrol

Ito ay nakasulat sa visual studio c#.

Source code ng programa:

gamit ang System; gamit ang System.Collections.Generic; gamit ang System.ComponentModel; gamit ang System.Data; gamit ang System.Drawing; gamit ang System.Linq; gamit ang System.Text; gamit ang System.Threading.Tasks; gamit ang System.Windows.Forms; gamit ang System.IO.Ports; namespace WindowsFormsApplication1 ( public partial class Form1: Form ( // String portnumber; SerialPort Port1 = new SerialPort("COM5", 9600); int s=0; public Form1() ( InitializeComponent(); ) /*private const int CP_NOCLOSE_BUTTON = 0x200; protektadong override CreateParams CreateParams ( get ( CreateParams myCp = base.CreateParams; myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON; ibalik ang myCp; ) )*/ private void Form1_Load(sender ng object.Text, Event2Args e) PortName; Port1.Open() //Checking equipment private void button1_Click(object sender, EventArgs e) ( kung (Port1.IsOpen == false) ( subukan ( //ang programa ay maaaring baguhin ang impormasyon mula sa podrugomu.com/node /987 Port1.PortName = label2.Text; Port1.Write("Check"); //SerialPort Port2 = new SerialPort("COM4", 9600); ReadByte()); //checking the port readings MessageBox.Show("Nagsimula na ang proseso ng pagsusuri ng hardware", "Mensahe ng impormasyon"); PortName = label2.Text; Teksto; Maaari kang magdagdag ng malt at i-on ang mashing mode"); richTextBox1.Text = richTextBox1.Text + "\n" + "Pagtatapos ng proseso ng paghahanda ng mash tun. Т=37 degrees" + " " + DateTime.Now.ToString("HH:mm"); button2.Enabled = true; ) ) private void emergencyDisableToolStripMenuItem_Click(object sender, EventArgs e) ( Port1.WriteLine("a"); MessageBox.Show("The user has shut down the entire system"); 60 minuto") ; richTextBox1.Text = richTextBox1.Text + "\n" + "Naka-on ang Mash tun boiling mode" + " " + DateTime.Now.ToString("HH:mm") private void timer3_Tick. (object sender, EventArgs e) ( string 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 ++ kung (s == 900) ( Port1.WriteLine("m"); MessageBox.Show; ("Write stage at 62 degrees"); richTextBox1.Text = richTextBox1.Text + "\n" + "Mash stage sa 62 degrees" + " " + DateTime.Now.ToString("HH:mm");

Source code ng programa

Nakikipag-ugnayan ang program sa arduino sa pamamagitan ng com port. Ang tanging bagay na hindi ko madaig ay kapag ang botohan sa com port, ang programa ay hindi nag-freeze habang ang subroutine ay isinasagawa. Matapos ang pagtatapos ng subroutine, ang programa ay nag-hang, ngunit sa ngayon ito ay hindi kritikal at kahit isang uri ng plus. Foolproof - upang pigilan ka sa pagpindot ng anuman sa panahon ng isang tiyak na pamamaraan.

Sa kabuuan, maaari ang programa
- maghanda ng kagamitan para sa pagluluto;
- magluto;
- magsulat ng isang simpleng log ng trabaho (napakapakinabang para sa karagdagang pagsusuri ng paggawa ng serbesa);
pakuluan ang brewer at mash tun.

Kapag dumating na ang mga pump at solenoid valve, i-automate ko pa ang mga ito. Samantala, magdadagdag ako ng isang programa sa pagluluto tuwing Linggo. Magkakaroon ng 5 mga programa sa kabuuan. Ang pagpapatupad ng manual mode ay naghihintay din sa oras nito.
Tulad ng sinasabi nila,

itutuloy...

UPD:

Narito ang ilang mga larawan ng brewery

Ito ay isang digester. Mayroon akong dalawa nito. Ang isang sensor ng temperatura ng DS18B20 sa isang selyadong frame ay naka-install sa gilid.
Sa loob ng mahabang panahon hindi ko maintindihan kung bakit pana-panahong nagyeyelo ang arduino, hanggang sa napagtanto ko na ang lahat ay kailangang i-ground, kung hindi, ito ay masisira sa pabahay, pagkatapos ay sa pabahay ng sensor at sa arduino.

Ang tansong tubo sa loob ay para sa pagsala ng wort. Maaari itong gawing mas maganda, ngunit mas mahusay na gumamit ng isang maling ilalim. Sa kasamaang palad, ang mga Intsik ay hindi nagmamadaling ipadala ito.

Masyado pang maaga para pag-usapan ang resulta, eto ang nangyari

Ang pangkalahatang view ng vat ay ganito.

Gumamit ng mga regular na konektor
para sa pagkonekta ng mga sensor ng temperatura, na konektado sa isang double socket. Ito ay mas maginhawa upang hugasan ang kagamitan. Pinatay ko ito at dinala sa banyo. Hinugasan ko ito, ikinonekta ito at gumagana ang lahat.

Ang lahat ay bumubula ayon sa iskedyul, walang labis na tumagas. At ang aking agarang plano ay mag-alis ng isang batch ng beer para sa karagdagang pagbuburo at magtimpla ng isa pa. Ang recipe, sa prinsipyo, ay maaaring matingnan sa code sa varka() subroutine ng arduino.

Ang mga solenoid valve ay dumating na sa wakas. Nagpapatuloy ang proseso ng automation.

Ang pag-automate sa modernong lipunan ay isang kinakailangang sukatan, dahil sa digital na edad napakahalaga na alisin ang kadahilanan ng tao sa iba't ibang mga industriya upang mai-standardize at mapabuti ang kalidad ng produkto. Mayroon ding mga lugar kung saan ang mga tao ay hindi maaaring gawin kung ano ang kaya ng mga robot, halimbawa, ang paggawa ng mga nanomaterial at microcircuits.

Gayunpaman, ang automation ay hindi lamang nakakatulong sa produksyon, ngunit maaari rin itong maging kapaki-pakinabang para sa karaniwang tao. Halimbawa, ang automation para sa isang brewery gamit ang Arduino ay maaaring makabuluhang pasimplehin ang proseso ng paggawa ng isang produkto. Alamin natin kung paano makakatulong ang automation para sa pagwawasto sa Arduino at iba pang bagay, at tingnan ang mga halimbawa.

Ang mga pangunahing bentahe ng mga awtomatikong sistema batay sa Arduino microcontroller

Walang pumipigil sa iyo sa paghihinang ng iyong sariling board at pagprograma nito mismo gamit ang mababang antas ng mga wika. Gayunpaman, ang automation gamit ang Arduino at mga handa na microcontroller ay lubos na mapadali ang buong proseso at makatipid ng oras. Pagkatapos ng lahat, mas madaling bumili ng isang handa na produkto na may isang hanay ng mga aklatan at iakma ito sa iyong mga pangangailangan. At ang abot-kayang automation sa Arduino mega 2560 ay maaaring maging kapaki-pakinabang sa maraming bahagi ng buhay, mula sa voice switch para sa isang matalinong tahanan hanggang sa mga electric latch na may motion detector. Ang mga pangunahing bentahe na sikat sa Arduino automation ay:

  1. Mababang hadlang sa pagpasok. Hindi na kailangang makakuha ng edukasyon ng isang inhinyero; ito ay sapat na upang manood ng ilang mga video ng pagsasanay at magkaroon ng isang pundasyon sa programming.
  2. Isang malaking bilang ng mga naihanda nang aklatan. Ang Arduino ay ginagamit sa buong CIS ng maraming mahilig sa robotics, hanggang sa punto na ang paggawa ng iba't ibang electronics ay naging kanilang libangan. Alinsunod dito, ang komunidad ng gumagamit sa online ay lubos na aktibo, nag-post ng isang malaking bilang ng mga blangko at handang tumulong sa iyo na malutas ang anumang mga problema. Ang kalidad ng mga aklatan ay naghihirap dahil sa mababang limitasyon ng pagpasok, ngunit walang sinuman ang nagbabawal sa iyo na lumikha ng iyong sarili ay sapat na upang pag-aralan ang mga semantika ng wikang C++ o gumamit ng mga yari na tagasalin.
  3. Ang isang malaking bilang ng mga peripheral. Hindi mahalaga kung kailangan mo ng Arduino-based na greenhouse automation o isang light sensor, makakahanap ka ng anumang mga module, kabilang ang mga sound sensor at voice recogniser. Oo, ang ilang mga board ay nagkakahalaga ng maraming pera, ngunit maaari kang palaging makahanap ng murang mga analogue, halimbawa, ang esp8269 wi-fi module mula sa mga tagagawa ng third-party, na nagkakahalaga ng 10 beses na mas mababa kaysa sa opisyal.
  4. Maraming impormasyon. Ang anumang problemang kinakaharap mo ay nahaharap na ng ibang tao, at malamang na makakahanap ka ng solusyon sa Google. Mayroon ding kumpletong literatura na maaari mong konsultahin.

Gayunpaman, huwag isipin na ang Arduino ay walang mga bahid. Ang board ay sikat sa mababang pagganap nito. Sa partikular na kumplikadong mga gawain at may malaking halaga ng code, ang oras ng pagtugon ay maaaring umabot ng 1 segundo, na hindi katanggap-tanggap para sa mga microcontroller. Ang flash memory ng karamihan sa mga module ay hindi lalampas sa 1 MB, na hindi sapat upang lumikha ng mga neural network o gumamit ng mga media file. Siyempre, maaari mong ikonekta ang isang auxiliary memory card, ngunit pinatataas nito ang oras ng pagtugon, nangangailangan ng karagdagang mga mapagkukunan upang paganahin ito at ginagawa sa paraang semi-handicraft.

Gayunpaman, ang mga simpleng automated system, halimbawa, para sa paggawa ng serbesa o greenhouses, ay hindi nangangailangan ng kahit isang bahagi ng mga mapagkukunan na maibibigay ng board. Alinsunod dito, mahahanap ng karamihan sa mga gumagamit ang mga pagkukulang na ito na walang kahulugan. Kung magpasya kang mag-assemble ng iyong sariling 3-D printer o isang mas kumplikadong disenyo, dapat mong tingnan nang mas malapit ang mga analogue. Ngunit ang hadlang sa pagpasok para sa mga kakumpitensya ng Arduino ay magiging mas mataas.

Halimbawa ng proseso ng automation batay sa Arduino microcontroller

Ang pinakasimpleng halimbawa ng pag-aautomat ng proseso ay maaaring isang greenhouse gamit ang Arduino. Upang lumikha ng anumang sistema, ito ay nagkakahalaga ng malinaw na pagtukoy sa mga gawain na dapat nitong gawin. Gamit ang isang greenhouse bilang isang halimbawa, ito ay magiging:

  1. Paglikha ng isang espesyal na klima.
  2. Napapanahong pag-on at off ng ilaw.
  3. Napapanahong pagtutubig ng mga halaman at pagpapanatili ng kahalumigmigan ng hangin sa parehong antas.

Batay sa mga gawaing ito, mapapansin mo kaagad kung ano ang kailangan mong bilhin para sa pangunahing board:

  1. Sensor ng temperatura. Sisiguraduhin nito na ang hangin ay hindi umiinit o lumalamig, na nasa loob ng mga limitasyon na itinakda ng programa. Kung magbabago ang temperatura, bubuksan ng board ang air conditioner o mga elektronikong baterya.
  2. Light sensor. Siyempre, maaari mong limitahan ang iyong sarili sa isang software solution at bumili ng mga mamahaling lamp na gayahin ang liwanag ng araw. Ngunit kung nais mong lumikha ng isang ganap na greenhouse, kung gayon magiging mas maginhawang mag-install ng isang awtomatikong kisame, na kinokontrol ng Arduino.
  3. Sensor ng kahalumigmigan. Narito ang lahat ay pareho sa temperatura, ayon sa inireseta na sitwasyon, ang board ay i-on ang mga sprayer at humidifier, kung kinakailangan.

Kapag binili mo ang lahat ng kinakailangang mga module, ang natitira lamang ay i-program ang mga ito. Pagkatapos ng lahat, nang walang code, ito ay mga piraso lamang ng hardware na walang kakayahan sa anumang bagay.

Programming Arduino microcontrollers para sa pag-aautomat ng proseso. Halimbawa

Tulad ng sa nakaraang punto, para sa programming mahalagang hatiin ang gawain sa magkahiwalay na mga sub-point at gawin ang mga ito nang sunud-sunod. Nagaganap ang Arduino programming salamat sa mga utos sa interface ng AT at AT+, gamit ang mga inihandang aklatan. Alinsunod dito, ang lahat ng mga script ay nakasulat sa isang espesyal na kapaligiran sa C++ at, bago gumawa ng anuman, maglaan ng oras sa pag-aaral ng mga semantika nito. Bilang karagdagan sa pagsasagawa ng mga simpleng function, ang system ay may kakayahang mag-imbak ng mga script sa flash memory, na kung ano ang kailangan natin sa halimbawang ito.

Huwag kalimutan na ang impormasyon mula sa bawat sensor ay dumating sa real time at bilang mga variable, ngunit maaari mong limitahan ang oras ng pagtugon, dahil hindi na kailangang gumastos ng mga mapagkukunan at patuloy na sukatin ang bawat parameter. Alinsunod dito, itakda ang oras ng pag-on at pag-off para sa bawat sensor o itakda ang oras ng pagtugon para sa isang tiyak na panahon.