Encoder rotativo incrementale

Nelle applicazioni industriali, a volte può essere necessario misurare la posizione o la velocità di un oggetto rotante come una ruota o un albero/asse. L'encoder rotativo è un dispositivo elettromeccanico che può essere utilizzato per ottenere queste misurazioni.

Esistono due tipi di encoder rotativi: encoder rotativi incrementali ed encoder rotativi assoluti. In questo articolo, vedremo encoder rotativi incrementali, il loro principio di funzionamento e le loro applicazioni.

Che cos'è un encoder rotativo incrementale?

Gli encoder incrementali appartengono alla famiglia dei encoder rotativi. Sono utilizzati per ottenere informazioni quali:

  • Posizione
  • Angolo
  • Velocità di rotazione

Gli encoder rotativi incrementali si trovano principalmente in applicazioni dove è richiesta la misura della velocità/velocità angolare. Questo viene fatto contando il numero di impulsi per unità di tempo generati dall'encoder.

A differenza del fratello, l'encoder rotativo assoluto, gli encoder incrementali non possono fornire informazioni quando l'albero non ruota. Possono solo fornire informazioni sul movimento dell'albero.

Gli impulsi generati dall'encoder rotativo incrementale devono essere calcolati ed elaborati altrove. Questo può essere un microcontrollore o un PLC (Programmable Logic Controller). Utilizzando il conteggio degli impulsi, il controller può quindi convertire le informazioni in informazioni come posizione, velocità e distanza.

Come funziona un encoder rotativo incrementale?

Gli encoder rotativi incrementali sono disponibili in due configurazioni:

  1. Encoder incrementali a canale singolo
  2. Encoder a doppio canale (quadratura)

Le loro funzionalità sono quasi simili tra loro. Tuttavia, gli encoder a doppio canale ci consentono di rilevare la direzione di rotazione che un encoder a canale singolo non è in grado di rilevare.

Il principio di funzionamento di un encoder rotativo incrementale è abbastanza semplice. Il sensore è costituito da un disco rotante scanalato attaccato all'albero di esso.

Quando l'albero è in rotazione, ruota anche il disco come mostrato nella figura sottostante. Questo è anche noto come "codice ruota".

Le fessure nella ruota vengono utilizzate per generare 'impulsi' ogni volta che una fessura si allinea con il sensore. Gli encoder rotativi incrementali utilizzano tecnologie come magnetico, ottico, induttivo, capacitivo e laser per generare questo treno di impulsi.

Il diagramma sopra illustra il funzionamento di un encoder rotativo incrementale ottico. Una sorgente luminosa (LED) è posizionata attraverso il disco e il dispositivo ricevente (un fotodiodo/fototransistor) è posizionato nella linea di vista.

Quando il disco ruota, gli slot lasciano passare momentaneamente la luce. In questo momento, il raggio di luce raggiunge il ricevitore ed emette un segnale logico ALTO.

Quando il disco ruota ulteriormente, il raggio di luce è ostruito e il ricevitore non riceve il raggio. Ciò fa sì che l'uscita di quel canale corrispondente diventi logica LOW.

Gli encoder rotativi incrementali a doppio canale hanno due di questi canali denominati canale A e B. La posizione degli slot per il canale B è leggermente sfalsata rispetto agli slot per il canale A.

A volte, il sensore utilizza un singolo set di slot e i ricevitori sono posizionati in un offset.

Questa disposizione speciale consente alle uscite A e B di essere 'sfasate'.

Il microcontrollore o il PLC possono monitorare entrambi i canali per rilevare il senso di rotazione.

A seconda di quale canale (A o B) indica per primo un fronte di salita, è possibile rilevare anche la direzione. Gli encoder a canale singolo hanno solo l'uscita del canale A e possono emettere solo un singolo treno di impulsi.

Ad esempio, nel diagramma sopra, un fronte di salita su A dopo un fronte di salita su B indica che la ruota sta girando in senso antiorario. Allo stesso modo, un fronte di salita su B dopo un fronte di salita su A indica che la ruota/albero sta ruotando in senso orario.

Su alcuni sensori, c'è un terzo canale chiamato 'Z'. A differenza degli altri due canali, di solito c'è solo uno slot per questo canale. Questo è usato per generare un impulso per giro per compiti come homing ed verifica del conteggio degli impulsi.

Encoder incrementale vs. assoluto

