13 votos

¿Qué ventajas obtienen los codificadores absolutos al emplear la transmisión en código Gray en lugar del código binario?

He leído sobre el Código gris Pero en la práctica no entiendo cuál es la ventaja de esto sobre el código binario.

Algunos fabricantes de codificadores absolutos ofrecen ambos tipos, por lo que hay que decidir antes de comprar uno. Yo, por ejemplo, necesito medir el ángulo de rotación de una varilla que gira muy lentamente y muchos tomos fijos. ¿En qué circunstancias o aplicaciones tiene ventaja la salida de código gris?

0 votos

Intenta fabricar un sensor y vuelve a consultarnos.

43voto

Spehro Pefhany Puntos 90994

Imagina que el codificador es un codificador de 12 bits situado justo en la transición de escala media entre 0x7FF y 0x800. Si el funcionamiento interno del codificador consisten en algo así como una rueda de códigos con 12 fotodiodos independientes, los 12 bits tendrían que cambiar a la vez, para un movimiento insignificante. Dado que hay tolerancias mecánicas En este caso, algunos de los trozos cambiarían antes que otros y habría mucha confusión en ese ángulo en particular. El mismo problema existe en todas las demás posiciones en las que cambia más de un bit a la vez.

El uso de un código Gray para la rueda de códigos elimina por completo ese problema, siempre que las tolerancias no superen una fracción de un LSB, ya que sólo cambia un bit a la vez, y en el peor de los casos su movimiento insignificante produce un cambio igual a la resolución del codificador.

Los codificadores modernos de alta resolución pueden utilizar otros métodos (como una cámara muy rápida que lee una tira codificada) y se encargan de realizar un muestreo adecuado para que siempre se obtenga un resultado que tenga sentido.

0 votos

Tengo un codificador binario barato y cuando está súper quieto siempre hay una o dos fluctuaciones de bits. ¿Puede ser esto un ejemplo de la desventaja del binario?

5 votos

Parece más bien un inconveniente de un codificador barato.

0 votos

Sólo para estar seguros, perdón si me repito, ¿podemos decir entonces que el código gris sólo tiene ventaja sobre el binario si el eje del codificador está en movimiento?

20voto

GSerg Puntos 33571

En el código Gray, la transición entre dos valores adyacentes sólo cambia un bit. Esto es una gran ventaja en cualquier tipo de codificador mecánico u óptico, porque es prácticamente imposible que puedas hacer que dos o más bits cambien de estado exactamente al mismo tiempo en cualquier circunstancia.

Esto es aún más importante si vas a muestra los datos, por ejemplo, capturándolos en un registro. Existe la posibilidad de que los datos cambien al mismo tiempo que el registro, lo que provoca una metaestabilidad en los bits que cambian. En el código Gray, dado que sólo cambia un bit a la vez, la ambigüedad está entre dos valores adyacentes y el error absoluto se limita a ±1 cuenta.

Es fácil traducir de Gray a binario, y si un codificador ofrece una salida binaria, lo más probable es que simplemente esté haciendo la traducción por ti.

0 votos

No entiendo por qué el error es menor en el código gris. Supongamos que el codificador no se mueve y se queda quieto enviando la información del ángulo bit a bit, ¿puede decirme cómo en ese caso el código gris transmite una señal más estable?

0 votos

La diferencia entre los códigos no es importante en la transmisión en serie. Las cuestiones de las que hablo en mi respuesta ya se han solucionado. En ese punto, es simplemente una cuestión de preferencia. Si el resto del sistema ya está configurado para tratar con el código Gray, entonces tiene sentido seleccionar ese tipo de sensor. De lo contrario, el binario podría ser más directamente útil.

0 votos

@Dave Tweed "Existe la posibilidad de que los datos cambien al mismo tiempo que el registro, lo que provoca metaestabilidad en los bits que cambian". ¿Qué quieres decir con eso? ¿Por qué cambiaría la salida binaria del codificador parado? Tengo un codificador binario y los últimos bits siempre fluctúan, tal vez sea eso lo que mencionas. ¿Podría explicar un poco más por qué los datos cambiarían aunque el codificador esté súper quieto (sin moverse)?

10voto

MozenRath Puntos 118

Has mencionado que ves que el valor fluctúa en 1. Supongamos por ahora que esto se debe a limitaciones físicas en la medición.

Para un código binario, podrías tener mala suerte en algunas situaciones. Digamos que se detiene casi exactamente en la transición entre los valores 15 y 16 (en binario, 01111 y 10000). Así que está cambiando entre los dos valores. Sin embargo, los bits no pueden cambiar todos en exactamente al mismo tiempo, por diversas razones (mecánicas/ópticas/eléctricas). Se puede hacer que el tiempo en que conmutan esté muy cerca, pero a veces el siguiente circuito obtendrá un valor con sólo algunos de los bits de cada valor. Esto es como elegir al azar un valor de bits para cada bit . Por ejemplo, podría leer 01001, o un valor de 9. Esto no es ni siquiera cerca de los valores deseados de 15 o 16.

En cambio, si se utiliza un código Gray, sólo cambiará un bit entre el 15 y el 16. No sé de antemano cuáles serían, pero para el ejemplo tome los dos valores codificados en Gray como 01011 (15) y 11011 (16). Ahora, para cada bit, elige al azar entre las dos opciones, y verás que las únicas posibilidades son los dos valores deseados.

0 votos

Esta respuesta describe muy bien la ventaja específica de Gray sobre el binario (no "pasar" por el 9 cuando se pasa del 15 al 16). Yo añadiría que no se trata sólo de "parar" en un punto intermedio, sino que la electrónica que lee tu codificador podría medirlo y registrarlo en cualquier momento, por lo que tu flujo de datos acaba teniendo picos si utilizas un patrón de codificación binario.

4voto

Noel Puntos 41

Como se ha mencionado anteriormente, los códigos grises sólo permiten cambiar un único bit (que puede ser o no el LSb) a la vez. Esto evita los fallos de valor con múltiples bits que cambian al mismo tiempo; especialmente con la lógica combinatoria. Esto fue realmente importante hace muchos años cuando empecé a diseñar sistemas de control de movimiento y de detección que eran más rápidos que las CPUs que teníamos disponibles. Gran parte de los algoritmos se implementaban en hardware con lógica discreta y, si teníamos suerte, con PLAs (PALs, GALs, FPGAs primitivos o FPLAs). Otra ventaja es que la diafonía y el ruido de línea se reducen considerablemente.

Siempre existirá la posibilidad de que se produzcan fluctuaciones. Si un codificador se detiene justo en el borde de una transición entre dos puntos estables, un solo bit puede rebotar entre un 0 y un 1. La causa puede ser algo tan simple como la vibración de un motor en marcha que realiza una función que no tiene nada que ver con el codificador. Cuanto mayor sea la resolución del codificador, más probable es que esto ocurra. Es la naturaleza de la bestia. Un buen ejemplo sería un motor paso a paso con 200 pasos por revolución utilizando un codificador de 10 bits. Los pasos del motor y los pasos del codificador nunca, nunca se alinearán exactamente.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X