stringtranslate.com

Codificador incremental

Codificador incremental rotatorio con eje unido a su abertura pasante
Introducción a los codificadores incrementales, del script de VideoWiki Codificador incremental

Un codificador incremental es un dispositivo electromecánico lineal o rotatorio 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 í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 alarma ) [4] que indica condiciones de falla interna, como una falla de cojinete o un mal funcionamiento del sensor.

A diferencia de un codificador absoluto , un codificador incremental no indica la posición absoluta; [nota 1] solo informa los cambios de 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 un momento determinado, es necesario enviar las señales del codificador a una interfaz de codificador incremental , que a su vez "rastreará" y comunicará la posición absoluta del codificador.

Los codificadores incrementales informan los incrementos de posición casi instantáneamente, lo que les permite monitorear los movimientos de 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 del movimiento se indica mediante el signo de la diferencia de fase A - B que, en este caso, es negativa porque A va detrás de B.

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

En cualquier momento, la diferencia de fase entre las señales A y B será positiva o negativa según 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.


Señales A&B (reloj y datos) de un eje oscilante
Señales en cuadratura de un eje oscilante. Lea la dirección en el sentido de las agujas del reloj desde "Datos" en el flanco ascendente de la señal "Reloj". A medida que el eje cambia de dirección, se ralentiza y se invierte, lo que cambia el ancho y la fase del pulso.

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 e inmutables se emiten en A y B cuando el codificador está inmóvil. 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 desplazamiento lineal.

Dibujos conceptuales de mecanismos de detección de codificadores de cuadratura

Las salidas del codificador de cuadratura se pueden producir mediante un patrón de desplazamiento en cuadratura leído por sensores alineados (diagrama de la izquierda) o mediante un patrón simple leído por sensores de desplazamiento (diagrama de la derecha).


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 normalmente en términos de la cantidad de pulsos A (o B ) por unidad de desplazamiento o, equivalentemente, la cantidad 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 la cantidad de pulsos por revolución (PPR) o ciclos por revolución (CPR), [3] mientras que la resolución del codificador lineal se especifica normalmente como la cantidad de pulsos emitidos para una distancia de recorrido 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 borde 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 una cuarta parte 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

Al moverse a velocidad constante, un codificador incremental ideal generaría ondas cuadradas perfectas en A y B (es decir, los pulsos tendrían exactamente 180° de ancho y el ciclo de trabajo sería del 50%) con una diferencia de fase de exactamente 90° entre las señales A y B. Sin embargo, en los codificadores reales, debido a las imperfecciones del sensor y las variaciones de velocidad, los anchos de pulso nunca son exactamente de 180° y la diferencia de fase nunca es exactamente de 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 de pulso como la diferencia de fase variarán en un rango de valores.

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

Tipos de señales

Los codificadores incrementales emplean varios tipos de circuitos electrónicos para controlar (transmitir) sus señales de salida y los fabricantes suelen tener la capacidad de construir un modelo de codificador particular con cualquiera de los distintos tipos de controladores. Los tipos de controladores más comunes son el de colector abierto, el mecánico, el push-pull y el 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á incorporada, se requiere una resistencia externa.

Los controladores de colector abierto (que utilizan un transistor NPN o controladores de drenaje abierto que utilizan un MOSFET tipo n ) permiten el funcionamiento en un amplio rango de voltajes de señal y a menudo pueden absorber una corriente de salida significativa, lo que los hace útiles para controlar directamente bucles de corriente , optoaisladores y transmisores de fibra óptica .

Como no puede generar corriente, la salida de un controlador de colector abierto debe estar conectada 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, por lo que requieren una resistencia pull-up externa. En este último caso, la resistencia generalmente se ubica 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 ( VOH en el esquema), mientras que la corriente de salida de bajo nivel está determinada tanto por el voltaje de la señal como por la resistencia de carga (incluida la resistencia pull-up). 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 estira (aumenta) el tiempo de subida de la señal y, por lo tanto, limita su frecuencia de conmutación máxima.

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] Normalmente, los contactos están conectados eléctricamente a la tierra de la señal cuando están cerrados, de modo que las salidas se "controlarán" a un nivel bajo, lo que los convierte efectivamente en equivalentes mecánicos de los controladores de colector abierto y, por lo tanto, están sujetos a los mismos requisitos de acondicionamiento de señal (es decir, resistencia pull-up externa).