Gli encoder incrementali possono funzionare solo quando l'albero è in rotazione.

I sistemi che utilizzano encoder rotativi incrementali devono disporre di un sofisticato programma in esecuzione per contare gli impulsi che il sensore sta producendo per determinare la posizione dell'albero. Hanno un disco scanalato equidistante che funge da ruota del codice.

Gli encoder assoluti hanno un codewheel specializzato. Questo contiene uno schema di scanalatura non uniforme, un codice univoco per ogni posizione dell'albero.

Per qualsiasi posizione dell'albero, un encoder rotativo assoluto emette un codice binario univoco che descrive accuratamente la posizione. Mantiene anche l'output anche quando è spento poiché il codewheel stesso contiene il pattern.

Gli encoder incrementali devono essere sempre accesi per generare costantemente il treno di impulsi per i calcoli di velocità e distanza. Tuttavia, gli encoder assoluti possono essere accesi quando necessario per ottenere una lettura.

Dal punto di vista della complessità, gli encoder incrementali sono più semplici delle loro controparti assolute. Pertanto, gli encoder incrementali sono meno costosi degli encoder rotativi assoluti.

A cosa servono gli encoder incrementali?

Gli encoder rotativi incrementali trovano le loro applicazioni dagli elettrodomestici alle automobili fino alle applicazioni di automazione industriale.

Una delle applicazioni più popolari per il rilevamento della posizione sono le manopole di controllo su apparecchiature elettroniche come le configurazioni delle autoradio. Le manopole rotanti sono regolabili all'infinito e funzionano solo quando il dispositivo è acceso.

Nei giorni precedenti, i mouse per computer elettromeccanici utilizzavano anche questi sensori per tracciare la posizione lungo i due assi.

Nelle applicazioni industriali, gli encoder incrementali vengono utilizzati per misurare la velocità dei sistemi meccanici. Ciò è particolarmente utile nei sistemi di controllo del movimento come i trasportatori di materiale, i bracci robotici e le macchine CNC.

Specifiche dell'encoder incrementale

Quando si sceglie un encoder per una particolare applicazione, sono molteplici i fattori da considerare.

  • diametro esterno
    • Il diametro esterno dell'alloggiamento del sensore (utile durante il montaggio)
  • Tipo e diametro dell'albero
    • Ci sono scelte per il tipo di albero come albero cavo, albero semi-cavo, albero cavo cieco e foro passante.
    • Il diametro deve rientrare nelle tolleranze per essere correttamente accoppiato con l'oggetto. Sono disponibili alberi da 20 mm, 25 mm e 30 mm.
  • Modo di uscita e lunghezza del cavo
    • La posizione della connessione del cavo di uscita. Ci sono due configurazioni: lato e fuori.La configurazione laterale consente il collegamento di un cavo staccabile sul lato. Il tipo con uscita cavo ha un cavo fisso che esce dal retro dell'alloggiamento del sensore.
    • Per i cavi fissi, i sensori sono solitamente dotati di un cavo di colore nero 2M.
  • Tensione di alimentazione
    • Indica la tensione massima di esercizio del sensore. Sono disponibili opzioni per alimentatori CC %v (fissi), 5-12V, 12-24V e 24V (fissi).
  • Tipo di segnale di uscita
    • A per gli encoder a canale singolo, A e B per gli encoder a doppio canale (quadratura) e una Z opzionale per l'uscita dell'impulso indice
  • Conteggio degli impulsi
    • Questo parametro descrive i valori di impulsi per giro (PPR) e contatore per giro (CPR) supportati dal sensore.
  • Metodo di uscita del segnale
    • Il tipo di segnale di uscita: uscita tensione (V)/corrente (C), uscita complementare (F) o uscita line drive (L, T)

Caratteristiche elettriche dell'encoder incrementale

  • Tensione di alimentazione
    • Può variare da 5V a 24V
  • Consumo attuale
    • Per i tipi di uscita in tensione e corrente, il consumo di corrente tipico è inferiore a 60 mA. I tipi di driver possono consumare fino a 100 mA.
  • Tensione di uscita (per il tipo di uscita di tensione)
    • Tensione di livello ALTO: >= 3.5V
    • Tensione di livello BASSO: <=0.5 V
  • Tempi di ascesa e autunno
    • Descrive il tempo impiegato dal sensore per modificare l'uscita da alta a bassa (caduta) o da bassa a alta (aumento)
    • Tempo di salita tipico per il tipo di uscita in tensione: <= 500 ns
    • Tempo di caduta tipico per il tipo di uscita in tensione: <= 100 ns
  • Risposta di frequenza
    • Frequenza massima il sensore può commutare le sue uscite
    • Tipicamente scende sotto i 300kHz

