Temperatūros palaikymo įrenginys paremtas Arduino

29 04 2013

Pastaruoju metu susidūriau su keliais buitiškais reikalais kuomet reikalinga tam tikra vienoda aplinkos temperatūra. Bene pats pagrindinis reikalas – naminės giros gamyba. Dar šildymo sezono metu gira gaminti buvo vieni juokai nes kambariuose būdavo pastovi ~22’C temperatūra, o būtent tokios aplinkos ir reikia idealiai fermentuojant tiek gira, tiek žinoma rimtesnį dalyką – alų. Pasibaigus šildymo sezonui reiklai kiek pablogėjo: ankstyva pavasari temperatūra kiek žemesne nei reikiama ir ji vis kinta. Ateis vasara – kambariai galimai bus net pernelyg karšti, o mielėms tai vėlgi negerai nes jos tiesiog pradės “bujoti“. Taigi laikas pasigaminti prietaisą, kuris galės kontroliuoti tam tikros izioliuotos patalpos temperatūra. Pirmoje vietoje noriu pagaminti universalų bei kiek galima lengviau valdoma prietaisą.

img20130429104611

Vartotojo sąsaja

Informaciją pateikti vartotojui panaudosiu 16×2 LCD ekraną. Tokiame ekranėlyje informacijos tilps daug, ko aš ir norėčiau, nes man pagrindinis dalykas ką nors gaminant yra procesas (o pvz. gaminat gira, alu, viščiukus ir t.t. vis norisi matyti kas vyksta su temperatūra ir panašiai).

Vartotojui leisiu įvesti du nustatymus: norimą temperatūra bei temperatūros paklaidą. Įrenginys bandys išlaikyti norimą temperatūra nurodytos paklaidos tikslumu. Šių parametrų įvedimas ekrane atrodys taip:

Įgyvendinus šią schemą ekrane viskas kiek aiškiau:

setup1w

Temperatūros valdymo metu, t.y. įrenginio darbo metu, bus rodoma kuo daugiau naudingos informacijos:

Padetalizuosiu:

  • Būsena (ON/OFF): įrenginio veikimo metu čia rodoma ON, o nustatymų įvedimo medu OFF ir nieko čia neprigalvosi;
  • Išėjimo būsena (IDLE/COOL/HEAT): pasakoma kas dabar vykdoma vidaus patalpoje (nieko, šaldoma ar šildoma);
  • Tikslo temperatūra: parodome kokia dabar yra nustatyta norima palaikyti temperatūra;
  • Skirtumas: parodome koks dabar skirtumas tarp norimos temperatūros ir dabartinės vidaus temperatūros;
  • Vidaus temperatūra: parodo dabartine temperatūra izioliuotos patalpos viduje;
  • Lauko temperatūra: parodo dabartinę temperatūrą išorėje;

Schemos įgyvendinimas:

working2a

Visa šiti informacija valdoma 4 mygtukais kurių funkcijos:

  • Mode: skirtas nustatymų lange perjunginėti tarp norimų įvesti nustatymų;
  • Inc: nustatymų didinimas;
  • Dec: nustatymų mažinimas;
  • Process: įrenginio paleidimas ir stabdymas;

valdymas

Beja Process mygtukas įjungdamas įrenginį atlieka ir dar kelis veikmus – išsaugo EEPROM dabartinius nustatymus bei pažymį ten kad įrenginys dabar veikia. Vėliau dingus elektrai ar kitaip restartavus įrenginį programa mato kad EEPROM yra startavimo žyma bei nustatymai ir nieko nelaukusi pratęsia darbą.

Apibendrinus: įrenginiui neveikiant rodomas nustatymų langas ir tuo metu galima nustatyti norimus parametrus, o įjungus įrenginį atsiranda būsenos langas kuriame parametru keisti jau nebegalima. Įrenginiui nutraukus maitinimą ir vėl jį gražinus programa tęsia darbą jei jis startavęs.

Įėjimai

Pagrininiai įėjimai bus žinoma temperatūrai. Plokštėje suprojektavau du temperatūros įėjimus (vidaus bei lauko) kurie turi po 3 kontaktus (+5V, GND, Signal) tada fiziškai galima pajungti tiek analogini temperatūros sensoriu (mano atveju naudotas 10k termistorius), tiek skaitmenini sensorių. Lauko temperatūra nėra butina įrenginio veikimui bet šį kanalą idėjau ateičiai.

tempiul

Kas dar susyje su įėjimais tai žinoma dar yra +12 bei GND įėjimas bei padariau jungtį programinės įrangos atnaujinimui su TTL lygio Tx ir Rx signalais:

img20130429102956

Išėjimai