La frecuencia máxima de salida está limitada por los mismos factores que afectan a las salidas de colector abierto, y además limitada por el rebote de los contactos (que debe filtrarse) y por la velocidad de funcionamiento de los contactos mecánicos, lo que hace que estos dispositivos sean poco prácticos para el funcionamiento a alta frecuencia. Además, los contactos experimentan un desgaste mecánico en condiciones de funcionamiento normal, lo que limita la vida útil de estos dispositivos. Por otro lado, los codificadores mecánicos pueden ser relativamente económicos y no tener electrónica activa interna. Estos atributos hacen que los codificadores mecánicos sean una buena opción para los controles operados manualmente (por ejemplo, controles de volumen en equipos de audio y controles de voltaje en fuentes de alimentación de banco ) y una variedad de otras aplicaciones de baja frecuencia y servicio ligero.

Empujar y tirar

Las salidas push-pull (por ejemplo, TTL ) se utilizan normalmente para la interfaz directa con circuitos lógicos. Son adecuadas para aplicaciones en las que el codificador y la interfaz están ubicados uno cerca del otro (por ejemplo, interconectados mediante conductores de circuito impreso o tramos de cable cortos y blindados) y se alimentan desde una fuente de alimentación común, evitando así la exposición a campos eléctricos, bucles de tierra y efectos de línea de transmisión que podrían 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 RS-422 diferencial se prefiere generalmente cuando el codificador emitirá frecuencias altas 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. Algunos ejemplos de esto incluyen las máquinas CMM y CNC , la robótica industrial , la automatización de fábricas y las plataformas de movimiento utilizadas en simuladores de aeronaves y naves espaciales.

Cuando se utilizan 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 a lógica de un solo extremo. [5]

Principales aplicaciones

Seguimiento de posición

Los codificadores incrementales se utilizan habitualmente para supervisar las posiciones físicas de los dispositivos mecánicos. El codificador incremental se fija mecánicamente al dispositivo que se va a supervisar, de modo que sus señales de salida cambien a medida que el dispositivo se mueve. Algunos ejemplos de dispositivos son las bolas de los ratones y las bolas de seguimiento mecánicos de los ordenadores, las perillas de control de los equipos electrónicos y los ejes giratorios de las antenas de radar.

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

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, realizará un conteo ascendente o descendente. El valor de "conteo" acumulativo indica la distancia recorrida desde que comenzó el seguimiento. Este mecanismo garantiza un seguimiento de posición preciso en aplicaciones bidireccionales y, en aplicaciones unidireccionales, evita conteos falsos que de otro modo resultarían de la vibración o el traqueteo mecánico 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 multiplicándolos por la relación del desplazamiento del codificador por recuento :

.

Normalmente, este cálculo lo realiza una computadora que lee los conteos de la interfaz del codificador incremental. Por ejemplo, en el caso de un codificador incremental lineal que produce 8000 conteos 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 pueda rastrear e informar la posición absoluta, los conteos del codificador deben estar correlacionados con una posición de referencia en el sistema mecánico al que está conectado el codificador. Esto se hace comúnmente llevando el sistema a la posición inicial, lo 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] los conteos de posición absoluta asociados en el contador de la interfaz del codificador.

En algunos sistemas mecánicos se incorpora un sensor de proximidad para facilitar el retorno a la posición inicial, que emite una señal cuando el sistema mecánico se encuentra en su posición inicial (de referencia). En tales casos, el sistema mecánico se vuelve a la posición inicial moviéndolo hasta que la interfaz del codificador recibe la señal del sensor, momento en el que el valor de posición correspondiente se introduce en el contador de posición.

