Pochopenie problému:
* Prepnúť odraz od kontaktu: Mechanické spínače pri stlačení alebo uvoľnení neprechádzajú okamžite medzi otvoreným a zatvoreným stavom. V dôsledku mechanických vibrácií a kontaktných nedokonalostí viacnásobne "odskakujú".
* Viaceré spúšťače: Toto poskakovanie môže generovať viacero elektrických signálov, aj keď používateľ zamýšľal iba jedno stlačenie. To môže spôsobiť neúmyselné správanie v obvodoch, najmä tých, ktoré sú citlivé na časovanie.
Prečo zrušenie?
* Presná interpretácia signálu: Zabraňuje tomu, aby rušivé signály ovplyvňovali logické alebo riadiace funkcie vášho obvodu.
* Spoľahlivá prevádzka: Zabezpečuje, že váš obvod reaguje iba raz na stlačenie jediného spínača.
Metódy odrazu:
1. Odskok hardvéru:
* RC okruh: Najbežnejšia metóda. Rezistor (R) a kondenzátor (C) sú paralelne zapojené cez spínač. Kondenzátor sa pomaly nabíja a vybíja, čím filtruje rýchle odskakujúce signály.
* Ako to funguje: Keď sa spínač zatvorí, kondenzátor sa nabíja cez odpor. Signály odrazu sú príliš rýchle na to, aby sa kondenzátor úplne nabil, takže cez neho prechádza iba jediný čistý signál.
* Na báze diód: Používa diódu, aby sa zabránilo príliš rýchlemu vybitiu kondenzátora. To zaisťuje čistý signál, aj keď je odraz predĺžený.
2. Odskok softvéru:
* Softvérový časovač: Mikrokontrolér môže byť naprogramovaný tak, aby ignoroval zmeny vstupu na krátku dobu po stlačení spínača. Akékoľvek zmeny v tomto čase sa považujú za nevrátené.
* Ako to funguje: Pri prvom stlačení spínača sa spustí časovač. Akékoľvek ďalšie zmeny v rámci trvania časovača sa ignorujú. Po vypršaní časovača sa akceptuje nový stav spínača.
* Stav stroja: Používa stavový automat na sledovanie stavu spínača. Stroj zmení stavy až po oneskorení, pričom odfiltruje odskakujúce signály.
3. Špecializované debouncing IC:
* Odskokové integrované obvody: Navrhnuté špeciálne na odskok signálov, poskytujúce robustné a spoľahlivé riešenia.
Výber správnej metódy:
* Odskok hardvéru: Najlepšie pre jednoduché obvody a keď je dôležitá efektívnosť nákladov.
* Odskok softvéru: Ponúka väčšiu flexibilitu a dokáže zvládnuť zložitejšie scenáre.
* Špecializované integrované obvody s debouncing: Ideálne pre aplikácie vyžadujúce vysokú presnosť, rýchlosť alebo pri obmedzenom priestore.
Kľúčové úvahy:
* Čas oneskorenia: Oneskorenie alebo časové okno použité na odskok by malo byť dlhšie ako trvanie odrazu prepínača, ale kratšie ako očakávaný čas odozvy používateľa.
* Zložitosť obvodu: Zvolená metóda odskoku by mala byť vhodná pre zložitosť obvodu a dostupné zdroje.
Príklad kódu (odskok softvéru s Arduino):
``` c++
const int switchPin =2; // Pin pripojený k prepínaču
int switchState =0; // Počiatočný stav prepínača
unsigned long lastDebounceTime =0; // Naposledy zmenil stav prepínača
const unsigned long debounceDelay =50; // Oneskorenie v milisekundách
void setup() {
pinMode(switchPin, INPUT_PULLUP); // Nakonfigurujte pin pre vstup
Serial.begin(9600);
}
void loop() {
int čítanie =digitalRead(switchPin);
// Ak sa spínač zmenil, resetujte časovač
if (číta sa !=switchState) {
lastDebounceTime =millis();
}
if ((millis() - lastDebounceTime)> debounceDelay) {
// Ak je oneskorenie dostatočne dlhé, považujte zmenu za platnú
switchState =čítanie;
// Spracovanie stavu prepínača
if (switchState ==LOW) {
Serial.println("Prepínač stlačený!");
} inak {
Serial.println("Spínač uvoľnený!");
}
}
}
```
Tento kód Arduino implementuje softvérový debouding kontrolou stavu prepínača a jeho porovnaním s predchádzajúcim stavom. Ak sa zistí zmena, vynuluje časovač. Až po určitom oneskorení (debounceDelay) sa zmena považuje za platnú a spracovanú.