Pochopení problému:
* Přepnutí kontaktu: Mechanické spínače při stisknutí nebo uvolnění nepřecházejí okamžitě mezi otevřeným a zavřeným stavem. Vícenásobně "odskakují" v důsledku mechanických vibrací a kontaktních nedokonalostí.
* Více spouštěčů: Toto poskakování může generovat více elektrických signálů, i když uživatel zamýšlel pouze jedno stisknutí. To může způsobit nezamýšlené chování v obvodech, zejména těch, které jsou citlivé na časování.
Proč Debounce?
* Přesná interpretace signálu: Zabraňuje rušivým signálům ovlivňovat logické nebo řídicí funkce vašeho obvodu.
* Spolehlivý provoz: Zajišťuje, že váš obvod reaguje pouze jednou na stisknutí jediného spínače.
Metody odrazu:
1. Hardware Debouding:
* RC obvod: Nejběžnější metoda. Rezistor (R) a kondenzátor (C) jsou zapojeny paralelně přes spínač. Kondenzátor se nabíjí a vybíjí pomalu a filtruje rychle odrážející signály.
* Jak to funguje: Když se spínač sepne, kondenzátor se nabije přes odpor. Odražené signály jsou příliš rychlé na to, aby se kondenzátor plně nabil, takže projde pouze jediný čistý signál.
* Na základě diody: Používá diodu, která zabraňuje příliš rychlému vybíjení kondenzátoru. Tím je zajištěn čistý signál, i když je odskok delší.
2. Softwarové odskoky:
* Softwarový časovač: Mikrokontrolér lze naprogramovat tak, aby ignoroval změny vstupu po krátkou dobu po stisknutí spínače. Jakékoli změny během této doby jsou považovány za okamžité.
* Jak to funguje: Při prvním stisknutí spínače se spustí časovač. Jakékoli další změny během trvání časovače jsou ignorovány. Po vypršení časovače je přijat nový stav spínače.
* State Machine: Používá stavový automat ke sledování stavu přepínače. Stroj změní stavy až po prodlevě a odfiltruje odrážející signály.
3. Specialized Debouncing ICs:
* Debouding IC: Navrženo speciálně pro odrážení signálů a poskytuje robustní a spolehlivá řešení.
Výběr správné metody:
* Hardwarové rušení: Nejlepší pro jednoduché obvody a tam, kde je důležitá hospodárnost.
* Odskok softwaru: Nabízí větší flexibilitu a zvládne i složitější scénáře.
* Specializované debouncing IC: Ideální pro aplikace vyžadující vysokou přesnost, rychlost nebo při omezeném prostoru.
Klíčové úvahy:
* Doba odskoku: Zpoždění nebo časové okno použité pro odskok by mělo být delší než doba trvání odskoku spínače, ale kratší než očekávaná doba odezvy uživatele.
* Složitost obvodu: Zvolená metoda odrazu by měla být vhodná pro složitost obvodu a dostupné zdroje.
Ukázkový kód (Software Debouncing s Arduinem):
```c++
const int switchPin =2; // Pin připojený k přepínači
int switchState =0; // Počáteční stav přepínače
unsigned long lastDebounceTime =0; // Naposledy změnil stav přepínače
const unsigned long debounceDelay =50; // Zpoždění v milisekundách
void setup() {
pinMode(switchPin, INPUT_PULLUP); // Nakonfigurujte pin pro vstup
Serial.begin(9600);
}
void loop() {
int čtení =digitalRead(switchPin);
// Pokud se spínač změnil, resetujte časovač
if (čtení !=switchState) {
lastDebounceTime =millis();
}
if ((millis() - lastDebounceTime)> debounceDelay) {
// Pokud je zpoždění dostatečně dlouhé, považujte změnu za platnou
switchState =čtení;
// Zpracování stavu přepínače
if (switchState ==NÍZKÁ) {
Serial.println("Spínač stisknut!");
} jinak {
Serial.println("Spínač uvolněn!");
}
}
}
```
Tento kód Arduino implementuje softwarové debouding tím, že zkontroluje stav přepínače a porovná jej s předchozím stavem. Pokud je zjištěna změna, vynuluje časovač. Teprve po určité prodlevě (debounceDelay) je změna považována za platnou a zpracovaná.