Los no ponderados se aplican en casos concretos donde no resulta adecuado el binario. Resuelven situaciones muy variadas, como pueda ser la detección de errores en la transmisión de datos, saber si se envía o no se envía un dato, evitan errores de interpretación y otras funciones. De todos los posibles solo veremos una pequeña muestra.
SISTEMA HEXADECIMAL.
La base es 16 y las cifras son 0 1 2 3 4 5 6 7 8 9 A B C D E y F. La conversión a binario consiste simplemente en traducir cada cifra hexadecimal a 4 cifras binarias, por ejemplo 716 = 01112. Cuando la cifra es una letra hay que tener en cuenta que la A corresponde al 10 en decimal, la B al 11 y así sucesivamente, por ejemplo D16 = 11012. Por lo tanto, el valor 7D16 = 011111012 que se ha formado juntando los dos grupos de 4 cifras binarias que corresponden a cada cifra hexadecimal.
El paso de binario a hexadecimal es la operación inversa: Comenzando por la derecha, de divide el valor binario en grupos de 4 cifras y cada grupo se traduce a la cifra correspondiente hexadecimal. Por ejemplo, 11011112 = 6F16. El grupo 1111 es 15 en decimal y se corresponde con la F. El grupo 110 solo tiene 3 cifras, lo que no es problema sabiendo que es lo mismo que 0110 (el 0 de la izquierda no tiene significado).
Una forma de traducir entre decimal y hexadecimal puede ser traduciendo a binario como paso previo, pero las reglas generales de conversión también son aplicables. Por ejemplo A4816 será 10·256 + 4·16 + 8·1 = 263210. Un ejemplo inverso puede ser el valor 12410, que se puede pasar a hexadecimal dividiendo entre 16 las veces que sea posible: 124 entre 16 es 7 y el resto es 12. Como 7 ya es menor que 16 no habrá más divisiones. El valor será entonces el último cociente (7) y los restos de derecha a izquierda (solo el 12). Como el 12 se representa con la letra C, resulta que 12410 será igual a 7C16.
SISTEMA OCTAL.
La base es 8 y sus cifras van del 0 al 7. La conversión a binario y biceversa se hace de la misma forma vista en el hexadecimal, con la única diferencia de que los grupos de cifras binarias se cogen de 3 cifras y no de 4. La conversión entre octal y decimal ya se ha visto en el apartado más general de sistema ponderados.
SISTEMA BCD Y CÓDIGO DE PARIDAD DE BIT
El BCD no es ponderado y se utiliza frecuentemente en transmisión de datos. Por ejemplo, es típico para enviar datos a visualizadores digitales sencillos. Consiste en traducir cada cifra de un valor decimal en 4 cifras binarias, luego se trata de una conversión idéntica a la descrita para convertir entre binario y hexadecimal, excepto en que aquí la cifra más alta es el 9 (no hay letras) y los ceros a la izquierda sí tienen sentido, ya que los datos se transmiten siempre de 4 en 4. Por ejemplo, 10910 será 0001 0000 1001 en BCD.
El código de paridad de bit no es un sistema de numeración, se trata simplemente de una cifra binaria (bit de paridad) que se añade a un dato destinado a ser transmitido entre dos dispositivos. Tanto el emisor como el receptor del dato tendrán el mismo criterio de paridad, que puede ser par o impar. El bit de paridad se selecciona de forma que el número total de unos (del dato y bit de paridad incluídos) sea par o impar, según el criterio. Cuando el receptor recibe los bits, solo tiene que contar el número de unos y si no coincide con el criterio de paridad significa que hay algún error y tomará una decisión en consecuencia.
Vamos a ver la detección de errores con un ejemplo en BCD al transmitir el valor 19 con paridad par: 19 = 0001 1001. Al primer grupo habrá que añadir un uno para que haya 2 (par) y al segundo grupo habrá que añadir un cero puesto que ya existen dos unos (par). Los datos a transmitir serán entonces 00011 10010. Suponiendo que en la transmisión se altera la información, el receptor podría encontrarse, por ejemplo, con 00011 10110 y detectaría error en el segundo grupo por encontrar 3 unos (impar).
La causa de errores en las transmisiones de información puede ser debida a una distancia excesiva del canal de comunicación, que origina una caída de tensión de forma que un nivel alto se puede llegar a interpretar como bajo. También son causa de errores los llamados parásitos (señales perturbadoras en la alimentación que han sido poco filtradas) y los efectos electromagnéticos de máquinas eléctricas (los hilos de señal no deben juntarse con hilos de alimentación ni estar demasiado próximos a las bobinas de máquinas). Dependiendo de las exigencias, el canal de comunicación debe tener unas determinadas características y estar más o menos protegido. Son canales de comunicación estándar el RS232 y el RS485, el primero es típico de conexiones en distancias menores de 15 metros, el segundo ofrece una protección mucho mayor porque los cables están apantallados (protección de malla metálica que los recubre y que se conecta a tierra). Otro aspecto en las comunicaciones es el protocolo, que viene a ser un conjunto de reglas estrictas que cumple tanto el emisor como el receptor, de lo contrario la transmisión no es posible (los impulsos enviados en serie forman códigos cuyo significado depende del protocolo).
En la actualidad, la comunicación en serie es tan rápida que permite comunicar por dos hilos múltiples dispositivos, eliminando infinidad de conexiones y reduciendo enormemente las dificultades de comunicación. Las conexiones de múltiples hilos enviando información en paralelo han sido suplantadas en la mayor parte por comunicación en serie. Otra forma de enviar información es mediante señales analógicas, pero no tiene nada que ver con información digital. Es una forma frecuente de transmitir valores variables entre sensores y dispositivos reguladores y de control de procesos. Estos dispositivos tienen conversores analógico-digitales que actúan como traductores (interfaces) entre componentes analógicos y digitales. Los canales analógicos son especialmente sensibles a perturbaciones externas y los cables están apantallados.
CÓDIGO GRAY
Numerosos sensores son de tipo analógico porque transmiten una señal eléctrica variable y dependiente de la magnitud que miden. Sin embargo, hay magnitudes que pueden ser medidas con procedimientos puramente digitales, eliminando conversores analógico-digitales aunque añadiendo generalmente un dispositivo electrónico que interpreta la información. Un ejemplo puede ser con medida de caudales de fluidos, consistente en una hélice que gira más deprisa cuanto mayor sea el caudal. Un sensor detecta el paso de las palas de la hélice y transmite impulsos que son contados por una tarjeta electrónica que a su vez envía el valor de la cuenta al controlador digital. Por programa se puede calcular el caudal sabiendo que será proporcional al número de impulsos recibidos en un tiempo determinado.
Otro ejemplo similar puede ser la medida de desplazamientos y velocidades, también basado en los impulsos que transmite un componente ligado al movimiento. Estos componentes tienen apariencia de pequeños motores y se denominan encoders, algunos de los cuales llegan a transmitir más de 1000 impulsos por vuelta de su eje y la resolución de medida puede ser muy alta, aunque depende de la relación de transmisión con la que se acople al movimiento (en máquinas de control numérico se fijan posiciones con precisión de centésimas o incluso milésimas de milímetro).
Un ejemplo más simple es la medida absoluta de posición, bien mediante una regla codificada o un disco, según se trate de medida lineal o angular. La regla o disco está dividido en una serie de pistas con zonas claras y oscuras y unos fotodiodos detectan el cambio de zona y transmiten señales binarias. Cada combinación de las señales corresponde a una posición, por lo que no es necesario contar impulsos para conocer el desplazamiento (por esta razón se demominan absolutos, mientras que los descritos en el párrafo anterior son incrementales). Como inconveniente está su baja resolución.
Una regla o un disco absoluto no puede ser codificado en binario porque hay muchos casos en los que al pasar de una combinación de señales a la siguiente cambia de estado más de una señal. Aunque las separaciones sean muy precisas siempre se detectará primero uno de los cambios, originando una combinación intermedia que no se corresponderá con la posición a medir. Por ejemplo, al pasar de 011 (3 en decimal) a 100 (4 en decimal) cambiarán las tres señales y será impredecible el orden en el que aparecerán las combinaciones intermedias, que no deberían detectarse.
En la siguente figura se puede comprobar que en código Gray solo hay un cambio de señal cada vez que se pasa de una combinación a la siguiente. Este código también se denomina reflex porque se obtiene reflejando las combinaciones como si fueran vistas con un espejo (lineas de trazos): Para una sola señal, las combinaciones son 0 y 1. Una vez reflejado se añadirá una nueva columna a la izquierda en la que la mitad superior serán ceros y la inferior unos. Continuando con este proceso se llegará al número de señales que sean necesarias.
En la imagen anterior también se indica cómo se puede traducir un valor decimal (6 en el ejemplo) directamente a código Gray (resultado 101): Se comienza pasando a binario el valor decimal sin olvidar que hace falta al menos un cero a la izquierda. Luego se agrupan de dos en dos como indica la figura y se tiene en cuenta que si las dos cifras son iguales corresponde un cero en código Gray y si son distintas corresponde un uno. Para pasar un valor en código Gray a decimal seguimos exactamente el proceso inverso: Cada cifra la dividimos en dos hacia arriba y comenzamos el valor binario con un cero. Si la cifra en Gray es un uno, las dos cifras binarias deben ser distintas y como una ya es conocida porque siempre se comienza con un cero, se deduce la otra. Si la cifra en Gray es un cero, las dos binarias serán iguales. Una vez obtenido el equivalente binario solo faltará pasarlo a decimal.