220 V litavimo stotelė: pirma (pusiau sėkminga) dalis

Posted: 2013-11-14 in Darbeliai
Žymos:,

Taigi tęsiu savo litavimo stotelės projektą. Aišku, tai nėra tikra litavimo stotelė, o tik semistorių pagal temperatūrą junginėjantis aparačiukas. Užtat tinka bet kokiems 220 V aparatams. Tiek lituokliui, tiek laminatoriui — svarbu tik K tipo termoporą prie jų kažkaip prišriubuoti.

Pirmojoje darbo dalyje, be abejo, prikrepinau (nuo žodžio crap, jei ką, toks IT srities terminas) kažką, kas matuoja temperatūrą. Tiesa, gavau eilinį kartą progą paspardyti sau į subinę už neatidumą ir kreivą plokštės dezainą. Na, antrą kartą užsiraunu, nors ir buvau ir prisiskaitęs ir jau užsirovęs, kad į mikrovaldiklių plokštes būtina įmontuoti maitinimo šaltinių filtrus. Na, grubiai tariant, įdėti bent jau vieną 100 µF ar kažkokį nekritiškai panašų kondensatorių. Čia irgi buvo tas pats. Valdiklis veikia, ekranėlį valdo. Paskui pasiknisęs prijungiau ir termoporos matuoklį MAX6675 bei pačią termoporą, tai pradėjo rodyti visokias pievas. Temperatūra šokinėja kaip išprotėjus. Prikabinau kondensatorių — viskas gražu ir gerai. Na, bet apie viską iš eilės ir po truputį.

Kaip jau minėjau, pirmojoje plokštės versijoje įlitavau prie SPI kojų MAX6675 mikroschemą ir sugadinau procesoriaus programavimą. Dabar jau paaiškėjo ir gilesnės priežastys, kas ten buvo blogai. Tad antrojoje versijoje padariau tą mikroschemą išimamą su adapteriu.

Adapterį priprojektavau taip (netyčia), kad jis uždengia ISP jungtį. Iš vienos pusės labai gerai — negaliu programuoti neišėmęs. Tikslas panašus ir buvo, bet taip netyčia pats save apribojau, kad neturiu kur dingti. Na, tai gal ir nieko. Bet dabar visgi manau, kad reikėjo netingėti pasibandyti ir į plokštės projektą įdėti SPI izoliaciją — MAX6675 prijungti per 1 kΩ rezistorius. Juolab, kad vietos yra ir tai būtų nesunku buvę padaryti. Šiaip žadu padaryti tokį plokštės projektėlį, net jeigu ir neteks pačiam jo įgyvendinti. Gal kas kitas norės.

Na, štai, plokštės minimumas sulituotas: procesoriukas, kristalas su kondensatoriais ir ISP jungtis. Savadarbis programatorius jau šnekasi su Atmega8A-AU procesoriuku, anas atsiliepia, kad viskas gerai. Prijungiau per IDE kabelį, nes šešių gyslų kabelio neturiu. Reikės kada vėliau pasidaryti, o kol kas gerai ir taip:

Litavimo stotelės plokštė prijungta prie programatoriaus | Elektronika | Darau, blė

Plokštę galėjau padaryti tikrai mažesnę. Bet pradžioje turėjau minčių viską lituoti iš vidinės pusės ir nenorėjau aukštos įtampos dalių pritaisyti pernelyg arti (ar po) LCD ekranėlio. Tai ta dalis išstumta šiek tiek. Bet visgi laisvai galėjau viską sutalpinti vien po LCD ekranėliu, tikrai būtų sutilpę. Vis tiek dabar daug kas ir iš „blogosios“ pusės. Iš gerosios net ir 220 V jungties nėra kaip įlituoti. Na, bet iš klaidų mokomės.

Ką gi, įkėliau paskutinę programėlės versiją, prilitavau jungtis skystųjų kristalų ekranėliui ir įjungiau:

Litavimo stotelės ekrano testavimas | Elektronika | Darau, blė

Programuodamas susidūriau su visa eile visokių nesąmonių. Žinoma, visos jos iš nežinojimo, neišsilavinimo ir patirties valdiklių programavime trūkumo. Pavyzdžiui, iki šiol man nė karto nereikėjo nuskaitinėti AVR valdiklio kojų. Per metus laiko praktikos — nereikėjo. Sakysite, kaip čia taip? Ogi paprastai… naudojausi analoginėmis klaviatūromis ir pertraukimais. Ten nesvarbu skaitmeninio įvado nuskaitymas. Analoginis interpretuojamas iš analoginių registrų, o pertraukimai bet kokiu atveju savaime suderinami taip, kad būtų aišku, jog įvadas persivertė į vienetuką ar nuliuką. Dar teko nuskaitinėti visokius daviklius, bet viskas ten specifiniais protokolais ir su kitų darytomis bibliotekomis. O štai pačiam tokio paprasto skaitmeninio įvado nuskaitymo man nė karto nebuvo prireikę.

