
Un codificador incremental es un dispositivo electromecánico lineal o rotativo que posee dos señales de salida , A y B , las cuales generan pulsos al moverse el dispositivo. [ 1 ] En conjunto, las señales A y B indican tanto la ocurrencia como la dirección del movimiento. Muchos codificadores incrementales cuentan con una señal de salida adicional, generalmente denominada índice [ 2 ] o Z , [ 3 ] que indica la posición del codificador en una posición de referencia específica. Asimismo, algunos codificadores proporcionan una señal de estado (generalmente denominada alarma ) [ 4 ] que indica fallas internas, como la falla de un rodamiento o el mal funcionamiento de un 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 y la dirección de movimiento correspondiente a cada cambio. Por lo tanto, para determinar la posición absoluta en un momento dado, 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 los incrementos de posición casi instantáneamente, lo que les permite monitorear los movimientos de mecanismos de alta velocidad prácticamente en tiempo real . Por ello, 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

Un codificador incremental genera sus señales de salida A y B mediante una técnica de codificación en cuadratura. Cuando el codificador se mueve a velocidad constante, las señales A y B son ondas cuadradas con una diferencia de fase de 90° entre ellas, lo que permite detectar tanto el movimiento como la dirección. [ 2 ]
En cualquier momento dado, la diferencia de fase entre las señales A y B será positiva o negativa dependiendo del sentido de giro del codificador. En el caso de un codificador rotatorio, la diferencia de fase es de +90° para la rotación en sentido horario y de -90° para la rotación en sentido antihorario, 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 ] Se emiten señales estáticas e invariables 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 de cuadratura leído por sensores alineados (diagrama de la izquierda) o mediante un patrón simple leído por sensores desfasados (diagrama de la derecha).
Codificador rotatorio, con los estados de señal A / B correspondientes mostrados a la derecha a medida que el eje invierte su sentido de giro.
Codificador lineal; los sensores A y B están desfasados 90° con respecto al patrón simple, y la señal del índice R indica que el codificador se encuentra 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, equivalentemente, el número de ciclos de onda cuadrada A (o B ) por unidad de desplazamiento. En el caso de los codificadores rotativos, 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 se especifica típicamente como el número de pulsos emitidos para una distancia de recorrido lineal particular (por ejemplo, 1000 pulsos por mm ).
Esto difiere de la resolución de medición, que se refiere al cambio de posición más pequeño que el codificador puede detectar. Cada flanco de señal en la salida A o B corresponde a un cambio de posición discreto. Dado que un ciclo completo de onda cuadrada en A (o B ) incluye cuatro flancos ( A ascendente , B ascendente, A descendente y B descendente) , la resolución de medición es una cuarta parte de la distancia representada por un ciclo completo. Por ejemplo, un codificador lineal con una resolución de 1000 pulsos por milímetro tiene una resolución por ciclo de 1 μm (1 mm / 1000 ciclos), lo que resulta en una resolución de medición de 250 nm (1 μm / 4).
Simetría y fase

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 un ancho exacto de 180° y un ciclo de trabajo del 50%), con una diferencia de fase de 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, el ancho de los pulsos nunca es exactamente de 180° y la diferencia de fase nunca es exactamente de 90°. Además, el ancho de los pulsos A y B varía 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 las especificaciones de "simetría" y "fase" (o "desfase"), respectivamente. Por ejemplo, en el caso de un codificador con una simetría especificada de 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 una fase especificada de 90° ±20°, la diferencia de fase en cada flanco A o B será de al menos 70° y no más de 110°.
Tipos de señales
Los codificadores incrementales emplean diversos tipos de circuitos electrónicos para controlar (transmitir) sus señales de salida, y los fabricantes suelen tener la posibilidad de construir un modelo de codificador específico con varios tipos de controladores. Entre los tipos de controladores más comunes se incluyen los de colector abierto, mecánicos, push-pull y diferenciales RS-422.
Coleccionista abierto

