stringtranslate.com

Codificador incremental

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

Un codificador incremental es un dispositivo electromecánico lineal o giratorio 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, generalmente 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 denominada alarma ) [4] que indica condiciones de falla interna, como una falla en el rodamiento 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 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 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 usan comúnmente en aplicaciones que requieren medición y control precisos de la posición y la velocidad .

Salidas en cuadratura

Dos ondas cuadradas en cuadratura. La dirección del movimiento está indicada por el signo de la diferencia de fase A - B que, en este caso, es negativa porque A sigue a B.

Un codificador incremental emplea un codificador de cuadratura para generar sus señales de salida A y B. Los pulsos emitidos por 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 un momento determinado, 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 rotación en el sentido de las agujas del reloj y de −90° para rotación en sentido antihorario, o viceversa, dependiendo del 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 desacelera y retrocede, cambiando los anchos 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] En A y B se emiten señales estáticas e invariables 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 mecanismos de detección de codificadores de cuadratura.

Las salidas del codificador de cuadratura se pueden producir mediante un patrón de compensación de cuadratura leído por sensores alineados (diagrama de la izquierda) o mediante un patrón simple leído por sensores de compensación (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 generalmente se especifica 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 flancos de señal ( A ascendente , B ascendente , A descendente y B descendente ), la resolución de medición del codificador equivale a un cuarto del desplazamiento representado por un ciclo de salida completo de A o B. . 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 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 A y señales B. Sin embargo, en los codificadores reales, debido a imperfecciones del sensor y variaciones de velocidad, 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 flanco 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 en particular, los rangos de ancho de pulso y diferencia de fase se definen mediante especificaciones de "simetría" y "fase" (o "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 será de 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á de al menos 70° y no más de 110°.

Tipos de señal

Los codificadores incrementales emplean varios tipos de circuitos electrónicos para controlar (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á integrada en algunos codificadores; si no está integrado, 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 una amplia gama 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 fibra. transmisores ópticos .

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 fin; otros no lo hacen y, por lo tanto, requieren una resistencia pull-up externa. En el último caso, la resistencia normalmente 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 ( V OH 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 (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 extiende (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 rotativo 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 tierra de señal cuando están cerrados, de modo que las salidas se "controlarán" a nivel bajo, lo que los convierte efectivamente en equivalentes mecánicos de los controladores de colector abierto y, por lo tanto, sujetos a los mismos requisitos de acondicionamiento de señal (es decir, pull-up externo). resistor).

La frecuencia máxima de salida está limitada por los mismos factores que afectan las salidas de colector abierto, y además está limitada por el rebote de los contactos (que debe filtrarse) y por la velocidad de operación de los contactos mecánicos, lo que hace que estos dispositivos no sean prácticos para operaciones de alta frecuencia. Además, los contactos experimentan un desgaste mecánico en 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 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 bajo rendimiento.

Empujar tirar

Las salidas push-pull (por ejemplo, TTL ) normalmente se utilizan para la interfaz directa con los circuitos lógicos. Estos son muy adecuados para aplicaciones en las que el codificador y la interfaz están ubicados cerca uno del otro (por ejemplo, interconectados mediante conductores de circuito impreso o cables cortos 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 en la 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

Generalmente se prefiere la señalización diferencial RS-422 cuando el codificador emitirá 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 CMM y maquinaria CNC , robótica industrial , automatización de fábricas y plataformas de movimiento utilizadas en simuladores de aviones 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 comúnmente utilizadas 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]

Aplicaciones principales

Seguimiento de posición

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

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 particular, es necesario proporcionar una electrónica externa que "siga" 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, dependiendo del signo de la diferencia de fase, contará hacia arriba o hacia abajo. abajo. El valor acumulativo de "recuentos" 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 recuentos falsos que de otro modo resultarían de vibraciones o oscilaciones 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 recuento :

.

Normalmente, este cálculo lo realiza una computadora que lee los recuentos desde 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 comúnmente se hace guiando el 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 contando en el contador de la interfaz del codificador.

Algunos sistemas mecánicos incorporan un sensor de proximidad para facilitar la localización, que emite una señal cuando el sistema mecánico está en su posición de "inicio" (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 introduce 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 giratorio 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 localización por otros medios. Por ejemplo, una computadora, cuando usa un mouse o un dispositivo señalador con bola de seguimiento, normalmente ubicará el dispositivo en una posición inicial central en la pantalla al arrancar y colocará los conteos correspondientes en los contadores de posición X e Y. En el caso de 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 inserta en el contador de posición, y al apagarse. el recuento de la posición actual se guarda en la memoria no volátil para que sirva como posición inicial para el siguiente encendido.

Medición de velocidad

Los transportadores mecánicos como este suelen utilizar codificadores incrementales giratorios 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 la rotación de la antena de radar y los transportadores de material , y el control de movimiento en máquinas robóticas , CMM y CNC .

Las interfaces de codificador incremental se ocupan principalmente del seguimiento del desplazamiento mecánico y, por lo general, 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á inherentemente 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 (o flancos) de salida del codificador. [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), la interfaz detecta y cuenta los pulsos (o flancos de pulso), y la velocidad generalmente la calcula una computadora que tiene acceso de lectura a la interfaz. Para hacer esto, la computadora lee los conteos de posición desde la interfaz en ese momento y luego, en algún momento posterior, lee los conteos nuevamente para obtener . A continuación se calcula la velocidad media durante el intervalo a : [2]

.

El valor de velocidad resultante se expresa como cuentas por unidad de tiempo (por ejemplo, cuentas por segundo). En la práctica, sin embargo, suele ser 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 rotatorio que produce 4096 cuentas 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

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 (cuentas/tiempo), aunque en este caso los tiempos de inicio y fin de la medición ( y ) vienen proporcionados por una referencia de tiempo.

Esta técnica evita el error de cuantificación de 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 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 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 pone la información resultante a disposición de 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 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 suficiente frecuencia para detectar cada cambio de estado AB antes de que ocurra el siguiente cambio de estado. Al detectar un cambio de estado, incrementará o disminuirá los recuentos de posición en función de si A va delante o detrás de B. Esto normalmente se hace almacenando una copia del estado AB anterior y, tras el cambio 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 normalmente emplean 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 (mediante su histéresis de entrada) y protege los circuitos descendentes de niveles de señales lógicas no válidas (y posiblemente destructivas).

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 requerida por los circuitos lógicos posteriores.

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 una 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 una 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 del reloj

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

Una interfaz de codificador incremental consiste en gran medida en lógica secuencial controlada 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 forzar las señales al dominio del reloj del decodificador en cuadratura. [9]

Normalmente, esta sincronización se realiza mediante sincronizadores independientes de señal única, 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 ruidos de bajo nivel y 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 evitar rebotes en A y B para evitar errores de conteo debidos 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 evitar contactos o suprimir transitorios resultantes del ruido o señales que giran lentamente, según sea necesario. En las interfaces basadas en software, A y B generalmente están conectados a GPIO que se muestrean (mediante sondeo o interrupciones de borde) y se eliminan 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 síncrono.

Las interfaces de codificador incremental comúnmente usan un decodificador de cuadratura para convertir las señales A y B en la dirección y 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 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 de AB, el FSM almacenará la muestra de AB anterior para su posterior análisis. 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 sea apropiado para la secuencia de estados 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 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 afirmará 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 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 lo tanto, el decodificador en cuadratura niega su salida de habilitación de conteo , lo que hace 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 Tasa de Nyquist ) o si la señal A o B tiene ruido .

En muchas aplicaciones de codificador, 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 generará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 urgente de esta condición, la señal de error a menudo está conectada a una solicitud de interrupción .

Multiplicador de reloj

Un decodificador de cuadratura no necesariamente permite que los conteos cambien por 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 los conteos cambien o puede inhibir el conteo, dependiendo de la transición del estado AB y del multiplicador de reloj del decodificador .

El multiplicador de reloj de un decodificador de cuadratura se llama así porque da como resultado una velocidad de conteo que es 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 denominado "x1", "x2" y "x4", o "1x", "2x" y "4x"). [12] En el caso de un multiplicador x4, los recuentos cambiarán por cada cambio de estado AB, lo que dará como resultado una tasa de recuento 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 contando en diferentes transiciones AB).

Informes de posición

Desde la perspectiva de una aplicación, el propósito fundamental de una interfaz de codificador incremental es informar 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 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 exige información de posición bajo el control del programa, la interfaz tomará una muestra del contador de posición (es decir, copiará los conteos de posición actuales al registro de muestra) y luego la computadora leerá los conteos 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 la muestra, que de otro modo 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, es posible que la computadora no pueda adquirir información de posición mediante programación (a través de E/S programadas ) con una precisión de sincronización adecuada. Por ejemplo, es posible que la computadora no pueda solicitar muestras en un cronograma periódico oportuno (por ejemplo, para medir la velocidad) debido a la variabilidad de la sincronización del software. Además, en algunas aplicaciones es necesario solicitar muestras cuando ocurren eventos externos y es posible que la computadora no pueda hacerlo de manera oportuna. A velocidades y resoluciones más altas del codificador, pueden ocurrir errores de medición de posición incluso cuando se usan interrupciones para exigir muestras, porque el codificador puede moverse entre el momento en que se señala la IRQ y el controlador 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 momentos controlados con precisión según lo dictado por una señal de entrada de disparo. [1] Esto es importante cuando se debe muestrear la posición en momentos particulares o en respuesta a eventos físicos, y esencial en aplicaciones como 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 desencadenó 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 activadores 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 interrupción ) que hay una muestra disponible. Esto permite que el software esté controlado por eventos (en lugar de sondeado ), lo que facilita el comportamiento receptivo del sistema y elimina la sobrecarga de sondeo.

Ejemplo de FIFO

Los activadores 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 exige 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 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 recuentos 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.

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 "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. ^ abcde "Introducción al codificador" (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 de 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, corrió. "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 Stanford . Consultado el 21 de enero de 2020 .
  11. ^ ab "CI de interfaz de contador/decodificador de cuadratura" (PDF) . Tecnologías Agilent . Consultado el 20 de agosto de 2018 .
  12. ^ "Abordar el error del codificador". Diseno de la maquina . Consultado el 20 de agosto de 2018 .

enlaces externos