Interfaccia per encoder rotativo senza μC

Un encoder rotativo incrementale è un componente elettromeccanico molto interessante, che permette di realizzare molte applicazioni dove sia richiesto un accurato controllo manuale, sia nei circuiti analogici che digitali. Il costo è, in genere, molto basso ed è facilmente reperibile presso la maggior parte dei rivenditori di componenti elettronici. Sfortunatamente, gli impulsi delle uscite non possono essere letti e utilizzati immediatamente, perché essi sono segnali in opposizione di fase che risultano presenti ad ogni passo della rotazione. Il circuito presentato nell'articolo fornisce una semplice soluzione per eliminare il problema.

Introduzione

Solitamente, un microcontrollore con un firmware adatto è utilizzato per interpretare gli impulsi generati da un encoder rotativo e per determinarne il senso di rotazione. Per molte applicazioni, utilizzare un encoder rotativo come potenziometro digitale è, spesso, scomodo. Se si lavora a progetti nei quali occorrono decine di encoder, il problema può diventare serio. Per rendere il tutto più semplice si può realizzare un piccolo circuito economico, non più grande dell'encoder stesso, con uscite a Trigger  di Schmitt separate per la rotazione oraria e antioraria. Inoltre gli impulsi non si accavallano quando l'encoder viene ruotato rapidamente.

Principio di funzionamento

Per soddisfare tali requisiti, è stato progettato il circuito qui descritto, che è adatto per un encoder con interruttore a pulsante incorporato ma va anche bene per uno sprovvisto d'interruttore. Il design è adatto alla maggior parte dei modelli sul mercato. Il circuito, mostrato in figura 1, è costituito da due flip-flop CMOS con fronte positivo con ingressi preimpostati, tramite il 74HC74 e il 74HC14. Tutte le uscite dall'encoder (quindi gli ingressi al circuito, compreso quello dal pulsante) sono collegate tramite due resistori da 10 kΩ in serie alla linea di alimentazione positiva. C1, C2 e C3 provvedono al disaccoppiamento. Il circuito garantisce un impulso anti rimbalzo, con un tempo di discesa di 7 ms e un tempo di salita di 14 ms. Gli inverter trigger  di Schmitt convertono gli impulsi dall'encoder in segnali attivi con fronti ripidi, per attivare il D-flip-flop con un fronte di salita. Il tempo tra gli impulsi successivi è limitato a un minimo di 10.5 ms per impedire la sovrapposizione degli impulsi. L'uscita dell'inverter IC1.A è collegata all'ingresso D e all'ingresso di reset del primo flip-flop (IC2.A). L'ingresso preimpostato non viene utilizzato ed è collegato a VCC. Anche l'uscita del primo inverter è collegata all'ingresso del secondo flip-flop. L'uscita del secondo inverter (IC1.F) è collegata come la prima, con la differenza che IC2.A e IC2.B sono invertiti. Nello stato di riposo le uscite sono basse. Tuttavia, quando l'encoder ruota di un passo, vengono generati due impulsi sfasati, che dipendono dalla direzione di rotazione.

Figura 1: il circuito per decodificare l'uscita di un encoder rotativo è realizzato attorno a due circuiti integrati della famiglia 74HC

Figura 1: il circuito per decodificare l'uscita di un encoder rotativo è realizzato attorno a due circuiti integrati della famiglia 74HC

La rotazione dell'encoder

Quando l'encoder viene ruotato in senso antiorario, il circuito vede il primo impulso ("FFA") presente sul pin 1 di K1 ("FFA" in figura 2), dopo un quarto di tempo questo è seguito da un impulso sul pin 3 (" FFB"). Tale primo impulso (attivo-basso) (FFA) viene invertito da IC1.A e quindi attiva IC2.A. Poiché non c'è alcun segnale di clock (nessun impulso ancora sul pin 3 di K1), l'uscita di IC2.A non è a livello logico alto e l'uscita corrispondente (pin 2 di K2) rimane alta. Tuttavia, IC2.B riceve un impulso di clock. Quando, successivamente, si presenta un impulso sul pin 3 di K1 (attivo-basso), l'uscita di IC1.F commuta a livello alto e IC2.A scandisceil segnale sull'ingresso D. Il pin 2 di K2 diventa basso per indicare che l'encoder è ruotato in senso antiorario. Sebbene l'ingresso D di IC2.B sia ora alto, questo segnale non è "sincronizzato" all'uscita perché il segnale sull'ingresso di IC2.B era alto, quindi pin 4 di K2 rimane alto. Una volta che l'impulso sul pin 1 non è più presente, IC2.A viene resettato e il pin 2 di K2 torna alto. Nulla cambia all'uscita di IC2.B, poiché l'ingresso del clock reagisce solo a un fronte di salita. L'ingresso di clock di IC2.A ritornerà basso e non produce alcuna modifica alla sua uscita. Quando si gira l'encoder in senso orario si verifica una sequenza di eventi quasi identica, con la sola differenza che l'uscita di IC2.B cambia e l'uscita di IC2.A rimane bassa.

Figura 2: il diagramma temporale mostra come il circuito converte i due impulsi sfasati in due segnali a impulsi discreti

Figura 2: il diagramma temporale mostra come il circuito converte i due impulsi sfasati in due segnali a impulsi discreti

Conclusioni

Notiamo che la durata degli impulsi all'uscita corrispondono alla metà rispetto a quelle dell'encoder all'ingresso. L'uscita rimane bassa finché non si rilascia il pulsante. Viene anche bufferizzata utilizzando due inverter Schmitt-Trigger. Il tutto è molto semplice e intuitivo.

 

Elektor Post

3 Commenti

  1. Giordana Francesca Brescia Giordana Francesca Brescia 20 giugno 2019
  2. Alessandro Alessandro 21 giugno 2019
    • Alessandro Alessandro 21 giugno 2019

Scrivi un commento