Mikä on mikrokontrolleri?

Julkaistu: lauantai 11.2.2017

Mikrokontrollerit ovat monen nykypäivän sulautetun laitteen äly ja niitä löytyy kaikkialta. Niitä löytyy esimerkiksi kaukosäätimistä, MP3-soittimista, taskulaskimista, kännyköistä, henkilöautoista, televisiosta, radioista, jääkaapeista, pakastimista, pyykkikoneista yms.

Microchipin valmistama PIC mikroprosessori tai mikrokontrolleri.

Nykypäivänä ihminen käyttää todennäköisesti kymmeniä mikrokontrollereita ilman, että sitä varsinaisesti tulee edes ajatelleeksi. Mikrokontrollereita voidaankin luonnehtia computer-on-a-chip tyylisiksi laitteiksi, koska ne sisältävät tietokonemaisia ominaisuuksia hyvin pienessä paketissa. Mikrokontrollereista käytetään yleisesti lyhenteitä MCU (MicroController Unit) ja uC/μC, myös prosessori nimitystä kuulee käytettävän.

Miksi mikrokontrollereita sitten käytetään? Miksi ei käytettäisi jotain muuta, esimerkiksi logiikkapiirejä? Tämä kysymys saattaa joillekin herätä. Vastaus kysymykseen on yksinkertaisesti se, että mikrokontrollereilla voidaan hoitaa hyvin monimutkaisia toimintoja ja suorittaa erilaisia laskutoimituksia, mitä millään muulla piirillä ei pystyisi tekemään. Tästä yksinkertaisesta syystä maailmassa on miljardeja mikrokontrollereita, joita käytetään päivittäin.

Alla olevissa kappaleissa on selitetty mm. mikrokontrollerin toimintaperiaatteesta, käyttöön ottamisesta, valinnasta ja kytkemisestä. Jos haluat lukea varsinaisesta ohjelmoinnista, niin vilkaise opastani Mikrokontrollerin ohjelmointi C-kielellä.

Kuinka mikrokontrolleri eroaa tavallisen tietokoneen aivoista?

On tiedossa, että PC:n eli tavallisen tietokoneen pääprosessori CPU kykenee suorittamaan nykypäivänä miljardeja laskusuorituksia sekunnissa. CPU tarvitsee kuitenkin toimiakseen muutakin kuin "aivot", kuten laskentayksikön (ALU), välimuistia (cache), muistinohjaimen (MMU), työmuistia datan käsittelyyn (RAM) yms. Tämän lisäksi tietokoneen CPU tarvitsee ympärilleen emolevyn ja virtalähteen, joka tarjoaa sille tarvittavat käyttöjännitteet ja riittävästi virtaa. Myös suoritettava ohjelmakoodi on ladattava prosessorille massamuistista ja tämän hoitaa tietokoneen emolevy yhdessä muistinohjaimen kanssa, joka voi olla erillinen piiri tai integroituna prosessoriin. Tietokoneen pääsuoritin ei myöskään suoraan ohjaile I/O toimintoja, vaan käyttää näitä jonkin ohjaimen välityksellä.

Mikrokontrollerilla on myös CPU ja muut tarvittavat lisälaitteet CPU:n käyttöön, mutta siinä on paljon muutakin. Mikrokontrolleriin on tyypillisesti yhdistetty yleiskäyttöisiä tulo- ja lähtöportteja ja -pinnejä eli I/O:ta. Siinä on usein myös lisälaitteita (peripheral), kuten AD-muunnin, sarjadatan liikutteluun sopiva yksikkö (UART/USART/USI), pulssileveysmodulaatio-ohjain (PWM), ajastimia (timer), lämpötila-anturi jne.

Lisälaitteiden lisäksi mikrokontrollerilla on oma ohjelmamuistinsa (Flash/FRAM) ja työmuistinsa (RAM/SRAM). Käynnistymiseen ja toimintaan mikrokontrolleri tarvitsee vain sähköä, eikä hirveästi muuta - paitsi joskus myös kiteen ja pari kondensaattoria. Se on siis hyvin autonominen, eikä vaadi ympäristöltään läheskään niin paljon kuin tietokoneen CPU. Täytyy kuitenkin muistaa, että mikrokontrolleri ja CPU on suunniteltu erilaisiin tarpeisiin ja erilaisiin ympäristöihin.