Išėjimų srityję nežaidžiau ir nusprendžiau tiesiog panaudoti rėles abiem kanalams (tiek šildymui,tiek šaldymui). Įrenginys pariklausomai nuo dabartinės bei norimos temperatūrų aktyvuoją vieną iš rėlių, o jau nuo jūsų priklauso ką ką prie jų jungti. Testavimo metu naudojau tik šildyma panaudojant 12V lemputę tad dar neturėjau progos panaudoti šaldymo (todėl net nelytavau rėlės jam):

outad

Sekantis darbas bus žinoma panaudoti ir šaldyma, bet tam jau reikia rasti sritį.

Darant sudėtingiau žinoma galima buvo šildyma jungti per MOSFET bet tuomet prarastume galimybę naudoti skirtingas sroves ir lankstumą. Žinome turėtume galimybę turėti šildymo intensivimo valdymą bet aij.. Dar kitas variantas panaudoti tristoriu, bet jie veikia tik nuo tam tikros aprovos, o aš čia noriu valdyti ir silnus šildytuvus. Tristoriu didelis pliusas būtų tas kad jie kitaip nei rėlės neklapsi ir yra ilaamžiškesni.

Elektronika

Schema ne iš pačių mažiausi nes norėjau atskirti jėgos linija nuo elektronikos bei patalpinti mygtukus patogiose vietose:

scmd

Schemoje esanti Mega8 mano atveju buvo ATMega328p, bet galima naudoti ir ATMega168, tačiau abiem atvėjais reikia kad mikroschemose jau būtų įrašyta Arduino Bootloader.

PCB pavyko pagaminti vienpusę:

pcbp

Eagle formatu schema bei PCB galite parsisiųsti čia. Taip pat idėjau jau sugeneruotus PCB PDF, kad iškarto galima būtų gaminti plokštę.

Programa

Programos rašymas ir kompiliavimas buvo atliktas panaudojant Arduino IDE.

Programos kodą paanalizuoti ir parsisiųsti galite iš čia https://bitbucket.org/mindogas/temper. Kodas naudoja tik standartines bibliotekas tad nieku papildomu rūpintis nereikia.

 Veikimas

Teko jau pagaminti viena partija giros panaudojant šį įtaisą. Giros talpykla buvo patalpinta palyginus nesandarioje kartoninėje dėžėje kurioje dar idėjau 12V automobilinę lempute bei vidaus temperatūros daviklį. Visas valandos procesas atrodo taip:

Žinoma testams buvo palikta ir Serial loginimo galimybė. Kaip tai atrodo matosi dar kontrstravimo stadijoje:

Kad pasigilinti į temperatūros reguliavimo rezultatus atlikau trumpo epizodo loginimą ir gavau stai tokius rezultatus:

93223822

Testo metu tikslas visada buvo 22’C, o paklaidą kiek pakeitaliojau. Pradžioje keliom sekundėm nustačiau 0,1’C paklaidą, vėliau ją pakeičiau į 0,5’C, dar vėliau padariau 0’C ir galiausiai palikau 1’C. Kaip matote programa leidžia temperatūrai nukrinsti iki tam tikros temperatūros kol nepasiekiama paklaida ir tada reakuoja šildydama arba šaldydama patalpą. Temperatūrų viršijimas nėra didelis, tačiau nustačius 0’C paklaidą įvyksta chaosas – rėlė klapsi kaip išdurnėjusi ir valdiklis net nori šaldyti patalpą, nes mato temperatūros padidėjimą per 0’C. Būtent šiai situacijai bus panaudotas lauko temperatūros daviklis kuris duos žinoti ar aplamai verta šaldyti/šildyti patalpą (visgi šiuo atveju valdiklis matytamas šaltą lauką tiesiog leistu patalpai lėtai atšalti pačiai).

Rėlės veikimą gerai iliustruoja šis grafikas:

diffd

Jame matome kaip keičiant paklaidą aktyvėja rėlės darbas. Jėgos signalas lygus 1 kai šildoma, 0 kai nieko nedaroma ir -1 kai šaldoma. Duomenys rinkti tuo pačiu metu kaip grafiko prieš tai, tad galite juos sutapatinti. Lengva suprasti, kad paklaidai esant didesniai rėlės dirbs mažiau bet kaitins ilgiau. 0’C paklaidos atveju matomas noras šaldyti. Taip pat verta paminėti kad tiklsas buvo 22’C, o išorėje svyravo 17’C temperatūra – esant mažesniam/didesniam lauko ir patalpos temperatūrų skirtumui rėlės intensivumas keisis adekvačiai. Taip pat reikia įvertinti ir patalpos izioliacijos menkumą – panaudojant putplasti ar kita izioliacija šiluma nenukristu taip greitai ir rėlė galėtu lengviau dirbti.

Apibendrinimas