Circuito encoder rotativo incrementale

Come accennato in precedenza, gli encoder rotativi possono essere collegati sia a PLC che a microcontrollori per misurare velocità, posizione, distanza e direzione di rotazione di un albero. Questi dispositivi devono essere appositamente programmati per calcolare questi valori e prendere decisioni.

Esistono anche dispositivi specializzati come contatori e tachimetri che possono eseguire questi calcoli immediatamente e indicare direttamente i valori. Diamo un'occhiata ad alcuni dei circuiti che possiamo costruire utilizzando encoder rotativi incrementali:

Contagiri autoalimentato

Usando il H7ER contagiri autoalimentato della serie Omron, un encoder incrementale a canale singolo può essere utilizzato per configurare un tachimetro in grado di visualizzare i giri al minuto di un albero.

I E6A2 è un encoder incrementale in quadratura di tipo AB con uscite NPN a collettore aperto. Collegandolo all'H7ER, il sistema funge da tachimetro che conta la frequenza degli impulsi per determinare i giri dell'albero collegato.

Contatore avanti/indietro ad alta velocità

I K3NC è un contatore avanti/indietro ad alta velocità con una varietà di modalità di uscita. Questo dispositivo può essere collegato ad un encoder rotativo di tipo AB per formare un contatore avanti/indietro secondo il senso di rotazione.

Con questa configurazione, il contatore di conteggio può essere configurato per emettere un segnale per accendere/spegnere una macchina confrontando il conteggio degli impulsi. Supporta inoltre la comunicazione con un PLC per applicazioni di controllo di processo.

L'utilizzo di questi componenti standard può eliminare la necessità di un dispositivo complesso come un PLC dove non è assolutamente necessario. Ciò è particolarmente utile per i sistemi su piccola scala.

Per l'utilizzo in un sistema basato su PLC, si consiglia una scheda HSC (High Speed ​​Counter) per applicazioni ad alta velocità. La figura seguente mostra il collegamento di un encoder rotativo incrementale di tipo open collector PNP a una scheda di ingresso HSC accoppiata a un PLC.

Il sensore ha le uscite A, B e Z e sono collegate alla scheda HSC come mostrato sopra. La scheda contatore può essere configurata per inviare al PLC il contatore che legge la velocità dell'albero dell'encoder. Questa configurazione riduce l'overhead di elaborazione nel programma PLC.

Encoder rotativo incrementale Arduino

Nei circuiti basati su Arduino, gli encoder rotativi vengono utilizzati come input per i nostri programmi.

Possiamo usarli per aumentare/diminuire il valore di una variabile per compiti come controllare la velocità di un motore o la luminosità di un LED. Nelle applicazioni più avanzate, gli encoder rotativi vengono utilizzati anche per navigare nei menu.

Il KY-040 è un modulo encoder rotativo standard disponibile per Arduino. Ha il seguente pinout:

  • GND – Collegamento a terra
  • VCC – Alimentazione 5V o 3.3V
  • SW – uscita interruttore a pulsante (0V quando premuto, 5V quando è a riposo)
  • DT – Uscita dati
  • CLK – Uscita orologio

Come circuito di esempio, diamo un'occhiata a un circuito di prova in cui l'encoder è collegato a un Arduino UNO. Il pin SW del sensore è collegato al pin 4, CLK al pin 2 e DT è collegato al pin 3 di Arduino.

VCC è collegato a +5V e GND è collegato al pin GND della scheda di sviluppo Arduino come mostrato di seguito.

Codice Arduino per encoder rotativo

Questo codice di esempio è stato adattato da lastminuteengineers.com. Svolge due funzioni principali:

  1. Attendere che il segnale CLK (pin 2) cambi
  2. Osservare se il pulsante viene premuto (pin 4 è LOW)

Quando si ruota la manopola dell'encoder, il programma rileva la variazione della linea CLK. Quindi controlla lo stato del pin DT.