Mikrokontrollerin toimintaperiaate lyhyesti

Varmaankin on hyvä tietää myös hieman siitä, kuinka mikrokontrolleri ylipäätään kykenee toimimaan. Kuten suurin osa tätä lukevista tietääkin, niin tietokoneen CPU toimii tietyllä kellotaajuudella. Jokaisella kellon jaksolla CPU tekee yhden tai useamman toiminnon ja mitä nopeammin kello tikittää, sen nopeammin CPU suorittaa toimintoja. Tällaista kelloon sidottua toimintaa kutsutaan synkronoiduksi toiminnaksi ja monet digitaalipiirit ovatkin synkronisia.

Mikrokontrollerit ja tietokoneiden prosessorit pystyvät nykypäivänä tekemään yhden kellojakson aikana montaa eri toimintoa, joten aina ei voi sanoa, että yhdellä megahertsillä tehtäisiin miljoona toimintoa (operaatiota) sekunnissa, todennäköisesti toimintoja tehdään tällä tavalla laskettuna paljon enemmän.

Mikrokontrolleri saa käskynsä ohjelmamuistista, mistä mikroprosessorin rekistereihin ladataan eri lukuja. Mikroprosessori tulkitsee luvut joko käskyiksi suorittaa esimerkiksi kahden luvun yhteenlasku tai siirtää dataa paikasta toiseen tai joksikin muuksi toiminnoksi. Käskyt siitä, mitä mikrokontrolleri kulloinkin tekee, on tietysti laatinut sen ohjelmoija.

Ohjelmointiin käytetään PC:tä, millä laadittu ohjelma käännetään ensiksi mikrokontrollerin ymmärtämään muotoon. Tämän jälkeen käännetty tiedosto ladataan mikrokontrollerin ohjelmamuistiin ohjelmointityökalulla tai esimerkiksi USB:n välityksellä, jonka jälkeen ohjelman suoritus voi alkaa.

Mikrokontrollerin käyttöönotto

Mikrokontrollerin käyttämisellä voidaan tarkoittaa loppukäyttäjää, joka esimerkiksi kaupallisessa tuotteessa on lopullinen asiakas kenelle tuote on tehty. Harrastelijapiireissä käyttäjällä kuitenkin tarkoitetaan sitä, joka rakentaa mikrokontrollerin ohjelmointiympäristön ja ohjelmoi sen avulla mikrokontrolleria.

Mikrokontrollerin käyttöön ja ohjelmointiin vaaditaan siis vähintään tietokone, ohjelmointityökalut, ohjelmointilaite tai -kaapeli, mikrokontrolleri ja tarvittavat lisäkomponentit. Voi kuulostaa paljolta, mutta on itse asiassa aika vähän.

Tyypillinen ohjelmointityökalu on tietenkin ilmainen tai kaupallisen sovelluksen demoversio. Ohjelmointilaitteena voi olla esimerkiksi ISP tai JTAG-laite, ohjelmointikaapelina voi olla sarjakaapeli tai USB (riippuu ohjelmointilaitteesta ja tavasta), ja mikrokontrollerina 4/8/16/32 -bittinen mikrokontrolleri, jonka käyttäjä valitsee itse.

Mikrokontrollerin käyttöönotto etenee esimerkiksi vaiheittain seuraavasti. Aluksi "pystytetään" ohjelmointiympäristö, joka tarkoittaa ohjelmointityökalujen asentamista ja ohjelmointikaapelin sekä alustan hankkimista. Tämän jälkeen voidaankin alkaa kokeilemaan ja tutustumaan käytettävään piiriin.

Mikrokontrollerin valinta

Mikrokontrollerin valinta ei aina ole helpoin tehtävä, kuten ei moni muukaan asia tällä alalla. On mietittävä ensiksi mihin ympäristöön mikrokontrolleri tulee ja mitä laitteita se ohjaa. Olisi tärkeää miettiä kysymystä "voisinko tehdä tämän tietokoneella?" - jos vastaus on kyllä, tee se tietokoneella. Jos taas vastaus on ei, niin mikroprosessori on todennäköisin vaihtoehto.

