Višekanalni termostat na arduino uno. Ventilator koristeći Arduino, koji ovisi o temperaturi. Komponente PID kontrolera

Šematski dijagram domaćeg četvorokanalnog termostata sa prikazom temperature, izgrađen na bazi Arduino UNO, LM325 i sa 1602A displejom, omogućava vam kontrolu četiri odvojena opterećenja.

Ovdje opisujemo nadograđenu verziju uređaja, koji osim što pasivno mjeri i pokazuje temperaturu, može kontrolisati i četiri grijača kako bi održavala zadatu temperaturu na četiri različita mjesta, gdje je u prvoj verziji bilo moguće samo mjerenje temperature.

Rad četverokanalnog termometra i njegov program je vrlo detaljno opisan u prethodnom članku (L.1), pa ćemo ovdje govoriti samo o promjenama za implementaciju rada četverokanalnog termostata.

Shematski dijagram

Šematski dijagram je prikazan na slici 1.

Rice. 1. Šematski dijagram termostata na Arduino UNO, LM325 sa 1602A displejom.

Za razliku od prvog kola (L.1), ovde se nalaze četiri tranzistorska prekidača napunjena na namotajima releja K1-K4, koji upravljaju četiri različita grejna uređaja (H1-H4). Kontrolne komande za ove tipke dolaze sa četiri digitalna porta D9-D12 ARDUINO UNO ploče.

Program

Program je prikazan u tabeli 1.

Tabela 1.

Prva razlika je u tome što su priključci predviđeni za kontrolu grijača. Ovo su portovi D9-D12, oni su navedeni ovdje:

pinMode(12, IZLAZ);

pinMode(11, IZLAZ);

pinMode(10, IZLAZ);

pinMode(9, IZLAZ);

Možete odabrati druge slobodne digitalne portove; nakon povezivanja indikatora ostaju D8 i D13. Ali autor je izabrao ove: D9, D10, D11, D12. Druga razlika je u tome što se funkcija if comparator koristi za upravljanje grijačima. u redovima:

if(temp< -15)digitalWrite(12, HIGH);

if(temp > -15)digitalWrite(12, LOW);

if(tempi< 1)digitalWrite(11, HIGH);

if(tempi > ​​1)digitalWrite(11, LOW);

if(temp2< 20)digitalWrite(10, HIGH);

if(temp2 > 20)digitalWrite(10, LOW);

if(temp3< 10)digitalWrite(9, HIGH);

if(temp3 > 10)digitalWrite(9, LOW);

Ove linije pokazuju na kojoj temperaturi, koji logički nivo bi trebao biti na odgovarajućem portu. Na primjer, ako je temperatura prvog senzora (T1) ispod -15°C, na portu D12 će biti logičan. Kada je temperatura drugog senzora (T2) ispod 1°C, na portu D11 će se pojaviti logičan.

Kada je temperatura trećeg senzora (TZ) ispod 20°C, na portu D10 će se pojaviti logičan. Kada je temperatura četvrtog senzora (T4) ispod 10°C, na portu D9 će se pojaviti logičan senzor. Naravno, možete podesiti potpuno različite temperature - one koje su potrebne za konkretnu primjenu ovog uređaja.

Štoviše, već u gotovom uređaju, mogu se lako promijeniti ako je potrebno. Da biste to učinili, potrebno je da povežete lični računar na USB port ARDUINO UNO ploče i učitate program sa drugim podacima o temperaturnim pragovima. U principu, za to možete osigurati USB konektor na tijelu gotovog uređaja.

Obično u "tipičnom" termostatu postoji petlja histereze, odnosno krug koji stvara razliku između temperature na kojoj se grijač uključuje i temperature na kojoj se isključuje. Ovo je neophodno kako se grijač ne bi često uključivao/isključio. Ovo je posebno važno ako se grijač kontrolira pomoću elektromagnetnog releja.

Budući da kontakti releja nisu dizajnirani za ovaj način rada i mogu brzo otkazati zbog izgaranja zbog varničenja. Ali histereza unosi grešku u rad termostata. Ovdje je odlučeno da se ne stvara histereza, već da se osigura da se kontakti releja ne prebacuju prečesto, jednostavno usporite rad uređaja. Da biste to učinili u liniji:

