Codificador incremental


Un codificador incremental es un dispositivo electromecánico lineal o rotativo que tiene dos señales de salida , A y B , que emiten pulsos cuando se mueve el dispositivo. [1] Juntas, las señales A y B indican tanto la ocurrencia como la dirección del movimiento. Muchos codificadores incrementales tienen una señal de salida adicional, normalmente designada como índice [2] o Z , [3], que indica que el codificador está ubicado en una posición de referencia particular. Además, algunos codificadores proporcionan una salida de estado (normalmente designada como alarma ) [4]que indica condiciones de falla interna, como una falla del rodamiento o un mal funcionamiento del sensor.

Codificador incremental rotativo con eje unido a su abertura pasante
Introducción a los codificadores incrementales, de VideoWiki Script Incremental Encoder

A diferencia de un codificador absoluto , un codificador incremental no indica la posición absoluta; [nota 1] solo informa cambios en la posición [3] y, para cada cambio de posición informado, la dirección del movimiento. En consecuencia, para determinar la posición absoluta en cualquier momento particular, es necesario enviar las señales del codificador a una interfaz de codificador incremental , que a su vez "rastreará" e informará la posición absoluta del codificador.

Los codificadores incrementales informan cambios de posición casi instantáneamente, lo que les permite monitorear los movimientos de los mecanismos de alta velocidad casi en tiempo real . Debido a esto, los codificadores incrementales se utilizan comúnmente en aplicaciones que requieren una medición y un control precisos de la posición y la velocidad .

Salidas en cuadratura

Dos ondas cuadradas en cuadratura. La dirección de movimiento se indica por el signo de la A - B diferencia de fase que, en este caso, es negativa porque A senderos B .

Un codificador incremental emplea un codificador de cuadratura para generar sus señales de salida A y B. Los pulsos emitidos desde la A y B salidas están en cuadratura codificada, lo que significa que cuando el codificador incremental está moviendo a una velocidad constante, la A y B formas de onda son ondas cuadradas y hay un 90 grado de diferencia de fase entre A y B . [2]

En cualquier momento en particular, la diferencia de fase entre las señales A y B será positiva o negativa dependiendo de la dirección de movimiento del codificador. En el caso de un codificador rotatorio, la diferencia de fase es de + 90 ° para la rotación en el sentido de las agujas del reloj y de −90 ° para la rotación en el sentido contrario a las agujas del reloj, o viceversa, según el diseño del dispositivo.

La frecuencia de los pulsos en la salida A o B es directamente proporcional a la velocidad del codificador (tasa de cambio de posición); las frecuencias más altas indican un movimiento rápido, mientras que las frecuencias más bajas indican velocidades más lentas. [1] Las señales estáticas que no cambian se emiten en A y B cuando el codificador está parado. En el caso de un codificador rotatorio , la frecuencia indica la velocidad de rotación del eje del codificador, y en los codificadores lineales la frecuencia indica la velocidad de recorrido lineal.

Dibujos conceptuales de los mecanismos de detección del codificador en cuadratura
  • Codificador rotatorio, con los estados de señal A / B correspondientes mostrados a la derecha

  • Codificador lineal; la señal R indica que el codificador está ubicado en su posición de referencia

Resolución

La resolución de un codificador incremental es una medida de la precisión de la información de posición que produce. La resolución del codificador se especifica típicamente en términos del número de pulsos A (o B ) por unidad de desplazamiento o, de manera equivalente, el número de ciclos de onda cuadrada A (o B ) por unidad de desplazamiento. En el caso de los codificadores rotatorios, la resolución se especifica como el número de pulsos por revolución (PPR) o ciclos por revolución (CPR), [3] mientras que la resolución del codificador lineal generalmente se especifica como el número de pulsos emitidos para una distancia transversal lineal particular. (por ejemplo, 1000 pulsos por mm ).

Esto contrasta con la resolución de medición del codificador, que es el cambio de posición más pequeño que el codificador puede detectar. Cada flanco de señal en A o B indica un cambio de posición detectado. Dado que cada ciclo de onda cuadrada en A (o B ) abarca cuatro bordes de señal ( A ascendente , B ascendente , A descendente y B descendente ), la resolución de medición del codificador es igual a un cuarto del desplazamiento representado por un ciclo de salida A o B completo . Por ejemplo, un codificador lineal de 1000 pulsos por mm tiene una resolución de medición por ciclo de 1 mm / 1000 ciclos = 1 μm, por lo que la resolución de este codificador es 1 μm / 4 = 250 nm.

