AVR Lämpötilamittari

Alunperin julkaistu: 10.2.2017

Viimeksi muokattu: maanantai 8.4.2024

Tämä projekti sai alkunsa erään elektroniikasta kiinnostuneen henkilön yhteydenotosta. Sain tehtäväksi suunnitella ja toteuttaa lämpötilamittarin, joka mittaa lämpötilaa 0 - 70 C välillä ja näyttää lukeman suurilta 7-segmenttinäytöltä. Mittaustarkkuudeksi piti aluksi saada 0,1 C, mutta todellisuudessa aivan tähän tarkkuuteen ei päästy. Mittarin anturina tuli käyttää NTC-vastusta ja mittarin tuli toimia paristoilla. Ominaisuuksien määrittely tehtiin yhdessä "tilaajan" kanssa jonka jälkeen aloin tekemään ostoslistaa. Ostoslistalle kertyikin seuraavat komponentit:

  • Kide 4 MHz
  • Kondensaattoreita: 22 pF ja 1 uF
  • Atmel ATtiny261, 2K Flash, 128 bit RAM
  • Trimmeri 5k
  • Paristokotelo
  • NPN piensignaali transistori
  • Betatherm NTC termistori (5K3A373I)
  • Vastuksia 7-segmenttinäytöille
  • 3 kpl Kingbright SA10-21EWA LED-näyttöjä

Aloitin suunnittelun tutkimalla NTC-vastuksen käyttäytymistä lämpötilan suhteen, ja tein muutamia laskelmia joista havainnollistin itselleni kuinka epälineaarinen anturi todellisuudessa oli. Käytännössä tulikin huomattua, kuinka NTC-vastusta kannattaa tällaisessa sovelluksessa käyttää. Kytkennässä ei mitään vallan erikoista ole, mutta selitetään nyt kuitenkin.

Lämpötilaa "tunnusteleva" elin on siis NTC-vastus, jonka resistanssi pienenee lämpötilan noustessa. Kytkin NTC-vastuksen sarjaan trimmerin kanssa, jolloin kytkentään syntyy jännitejakokytkentä, missä jakojännite nousee kun lämpötilakin nousee. Trimmeri toimii myös kalibrointiruuvina lämpötilamittarille. Alla olevassa kuvassa on esitetty anturin kytkentä (kuvaa klikkaamalla aukeaa PDF-tiedostona kytkentäkaaviokuva kokonaisuudessaan).

Kytkentäkaaviosta nähdään kuinka koko laite on toteutettu. AVR mikrokontrolleria käytetään 7-segmenttinäyttöjen ohjaamiseen sekä AD-muunnoksen tekemiseen. Ohjelmointi tapahtui AVR CodeVision ohjelmiston avulla ja piirilevyn tein itse syövyttämällä. Virtalähteenä käytettiin kolmea AA-paristoa. Virtaa härveli kokonaisuudessaan vei noin 20 mA joten kolmella AA-paristolla laitteen pitäisi pystyä toimimaan noin 15-20 tuntia. Paristojahan tällainen laite tosin syö. Tästä pystyisikin tekemään parannetun version, missä olisi kiinnitetty huomiota paristojen kestoon (esim. lisäämällä hakkuriteholähteen ja optimoimalla virrankulutusta, tai käyttämällä MSP430 sarjan mikro-ohjaimia, jotka itsessään syövät hyvin vähän virtaa).

Koska AVR-mikro-ohjaimessa oli vain 2 kilotavua ohjelmamuistia, käytin tietokoneella laskemaani Excel taulukkoa AD-muuntimen arvon muuttamiseksi. Ohjelma etsii flash-muistissa olevan ennalta lasketun arvon ja näyttää lämpötilan sen perusteella. Tällainen tapa etsiä arvoa taulukosta tunnetaan myös nimellä lookup-table. Kokeilin tehdä myös lämpötilan laskenta-algoritmin, mutta se olisi vienyt liikaa muistia ohjaimelta, joten en voinut tätä ratkaisua käyttää. Toisaalta tällä tavalla olisin saanut lämpötilan laskettua hyvinkin tarkasti.

LED-näyttöjä ohjataan portilla A ja kukin näyttö laitetaan hetkeksi vuorollaan päälle transistorien avulla. Todellisuudessa näytöt siis vilkkuvat koko ajan, mutta vilkunta tapahtuu niin suurella taajuudella (useita kilohertsejä) ettei ihmisen silmä sitä erota.

Lopuksi vielä muutama kuva valmiista mittarista ja piirilevystä:

Kieltämättä itse tehdyn näköinen, mutta niinhän se näissä hommissa tahtoo välillä olla. Mittari toimitettiin "tilaajalle" ja viimeisimmän tiedon mukaan tyytyväisiä on oltu.