Vrijeme prikaza je povećano na tri sekunde. Kao rezultat toga, mjerenja se ponavljaju u periodu od tri sekunde, a u svakom slučaju, relej se ne može uključiti više od jednom u tri sekunde.

Detalji

Bilo koji elektromagnetski releji K1-K4 mogu se koristiti sa 12V namotajima i kontaktima koji su dovoljno snažni za kontrolu određenih grijača.

Izlazni stupnjevi se mogu napraviti pomoću drugih kola, na primjer, pomoću opto-mistora. U ovom slučaju, LED diode optosimitora ili takozvanih “solid-state releja” su povezane na odgovarajuće portove ARDUINO UNO ploče preko otpornika za ograničavanje struje.

Karavkin V. RK-08-17.

Literatura: 1. Karavkin V. - Četverokanalni termometar na ARDUINO UNO, RK-06-17.

Glavni zadatak regulatora hladnjaka je održavanje zadane temperature u komori. Regulator temperature će to učiniti promjenom električne energije na Peltier modulu.

U prethodnoj lekciji razvili smo regulator snage. Veza između regulatora snage i temperature izgleda ovako.

  • Regulator temperature prima izmjerenu temperaturu, upoređuje je sa postavljenom temperaturom i izračunava zadanu vrijednost snage za regulator snage.
  • Regulator snage generiše PWM koji odgovara navedenoj snazi.

Regulator snage smo izgradili prema zakonu o integralnoj regulaciji. Za stabilizaciju temperature koristit ćemo složeniji algoritam upravljanja - proporcionalno-integralno-derivativni (PID) regulator.

PID kontroler.

U prethodnoj lekciji sam detaljno govorio o . Naglasio je njegove prednosti i nedostatke.

Regulator koji radi na ovom principu ima visoku preciznost. Preostali kriterijumi za kvalitet regulacije – brzina i stabilnost – nisu na nivou.

Da bi se postigle visoke performanse za sve kriterijume, potrebno je koristiti regulator koji kombinuje različite regulatorne zakone.

Proporcionalno-integralno-derivativni (PID) kontroler je upravo takav uređaj. On generiše izlazni signal koji je zbir tri komponente sa različitim karakteristikama prenosa. Zahvaljujući tome, PID kontroler obezbeđuje visoka kvaliteta regulacija i omogućava vam da optimizirate upravljanje prema individualnim kriterijima.

Sljedeće su uključene u generiranje izlaznog signala PID regulatora:

  • Proporcionalna komponenta– vrijednost je proporcionalna grešci neusklađenosti (razlici između navedene i stvarne vrijednosti kontroliranog parametra).
  • Integrirajuća komponenta– integral greške neusklađenosti.
  • Diferencijalna komponenta– derivat greške neusklađenosti.

Matematički oblik pisanja zakona PID regulatora je:

o(t) = P + I + D = K p e(t) + K i ∫e(t)dt + K d de(t)/dt

  • o(t) – izlazni signal;
  • P – proporcionalna komponenta;
  • I – integrirajuća komponenta;
  • D – diferencirajuća komponenta;
  • Kp, Ki, Kd – koeficijenti proporcionalnih, integrirajućih, diferencirajućih karika;
  • e(t) – greška neusklađenosti.

U šematskom obliku, PID regulator se može predstaviti na sljedeći način.

Blok dijagram PID regulatora napona U izgleda ovako.

  • Izmjereni napon Ureal(t) oduzima se od datog Useta.
  • Rezultirajuća greška neusklađenosti e(t) se dovodi u proporcionalne, integrirajuće i diferencirajuće veze.
  • Kao rezultat zbira komponenti, dobija se kontrolno dejstvo o(t), koje se primenjuje na kontrolni element.

Prilikom implementacije PID kontrolera u softver, proračuni izlaznog signala se dešavaju u pravilnim intervalima. One. Regulator je diskretan u vremenu. Stoga ću dalje koristiti izraze: prethodno stanje signala, prethodna vrijednost itd. Govorimo o stanju sistema na prethodnoj tački uzorkovanja.

Komponente PID kontrolera.

Opet. Izlazni signal PID regulatora je zbir tri komponente:

  • proporcionalno;
  • integrisanje;
  • razlikovanje.

Proporcionalna komponenta.

P(t) = K p * e(t)

