Teoría encoders rotativos (vol#3)

por el 28 de marzo del 2017 en Detección Blog

CODIGOS BINARIOS

Los Encoders de valor Absoluto trabajan en Sistema Binario (números escritos con una combinación de “1s” y “0s”.
La información de la posición en la que están la suministran con unos de los siguientes Códigos Binarios:

  • Binario puro
  • BCD
  • Gray
  • Gray Exceso

Vamos a ver cada uno de estos Códigos:

Código Binario Puro:

Es un sistema de numeración igual que el decimal pero en Base 2. Esta formado por una sucesión de “1s” y “0s”.
Veamos como se obtiene el número binario de un número decimal:

Supongamos que queremos convertir el número decimal 75 a binario: Dividiremos el número 75 por 2 y el cociente lo volveremos a dividir por 2. Procederemos así sucesivamente hasta que el cociente sea “0”. Entonces, el número binario está compuesto por la sucesión de “1s” y “0s” que se han obtenido como resto de cada operación.

Veamos el proceso:

conversor-decimal-binario

Hay que tener en cuenta que el resto de la primera división es el dígito de menor peso de la expresión binaria (el primer dígito de la derecha) y así sucesivamente hasta el último resto, que será el dígito de mayor peso del número binario (el primer dígito de la izquierda).

Veamos, ahora, el proceso contrario. Vamos a convertir un número binario a su expresión en el sistema decimal. La fórmula que hay que aplicar es la siguiente:

conversor-binario-decimal

En donde:       D =  Número en decimal
Bn = Bits de número en binario ( coeficiente de la potencia de 2 )
n   =  Número de bits

Supongamos que tenemos el siguiente número binario:  00110111 .Vamos a convertirlo en decimal:

conversor-decimal-binario1

 

Código BCD (Decimal Codificado en binario):

En este Código se representa en Binario puro cada cifra del número decimal. Es decir con 4 bits se codifica cada cifra independientemente del resto de cifras.

La forma más clara de verlo es con un ejemplo:

Tenemos el número en decimal 358, su representación en BCD es la siguiente:

bcd1

Así pues, los cuatro primeros bits de la derecha son la unidades; los cuatro segundos bits son las decenas y los cuatro últimos bits son las centenas.

Por lo tanto, para escribir en BCD un número de 3 cifras (en decimal) se necesitan 12 bits. Si el número en decimal tiene 5 cifras, se necesitaran 20 bits, Etc. Etc.

 

Código Gray

Este sistema de codificación no corresponde con una representación matemática real de los números. Se trata de una combinación de “1s” y “0s” que son las posibles combinaciones que puede adoptar una variable.

Partiendo de un número de bits determinado, se realizan las combinaciones de acuerdo a las normas de Gray.

La principal característica de este código es que dos números consecutivos, cualquiera que sean, se diferencian solo en un bit (tienen distancia «1»).

Además, es un código cíclico. Es decir, el primer número y el último también son adyacentes,  es decir, solo se diferencian en un bit.

Hasta ahora parece un poco complejo, pero vamos a insistir en la explicación para tratar de aclararlo totalmente.

A continuación viene una tabla con la confección, en código Gray, de los números del 0 al 31 usando hasta 5 bits:

codigo_gray1

Como se puede apreciar en la tabla anterior, el código Gray es simétrico con respecto a la línea discontínua, en todos sus bits, excepto en el de la izquierda (Gn). En este último bit los de arriba de la línea discontinua son “0” y los de abajo son “1”.

Vamos a ver como se ha ido formando dicha tabla:

Como con un bit solo se tiene dos posibilidades (vale “0” ó vale “1”) podemos codificar el Nº 0 y el Nº 1. Para poder codificar del Nº 0 al Nº 3 necesitamos dos bits. Según la regla de Gray se procede de la siguiente manera:

codigo_gray2

 

Para poder codificar desde el Nº 0 al Nº 7 se necesitan 3 bits y se procede igual que en el paso anterior:

 

codigo_gray3

 

De esta forma se procede sucesivamente añadiendo cada vez un bit más.

Como el Código Gray no es una expresión matemática de los números, siempre hay que convertir las lecturas que da el Encoder en este código a binario puro para poder realizar las operaciones matemáticas que sean necesarias para la aplicación donde esté trabajando dicho Encoder.

Para realizar la conversión hay que aplicar la formula siguiente para calcular el valor de cada bit:

Bit (n) = Bit (n+1)  XOR  G(n)

En donde:

Bit(n) es el bit enésimo en Binario
Bit(n+1) es el bit siguiente
G(n) es el bit enésimo en Gray
XOR es la operación lógica que se realiza entre los bits.

NOTA: La operación XOR es una puerta lógica de dos entradas que suministra un “1” a la salida, solo, cuando las dos entradas son distintas. Si las dos entradas son iguales (tanto “1” como “0”) se tiene a la salida un “0”. El esquema es el siguiente:

 

xor1

 

También se puede encontrar el siguiente esquema:

 

xor2

 

A continuación vamos a aplicar esta función para convertir un número en Código Gray a Binario Puro:

 

xor3

 

Veamos este mismo esquema con un ejemplo. Vamos a convertir la expresión del Nº 4 en código Gray (0110) a código Binario (0100):

 

xor4

NOTA: La entrada Nº2 de la puerta Xor del Bit más significativo (M.S.B.) debe estar fija a nivel lógico “0”.

 

Código Gray Exceso

El código Gray, visto en el apartado anterior, es un sistema de codificación en el que la distancia entre dos números consecutivos es 1 (esto quiere decir que solo se diferencian en un bit). Lo que significa que para pasar de un número al siguiente solo cambia un bit.

Además, es un código cíclico porque la distancia entre la última lectura y la primera es 1.

Veamos un ejemplo:

Con 4 bits se puede codificar los números del 0 a 15. Las expresiones en código Gray de ambos son: 0= 0000 y 15= 1000

Como vemos, solo se diferencian en el bit de más peso (izquierdo). Para pasar de 15 a 0 solo hay que poner a 0 dicho bit. Por lo tanto la distancia es uno y además es cíclico pues del último número se pasa al primero cambiando, tan solo, un bit.

Cuando el disco que lleva el encoder es un múltiplo binario exacto (256, 512, 1024, 4096 ó 8192) ocurre como hemos explicado.

Pero cuando la aplicación donde se quiere usar el encoder no es un múltiplo exacto, por ejemplo 360 pasos (control de posición angular), no se puede poner un disco de 360 lecturas en código Gray pues no sería un disco cíclico ya que la distancia entre la posición 359 y 0 no es igual a 1, como podemos ver a continuación:

codigo_gray4

 

La diferencia entre los dos números es más de un bit, luego la distancia no es 1 y no podemos pasar del 359 a 0 cambiando solo un bit.

Para resolver este inconveniente se ideó el Código Gray-Exceso. Este código es tambien un código Gray, pero desplazado un número determinado de pasos: E

 

codigo_gray5

Vamos a calcular este desplazamiento, E, y comprobaremos si se cumplen las dos condiciones imprescindibles de Distancia 1 y  de ser Cíclico.

La fórmula a aplicar es:

codigo_gray6

 

Con un ejemplo lo veremos más claro:

Supongamos que queremos calcular el factor E para un rango de medición de 360 º. En este caso el parámetro “n” es:

n = 9

por lo tanto

2 9 = 512  (512>360)

El factor R es 360, por lo tanto podemos calcular E:codigo_gray7

Así pues, el desplazamiento para este caso es 76. Por lo tanto el rango de medida será desde 76 hasta 435 (que son 360 divisiones; igual que de 0 a 359).

 

El receptor de la señal del Encoder (que llevará el disco Gray – Exceso 76 de 360 divisiones) tendrá que restar 76 a cada lectura que haga para saber la lectura correcta.

 

 

 

Lo sentimos, no hay comentarios todavía.


DEJA UN COMENTARIO

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

© Contaval 2020 Todos los derechos reservados.

Multicolor Red Green Yellow Blue Violet