Nykypäivänä mikrokontrollerit ohjaavat kaikenlaisia laitteita ympärillämme ja saavat erilaisia asioita tapahtumaan. Esimerkiksi valojen ohjauksia, tuulettimien pyörimisiä tai erilaisia ääniä saadaan aikaiseksi nimenomaan mikrokontrollereilla - vain muutaman mainitakseni.
Mikrokontrolleri ei kuitenkaan välttämättä ole kytketty suoraan ohjattavaan kuormaan, vaan välissä on jokin puskuri tai vahvistin, joka kytkee kuormaan tarvittavan määrän virtaa ja jännitettä. Tällainen väli-kytkentä myös suojaa mikrokontrollerin IO:ta ja on helppo myöskin testata erikseen. Tällä sivulla esitellään muutama ohjauskytkentä, jotka voidaan helposti rakentaa. Aluksi kuitenkin yleistä asiaa esimerkiksi transistorin valitsemisesta. Samat periaatteet pätevät muihinkin transistorityyppeihin, esimerkiksi MOSFET-transistoriin. Transistoreista voit lukea lisää transistorit sivulta.
Ohjaustransistorin valinta
Tärkeä juttu kytkennässä on tietenkin ohjaustransistorin valitseminen. Voidaan ehkä sanoa, että joka paikkaan soveltuvaa valintamenetelmää ei voi suoralta kädeltä määritellä, koska täytyy tietää kytkennän käyttöympäristö ja muut olosuhteet, jotka kytkennän toiminnan aikana vallitsevat. Kuitenkin muutamia yksittäisiä ja yleisiä valintakriteereitä voidaan määritellä ja ehdokas transistorien ominaisuuksia vertailemalla paras transistori tehtävään yleensä löydetään. Jokaisen transistorin ominaisuudet selviävät aina datalehdestä (joka löytyy googlettamalla tai valmistajan kotisivuilta).
Ensiksi voidaan miettiä yksinkertaisesti kuormaa, mitä ohjaustransistorin on ohjattava? Kuinka suuri kuorma on kyseessä tai minkä tehoinen kuorma on? Jos ohjattavana on vaikkapa joukko ledejä etuvastuksineen, niin kuorma on ledien yhteenlaskettu virta, sillä kyseisen virran täytyy kulkea ohjaustransistorin läpi.
Jos ohjattavana kuormana on moottori, on syytä selvittää minkälaiset ominaisuudet moottorilla on. Esimerkiksi mikä on moottorin pysäytysvirta (stall current) tai liikkeellelähtövirta (start up current). Näistä päästään helposti suuriin maksimiarvoihin, joten on valittava tarpeeksi kestävä transistori sen mukaan (yleensä jokin kovatehoinen MOSFET).
Ohjaustransistorin valintaan vaikuttaa virrankeston lisäksi ohjausjännite, jota merkitään nyt symbolilla +V. Valittavan transistorin on siis kestettävä ohjattavan jännitteen +V ja kytkennän maan, eli 0-voltin jännite-ero.
Kolmas vaikuttava tekijä on transistorin ohjaustapa. Ohjataanko transistoria virralla vai jännitteellä? Ohjauskytkentä voi olla analoginen (esim. potentiometrillä ohjaus) tai digitaalinen (PWM-ohjaus) tai vaikka ihan pelkkä pieni vipukytkin.
Jos edellä mainitut asiat on kunnossa, niin transistorin valintaan vaikuttaa vielä yksi asia, joka on transistorin tehonkesto. Tehonkeston maksimiarvo määritellään myös transistorin datalehdessä ja sitä usein merkitään symbolilla PTOT.
Transistorin tehonkesto on kuitenkin hieman monimutkaisempi asia, koska komponentin maksimitehon kestoa määritellessä täytyy ottaa huomioon komponentin ympäristön lämpötila, fyysinen kiinnitys, piirilevyn kuparipinta-ala, tuuletus sekä useita muita tekijöitä. Yksinkertaisuuden vuoksi emme kuitenkaan tässä niitä käy läpi, vaan tyydytään siihen tietoon, että komponentin tehonkesto on riittävä +25 C asteessa.
Transistorin datalehdestä käy ilmi mikä on suurin sallittu tehohäviö, kun komponentin läpi kulkee tietty määrä virtaa ja sen yli on tietty jännite. Transistorin, kuten muidenkin komponenttien tehohäviö noudattaa kaavaa P = UI, eli tehohäviö = jännite * virta (tehohäviöstä enemmän tällä sivulla).
Huom! Jos sinun tarvitsee käyttää MOSFETia suoraan esimerkiksi Arduinon tai jonkin muun mikroprosessorin/mikrokontrollerin kanssa, niin kannattaa aina etsiä elektroniikkakaupoista logiikkatason MOSFETeja (hakuun Logic-Level MOSFET). Näissä VGS jännite on suoraan yhteensopiva 3.3 voltin ja 5 voltin elektroniikan kanssa. Tällöin ei tarvitse niin paljoa selata ko. transistorin datalehteä ja säästyy hieman aikaa.
Kumpi kannattaa valita: BJT vai MOSFET?
Tähän kysymykseen ei ole olemassa selkeää vastausta, mutta asiaa voi lähestyä esimerkiksi listaamalla plussia ja miinuksia ylös oheisen taulukon mukaan:
BJT | MOSFET |
BJT: PNP tai NPN | MOSFET: N/P-tyyppi |
Ohjataan virralla | Ohjataan jännitteellä |
Lämpötilakerroin on negatiivinen | Lämpötilakerroin on positiivinen |
Lähtövirtaa säädetään kantavirran avulla | Lähtövirtaa säädetään hilajännitteen avulla |
BJT on halpa | MOSFETit ovat kalliimpia |
ESD ei ole niin vakava ongelma | Herkkä ESD:lle |
Pieni virtavahvistuskerroin, epästabiili | Korkea virtavahvistuskerroin, stabiili |
Ohjausresistanssi on pieni | Ohjausresistanssi suuri |
Ohjausvirta milli-/mikroampeereita | Ohjausvirta pikoampeereita |
Kytkentänopeus hidas | Kytkentänopeus nopea |
Taajuusvaste erinomainen | Taajuusvaste on hyvä |
Saturaatiossa jännitehäviö komponentin yli voltin kymmenesosia. | Saturaatiossa jännitehäviö komponentin yli voltin sadasosia. |
Kantajännite ohjaukselle +/- 0.6-0.7 volttia. | Hilajännite ohjaukselle >2.0 volttia |
Sisäänottoimpedanssi matala | Sisäänottoimpedanssi korkea |
Kytkentätaajuus hidas | Kytkentätaajuus nopea |
Käytetään tyypillisesti pienivirtaisissa sovelluksissa | Käytetään tyypillisesti suurivirtaisissa sovelluksissa |
Valintaa mielestäni kannattaa lähestyä virran kautta, eli jos ohjattava virta ja esimerkiksi kytkentätaajuus on kovin pieni, niin BJT on sopiva ja halpa valinta transistoriksi. MOSFETit kykenevät paljon suurempiin virtoihin ja ovat nopeampia vaikkakin hieman kalliimpia. MOSFETeja käytetään tyypillisesti esimerkiksi hakkuriteholähteissä (SMPS = Switching Mode Power Supply) ja analogisten signaalien vahvistuksessa (audio) usein enemmän BJT:tä.
Ohjaus NPN-transistorilla, resistiivinen kuorma, ON/OFF
Yllä olevassa kuvassa on esitettu NPN-transistorilla tehty kuorman ohjaus. Tässä kytkennässä mikrokontrollerin porttipinni on kytketty vastuksen avulla ohjaustransistorin kannalle. Ohjaustransistori on kytketty kuorman ja maan väliin ja kuorma on kytketty ohjausjännitteen ja transistorin väliin.
Kytkennällä halutaan näin ohjata resistiivistä kuormaa päälle ja pois. Tämä lienee käytetyin tapa kun mikrokontrolleri kytketään ohjaamaan jotain suurempaa kuormaa. Logiikka tässä kytkennässä on näin ollen:
Ohjaus "1" -tilassa = Kuorma R päällä (virta kulkee)
Ohjaus "0" -tilassa = Kuorma R pois päältä (virta ei kulje)
Kytkentää suunnitellessa on hyvä tarkastaa mikä on transistorin saturointijännite datalehdestä. Saturointijännite on se jännite, kun transistori on täysin johtavassa tilassa. Useimmille voidaan olettaa turvallisesti 0,7 volttia, mutta jos käytetään esimerkiksi darlington-transistoreita, on niillä kynnysjännite saturoituneena tyypillisesti 2 x 0,7 = 1,4 volttia. Tässä oletetaan kuitenkin 0,7 volttia.
Seuraavassa huomioita ja asioita itse kytkennästä, jotka olisi hyvä ymmärtää.
Transistorin kantavastus Rb
Mikrokontrollerin I/O -pinneistä voidaan yleensä ottaa muutamia kymmeniä milliampeereita virtaa. Tämä riippuu aina mikrokontrollerista, mutta oletetaan että tämä virta on 30 mA (esim. AVR-mikrokontrollereilla tyypillinen määrä).
Kun mikrokontrollerin ohjaus asetetaan päälle, niin vastus Rb rajoittaa pinnistä otetun virran johonkin sallittuun/määritettyyn arvoon. Mikrokontrollereilla on toki sisäiset rajoitukset, mutta se kannattaa varmistaa datalehdestä.
Jos vastusta Rb ei olisi, niin tämä virta olisi aina yllämainittu 20 mA. Jos lähtöjä olisi kytkettynä 10 kappaletta ilman kantavastuksia, niin mikrokontrollerin pinneistä otettaisiin tällöin 200 mA virtaa. Tällainen virta voi kuumentaa mikrokontrolleria liikaa ja kuumentumisen johdosta lähtöjä voi alkaa rikkoutumaan. Tästä syystä virta rajoitetaan yleensä vastuksella Rb.
Mikrokontrollereiden datalehdissä on yleensä maininta sallitusta maksimivirrasta, mikä sen I/O-linjoista voi mennä yhtäaikaa lävitse. Jos ohjauksia on paljon, täytyy yhteenlaskettu maksimivirta ottaa huomioon ja rajoittaa se tarvittaessa vastuksella Rb kullekin lähdölle tai vain joillekin lähdöille. Suosittelisin käyttämään vastusta jokaiselle lähdölle.
Transistorin kantavirran määritys ja kantavastuksen Rb mitoitus
Koska kyseessä on virtaa vahvistava transistori (BJT), täytyy kannalle kulkea virtaa, että transistorin läpi alkaa kulkemaan virtaa.
Mitä kantavirta tarkoittaa sitten transistorin ohjauksen, vastuksen Rb ja mikrokontrollerin ohjauspinnin kannalta?
Ensiksikin mikrokontrollerin ohjauspinnistä täytyy saada virtaa, mutta ei välttämättä paljoa. Virran suuruus riippuu transistorin virtavahvistus arvosta, jota merkitään komponenttien datalehdissä symbolilla hFE.
Esimerkiksi tavallisella piensignaalitransistorilla BC547B virtavahvistus on 200 - 450 välillä. Tämä tarkoittaa siis sitä, että jos transistorilla haluttaisiin ohjata vaikkapa 100 mA:n virtaa (Ic, joka on absoluuttinen maksimi tälle komponentille), niin kantavirran suuruus täytyy minimissään olla 100mA / 200 = 0,5 mA, jotta transistori on kytkeytynyt täysin johtavaan tilaan (saturoitunut). Selvin sanoin ja kaavana kerrottuna siis:
Haluttu ohjausvirta / minimi vahvistus = minimi kantavirta
IB(min) = Ic(max) / hFE(min)
Kantavastuksen Rb laskeminen
Kun mikrokontrolleri asettaa ohjauspinnin "0"-tilaan, ohjaus on pois päältä, eikä virtaa kulje, koska transistorin kannan jännite ei ylitä sen kynnysjännitettä VBE. Näin ollen vastuksen Rb yli ei ole jännitettä eikä virtaa myöskään se rajoita.
Kun mikrokontrollerin ohjaus 'naksahtaa' "1" tilaan, niin transistorin kannalle muodostuu kynnysjännite VBE ja vastuksen yli jää mikrokontrollerin I/O-jännite vähennettynä transistorin kynnysjännitteellä:
VRb = VIO - VBE
Mikrokontrollerin ohjausnastoille on aina määritely pienin ja suurin jännite, mitkä niillä taataan olevan, kun niiden ohjaus on "1" -tilassa tai "0" -tilassa. Näitä merkitään usein symboleilla VOL (Voltage Output Low) ja VOH (Voltage Output High).
Joten jos halutaan pelata varman päälle, niin katsotaan mikrokontrollerin datalehdestä VOH(min) -jännite ja vähennetäänkin kynnysjännite tästä arvosta. Tällöin saadaan varmistettua että ohjaus pelaa varmasti jokaisessa kytkennässä ja kantavastuksen yli jäävän jännitteen kaavaksi saadaan:
VRb = VOH(min) - VBE
Kun nyt tunnetaan jännite ja virta, voidaan vastus laskea ohmin lain avulla. Kantavastus Rb on siis:
Rb = (VOH(min) - VBE ) / IB(min) (vrt. R = U/I)
Esimerkkilasku:
Esimerkiksi AtmelAVR ATtiny2313 mikrokontrollerin VOH(min) -jännite on 4,2 volttia (kuva leikattu datalehdestä alle).
Tästä saadaan pienin vastuksen yli oleva jännite. Kun jännite ja virta tunnetaan, voidaan vastus laskea ohmin lain avulla. Kantavastus Rb saadaan siis:
Rb = (VOH(min) - VBE ) / IB(min)
Rb = (4,2 - 0,7) / 0,5 mA
Rb = 7000 Ω
Käytännössä voidaan valita jokin E-sarjan standardi vastus, joka on pienempi kuin laskettu arvo, jolloin minimivirran ehto transistorin kannalle varmasti täyttyy. Esimerkiksi 6k8.
Ohjaus NPN-transistorilla, induktiivinen kuorma, ON/OFF
Yllä olevassa kuvassa on esitettu NPN-transistorilla tehty kuorman ohjaus. Tässä kytkennässä mikrokontrollerin porttipinni on kytketty vastuksen avulla ohjaustransistorin kannalle. Ohjaustransistori on kytketty kuorman ja maan väliin ja kuorma on kytketty ohjausjännitteen ja transistorin väliin.
Kytkennällä halutaan näin ohjata induktiivista kuormaa päälle ja pois. Logiikka tässä kytkennässä on näin ollen:
Ohjaus "1" -tilassa = Kuorma L päällä (virta kulkee)
Ohjaus "0" -tilassa = Kuorma L pois päältä (virta ei kulje)
Kytkennässä on tärkeää, että ohjaava transistori suojataan diodilla, joka on kytketty estosuuntaisesti ohjausjännitteesen nähden. Ilman suojadiodia transistorin VCB -jännite nousisi liian suureksi sillä hetkellä kun transistori ohjataan ensimmäisen kerran kiinni tai auki. Tämä johtuu kelan ominaisuudesta vastustaa virran muutosta ja tässä tapauksessa puhutaan transienttijännitteestä. Suojadiodi auttaa purkamaan kelan "ylimääräisen" energian ja näin ollen suojaa transistoria ylijännitteeltä.
Ohjaus N-MOSFET-transistorilla resistiivinen kuorma
Esimerkki N-tyypin MOSFET-transistorin ohjaamisesta jännitteellä. Lue ohjauksesta tarkemmin transistorit sivulta. Induktiivisen kuorman ohjauksessa suojadiodi MOSFETin nielusta (Drain) käyttöjännitteeseen päin kannattaa kytkeä.
Ohjaus P-MOSFET-transistorilla resistiivinen kuorma
Esimerkki P-tyypin MOSFET-transistorin ohjaamisesta jännitteellä. Lue ohjauksesta tarkemmin transistorit sivulta. Induktiivisen kuorman ohjauksessa suojadiodi MOSFETin lähteestä (Source) käyttöjännitteeseen päin kannattaa kytkeä.