HOME

Encoder

incrementale


Introduzione

Salve.

Era da tempo che volevo provare a realizzare un “encoder incrementale” da usare nel mio generatore di segnali, per incrementare o decrementare la frequenza generata. In commercio se ne trovano, anche se con tanta difficoltà ed a prezzi un tantino elevati per un hobbista. Da qui la decisione di tentare di realizzarne uno che svolgesse la funzione richiesta.

Questo tipo di encoder e chiamato anche “encoder relativo” poiché permette di conoscere solo se la rotazione del suo asse, sta avvenendo in senso orario od antiorario e di conseguenza incrementare o decrementare un contatore, un generatore etc.

Per completezza aggiungo soltanto che esiste un dispositivo simile chiamato “encoder assoluto”, il quale come il precedente permette di conoscere il verso di rotazione ed in più anche la posizione angolare assunta dal suo asse in quel preciso istante. Insieme fanno parte della grande famiglia dei trasduttori di posizione.
Per ulteriori approfondimenti in merito, su internet troverete tutto e di più.

 Realizzazione

L’encoder in questione è stato realizzato adoperando quello che un pò tutti abbiamo nei nostri cassetti. Dalle foto che seguono è possibile riconoscere un potenziometro dal cui interno o tolto tutto, lasciando solo l’alberino libero di ruotare su 360°; sono visibili inoltre due finecorsa ottici che ho recuperato da una vecchia stampante ed un  dischetto di plastica dentato che ho ottenuto ritagliando il coperchio di una vaschetta in plastica.

Anche se il funzionamento dell’encoder è in ogni caso assicurato, per la realizzazione del dischetto è richiesta un po’ d’attenzione e di pazienza, poiché dalla precisione con cui lo realizzerete, dipenderà anche la precisione dell’encoder. In questo caso infatti, ci basta solo sapere se la rotazione è oraria od antioraria e non di quanti gradi e stato ruotato l’asse dell’encoder.

Per realizzare il dischetto ho usato un compasso con un’apertura di 25mm circa, col quale ho tracciato la circonferenza che poi ho ritagliato. Sul dischetto così ottenuto ho tracciato un’altra circonferenza con raggio inferiore di circa 10mm della precedente. Per finire con l’aiuto di un goniometro ho diviso in 18 spicchi il disco così ottenuto, ed ho ritagliato dallo stesso le parti dentate. Nelle figure che seguono sono rappresentate le varie fasi del lavoro.

 

 

Le misure che vi ho suggerito sono solo indicative, potrete aumentarle o diminuirle in funzione della vostra abilità manuale. Stesso discorso vale anche per il numero dei denti del disco, da cui dipenderà il numero di incrementi o decrementi per ogni rotazione completa dell’asse, in questo caso come vedremo più avanti 18.

Dovrete adesso, con una piccolissima vite passante per il centro del disco, avvitare (od incollare) il disco al potenziometro e poi saldare il potenziometro alla basetta che dovrà avere la forma visibile in figura.

 

 

Quindi con della colla a caldo o con altri sistemi a vostra scelta, fisserete i due finecorsa sulla basetta, in modo che i denti del disco in fase di rotazione vi passino attraverso, avendo  cura di fissarli ad una distanza angolare, tale che, quando un dente occulta completamente uno dei due finecorsa, l’altro   finecorsa sia parzialmente occultato da un altro dente esattamente a meta.

Anche in questo caso la posizione assunta dai due finecorsa non comprometterà il corretto funzionamento dell’encoder. Essi, possono risultare diametralmente opposti, uno accanto all’altro, a 90° o come volete; purché sia rispettata la condizione descritta prima, come evidenziato nella foto accanto.

 

 

 I due finecorsa da me usati, erano già corredati di resistenze di limitazione, se così non fosse anche nel vostro caso, lo schema da utilizzare è il seguente.

         Funzionamento

Quando alimenterete l’encoder e ruoterete il suo asse, in uscita saranno presenti due segnali ad onda quadra sfasati tra loro di 90° come rappresentato in figura.

Per comprenderne il funzionamento dovremo leggere tali segnali da sinistra verso destra se la rotazione è oraria, da destra verso sinistra se la rotazione è antioraria. Nel primo caso ci ritroveremo i fronti di salita dell’onda a sinistra del segnale “A”, nel secondo caso ce li ritroveremo a destra, cosi come evidenziato dai tratti in rosso.

 

 Per interpretare tali segnali occorre un microcontrollore con due dei suoi pin abilitati come input, uno dei quali programmato per essere sensibile ai fronti di salita dell’onda “A”. Tutte le volte che un fronte di salita si presenterà su tale ingresso, scatterà una routin di interrupt che andrà a leggere lo stato dell’onda “B”  sull’altro ingresso. Se lo stato dell’onda “B” è alto, allora vuol dire che la rotazione in atto è oraria, se invece è basso, allora vuol dire che la rotazione in atto è antioraria, così come si evince anche dai due grafici.

Lo stesso principio di funzionamento fin’ora descritto, è applicabile anche ai fronti di discesa dell’onda “A”, ottenendo per ogni rotazione dell’asse, degli incrementi o decrementi pari al doppio del numero dei denti del disco. Quindi, anche al presentarsi di un fronte di discesa all'ingresso “A”, la stessa routin di prima andrà a leggere lo stato dell’onda “B”  sull’altro ingresso. In questo caso, se lo stato dell’onda “B” è basso, allora vuol dire che la rotazione in atto è oraria, se invece è alto, allora vuol dire che la rotazione in atto è antioraria, così come si evince dai due grafici di prima.
 
A questo punto il software di gestione dell’encoder deciderà se incrementare o decrementare il contatore, il generatore di frequenza o altro. Se a montaggio ultimato, ruotando in senso orario l’asse dell’encoder, il contatore sarà decrementato anziché incrementato, ovviamente dovrete invertire i due fili che veicolano i due segnali “A” e “B”.

Il software che vi propongo è solo dimostrativo e potrete
scaricarlo QUI, se lo desiderate, potrete inserirlo in altri progetti più complessi. Non credo sia necessario descriverne le varie istruzioni, ma se richiesto sarò lieto di potervi dare delle delucidazioni o chiarimenti in merito.

Il microcontrollore usato è un pic 16f84, inserito nello schema elettrico visibile nella figura che segue, lo stesso che ho usato per la realizzazione del metro ad ultrasuoni. Il solo compito che svolge come abbiamo visto, consiste solo nel leggere lo stato dell’onda “B”, quando un fronte di salita o di discesa si presenta sull’onda “A”; oltre naturalmente a pilotare il display lcd.

Con questo credo di aver detto tutto e sperando anche di averlo fatto con sufficiente chiarezza, auguro a tutti, buon lavoro e buon divertimento.

Saluti.
Francesco M.
IT9DPX  #135