En algunos sistemas mecánicos rotatorios (por ejemplo, antenas de radar rotatorias), la "posición" de interés es el ángulo rotatorio relativo a una orientación de referencia. Estos sistemas suelen emplear un codificador incremental rotatorio que tiene una señal de salida de índice (o Z ). La señal de índice se activa 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 codificadores incrementales carecen de detectores de posición de referencia y, por lo tanto, deben implementar el retorno al origen por otros medios. Por ejemplo, una computadora, cuando utiliza un mouse o un dispositivo señalador con trackball, normalmente llevará el dispositivo al origen asumiendo una posición de pantalla inicial central al iniciarse y registrará 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 normalmente se recupera de la memoria flash u otra memoria no volátil al encenderse y se registra en el contador de posición, y al apagarse, el conteo de posición actual se guarda en la memoria no volátil para que sirva como posición inicial para el próximo encendido.

Medición de velocidad

Los transportadores mecánicos como este suelen utilizar codificadores incrementales rotativos como dispositivos de retroalimentación para el control de velocidad de circuito 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 rotación de antenas de radar y transportadores de material , y el control de movimiento en robótica , máquinas CMM y CNC .

Las interfaces de codificador incremental se ocupan principalmente del seguimiento del desplazamiento mecánico y, por lo general, no miden la velocidad directamente. 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á cuantificada de manera inherente , 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 un período, respectivamente, a partir de los cuales 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), la interfaz detecta y cuenta los pulsos (o los bordes de pulso), y la velocidad normalmente la calcula una computadora que tiene acceso de lectura a la interfaz. Para ello, la computadora lee los recuentos de posición de la interfaz en el momento y luego, en algún momento posterior, vuelve a leer los recuentos para obtener . Luego se calcula la velocidad promedio durante el intervalo hasta : [2]

.

El valor de velocidad resultante se expresa en conteos por unidad de tiempo (por ejemplo, conteos por segundo). Sin embargo, en la práctica, 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 conteos 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 rotatorio 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 será mayor a medida que aumente el período de muestreo. [2]

Por periodo

Como alternativa, se puede informar una medición de velocidad en cada pulso de salida del codificador midiendo el ancho o el 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 el que se muestra arriba (recuentos/tiempo), aunque en este caso los tiempos de inicio y de finalización 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 temporal. Además, es más sensible a las no idealidades del sensor, como errores de fase, errores de simetría y variaciones en las posiciones de transición con respecto a sus valores nominales. [8]

Interfaz de codificador incremental

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

Una interfaz de codificador incremental es un circuito electrónico que recibe señales de un codificador incremental, procesa las señales para producir 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 de diversas maneras, incluso como ASIC , como bloques IP dentro de FPGA , como interfaces periféricas dedicadas en microcontroladores o como software (a través de interrupciones o sondeos GPIO ).

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 se produzca el siguiente cambio de estado. Al detectar un cambio de estado, aumentará o disminuirá el recuento de posiciones en función de si A precede o sigue a B. Esto se hace normalmente 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 el codificador. Estos receptores de línea sirven como buffers para proteger los circuitos de interfaz descendentes y, en muchos casos, también proporcionan funciones de acondicionamiento de señales.

De un solo extremo

Las interfaces de codificador incremental suelen emplear entradas de disparador Schmitt para recibir señales de codificadores que tienen salidas de un solo extremo (por ejemplo, push-pull, colector abierto). Este tipo de receptor de línea rechaza inherentemente el ruido de bajo nivel (por medio de su histéresis de entrada) y protege los circuitos posteriores 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 en la forma de extremo único requerida por los circuitos lógicos posteriores.