Nema memorije, tj. vrijednost izlaznog signala ne zavisi od prethodnog stanja sistema. Jednostavno se sljedeća greška, pomnožena faktorom, prenosi na izlaz. Izlazni signal kompenzira odstupanje kontroliranog parametra. Što je veća greška neslaganja, to je veći signal. Ako je greška 0, izlazni signal je također 0.

Proporcionalna komponenta ne može u potpunosti kompenzirati grešku. To se vidi iz formule. Izlazni signal je Kp puta veći od greške. Ako je greška neusklađenosti 0, tada je izlazni signal kontrolera 0. I onda nema ničega za kompenzaciju.

Stoga kod proporcionalnih regulatora uvijek postoji takozvana statička greška. Može se smanjiti povećanjem Kp koeficijenta, ali to može dovesti do smanjenja stabilnosti sistema, pa čak i do autooscilacija.

Nedostaci proporcionalnih regulatora uključuju:

  • prisustvo greške statičke regulacije;
  • niska stabilnost sa povećanjem koeficijenta.

Postoji značajna prednost:

  • Regulacija velike brzine. Reakcija proporcionalnog regulatora na sljedeću grešku ograničena je samo vremenom uzorkovanja sistema.

Regulatori koji rade samo po proporcionalnom zakonu se rijetko koriste.

Glavni zadatak proporcionalne komponente u PID regulatoru je povećanje performansi.

Integrirajuća komponenta.

I(t) = K i ∫e(t)dt

Proporcionalno integralu greške neusklađenosti. Uzimajući u obzir vremensku diskretnost kontrolera, možemo napisati ovo:

I(t) = I(t -1) + K i * e(t)

  • I(t-1) – vrijednost I na prethodnoj tački uzorkovanja.

Greška neusklađenosti se množi sa koeficijentom i dodaje prethodnoj vrijednosti integrirajuće veze. One. izlazni signal se akumulira cijelo vrijeme i vremenom povećava svoj utjecaj na objekt. Tako se greška neusklađenosti u potpunosti kompenzira čak i za male vrijednosti greške i koeficijenta Ki. U stacionarnom stanju, izlazni signal kontrolera u potpunosti osigurava integrirajuća komponenta.

Nedostaci integralnog regulatora uključuju:

  • niske performanse;
  • osrednja stabilnost.

dostojanstvo:

  • Sposobnost potpune kompenzacije greške neusklađenosti pri bilo kojem pojačanju.

U praksi se često koriste integrirajući regulatori (samo integrirajuća komponenta) i proporcionalno-integrirajući regulatori (integrirajuće i proporcionalne komponente).

Glavni zadatak integrirajuće veze u PID regulatoru je da kompenzira statičku grešku i osigura visoku točnost upravljanja.

Diferencijalna komponenta.

D(t) = K d de(t)/dt

Proporcionalno stopi promjene sljedeće greške. Neka vrsta indikatora ubrzanja greške neslaganja. Diferencijalna komponenta predviđa odstupanja kontroliranog parametra u budućnosti i suprotstavlja se tom odstupanju. Po pravilu kompenzuje kašnjenja u uticaju regulatora na objekat i povećava stabilnost sistema.

Uzimajući u obzir vremensku diskretnost regulatora, diferencirajuća komponenta se može izračunati na sljedeći način:

D(t) = K d * (e(t) - e(t -1))

Pokazuje koliko se vrijednost greške neusklađenosti promijenila tokom jedne vremenske jedinice diskretnosti kontrolera.

Ne postoje regulatori koji se sastoje od jedne diferencirajuće karike.

Glavni zadatak diferencirajuće veze u PID regulatoru je povećanje stabilnosti.

Podešavanje PID kontrolera.

Kvalitet upravljanja PID regulatorima u velikoj mjeri ovisi o tome koliko su koeficijenti optimalno odabrani. Koeficijenti PID regulatora se u praksi određuju u sistemu sa realnim objektom odabirom. Postoje različite metode postavljanja. Govoriću samo o opštim principima.

Kvalitet regulacije se ocjenjuje prema prolaznom odzivu regulatora. One. prema grafikonu promjena kontroliranog parametra u vremenu.

Tradicionalnim tačkama sekvence podešavanja PID regulatora, dodao bih da je, prije svega, potrebno odlučiti koji su kriteriji kvalitete upravljanja poželjniji.

