Encoder incrementale - Incremental encoder
Un encoder incrementale è un dispositivo elettromeccanico lineare o rotativo che dispone di due segnali di uscita , A e B , che emettono impulsi quando il dispositivo viene spostato. Insieme, i segnali A e B indicano sia il verificarsi che la direzione del movimento. Molti encoder incrementali hanno un segnale di uscita aggiuntivo, tipicamente designato index o Z , che indica che l'encoder si trova in una particolare posizione di riferimento. Inoltre, alcuni encoder forniscono un'uscita di stato (tipicamente designata come allarme ) che indica condizioni di guasto interno come un guasto del cuscinetto o un malfunzionamento del sensore.
A differenza di un encoder assoluto , un encoder incrementale non indica la posizione assoluta; segnala solo i cambiamenti di posizione e, per ogni cambiamento di posizione segnalato, la direzione del movimento. Di conseguenza, per determinare la posizione assoluta in un determinato momento, è necessario inviare i segnali dell'encoder ad un'interfaccia dell'encoder incrementale , che a sua volta "traccerà" e riporterà la posizione assoluta dell'encoder.
Gli encoder incrementali segnalano i cambiamenti di posizione quasi istantaneamente, il che consente loro di monitorare i movimenti dei meccanismi ad alta velocità quasi in tempo reale . Per questo motivo, gli encoder incrementali sono comunemente utilizzati in applicazioni che richiedono misurazioni e controlli precisi di posizione e velocità .
Uscite in quadratura
Un encoder incrementale utilizza un encoder in quadratura per generare i suoi segnali di uscita A e B. Gli impulsi emessi dalle uscite A e B sono codificati in quadratura, il che significa che quando l'encoder incrementale si muove a velocità costante, le forme d'onda A e B sono onde quadre e c'è una differenza di fase di 90 gradi tra A e B .
In qualsiasi momento, la differenza di fase tra i segnali A e B sarà positiva o negativa a seconda della direzione di movimento dell'encoder. Nel caso di un encoder rotativo, la differenza di fase è +90° per rotazione in senso orario e -90° per rotazione in senso antiorario, o viceversa, a seconda del design del dispositivo.
La frequenza degli impulsi sull'uscita A o B è direttamente proporzionale alla velocità dell'encoder (rate of position change); le frequenze più alte indicano un movimento rapido, mentre le frequenze più basse indicano velocità più basse. I segnali statici e immutabili vengono emessi su A e B quando l'encoder è fermo. Nel caso di un encoder rotativo , la frequenza indica la velocità di rotazione dell'albero dell'encoder, e negli encoder lineari la frequenza indica la velocità di spostamento lineare.
- Disegni concettuali dei meccanismi di rilevamento dell'encoder in quadratura
Risoluzione
La risoluzione di un encoder incrementale è una misura della precisione delle informazioni di posizione che produce. La risoluzione dell'encoder è tipicamente specificata in termini di numero di impulsi A (o B ) per unità di spostamento o, equivalentemente, il numero di cicli di onde quadre A (o B ) per unità di spostamento. Nel caso degli encoder rotativi, la risoluzione è specificata come il numero di impulsi per giro (PPR) o cicli per giro (CPR), mentre la risoluzione dell'encoder lineare è tipicamente specificata come il numero di impulsi emessi per una particolare distanza di spostamento lineare (ad es. 1000 impulsi per mm ).
Ciò è in contrasto con la risoluzione di misurazione dell'encoder, che è la più piccola variazione di posizione che l'encoder può rilevare. Ogni fronte di segnale su A o B indica un cambiamento di posizione rilevato. Poiché ogni ciclo ad onda quadra su A (o B ) comprende quattro fronti di segnale (in salita A , in salita B , in discesa A e in discesa B ), la risoluzione di misura dell'encoder è pari a un quarto dello spostamento rappresentato da un ciclo completo di uscita A o B . Ad esempio, un encoder lineare da 1000 impulsi per mm ha una risoluzione di misurazione per ciclo di 1 mm / 1000 cicli = 1 μm, quindi la risoluzione di questo encoder è 1 μm / 4 = 250 nm.
Simmetria e fase
Quando si muove a velocità costante, un encoder incrementale ideale produrrebbe onde quadre perfette su A e B (ovvero, gli impulsi sarebbero larghi esattamente 180 °) con una differenza di fase di esattamente 90 ° tra A e B . Negli encoder reali, tuttavia, a causa delle imperfezioni del sensore, le larghezze di impulso non sono mai esattamente di 180° e la differenza di fase non è mai esattamente di 90°. Inoltre, le larghezze di impulso A e B variano da un ciclo all'altro (e tra loro) e la differenza di fase varia ad ogni fronte del segnale A e B. Di conseguenza, sia l'ampiezza dell'impulso che la differenza di fase varieranno in un intervallo di valori.
Per ogni particolare encoder, gli intervalli di larghezza di impulso e differenza di fase sono definiti rispettivamente dalle specifiche di "simmetria" e "fase" (o "fasatura"). Ad esempio, nel caso di un encoder con simmetria specificata di 180° ±25°, è garantito che l'ampiezza di ogni impulso in uscita sia almeno 155° e non superiore a 205°. Allo stesso modo, con la fase specificata come 90° ±20°, la differenza di fase su ogni fronte A o B sarà di almeno 70° e non più di 110°.
Tipi di segnale
Gli encoder incrementali utilizzano vari tipi di circuiti elettronici per pilotare (trasmettere) i loro segnali di uscita e i produttori spesso hanno la possibilità di costruire un particolare modello di encoder con uno qualsiasi dei diversi tipi di driver. I tipi di driver comunemente disponibili includono RS-422 a collettore aperto, meccanico, push-pull e differenziale.
Collezionista aperto
I driver a collettore aperto operano su un'ampia gamma di tensioni di segnale e spesso possono assorbire una corrente di uscita significativa, rendendoli utili per pilotare direttamente loop di corrente , optoisolatori e trasmettitori in fibra ottica .
Poiché non può fornire corrente, l'uscita di un driver a collettore aperto deve essere collegata a una tensione CC positiva tramite un resistore di pull-up . Alcuni encoder forniscono un resistore interno per questo scopo; altri no e quindi richiedono un resistore di pull-up esterno. In quest'ultimo caso, il resistore si trova tipicamente vicino all'interfaccia dell'encoder per migliorare l'immunità ai disturbi.
La tensione del segnale logico di alto livello dell'encoder è determinata dalla tensione applicata al resistore di pull-up ( V OH nello schema), mentre la corrente di uscita di basso livello è determinata sia dalla tensione del segnale che dalla resistenza di carico (inclusa la tensione di pull-up resistore). Quando il driver passa dal livello logico basso a quello alto, la resistenza di carico e la capacità del circuito agiscono insieme per formare un filtro passa basso , che allunga (aumenta) il tempo di salita del segnale e quindi ne limita la frequenza massima. Per questo motivo, i driver a collettore aperto in genere non vengono utilizzati quando l'encoder emette alte frequenze.
Meccanico
Gli encoder incrementali meccanici (oa contatto ) utilizzano contatti elettrici scorrevoli per generare direttamente i segnali di uscita A e B. Tipicamente, i contatti sono collegati elettricamente alla massa del segnale quando chiusi in modo che le uscite siano "pilotate" basse, rendendole effettivamente equivalenti meccanici dei driver a collettore aperto e quindi soggette agli stessi requisiti di condizionamento del segnale (es. resistore pull-up esterno).
La massima frequenza di uscita è limitata dagli stessi fattori che influiscono sulle uscite open-collector, ed ulteriormente limitata dal rimbalzo dei contatti – che deve essere filtrato dall'interfaccia encoder – e dalla velocità di funzionamento dei contatti meccanici, rendendo quindi questi dispositivi poco pratici per alte funzionamento in frequenza. Inoltre, i contatti subiscono un'usura meccanica durante il normale funzionamento, che limita la vita di questi dispositivi. D'altra parte, gli encoder meccanici sono relativamente economici perché non hanno elettronica interna attiva. Nel loro insieme, queste caratteristiche rendono gli encoder meccanici una buona soluzione per applicazioni a basso carico e bassa frequenza.
Gli encoder incrementali meccanici montati su PCB e da pannello sono ampiamente utilizzati come controlli manuali nelle apparecchiature elettroniche. Tali dispositivi vengono utilizzati come controlli del volume nelle apparecchiature audio, come controlli della tensione negli alimentatori da banco e per una varietà di altre funzioni.
Push-pull
Le uscite push-pull (ad es. TTL ) vengono generalmente utilizzate per l'interfaccia diretta con i circuiti logici. Sono particolarmente adatti alle applicazioni in cui l'encoder e l'interfaccia sono situati l'uno vicino all'altro (ad esempio, interconnessi tramite conduttori di circuito stampato o brevi tratti di cavi schermati) e alimentati da un alimentatore comune, evitando così l'esposizione a campi elettrici, loop di terra e gli effetti della linea di trasmissione che potrebbero danneggiare i segnali e quindi interrompere il tracciamento della posizione o, peggio, danneggiare l'interfaccia dell'encoder.
Coppia differenziale
La segnalazione differenziale RS-422 è generalmente preferita quando l'encoder emette alte frequenze o si trova lontano dall'interfaccia dell'encoder, o quando i segnali dell'encoder possono essere soggetti a campi elettrici o tensioni di modo comune, o quando l'interfaccia deve essere in grado di rilevare problemi di connettività tra encoder e interfaccia. Esempi di questo includono CMM e macchinari CNC , robotica industriale , automazione di fabbrica e piattaforme di movimento utilizzate nei simulatori di aeromobili e veicoli spaziali.
Quando vengono impiegate le uscite RS-422, l'encoder fornisce una coppia di conduttori differenziali per ogni uscita logica; ad esempio, "A" e "/A" sono denominazioni comunemente usate per la coppia differenziale attivo-alto e attivo-basso che comprende l' uscita logica A dell'encoder . Di conseguenza, l'interfaccia dell'encoder deve fornire ricevitori di linea RS-422 per convertire le coppie RS-422 in ingresso in logica single-ended.
Principali applicazioni
Tracciamento della posizione
Gli encoder incrementali sono comunemente usati per monitorare le posizioni fisiche dei dispositivi meccanici. L'encoder incrementale è collegato meccanicamente al dispositivo da monitorare in modo che i suoi segnali di uscita cambino man mano che il dispositivo si sposta. Dispositivi di esempio includono le sfere nei mouse e nelle trackball meccanici per computer, le manopole di controllo nelle apparecchiature elettroniche e gli alberi rotanti nelle antenne radar.
Nelle antenne radar marine commerciali , un encoder incrementale rotante è generalmente collegato all'albero dell'antenna rotante per monitorare l'angolo dell'antenna
La posizione di un trattore per l' ispezione video della conduttura è in genere monitorata da un encoder incrementale rotante collegato all'avvolgicavo del trattore
Un encoder incrementale non tiene traccia, né le sue uscite indicano la posizione corrente dell'encoder; riporta solo cambiamenti incrementali di posizione. Di conseguenza, per determinare la posizione dell'encoder in un determinato momento, è necessario prevedere un'elettronica esterna che "traccia" la posizione. Questo circuito esterno, noto come interfaccia encoder incrementale, tiene traccia della posizione contando i cambiamenti di posizione incrementali.
Quando riceve ogni segnalazione di variazione di posizione incrementale (indicata da una transizione del segnale A o B ), un'interfaccia encoder terrà conto della relazione di fase tra A e B e, a seconda del segno della differenza di fase, conta in avanti o fuori uso. Il valore cumulativo dei "conteggi" indica la distanza percorsa dall'inizio del rilevamento. Questo meccanismo garantisce il tracciamento accurato della posizione nelle applicazioni bidirezionali e, nelle applicazioni unidirezionali, previene falsi conteggi che altrimenti deriverebbero da vibrazioni o dithering meccanico vicino a una transizione di codice AB.
Unità di spostamento
Spesso i conteggi dell'encoder devono essere espressi in unità come metri, miglia o giri. In tali casi, i conteggi vengono convertiti nelle unità desiderate moltiplicando per il rapporto di spostamento dell'encoder per conteggio :
- .
Tipicamente questo calcolo viene eseguito da un computer che legge i conteggi dall'interfaccia dell'encoder incrementale. Ad esempio, nel caso di un encoder incrementale lineare che produce 8000 conteggi per millimetro di corsa, la posizione in millimetri viene calcolata come segue:
- .
Homing
Affinché un'interfaccia dell'encoder incrementale possa tracciare e segnalare la posizione assoluta, i conteggi dell'encoder devono essere correlati a una posizione di riferimento nel sistema meccanico a cui è collegato l'encoder. Questo viene comunemente fatto effettuando l' homing del sistema, che consiste nello spostare il sistema meccanico (e l'encoder) fino a quando non si allinea con una posizione di riferimento, quindi bloccando i conteggi di posizione assoluta associati nel contatore dell'interfaccia dell'encoder.
Un sensore di prossimità è integrato in alcuni sistemi meccanici per facilitare l'homing, che emette un segnale quando il sistema meccanico è nella sua posizione "home" (riferimento). In tali casi, il sistema meccanico viene azzerato spostandolo fino a quando l'interfaccia dell'encoder non riceve il segnale del sensore, dopodiché il valore di posizione corrispondente viene bloccato nel contatore di posizione.
In alcuni sistemi meccanici rotanti (ad es. antenne radar rotanti), la "posizione" di interesse è l'angolo di rotazione relativo a un orientamento di riferimento. Questi utilizzano tipicamente un encoder incrementale rotante che ha un segnale di uscita indice (o Z ). Il segnale di indice viene affermato quando l'albero è nel suo orientamento di riferimento, il che fa sì che l'interfaccia dell'encoder blocchi l'angolo di riferimento nel suo contatore di posizione.
Alcune applicazioni di encoder incrementali non dispongono di rilevatori di posizione di riferimento e pertanto devono implementare l'homing con altri mezzi. Ad esempio, un computer, quando si utilizza un mouse o un dispositivo di puntamento trackball, tipicamente posizionerà il dispositivo assumendo una posizione centrale, iniziale dello schermo all'avvio , e inserirà i conteggi corrispondenti nei contatori di posizione X e Y. Nel caso di encoder da pannello utilizzati come controlli manuali (ad es. controllo del volume audio), la posizione iniziale viene in genere recuperata dalla memoria flash o da altra memoria non volatile all'accensione e bloccata nel contatore di posizione e allo spegnimento il conteggio della posizione corrente viene salvato nella memoria non volatile per fungere da posizione iniziale per la successiva accensione.
Misurazione della velocità
Gli encoder incrementali sono comunemente usati per misurare la velocità dei sistemi meccanici. Questo può essere fatto per scopi di monitoraggio o per fornire feedback per il controllo del movimento , o entrambi. Le applicazioni più diffuse di questo includono il controllo della velocità della rotazione dell'antenna radar e dei trasportatori di materiale e il controllo del movimento in robotica , CMM e macchine CNC .
Le interfacce dell'encoder incrementale si occupano principalmente del tracciamento dello spostamento meccanico e di solito non misurano direttamente la velocità. Di conseguenza, la velocità deve essere misurata indirettamente facendo la derivata della posizione rispetto al tempo. Il segnale di posizione è intrinsecamente quantizzato , il che pone sfide per prendere la derivata a causa dell'errore di quantizzazione, specialmente a basse velocità.
La velocità dell'encoder può essere determinata contando o cronometrando gli impulsi di uscita dell'encoder (o fronti). Il valore risultante indica rispettivamente una frequenza o un periodo da cui è possibile calcolare la velocità. La velocità è proporzionale alla frequenza e inversamente proporzionale al periodo.
Per frequenza
Se il segnale di posizione viene campionato (un segnale a tempo discreto), gli impulsi (o fronti di impulso) vengono rilevati e contati dall'interfaccia e la velocità viene tipicamente calcolata da un computer che ha accesso in lettura all'interfaccia. Per fare ciò, il computer legge i conteggi di posizione dall'interfaccia alla volta e poi, in un secondo momento, legge nuovamente i conteggi per ottenere . Viene quindi calcolata la velocità media durante l'intervallo to :
- .
Il valore di velocità risultante è espresso come conteggi per unità di tempo (ad esempio, conteggi per secondo). In pratica, tuttavia, è spesso necessario esprimere la velocità in unità standard come metri al secondo, giri al minuto (RPM) o miglia all'ora (MPH). In tali casi, il software terrà conto della relazione tra i conteggi e le unità di distanza desiderate, nonché il rapporto tra il periodo di campionamento e le unità di tempo desiderate. Ad esempio, nel caso di un encoder incrementale rotante che produce 4096 conteggi per giro, che viene letto una volta al secondo, il software calcolerà RPM come segue:
- .
Quando si misura la velocità in questo modo, la risoluzione della misura è proporzionale sia alla risoluzione dell'encoder che al periodo di campionamento (il tempo trascorso tra i due campioni); la risoluzione della misurazione aumenterà all'aumentare del periodo di campionamento.
Per periodo
In alternativa, è possibile riportare una misurazione della velocità ad ogni impulso di uscita dell'encoder misurando la durata o il periodo dell'impulso. Quando si utilizza questo metodo, le misurazioni vengono attivate in posizioni specifiche anziché in momenti specifici. Il calcolo della velocità è lo stesso mostrato sopra (conteggi / tempo), sebbene in questo caso i tempi di inizio e fine misurazione ( e ) siano forniti da un riferimento temporale.
Questa tecnica evita l'errore di quantizzazione della posizione ma introduce errori relativi alla quantizzazione del riferimento temporale. Inoltre, è più sensibile alle non idealità del sensore come errori di fase, errori di simmetria e variazioni nelle posizioni di transizione dai loro valori nominali.
Interfaccia encoder incrementale
Un'interfaccia per encoder incrementale è un circuito elettronico che riceve segnali da un encoder incrementale, elabora i segnali per produrre la posizione assoluta e altre informazioni e rende disponibili le informazioni risultanti ai circuiti esterni.
Le interfacce per encoder incrementali sono implementate in vari modi, inclusi come ASIC , come blocchi IP all'interno di FPGA , come interfacce periferiche dedicate nei microcontrollori e, quando non sono richieste velocità di conteggio elevate, come GPIO interrogati (monitorati da software) .
Indipendentemente dall'implementazione, l'interfaccia deve campionare i segnali di uscita A e B dell'encoder abbastanza frequentemente da rilevare ogni cambiamento di stato AB prima che si verifichi il successivo cambiamento di stato. Al rilevamento di un cambiamento di stato, aumenterà o diminuirà il conteggio della posizione in base al fatto che A sia in testa o in coda a B . Ciò viene in genere fatto memorizzando una copia dello stato AB precedente e, al cambio di stato, utilizzando lo stato AB corrente e precedente per determinare la direzione del movimento.
Ricevitori di linea
Le interfacce dell'encoder incrementale utilizzano vari tipi di circuiti elettronici per ricevere i segnali generati dall'encoder. Questi ricevitori di linea fungono da buffer per proteggere i circuiti di interfaccia a valle e, in molti casi, forniscono anche funzioni di condizionamento del segnale.
single-ended
Le interfacce per encoder incrementali in genere utilizzano ingressi trigger Schmitt per ricevere segnali da encoder con uscite single-ended (ad es. push-pull, collettore aperto). Questo tipo di ricevitore di linea rifiuta intrinsecamente il rumore di basso livello (mediante l'isteresi di ingresso) e protegge i circuiti a valle da livelli di segnale logico non validi (e possibilmente distruttivi).
Differenziale
I ricevitori di linea RS-422 sono comunemente usati per ricevere segnali da encoder con uscite differenziali. Questo tipo di ricevitore rifiuta il rumore di modo comune e converte i segnali differenziali in ingresso nella forma a terminazione singola richiesta dai circuiti logici a valle.
Nei sistemi mission-critical, potrebbe essere necessaria un'interfaccia encoder per rilevare la perdita dei segnali di ingresso a causa della perdita di alimentazione dell'encoder, guasto del driver del segnale, guasto del cavo o scollegamento del cavo. Ciò si ottiene solitamente utilizzando ricevitori di linea RS-422 avanzati che rilevano l'assenza di segnali di ingresso validi e segnalano questa condizione tramite un'uscita di stato "segnale perso". Durante il normale funzionamento, possono comparire anomalie (brevi impulsi) sulle uscite di stato durante le transizioni di stato degli ingressi; in genere, l'interfaccia dell'encoder filtrerà i segnali di stato per evitare che questi glitch vengano interpretati erroneamente come segnali persi. A seconda dell'interfaccia, l'elaborazione successiva può includere la generazione di una richiesta di interruzione al rilevamento della perdita di segnale e l'invio di una notifica all'applicazione per la registrazione degli errori o l'analisi dei guasti.
Sincronizzazione dell'orologio
Un'interfaccia dell'encoder incrementale è costituita in gran parte da logica sequenziale scandita da un segnale di clock . Tuttavia, i segnali dell'encoder in ingresso sono asincroni rispetto al clock dell'interfaccia poiché la loro temporizzazione è determinata esclusivamente dal movimento dell'encoder. Di conseguenza, i segnali in uscita dai ricevitori di linea A e B (anche Z e di allarme , se utilizzati) devono essere sincronizzati al clock dell'interfaccia, sia per evitare errori dovuti alla metastabilità, sia per costringere i segnali nel dominio del clock del decodificatore in quadratura.
Tipicamente questa sincronizzazione viene eseguita da sincronizzatori indipendenti a segnale singolo come il sincronizzatore a due flip-flop visto qui. A frequenze di clock molto elevate, o quando è necessario un tasso di errore molto basso, i sincronizzatori possono includere flip-flop aggiuntivi al fine di ottenere un tasso di errore di bit accettabilmente basso .
Filtro di ingresso
In molti casi un'interfaccia encoder deve filtrare i segnali dell'encoder sincronizzato prima di elaborarli ulteriormente. Ciò può essere necessario per respingere il rumore di basso livello e i picchi di rumore di breve durata e di grande ampiezza che si trovano comunemente nelle applicazioni dei motori e, nel caso di encoder di tipo meccanico, per antirimbalzare A e B per evitare errori di conteggio dovuti al rimbalzo del contatto meccanico .
Le interfacce basate su hardware spesso forniscono filtri programmabili per i segnali dell'encoder, che forniscono un'ampia gamma di impostazioni del filtro e consentono quindi loro di antirimbalzare i contatti o sopprimere i transitori derivanti da disturbi o segnali a rotazione lenta, secondo necessità. Nelle interfacce basate su software, A e B in genere sono collegati a GPIO che vengono campionati (tramite polling o edge interrupt) e antirimbalzo dal software.
Decodificatore in quadratura
Le interfacce dell'encoder incrementale utilizzano comunemente un decodificatore in quadratura per convertire i segnali A e B nei segnali di abilitazione della direzione e del conteggio (abilitazione del clock) necessari per controllare un contatore sincrono bidirezionale (conteggio avanti e indietro) .
Tipicamente, un decodificatore in quadratura è implementato come una macchina a stati finiti (FSM) che campiona simultaneamente i segnali A e B e quindi produce campioni "AB" amalgamati. Quando viene acquisito ogni nuovo campione AB, l'FSM memorizzerà il precedente campione AB per analisi successive. L'FSM valuta le differenze tra il nuovo e il precedente stato AB e genera segnali di abilitazione di direzione e conteggio come appropriato per la sequenza di stato AB rilevata.
| Descrizione | stato AB | Uscite | |||||
|---|---|---|---|---|---|---|---|
| Precedente | Attuale | CE | DIR | ERR | |||
| x1 | x2 | x4 | |||||
| Spostato di un incremento in direzione "avanti" ( A conduce B ) |
00 | 10 | 1 | 1 | 1 | 1 | 0 |
| 10 | 11 | 0 | 0 | ||||
| 11 | 01 | 1 | |||||
| 01 | 00 | 0 | |||||
| Spostato di un incremento in direzione "indietro" ( B precede A ) |
00 | 01 | 0 | 0 | |||
| 01 | 11 | 1 | |||||
| 11 | 10 | 0 | |||||
| 10 | 00 | 1 | 1 | ||||
| Nessun movimento rilevato | 00 | 00 | 0 | X | |||
| 01 | 01 | ||||||
| 10 | 10 | ||||||
| 11 | 11 | ||||||
| Spostato un numero indeterminato di incrementi | 00 | 11 | 1 | ||||
| 01 | 10 | ||||||
| 10 | 01 | ||||||
| 11 | 00 | ||||||
Transizioni di stato
In due campioni AB consecutivi, il livello logico di A o B può cambiare o entrambi i livelli possono rimanere invariati, ma nel normale funzionamento A e B non cambieranno mai entrambi. A questo proposito, ogni campione AB è effettivamente un codice Gray a due bit .
Transizioni normali
Quando solo A o B cambia stato, si presume che l'encoder abbia spostato un incremento della sua risoluzione di misurazione e, di conseguenza, il decodificatore in quadratura asserirà la sua uscita di abilitazione conteggio per consentire la variazione dei conteggi. A seconda della direzione di marcia dell'encoder (avanti o indietro), il decoder assegnerà o annullerà la sua uscita di direzione per far sì che i conteggi aumentino o diminuiscano (o viceversa).
Quando né A né B cambiano, si presume che l'encoder non si sia mosso e quindi il decodificatore in quadratura nega la sua uscita di abilitazione conteggio , facendo sì che i conteggi rimangano invariati.
Errori
Se entrambi gli stati logici A e B cambiano in campioni AB consecutivi, il decodificatore in quadratura non ha modo di determinare quanti incrementi o in quale direzione si è spostato il codificatore. Ciò può accadere se la velocità dell'encoder è troppo elevata per l'elaborazione da parte del decoder (ovvero, la velocità dei cambiamenti di stato AB supera la frequenza di campionamento del decodificatore in quadratura; vedere la frequenza di Nyquist ) o se il segnale A o B è rumoroso .
In molte applicazioni dell'encoder questo è un evento catastrofico perché il contatore non fornisce più un'indicazione accurata della posizione dell'encoder. Di conseguenza, i decodificatori in quadratura spesso emetteranno un segnale di errore aggiuntivo che viene affermato quando gli stati A e B cambiano simultaneamente. A causa della gravità e della natura sensibile al tempo di questa condizione, il segnale di errore è spesso collegato a una richiesta di interruzione .
Moltiplicatore di clock
Un decodificatore in quadratura non consente necessariamente il cambio dei conteggi per ogni cambio di posizione incrementale. Quando un decodificatore rileva un cambiamento di posizione incrementale (dovuto a una transizione di A o B , ma non di entrambi), può consentire la modifica dei conteggi o può inibire il conteggio, a seconda della transizione di stato AB e del moltiplicatore di clock del decodificatore .
Il moltiplicatore di clock di un decodificatore in quadratura è così chiamato perché risulta in una frequenza di conteggio che è un multiplo della frequenza dell'impulso A o B. A seconda del design del decoder, il moltiplicatore di clock può essere cablato nel design o può essere configurabile in fase di esecuzione tramite segnali di ingresso.
Il valore del moltiplicatore di clock può essere uno, due o quattro (tipicamente indicato come "x1", "x2" e "x4", o "1x", "2x" e "4x"). Nel caso di un moltiplicatore x4, i conteggi cambieranno per ogni cambio di stato AB, risultando così in un tasso di conteggio pari a quattro volte la frequenza A o B. I moltiplicatori x2 e x1 consentono ai conteggi di cambiare su alcuni, ma non tutti i cambiamenti di stato AB, come mostrato nella tabella dello stato del decodificatore in quadratura sopra (nota: questa tabella mostra una delle diverse possibili implementazioni per i moltiplicatori x2 e x1; altre implementazioni possono abilitare contando a diverse transizioni AB).
Segnalazione di posizione
Dal punto di vista di un'applicazione, lo scopo fondamentale di un'interfaccia encoder incrementale è riportare le informazioni sulla posizione su richiesta. A seconda dell'applicazione, questo può essere semplice come consentire al computer di leggere il contatore di posizione in qualsiasi momento sotto il controllo del programma. Nei sistemi più complessi, il contatore di posizione può essere campionato ed elaborato da macchine a stati intermedi, che a loro volta mettono i campioni a disposizione del computer.
Registro di esempio
Un'interfaccia dell'encoder utilizza tipicamente un registro di esempio per facilitare la segnalazione della posizione. Nel semplice caso in cui il computer richiede informazioni sulla posizione sotto il controllo del programma, l'interfaccia campiona il contatore di posizione (cioè copia i conteggi della posizione corrente nel registro campione) e quindi il computer legge i conteggi dal registro campione. Questo meccanismo si traduce in un'operazione atomica e quindi garantisce l'integrità dei dati del campione, che altrimenti potrebbero essere a rischio (ad esempio, se la dimensione della parola del campione supera la dimensione della parola del computer).
Campionamento attivato
In alcuni casi il computer potrebbe non essere in grado di acquisire programmaticamente (tramite I/O programmati ) le informazioni di posizione con una precisione temporale adeguata. Ad esempio, il computer potrebbe non essere in grado di richiedere campioni in base a un programma periodico tempestivo (ad esempio, per la misurazione della velocità) a causa della variabilità temporale del software. Inoltre, in alcune applicazioni è necessario richiedere campioni al verificarsi di eventi esterni e il computer potrebbe non essere in grado di farlo in modo tempestivo. A velocità e risoluzioni dell'encoder più elevate, possono verificarsi errori di misurazione della posizione anche quando vengono utilizzati gli interrupt per richiedere campioni, poiché l'encoder può spostarsi tra il momento in cui l'IRQ viene segnalato e la richiesta di campionamento viene emessa dal gestore dell'interrupt.
Per superare questa limitazione, è comune che un'interfaccia encoder incrementale implementi il campionamento attivato dall'hardware, che le consente di campionare il contatore di posizione a tempi precisamente controllati come dettato da un segnale di ingresso trigger. Questo è importante quando la posizione deve essere campionata in momenti particolari o in risposta a eventi fisici, ed essenziale in applicazioni come il controllo del movimento multiasse e CMM, in cui i contatori di posizione di più interfacce encoder (uno per asse) devono essere simultaneamente campionato.
In molte applicazioni il computer deve sapere con precisione quando è stato acquisito ciascun campione e, se l'interfaccia ha più ingressi di trigger, quale segnale ha attivato l'acquisizione del campione. Per soddisfare questi requisiti, l'interfaccia in genere include un timestamp e informazioni di attivazione in ogni campione.
Notifica evento
I trigger di campionamento sono spesso asincroni rispetto all'esecuzione del software. Di conseguenza, quando il contatore di posizione viene campionato in risposta ad un segnale di trigger, il computer deve essere informato (tipicamente tramite interrupt ) che un campione è disponibile. Ciò consente al software di essere guidato dagli eventi (rispetto al polling ), il che facilita il comportamento reattivo del sistema ed elimina il sovraccarico del polling.
Campione FIFO
I trigger di campionamento consecutivi possono verificarsi più velocemente di quanto il computer possa elaborare i campioni risultanti. Quando ciò accade, le informazioni nel registro campione verranno sovrascritte prima che possano essere lette dal computer, con conseguente perdita di dati. Per evitare questo problema, alcune interfacce encoder incrementali forniscono un buffer FIFO per i campioni. Quando ogni campione viene acquisito, viene memorizzato nella FIFO. Quando il computer richiede un campione, è consentito leggere il campione più vecchio nella FIFO.
Appunti
Riferimenti
link esterno
-
Mezzi relativi agli encoder incrementali su Wikimedia Commons
