Slik implementeres maskinvarefjerning av prelling for brytere og releer når programvarevarefjerning av prelling ikke er passende

Av Clive "Max" Maxfield

Bidrag fra DigiKeys nordamerikanske redaktører

I forbindelse med elektrisk og elektronisk teknikk er en bryter en komponent som kan «holde» eller «bryte» en elektrisk krets, og derved avbryte en elektrisk strøm eller avlede den fra en leder til en annen. Som ingeniører kan bekrefte, er det mange forskjellige typer brytere, inkludert vippebrytere, vekslebryter, trykknappbrytere, mikro- og grensebrytere, magnetiske brytere og rørbrytere og releer. Alle har en ting til felles: de spretter. Det er bare det de gjør.

Vanligvis har denne spretten liten eller ingen innvirkning på kretsen, men hvis den digitale kretsen er rask nok til å detektere og reagere på flere sprettinger, kan det få alvorlige konsekvenser. En ingeniørs oppgave er å unngå eller redusere effekten av denne prellen, eller gjøre bryteren prellfri. Mens bransjen lenge har praktisert maskinvarefjerning av prelling, har den i nyere tid gått over til programvarebaserte prellfri-tilnærminger. Det oppstår imidlertid situasjoner hvor maskinvarefjerning av prelling er et bedre alternativ.

Denne artikkelen forklarer sprett og drøfter programvare- og maskinvaretilnærminger til prellfri. Deretter peker den på tilfeller hvor maskinvarefjerning av prelling er et bedre alternativ før du viser hvordan det kan implementeres. Eksempler på bryterenheter og komponenter for maskinvarefjerning av prelling introduseres som eksempler fra NKK-brytere, ON Semiconductor, Texas Instruments, Maxim Integrated og LogiSwitch.

Hva er sprelling i bryter (switch bounce)?

Når en bryter eller et relé er slått på eller på, kan det et menneske oppfatter som en øyeblikkelig enkeltrespons hver gang enheten endrer tilstand, faktisk involvere 100 eller flere handlinger for å danne eller bryte kontakt, som vedvarer i flere tusendeler av et sekund før kontakten endelig legger seg på plass.

Vurder for eksempel en enkelt pol, enkelt kast (SPST) normalt åpen (NO) panelmonteringsbryter som en M2011SS1W01 fra NKK. Anta at den ene siden av denne bryteren, som kan betraktes som inngangen, er koblet til jord (0 volt), mens den andre siden, som i dette tilfellet er utgangen, er koblet til en 5 volts strømforsyning (vist som +ve) via en opptrekksmotstand (pull-up resistor) (R1) (figur 1).

Skjema over SPST-NO-vippebryterens prelling (klikk for å forstørre)Figur 1: Når det gjelder en SPST-NO-vippebryter, kan det oppstå elastisk støt både når bryteren er aktivert og deaktivert. (Bildekilde: Max Maxfield)

Vær oppmerksom på at bryteren kan sprette både når bryteren aktiveres (lukkes) og deaktiveres (åpnes). Noen ganger kan sprettene gå hele veien mellom forsyningsskinnene, her betraktet som logikk 0 og 1 tilstander. I dette tilfellet er dette «rene» prellinger. Til sammenligning, hvis signalet når bare en mellomspenning, blir disse referert til som «skitne» prellinger.

Når det gjelder en enpolet, toveis ( single pole, double throw – SPDT) panelmontert bryter som NKKs M2012SS1W01-BC, prelling på både de normalt åpne (NO) og normalt lukkede (NC) terminalene (figur 2). I dette tilfellet er det bare vist «rene» prellinger for enkelhets skyld.

Skjema over SPDT-vippebryterens prellinger (klikk for å forstørre) Figur 2: I tilfelle en SPDT vippebryter, kan prellinger forekomme både på NO- og NC-terminalen når bryteren aktiveres og deaktiveres. (Bildekilde: Max Maxfield)

