#09-es kapcsoló áramkör

A "60 nap alatt Arduino" tanfolyam házi feladatai és közvetlen témái
Válasz küldése
M.Lajos
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2017. július 15. szombat, 20:05

#09-es kapcsoló áramkör

Hozzászólás Szerző: M.Lajos »

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
}
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: #09-es kapcsoló áramkör

Hozzászólás Szerző: kapu48 »

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.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: #09-es kapcsoló áramkör

Hozzászólás Szerző: Robert »

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."
http://www.tavir.hu - a gazda :)
M.Lajos
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2017. július 15. szombat, 20:05

Re: #09-es kapcsoló áramkör

Hozzászólás Szerző: M.Lajos »

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.
vargham
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2014. január 8. szerda, 8:32

Re: #09-es kapcsoló áramkör

Hozzászólás Szerző: vargham »

> 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.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: #09-es kapcsoló áramkör

Hozzászólás Szerző: kapu48 »

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.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: #09-es kapcsoló áramkör

Hozzászólás Szerző: kapu48 »

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.
M.Lajos
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2017. július 15. szombat, 20:05

Re: #09-es kapcsoló áramkör

Hozzászólás Szerző: M.Lajos »

Köszönöm a segítő/magyarázó válaszaitokat! :mrgreen:
Zsolesz73
Újonc
Újonc
Hozzászólások: 8
Csatlakozott: 2020. január 29. szerda, 9:02

Re: #09-es kapcsoló áramkör

Hozzászólás Szerző: Zsolesz73 »

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?

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
atilla
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2016. május 10. kedd, 18:35

Re: #09-es kapcsoló áramkör

Hozzászólás Szerző: atilla »

digitalWrite(7, !digitalRead(6));

Beteszel egy felkiáltó jelet a digitalread elé.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: #09-es kapcsoló áramkör

Hozzászólás Szerző: Robert »

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 :) .
http://www.tavir.hu - a gazda :)
Zsolesz73
Újonc
Újonc
Hozzászólások: 8
Csatlakozott: 2020. január 29. szerda, 9:02

Re: #09-es kapcsoló áramkör

Hozzászólás Szerző: Zsolesz73 »

Köszönöm a segítséget mindenkinek!
Arduino Mega 2560
Válasz küldése