Arts >> Kunst og underholdning >  >> Magi >> Trylletricks

Hvordan afviser du en switch?

Debouncing af en switch er en afgørende teknik i elektronik til at forhindre uønskede multiple triggere fra et enkelt tryk. Her er en oversigt over, hvad det er, hvorfor det er nødvendigt, og forskellige metoder til at opnå det:

Forstå problemet:

* Skift kontakt bounce: Mekaniske kontakter, når de trykkes eller slippes, skifter ikke øjeblikkeligt mellem åben og lukket tilstand. De "hopper" flere gange på grund af mekaniske vibrationer og kontaktfejl.

* Flere udløsere: Denne hoppe kan generere flere elektriske signaler, selvom brugeren kun havde til hensigt et enkelt tryk. Dette kan forårsage utilsigtet adfærd i kredsløb, især dem, der er følsomme over for timing.

Hvorfor debounce?

* Nøjagtig signalfortolkning: Forhindrer falske signaler i at påvirke dit kredsløbs logik eller kontrolfunktioner.

* Plidelig drift: Sikrer, at dit kredsløb kun reagerer én gang på et enkelt kontakttryk.

Debouncing-metoder:

1. Hardware Debouncing:

* RC-kredsløb: Den mest almindelige metode. En modstand (R) og en kondensator (C) er forbundet parallelt over afbryderen. Kondensatoren oplades og aflades langsomt og filtrerer de hurtige hoppende signaler fra.

* Sådan virker det: Når kontakten lukkes, oplades kondensatoren gennem modstanden. Afvisningssignalerne er for hurtige til at oplade kondensatoren helt, så kun et enkelt, rent signal passerer igennem.

* Diode-baseret: Bruger en diode for at forhindre, at kondensatoren aflades for hurtigt. Dette sikrer et rent signal, selvom hoppet er forlænget.

2. Software Debouncing:

* Software-timer: En mikrocontroller kan programmeres til at ignorere inputændringer i en kort periode efter et tryk på en kontakt. Enhver ændring inden for denne tid betragtes som afvisning.

* Sådan virker det: En timer startes, første gang der trykkes på kontakten. Eventuelle yderligere ændringer inden for timerens varighed ignoreres. Når timeren udløber, accepteres den nye switch-tilstand.

* Statsmaskine: Bruger en tilstandsmaskine til at spore skiftetilstanden. Maskinen skifter kun tilstand efter en forsinkelse og filtrerer de hoppende signaler fra.

3. Specialiserede debouncing IC'er:

* Debouncing IC'er: Designet specifikt til at afvise signaler, hvilket giver robuste og pålidelige løsninger.

Valg af den rigtige metode:

* Hardware Debouncing: Bedst til simple kredsløb, og når omkostningseffektivitet er vigtig.

* Softwaredebouncing: Tilbyder større fleksibilitet og kan håndtere mere komplekse scenarier.

* Specialiserede debouncing IC'er: Ideel til applikationer, der kræver høj nøjagtighed, hastighed, eller når pladsen er begrænset.

Vigtige overvejelser:

* Debouncing Time: Forsinkelsen eller tidsvinduet, der bruges til at debouncing, skal være længere end varigheden af switch-bouncen, men kortere end brugerens forventede responstid.

* Kringløbskompleksitet: Den valgte debouncing-metode bør være passende for kompleksiteten af kredsløbet og de tilgængelige ressourcer.

Eksempelkode (software, der debouncing med Arduino):

```c++

const int switchPin =2; // Pin forbundet til switchen

int switchState =0; // Starttilstand for kontakten

unsigned long lastDebounceTime =0; // Senest skiftede kontakten tilstand

const unsigned long debounceDelay =50; // Forsinkelse i millisekunder

void setup() {

pinMode(switchPin, INPUT_PULLUP); // Konfigurer stiften til input

Serial.begin(9600);

}

void loop() {

int læsning =digitalRead(switchPin);

// Hvis kontakten ændres, skal du nulstille timeren

if (læser !=switchState) {

lastDebounceTime =millis();

}

if ((millis() - lastDebounceTime)> debounceDelay) {

// Hvis forsinkelsen er lang nok, betragtes ændringen som gyldig

switchState =læsning;

// Behandle skiftetilstanden

if (switchState ==LAV) {

Serial.println("Switch trykket!");

} andet {

Serial.println("Switch frigivet!");

}

}

}

```

Denne Arduino-kode implementerer software-debouncing ved at kontrollere switch-tilstanden og sammenligne den med den tidligere tilstand. Hvis der registreres en ændring, nulstiller den en timer. Først efter en vis forsinkelse (debounceDelay) betragtes ændringen som gyldig og behandlet.

Trylletricks

Relaterede kategorier