Regulacija i histereza Atmega

Rasprava o AVR mikrokontrolerima, AVR projekti i drugo vezano za AVR...

Moderators: pedja089, stojke369, trax, InTheStillOfTheNight

Post Reply
STIPA
Penjem se :)
Penjem se :)
Posts: 75
Joined: 22-03-2006, 15:58

Regulacija i histereza Atmega

Post by STIPA »

Poštovani, kolege forumaši...

Evo u slobodno vrijeme kao "radim" nešto sa AVR-om, pa me zanima da li je itko radio nešto slicno pa da me uputi, da smjernice sa kodom. Pišem u BascomAVR-u, a radi se o slijedećem.

Radi se o mjerenju vlažnosti zraka tj. mjerenju apsolutne vlažnosti temperaturnim senzorom.
Uređaj ima tri MOD-a rada:
A)
Uređaj ima (će imati) mogućnost prije početka rada "MOD baždarenje", u kojemu se mijenja iznos faktora korekcije senzora. Naprimjer senzor zbog nekih razloga (oksidacije kapsule,starosti...)pokazuje manju (ili veću u nekim slučajevima) vrijednost i onda korisnik ugasi uređaj,prebaci jumper, izbaždari senzor te taj se faktor korekcije spremi,ugasi se uređaj, vrati jumper, upali uređaj i on starta sa radom u normalnom režimu rada.

B) U normalnom radu, na početku se provjerava da li ima ili nema senzora. Ako ga nema, pali se zvučni alarm koji se može ugasi pritiskom na jedno od tipkala,a vizualni alarm je upaljen skroz dok god senzor nije pronađen,a kad se pronađe senzor slijedi testiranje da li je senzor ispravan ili neispravan. Tu također ako je neispravan senzor slijedi alarm s istim načinom rada kao u prethodnom slučaju. Ako je napokon sve ispravno (senzor je priključen i ispravan), prije početka rada iz eeproma se čita faktor korekcije s kojim se vrši korekcija izmjerene vlažnosti zraka. S time je uređaj u Ručnom MODu rada. Tu se vrši mjerenje, korekcija i ispis vlažnosti zraka na LCDu, i odgovarajućim tipkalima (OPEN i CLOSE) se može otvoriti/zatvoriti određena zaklopka koja propušta/ili ne propušta svježi zrak u neku komoru. I time se ručno vrši regulacija vlage u nekom zatvorenom prostoru.

C) Pritiskom i držanjem jedne tipke prelazi se u Automatski MOD rada. Tu korisnik može oređenim kombinacijama tipki unijeti željenu vrijednost vlage zraka, koju je potrebno održavati u zatvorenom prostoru. Također u ovom modu se obavlja mjerenje, korekcija i ispis vlažnosti zraka na LCDu. SAD DOLAZI ONO NAJVAŽNIJE, MOJE PITANJE (DANA :) )
Neka je korisnik unio(zadao) željenu vlažnost zraka recimo 37, a stvarna izmjerena je 38. I sad bi programski kod radio (bi trebao raditi) slijedeće. Otvoriti zaklopke, tj. motoru dati signal da se okrene na jednu stranu. ( Motor je s tri priključka, dva su NEKI naponski ulazi a treći je nula. Kad na jednom vlada napon, motor se vrti lijevo,i obrnuto. ). Ako je ponovnim mjerenjem, razina vlage manja ili još i veća od prethodnog mjerenja potrebno je još malo kratkotrajno dati signal da se zaklopke još malo otvore itd. A ako je ponovnim mjerenjem, razina vlage manja od prethodnog mjerenja, znači vlažnost zraka pada, potrebno je pričekati malo, jer nije moguće trenutno smanjivanje vlažnosti, potrebna je nakakva vremenska odstojanost. I tako potrebno je postepeno "zatvarati" zaklopke kako vlažnost pada i obrnuto. I potrebno je znati koliko smo dugo držali signal da se otvore zaklopke, tj. znati u konačnici koliko ms ili s su zaklopke otvorene da ih kako bude padala vlažnost zraka možemo postepeno "zatvarati" zaklopke kako bi se vlažnost zraka održala u zadanom nivou.
Ako je vlažnost zraka manja recimo 36, nije potrebno stalno davanje signala za "zatvaranje", kad znamo da su zaklopke zatvorene iz one vrijednosti koju moramo znati, koliko je dugo signal za otvaranje trajao

Nadam se je većina (ili svi) razumjeli što je potrebno napraviti, trebam korisne sugestije oko ovog dijela programa (Automatski MOD).
STIPA
Penjem se :)
Penjem se :)
Posts: 75
Joined: 22-03-2006, 15:58

Re: Regulacija i histereza Atmega

Post by STIPA »

Evo, ovo sam napisao; ako netko ima sugestiju, bolje riješenje...

Code: Select all

Rad:
H = H + Hkorek            'H - iznos izmjerene vlažnosti zraka, Hkorek - korekcija senzora
Incr N



If N > 15 Then               ' svakih 15 ciklusa provjerava se da li je došlo do promjene u iznosu vlage
   Incr I
      Vlaga(i) = H
      N = 0

      If Vlaga(i) > H2 Then                    'H2- iznos zadane vlažnosti uvećan za histerezu
      If Vlaga(i) >= Vlaga(i -1) Then
               Motor1 = 1      ' Motor1 - otvaranje
                  Waitms 1250
               Motor1 = 0
               Incr M
         Goto Rad
       End If
       End If

      If Vlaga(i) < H1 Then                   'H1- iznos zadane vlažnosti umanjen za histerezu

      If Vlaga(i) <= Vlaga(i -1) Then
               If M = 0 Then
                Goto Rad
                End If
               Motor2 = 1                  ' Motor2 - zatvaranje
                  Waitms 1250
               Motor2 = 0
               Decr M
         Goto Rad
       End If
       End If

End If
Post Reply