This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:examples:digi:amp_out [2014/02/05 13:29] – rellermaa | 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 ===== | ===== 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). | 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. | 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. | ||
| Line 20: | Line 26: | ||
| * Kõrge lülitussagedus - lülitus on piisavalt kiire, et läbi lasta PWM signaali. | * 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, | Aegajalt on vaja lülitada seadmeid, mis peavad olema (või on tungivalt soovituslik, | ||
| Line 26: | Line 32: | ||
| Induktiivsete seadmete lülitamisel (nt alalisvoolumootor, | 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), | + | 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 ===== | ===== Praktika ===== | ||
| Line 32: | Line 38: | ||
| <code c> | <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); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| </ | </ | ||