Se entrambi sono uguali, l'encoder viene ruotato in senso orario e in senso antiorario in caso contrario. Nel frattempo, per ogni rilevazione, la variabile contrastareanche il valore di 's viene aumentato/diminuito a seconda della direzione.

Il programma controlla anche lo stato del pulsante dell'encoder. Se viene premuto, il programma stampa 'pulsante premuto' sul monitor seriale. Stampa anche il valore attuale del numero di impulsi contati.

// Ingressi encoder rotativo
#definire CLK 2
#definire DT 3
#definire SW 4int contatore = 0;
int stato attualeCLK;
int ultimoStatoCLK;
String currentDir ="";
unsigned lungo lastButtonPress = 0;nulla flessibile.() {

// Imposta i pin dell'encoder come input
Modalità pin(CLK, INGRESSO);
pinMode(DT,INGRESSO);
modalità pin(SW, INPUT_PULLUP);

// Imposta monitor seriale
Serial.begin (9600);

// Legge lo stato iniziale di CLK
lastStateCLK = digitalRead(CLK);
}

nulla loop() {

// Legge lo stato attuale di CLK
statocorrenteCLK = digitalRead(CLK);

// Se l'ultimo e l'attuale stato di CLK sono diversi, allora si è verificato un impulso
// Reagisce a un solo cambio di stato per evitare il doppio conteggio
if (currentStateCLK != lastStateCLK && currentStateCLK == 1){

// Se lo stato DT è diverso dallo stato CLK allora
// l'encoder sta ruotando in senso antiorario quindi diminuisci
if (lettura digitale(DT) != StatoCLK) {
contatore -;
currentDir ="CCW";
} altro {
// L'encoder sta ruotando in senso orario quindi incrementa
contatore ++;
currentDir ="CW";
}

Serial.print(“Direzione: “);
Serial.print(dir.corrente);
Serial.print(” | Contatore: “);
Serial.println(contatore);
}

// Ricorda l'ultimo stato CLK
lastStateCLK = currentStateCLK;

// Leggi lo stato del pulsante
int btnStato = digitalRead(SW);

//Se rileviamo un segnale BASSO, il pulsante viene premuto
if (btnState == BASSO) {
//se sono trascorsi 50ms dall'ultimo impulso LOW, significa che il
//il pulsante è stato premuto, rilasciato e premuto di nuovo
if (millis() – lastButtonPress > 50) {
Serial.println("Pulsante premuto!");
}

// Ricorda l'ultimo evento di pressione del pulsante
lastButtonPress = millis();
}

// Inserisci un leggero ritardo per aiutare a eliminare il rimbalzo della lettura
ritardo (1);
}

Come controllare l'encoder incrementale con il multimetro

Per risolvere i problemi di un encoder con un multimetro, è necessario che sia acceso. Dopo l'accensione, impostare il multimetro sulla modalità di misurazione volt CC e collegare la sonda nera con il filo GND del sensore.

Ruotare lentamente l'asta del sensore mentre si sondano le uscite A o B del sensore.

La misurazione della tensione dovrebbe oscillare tra quasi 0V e VCC del sensore. Notare che l'albero deve ruotare molto lentamente per consentire al multimetro di stabilizzare la sua lettura.

Se la misurazione della tensione non cambia, metti il ​​multimetro in modalità AC e ripeti le stesse misurazioni. Questa volta, gira l'albero più velocemente. Se la lettura del multimetro indica una tensione diversa da zero, si può concludere che l'encoder è funzionante.

Tuttavia, questo non è un metodo di risoluzione dei problemi accurato al 100%. Anche se il multimetro visualizza una lettura di tensione, il sensore potrebbe ancora non funzionare correttamente. In questo caso, è necessario analizzare i tempi del sensore. Per tali compiti, è necessario un oscilloscopio.

Conclusione

In questo articolo abbiamo discusso il funzionamento, il principio di funzionamento e le applicazioni degli encoder rotativi incrementali.

Mentre gli encoder incrementali sono i più diffusi, gli encoder rotativi assoluti possono essere vantaggiosi in alcuni casi. Seleziona il sensore più adatto alla tua applicazione considerando le caratteristiche di cui abbiamo discusso in questo articolo.

Non solo migliorerà le prestazioni e l'affidabilità del sistema, ma ridurrà anche i costi non necessari.

Facebook
Twitter
LinkedIn
Pinterest
Inviaci