This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| et:examples:digi:amp_out [2014/01/30 12:23] – tekitatud raivo.sell | et:examples:digi:amp_out [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ==== Võimendatud digitaalne väljund ==== | + | < |
| + | ====== Võimendatud digitaalne väljund ====== | ||
| + | |||
| + | //Vajalikud teadmised: | ||
| + | [HW][[et: | ||
| + | [AVR][[et: | ||
| + | [LIB][[et: | ||
| + | |||
| + | ===== Teooria ===== | ||
| + | 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). | ||
| + | |||
| + | [{{ : | ||
| + | |||
| + | 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, | ||
| + | |||
| + | MOSFETil on tavaliselt 3 viiku: // | ||
| + | |||
| + | 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. | ||
| + | |||
| + | [{{ : | ||
| + | |||
| + | Aegajalt on vaja lülitada seadmeid, mis peavad olema (või on tungivalt soovituslik, | ||
| + | |||
| + | Induktiivsete seadmete lülitamisel (nt alalisvoolumootor, | ||
| + | |||
| + | 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), | ||
| + | |||
| + | ===== Praktika ===== | ||
| + | Järgmevalt on ära toodud lihtne koodijupp mootori sisse välja lülitamiseks, | ||
| + | |||
| + | <code c> | ||
| + | // | ||
| + | // 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); | ||
| + | } | ||
| + | |||
| + | } | ||
| + | } | ||
| + | </ | ||