Cum se implementează debouncing hardware pentru întrerupătoare și relee atunci când debouncing-ul software nu este adecvat
Contributed By DigiKey's North American Editors
2021-02-09
În contextul ingineriei electrice și electronice, un întrerupător este o componentă care poate „activa” sau „dezactiva” un circuit electric, întrerupând astfel un curent electric sau deviindu-l de la un conductor la altul. După cum pot confirma inginerii, există multe tipuri diferite de întrerupătoare, inclusiv întrerupătoare cu pârghie, întrerupătoare basculante, întrerupătoare cu buton, micro-întrerupătoare și întrerupătoare cu limită de cursă, întrerupătoare magnetice și întrerupătoare ermetice cu gaz inert și relee. Toate acestea au un lucru în comun: basculează. Pur și simplu așa funcționează ele.
În mod normal, această basculare are un efect redus sau chiar nu are niciun efect asupra circuitului, dar dacă circuitul digital este suficient de rapid încât să detecteze și să răspundă la basculări multiple, pot apărea consecințe grave. Sarcina unui inginer este să evite sau să atenueze efectele acestei basculări, sau să „curețe” întrerupătorul. În timp ce industria a practicat de mult timp debouncing-ul hardware, mai recent a trecut la abordări de debouncing bazat pe software. Cu toate acestea, există situații în care debouncing-ul hardware este o opțiune mai bună.
Acest articol explică ce înseamnă bascularea și discută despre abordările software și hardware pentru debounce. Apoi prezintă cazurile în care debouncing-ul hardware este o opțiune mai bună, înainte de a arăta cum poate fi implementat. Sunt prezentate exemple de dispozitive de comutare și componente pentru debounce hardware prin intermediul unor exemple de la NKK Switches, ON Semiconductor, Texas Instruments, Maxim Integrated și LogiSwitch.
Ce este bascularea întrerupătorului?
Atunci când un întrerupător sau un releu este acționat sau comutat, evenimentul perceput de oameni ca fiind un singur răspuns instantaneu de fiecare dată când dispozitivul își schimbă starea, poate implica, de fapt, 100 sau mai multe acțiuni de activare sau dezactivare care persistă timp de câteva miimi de secundă înainte de fixarea în poziție a contactului.
De exemplu, luați în considerare un întrerupător cu pârghie monopolar pentru un singur circuit (SPST) normal deschis (NO) montat pe panou, cum ar fi M2011SS1W01 de la NKK. Să presupunem că o parte a acestui întrerupător, care poate fi considerată intrarea, este conectată la masă (0 volți), în timp ce cealaltă parte, în acest caz ieșirea, este conectată la o sursă de alimentare de 5 volți (indicată ca +ve) prin intermediul unei rezistențe de ridicare (R1) (Figura 1).
Figura 1: în cazul unui întrerupător cu pârghie SPST-NO, bascularea poate apărea atât la activarea, cât și la dezactivarea întrerupătorului. (Sursă imagine: Max Maxfield)
Rețineți că bascularea întrerupătorului poate apărea atât atunci când acesta este activat (închis), cât și când este dezactivat (deschis). Uneori, basculările pot face complet tranziția între șinele de alimentare, considerate aici stări logice 0 și 1. În acest caz, acestea sunt basculări „curate”. Prin comparație, atunci când semnalul atinge doar o tensiune intermediară, acestea sunt denumite basculări „murdare”.
În cazul unui întrerupător cu pârghie monopolar pentru două circuite (SPDT) montat pe panou, cum ar fi M2012SS1W01-BC de la NKK, bascularea se poate produce atât pe terminalele normal deschise (NO), cât și pe cele normal închise (NC) (Figura 2). În acest caz, pentru simplificare, au fost afișate doar rezultatele „curate”.
Figura 2: în cazul unui întrerupător cu pârghie SPDT, bascularea poate să apară pe ambele terminale NO și NC atunci când întrerupătorul este activat și dezactivat. (Sursă imagine: Max Maxfield)
În multe cazuri, durata acestui semnal de basculare nu are niciun efect. Problemele apar atunci când un întrerupător este conectat la un echipament electronic suficient de rapid să detecteze și să răspundă la basculări multiple. Aici intervine nevoia de a găsi o modalitate de a anula basculările semnalului care vine de la întrerupător înainte ca echipamentul electronic să fie afectat de acestea.
Debouncing software comparativ cu debouncing hardware
În anii 1960 și 1970, debouncing-ul întrerupătoarelor a fost implementat folosind o varietate de tehnici hardware, de la circuite de întârziere simple cu rezistență și condensator (RC) utilizate cu întrerupătoare SPST, la funcții de blocare mai sofisticate de setare/resetare (SR).
Mai recent, și deoarece multe sisteme dispun de o unitate cu microprocesor (MPU) sau de o unitate cu microcontroler (MCU), utilizarea tehnicilor software pentru debouncing-ul semnalului provenit de la orice întrerupător a devenit un lucru obișnuit. Cu toate acestea, debouncing-ul software nu este întotdeauna cea mai bună abordare. Există unele aplicații care implică procesoare mici, de performanță redusă, cu memorie limitată, cu spațiu de cod și/sau cicluri de tact limitate disponibile pentru implementarea rutinelor de debouncing. În aceste cazuri, o implementare hardware poate fi o soluție mai bună.
De asemenea, mulți dezvoltatori de software nu sunt familiarizați cu caracteristicile fizice ale întrerupătoarelor, cum ar fi faptul că, pe lângă că variază de la o activare la alta, caracteristicile de basculare ale unui întrerupător pot fi afectate de condițiile de mediu, precum temperatura și umiditatea.
Problema lipsei de expertiză a dezvoltatorilor de software în materie de întrerupătoare este exacerbată de faptul că literatura de specialitate disponibilă privind bascularea întrerupătoarelor este adesea confuză și contradictorie. De exemplu, este ceva obișnuit să citim că un întrerupător va înceta să mai basculeze la 1 milisecundă (ms) după activare sau dezactivare. Cu toate acestea, cunoscutul expert în sisteme integrate, Jack Ganssle, a efectuat teste empirice pe numeroase tipuri de întrerupătoare, activând fiecare întrerupător de 300 de ori și înregistrând valoarea minimă și maximă a basculării, atât pentru deschiderea, cât și pentru închiderea contactelor. El a raportat o durată medie a basculării de 1,6 ms și o durată maximă de 6,2 ms. Unele „bune practici” industriale și militare recomandă să se aștepte 20 ms după activarea inițială înainte de a presupune că întrerupătorul a încetat să mai basculeze; altele recomandă să se aștepte 20 ms după ultima basculare detectată înainte de a declanșa orice acțiune.
În plus, există multe sisteme simple care nu se bazează pe procesor și care, de asemenea, necesită întrerupătoare care necesită debouncing. Câteva exemple de astfel de sisteme sunt: un contor binar care comandă afișaje cu șapte segmente, care numără impulsurile de la un releu; intrarea de declanșare a unui temporizator 555 cu un singur impuls care este utilizat ca o comandă de motor pentru o ușă sau o poartă; și un automat finit (FSM) bazat pe registre care utilizează intrări cu chei. De asemenea, există potențiometre electronice de reglare cu valori modificate cu ajutorul intrărilor întrerupătorului (sus, jos și, uneori, stocare), caz în care bascularea întrerupătorului ar fi problematică.
Toate aceste exemple arată în mod clar că anumite cunoștințe despre cum se poate realiza un debouncing hardware pot fi utile pentru orice proiectant sau dezvoltator.
Debouncing hardware pentru un întrerupător SPST cu o rețea RC
Una dintre cele mai simple soluții de debouncing pentru întrerupătorul pe bază de hardware utilizează o rețea de rezistență-condensator (RC) împreună cu un întrerupător SPST. Există multe variante ale unui astfel de circuit. Una dintre cele mai versatile implementări implică două rezistențe și o diodă (Figura 3).
Figura 3: atunci când se utilizează o rețea RC pentru debouncing-ul unui întrerupător SPST (sus), adăugarea diodei (D1) forțează condensatorul (C1) să se încarce prin intermediul rezistenței R1 și să se descarce prin intermediul rezistenței R2. (Sursă imagine: Max Maxfield)
Atunci când întrerupătorul este activat (închis), condensatorul C1 este descărcat prin intermediul rezistenței R2. Dacă dioda D1 ar fi fost omisă din acest circuit, atunci când întrerupătorul ar fi fost dezactivat (deschis), C1 ar fi fost încărcat prin intermediul rezistențelor (R1 + R2). Cu toate acestea, prezența diodei D1 înseamnă că C1 va fi încărcat numai prin R1.
În unele cazuri, numai activarea întrerupătorului prezintă interes (adică declanșează acțiuni), caz în care D1 poate fi omisă. Cu toate acestea, în cazul în care acțiunile vor fi declanșate atât la activarea, cât și la dezactivarea întrerupătorului, și dacă se dorește minimizarea întârzierii, se recomandă adăugarea diodei D1.
Observați curbele exponențiale de încărcare și descărcare descrise de tensiunea condensatorului VC. Nu ar fi o idee bună să alimentați acest semnal direct la intrarea unei funcții logice digitale din aval, pentru care nu ar fi benefică prezența îndelungată a unui semnal în regiunea nedefinită dintre valorile „bune” pentru logica 0 și logica 1. În schimb, acest semnal este alimentat la intrarea unui circuit tampon cu o intrare a unui declanșator Schmitt. În plus, de obicei se utilizează un circuit tampon inversor, cum ar fi un canal al unui dispozitiv CD74HC14M96 de la Texas Instruments, deoarece funcțiile de inversare comută mai repede decât cele fără inversare.
Debouncing pentru un întrerupător SPDT cu un circuit de tip latch SR
În cazul unui întrerupător SPDT, o soluție hardware comună pentru debounce este utilizarea unui latch SR. Încă din momentul în care companii precum IBM au folosit această tehnică pentru panourile de comutare de pe computerele lor mainframe, în jurul anilor 1960, această abordare a fost privită ca fiind elita soluțiilor simple de debouncing hardware. Un astfel de latch poate fi format folosind două porți NAND cu două intrări aflate în contact; de exemplu, prin utilizarea a două canale ale unui circuit integrat SN74HC00DR NAND cu patru intrări duble de la Texas Instruments (Figura 4).
Figura 4: utilizarea unui latch SR bazat pe NAND pentru debouncing-ul unui întrerupător SPDT este o soluție de debouncing hardware foarte eficientă. (Sursă imagine: Max Maxfield)
Atunci când terminalul NC al întrerupătorului este conectat la masă, după cum se arată în jumătatea de sus din Figura 4, acest lucru forțează ieșirea porții g2 la logica 1. La rândul lor, cele două logici 1 de la intrările porții g1 forțează ieșirea acesteia la logica 0. Prin comparație, atunci când terminalul NO al întrerupătorului este conectat la masă, după cum se arată în jumătatea de jos din Figura 4, aceasta forțează ieșirea porții g1 la logica 1. La rândul lor, cele două logici 1 de la intrările porții g2 forțează ieșirea acesteia la logica 0.
Motivul pentru care acest circuit funcționează atât de bine este faptul că, atunci când ambele intrări sunt în starea inactivă a logicii 1, latch-ul SR își amintește valoarea anterioară. Nu uitați că, după cum este ilustrat în Figura 2, atunci când un întrerupător SPDT este comutat, primul care va bascula va fi oricare dintre terminalele sale conectate la masă – în acel moment în timp. Deoarece aceste basculări se află între valoarea inițială (logica 0) și noua valoare (logica 1), ele nu au niciun efect asupra stării curente a latch-ului SR. Abia după ce acest terminal încetează să mai basculeze, piesa-pereche a acestuia începe să basculeze, moment în care latch-ul SR își schimbă starea.
Debouncing pentru un întrerupător SPST cu un dispozitiv dedicat
O problemă cu soluția anterioară este că mulți proiectanți preferă să folosească întrerupătoare SPST deoarece, în general, acestea costă mai puțin decât SPDT-urile. Pe piață există o serie de dispozitive de debouncing SPST dedicate bine cunoscute, cum ar fi MC14490DWG de la ON Semiconductor și MAX6818EAP+T de la Maxim Integrated.
Un alt producător, LogiSwitch, oferă o suită de soluții de debouncing cu trei, șase și nouă canale, atât în pachete cu orificii străpunse, cât și cu dispozitive de montare pe suprafață (SMD). De exemplu, luați în considerare un circuit care utilizează un dispozitiv LogiSwitch LS18-S (Figura 5).
Figura 5: utilizarea unui cip LS18-S cu trei canale dedicate pentru debouncing-ul unui întrerupător SPDT (sunt disponibile și dispozitive cu șase și nouă canale). (Sursă imagine: Max Maxfield)
La fel ca toți membrii familiei LogiSwitch, LS18-S acceptă o gamă de tensiuni de operare de la 2,5 la 5,5 volți (valoarea tensiunii de alimentare nu afectează timpul de răspuns al dispozitivului). De asemenea, spre deosebire de alte soluții CI dedicate, dispozitivele de debouncing LogiSwitch nu necesită componente suplimentare, precum un ceas extern, o rețea de temporizare RC sau rezistențe de ridicare la intrări sau ieșiri.
LS18-S utilizează tehnologia adaptivă NoBounce, brevetată de LogiSwitch, care oferă un nivel ridicat de imunitate la zgomot. Pornirea sau oprirea unui ciclu cauzată de vârfurile de zgomot cu o durată mai mică de 20 ms este prevenită, iar ieșirile sunt întârziate pentru o perioadă de 20 ms după ultima basculare a întrerupătorului, atât la activare, cât și la eliberare, indiferent de durata basculării.
Concluzie
Există multe tipuri diferite de întrerupătoare, inclusiv întrerupătoare cu pârghie, întrerupătoare basculante și întrerupătoare cu buton, toate acestea având capacitatea de a bascula. În cazul în care nu este atenuată, bascularea întrerupătorului poate cauza microprocesoarele și alte circuite electronice să considere că o singură activare a întrerupătorului cuprinde mai multe evenimente.
Semnalul de basculare de la un întrerupător este deseori atenuat cu ajutorul unui software care rulează într-un microcontroler. Deși aceasta este o soluție cu costuri reduse, după cum s-a arătat, s-ar putea să nu fie cea mai bună opțiune în toate cazurile, inclusiv în cazul sistemelor bazate pe microcontrolere cu performanțe și memorie limitate, al dezvoltatorilor de software care nu au experiență în probleme legate de întrerupătoare sau al sistemelor implementate fără microcontroler.
Ca o alternativă, debouncing-ul poate fi efectuat în hardware, utilizând o varietate de abordări, de la rețele cu rezistență-condensator, la latch-uri SR și circuite integrate dedicate.
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.