I mange tilfeller er denne varigheten på signal-prellinger slik at den ikke har noen effekt. Problemer oppstår når en bryter er koblet til et elektronisk utstyr som er raskt nok til å detektere og reagere på flere prellinger. Det som trengs, er en måte å få bryteren prellfri ved å fjerne signalet som kommer fra bryteren før det aktiveres av det elektroniske utstyret.

Programvare- kontra maskinvarefjerning av prelling

På 1960- og 1970-tallet ble prellfrie brytere implementert ved hjelp av en rekke maskinvareteknikker, fra enkle resistorkapasitor-forsinkelseskretser (RC) som brukes med SPST-brytere til mer sofistikerte sett-/tilbakestillingsfunksjoner (SR).

I nyere tid, og fordi mange systemer har en mikroprosessorenhet (MPU) eller mikrokontrollenhet (MCU), har det blitt vanlig å bruke programvareteknikker for å fjerne prelling som kommer fra en bryter. Programvarefjerning av prelling er imidlertid ikke alltid den beste tilnærmingen. Det er noen utrustninger som involverer små, lavytende, minnebegrensede prosessorer med begrenset kodeplass og/eller klokkesykluser som er tilgjengelige for å implementere prellfri-rutiner. I disse tilfellene kan en maskinvareimplementering være en bedre løsning.

Mange programvareutviklere er også ukjente med de fysiske egenskapene til brytere, for eksempel det faktum at i tillegg til å variere fra en aktivering til en annen, kan egenskapene på prellinger til en bryter påvirkes av miljøforhold som temperatur og fuktighet.

Problemet med programvareutvikleres manglende kompetanse på brytere forsterkes av det faktum at tilgjengelig litteratur om hopp på brytere ofte er forvirrende og motstridende. Det er for eksempel vanlig å lese at en bryter vil slutte å prelle i 1 millisekund (ms) etter aktivering eller deaktivering. Imidlertid utførte den kjente eksperten på innebygde systemer Jack Ganssle empiriske tester på en rekke brytertyper, aktiverte hver bryter 300 ganger og loggførte den minimale og maksimale mengden prell for både åpning og lukking av kontaktene. Han rapporterte en gjennomsnittlig hoppvarighet på 1,6 ms og en maksimal prellvarighet på 6,2 ms. Noen industrielle og militære «anbefalt fremgangsmåte» anbefaler å vente 20 ms etter innledende aktivering før man antar at bryteren har sluttet å prelle; andre anbefaler å vente 20 ms etter den siste oppdagede prellen før du utløser noen handlinger.

Videre er det mange enkle ikke-prosessorbaserte systemer som også krever at brytere er gjort prellfri. Noen få eksempler på slike systemer er en binær teller som kjører syvsegments skjermer som teller pulser fra et relé; utløserinngangen til en 555 engangstimer brukes som en motorkontroll for en dør eller port; og en registerbasert finite state maskin (FSM) som bruker tastede innganger. Det finnes også elektroniske trimpotensiometre (potter) med verdier modifisert ved hjelp av bryterinnganger (opp, ned og noen ganger lagre) der bryterens prelling vil være problematisk.

Alle disse eksemplene gjør det klart at noe kunnskap om hvordan man utfører maskinvarefjerning av prelling kan være nyttig for enhver designer eller utvikler.

Maskinvarefjerning av prellling på en SPST-BRYTER med et RC-nettverk

En av de enkleste maskinvarebaserte prellfri-løsningene for brytere bruker et resistorkapasitor-nettverk (RC-nettverk) sammen med en SPST-bryter. Det finnes mange varianter av en slik krets. En av de mer allsidige implementasjonene involverer to motstander og en diode (figur 3).

Skjema over RC-nettverk for å fjerne prelling en SPST-BRYTER (klikk på for å forstørre)Figur 3: Når du bruker et RC-nettverk til å fjerne prellingen i en SPST-BRYTER (topp), tvinger tilsetningen av dioden (D1) kondensatoren (C1) til å lade via motstand R1 og tømme via motstand R2. (Bildekilde: Max Maxfield)