Na ir pabaigai tiesiog paminėsiu galimybe:

  • Lauko bei vidaus temperatūros matavimas 0-100’C;
  • Šildytuvo bei šaldytuvo valdymas iki 5A;
  • Norimos temperatūros nustatymas 0,2’C žingsniu;
  • Norimos paklaidos nusatymas 0,1’C žingsniu;
  • Automatinis darbo pratęsimas dingus/atsiradus elektrai;
  • 12V maitinimas;
  • TTL sąsaja programinės įrangos atnaujinimui bei temperatūrų loginimui;
  • 16×2 ekranėlis informacijai pateikti bei 4 mygtukai parametrams bei įrenginiui valdyti;

Liko tik naudotis. Viskam išbaigti trūksta išorės temeratūros panaudojimas be norisi įvesti koki tai papildoma parametra kuris leistu įvertinti šildytuvo šskleidžiamos šilumos vėlavimą (pvz. elektrinė kaitlentė praradusi elektra dar šildo patalpa ir todėl norėtusi kiek anksčiau baigti šildymo procesą kad neperžengtume stipriai norimos temperatūros). Kadangi šie parametrai labiau programiniai tai juos atlikės atnaujinsiu Bitbucket respozicija ir viskas tuom bus baigta.

Beja vakar skanią girą gėriau 😀


Veiksmai

Information

10 responses

29 04 2013
Giedrius

Gražus darbas. Šiaip nebūtina naudoti bootloader kito tipo procesoriams, galima atitinkamai sukonfiguruoti arduino ir gauti hex kodą, kurį po to galima įrašyti į reikiamo tipo procesorių. Autorius gal nesupyks jei įdėsiu nuorodą į savo tinklapį http://giedriausweb.lt/?p=197 kur aprašiau, kaip aš tai darau.

29 04 2013
mindogas

Dėkui už įvertinima. Naudojuosi booloader’iu dėl vieno jo privalumo – labai lengva atnaujinti programinę įranga per TTL. Tereikia 3 laidu iš USB-TTL adapterio ir mes galime tiek loginti informaciją, tiek atnaujinti programą.

3 05 2013
Saulius

Aš dėl to bootloader’io visai pritariu, taip „pigiau“. Ypač, kad ne visi turi programatorius.

Beje, gal galima būtų giros ir alaus gamybos procesus ir receptus pamatyti? Bandžiau paieškoti per blogą, bet neradau, gal patingėjau giliai knistis 🙂 Girą labai mėgstu daryti, bet be temperatūros korekcijų, tai galvoju, gal patobulinimui visai praverstų koks konkretesnis receptas.

3 05 2013
mindogas

Receptu neradai nes pats šioje srityje esu žalias. Gira labai lengva gaminti ir paprasčiausios skrudintos duonos, internete tikrai rasi nemažai patarimų. Pats nesiskelbsiu kaip ką darau nes po to nesamoniu prikalbėti galiu neturėdamas patirties. Alaus gamybai dar pats nesu pasirengęs 😀

3 05 2013
Saulius

Supratau, teks pirmam dalintis tuomet giros patirtimi 😀

P.S. Esu bandęs iš kepintos duonos. Gira ŽIAURIAI skani, bet ant viršaus plaukiojančio aliejaus riebybė viską gadina… Reikia puodo su kraneliu apačioje.

3 05 2013
mindogas

Tai orkaiteje sausai reikia kepinti 😉

3 05 2013
Saulius

Tai jo, bet va kartą užėjo noras paeksperimentuoti…

4 05 2013
Giedrius

Bootloader`io be programatoriaus neįrašysi, pritariu jei reikia derinti programą pačiame procesoriuje, bet aš tai darau su arduino, o po to jau suderintą programą įrašau. Plius bootloader`is užima dalį atminties, dėl kurios trūkumo kartais tenka naudoti brangesnį procesorių. Bootloader`io dydis berods 1Kb.

17 11 2013
Duonos gira | Mindaugas Markauskas

[…] Kadangi dabar jau įjungtas šildymo sezonas tai neverta net naudoti kažkada pasigaminto temperatūros reguliatoriaus. […]

28 11 2016
Kad vynas nesušaltų | Darau, blė

[…] dalykas – labai paprastas sprendimas su mikrovaldikliu, idėja nukopijuota nuo Mindaugo. Mikrovaldiklis pasižiūri, kokia temperatūra ir jai nukritus žemiau kažkokios reikšmės […]

Parašykite komentarą

Įveskite savo duomenis žemiau arba prisijunkite per socialinį tinklą:

WordPress.com Logo

Jūs komentuojate naudodamiesi savo WordPress.com paskyra. Atsijungti / Keisti )

Twitter picture

Jūs komentuojate naudodamiesi savo Twitter paskyra. Atsijungti / Keisti )

Facebook photo

Jūs komentuojate naudodamiesi savo Facebook paskyra. Atsijungti / Keisti )

Google+ photo

Jūs komentuojate naudodamiesi savo Google+ paskyra. Atsijungti / Keisti )

Connecting to %s




%d bloggers like this: