Come implementare l'antirimbalzo hardware per interruttori e relè quando quello software non è appropriato
Contributo di Editori nordamericani di DigiKey
2021-02-09
Nel contesto dell'ingegneria elettrica ed elettronica, un interruttore è un componente che può "aprire" o "chiudere" un circuito elettrico, interrompendo così una corrente elettrica o deviandola da un conduttore a un altro. Come possono testimoniare gli ingegneri, vi sono molti tipi di interruttori tra cui interruttori a levetta, interruttori a bilanciere, interruttori a pulsante, microinterruttori e interruttori di finecorsa, interruttori magnetici e reed e relè. Tutti hanno una cosa in comune: rimbalzano. È così per natura.
Di solito, questo rimbalzo ha un effetto minimo o del tutto assente sul circuito, ma se il circuito digitale è abbastanza veloce da rilevare e rispondere ai rimbalzi multipli, le conseguenze possono essere gravi. Il compito di un ingegnere è quello di evitare o mitigare gli effetti di questo rimbalzo dell'interruttore. Se l'antirimbalzo hardware è comune, più recentemente il settore verte su approcci di antirimbalzo basati sul software. Tuttavia, in alcune situazioni l'antirimbalzo hardware è un'opzione migliore.
Questo articolo spiega il rimbalzo e discute gli approcci software e hardware dell'antirimbalzo. Indica poi i casi in cui l'antirimbalzo hardware è un'opzione migliore prima di mostrare come implementarlo. Vengono presentati dispositivi di commutazione di esempio e componenti di antirimbalzo hardware di NKK Switches, ON Semiconductor, Texas Instruments, Maxim Integrated e LogiSwitch.
Che cos'è il rimbalzo degli interruttori?
Quando un interruttore o un relè viene attivato o commutato, ciò che l'uomo percepisce come una singola risposta istantanea ogni volta che il dispositivo cambia stato può in realtà coinvolgere 100 o più azioni che persistono per diversi millesimi di secondo prima che il contatto si stabilizzi nella posizione finale.
Ad esempio, si consideri un interruttore a levetta unipolare a una via (SPST) normalmente aperto (NA) per il montaggio a pannello come M2011SS1W01 di NKK. Supponiamo che un lato di questo interruttore, che può essere considerato l'ingresso, sia collegato a terra (0 V), mentre l'altro lato, che in questo caso è l'uscita, è collegato a un'alimentazione a 5 V (indicata come +ve) tramite un resistore pull-up (R1) (Figura 1).
Figura 1: Nel caso di un interruttore a levetta SPST-NA, il rimbalzo può avvenire sia quando l'interruttore è attivato che quando è disattivato. (Immagine per gentile concessione di Max Maxfield)
Si noti che il rimbalzo dell'interruttore può avvenire sia quando l'interruttore è attivato (chiuso) che quando è disattivato (aperto). A volte i rimbalzi possono transitare completamente tra i rail di alimentazione, qui considerati stati logici 0 e 1. In questo caso, si tratta di rimbalzi "puliti". In confronto, se il segnale raggiunge solo una tensione intermedia, si parla di rimbalzi "sporchi".
Nel caso di un interruttore a levetta unipolare a due vie (SPDT) come M2012SS1W01-BC di NKK, il rimbalzo può verificarsi su entrambi i terminali normalmente aperti (NA) e normalmente chiusi (NC) (Figura 2). In questo caso, sono stati mostrati per semplicità solo i rimbalzi "puliti".
Figura 2: Nel caso di un interruttore a levetta SPDT, il rimbalzo può verificarsi su entrambi i terminali NA e NC quando l'interruttore viene attivato e disattivato. (Immagine per gentile concessione di Max Maxfield)
In molti casi, la durata di rimbalzo del segnale è tale da non produrre alcun effetto. I problemi sorgono quando un interruttore è collegato a un'attrezzatura elettronica abbastanza veloce da rilevare e rispondere ai rimbalzi multipli. In questo caso è necessario un modo per far rimbalzare il segnale proveniente dall'interruttore prima che intervenga l'apparecchiatura elettronica.
Antirimbalzo software o hardware
Negli anni '60 e '70, l'antirimbalzo degli interruttori è stato implementato utilizzando una varietà di tecniche hardware, dai semplici circuiti di ritardo resistore-condensatore (RC) usati con gli interruttori SPST alle più sofisticate funzioni di latch set/reset (SR).
Più recentemente, e poiché molti sistemi sono dotati di un'unità microprocessore (MPU) o microcontroller (MCU), è diventato comune utilizzare tecniche software per l'antirimbalzo del segnale proveniente da qualsiasi interruttore. Tuttavia, l'antirimbalzo software non è sempre l'approccio migliore. Alcune applicazioni hanno processori piccoli, a basse prestazioni e con limiti di memoria, con spazio di codice limitato e/o pochi cicli di clock disponibili per implementare le routine di antirimbalzo. In questi casi, l'implementazione hardware può essere la soluzione migliore.
Inoltre, molti sviluppatori software non hanno familiarità con le caratteristiche fisiche degli interruttori, come il fatto che oltre a variare da un'attivazione all'altra, il rimbalzo di un interruttore può essere influenzato da condizioni ambientali come la temperatura e l'umidità.
Il problema dell'inesperienza degli sviluppatori software è aggravato dal fatto che la documentazione disponibile sugli effetti di rimbalzo degli interruttori è spesso contraddittoria. Ad esempio, è tipico leggere che un interruttore cesserà di rimbalzare 1 millisecondo dopo la sua attivazione o disattivazione. Tuttavia, il noto esperto di sistemi embedded Jack Ganssle ha eseguito test empirici su una varietà di interruttori, attivandoli 300 volte e registrando la quantità minima e massima di rimbalzo sia per l'apertura che per la chiusura dei contatti. Ha riportato una durata media di rimbalzo di 1,6 ms e una durata massima di rimbalzo di 6,2 ms. Alcune "best practice" industriali e militari raccomandano di aspettare 20 ms dopo l'attivazione iniziale prima di concludere che l'interruttore abbia cessato di rimbalzare; altri raccomandano di aspettare 20 ms dopo l'ultimo rimbalzo rilevato prima di procedere con qualsiasi azione.
Inoltre, esistono anche molti sistemi semplici non basati su processori per i quali è necessario l'antirimbalzo degli interruttori. Alcuni esempi di tali sistemi sono un contatore binario che pilota display a sette segmenti contando gli impulsi da un relè, l'ingresso trigger di un timer 555 monostabile usato come controllo del motore di una porta o di un cancello o una macchina a stati finiti (FSM) basata su registri che impiega ingressi polarizzati. Anche nei potenziometri trimmer elettronici con valori modificati usando gli ingressi dell'interruttore (su, giù, a volte memorizza) il rimbalzo dell'interruttore sarebbe problematico.
Tutti questi esempi dimostrano chiaramente che una certa conoscenza di come eseguire l'antirimbalzo hardware può essere utile per qualsiasi progettista o sviluppatore.
Antirimbalzo hardware di un interruttore SPST con una rete RC
Una delle soluzioni di antirimbalzo più semplici basate su hardware impiega una rete resistore-condensatore (RC) insieme a un interruttore SPST. Esistono molte varianti di un tale circuito. Una delle implementazioni più versatili implica due resistori e un diodo (Figura 3).
Figura 3: Quando si usa una rete RC per l'antirimbalzo di un interruttore SPST (in alto), l'aggiunta del diodo (D1) costringe il condensatore (C1) a caricarsi tramite il resistore R1 e a scaricarsi tramite il resistore R2. (Immagine per gentile concessione di Max Maxfield)
Quando l'interruttore è attivato (chiuso), il condensatore C1 viene scaricato attraverso il resistore R2. Se il diodo D1 fosse stato omesso da questo circuito, quando l'interruttore è stato disattivato (aperto), C1 sarebbe stato caricato attraverso i resistori (R1 + R2). Tuttavia, la presenza di D1 significa che C1 sarà caricato solo attraverso R1.
In alcuni casi, solo l'attivazione dell'interruttore è di interesse (cioè, innesca le azioni), nel qual caso D1 può essere omesso. Tuttavia, se le azioni devono essere attivate quando l'interruttore è sia attivato che disattivato, e se la riduzione al minimo del ritardo è importante, si consiglia l'aggiunta di D1.
Si osservino le curve esponenziali di carica e scarica esibite dalla tensione VC del condensatore. Non sarebbe una buona idea alimentare questo segnale direttamente all'ingresso di una funzione logica digitale a valle, che non apprezzerebbe un segnale che si attarda nella regione indefinita tra i valori "buoni" 0 logico e 1 logico. Invece, questo segnale è alimentato all'ingresso di un buffer con un ingresso a trigger di Schmitt. Inoltre, utilizza solitamente un buffer invertente, come un canale di CD74HC14M96 di Texas Instruments, perché le funzioni invertenti commutano più velocemente delle loro controparti non invertenti.
Antirimbalzo di un interruttore SPDT con un latch SR
Nel caso di un interruttore SPDT, una soluzione di antirimbalzo hardware comune è data dall'uso di un latch SR. Da quando aziende come IBM hanno usato questa tecnica per i pannelli di commutazione dei computer mainframe negli anni '60, questo approccio è considerato la crème de la crème tra le soluzioni di antirimbalzo hardware semplici. Un latch può essere formato usando due porte NAND a due ingressi in opposizione di fase, ad esempio utilizzando due canali di un CI NAND quad a due ingressi SN74HC00DR di Texas Instruments (Figura 4).
Figura 4: L'uso di un latch SR basato su NAND per l'antirimbalzo di un interruttore SPDT è una soluzione di antirimbalzo hardware molto efficace. (Immagine per gentile concessione di Max Maxfield)
Quando il terminale NC dell'interruttore è collegato a terra, come mostrato nella metà superiore della Figura 4, forza l'uscita del gate g2 a 1 logico. A sua volta, i due 1 logici sugli ingressi del gate g1 forzano la sua uscita a 0 logico. Per contro, quando il terminale NA dell'interruttore è collegato a terra, come mostrato nella metà inferiore della Figura 4, forza l'uscita del gate g1 a 1 logico. A sua volta, i due 1 logici sugli ingressi del gate g2 forzano la sua uscita a 0 logico.
Questo circuito funziona così bene perché quando entrambi i suoi ingressi sono negli stati 1 logici inattivi, il latch SR ricorda il suo valore precedente. Si ricordi che, come illustrato nella Figura 2, quando un interruttore SPDT viene azionato, il terminale collegato a terra in quel momento rimbalza per primo. Poiché questi rimbalzi sono tra il suo valore originale (0 logico) e il suo nuovo valore (1 logico), non hanno effetto sullo stato attuale del latch SR. È solo dopo che questo terminale cessa di rimbalzare che la sua controparte inizia a rimbalzare, a quel punto il latch SR cambia stato.
Antirimbalzo di un interruttore SPST con un dispositivo dedicato
Il problema della soluzione precedente è che molti progettisti preferiscono usare interruttori SPST perché generalmente costano meno degli SPDT. Vi sono parecchi dispositivi SPST dedicati all'antirimbalzo ben noti sul mercato, come MC14490DWG di ON Semiconductor e MAX6818EAP+T di Maxim Integrated.
Un altro produttore, LogiSwitch, offre una suite di soluzioni di antirimbalzo a tre canali, sei canali e nove canali in entrambi i contenitori a montaggio superficiale (SMD) e a foro passante. Ad esempio, consideriamo un circuito che utilizza un dispositivo LS18-S di LogiSwitch (Figura 5).
Figura 5: Uso di un chip LS18-S dedicato a tre canali per l'antirimbalzo di un interruttore SPDT (sono disponibili anche dispositivi a sei e nove canali). (Immagine per gentile concessione di Max Maxfield)
Come tutti i membri della famiglia LogiSwitch, LS18-S supporta un intervallo di tensione di funzionamento da 2,5 a 5,5 V (il valore della tensione di alimentazione non influenza il tempo di risposta del dispositivo). Inoltre, a differenza di alcune delle altre soluzioni in CI dedicate, i dispositivi antirimbalzo di LogiSwitch non richiedono componenti aggiuntivi come un clock esterno, una rete di temporizzazione RC o resistori pull-up sugli ingressi o sulle uscite.
LS18-S utilizza la tecnologia adattiva NoBounce di proprietà di LogiSwitch, che offre un alto livello di immunità al rumore. I picchi di rumore di durata inferiore a 20 ms non possono iniziare o terminare un ciclo e le uscite sono ritardate per un periodo di 20 ms dopo il rimbalzo finale dell'interruttore sia all'attivazione che al rilascio, indipendentemente dalla durata del rimbalzo.
Conclusione
Sono molti i tipi diversi di interruttori, tra cui interruttori a levetta, interruttori a bilanciere e interruttori a pulsante, che possono rimbalzare. Se non mitigato, il rimbalzo degli interruttori può far sì che i microprocessori e altri circuiti elettronici vedano l'attivazione di un singolo interruttore come costituito da più eventi.
Il segnale che rimbalza da un interruttore è spesso azzeratotramite una soluzione software su microcontroller. Anche se questa è una soluzione a basso costo, come mostrato, potrebbe non essere l'opzione migliore in tutti i casi, ad esempio per sistemi basati su microcontroller con prestazioni e memoria limitate, se gli sviluppatori software non hanno esperienza con gli interruttori o nei sistemi implementati senza un microcontroller.
In alternativa, l'antirimbalzo può essere eseguito in hardware usando una varietà di approcci che vanno dalle reti di resistore-condensatore a latch SR a circuiti integrati dedicati.
Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.