Los controladores de colector abierto (que utilizan un transistor NPN) o los controladores de drenaje abierto que utilizan un MOSFET de 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 , optoacopladores y transmisores de fibra óptica .
Dado que no puede suministrar corriente, la salida de un controlador de colector abierto debe conectarse a una tensión continua positiva mediante una resistencia de polarización . Algunos codificadores incorporan una resistencia interna para este fin; otros no, por lo que requieren una resistencia de polarización externa. En este último caso, la resistencia suele ubicarse cerca de la interfaz del codificador para mejorar la inmunidad al ruido.
La tensión de la señal lógica de alto nivel del codificador está determinada por la tensión aplicada a la resistencia de polarización ( V OH en el esquema), mientras que la corriente de salida de bajo nivel está determinada tanto por la tensión de la señal como por la resistencia de carga (incluida la resistencia de polarización). Cuando el controlador cambia del nivel lógico bajo al alto , la resistencia de carga y la capacitancia del circuito actúan conjuntamente 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 de conmutación máxima.
Mecánico
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 se conectan eléctricamente a tierra de señal cuando están cerrados, de modo que las salidas se "activan" a nivel bajo, lo que los convierte efectivamente en equivalentes mecánicos de 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 de salida máxima está limitada por los mismos factores que afectan a las salidas de colector abierto, y además 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 no sean prácticos para operaciones de alta frecuencia. Asimismo, los contactos sufren desgaste mecánico durante el funcionamiento normal, lo que limita la vida útil de estos dispositivos. Por otro lado, los codificadores mecánicos pueden ser relativamente económicos y carecen de electrónica activa interna. Estas características los convierten en una buena opción para controles manuales (por ejemplo, controles de volumen en equipos de audio y controles de voltaje en fuentes de alimentación de laboratorio ) y diversas aplicaciones de baja frecuencia y bajo consumo.
Empujar-tirar
Las salidas push-pull (por ejemplo, TTL ) se utilizan normalmente para la interfaz directa con circuitos lógicos. Son ideales para aplicaciones en las que el codificador y la interfaz se encuentran cerca (por ejemplo, interconectados mediante conductores de circuitos impresos o cables cortos apantallados) y se alimentan de 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 posición o, peor aún, dañar la interfaz del codificador.
Par diferencial