Simetría y fase

Los codificadores incrementales presentan errores de simetría y fase debido a imperfecciones del sensor

Cuando se mueve a velocidad constante, un codificador incremental ideal sería de salida perfecta ondas cuadradas en A y B (es decir, los pulsos sería exactamente 180 ° de ancho) con una diferencia de fase de exactamente 90 ° entre A y B . Sin embargo, en los codificadores reales, debido a las imperfecciones del sensor, los anchos de pulso nunca son exactamente 180 ° y la diferencia de fase nunca es exactamente 90 °. Además, los anchos de pulso A y B varían de un ciclo a otro (y entre sí) y la diferencia de fase varía en cada borde de la señal A y B. En consecuencia, tanto el ancho del pulso como la diferencia de fase variarán en un rango de valores.

Para cualquier codificador particular, el ancho de pulso y los rangos de diferencia de fase se definen mediante especificaciones de "simetría" y "fase" (o "puesta en fase"), respectivamente. Por ejemplo, en el caso de un codificador con simetría especificada como 180 ° ± 25 °, se garantiza que el ancho de cada pulso de salida sea de al menos 155 ° y no más de 205 °. De manera similar, con la fase especificada como 90 ° ± 20 °, la diferencia de fase en cada borde A o B será de al menos 70 ° y no más de 110 °.

Los codificadores incrementales emplean varios tipos de circuitos electrónicos para impulsar (transmitir) sus señales de salida, y los fabricantes a menudo tienen la capacidad de construir un modelo de codificador particular con cualquiera de varios tipos de controladores. Los tipos de controladores comúnmente disponibles incluyen colector abierto, mecánico, push-pull y diferencial RS-422.

Coleccionista abierto

Diagrama esquemático de un controlador de colector abierto típico. La resistencia pull-up de salida está incorporada en algunos codificadores; si no está integrado, se requiere una resistencia externa.

Los controladores de colector abierto operan en una amplia gama de voltajes de señal y, a menudo, pueden reducir una corriente de salida significativa, lo que los hace útiles para impulsar directamente bucles de corriente , optoaisladores y transmisores de fibra óptica .

Debido a que no puede generar corriente, la salida de un controlador de colector abierto debe conectarse a un voltaje de CC positivo a través de una resistencia pull-up . Algunos codificadores proporcionan una resistencia interna para este propósito; otros no lo necesitan y, por lo tanto, requieren una resistencia pull-up externa. En el último caso, la resistencia normalmente se encuentra cerca de la interfaz del codificador para mejorar la inmunidad al ruido.

El voltaje de la señal lógica de alto nivel del codificador está determinado por el voltaje aplicado a la resistencia pull-up ( V OH en el esquema), mientras que la corriente de salida de bajo nivel está determinada por el voltaje de la señal y la resistencia de carga (incluido el pull-up resistor). Cuando el controlador cambia del nivel lógico bajo al alto, la resistencia de carga y la capacitancia del circuito actúan juntas para formar un filtro de paso bajo , que alarga (aumenta) el tiempo de subida de la señal y, por lo tanto, limita su frecuencia máxima. Por esta razón, los controladores de colector abierto generalmente no se utilizan cuando el codificador genera altas frecuencias.

Mecánico

Un codificador incremental mecánico rotatorio montado en PCB

Los codificadores incrementales mecánicos (o de contacto ) [5] utilizan contactos eléctricos deslizantes para generar directamente las señales de salida A y B. [2] Por lo general, los contactos están conectados eléctricamente a la tierra de la señal cuando están cerrados para que las salidas sean "impulsadas" a nivel bajo, lo que las convierte en equivalentes mecánicos de los controladores de colector abierto y, por lo tanto, están sujetas a los mismos requisitos de acondicionamiento de señal (es decir, pull-up externo resistor).

La frecuencia de salida máxima está limitada por los mismos factores que afectan las salidas de colector abierto, y además está limitada por el rebote del contacto, que debe ser filtrado por la interfaz del codificador, y por la velocidad de operación de los contactos mecánicos, lo que hace que estos dispositivos no sean prácticos para altas operación de frecuencia. Además, los contactos experimentan desgaste mecánico en funcionamiento normal, lo que limita la vida útil de estos dispositivos. Por otro lado, los codificadores mecánicos son relativamente económicos porque no tienen componentes electrónicos activos internos. En conjunto, estos atributos hacen que los codificadores mecánicos sean adecuados para aplicaciones de baja frecuencia y trabajo bajo.