U prethodnoj lekciji, pri projektovanju regulatora snage, prvenstveno nas je zanimala tačnost i stabilnost. Čak smo i umjetno smanjili učinak. Neki regulatori rade u uslovima značajne buke i stabilnost im je važnija, dok drugi zahtevaju visoke performanse čak i nauštrb tačnosti. Kriterijumi za optimizaciju mogu varirati. Općenito, PID kontroleri su konfigurisani da osiguraju da su svi kriterijumi kvaliteta kontrole na visokom nivou.

Komponente PID kontrolera se konfigurišu zasebno.

  • Integrirajuća i diferencirajuća karika se isključuju i bira se koeficijent proporcionalne veze. Ako je regulator proporcionalno-integrirajući (nema diferencirajuće veze), postiže se potpuno odsustvo oscilacija u prijelaznom odzivu. Prilikom postavljanja regulatora na veliku brzinu, oscilacije mogu ostati. Veza za razlikovanje će pokušati da ih nadoknadi.
  • Veza za razlikovanje je povezana. Njegov koeficijent ima za cilj da eliminiše fluktuacije u kontrolnom parametru. Ako to ne uspije, smanjite proporcionalni koeficijent.
  • Zbog integrirajuće veze uklanja se zaostala greška neusklađenosti.

Podešavanje PID kontrolera je iterativno po prirodi. One. tačke za odabir koeficijenata mogu se ponavljati mnogo puta dok se ne postigne prihvatljiv rezultat.

Zbog svojih visokih performansi i svestranosti, PID kontroleri se široko koriste u sistemima industrijske automatizacije.

U sljedećoj lekciji ćemo razviti PID regulator temperature.

On će s vama podijeliti svoje iskustvo stvaranja pametnog kontrolera rotacije ventilatora, koristeći termalni senzor, LCD zaslon i, naravno, Arduino.

Prije nekoliko mjeseci pročitao sam brojne članke o Arduinu i jako sam se zainteresirao za ovaj uređaj, te sam ubrzo odlučio da ga kupim. Treba napomenuti da sam daleko od mikroelektronike, pa mi se ploča svidjela prvenstveno zbog relativne lakoće korištenja. Baveći se LED diodama i “Hello world” sistemima, želio sam da uradim nešto praktično, a da se u isto vrijeme bolje upoznam sa mogućnostima Arduina. Imajući u vidu nenormalno vruće ljeto 2010. godine, nastala je ideja da se sklopi hladniji regulator brzine u zavisnosti od temperature sa svim povezanim karakteristikama prikazanim na LCD-u. Nadam se da će ova šema ili njene varijacije nekome biti od koristi, pa sam odlučio da objavim svoje skice.

Za ovu šemu trebat će nam:

  • Zapravo sama ploča Arduino ili slično;
  • Bread board za sastavljanje komponenti kola;
  • Displej WH1601A-NGG-CT sa uključenim trim otpornikom 20 kOhm ili slično;
  • Otpornici – 220 Ohm, 10 kOhm, 4,7 kOhm;
  • Bipolarni tranzistor SS8050D ili slično;
  • Digitalni temperaturni senzor DS18B20;
  • Diode 1N4148 ili ekvivalent;
  • Fan aksijalni trožični (12V), na primjer - kompjuter;
  • Jack konektor ishrana 2,1/5,5 mm.

Hladnjak kompjutera ima tri žice, od kojih se dva - crvena (+12V) i crna (GND) koriste za napajanje, a treća (žuta) je povezana na obrtomjer izgrađen na Hall elementu. Nažalost, 5V sa ploče nam očigledno nije dovoljno, ali 6 Arduino digitalnih izlaza može raditi u PWM modu (označeni su na samoj ploči bijelim kvadratićima ili slovima PWM), tako da možemo regulirati dovod signala sa ploče. na relej, koji će biti odgovoran za promjenu napona koji se dovodi do ventilatora.

Dobit ćemo informacije o okretajima od treće žice od tahometra, koristeći modificiranu metodu zasnovanu na implementaciji prekida, koji za većinu Arduina može doći do digitalnih pinova 2 (prekid 0) i 3 (prekid 1). Inače, Arduino Mega ima 4 dodatna pina sa mogućnošću primanja prekida.