Kun on selvillä, että käytetään mikrokontrolleria niin seuraavaksi tulee selvittää mitä mikrokontrolleria käytetään. Todennäköisesti voit käyttää projektissasi hyvin montaa erilaista mikrokontrolleria, joten "parhaimman" piirin valinta riippuu loppujen lopuksi omista mieltymyksistä.

Asioita helpottamaan olen kuitenkin luonut pienen listan kysymyksiä, mikä auttaa etsimään sopivaa mikrokontrolleria.

  • Mihin koteloon mikrokontrolleri tulee? 
    Tarvitseeko piirin olla niin pieni kuin mahdollista vai onko koolla mitään väliä? Koteloista löytyy lisätietoa IC-piirit sivulta.
  • Onko laitteen lämpötilan vaihtelut suuria? 
    Tarvitaanko -40 C ... +85 C vai riittääkö pienempi lämpötila-alue mille toiminta on taattu.
  • Mikä on käyttöjännite? VCC
    Mikrokontrollerit tarvitsevat vakaan jännitteen toimiakseen, onko se 3 V vai 5 V vai jokin muu, jää sinun päätettäväksi. Jos et aluksi tiedä, niin oleta että se on joko 3,3 V tai 5 V.
  • Tarvitaanko vähävirtainen piiri?
    Paristokäyttöisissä laitteissa vähävirtaisuus on ehdottoman tärkeää. Jos saatavilla on jatkuvasti sähköä eikä laitteen lämpiäminen huolestuta, vähävirtaisuudella ei liene suurta merkitystä. Toki olisi hyvä, että laitteet kuluttavat mahdollisimman vähän.
  • Montako inputtia/tuloa tarvitaan? I/O
    Laske yhteen monestako eri syötteestä tarvitaan kerätä tietoa, esimerkiksi käyttäjän napin painallusten havainnointi.
  • Monta outputtia/lähtöä tarvitaan? I/O
    Laske yhteen montaako eri laitetta tai lähtöä pitää pystyä ohjaamaan? Esimerkiksi ledit, moottorit, LCD-näytöt yms.
  • Tarvitaanko analogiatuloja? ADC
    Pitääkö pystyä mittaamaan muuttuvaa jännitettä jostain kytkennästä? Esimerkiksi pariston jännitettä, PTC/NTC vastusta, potentiometriä? Jos kyllä niin tarvitaan analogiamuunnin.
  • Tarvitaanko analogialähtöjä? DAC
    Tarvitseeko johonkin kytkentään syöttää muuttuvaa jännitettä? Esimerkiksi FETin tai transistorin ohjaus jännitteellä yms? Signaalin muuntaminen? Jos kyllä niin tarvitaan digitaali-analogia muunnin.
  • Montako bittiä mikroprosessorissa tarvitsee olla?
    Tyypillisesti on saatavilla 8/16/32 bittisiä mikroprosessoreita. 8-bittiset ovat yleensä halvimpia, mutta eivät kovin suorituskykyisiä.
  • Miten suuri määrä ohjelmamuistia tarvitaan?
    Lyhyesti sanottuna muistia ei ole koskaan liikaa. Rakennettavan sovelluksen tarvitsemaa ohjelmamuistia voi olla vaikeaa arvioida. Esimerkiksi yhteen kilotavuun (kiloByte) ei mahdu hirveän monimutkaista sovellusta, mutta esimerkiksi jonkin sortin moottorin ohjain siihen mahtuu kyllä. Hyvä sääntö on, että jos arvioit tarvitsevasi esimerkiksi 4 kilotavua, niin tuplaa se.

Edellä oleviin kysymyksiin vastaamalla saadaan jo kartoitettua hyvinkin kattava joukko erilaisia mikrokontrollereita.

Mikrokontrollereiden kehitysalustat tarjoavat oivan mahdollisuuden tutustua valitun piirin eri ominaisuuksiin ja ohjelmointiin noin muutenkin. Kehitysalustoja on saatavilla hyvin laajalti ja monet elektroniikkaa myyvät nettikaupat tarjoavat näitä alustoja myös harrastajille. Esimerkiksi http://www.robomaa.com/ tarjoaa erilaisia mikrokontrollereiden kehityskittejä.