Los codificadores incrementales mecánicos montados en PCB y en panel se utilizan ampliamente como controles manuales en equipos electrónicos. Estos dispositivos se utilizan como controles de volumen en equipos de audio, como controles de voltaje en fuentes de alimentación de banco y para una variedad de otras funciones.

Empujar tirar

Las salidas push-pull (p. Ej., TTL ) se utilizan normalmente para la interfaz directa con los circuitos lógicos. Estos son adecuados para aplicaciones en las que el codificador y la interfaz están ubicados uno cerca del otro (p. Ej., Interconectados a través de conductores de circuito impreso o tramos cortos de cable blindado) y alimentados por una fuente de alimentación común, evitando así la exposición a campos eléctricos, bucles de tierra y efectos de la línea de transmisión que pueden corromper las señales y por lo tanto interrumpir el seguimiento de la posición o, peor aún, dañar la interfaz del codificador.

Par diferencial

Formas de onda de salida diferencial de un codificador incremental

La señalización diferencial RS-422 se prefiere típicamente cuando el codificador dará salida a altas frecuencias o estará ubicado lejos de la interfaz del codificador, [5] [6] o cuando las señales del codificador pueden estar sujetas a campos eléctricos o voltajes de modo común, [5 ] o cuando la interfaz debe poder detectar problemas de conectividad entre el codificador y la interfaz. Ejemplos de esto incluyen MMC y maquinaria CNC , robótica industrial , automatización de fábricas y plataformas de movimiento utilizadas en simuladores de aeronaves y naves espaciales.

Cuando se emplean salidas RS-422, el codificador proporciona un par de conductores diferenciales para cada salida lógica; por ejemplo, "A" y "/ A" son designaciones de uso común para el par diferencial activo-alto y activo-bajo que comprende la salida lógica A del codificador . En consecuencia, la interfaz del codificador debe proporcionar receptores de línea RS-422 para convertir los pares RS-422 entrantes en lógica de un solo extremo. [5]

Seguimiento de posición

Los codificadores incrementales se utilizan comúnmente para monitorear las posiciones físicas de los dispositivos mecánicos. El codificador incremental está conectado mecánicamente al dispositivo que se va a monitorear para que sus señales de salida cambien a medida que el dispositivo se mueve. Los dispositivos de ejemplo incluyen las bolas en ratones de computadora mecánicos y trackballs, perillas de control en equipos electrónicos y ejes giratorios en antenas de radar.

  • Los trackballs y los ratones de computadora electromecánicos emplean dos codificadores incrementales rotativos para facilitar el seguimiento de la posición en dos ejes

  • Los controles de equipos electrónicos a menudo se implementan con una perilla unida a un codificador mecánico (se muestra con una perilla separada)

  • En las antenas de radar marinas comerciales , normalmente se conecta un codificador incremental rotativo al eje de la antena giratoria para controlar el ángulo de la antena.

  • La ubicación de un tractor de inspección por video de tuberías generalmente se monitorea mediante un codificador incremental giratorio conectado al carrete de cable del tractor

Un codificador incremental no realiza un seguimiento ni sus salidas indican la posición actual del codificador; solo informa cambios incrementales en la posición. [3] En consecuencia, para determinar la posición del codificador en cualquier momento en particular, es necesario proporcionar una electrónica externa que "rastreará" la posición. Este circuito externo, que se conoce como interfaz de codificador incremental, rastrea la posición contando los cambios de posición incrementales.

A medida que recibe cada informe de cambio de posición incremental (indicado por una transición de la señal A o B ), una interfaz de codificador tendrá en cuenta la relación de fase entre A y B y, según el signo de la diferencia de fase, contará hacia arriba o hacia abajo. abajo. El valor de "recuentos" acumulados indica la distancia recorrida desde que comenzó el seguimiento. Este mecanismo garantiza un seguimiento preciso de la posición en aplicaciones bidireccionales y, en aplicaciones unidireccionales, evita recuentos falsos que de otro modo resultarían de vibraciones o vibraciones mecánicas cerca de una transición de código AB.

Unidades de desplazamiento

