====== The amplified digital output ======
Needs translation
//Necessary knowledge:
[HW][[en:hardware:homelab:combo]],
[AVR][[en:avr:io]],
[LIB][[en:software:homelab:library:bit]], [LIB][[et:software:homelab:library:pin]]//
===== Theory =====
Mikrokontrollerite viigud ei ole tavaliselt mõeldud suurte koormuste lülitamiseks. Atmeli mikrokontrollerite viigud lubavad läbi lasta vaid 30mA viigu kohta, kuid paljudel kontrolleritel on see number veel väiksem (ARM kontrolleritel vaid mõni mA). See tähendab seda, et mikrokontrolleri viiguga saab juhtida vaid madala voolutarbega seadmeid (nt LEDid, mikrokiibid).
[{{ :examples:digi:dc_pwm.png?150|N-FET mootori lülitamiseks}}]
Selleks, et juhtida suurema voolutarbega seadmeid on vaja väljundi signaali võimendada. Selleks kasutatakse tavaliselt mõnda transistori või integraalkiipi. Transistori lülitust kasutades tuleks jälgida, et võimendustegud oleks piisav ning ei ületataks maksimaalset viigu- ega transistori voolu.
Üks lihstamaid lahendusi on kasutada väljatransistori (Mosfet). Väljatransistoriks nimetatakse pooljuhtseadist, mille pooljuhist voolu juhtiva kanali juhtivust mõjutab elektriväli ja sellest tulenevalt on ta erinevalt bipolaartransistorist pingega tüüritav element. Väljatransistorid jagunevad ehituselt kaheks: P-siirdega ja N-siirdega (sarnaselt bipolaar-transistoridele PNP ja NPN), lühendatult P-FET ja N-FET.
MOSFETil on tavaliselt 3 viiku: //Drain//(D), //Source//(S), //Gate//(G). //Drain// viik jääb alati seadme poole, mida soovitakse lülitada, //source// viik P-FETi puhul + toite, N-FETi puhul GND poole ning //gate// viiku kasutatakse MOSFETi tüürimiseks. Selleks, et MOSFETi sisse-välja lülitada on vaja tekitada pinge G ja S viikude vahele. Sellest tulenevalt N-FET lülitub sisse, kui G viigul on loogiline 1 (olenevalt MOSFETist on minimaalne pinge 3-14V), ning P-FET lülitub sisse, kui G viigul on loogiline 0. Välja lülitamiseks on vaja MOSFETi G viik viia samale pingenivoole nagu S viik. Seega N-FETi puhul 0V ja P-FETi puhul toitepingeni.
Sellest tulenevalt kui on soov lülitada seadmeid, mille tööpinge on kõrgem juhtelektroonika (nt mikrokontrolleri) tööpingest tuleb kasutada N-FETi, või panna lülitava skeemi ja P-FETi vahele veel üks lisa võimenduse aste,sest muidu ei ole võimalik MOSFETi välja lülitada.
MOSFETi kasutamise eelised võrreldes bipolaartransistoridega on:
* Kõrge sisendtakistus - lülituse vool on väga väike
* Madal töötakistus - e. takistus S ja D viikude vahel, MOSFETi soojenemine on võrdlemisi väike
* Väike temperatuurimõju - lülitatav vool ei sõltu temperatuurist
* Kõrge lülitussagedus - lülitus on piisavalt kiire, et läbi lasta PWM signaali.
[{{ :examples:digi:flybackdiode.png?150|Vastudiood}}]
Aegajalt on vaja lülitada seadmeid, mis peavad olema (või on tungivalt soovituslik, et oleks) elektriliselt täielikult eraldatud lülitavast sekeemist. Näiteks, kui on vaja lülitada vahelduvvoolu seadmeid või väga suure võimsusega seadmeid. Siis tuleks kasutada lülituseks releed. Olenevalt relee mähise lülitusvoolust on vaja mikrokontrolleri viiku ka relee mähise lülitamiseks võimendada kasutades kas bipolaar-transistori või MOSFETi.
Induktiivsete seadmete lülitamisel (nt alalisvoolumootor, relee mähis jne) tuleb kasutada ka kaitsedioodi, mis induktiivse seadme välja lülitamisel oleks võimeline kaitsma lülitusskeemi ja mikrokontrolleriviiku tagurpidi pinge eest. Nimelt tekib induktiivse seadme mähise magnetvälja tõttu negatiivne pinge, mis võib kahjustada kas lülitavat elementi (transistor, MOSFET) või mikrokontrolleri viiku.
Lisaks üksikutele elementidele on aegajalt transistorid või MOSFETid pandud ka ühte integraallülitusse. Üheks näiteks on ULN2004, mis sisaldab endas 7 darlington paari kanalit. Sellise kiibid on ideaalsed juhul, kui on vaja juhtida mitut kanalit (nt unipolaarne samm-mootor), lihtsustades trükkplaadi tegemist ja vähendades üldist komponentide arvu. Tihti on nendesse integraalskeemidesse sisse ehitatud ka vastudioodid.
===== Practice =====
Järgmevalt on ära toodud lihtne koodijupp mootori sisse välja lülitamiseks, mis on ühendatud unipolaarse samm-mootori pistikusse. Mootori üks juhe on ühendatud toitega (Vbat) ning teine ULN kiibiga läbi viigu Stp1.
//
// Võimendatud väljundi testkood
// DC Mootor on ühendatud unipolaarse mootori pistikusse
// Mootori üsimene viik Vbat
// Mootori teine viik Stp1
//
#include
pin motor = PIN(J,3);
//
// Põhiprogramm
//
int main(void)
{
// LEDide ja mootori viigud väljunditeks
pin_setup_output(motor);
pin_setup_output(led_green);
pin_setup_output(led_red);
// Roheline LED kustu, punane põlema
led_on(led_red);
led_off(led_green);
// Lõputu tsükkel
while (true)
{
// Kui S1 on vajutatud, mootor tööle
if(button_read(S1))
{
pin_set(motor);
led_on(led_green);
led_off(led_red);
}
// Kui S3 on vajutatud, mootor kinni
if(button_read(S3))
{
pin_clear(motor);
led_off(led_green);
led_on(led_red);
}
}
}