Sada treba da se pozicionirate digitalni temperaturni senzor, čije ćemo podatke koristiti za regulaciju napona koji se dovodi na digitalni izlaz pomoću PWM-a, a samim tim i za „otvaranje“ kanala napona ventilatora. Dallas senzori imaju svoju Arduino biblioteku - DallasTemperature, koju ćemo kasnije povezati u skici. Biblioteka se mora raspakovati u arduino-0018/libraries/ direktorijum.

Poslednja stvar koja je ostala je spojite LCD, gdje ćemo prikazati sve trenutne informacije o temperaturi i brzini ventilatora. Pošto sam koristio ekran WH1601A za izradu, možda postoje poznati problemi sa prikazivanjem linija. Da bismo ih eliminisali, koristićemo biblioteku LiquidCrystalRus, koja se takođe mora raspakovati u direktorijum arduino-0018/libraries/.

//Poveži biblioteku za temperaturni senzor#include //Poveži biblioteku za LCD#include #define PowerPin 9 // pin za kontrolu snage ventilatora#define HallSensor 2 // pin za senzor brzine ventilatora (prekid)#define TempPin 7 // pin za temperaturni senzor LiquidCrystalRus lcd(12, 11, 10, 6, 5, 4, 3); //Connect LCD DallasTemperature tempSensor; int NbTopsFan, Calc, fadeValue; //cijelobrojne varijable za proračune float temper; //stvarna varijabla za pohranjivanje temperature typedef struktura( // Uvesti novi tip varijabli za obožavatelje char fantype; unsigned int fandiv; )fanspec; //Niz varijabli novog tipa fanspec fanspace=((0,1),(1,2),(2,8)); //Varijabla odgovorna za odabir tipa senzora ventilatora (1 – unipolarni Hall senzor, 2 – bipolarni Hall senzor) char ventilator = 2; //Ova funkcija će biti pozvana svaki put kada prekinemo void rpm() (NbTopsFan++;) // Funkcija za izračunavanje primijenjenog napona na digitalni pin s PWM void temp() (fadeValue = min(int(temper*7),255); // Pomnožite temperaturu sa koeficijentom, // uzimamo cijeli broj iz proizvoda } // Jer maksimalna PWM vrijednost je 255, tada nema smisla davati više - uzmite minimalno dva void postaviti() (tempSensor.begin(TempPin); //Pokreni senzor temperature lcd.begin(16, 2); //Podesite karakteristike LCD-a lcd.setDRAMModel(LCD_DRAM_WH1601); //I prikaz tipa pinMode (HallSensor, INPUT ); // Konfiguriraj pin za primanje prekida attachInterrupt(0, rpm, RISING); //Vežemo prekid broj 0 za našu funkciju, i on će se izračunati svaki put kada se signal promijeni) void petlja() ( temper = tempSensor.getTemperature(); // Dobiti temperaturu temp(); // Izračunajte dovedeni napon na PWM analogWrite(PowerPin, fadeValue); // Feed it NbTopsFan = 0; // Resetirajte varijablu koja sadrži okretaje na nulu kašnjenje (1000); //Pričekajte 1 sekundu Calc = ((NbTopsFan * 60)/fanspace.fandiv); //Izračunajte vrijednost broja okretaja za 60 sekundi podijeljenu s množiteljem ventilatora lcd.print(Calc, DEC); //Izlaz izračunate vrijednosti u decimalnom obliku lcd.print(" rpm - " ); lcd.print (temperatura); //Izlazna temperatura lcd.home(); )

Čitajući prvi dio naslova, mnogi od vas su vjerovatno pomislili - još jedan termostat na dugotrajnom Arduinu. I... Istina je - da, ovo je još jedan termostat za drugi bojler, drugu kuću, ali ovo je samo djelimično tačno - u članku ne želim da se koncentrišem na sam uređaj - zaista ih ima dosta (članci ). Naravno, opisat ću termostat, ali bih želio više o tome kako sam spojio sam mikrokontroler na bojler. Dakle, za zainteresovane molim...

Kako je sve počelo

Prije svega, želim reći da ja uopće nisam programer i da se nikada prije nisam bavio pravim mikrokontrolerom. Moje prvo poznanstvo sa AVR MK-om (i sa MK-om uopšte) bilo je još u srednjoj školi, kada sam želeo da znam kako ova misteriozna stvar zapravo funkcioniše. Pročitao sam nekoliko članaka i od tada u sjećanju imam samo fragmente koji bi se mogli opisati u samo dvije riječi - DDR i PORT - i tu je moje znanje završilo. Zatim je bio univerzitet, 5. godina - “Programiranje mikrokontrolera” gdje smo se svi upoznali sa MSC51 u virtuelnom okruženju. Već je bilo prekida, tajmera i svega ostalog. Pa, sa ovom količinom znanja došao sam do problema. Završimo na ovoj autobiografskoj bilješci i pređimo na zanimljiviji dio.

Dakle, zapravo, odakle je počelo stvaranje termostata? Nakon instaliranja autonomnog sistema grijanja sa plinskim bojlerom, i ja sam, kao i mnogi, naišao na uobičajene probleme - temperatura u kući je jako ovisila o vremenskim prilikama napolju - mraz - to je hladno u stanu, morate povećati temperaturu rashladnog sredstva u baterijama, postalo je toplije - naprotiv. Ovakvi plesovi sa tamburom mi nisu baš pristajali, jer... podešavanje kotla je bilo komplikovano činjenicom da je postavljen iza vrata, a vrata su bila poduprta mikrotalasnom pećnicom, na kojoj je ležala gomila smeća. Pa, shvatili ste - igla u jajetu, jaje u patku, itd.

Ovaj problem je riješen vrlo jednostavno - sa OTC (Outside Temperature Compensation) senzorom, koji je spojen na kotao i omogućava mu da automatski podešava temperaturu rashladne tekućine u zavisnosti od vanjske temperature. Činilo se da je problem riješen, ali čitanje servisnog priručnika za kotao (Ferolli Domiproject C24D) brzo je pogazilo moje nade - povezivanje vanjskog temperaturnog senzora nije predviđeno u ovom modelu. Sve? Sve. I sad smo vjerovatno mogli završiti, ali ljeti, za vrijeme grmljavine, kontrolna ploča i dalje pregori u kotlu na meni još uvijek nejasan način, a u razgovoru sa serviserom (ploča je bila kasnije popravljen), pitao sam da li je moguće spojiti OTC na moj kotao? On je odgovorio da se povezuju pomoću eksternih termostata. Ovo mi je ostalo u sjećanju, ali nisam se baš koncentrisao na to sve dok nije nastupilo hladno vrijeme, a onda je i dalje bio isti problem.

Prelistavajući ista servisna uputstva, ali sa ciljem da vidim kako je termostat povezan, primetio sam da je “OpenTherm regulator” povezan na iste terminale. Tada sam shvatio – to je TO! Google pretraga za “OpenTherm Arduino” me je ponovo razočarala – ništa posebno razumno. Postojao je monitor za poruke, ali to nije to – nemam šta da slušam – samo mi treba termostat.

Hajde da prvo napravimo nešto jednostavno na Arduinu. IN poglavlje 12 već smo izmislili termostate koristeći čisto analogne komponente. Sada da vidimo kako možemo uključiti digitalnu tehnologiju u ovaj koristan posao.

Već smo spomenuli (vidi poglavlje 18), da AVR kontroleri uključuju 10-bitni višekanalni ADC. Na Arduino pločama, njegovi pinovi su posebno označeni kao analogni ulazi (slovom A sa brojevima od nula do pet). Napominjemo da se mogu koristiti i kao obični digitalni sa brojevima od 14 do 18, a mi ćemo ih koristiti u tom svojstvu. Koristit ćemo jedan od ovih ulaza za mjerenje temperature, a konekciju opterećenja ćemo kontrolirati s jednog od digitalnih izlaza.

Ukupno će nam trebati:

□ Arduino Uno ploča (bilo koja druga će poslužiti);

Imam termistor kao senzor temperature. Pogodno, na primjer, postojeće

□ “Amperke” V57164‑K 103‑J sa nominalnim otporom od 10 kOhm na 25 °C - njegove karakteristike su date u poglavlje 13 kao ilustracija svojstava termistora;

□ varijabilni otpornik 10 kOhm, konstantni otpornik 620 Ohm;

□ izvršni relej – elektromagnetski (obavezno sa pojačavačkim tranzistorskim prekidačem, vidi dolje) ili poluprovodnički.

Moduli bazirani na 5-voltnim elektromagnetnim relejima, posebno skrojeni za upravljanje sa Arduino izlaza, dostupni su za prodaju. Sami elektromagnetski releji zahtijevaju prilično veliku kontrolnu struju (i što je relej snažniji, to je moćniji; samo releji s reedom najniže snage mogu raditi direktno iz logike), stoga svi takvi relejni moduli moraju imati prekidač tranzistorskog pojačala. Na primjer, Amperka prodaje takav modul baziran na releju HLS8L‑DC5V‑S‑C. Ako niste zadovoljni elektromagnetnim relejem, a težite ekstremnoj jednostavnosti kruga, onda možete potražiti solid-state releje - na primjer, CX240D5R iz Crydoma ili slični s radnim naponom od 3-15 V su prikladni Njihova kontrolna struja je oko 15 mA na 5 volti na ulazu, što je prihvatljivo za AVR, jer se njihov kontrolni ulaz može direktno povezati na Arduino digitalni izlaz. Istina, na naponu od 220 volti, CX240D5R ne može prebaciti opterećenje snage veće od kilovata, ali za ovaj zadatak nam ne treba više.

Krug termostata na Arduino Uno prikazan je na Sl. 21.2.

Rice. 21.2. Uključen dijagram termostata Arduino Uno

Na dijagramu je relejni namotaj K1 (sa normalno otvorenim kontaktima) konvencionalno spojen direktno na digitalni izlaz Arduina - pretpostavlja se da je to ili prethodno spomenuti solid-state relej sa potrebnim karakteristikama, ili jednostavno kontrolni ulaz gotova ploča relejnog modula. Za praćenje stanja kruga, LED se aktivira istovremeno s grijačem. Program termostata u skladu s ovom shemom je izuzetno jednostavan:

Vrijednosti otpornika su podešene na specificirani termistor B57164‑K sa nominalnim otporom od 10 kOhm na 25 °C (103‑J). U skladu s programom, relej će raditi blizu izlazne vrijednosti ADC-a od 500. To je otprilike sredina 10-bitnog opsega (cijela skala je 1024 gradacije), tj. ova vrijednost će se uspostaviti kada se gornji i donji otpori su približno jednaki u odnosu na AO ulaz (napon na ovom ulazu će tada biti približno 2,5 volti).

Imajte na umu da obje funkcije ako ne završavaj sa uobičajenim ostalo. Kako bi se spriječilo brbljanje, u program je uvedena histereza: relej se uključuje kada vrijednost koda prijeđe 510, a isključuje se kada padne na 490. U međuvremenu će zadržati prethodno stanje. Dvadeset jedinica koda (šta je u poglavlje 12 zvali smo mrtva zona) odgovara približno 10 milivolti, tj. histereza na temperaturi u rasponu od 30-40 stepeni će biti nešto manja od jedne desetine stepena (provjerite sami koristeći tabelu 13.1 iz poglavlje 13).

Podešavanje temperature reakcije pomoću otpornika R2 sa ovim parametrima moguće je u rasponu od približno 22 do 96 °C. Naravno, u praksi tako širok raspon podešavanja nije potreban, pa je preporučljivo smanjiti vrijednost R2. Vrijednost R1 se bira tako da se R1 i nominalna vrijednost R2 zbroje sa otporom termistora na nižoj vrijednosti željenog temperaturnog raspona (u skladu sa tabelom 13.1). Za preciznije uklapanje, možete kalibrirati i promijeniti vrijednosti praga u programu mjerenjem utvrđene temperature običnim termometrom.

Ako koristite druge senzore u ovom krugu, ne zaboravite na znak temperaturnog koeficijenta. Obična dioda ili tranzistor u diodnoj vezi (kao u krugovima iz poglavlje 13) također imaju negativan nagib karakteristike, pa ćete za njih u programu morati promijeniti samo numeričke vrijednosti praga odziva. Ali poluvodički senzori poput TMP35 (vidi. poglavlje 13) ili jednostavno metalni otporni termometri (kao u dizajnu od poglavlje 17) imaju pozitivan temperaturni koeficijent, tako da će se uslovi rada morati obrnuti. I ne samo promijeniti "više" u "manje" i obrnuto, već i promijeniti omjer pragova za histerezu - u novoj situaciji, grijač će se morati uključiti ako je vrijednost manja od manjeg praga i uključiti isključeno ako je više od većeg.


Top