A menudo, los recuentos del codificador deben expresarse en unidades como metros, millas o revoluciones. En tales casos, los recuentos se convierten a las unidades deseadas multiplicando por la relación de desplazamiento del codificador por conteo :

.

Normalmente, este cálculo lo realiza una computadora que lee los recuentos de la interfaz del codificador incremental. Por ejemplo, en el caso de un codificador incremental lineal que produce 8000 cuentas por milímetro de recorrido, la posición en milímetros se calcula de la siguiente manera:

.

Buscador de blancos

Para que una interfaz de codificador incremental rastree e informe la posición absoluta, los recuentos del codificador deben correlacionarse con una posición de referencia en el sistema mecánico al que está conectado el codificador. Esto se hace comúnmente volviendo a la posición inicial del sistema, que consiste en mover el sistema mecánico (y el codificador) hasta que se alinee con una posición de referencia, y luego bloquear [nota 2] la posición absoluta asociada cuenta en el contador de la interfaz del codificador.

Un sensor de proximidad está integrado en algunos sistemas mecánicos para facilitar la búsqueda, que emite una señal cuando el sistema mecánico está en su posición "inicial" (referencia). En tales casos, el sistema mecánico se localiza moviéndolo hasta que la interfaz del codificador recibe la señal del sensor, después de lo cual el valor de posición correspondiente se atasca en el contador de posición.

En algunos sistemas mecánicos giratorios (por ejemplo, antenas de radar giratorias), la "posición" de interés es el ángulo de rotación con respecto a una orientación de referencia. Por lo general, emplean un codificador incremental rotativo que tiene una señal de salida de índice (o Z ). La señal de índice se afirma cuando el eje está en su orientación de referencia, lo que hace que la interfaz del codificador bloquee el ángulo de referencia en su contador de posición.

Algunas aplicaciones de codificador incremental carecen de detectores de posición de referencia y, por lo tanto, deben implementar la referenciación por otros medios. Por ejemplo, una computadora, cuando se usa un mouse o un dispositivo de puntero de bola de seguimiento, típicamente ubicará el dispositivo asumiendo una posición de pantalla inicial central al arrancar , y bloqueará los conteos correspondientes en los contadores de posición X e Y. En el caso de los codificadores de panel utilizados como controles manuales (por ejemplo, control de volumen de audio), la posición inicial generalmente se recupera de la memoria flash u otra memoria no volátil al encenderse y atascarse en el contador de posición y al apagarlo. el recuento de la posición actual se guarda en la memoria no volátil para que sirva como posición inicial para el próximo encendido.

Medida de velocidad

Los transportadores mecánicos como este suelen utilizar codificadores incrementales rotativos como dispositivos de retroalimentación para el control de velocidad de bucle cerrado.

Los codificadores incrementales se utilizan comúnmente para medir la velocidad de los sistemas mecánicos. Esto se puede hacer con fines de monitoreo o para proporcionar retroalimentación para el control de movimiento , o ambos. [5] Las aplicaciones generalizadas de esto incluyen el control de velocidad de la rotación de la antena del radar y los transportadores de material , y el control de movimiento en robótica , máquinas CMM y CNC .

Las interfaces de codificador incremental se preocupan principalmente por el seguimiento del desplazamiento mecánico y generalmente no miden directamente la velocidad. En consecuencia, la velocidad debe medirse indirectamente tomando la derivada de la posición con respecto al tiempo. La señal de posición está intrínsecamente cuantificada , lo que plantea desafíos para tomar la derivada debido al error de cuantificación, especialmente a bajas velocidades.

La velocidad del codificador se puede determinar contando o cronometrando los pulsos de salida del codificador (o flancos). [7] El valor resultante indica una frecuencia o período, respectivamente, a partir del cual se puede calcular la velocidad. La velocidad es proporcional a la frecuencia e inversamente proporcional al período.

Por frecuencia

Si se muestrea la señal de posición (una señal de tiempo discreta), los pulsos (o flancos de pulso) son detectados y contados por la interfaz, y la velocidad normalmente la calcula una computadora que tiene acceso de lectura a la interfaz. Para hacer esto, la computadora lee los recuentos de posiciones desde la interfaz en el momento y luego, en algún momento posterior lee los recuentos de nuevo para obtener . La velocidad media durante el intervalo. a luego se calcula: [2]

.