Når bryteren aktiveres (lukkes), tømmes kondensator C1 via motstand R2. Hvis diode D1 hadde blitt utelatt fra denne kretsen, ville C1 bli ladet via motstander (R1 + R2) når bryteren ble deaktivert (åpnet). Tilstedeværelsen av D1 betyr imidlertid at C1 kun vil bli ladet via R1.

I noen tilfeller er bare aktivering av bryteren av interesse (dvs. utløser handlinger som skal oppstå), i hvilket tilfelle D1 kan utelates. Men hvis handlinger skal utløses når bryteren både aktiveres og deaktiveres, og hvis det vurderes å minimere forsinkelsen, anbefales tilsetning av D1.

Observer eksponentielle lade- og utladningskurver vist av kondensatorspenningen VC. Det ville ikke være en god idé å mate dette signalet direkte til inngangen til en nedstrøms digital logikkfunksjon, som ikke ville sette pris på å se et signal som svaier i det udefinerte området mellom «god» logikk 0 og logikk 1 verdier. I stedet mates dette signalet til inngangen til en buffer med en Schmitt-utløserinngang. Videre brukes vanligvis en inverterende buffer, for eksempel én kanal av en CD74HC14M96 fra Texas Instruments, fordi inverterende funksjoner bytter raskere enn sine ikke-inverterende motparter.

Fjerning av prelling på en SPDT-bryter med et SR-lås

I tilfelle en SPDT-bryter, er en vanlig løsning med maskinvarefjerning av prellingen å bruke en SR-lås. Helt siden selskaper som IBM brukte denne teknikken for bryterpaneler på sine hoveddatamaskiner på rundt 1960-tallet, har denne tilnærmingen blitt betraktet som crème de la crème av enkle løsinger med maskinvarefjerning av prellingen. En slik lås kan dannes ved hjelp av to tilbake-til-bak NAND-porter med to innganger, for eksempel ved å bruke to kanaler i en SN74HC00DR quad NAND IC med to innganger fra Texas Instruments (figur 4).

Skjema over NAND-basert SR-lås for å fjerne prellingen i en SPDT-bryterFigur 4: Bruk av en NAND-basert SR-lås for å fjerne prellingen i en en SPDT-bryter er en svært effektiv løsning for maskinvarefjerning av prelling. (Bildekilde: Max Maxfield)

Når bryterens NC-terminal er koblet til jord, som vist i den øvre halvdelen av figur 4, tvinger dette utgangen av port g2 til logikk 1. De to logiske 1ene på inngangene til port g1 tvinger i sin tur utgangen til logikk 0. Til sammenligning, når bryterens NO-terminal er koblet til jord, som vist i den øvre halvdelen av figur 4, tvinger dette utgangen av port g1 til logikk 1. De to logiske 1ene på inngangene til port g2 tvinger i sin tur utgangen til logikk 0.

Grunnen til at denne kretsen fungerer så bra er at når begge inngangene er i sin inaktive logikk 1-tilstand, husker SR-låsen sin tidligere verdi. Husk at som illustrert på figur 2, når en SPDT-bryter er slått på, avhengig av hvilken av terminalene som er koblet til jord – i det øyeblikket i tid – preller først. Siden disse prellingene er mellom den opprinnelige verdien (logikk 0) og den nye verdien (logikk 1), har de ingen innvirkning på den nåværende tilstanden til SR-låsen. Først etter at denne terminalen slutter å hoppe, begynner motstykket å hoppe, hvorpå SR-låsen endrer sin tilstand.

Fjerning av prelling på en SPST-bryter med et en dedikeret enhet