En sistemas de misión crítica, puede ser necesaria una interfaz de codificador para detectar la pérdida de señales de entrada debido a una pérdida de potencia del codificador, una falla del controlador de señal, una falla del cable o una desconexión del cable. Esto se logra generalmente 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 el funcionamiento normal, pueden aparecer fallas (pulsos breves) en las salidas de estado durante las transiciones de estado de entrada; por lo general, la interfaz del codificador filtrará las señales de estado para evitar que estas fallas se interpreten erróneamente como señales perdidas. Según la interfaz, el procesamiento posterior puede incluir la generación de una solicitud de interrupción al detectar la pérdida de señal y el envío de 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 la entrada D ; la señal de salida D se envía al decodificador de cuadratura.
A frecuencias de reloj altas, los sincronizadores pueden utilizar tres (como este) o más flip-flops para reducir la tasa de errores de bits.

Una interfaz de codificador incremental consiste principalmente en lógica secuencial que está sincronizada por una señal de reloj . Sin embargo, las señales entrantes del codificador son asincrónicas con respecto al reloj de la interfaz porque su sincronizació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 alarm , si se utilizan) deben estar sincronizadas con el reloj de la interfaz, tanto para evitar errores debidos a la metaestabilidad como para forzar las señales al dominio del reloj del decodificador de cuadratura. [9]

Normalmente, esta sincronización se realiza mediante sincronizadores independientes de una sola señal, como el sincronizador de dos flip-flops 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 bits 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 de ruido breves y de gran amplitud que se encuentran comúnmente en aplicaciones de motores [11] y, en el caso de codificadores de tipo mecánico, para eliminar el rebote de A y B a fin de evitar errores de conteo debido al rebote del contacto mecánico .

Las interfaces basadas en hardware suelen proporcionar filtros programables para las señales del codificador, que ofrecen una amplia gama de configuraciones de filtro y, por lo tanto, les permiten eliminar el rebote de contactos o suprimir transitorios resultantes del ruido o señales que se mueven lentamente, según sea necesario. En las interfaces basadas en software, A y B suelen estar conectados a GPIO que se muestrean (a través de sondeo o interrupciones de borde) y se eliminan los rebotes mediante software.

Decodificador de cuadratura

Un decodificador de 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 ascendente/descendente sincrónico.

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

Por lo general, un decodificador de cuadratura se implementa como una máquina de estados finitos (FSM) que muestrea simultáneamente las señales A y B y, por lo tanto, produce muestras "AB" amalgamadas. A medida que se adquiere cada nueva muestra AB, la FSM almacenará la muestra AB anterior para su posterior análisis. La 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 estados AB detectada. [11]

Transiciones de estado

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

Transiciones normales

Cuando solo A o B cambian 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 activará su salida de habilitación de conteo para permitir que los conteos cambien. Dependiendo de la dirección de desplazamiento del codificador (hacia adelante o hacia atrás), el decodificador activará 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 lo tanto, el decodificador de cuadratura niega su salida de habilitación de conteo , lo que provoca que los conteos permanezcan sin cambios.

Errores

Si los estados lógicos A y B cambian en muestras AB consecutivas, el decodificador de 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 tasa de cambios de estado AB excede la tasa de muestreo del decodificador de cuadratura; consulte la tasa de Nyquist ) o si la señal A o B es ruidosa .

En muchas aplicaciones de codificadores, esto 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 de cuadratura a menudo emitirán una señal de error adicional que se activa 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 está relacionada con una solicitud de interrupción .

Multiplicador de reloj