El valor de velocidad resultante se expresa como recuentos por unidad de tiempo (por ejemplo, recuentos por segundo). En la práctica, sin embargo, a menudo es necesario expresar la velocidad en unidades estandarizadas como metros por segundo, revoluciones por minuto (RPM) o millas por hora (MPH). En tales casos, el software tendrá en cuenta la relación entre los recuentos y las unidades de distancia deseadas, así como la relación entre el período de muestreo y las unidades de tiempo deseadas. Por ejemplo, en el caso de un codificador incremental rotativo que produce 4096 conteos por revolución, que se lee una vez por segundo, el software calcularía las RPM de la siguiente manera:

.

Al medir la velocidad de esta manera, la resolución de la medición es proporcional tanto a la resolución del codificador como al período de muestreo (el tiempo transcurrido entre las dos muestras); La resolución de la medición aumentará a medida que aumente el período de muestreo. [2]

Por período

Alternativamente, se puede informar una medición de velocidad en cada pulso de salida del codificador midiendo el ancho o período del pulso. Cuando se utiliza este método, las mediciones se activan en posiciones específicas en lugar de en momentos específicos. El cálculo de la velocidad es el mismo que se muestra arriba (conteos / tiempo), aunque en este caso los tiempos de inicio y parada de la medición ( y ) se proporcionan mediante una referencia de tiempo.

Esta técnica evita el error de cuantificación de la posición pero introduce errores relacionados con la cuantificación de la referencia de tiempo. Además, es más sensible a las no idealidades del sensor, como errores de fase, errores de simetría y variaciones en las ubicaciones de transición de sus valores nominales. [8]

Input connectors for encoder signalsRS-422 line receiversFPGAPCI Express edge connector
Interfaz de codificador incremental PCI Express de 6 ejes. De arriba a abajo: conectores de entrada (L) y receptores de línea (R); FPGA; conector de plano posterior

Una interfaz de codificador incremental es un circuito electrónico que recibe señales de un codificador incremental, procesa las señales para producir la posición absoluta y otra información, y hace que la información resultante esté disponible para circuitos externos.

Las interfaces de codificador incremental se implementan en una variedad de formas, incluso como ASIC , como bloques de IP dentro de FPGA , como interfaces periféricas dedicadas en microcontroladores y, cuando no se requieren altas tasas de conteo, como GPIO sondeados (monitoreados por software) .

Independientemente de la implementación, la interfaz debe muestrear las señales de salida A y B del codificador con la frecuencia suficiente para detectar cada cambio de estado AB antes de que ocurra el siguiente cambio de estado. Al detectar un cambio de estado, será aumentar o disminuir el recuento de posición en función de si A clientes potenciales o senderos B . Por lo general, esto se hace almacenando una copia del estado AB anterior y, al cambiar de estado, utilizando los estados AB actual y anterior para determinar la dirección del movimiento.

Receptores de línea

Las interfaces de codificador incremental utilizan varios tipos de circuitos electrónicos para recibir señales generadas por codificador. Estos receptores de línea sirven como búfer para proteger la circuitería de interfaz aguas abajo y, en muchos casos, también proporcionan funciones de acondicionamiento de señal.

De un solo extremo

Las interfaces de codificador incremental normalmente emplean entradas de disparador Schmitt para recibir señales de codificadores que tienen salidas de un solo extremo (p. Ej., Push-pull, colector abierto). Este tipo de receptor de línea rechaza de forma inherente el ruido de bajo nivel (por medio de su histéresis de entrada) y protege la circuitería aguas abajo de niveles de señal lógica no válidos (y posiblemente destructivos).

Diferencial

Los receptores de línea RS-422 se utilizan comúnmente para recibir señales de codificadores que tienen salidas diferenciales. Este tipo de receptor rechaza el ruido de modo común y convierte las señales diferenciales entrantes a la forma de un solo extremo que requieren los circuitos lógicos descendentes.

En sistemas de misión crítica, es posible que se requiera una interfaz de codificador para detectar la pérdida de señales de entrada debido a la pérdida de energía del codificador, falla del controlador de señal, falla del cable o desconexión del cable. Esto generalmente se logra mediante el uso de receptores de línea RS-422 mejorados que detectan la ausencia de señales de entrada válidas e informan esta condición a través de una salida de estado de "señal perdida". En funcionamiento normal, pueden aparecer fallos (pulsos breves) en las salidas de estado durante las transiciones de estado de entrada; Normalmente, la interfaz del codificador filtrará las señales de estado para evitar que estos fallos se interpreten erróneamente como señales perdidas. Dependiendo de la interfaz, el procesamiento posterior puede incluir generar una solicitud de interrupción al detectar la pérdida de señal y enviar una notificación a la aplicación para el registro de errores o el análisis de fallas.

