A probléma értelmezése:
* Névjegy visszapattanása: A mechanikus kapcsolók lenyomásakor vagy elengedésekor nem váltanak át azonnal a nyitott és zárt állapotok között. A mechanikai rezgések és az érintkezési hibák miatt többször "pattannak".
* Több trigger: Ez a pattogás több elektromos jelet is generálhat, még akkor is, ha a felhasználó csak egyetlen megnyomásra gondolt. Ez nem kívánt viselkedést okozhat az áramkörökben, különösen azokban, amelyek érzékenyek az időzítésre.
Miért a Debounce?
* Pontos jelértelmezés: Megakadályozza, hogy a hamis jelek befolyásolják az áramkör logikáját vagy vezérlési funkcióit.
* Megbízható működés: Biztosítja, hogy az áramkör csak egyszer reagáljon egyetlen kapcsolónyomásra.
Kipattanási módszerek:
1. Hardveres visszapattanás:
* RC áramkör: A leggyakoribb módszer. Az ellenállás (R) és a kondenzátor (C) párhuzamosan csatlakozik a kapcsolón keresztül. A kondenzátor lassan tölt és kisül, kiszűrve a gyorsan visszapattanó jeleket.
* Hogyan működik: Amikor a kapcsoló zár, a kondenzátor az ellenálláson keresztül töltődik. A visszapattanó jelek túl gyorsak a kondenzátor teljes feltöltéséhez, ezért csak egyetlen tiszta jel halad át.
* Dióda alapú: Diódát használ, hogy megakadályozza a kondenzátor túl gyors kisülését. Ez tiszta jelet biztosít, még akkor is, ha a visszapattanás hosszan tartó.
2. Szoftver visszapattanása:
* Szoftver időzítő: A mikrokontroller programozható úgy, hogy a kapcsoló megnyomása után rövid ideig figyelmen kívül hagyja a bemeneti változásokat. Az ezen időn belüli bármilyen változás visszafordulásnak minősül.
* Hogyan működik: A kapcsoló első megnyomásakor elindul az időzítő. Az időzítő időtartamán belüli további változtatásokat figyelmen kívül hagyja. Az időzítő lejárta után az új kapcsolási állapot elfogadásra kerül.
* Állapotgép: Állapotgépet használ a kapcsoló állapotának nyomon követésére. A gép csak késleltetés után vált állapotot, kiszűri a visszapattanó jeleket.
3. Speciális visszapattanó IC-k:
* Visszatérő IC-k: Kifejezetten a jelek visszaverésére tervezték, robusztus és megbízható megoldásokat kínálva.
A megfelelő módszer kiválasztása:
* Hardveres visszapattanás: Legjobb egyszerű áramkörökhöz, és amikor a költséghatékonyság fontos.
* Szoftver visszapattanása: Nagyobb rugalmasságot kínál, és bonyolultabb forgatókönyveket is képes kezelni.
* Speciális visszapattanó IC-k: Ideális olyan alkalmazásokhoz, amelyek nagy pontosságot, sebességet igényelnek, vagy ha korlátozott a hely.
Főbb szempontok:
* Visszafordulási idő: A visszapattanáshoz használt késleltetésnek vagy időablaknak hosszabbnak kell lennie, mint a váltási visszapattanás időtartama, de rövidebbnek kell lennie, mint a felhasználó várható válaszideje.
* Az áramkör összetettsége: A választott visszacsatolási módszernek meg kell felelnie az áramkör összetettségének és a rendelkezésre álló erőforrásoknak.
Példakód (Szoftver visszapattanása Arduinoval):
``` c++
const int switchPin =2; // A kapcsolóhoz csatlakoztatott tű
int switchState =0; // A kapcsoló kezdeti állapota
unsigned long lastDebounceTime =0; // Legutóbbi alkalommal a kapcsoló állapotot váltott
const unsigned long debounceDelay =50; // Késleltetés ezredmásodpercben
void setup() {
pinMode(kapcsolóPin, INPUT_PULLUP); // Konfigurálja a PIN-kódot a bemenethez
Serial.begin(9600);
}
void loop() {
int olvasás =digitalRead(switchPin);
// Ha a kapcsoló megváltozott, állítsa vissza az időzítőt
if (olvasás !=switchState) {
lastDebounceTime =millis();
}
if ((millis() - lastDebounceTime)> debounceDelay) {
// Ha a késleltetés elég hosszú, tekintse érvényesnek a változtatást
switchState =olvasás;
// A kapcsoló állapotának feldolgozása
if (switchState ==LOW) {
Serial.println("Kapcsoló lenyomva!");
} másik {
Serial.println("A kapcsoló feloldva!");
}
}
}
```
Ez az Arduino kód úgy valósítja meg a szoftver visszapattanását, hogy ellenőrzi a kapcsoló állapotát, és összehasonlítja az előző állapottal. Ha változást észlel, visszaállítja az időzítőt. A módosítás csak bizonyos késleltetés (debounceDelay) után tekinthető érvényesnek és feldolgozottnak.