Un decodificador en 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 a ambas), puede permitir que los conteos cambien o puede inhibir el conteo, dependiendo de la transición de estado AB y del 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 integrado en el diseño o puede ser configurable 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 designados como "x1", "x2" y "x4", o "1x", "2x" y "4x"). [12] En el caso de un multiplicador x4, los conteos cambiarán para cada cambio de estado AB, lo que da como resultado una tasa de conteo igual a cuatro veces la frecuencia A o B. Los multiplicadores x2 y x1 permiten que los conteos cambien en algunos, pero no en todos los cambios de estado AB, como se muestra en la tabla de estados del decodificador de cuadratura anterior (nota: esta tabla muestra una de varias implementaciones posibles para los multiplicadores x2 y x1; otras implementaciones pueden habilitar el conteo 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 informar la posición a pedido. Según 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 estado intermedias, que a su vez ponen las muestras a disposición de 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 solicita 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 actuales al 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, garantiza la integridad de los datos de muestra, que de lo contrario podrían estar en riesgo (por ejemplo, si el tamaño de palabra de la muestra excede el tamaño de palabra de la computadora). [1]

Muestreo activado

En algunos casos, el ordenador puede no ser capaz de adquirir de forma programática (a través de E/S programadas ) información de posición con la precisión de tiempo adecuada. Por ejemplo, el ordenador puede no ser capaz de solicitar muestras en un cronograma periódico oportuno (por ejemplo, para la medición de velocidad) debido a la variabilidad de tiempo del software. Además, en algunas aplicaciones es necesario solicitar muestras cuando se producen eventos externos, y el ordenador puede no ser capaz de 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ñala la IRQ y el momento en que el controlador de interrupciones emite la solicitud 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 momentos controlados con precisión según lo dicta una señal de entrada de activación. [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 los que los contadores de posición de múltiples interfaces de codificador (uno por eje) deben muestrearse 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 generalmente 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 disparo, se debe notificar a la computadora (normalmente mediante una interrupción ) que hay una muestra disponible. Esto permite que el software esté controlado por eventos (en lugar de ser sondeado ), lo que facilita el comportamiento receptivo del sistema y elimina la sobrecarga del 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 en el registro de muestras se sobrescribirá antes de que la computadora pueda leerla, lo que resultará en 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 solicita una muestra, se le permite leer la muestra más antigua en el FIFO.

Notas

  1. ^ Las señales de salida A y B de un codificador no indican una posición absoluta. Sin embargo, la señal de índice , cuando está presente y activa, indica que el codificador se encuentra en su posición de referencia, que en algunas aplicaciones puede ser una posición absoluta.
  2. ^ En el contexto de los contadores digitales sincrónicos, "bloqueo" 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 se activa la entrada de habilitación de carga (o equivalente) del contador para invocar el cambio de conteos. Durante esta operación, el conteo normal se desactiva momentáneamente.

Referencias

  1. ^ abcde Sensoray. "Introducción a los codificadores incrementales" . Consultado el 18 de julio de 2018 .
  2. ^ abcde Craig, K. "Codificadores ópticos" (PDF) . Consultado el 25 de julio de 2018 .
  3. ^ abcd "Los conceptos básicos de cómo funciona un codificador" (PDF) . Encoder Products Company . Consultado el 23 de julio de 2018 .
  4. ^ "Conceptos básicos del codificador" (PDF) . ICS A/S.
  5. ^ abcde "Encoder Primer" (PDF) . NASA Infrared Telescope Facility (IRTF) . Instituto de Astronomía, Universidad de Hawái . Consultado el 17 de agosto de 2018 .
  6. ^ "3 pasos para especificar el tipo de salida de codificador correcto". Productos de codificador . Consultado el 20 de agosto de 2018 .
  7. ^ Collins, Danielle. "¿Cómo se utilizan los codificadores para medir la velocidad?". Design World . Consultado el 22 de septiembre de 2020 .
  8. ^ Petrella, Roberto; Tursini, Marco; Peretti, Luca; Zigliotto, Mauro. "Algoritmos de medición de velocidad para variadores equipados con codificadores incrementales de baja resolución: un análisis comparativo" (PDF) . Archivado desde el original (PDF) el 16 de abril de 2021 . Consultado el 22 de septiembre de 2020 .
  9. ^ Ginosar, Ran. "Metastabilidad y sincronizadores: un tutorial" (PDF) . Instituto Tecnológico 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. ^ ab "Quadrature Decoder/Counter Interface ICs" (PDF) . Agilent Technologies . Consultado el 20 de agosto de 2018 .
  12. ^ "Error de codificación de direcciones". Diseño de máquinas . Consultado el 20 de agosto de 2018 .

Enlaces externos