Razumijevanje problema:
* Promjena odbijanja kontakta: Mehanički prekidači, kada se pritisnu ili otpuste, ne prelaze odmah između otvorenog i zatvorenog stanja. Višestruko "odskaču" zbog mehaničkih vibracija i nesavršenosti kontakta.
* Višestruki okidači: Ovo poskakivanje može generirati više električnih signala iako je korisnik namjeravao samo jedan pritisak. To može uzrokovati nenamjerno ponašanje u krugovima, posebno onima koji su osjetljivi na vrijeme.
Zašto Debounce?
* Točna interpretacija signala: Sprječava da lažni signali utječu na logiku ili upravljačke funkcije vašeg kruga.
* Pouzdan rad: Osigurava da vaš krug reagira samo jednom na jedan pritisak prekidača.
Metode odbijanja:
1. Odbijanje hardvera:
* RC krug: Najčešća metoda. Otpornik (R) i kondenzator (C) spojeni su paralelno preko sklopke. Kondenzator se polako puni i prazni, filtrirajući brze signale odbijanja.
* Kako radi: Kada se sklopka zatvori, kondenzator se puni kroz otpornik. Signali odbijanja su prebrzi da bi potpuno napunili kondenzator, tako da prolazi samo jedan, čisti signal.
* Na temelju diode: Koristi diodu za sprječavanje prebrzog pražnjenja kondenzatora. To osigurava čist signal, čak i ako je odbijanje dugotrajno.
2. Odbijanje softvera:
* Softverski mjerač vremena: Mikrokontroler se može programirati da kratko vrijeme zanemari promjene ulaza nakon pritiska na prekidač. Sve promjene unutar tog vremena smatraju se odbijanjem.
* Kako radi: Tajmer se pokreće prvim pritiskom na prekidač. Sve daljnje promjene unutar trajanja timera se zanemaruju. Nakon što timer istekne, prihvaća se novo stanje prekidača.
* State Machine: Koristi stroj stanja za praćenje stanja prekidača. Stroj mijenja stanja samo nakon odgode, filtrirajući odbijajuće signale.
3. Specijalizirani IC-ovi za uklanjanje odbijanja:
* IC-ovi za uklanjanje odbijanja: Osmišljen posebno za uklanjanje odbijanja signala, pružajući robusna i pouzdana rješenja.
Odabir prave metode:
* Odbijanje hardvera: Najbolje za jednostavne sklopove i kada je isplativost važna.
* Odbijanje softvera: Nudi veću fleksibilnost i može se nositi sa složenijim scenarijima.
* Specijalizirani IC-ovi za uklanjanje odbijanja: Idealno za aplikacije koje zahtijevaju visoku točnost, brzinu ili kada je prostor ograničen.
Ključna razmatranja:
* Vrijeme odbijanja: Odgoda ili vremenski prozor koji se koristi za uklanjanje odbijanja trebao bi biti dulji od trajanja odbijanja prekidača, ali kraći od očekivanog vremena odgovora korisnika.
* Složenost strujnog kruga: Odabrana metoda odbijanja mora biti prikladna za složenost kruga i raspoložive resurse.
Primjer koda (Software Debouncing s Arduinom):
```c++
const int switchPin =2; // Pin spojen na prekidač
int switchState =0; // Početno stanje prekidača
unsigned long lastDebounceTime =0; // Zadnji put je prekidač promijenio stanje
const unsigned long debounceDelay =50; // Kašnjenje u milisekundama
void setup() {
pinMode(switchPin, INPUT_PULLUP); // Konfigurirajte pin za unos
Serial.begin(9600);
}
void loop() {
int čitanje =digitalRead(switchPin);
// Ako se prekidač promijenio, resetirajte tajmer
if (čitanje !=switchState) {
lastDebounceTime =millis();
}
if ((millis() - lastDebounceTime)> debounceDelay) {
// Ako je odgoda dovoljno duga, smatrajte promjenu važećom
switchState =čitanje;
// Obrada stanja prekidača
if (switchState ==LOW) {
Serial.println("Prekidač pritisnut!");
} inače {
Serial.println("Prekidač pušten!");
}
}
}
```
Ovaj Arduino kod implementira uklanjanje odbijanja softvera provjerom stanja prekidača i usporedbom s prethodnim stanjem. Ako se otkrije promjena, poništava mjerač vremena. Tek nakon određene odgode (debounceDelay) promjena se smatra valjanom i obrađuje se.