Sincronización de reloj

Un sincronizador 2-FF. La señal de salida del receptor de línea se aplica a D in ; la señal D out se envía al decodificador en cuadratura.
A altas frecuencias de reloj, los sincronizadores pueden usar tres (como este) o más flip-flops para reducir el MTBF

Una interfaz de codificador incremental consta en gran medida de una lógica secuencial que está marcada por una señal de reloj . Sin embargo, las señales entrantes del codificador son asíncronas con respecto al reloj de la interfaz porque su temporización está determinada únicamente por el movimiento del codificador. En consecuencia, las señales de salida de los receptores de línea A y B (también Z y alarma , si se usan) deben sincronizarse con el reloj de la interfaz, tanto para evitar errores debido a la metaestabilidad como para coaccionar las señales en el dominio del reloj del decodificador en cuadratura. [9]

Normalmente, esta sincronización se realiza mediante sincronizadores independientes de una sola señal, como el sincronizador de dos flip-flop que se ve aquí. A frecuencias de reloj muy altas, o cuando se necesita una tasa de error muy baja, los sincronizadores pueden incluir flip-flops adicionales para lograr una tasa de error de bit aceptablemente baja . [10]

Filtro de entrada

En muchos casos, una interfaz de codificador debe filtrar las señales de codificador sincronizadas antes de procesarlas más. Esto puede ser necesario para rechazar el ruido de bajo nivel y los picos breves de ruido de gran amplitud que se encuentran comúnmente en las aplicaciones de motores [11] y, en el caso de los codificadores de tipo mecánico, para eliminar el rebote de A y B para evitar errores de recuento debido a rebote de contacto mecánico .

Las interfaces basadas en hardware a menudo proporcionan filtros programables para las señales del codificador, que proporcionan una amplia gama de configuraciones de filtro y, por lo tanto, les permiten eliminar el rebote de los contactos o suprimir los transitorios que resultan del ruido o las señales que se mueven lentamente, según sea necesario. En las interfaces basadas en software, A y B normalmente se conectan a GPIO que se muestrean (mediante sondeo o interrupciones de borde) y se eliminan mediante software.

Decodificador de cuadratura

Un decodificador en cuadratura convierte las señales A y B de un codificador incremental en señales de habilitación de dirección y conteo , que se utilizan para controlar un contador progresivo / regresivo síncrono

Las interfaces de codificador incremental comúnmente usan un decodificador en cuadratura para convertir las señales A y B en la dirección y las señales de habilitación de conteo (habilitación de reloj) necesarias para controlar un contador síncrono bidireccional (conteo ascendente y descendente) .

Normalmente, un decodificador en cuadratura se implementa como una máquina de estados finitos (FSM) que muestrea simultáneamente las señales A y B y, por tanto, produce muestras "AB" amalgamadas. A medida que se adquiere cada nueva muestra AB, el FSM almacenará la muestra AB anterior para un análisis posterior. El FSM evalúa las diferencias entre los estados AB nuevos y anteriores y genera señales de habilitación de dirección y conteo según corresponda para la secuencia de estado AB detectada. [11]

Transiciones de estado

En dos muestras AB consecutivas cualesquiera, el nivel lógico de A o B puede cambiar o ambos niveles pueden permanecer sin cambios, pero en el funcionamiento normal A y B nunca cambiarán ambos. En este sentido, cada muestra AB es efectivamente un código Gray de dos bits .

  • Movimiento en dirección de avance

  • Movimiento en sentido inverso

  • Sin movimiento

  • Error

Transiciones normales

Cuando sólo A o B cambia de estado, se supone que el codificador se ha movido un incremento de su resolución de medición y, en consecuencia, el decodificador de cuadratura afirmará su salida de habilitación de recuento para permitir que cambien los recuentos. Dependiendo de la dirección de desplazamiento del codificador (adelante o atrás), el decodificador afirmará o negará su salida de dirección para hacer que los conteos aumenten o disminuyan (o viceversa).

Cuando ni A ni B cambian, se supone que el codificador no se ha movido y, por tanto, el decodificador en cuadratura niega su salida de habilitación de recuento , lo que hace que los recuentos permanezcan sin cambios.

Errores

Si los estados lógicos A y B cambian en muestras AB consecutivas, el decodificador en cuadratura no tiene forma de determinar cuántos incrementos o en qué dirección se ha movido el codificador. Esto puede suceder si la velocidad del codificador es demasiado rápida para que el decodificador la procese (es decir, la velocidad de los cambios de estado AB excede la frecuencia de muestreo del decodificador en cuadratura; consulte la velocidad de Nyquist ) o si la señal A o B es ruidosa .

En muchas aplicaciones de codificadores, este es un evento catastrófico porque el contador ya no proporciona una indicación precisa de la posición del codificador. En consecuencia, los decodificadores en cuadratura a menudo emitirán una señal de error adicional que se afirma cuando los estados A y B cambian simultáneamente. Debido a la gravedad y la naturaleza sensible al tiempo de esta condición, la señal de error a menudo se conecta a una solicitud de interrupción .

Multiplicador de reloj

Un decodificador de cuadratura no necesariamente permite que los conteos cambien para cada cambio de posición incremental. Cuando un decodificador detecta un cambio de posición incremental (debido a una transición de A o B , pero no de ambos), puede permitir que cambien los conteos o puede inhibir el conteo, dependiendo de la transición de estado AB y el multiplicador de reloj del decodificador .

El multiplicador de reloj de un decodificador en cuadratura se llama así porque da como resultado una tasa de conteo que es un múltiplo de la frecuencia de pulso A o B. Dependiendo del diseño del decodificador, el multiplicador de reloj puede estar cableado en el diseño o puede configurarse en tiempo de ejecución a través de señales de entrada.

El valor del multiplicador de reloj puede ser uno, dos o cuatro (normalmente designado "x1", "x2" y "x4", o "1x", "2x" y "4x"). [12] En el caso de un multiplicador x4, los conteos cambiarán por cada cambio de estado AB, lo que resultará en una tasa de conteo igual a cuatro veces la frecuencia A o B. Los multiplicadores x2 y x1 permiten que los recuentos cambien en algunos, pero no en todos los cambios de estado AB, como se muestra en la tabla de estado del decodificador en cuadratura anterior (nota: esta tabla muestra una de varias implementaciones posibles para los multiplicadores x2 y x1; otras implementaciones pueden habilitar contando en diferentes transiciones AB).

Informe de posición

Desde la perspectiva de una aplicación, el propósito fundamental de una interfaz de codificador incremental es reportar información de posición a pedido. Dependiendo de la aplicación, esto puede ser tan simple como permitir que la computadora lea el contador de posición en cualquier momento bajo el control del programa. En sistemas más complejos, el contador de posición puede ser muestreado y procesado por máquinas de estados intermedios, que a su vez hacen que las muestras estén disponibles para la computadora.

Registro de muestra

Una interfaz de codificador normalmente emplea un registro de muestra para facilitar el informe de posición. En el caso simple en el que la computadora exige información de posición bajo el control del programa, la interfaz muestreará el contador de posición (es decir, copiará los recuentos de posición actual en el registro de muestra) y luego la computadora leerá los recuentos del registro de muestra. Este mecanismo da como resultado una operación atómica y, por lo tanto, asegura la integridad de los datos de la muestra, que de otro modo podrían estar en riesgo (por ejemplo, si el tamaño de la palabra de la muestra excede el tamaño de la palabra de la computadora). [1]

Muestreo activado

En algunos casos, es posible que la computadora no pueda adquirir información de posición mediante programación (a través de E / S programadas ) con la precisión de sincronización adecuada. Por ejemplo, es posible que la computadora no pueda solicitar muestras en un programa periódico oportuno (por ejemplo, para la medición de la velocidad) debido a la variabilidad del tiempo del software. Además, en algunas aplicaciones es necesario solicitar muestras cuando se producen eventos externos, y es posible que la computadora no pueda hacerlo de manera oportuna. A velocidades y resoluciones de codificador más altas, pueden producirse errores de medición de posición incluso cuando se utilizan interrupciones para solicitar muestras, porque el codificador puede moverse entre el momento en que se señaliza la IRQ y el gestor de interrupciones emite la demanda de muestra.

Para superar esta limitación, es común que una interfaz de codificador incremental implemente un muestreo activado por hardware, lo que le permite muestrear el contador de posición en tiempos controlados con precisión según lo dictado por una señal de entrada de disparo. [1] Esto es importante cuando la posición debe muestrearse en momentos particulares o en respuesta a eventos físicos, y es esencial en aplicaciones como el control de movimiento multieje y CMM, en las que los contadores de posición de múltiples interfaces de codificador (uno por eje) deben ser muestreados simultáneamente.

En muchas aplicaciones, la computadora debe saber con precisión cuándo se adquirió cada muestra y, si la interfaz tiene múltiples entradas de activación, qué señal activó la adquisición de la muestra. Para satisfacer estos requisitos, la interfaz normalmente incluirá una marca de tiempo e información de activación en cada muestra.

Notificación de eventos

Los disparadores de muestreo suelen ser asincrónicos con respecto a la ejecución del software. En consecuencia, cuando se muestrea el contador de posición en respuesta a una señal de activación, se debe notificar a la computadora (generalmente mediante una interrupción ) que hay una muestra disponible. Esto permite que el software sea controlado por eventos (en lugar de sondeo ), lo que facilita el comportamiento receptivo del sistema y elimina la sobrecarga de sondeo.

Muestra FIFO

Los disparadores de muestreo consecutivos pueden ocurrir más rápido de lo que la computadora puede procesar las muestras resultantes. Cuando esto sucede, la información del registro de muestra se sobrescribirá antes de que la computadora pueda leerla, lo que provocará la pérdida de datos. Para evitar este problema, algunas interfaces de codificador incremental proporcionan un búfer FIFO para muestras. [1] A medida que se adquiere cada muestra, se almacena en el FIFO. Cuando la computadora demanda una muestra, se le permite leer la muestra más antigua en el FIFO.

  • Medios relacionados con codificadores incrementales en Wikimedia Commons

  1. ^ Lasseñales de salida A y B de un codificadorno indican la posición absoluta. Sin embargo, laseñal de índice , cuando está presente y afirmada, indica que el codificador está ubicado en su posición de referencia, que en algunas aplicaciones puede ser una posición absoluta.
  2. ^ En el contexto de los contadores digitales síncronos, "interferencia" es el acto de cambiar los conteos almacenados a un valor específico. El valor se aplica a las entradas de datos paralelas del contador y la entrada Load Enable (o equivalente) del contador se afirma para invocar el cambio de conteo. Durante esta operación, el conteo normal se desactiva momentáneamente.

  1. ^ a b c d e Sensoray. "Introducción a los codificadores incrementales" . Consultado el 18 de julio de 2018 .
  2. ^ a b c d e Craig, K. "Codificadores ópticos" (PDF) . Consultado el 25 de julio de 2018 .
  3. ^ a b c d "Los conceptos básicos de cómo funciona un codificador" (PDF) . Empresa de productos codificadores . Consultado el 23 de julio de 2018 .
  4. ^ "Conceptos básicos del codificador" (PDF) . ICS A / S.
  5. ^ a b c d e "Encoder Primer" (PDF) . Instalación del Telescopio Infrarrojo de la NASA (IRTF) . Instituto de Astronomía, Universidad de Hawaii . Consultado el 17 de agosto de 2018 .
  6. ^ "Tres pasos para especificar el tipo de salida del codificador correcto" . Productos codificadores . Consultado el 20 de agosto de 2018 .
  7. ^ Collins, Danielle. "¿Cómo se utilizan los codificadores para medir la velocidad?" . Mundo del diseño . Consultado el 22 de septiembre de 2020 .
  8. ^ Petrella, Roberto; Tursini, Marco; Peretti, Luca; Zigliotto, Mauro. "Algoritmos de medición de velocidad para unidades equipadas con codificador incremental de baja resolución: un análisis comparativo" (PDF) . Consultado el 22 de septiembre de 2020 .
  9. ^ Ginosar, Ran. "Metaestabilidad y sincronizadores: un tutorial" (PDF) . Instituto de Tecnología de Israel . Consultado el 21 de enero de 2020 .
  10. ^ Donohue, Ryan. "Sincronización en circuitos lógicos digitales" (PDF) . Universidad de Stanford . Consultado el 21 de enero de 2020 .
  11. ^ a b "Circuitos integrados de interfaz de contador / decodificador en cuadratura" (PDF) . Tecnologías Agilent . Consultado el 20 de agosto de 2018 .
  12. ^ "Error de codificador de direccionamiento" . Diseño de máquinas . Consultado el 20 de agosto de 2018 .