Šįkart prireikė. Ir vėlgi — dėl nedaskaitymo ir žioplumo. MAX6675 mikroschema yra įgyvendinta su SPI protokolu. AVR procesoriukai turi tam tikras kojas, kurių antrinė funkcija ir yra SPI jungtis. Tuo tarpu aš pasižiūrėjau trumpą pavyzduką, kaip šią mikroschemą prijungti prie Arduino (tai buvo pirmoji klaida) ir nukopijavau tokį dizainą į savo projektą. Paskui jau viską sujungęs pradėjau derinti SPI… ir pamačiau, kad MAX6675 CS (chip select) koja prijungta prie… PB3, arba MOSI kojos. T.y. vienos iš darbinių SPI kojų! O juk CS turi būti prijungta prie kurio nors ne SPI elektrodo… Pabandžiau apeiti šitą reikalą, bet nepavyko — SPI numuša pabandymą CS koją priskirti MOSI. Ką gi, susirandu anąjį pavyzdį… o ten mikroschema apklausinėjama programiniu SPI, dar vadinamu bitbang metodu… Kitaip sakant, elektrodų reikšmes SPI protokolo lygmenyje kaitalioja programa, o ne aparatūra. Taip ir supratau, kad teks dabar tą bitbanginimą susikodyt… ir čia prireikė nuskaitinėti mikroschemos SO kojelę. Pabandau — neveikia. Dar pabandau — vėl neveikia. Pradedu nagrinėtis pavyzdžius. Lyg ir viskas gerai, bandau iš PORTB nuskaityti reikšmę… ilgai knisausi, netgi įrašą padariau su užklausa, o paskui apsižiūrėjau, kad įvesčiai AVR turi atskirą registrą… vat jums ir prašom. Ir reikia nuskaitinėti ne PORTB, o PINB reikšmę. Cha cha.

Ką gi, laikas prijungti ir mikroschemą su adapteriu bei termoporą:

Litavimo stotelės komponentai: plokštė su Atmega8A-AU procesoriumi, MAX6675 temperatūros konverteris ir K tipo termopora | Elektronika | Darau, blė

Pabandžiau matuoti temperatūrą. Labai smarkiai šokinėja — net per 30 laipsnių:

K tipo termoporos testavimas su lituokliu | Elektronika | Darau, blė

Tada prisiminiau, kad eilinį kartą užmiršau įtaisyti plokštėje kondensatorių… nuotraukoje jis kreivai prilipdytas prie pliuso ir minuso, o termopora uždėta ant lituoklio:

K tipo termoporos testavimas su lituokliu | Elektronika | Darau, blė

Gerai, kad plokštėje dar vietos liko, dariau viską ganėtinai erdviai.

Paskui sužinojau dar vieną dalyką: jeigu inicializuojamas laikmatis su kokiu nors pertraukimu (overflow ar compare) ir jam nesukuriama ISR paprogramė — procesoriukas „nulūžta“ ir persikrauna. Čia taip buvo, bandymams buvau prisijungęs Arduino kodo, sukonfigūravęs Timer0… Tik išmetu Arduino.h iš programos — ir procesoriukas pradeda lūžinėti. O juk Arduino kode, tiksliau Wiring bibliotekoje yra laikmačių apdorojimo paprogramės. Jei jų nėra, bet dar paliktas suderintas laikmatis — procesoriukas lūžta.

O, dar susidūriau, netyčia, su buffer overflow problemėle, kai per ilgą reikšmę į LCD buferį įgrūdau. Pervarė kelis kitus kintamuosius 😀 Dzievuliau, jau penkiolika metų nebuvau su šita problema susidūręs… Kokie dar buffer overflow visokiom skriptinėm kalbom programuojant… Na, užtai labai smagu — gaunu prisiminti senus džiaugsmus ir šiek tiek įtempti smegeninę. Tad galiu pasakyti: mikrovaldiklių programavimas — džiaugsmas tikriems vyrams! 😀

Prikabinu pradinį kodą — jei reikės bitbanginės MAX6675 bibliotekos, galite naudotis.

Advertisements
Komentarai
  1. mindogas parašė:

    O kaip su maitinimu? Spėju naudosi elementaru 5V pakrovėją tam?
    Kas liečia “decouple” kondensatorius patartina dėti prieš kiekviena maitino įėjimą į kažkokią mikroschemą. Konkrečiai tavo atveju matomai kažkas pavalgo nemažai +5V maitinimo ir tuo metu sukelia nemažo triukšmo. Nenustebčiau jei į triukšma reagavo pats MAX6675 ir todėl gražindavo blogus parodymus. Niekada nežinai kam aušti dažniai gali pamaišyti, o ir šiaip kondensatoriai plokštę daro rimčiau atrodančia 😀 Kuo daugiau jų, tuo rimtesnis įrenginys!
    Šiaip geras darbas. Greit laukiam pabaigtuviu!

    • Darau, Blė parašė:

      Tai jo, kokią nors mobeleko atlieką. Dėl kondesatorių — nu, aš juos tiesiog pamirštu. Elementariai. Dar per mažai visokių schemų pridėliojau, kad refleksai į kraują įaugtų.

      Bandau pribaigti. Vakar žiebtuvėlio liepsną matavau 😀 600 ℃ parodė.

  2. mindogas parašė:

    Beja pamiršau pakopinti iš bookmarku linką į AVR patarimų rankinuką iš kurių tau asmeniškai net du (maitinimui kondensatorius ir SPI rezistoriai) būtų pravertę šiame projekte: http://www.atmel.com/images/atmel-2521-avr-hardware-design-considerations_application-note_avr042.pdf

    • Darau, Blė parašė:

      Aš jį esu ir paskaitęs, ir į šiukšlynėlį atminčiai pasidėjęs… bet čia ne tame bėda. Mes gi programeriai, spekus skaitom šiaip, ir taip galim sukodyt…

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