Upload
goran-sostarko
View
55
Download
5
Embed Size (px)
Citation preview
STRUČNI STUDIJ ELEKTROTEHNIKE
SMJER AUTOMATIKA
MIKRORAČUNALA U AUTOMATIZACIJI
DIGITALNI INKUBATOR
Studenti:
Goran Šostarko
Damjan Lukić
Osijek, 2015. godina
SADRŽAJ
1. UVOD ................................................................................................................................. 1
1.1 Zadatak projekta ............................................................................................................... 1
2. ZATVORENI SUSTAVI GRIJANJA ................................................................................ 2
2.1 Inkubatori .......................................................................................................................... 3
3. DIGITALNI INKUBATOR ................................................................................................ 4
3.1. Dijelovi digitalnog inkubatora ......................................................................................... 4
3.1.1. Kućište inkubatora .................................................................................................... 4
3.1.2 Napajanje ................................................................................................................... 6
3.1.3. Razvodna kutija ........................................................................................................ 6
3.1.4. Tiskana pločica ......................................................................................................... 8
3.2. Blokovski prikaz programa ........................................................................................... 10
3.3. Način rada inkubatora ................................................................................................ 10
3.4. Testiranje inkubatora ................................................................................................. 12
4. ZAKLJUČAK ................................................................................................................... 22
5. LITERATURA ................................................................................................................. 23
PRILOG I – DHT22 senzor temperature i vlage ...................................................................... 24
PRILOG II – IRF640N MOSFET ............................................................................................ 26
PRILOG III – Raspored pinova na ATmega328 mikroupravljaču .......................................... 28
PRILOG IV – Programski kod ................................................................................................. 29
1
1. UVOD
U ovom radu predstavljaju se zatvoreni sustavi grijanja. Spomenuti su česti
primjeri zatvorenih termodinamičkih sustava. Jedan od zatvorenih sustava koji se u
raznim primjenama u praksi susreće je i inkubator. Maketa koja je izrađena i koja se
promatra u ovom radu konkretno je digitalni inkubator kojemu se temperatura regulira
pomoću PID algoritma.
U radu su detaljnije opisani dijelovi makete digitalnog inkubatora, njihove
funkcije i način na koji su izrađeni. Program koji upravlja sustavom je prikazan
blokovskim prikazom a programski kod se nalazi kao prilog na kraju rada. Opisan je
način rada inkubatora, način na koji se zadaju parametri putem računala i opisan je
grafički prikaz vrijednosti koje su potrebne za rad inkubatora (zadana i izmjerena
temperatura, izlazni signal iz PID regulatora, Kp, Ki, Kd parametri).
Na kraju rada izvršeno je testiranje rada digitalnog inkubatora. Inkubator se
prilikom testiranja zagrijavao i hladio na zadane temperature i izazvao se poremećaj
kako bi se vidjelo kako će sustav reagirati na smetnju.
ATmega328 mikroupravljač programiran je u Arduino softveru a sam grafički
prikaz programiran je u Processing 2 softveru.
1.1 Zadatak projekta
Zadatak projekta bio je izraditi maketu digitalnog inkubatora kojemu je
temperatura regulirana pomoću PID algoritma kojeg izvršava mikroupravljač. Inkubator
mora imati LCD zaslon na kojemu se ispisuje željena i izmjerena temperatura te
izmjerena vlaga. Za mjerenje je potrebno koristiti senzor temperature i vlage DHT22.
Temperaturu je potrebno zadavati preko računala putem serijske komunikacije.
Također, potrebno je ugradit i ventilator za hlađenje inkubatora.
2
2. ZATVORENI SUSTAVI GRIJANJA
U termodinamici zatvoreni sustav može izmjenjivati energiju (kao što su toplina
ili rad) sa okolinom ali ne i materiju. Izolirani sustav ne može izmjenjivati toplinu rad
ili materiju sa okolinom dok otvoreni sustav može izmjenjivati svu toplinu, rad ili
materiju.
Slika 2.1. Shema zatvorenog termodinamičkog sustava, [4].
U zatvorenom sustavu masa se ne može prenijeti izvan granica sustava. Sustav
uvijek sadrži jednaku količinu materije ali toplina i rad se mogu prenijeti izvan granica
sustava. Bilo da sustav može izmjenjivati toplinu, radi ili oboje ovisi o svojstvima
granica sustava.
Adijabatska granica – ne dopušta nikakvu izmjenu topline, toplinski
izolirani sustav
Kruta granica – ne dopušta izmjenu rada, mehanički izolirani sustav
Jedan primjer je tlačenje fluida pomoću klipa u cilindru. Drugi primjer zatvorenog
sustava je bomba kalorimetar. To je kalorimetar koji ima konstantni volumen i služi za
mjerenje topline izgaranja pojedinih reakcija. Električna energija putuje preko granica
da bi proizvela iskru između elektrode i inicirala izgaranje. Prijenos topline događa se
preko granica nakon izgaranja ali nema prijenosa masa ni u jednom smjeru.
3
Slika 2.2. Kalorimetar, [5].
Jedan od najčešćih zatvorenih termodinamičkih sustava je sustav centralnog
grijanja (slika 2.1.) koji se najčešće susreće u kućanstvima. Senzor reagira na izmjerenu
temperaturu i uspoređuje ju sa zadanim parametrima, prema potrebi uključuje i
isključuje bojler i pumpu koji služe za zagrijavanje i distribuciju vode u radijatore koji
griju neki prostor.
2.1 Inkubatori
Inkubator je naprava koja se koristi za repliciranje odnosno stvaranje umjetnih
stanja okoliša, kao što su temperatura i vlažnost zraka. Često se koristi za uzgoj
bakterijskih kultura, umjetno leženje jaja, odnosno za stvaranje odgovarajućih uvjeta za
kemijske i biološke reakcije. Gledajući sa aspekta termodinamike, inkubator je
zatvoreni termodinamički sustav.
4
3. DIGITALNI INKUBATOR
3.1. Dijelovi digitalnog inkubatora
Digitalnim inkubatorom upravlja ATmega328 mikroupravljač. Čip se nalazi na
Croduino Basic pločici (Arduino kompatibilna pločica). Inkubator se grije pomoću auto
žarulje (12V, 55/60W) a hladi se pomoću ventilatora (12V, 0.16A) skinutog s hladnjaka
procesora računala. Zrak se tijekom rada inkubatora miješa pomoću ventilatora (12V).
Inkubator također ima LCD prikaz željene i izmjerene temperature te izmjerene vlage
unutar inkubatora. Temperatura i vlaga mjere se pomoću DHT22 senzora (prilog I.)
Također ima dvije signalne LE diode koje pokazuju kada je uključen grijač a kada
ventilator za hlađenje. Kućište inkubatora je plastična kutija sa prozirnim poklopcem
dimenzija 320x220x210 mm. Žarulju i ventilatore napaja staro napajanje računala (12V,
na izlazu daje max. 16A).
Slika 3.1. Digitalni inkubator.
3.1.1. Kućište inkubatora
Kućište inkubatora je izrađeno od plastične kutije sa prozirnim poklopcem.
Dimenzije kućišta su 320x220x210 mm. Na bočnoj strani kućišta izrezan je otvor
promjera oko 60 mm te je montiran ventilator za hlađenje inkubatora. Na sredinu
poklopca montirano je grlo sa auto žaruljom (12V, 55/60W). DHT22 senzor se nalazi
unutra kućišta. Senzor je montiran na plastični nosač dimenzija Ø5x15 mm. Iza senzora,
na kućište, je zalijepljena aluminijska folija dimenzija 80x80 mm. U kućištu se također
5
nalazi i nosač na kojemu je montiran ventilator za miješanje zraka tijekom rada
inkubatora.
Slika 3.2. Auto žarulja montirana na poklopac kućišta.
Slika 3.3. DHT22 senzor montiran na nosač u kućištu.
6
Slika 3.4.. Ventilator za miješanje zraka.
3.1.2 Napajanje
Inkubator se napaja preko računalnog napajanja (MS 400W ATX P4) koje je
prenamijenjeno za ovu svrhu. Vodiči +12V i GND su izvedene iz napajanje u razvodnu
kutiju i spojene na tiskanu pločicu. Napajanje na izlazu daje 12V i maksimalno 16A.
3.1.3. Razvodna kutija
Razvodna kutija je izrađena od ABS-a, dimenzija je 170x125x60 mm i ima ravni
poklopac sa 4 rupe za vijke za montažu. Na stražnjoj strani kutije je izrezan otvor
dimenzija 85x65 mm kroz koji viri hladnjak za tranzistor. Hladnjak je pričvršćen sa 3
vijka za kućište. Sa bočne strane se nalaze 5 provrta za kablove te jedan utor za USB
kabl koji povezuje Croduino sa računalom. Na poklopcu je izrezan otvor za LCD zaslon
te dvije rupe promjera 8mm za nosače LE dioda za signalizaciju. Unutra kutije se
također nalazi tiskana pločica i Croduino pločica. Tranzistor preko kojega se upravlja
sa ventilatorom za miješanje zraka pričvršćen ja na stjenku kućišta razvodne kutije.
7
Slika 3.5. Stražnja strana razvodne kutije.
Slika 3.6. Poklopac razvodne kutije.
8
Slika 3.7. Unutrašnjost razvodne kutije.
3.1.4. Tiskana pločica
Tiskana pločica je izrezana na dimenzije 47x37 mm te na nju postavljena folija
sa otisnutim vodovima a na foliju papir. Zagrijavanjem s glačalom tinta s folije prelazi
na bakreni sloj na pločici. Nedovoljno dobro otisnuti vodovi se popravljaju
vodootpornim markerom. Pločica se stavlja u kupku za jetkanje koja je mješavina solne
kiseline i hidrogena. Provrti izbušeni za komponente su promjera 0,5 mm.
Slika 3.8. Vodovi tiskane pločice.
9
Slika 3.9. Zalemljene komponente na tiskanoj pločici.
Slika 3.10. Shema sustava.
10
3.2. Blokovski prikaz programa
Slika 3.11. Blokovski prikaz programa.
3.3. Način rada inkubatora
Sustav radi na način da se preko grafičkog sučelja zadaje željena temperatura.
Mikroupravljač šalje upravljački signal tranzistoru koji uključuje žarulju ovisno o visini
upravljačkog napona (0-5V). Rezolucija PWM izlaznog signala koji upravlja žaruljom
je od 0-255. U slučaju da je izmjerena temperatura veća za 1°C od željene uključuje se
ventilator koji hladi sustav na željenu temperaturu. Isto tako željena i izmjerena
11
temperatura i izmjerena vlaga se ispisuju na LCD zaslonu koji se nalazi na poklopcu
razvodne kutije. LCD zaslon preko I2C komunikacije dobiva podatke koje će ispisivat.
Također na poklopcu razvodne kutije imamo i dvije LE diode koje ukazuju na to dali
radi žarulja ili ventilator. Preko grafičkog sučelja se može zadavati željena vrijednost
temperature ali također se mogu zadavati i parametri PID regulator (Kp, Ki, Kd).
Za pisanje programa je korišten Arduino softver [3] otvorenog koda (IDE) a za
grafičko prikazivanje vrijednosti je korišten Processing 2 softver [4]. Programski kod
za PID regulator je skinut s interneta [4].
3.12. Sučelje za zadavanje vrijednosti.
12
3.4.Testiranje inkubatora
Test 1.: Parametri: Kp = 80, Ki = 50, Kd = 0
13
14
15
Temperatura sustava pri uključenju je iznosila 23°C. Zadana temperatura je
iznosila 26°C. Iz dijagrama se može vidjeti da je sustav postigao željenu temperaturu za
otprilike 6 minuta. Prvi maksimum mu je iznosio 26,4°C.
Nakon nekog vremena nova zadana temperatura je iznosila 23°C, što znači da se
grijač ugasio a ventilator za hlađenje upalio. Iz dijagrama se može vidjeti da je
inkubatoru bilo potrebo 10 minuta da se ohladi. Nakon hlađenja zadana je nova
temperatura koja je iznosila 27°C. Sustav se zagrijao za otprilike 6 minuta.
U 64. minuti je izazvan poremećaj mahanjem komadom kartona. Prilikom
djelovanja poremećaja temperatura je pala na 26°C. Sustavu je bilo potrebno 3 minute
da se stabilizira.
16
Test 2.: Parametri: Kp = 100, Ki = 150, Kd = 0
17
18
Temperatura sustava pri uključenju je iznosila 23°C. Zadana temperatura je
iznosila 26°C. Iz dijagrama se može vidjeti da je sustav postigao željenu temperaturu za
otprilike 5 minuta. Prvi maksimum mu je iznosio 26,4°C.
Nakon nekog vremena nova zadana temperatura je iznosila 30°C. Sustav se
zagrijao za 9 minuta. U 37. minuti je izazvan poremećaj mahanjem komadom kartona.
Prilikom djelovanja poremećaja temperatura je pala na 28,8°C. Sustavu je bilo potrebno
5 minute da se stabilizira.
19
Test 3.: Parametri: Kp = 100, Ki = 100, Kd = 0
20
21
Temperatura sustava pri uključenju je iznosila 18,8°C. Zadana temperatura je
iznosila 26°C. Iz dijagrama se može vidjeti da je sustav postigao željenu temperaturu za
otprilike 10 minuta. Prvi maksimum mu je iznosio 26,3°C.
U 34. minuti je izazvan poremećaj mahanjem komadom kartona. Prilikom
djelovanja poremećaja temperatura je pala na 24,9°C. Sustavu je bilo potrebno 3 minute
da se stabilizira. Nakon nekog vremena nova zadana temperatura je iznosila 24°C, što
znači da se grijač ugasio a ventilator za hlađenje upalio. Iz dijagrama se može vidjeti da
je inkubatoru bilo potrebo 3 minuta da se ohladi.
22
4. ZAKLJUČAK
Iz aspekta termodinamike inkubator spada u zatvorene sustave grijanja. U
zatvorenom sustavu masa se ne može prenijeti izvan granica sustava. Sustav uvijek
sadrži jednaku količinu materije ali toplina i rad se mogu prenijeti izvan granica sustava.
Inkubator je naprava koja se koristi za repliciranje odnosno stvaranje umjetnih stanja
okoliša, kao što su temperatura i vlažnost zraka.
Izrada inkubatora je bila jednostavna što se tiče modelarskog i hardverskog
dijela. Što se tiče softverskog dijela naišli smo na male komplikacije zbog nedostatka
znanja iz programiranja ali smo te probleme riješili istraživanjem putem interneta i
razmatranjem raznih primjera programa koje smo pronašli.
U početku je inkubator bio jako trom. Nakon konzultacija s mentorom
napravljeno je par dorada. Senzor koji je bio zalijepljen za stjenku kućišta je postavljen
na plastični odstojnik kako se ne bi mjerila temperatura kućišta nego zraka u kućištu.
Dodan je ventilator za miješanje zraka koji povremeno radi, smješten je nasuprot
senzora. Iza senzora je postavljen komad aluminijske folije kao izolator. Nakon
primjene ovih izmjena inkubator radi puno brže.
Prilikom izrade ovog projekta povezana su znanja stečena iz kolegija osnove
automatske regulacije, automatskog upravljanja i elektronike. Stečena su nova znanja iz
programiranja mikroupravljača i programiranja općenito. Prilikom samostalne izrade
ovog projekta mogli smo vidjeti na kakve sve probleme možemo naići (postavljanje
vodiča, postavljanje aktuatora i senzora), na što sve moramo obratiti pozornost prilikom
dizajniranja tiskane pločice (raspored komponenti, pravilan raspored vodova, itd.).
23
5. LITERATURA
[1] Open and closed loop systems, http://www.bbc.co.uk/schools/gcsebitesize/
design/electronics/industrial_designrev3.shtml, pristup: 1.3.2015.
[2] Arduino Software, http://arduino.cc/en/Main/Software,
pristupio: 9.2.2015.
[3] Arduino PID library, http://playground.arduino.cc/Code/PIDLibrary,
pristupio: 9.2.2015.
[4] Vrste sustava, http://www.medioteka.hr/portal/ss_fizika2.php?ktg=
2&pktg=&mid=43, pristup: 9.2.2015.
[5] Thermochemistry, http://hrsbstaff.ednet.ns.ca/sweetap/thermonotes1.htm,
pristup: 9.2.2015.
24
PRILOG I – DHT22 senzor temperature i vlage
25
26
PRILOG II – IRF640N MOSFET
27
28
PRILOG III – Raspored pinova na ATmega328 mikroupravljaču
29
PRILOG IV – Programski kod
#include <PID_v1.h>
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 2 // Digitalni pin 2 - DHT senzor
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27,16,2);
//Define Variables we'll be connecting to
double Setpoint, Input, Output;
int inputPin=2, outputPin=5, Hladnjak=6;
int gr=10, hl=9;
int x = 1; // brojac za ventilator za cirkulaciju
int ventilator = 11; // ventilator za cirkulaciju zraka
int vent = 0;
int y = 1; // brojac za lcd ekran
int ekran = 0;
//Specify the links and initial tuning parameters
PID myPID(&Input, &Output, &Setpoint,100,100,0, DIRECT);
unsigned long serialTime; //this will help us know when to talk with processing
30
void setup(){
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(ventilator, OUTPUT);
//initialize the serial link with processing
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
//initialize the variables we're linked to
Setpoint = 0;
//turn the PID on
myPID.SetMode(AUTOMATIC);
}
void loop(){
float h = dht.readHumidity();
Input = dht.readTemperature();
vent=vent+x; // cirkulacija zraka
if(vent==40){
analogWrite(ventilator, 80);
x=-8;
}
else if (vent==0){
analogWrite(ventilator, 0);
x=1;
}
31
myPID.Compute();
analogWrite(outputPin,Output);
if (Output > 1 && Output <= 255) {
digitalWrite(gr, HIGH);
}
else {
digitalWrite(gr,LOW);
}
if (Input >= (Setpoint+1) && Input > (Setpoint)){
analogWrite(outputPin,0);
digitalWrite(Hladnjak,HIGH);
digitalWrite(hl,HIGH);
digitalWrite(gr, LOW); }
else if (Input <= (Setpoint)){
digitalWrite(Hladnjak,LOW);
digitalWrite(hl,LOW);
}
ekran=ekran+y; // LCD ekran
if(ekran==2){
lcd.setCursor(0,0);
lcd.print("Temp mj: ");
lcd.print(Input);
lcd.print("*C");
lcd.setCursor(0,1);
lcd.print("Temp zd: ");
lcd.print(Setpoint);
lcd.print("*C");
32
y=-1;
}
else if (ekran==0){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Vlaga: ");
lcd.print(h);
lcd.print(" %");
y=1;
}
delay(1000);