Kažkoks tai valdiklis

Posted: 2015-07-09 in Darbeliai
Žymos:,

Gal pamenate (jei tuo metu mane jau skaitėte) mano vieną taip ir neįgyvendintą projektėlį — šilumos ūkio valdiklį? Aha, neįgyvendintą. Nes kai jį sugalvojau ir to darbo ėmiausi, tai buvau veikiamas daugiau entužiazmo, nei sveiko proto. Na, bet tikrai nesigailiu: išmokau daug ką ir dabar daug ką padaryčiau geriau.

Bet smagumas tas, kad tas pats draugas, kuriam tą valdiklį dariau, paspardė mane į subinę ir liepė su tuo valdikliu nors kažką visgi padaryt — daiktas yra, softo prikodyta irgi dachuja, nu reikia bent jau kažkaip jį įdarbint, bent jau kaip nors primityviai.

Taigi vieną dieną nusivežiau aparatą ir kompiuterį pas tą draugą ir sėdau kodyt. Kodijimas susidėjo iš pusės softo išmetimo ir perdėliojimo į tą, ką reikia. O prireikė truputį protingesnio saulės kolektoriaus valdiklio, nei termorelė.

Logika labai labai paprasta: valdiklis turi patikrinti dviejų termometrų duomenis. Vienas — kolektoriuje, kitas — boileryje (ar bent jau netoli jo). Jei temperatūrų skirtumas sudaro 10 laipsnių, reikia paleisti siurbliukus ir nusiurbinėti šilumą iš kolektoriaus. Taip pat nusiurbinėti ir su mažesniu skirtumu, jei kolektoriuje vanduo užšyla iki 65 ℃.

Aš prieš tuos porą metų labiausiai prasiknisau su dviem dalykais: meniu programavimu ir tinklo sąsaja. Mindaugas, pamenu, gąsdino, kad Atmega 328P yra per silpnas ir ekranui valdyt, ir dar tinklo plokštei. Jis buvo neteisus. Procesoriukas būtų per silpnas, jei jį naudotume kaip Arduino. Tuo tarpu mano kode yra tik su Arduino suderinamų priedų porai bibliotekų, bet tik tiek. Bet šiaip ta web sąsaja ir „nužudė“ visą projektą, nes mane užkniso ją kodyti. Ją kodyti būtų šiek tiek lengviau, jei prie procesoriuko būtų SD kortelė, ten būtų galima sukišti HTML paruoštukus ir pan. O kadangi projekte toks dalykas nenumatytas, o ir SPI sąsaja tik viena (ji ir tinklo plokštei naudojama), tai nebūtų buvę taip paprasta. O be SD kortelės reikėjo visą HTML ir JavaScript kodą kišt į PROGMEM, nedideliais, į tinklo buferį telpančiais, gabaliukais ir siuntinėti keliais TCP paketais. Trumpai tariant, užkniso ir pamečiau tą darbelį.

Todėl dabar atgaivintas projektas tinklo plokštės nebeturi, tačiau tebeturi 1602 ekraniuką.

Ką aš ten gero pridariau… taigi sukūriau labai gudrią funkcijinę meniu sistemą. Naudojami pointeriai į funkcijas, o funkcijų pointerių masyvas guli PROGMEM. Meniu punktai gali būti įvairūs: skaičiuko reikšmės nustatymas, intervalo (pvz. valandų) nustatymas, datos pakeitimas, Dallas daviklio registravimas ir panašiai. Tačiau visokios taisyklės, ką daryti tada ir tada, prie tokių ar anokių sąlygų, yra kode. Taisyklių „programavimo“ per meniu nedariau, nes kažin, ar verta būtų buvę.

Dabar, kai daiktas pritaikytas tam paprastučiui saulės kolektoriaus valdymui, jo meniu sudaro dviejų Dallas daviklių registravimas, maksimalios kolektoriaus temperatūros nustatymas nusiurbinėjimui beigi skirtuminio nusiurbinėjimo reikšmė. Laikrodis yra, bet nenaudojamas niekam.

Šiek tiek apie sukauptą patirtį. Su šiuo valdikliu gan gerai padirbėjau maketuodamas plokštę beigi pasiekiau lazerinės-lygintuvinės plokščių gamybos aukštumas. Sugalvojau visai gerą būdą spręsti kai kurioms problemoms, gerokai pramokau AVR procesorių subtilybes ir pajutau tikrą malonumą sėdėdamas vakarais prie viso to darbo. Už vakarus vis dar esu dėkingas žmonikei, kuri be eilės skaitė knygeles ir man suteikė daug laiko terliojimuisi.

Antrą kartą, be abejo, tokio daikto nedaryčiau. O darydamas daryčiau kitaip. Pirmas dalykas: pradėčiau nuo dėžutės, kurioje daiktas gulės. Nes dabar pirma padariau plokštę, o paskui pradėjau galvot, į ką visą tą agregatą būtų galima įdėt. O pasirodo, kad į nieką. Nes įdėjus į ką nors nelieka priėjimo ir prie klaviatūros. Ekranėlis irgi mėtosi bilekaip. Greičiausiai naudočiau kokią nors DIN formato dėžutę.

Davikliams jungti padariau trijų eilių 0,1″ kištukų lizdyną. Tai — nesąmonė. Nepatikimas reikalas, net ir prilitavus tinkamus kištukus. Ir nepatogiai padėjau, be to. Dabar daryčiau trijų skylių terminalus su varžtukais, kur būtų galima daviklių laidukus prisukti.

Greičiausiai daryčiau kokį nors Arduino Nano adapterį, o ne lituočiau procesorių pats. Nes Nano dar turi ir USB-UART keitiklį, o man teko naudotis išoriniu — dar vienas nepatogumas ir laidelių krūva. Be to, per Nano USB lizdą dar ir maitinimą iš kokio kroviklio būtų galima sušerti.

Na, ir nedaryčiau tinklo sąsajos. Tinklo sąsajai, ypač kokybiškai, reikia kažko galingesnio, kad ir to paties nuvalkioto Raspberry Pi ar kokio klono Banana Pi ar dar kažkokio kito kompiuteriuko. Valdiklis turi valdyti, o ne vaizduoti kompiuterį.

Reklama
Komentarai
  1. Skirmantas parašė:

    Ir nei vieno paveiksliuko :/ Anei diagramos…

    • Darau, Blė parašė:

      Jei šeimininkas ką nors nufotkys, tai bus. Aš sukodijau, atidaviau, o tolimesnio statuso nežinau. Kadangi šiandien pirma saulėta diena po „įdiegimo“, tai gal kažkoks rezultatas ir bus.

  2. mindogas parašė:

    Pirmiausia SPI sąsaja niekas nedraudžia dalintis su kitais priskiriant skirtingam divaisui individualų ChipSelect kanalą. Tačiau jei LCD ir Ethernet dar sugebėjai patalpinti į viena masę, tai jau su SD kortele vėlgi pagalvočiau ar kas butu gavesi. Minimalus FAT sistemos nuskaitymo integravimas užimtu nemažai programos, o naudoti RAW metodą – knislia programinat ne tik Arduino dalį, bet ir įkėlinėjant pakaitimus pačiame HTML kode 😀

    Tam naudoti PROGMEM neblogas išukis 😀 Sveikinu, kad prastumiai ta Ethernet ir dar labiau džiaugiuosi kad damušei šitą reikalą aplamai 🙂

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