#09-es kapcsoló áramkör
#09-es kapcsoló áramkör
Sziasztok,
összeraktam, működik.
DE hogy van az, hogy ha a kapcsoló nyitott akkor a digitalread(6) 1 azaz HIGH értéket ad vissza?
Akár "kiemelhetem" az áramkörből a kapcsolót, D6-on HIGH a jelszint, ha zárom a kapcsolót meg "persze" LOW lesz.
Én azt gondoltam, hogy a kapcsoló zárása-nyitása fordított jelszintet produkál...
A kódba teszt célból beletettem a soros monitorra történő visszajelzést, de valahogy mégsem értem a dolgot.
Megköszönöm, ha valaki tisztába teszi ezt számomra.
M.Lajos
A program:
/*
Nyomogomb
Demonstracios program a nyomogomb - LED kapcsolathoz
60 nap alatt Arduino tanfolyam
(c) TavIR http://www.tavir.hu
*/
void setup(){
Serial.begin(9600);
// soros sebesseg
Serial.println("Start...");
pinMode(6, INPUT);
// D6 labon kapcsolo, lab bemenet
pinMode(7, OUTPUT);
// D7 lab: LED
// digitalWrite(6, HIGH);
// D6-on felhuzo bekapcsol
}
void loop() {
Serial.println( " 6-os ");
Serial.print( digitalRead(6));
Serial.print( " 7-es ");
Serial.print( digitalRead(7));
digitalWrite(7, digitalRead(6));
// a D6 jelszintje a D7-re kiirodik
}
összeraktam, működik.
DE hogy van az, hogy ha a kapcsoló nyitott akkor a digitalread(6) 1 azaz HIGH értéket ad vissza?
Akár "kiemelhetem" az áramkörből a kapcsolót, D6-on HIGH a jelszint, ha zárom a kapcsolót meg "persze" LOW lesz.
Én azt gondoltam, hogy a kapcsoló zárása-nyitása fordított jelszintet produkál...
A kódba teszt célból beletettem a soros monitorra történő visszajelzést, de valahogy mégsem értem a dolgot.
Megköszönöm, ha valaki tisztába teszi ezt számomra.
M.Lajos
A program:
/*
Nyomogomb
Demonstracios program a nyomogomb - LED kapcsolathoz
60 nap alatt Arduino tanfolyam
(c) TavIR http://www.tavir.hu
*/
void setup(){
Serial.begin(9600);
// soros sebesseg
Serial.println("Start...");
pinMode(6, INPUT);
// D6 labon kapcsolo, lab bemenet
pinMode(7, OUTPUT);
// D7 lab: LED
// digitalWrite(6, HIGH);
// D6-on felhuzo bekapcsol
}
void loop() {
Serial.println( " 6-os ");
Serial.print( digitalRead(6));
Serial.print( " 7-es ");
Serial.print( digitalRead(7));
digitalWrite(7, digitalRead(6));
// a D6 jelszintje a D7-re kiirodik
}
Re: #09-es kapcsoló áramkör
Van beépítve minden bemeneten felhúzó ellenállás, amit 1 fet kapcsol a tápfeszre.
Az utasítás hatására: digitalWrite(6, HIGH); // D6-on felhúzó bekapcsol
Ez pontosan azt előzi meg, hogy bizonytalan állapot legyen a bemeneten.
Mivel minden mechanikus kapcsolónak van billenési állapota, amikor éppen nem érintkezik sehova.
Ezt kiküszöbölhetik vele.
Az utasítás hatására: digitalWrite(6, HIGH); // D6-on felhúzó bekapcsol
Ez pontosan azt előzi meg, hogy bizonytalan állapot legyen a bemeneten.
Mivel minden mechanikus kapcsolónak van billenési állapota, amikor éppen nem érintkezik sehova.
Ezt kiküszöbölhetik vele.
Re: #09-es kapcsoló áramkör
A 9. lecke 2. bekezdése:
"A valóság azonban, hogy nyitott állapotban antennaként a környezeti zajt összeszedi és meghatározhatatlan potenciálra kerül a kivezetés. Ezt kivédendő a chipen belüli belső ellenállást bekapcsoljuk, vagy külső felhúzó-ellenállást használunk. Így, nyitott kapcsoló esetén az Arduino bemeneten 5 V feszültséget mérhetünk a fenti kapcsolás alkalmazásával!
De mi is az a belső felhúzó-ellenállás? Egyszerűen egy ki/bekapcsolható ellenállás a chip tokján belül a kivezetés és a tápfeszültség közt. A praktikusság és a könnyebb kezelhetőség miatt ugyanúgy kell kezelni, mint a kimenetek esetén a láb magas vagy alacsony szintjét. Azonban ezt a megoldást csak végszükség esetén használjuk! Ha módunk van rá, külső felhúzó-ellenállást építsünk be az áramkörbe. Ennek értéke 1..20 kohm szokott lenni (a szokásos gyakorlat alapján). Ha túl kicsi az értéke, akkor nagy áram folyik át a kapcsolón záráskor és az érintkezőkön a szikraképződés miatt oxidáció indul meg - míg ha túl nagy az értéke, akkor a kapcsoló és a vezetékezése antennaként a hálózati zavarjeleket szedi össze."
"A valóság azonban, hogy nyitott állapotban antennaként a környezeti zajt összeszedi és meghatározhatatlan potenciálra kerül a kivezetés. Ezt kivédendő a chipen belüli belső ellenállást bekapcsoljuk, vagy külső felhúzó-ellenállást használunk. Így, nyitott kapcsoló esetén az Arduino bemeneten 5 V feszültséget mérhetünk a fenti kapcsolás alkalmazásával!
De mi is az a belső felhúzó-ellenállás? Egyszerűen egy ki/bekapcsolható ellenállás a chip tokján belül a kivezetés és a tápfeszültség közt. A praktikusság és a könnyebb kezelhetőség miatt ugyanúgy kell kezelni, mint a kimenetek esetén a láb magas vagy alacsony szintjét. Azonban ezt a megoldást csak végszükség esetén használjuk! Ha módunk van rá, külső felhúzó-ellenállást építsünk be az áramkörbe. Ennek értéke 1..20 kohm szokott lenni (a szokásos gyakorlat alapján). Ha túl kicsi az értéke, akkor nagy áram folyik át a kapcsolón záráskor és az érintkezőkön a szikraképződés miatt oxidáció indul meg - míg ha túl nagy az értéke, akkor a kapcsoló és a vezetékezése antennaként a hálózati zavarjeleket szedi össze."
http://www.tavir.hu - a gazda
Re: #09-es kapcsoló áramkör
Köszönöm a választ.
Én az általad írt sort
digitalWrite(6, HIGH);
egyébként kikommenteltem, de egyébként mindegy, mert ezzel a sorral vagy anélkül is a
digitalRead(6) nekem HIGH állapotot ad vissza amikor az áramkör nyitott. (tehát a kapcsoló nyitott)
A zárt kapcsoló állapot esetén kapok LOW állapotot a D6-on.
Ez az amit nem értek. Lehet, hogy túl triviális a kérdésem.
Én az általad írt sort
digitalWrite(6, HIGH);
egyébként kikommenteltem, de egyébként mindegy, mert ezzel a sorral vagy anélkül is a
digitalRead(6) nekem HIGH állapotot ad vissza amikor az áramkör nyitott. (tehát a kapcsoló nyitott)
A zárt kapcsoló állapot esetén kapok LOW állapotot a D6-on.
Ez az amit nem értek. Lehet, hogy túl triviális a kérdésem.
Re: #09-es kapcsoló áramkör
> A zárt kapcsoló állapot esetén kapok LOW állapotot a D6-on.
Ha a kapcsoló kikapcsolt állapotában a mikrokontroller bemenete tápfeszültségen van, és a kapcsoló bekapcsolt állapotában kerül földre, akkor ez így van rendjén. Ilyenkor a HIGH (logikai 1, azaz 5 Volt) jelenti a kikapcsolt állapotot, a LOW (logikai 0, azaz 0 Volt) pedig a bekapcsolt állapotot.
Ugyanez igaz a kimenetre is. Ha egy kimenet és a föld közé egy LED-et kötsz, akkor az a digitalWrite(LED, HIGH) utasításra fog világítani. Ha viszont a kimenet és a táp közé kötöd a LED-et, akkor az a digitalWrite(LED, LOW) utasításra fog világítani.
Ha a kapcsoló kikapcsolt állapotában a mikrokontroller bemenete tápfeszültségen van, és a kapcsoló bekapcsolt állapotában kerül földre, akkor ez így van rendjén. Ilyenkor a HIGH (logikai 1, azaz 5 Volt) jelenti a kikapcsolt állapotot, a LOW (logikai 0, azaz 0 Volt) pedig a bekapcsolt állapotot.
Ugyanez igaz a kimenetre is. Ha egy kimenet és a föld közé egy LED-et kötsz, akkor az a digitalWrite(LED, HIGH) utasításra fog világítani. Ha viszont a kimenet és a táp közé kötöd a LED-et, akkor az a digitalWrite(LED, LOW) utasításra fog világítani.
Re: #09-es kapcsoló áramkör
Mivel csak 2 féle állapota lehet a digitális bemenetnek! Ezért az említett zajok miatt.
Ha nem fix LOW? Akkor lehet bármi, esetedben éppen HIGH.
De ha több 100* mérnéd egymás után? Biztosan kapnál értékeket vegyesen.
Ha nem fix LOW? Akkor lehet bármi, esetedben éppen HIGH.
De ha több 100* mérnéd egymás után? Biztosan kapnál értékeket vegyesen.
Re: #09-es kapcsoló áramkör
Bővebben 76. oldal: Ports as General Digital I/O
ATMEL 8-BIT MICROCONTROLLER.PDF:http://www.atmel.com/ru/ru/Images/Atmel ... asheet.pdf
Ha Pxn > bemenet?
Rögtön felül az említett ellenállás és FET látható.
És a bemeneti logika az alsó tömbben van ábrázolva.
ATMEL 8-BIT MICROCONTROLLER.PDF:http://www.atmel.com/ru/ru/Images/Atmel ... asheet.pdf
Ha Pxn > bemenet?
Rögtön felül az említett ellenállás és FET látható.
És a bemeneti logika az alsó tömbben van ábrázolva.
Re: #09-es kapcsoló áramkör
Köszönöm a segítő/magyarázó válaszaitokat!
Re: #09-es kapcsoló áramkör
Sziasztok!
A 9. lecke kapcsolását a mintaprogrammal kipróbálva működött, a kapcsoló zárásával a LED kialudt. Ha fordított eredményt szeretnék elérni, hogy alapból a LED ne világítson csak a kapcsoló zárásakor világítson akkor mit kell változtatnom a programon- kapcsoláson?
A 9. lecke kapcsolását a mintaprogrammal kipróbálva működött, a kapcsoló zárásával a LED kialudt. Ha fordított eredményt szeretnék elérni, hogy alapból a LED ne világítson csak a kapcsoló zárásakor világítson akkor mit kell változtatnom a programon- kapcsoláson?
Kód: Egész kijelölése
/*
Nyomogomb
Demonstracios program a nyomogomb - LED kapcsolathoz
60 nap alatt Arduino tanfolyam
(c) TavIR http://www.tavir.hu
*/
void setup(){
pinMode(6, INPUT);
// D6 labon kapcsolo, lab bemenet
pinMode(7, OUTPUT);
// D7 lab: LED
digitalWrite(6, HIGH);
// D6-on felhuzo bekapcsol
}
void loop() {
digitalWrite(7, digitalRead(6));
// a D6 jelszintje a D7-re kiirodik
}
Arduino Mega 2560
Re: #09-es kapcsoló áramkör
digitalWrite(7, !digitalRead(6));
Beteszel egy felkiáltó jelet a digitalread elé.
Beteszel egy felkiáltó jelet a digitalread elé.
Re: #09-es kapcsoló áramkör
A, kapcsoló nem a GND fele, hanem a tápfesz fele zár
B a kapott jel negáltját használod. Ez a NOT (logika), azaz !logika ("!" jelöli a negáltságot).
Kicsit "pongyola" a megfogalmazás. Későbbi ismeretanyaggal már lehet szebben is elmondva .
B a kapott jel negáltját használod. Ez a NOT (logika), azaz !logika ("!" jelöli a negáltságot).
Kicsit "pongyola" a megfogalmazás. Későbbi ismeretanyaggal már lehet szebben is elmondva .
http://www.tavir.hu - a gazda