La señalización diferencial RS-422 se prefiere generalmente cuando el codificador generará altas frecuencias o estará ubicado lejos de la interfaz del codificador, [ 5 ] [ 6 ] o cuando las señales del codificador puedan estar sujetas a campos eléctricos o voltajes de modo común, [ 5 ] o cuando la interfaz deba poder detectar problemas de conectividad entre el codificador y la interfaz. Ejemplos de esto incluyen máquinas de medición por coordenadas (CMM) 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 utilizan 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 conforma 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 terminación simple. [ 5 ]
Aplicaciones principales
Seguimiento de posición
Los codificadores incrementales se utilizan habitualmente para monitorizar la posición física de dispositivos mecánicos. El codificador incremental se fija mecánicamente al dispositivo que se va a monitorizar, de modo que sus señales de salida cambian a medida que el dispositivo se mueve. Algunos ejemplos de dispositivos que los utilizan son las bolas de los ratones y trackballs mecánicos, los mandos de control de los equipos electrónicos y los ejes giratorios de las antenas de radar.
Los trackballs y los ratones electromecánicos de ordenador emplean dos codificadores rotativos incrementales para facilitar el seguimiento de la posición en dos ejes.
Los controles de los equipos electrónicos a menudo se implementan con una perilla conectada a un codificador mecánico (mostrado con la perilla desmontada).
En las antenas de radar marinas comerciales , normalmente se acopla un codificador incremental rotatorio al eje giratorio de la antena para monitorizar el ángulo de la antena.
La ubicación de un tractor de inspección de tuberías por vídeo se monitoriza normalmente mediante un codificador incremental rotatorio acoplado al carrete del cable del tractor.
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 ] Por consiguiente, para determinar la posición del codificador en un momento dado, es necesario proporcionar electrónica externa que registre dicha posición. Este circuito externo, conocido como interfaz de codificador incremental, registra la posición contando los cambios incrementales de posición.
Al recibir cada informe de cambio de posición incremental (indicado por una transición de la señal A o B ), una interfaz de codificador considera la relación de fase entre A y B y, según el signo de la diferencia de fase, realiza un conteo ascendente o descendente. El valor acumulado de "conteos" 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 erróneos que de otro modo resultarían de vibraciones o fluctuaciones mecánicas cerca de una transición de código AB.
Unidades de desplazamiento
A menudo, los conteos del codificador deben expresarse en unidades como metros, millas o revoluciones. En tales casos, los conteos se convierten a las unidades deseadas multiplicándolos por la relación del desplazamiento del codificador.por recuento:
- .
Normalmente, este cálculo lo realiza un ordenador 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 correlacionarse con una posición de referencia en el sistema mecánico al que está conectado. Esto se suele hacer calibrando el sistema, lo que consiste en mover el sistema mecánico (y el codificador) hasta que se alinee con una posición de referencia y, a continuación, introducir [ nota 2 ] los conteos de posición absoluta correspondientes en el contador de la interfaz del codificador.
En algunos sistemas mecánicos rotativos (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. Estos sistemas suelen emplear un codificador incremental rotativo con una señal de salida de índice (o Z ). La señal de índice se activa cuando el eje se encuentra en su orientación de referencia, lo que provoca que la interfaz del codificador registre 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 posicionamiento inicial por otros medios. Por ejemplo, un ordenador, al usar un ratón o un trackball , normalmente posiciona el dispositivo en el centro de la pantalla al arrancar y almacena los valores 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 se recupera normalmente de la memoria flash u otra memoria no volátil al encender el dispositivo y se almacena en el contador de posición; al apagarlo, el valor 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 codificadores incrementales se utilizan comúnmente para medir la velocidad de sistemas mecánicos. Esto puede hacerse con fines de monitorización, para proporcionar retroalimentación para el control de movimiento , o para ambos. [ 5 ] Entre sus aplicaciones más extendidas se incluyen el control de velocidad de rotación de antenas de radar y transportadores de material , así como el control de movimiento en robótica , máquinas de medición por coordenadas (CMM) y máquinas CNC .
Las interfaces de codificador incremental se centran principalmente en el seguimiento del desplazamiento mecánico y, por lo general, no miden la velocidad directamente. Por consiguiente, la velocidad debe medirse indirectamente calculando la derivada de la posición con respecto al tiempo. La señal de posición está intrínsecamente cuantificada , lo que plantea dificultades para calcular la derivada debido al error de cuantificación, especialmente a bajas velocidades.
La velocidad del codificador se puede determinar contando o midiendo el tiempo de los pulsos (o flancos) de salida del codificador. [ 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 la señal de posición se muestrea (una señal de tiempo discreto), los pulsos (o flancos de pulso) son detectados y contados por la interfaz, y la velocidad normalmente es calculada por 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 momentoy luego, en algún momento posteriorlee los recuentos de nuevo para obtenerLa velocidad media durante el intervaloaLuego se calcula: [ 2 ]
- .
El valor de velocidad resultante se expresa como conteos por unidad de tiempo (por ejemplo, conteos por segundo). Sin embargo, en la práctica, 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 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 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 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 se muestra arriba (recuentos / tiempo), aunque en este caso los tiempos de inicio y fin de la medición (y) se proporcionan mediante 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 temporal. Además, es más sensible a las imperfecciones del sensor, como errores de fase, errores de simetría y variaciones en las ubicaciones de transición respecto a sus valores nominales. [ 8 ]
Interfaz de codificador incremental

Una interfaz de codificador incremental es un circuito electrónico que recibe señales de un codificador incremental, procesa dichas 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, incluyendo como ASIC , como bloques IP dentro de FPGA , como interfaces periféricas dedicadas en microcontroladores o como software (a través de interrupciones o sondeo de 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 ocurra el siguiente. Al detectar un cambio de estado, incrementará o decrementará los contadores de posición según si A precede o sigue a B. Esto se suele lograr almacenando una copia del estado AB anterior y, al producirse 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 diversos tipos de circuitos electrónicos para recibir las señales generadas por el codificador. Estos receptores de línea actúan como búferes para proteger los circuitos de interfaz posteriores y, en muchos casos, también proporcionan funciones de acondicionamiento de señal.
De un solo extremo
Las interfaces de codificadores incrementales suelen emplear entradas de disparador Schmitt para recibir señales de codificadores con salidas de terminación simple (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 posteriores de niveles de señal lógica no válidos (y posiblemente destructivos).
Diferencial
Los receptores de línea RS-422 se utilizan habitualmente para recibir señales de codificadores con salidas diferenciales. Este tipo de receptor rechaza el ruido de modo común y convierte las señales diferenciales entrantes al formato de terminación simple que requieren los circuitos lógicos posteriores.
En sistemas críticos, puede ser necesaria una interfaz de codificador para detectar la pérdida de señales de entrada debido a la pérdida de alimentación del codificador, fallos en el controlador de señal, fallos en el cable o desconexión del mismo. Esto se suele lograr mediante receptores de línea RS-422 mejorados que detectan la ausencia de señales de entrada válidas e informan de esta condición mediante una salida de estado de "señal perdida". En funcionamiento normal, pueden aparecer fluctuaciones (pulsos breves) en las salidas de estado durante las transiciones de estado de entrada; normalmente, la interfaz del codificador filtra las señales de estado para evitar que estas fluctuaciones se interpreten erróneamente como señales perdidas. Dependiendo de 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 fallos.
Sincronización de relojes


Una interfaz de codificador incremental se compone principalmente de lógica secuencial controlada por una señal de reloj . Sin embargo, las señales de entrada del codificador son asíncronas con respecto al reloj de la interfaz, ya que su temporización está determinada únicamente por el movimiento del codificador. Por consiguiente, las señales de salida de los receptores de las líneas A y B (y también Z y alarma , si se utilizan) deben sincronizarse con el reloj de la interfaz, tanto para evitar errores debidos a la metaestabilidad como para forzar a las señales a entrar en el 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 biestables que se muestra aquí. A frecuencias de reloj muy altas, o cuando se necesita una tasa de error muy baja, los sincronizadores pueden incluir biestables 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. 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 las aplicaciones de motores [ 11 ] y, en el caso de los codificadores de tipo mecánico, para eliminar el rebote de A y B y 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, lo que ofrece una amplia gama de ajustes y permite eliminar el rebote de los contactos o suprimir los transitorios resultantes del ruido o de señales de variación lenta, 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 flanco) y se les aplica un filtrado de rebote por software.
decodificador de cuadratura

Las interfaces de codificador incremental suelen utilizar un decodificador de cuadratura para convertir las señales A y B en las señales de habilitación de dirección y conteo (habilitación de reloj) necesarias para controlar un contador síncrono bidireccional (de 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 , produciendo así muestras "AB" amalgamadas. A medida que se adquiere cada nueva muestra AB, la FSM almacena 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 a 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 simultáneamente. En este sentido, cada muestra AB es, en efecto, un código Gray de dos bits .
Movimiento en dirección hacia adelante
Movimiento en sentido inverso
Sin movimiento
Error
transiciones normales
Cuando solo A o B cambian de estado, se asume que el codificador se ha movido un incremento en su resolución de medición y, por lo tanto, 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 desactivará su salida de dirección para 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 anula 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 puede determinar cuántos incrementos ni en qué dirección se ha movido el codificador. Esto puede ocurrir si la velocidad del codificador es demasiado rápida para que el decodificador la procese (es decir, la frecuencia de cambios de estado AB supera la frecuencia de muestreo del decodificador de cuadratura; véase la frecuencia de Nyquist ) o si la señal A o B es ruidosa .
En muchas aplicaciones de codificadores, esto representa un evento catastrófico, ya que el contador deja de proporcionar una indicación precisa de la posición del codificador. Por consiguiente, los decodificadores de cuadratura suelen generar 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 crítica del tiempo de esta condición, la señal de error suele estar vinculada a una solicitud de interrupción .
multiplicador de reloj
Un decodificador de cuadratura no necesariamente permite que los conteos cambien con 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 de estado AB y del multiplicador de reloj del decodificador .
El multiplicador de reloj de un decodificador de cuadratura recibe este nombre porque produce una tasa de conteo que es un múltiplo de la frecuencia del pulso A o B. Dependiendo del diseño del decodificador, el multiplicador de reloj puede estar integrado en el circuito o puede configurarse en tiempo de ejecución mediante 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 resulta en 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 permitir 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 información de posición bajo demanda. 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 intermedias, que a su vez ponen las muestras a disposición de la computadora.
Registro de muestras
Una interfaz de codificador suele emplear un registro de muestreo para facilitar la notificación de la posición. En el caso sencillo en que el ordenador requiera información de posición bajo control programático, la interfaz muestreará el contador de posición (es decir, copiará los recuentos de posición actuales al registro de muestreo) y, a continuación, el ordenador leerá los recuentos de dicho registro. 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 verse comprometidos (por ejemplo, si el tamaño de palabra de la muestra excede el tamaño de palabra del ordenador). [ 1 ]
Muestreo activado
En algunos casos, es posible que el ordenador no pueda adquirir información de posición mediante programación (a través de E/S programadas ) con la precisión temporal adecuada. Por ejemplo, debido a la variabilidad temporal del software, es posible que el ordenador no pueda solicitar muestras periódicamente (por ejemplo, para la medición de velocidad). Asimismo, en algunas aplicaciones es necesario solicitar muestras ante la ocurrencia de eventos externos, y es posible que el ordenador 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, ya que 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 el 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 la posición debe muestrearse en momentos específicos o en respuesta a eventos físicos, y esencial en aplicaciones como el control de movimiento multieje y las máquinas de medición por coordenadas (CMM), en las que los contadores de posición de múltiples interfaces de codificador (una por eje) deben muestrearse simultáneamente.
En muchas aplicaciones, el ordenador debe saber con precisión cuándo se adquirió cada muestra y, si la interfaz dispone de múltiples entradas de activación, qué señal activó la adquisición de la muestra. Para cumplir con estos requisitos, la interfaz suele incluir una marca de tiempo e información de activación en cada muestra.
Notificación de evento
Los disparadores de muestreo suelen ser asíncronos con respecto a la ejecución del software. Por consiguiente, cuando se toma una muestra del contador de posición en respuesta a una señal de disparo, se debe notificar al ordenador (normalmente mediante una interrupción ) que hay una muestra disponible. Esto permite que el software funcione mediante eventos (en lugar de sondeo ), lo que facilita un comportamiento del sistema más ágil y elimina la sobrecarga del sondeo.
FIFO de muestra
Es posible que se produzcan muestreos consecutivos más rápido de lo que el ordenador puede procesar las muestras resultantes. En tal caso, la información del registro de muestras se sobrescribe antes de que el ordenador pueda leerla, lo que provoca la pérdida de datos. Para evitar este problema, algunas interfaces de codificador incremental disponen de un búfer FIFO para las muestras. [ 1 ] A medida que se adquiere cada muestra, se almacena en el FIFO. Cuando el ordenador solicita una muestra, puede leer la más antigua del FIFO.
Notas
- ↑ Las señales de salida A y B de un codificadorno indican la posición absoluta. La posición absoluta solo se conoce tras consultar la señal de índice o realizar el proceso de inicio. Sin embargo, cuando la señal de índice 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.
- ↑ En el contexto de los contadores digitales síncronos, el "bloqueo" consiste en modificar los valores almacenados a un valor específico. Este valor se aplica a las entradas de datos paralelas del contador y se activa la entrada de Habilitación de Carga (o equivalente) para invocar el cambio de valor. Durante esta operación, el conteo normal se desactiva momentáneamente.
Referencias
- 1 2 3 4 5 Sensoray. "Introducción a los codificadores incrementales" . Recuperado el 18 de julio de 2018 .
- 1 2 3 4 5 Craig, K. "Codificadores ópticos" (PDF) . Consultado el 25 de julio de 2018 .
- 1 2 3 "Conceptos básicos de cómo funciona un codificador" (PDF) . Encoder Products Company . Consultado el 23 de julio de 2018 .
- ↑ "Conceptos básicos del codificador" (PDF) . ICS A/S.
- 1 2 3 4 5 "Introducción al codificador" (PDF) . Instalación de Telescopios Infrarrojos de la NASA (IRTF) . Instituto de Astronomía, Universidad de Hawái . Consultado el 17 de agosto de 2018 .
- ↑ "3 pasos para especificar el tipo de salida del codificador correcto" . Productos de codificadores . Consultado el 20 de agosto de 2018 .
- ↑ Collins, Danielle. "¿Cómo se utilizan los codificadores para la medición de velocidad?" . Design World . Consultado el 22 de septiembre de 2020 .
- ↑ Petrella, Roberto; Tursini, Marco; Peretti, Luca; Zigliotto, Mauro. "Algoritmos de medición de velocidad para accionamientos equipados con codificadores incrementales de baja resolución: un análisis comparativo" (PDF) . Archivado del original (PDF) el 16 de abril de 2021. Consultado el 22 de septiembre de 2020 .
- ↑ Ginosar, Ran. "Metastability and Synchronizers: A Tutorial" (PDF) . Instituto Tecnológico de Israel . Consultado el 21 de enero de 2020 .
- ↑ Donohue, Ryan. "Sincronización en circuitos lógicos digitales" (PDF) . Universidad de Stanford . Consultado el 21 de enero de 2020 .
- 1 2 "Circuitos integrados de interfaz de decodificador/contador de cuadratura" (PDF) . Agilent Technologies . Consultado el 20 de agosto de 2018 .
- ↑ "Cómo solucionar el error del codificador" . Diseño de máquinas . Consultado el 20 de agosto de 2018 .
Enlaces externos
Contenido multimedia relacionado con los codificadores incrementales en Wikimedia Commons.
- sensores de posición
- sensores de velocidad