Et problem med den forrige løsningen er at mange designere foretrekker å bruke SPST-brytere fordi de vanligvis koster mindre enn SPDT-er. Det finnes en rekke kjente dedikerte SPST-enheter på markedet or å fjerne prellingen, for eksempel MC14490DWG fra ON Semiconductor og MAX6818EAP+T fra Maxim Integrated.

En annen produsent, LogiSwitch, tilbyr en pakke med trekanals, sekskanters og ni-kanals løsninger for å fjerne prellingen i kapslinger for både hullmontering og overflatemontering (surface mount device – SMD). Vurder for eksempel en krets ved hjelp av en LogiSwitch LS18-S-enhet (figur 5).

Skjema over dedikert trekanals LS18-S-brikke for å fjerne prellingen i en SPDT-bryterFigur 5: Bruk av en dedikert trekanals LS18-S-brikke for å fjerne prelling i en SPDT-bryter (seks- og ni kanalers enheter er også tilgjengelige). (Bildekilde: Max Maxfield)

Som alle medlemmer av LogiSwitch-familien støtter LS18-S et driftsspenningsområde på 2,5 til 5,5 volt (verdien av forsyningsspenningen påvirker ikke enhetens responstid). I motsetning til noen av de andre dedikerte IC-løsningene krever heller ikke LogiSwitch prellfri-enheter noen ekstra komponenter som en ekstern klokke, et RC-tidsnettverk eller pull-up-motstander på inngangene eller utgangene.

LS18-S bruker LogiSwitchs proprietære adaptive prellfri-teknologi, som tilbyr et høyt nivå av støyimmunitet. Støypigger med en varighet på mindre enn 20 ms er forbudt å starte eller avslutte en syklus, og utgangene er forsinket i en periode på 20 ms etter at den siste bryteren preller ved både aktivering og frigjøring uavhengig av prell-varigheten.

Konklusjon

Det er mange forskjellige typer brytere, inkludert vippebrytere, vekslebrytere og trykknappbrytere, som alle kan prelle. Hvis den ikke reduseres, kan prelling i bryteren føre til at mikroprosessorer og andre elektroniske kretser ser en aktivering av en enkelt bryter som omfattende flere hendelser.

Det prellende signalet fra en bryter blir ofte gjort prellfritt ved hjelp av programvare som kjører i en mikrokontroller. Selv om dette er en billig løsning, som vist, er det kanskje ikke det beste alternativet i alle tilfeller, inkludert systemer basert på ytelse og minnebegrensede mikrokontroller, programvareutviklere som mangler kompetanse i bryterrelaterte problemer, eller systemer implementert uten en mikrokontroller.

Alternativt kan prellfjerning utføres i maskinvare ved hjelp av en rekke tilnærminger som strekker seg fra resistorkapasitornettverk til SR-låser til dedikerte integrerte kretser.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Om skribenten

Image of Max Maxfield

Clive "Max" Maxfield

Clive «Max» Maxfield fikk sin Bachlorgrad (BSc) i kontrollteknikk i 1980 fra Sheffield Hallam University, England og startet sin karriere som konstruktør for sentrale prosesseringsenheter (CPU-er) for stormaskiner (mainframe computers). Gjennom årene har Max designet alt fra silisiumbrikker til kretskort, samt fra hjernebølgeforsterkere til steampunk Prognostication Engines (ikke spør). Han har også vært i spissen for elektronisk designautomasjon (electronic design automation – EDA) i mer enn 30 år.

Max er forfatter og/eller medforfatter av en rekke bøker, inkludert Designus Maximus Unleashed (forbudt i Alabama), Bebop to the Boolean Boogie (En ukonvensjonell guide til elektronikk), EDA: Where Electronics Begins, FPGA-er (Hvor elektronikk begynner, field programmable gate arrays): Instant Access (Umiddelbar tilgang), og How Computers Do Math (hvordan datamaskiner gjør matematikk). Sjekk ut hans «Max's Cool Beans»-blogg.

Om denne utgiveren

DigiKeys nordamerikanske redaktører