2_FUNCIONAMIENTO_SCANBARCODE

15
Lector y Decodificador de Código de Barras Sistemas de Lectura y Cuantificación El código de barras es un sistema que consta, generalmente, de una serie de líneas y espacios paralelos de diferente grosor. Puede servir para identificar los productos, llevar un control exacto del inventario, operaciones de carga y descarga de mercaderías, agilizar las ventas, y en todo aquello que involucre recolección y manipulación de datos. Los datos almacenados pueden ser captados de manera rápida y precisa. Incluso, se pueden incorporar sistemas automáticos de captura de datos para controlar los movimientos de las mercancías enviadas o recibidas. Este sistema proporciona un método simple y fácil para codificar la información tanto numérica como de texto, que puede ser leída por lectores electrónicos. Existen varias formas de implementar sistemas de lectura, captación, decodificación y cuantificación del elemento leído, ya sea mediante la utilización de códigos normalizados o propios. En este artículo veremos cómo se define un código de barras, qué elementos se emplean para leerlos, cuáles son las interfases usuales y qué tipo de software es recomendado para cada aplicación. También proponemos la implementación de un “lápiz lector” experimental, daremos una aplicación con PIC y describiremos un decodificador de código de barras multipropósito. Introducción El Código de Barras es un arreglo en paralelo de barras y espacios que contiene información codificada en las barras y espacios del símbolo. Esta información puede ser leída por dispositivos ópticos, los cuales envían la información leída hacia una computadora como si la información se hubiera tecleado. Los sistemas que utilizan código de barras se conocen como Sistemas de Identificación Automática (Auto ID). Se describen, a continuación, los principales equipos y accesorios requeridos por estos sistemas. Algunas de sus ventajas sobre otros procedimientos de colección de datos son: Se imprime a bajos costos. Permite porcentajes muy bajos de error. Los equipos de lectura e impresión de código de barras son flexibles y fáciles de conectar e instalar. Se puede decir que el código de barras es una excelente tecnología para implementar un sistema de colección de datos mediante identificación automática, y presenta muchos beneficios, entre otros. La lectura es inmediata. Se mejora la exactitud de los datos. Se tienen costos fijos de labor más bajos. Se puede tener un mejor control de calidad, ofreciendo mejor servicio al cliente. Es posible codificar en categorías a la información. Las aplicaciones del código de barras cubren prácticamente cualquier tipo de actividad humana, tanto en industria, comercio, instituciones educativas, instituciones médicas, gobierno, etc. Control de material en proceso. Control de inventario. Control de tiempo y asistencia. Implementación de sistemas de punto de venta. Control de calidad. Control de inventario. Embarques y recibos. Control de documentos. Facturación. Bibliotecas. Bancos de sangre. Hospitales. Control de acceso. Control de tiempo y asistencia. Simbologías Un símbolo de código de barras es la impresión física de un código de barras. Una Simbología es la forma en que se codifica la información en las barras y espacios del símbolo de código de barras.

Transcript of 2_FUNCIONAMIENTO_SCANBARCODE

Page 1: 2_FUNCIONAMIENTO_SCANBARCODE

Lector y Decodificador de Código de Barras

Sistemas de Lectura y Cuantificación

El código de barras es un sistema que consta, generalmente, de una serie de líneas y espacios paralelos de diferente grosor. Puede servir para identificar los productos, llevar un control exacto del inventario, operaciones de carga y descarga de mercaderías, agilizar las ventas, y en todo aquello que involucre recolección y manipulación de datos. Los datos almacenados pueden ser captados de manera rápida y precisa. Incluso, se pueden incorporar sistemas automáticos de captura de datos para controlar los movimientos de las mercancías enviadas o recibidas. Este sistema proporciona un método simple y fácil para codificar la información tanto numérica como de texto, que puede ser leída por lectores electrónicos. Existen varias formas de implementar sistemas de lectura, captación, decodificación y cuantificación del elemento leído, ya sea mediante la utilización de códigos normalizados o propios. En este artículo veremos cómo se define un código de barras, qué elementos se emplean para leerlos, cuáles son las interfases usuales y qué tipo de software es recomendado para cada aplicación. También proponemos la implementación de un “lápiz lector” experimental, daremos una aplicación con PIC y describiremos un decodificador de código de barras multipropósito.

Introducción

El Código de Barras es un arreglo en paralelo de barras y espacios que contiene información codificada en las barras y espacios del símbolo. Esta información puede ser leída por dispositivos ópticos, los cuales envían la información leída hacia una computadora como si la información se hubiera tecleado.Los sistemas que utilizan código de barras se conocen como Sistemas de Identificación Automática (Auto ID). Se describen, a continuación, los principales equipos y accesorios requeridos por estos sistemas.

Algunas de sus ventajas sobre otros procedimientos de colección de datos son:

Se imprime a bajos costos.

Permite porcentajes muy bajos de error.

Los equipos de lectura e impresión de código de barras son flexibles y fáciles de conectar e instalar.

Se puede decir que el código de barras es una excelente tecnología para implementar un sistema de colección de datos mediante identificación automática, y presenta muchos beneficios, entre otros.

La lectura es inmediata.

Se mejora la exactitud de los datos.

Se tienen costos fijos de labor más bajos.

Se puede tener un mejor control de calidad, ofreciendo mejor servicio al cliente.

Es posible codificar en categorías a la información.

Las aplicaciones del código de barras cubren prácticamente cualquier tipo de actividad humana, tanto en industria, comercio, instituciones educativas, instituciones médicas, gobierno, etc.

Control de material en proceso.Control de inventario.Control de tiempo y asistencia.Implementación de sistemas de punto de venta.Control de calidad.Control de inventario.Embarques y recibos.Control de documentos.Facturación.Bibliotecas.Bancos de sangre.Hospitales.Control de acceso.Control de tiempo y asistencia.

Simbologías

Un símbolo de código de barras es la impresión física de un código de barras. Una Simbología es la forma en que se codifica la información en las barras y espacios del símbolo de código de barras. Existen diferentes simbologías para diferentes aplicaciones, cada una de ellas con diferentes características. Las principales características que definen una simbología de código de barras son las siguientes:

Numéricas o alfanuméricas.De longitud fija o de longitud variable.Discretas o continuas.Número de anchos de elementos.Autoverificación.

Las simbologías más usadas generan códigos como los mostrados en la figura 1 y son:

Page 2: 2_FUNCIONAMIENTO_SCANBARCODE

EAN/UPCEs un código empleado en comercio que se caracteriza por ser detallista, autoverificable, numérico y de longitud fija.

Código 39Es un código industrial, alfanumérico, de 44 caracteres.

CodabarSe emplea en bancos de sangre, bibliotecas, etc.

I 2/5Es un código numérico que suele emplearse en aerolíneas.

Código 93Complementa al código 39 y es alfanumérico

Código 128Es también un código industrial, alfanumérico, de 128 caracteres ASCII.

Simbologías bidimensionalesSe emplean en sistemas de control de documentos y se caracterizan por ser de alta densidad, figura 2.

Características de un Código de BarrasUn símbolo de código de barras puede tener, a su vez, varias características, entre las cuales podemos nombrar (figura 3):

Densidad: Es la anchura del elemento (barra o espacio) más angosto dentro del símbolo de código de barras. Está dado en mils (milésimas de pulgada). Un código de barras no se mide por su longitud física sino por su densidad. WNR: (Wide to Narrow Ratio)Es la razón del grosor del elemento más angosto contra el más ancho. Usualmente es 1:3 o 1:2.

Quiet ZoneEs el área blanca al principio y al final de un símbolo de código de barras. Esta área es necesaria para una lectura conveniente del símbolo.

Cómo se Elabora un Código de Barras

Como vimos, existe una gran variedad de opciones a la hora de codificar la información utilizando códigos de barras. También podemos adoptar nuestro propio sistema de codificación, por ejemplo para poder “clasificar” personas en función de algunos rasgos o características: Por ejemplo, por medio de palabras digitales podremos realizar nuestra codificación de acuerdo con las siguientes consignas:

Sexo: asignamos el valor 2 para varones y el valor 3 para mujeres utilizando dos dígitos binarios.Edad: utilizamos 5 dígitos binarios para definir edades entre 15 y 46 años.Peso: utilizamos 7 dígitos binarios para definir pesos entre 30 y 93 kilogramos.Altura: Empleamos 8 dígitos para establecer la altura en cm. Dígito de control: se emplean 4 dígitos binarios.

Para calcular el dígito de control se procederá de la siguiente manera:

Se multiplican por 1 las posiciones impares de las características personales y por 3 las posiciones pares comenzando por la derecha. Se suman los valores resultantes:

2+3+6+18+8+3+7+18 = 65

Se resta de la decena inmediatamente superior el valor de la suma resultante:

70 - 65 = 5 5 será, pues, el dígito de control. Si la suma fuese un número acabado en cero, el dígito de control será 10.

Así, por ejemplo, a un chico de 16 años que pese 68 kg y mida 176 cm le corresponderá dígito de control, calculado según lo establecido en la tabla 1. Tan solo queda por convertir a dígitos binarios el valor de las características personales y luego confeccionar “las barras”:

Sexo: 2 = 10 Edad:16 = 10000 Peso: 68 = 1000100 Altura: 176 = 10110000 Dígito de control: 5 = 0101 (recuerda que utilizamos 4 dígitos).

Finalmente, se asignará el color negro al valor binario 1 y el blanco al valor cero. En este caso se obtendrá el código de barras de la figura 4.

Escáner o Lector de Código de Barras

El lector proyecta un rayo de luz en movimiento sobre el código, atravesándolo de extremo a extremo. Se analizan los patrones de luz reflejada, para transformarlos en datos que pueda interpretar una computadora.Dicho de otra manera, por medio de un láser lee un código de barras y emite el número que muestra el código de barras, no la imagen (figura 5).Existen escáner de mano y también fijos, como los que se utilizan en las cajas de los supermercados. Se los puede conectar de varias formas, tales como: USB, puerto serie, WiFi,

Page 3: 2_FUNCIONAMIENTO_SCANBARCODE

bluetooth e, incluso, directamente al puerto del teclado por medio de un adaptador. Cuando se pasa un código de barras por el escáner es como si se hubiese escrito en el teclado el número del código de barras.Un escáner para lectura de códigos de barras básico consiste en el escáner propiamente dicho, un decodificador y un cable que actúa como interfaz entre el decodificador y el terminal o la computadora.El escaner lee el símbolo del código de barras y proporciona una salida eléctrica a la computadora, correspondiente a las barras y espacios del código de barras. El decodificador es el que reconoce la simbología del código de barras, analiza el contenido del código de barras leído y transmite dichos datos a la computadora en un formato de datos tradicional. O sea, es tanto o más importante el decodificador que el lector, razón por la cual, más adelante, explicaremos cómo construir un decodificador.Un escáner puede tener el decodificador incorporado en el mango o puede tratarse de un escáner sin decodificador que requiere una caja separada, llamada interfaz o emulador. Los escáneres sin decodificador también se utilizan cuando se establecen conexiones con escáneres portátiles tipo “batch” (por lotes) y el proceso de decodificación se realiza mediante el Terminal propiamente dicho.Los códigos de barras se leen pasando un pequeño punto de luz sobre el símbolo del código de barras impreso. Usted sólo ve una fina línea roja emitida desde el escáner láser. Pero lo que sucede es que las barras oscuras absorben la fuente de luz del escáner y la misma se refleja en los espacios luminosos. Un dispositivo del escáner toma la luz reflejada y la convierte en una señal eléctrica.El láser comienza a leer el código de barras en un espacio blanco (la zona fija) antes de la primera barra y continúa pasando hasta la última línea, para finalizar en el espacio blanco que sigue a ésta. Debido a que el código no se puede leer si se pasa el escáner fuera de la zona del símbolo, las alturas de las barras se eligen de manera tal de permitir que la zona de lectura se mantenga dentro del área del código de barras. Mientras más larga sea la información a codificar, más largo será el código de barras necesario. A medida que la longitud se incrementa, también lo hace la altura de las barras y los espacios a leer.Si quisiéramos hacer una clasificación, entonces, deberíamos decir que existen cuatro tipos principales de lectores:Lápiz óptico.Láser de pistola. CCD (Charge Coupled Device). Láser omnidireccional.

Tanto los lectores láser, como los CCD y los omnidireccionales se configuran leyendo comandos de programación impresos en menúes de códigos de barras. Hay algunos que se configuran con interruptores pequeños, o enviándoles los comandos de programación a través de una línea serial. También sirven como lectores manuales.

Lectores Comerciales

Los lectores tipo pluma. Consiste de una fuente de luz y un fotodiodo colocados uno cerca del otro en la punta de una pluma o varilla (figura 6). Para leer un código de barras se pasa la punta de la pluma a través de todas las barras con una acción firme. El fotodiodo mide la intensidad de la luz reflejada atrás de la fuente de luz y genera una forma de onda que es usada para medir los anchos de las banda y los espacios en el código de barras. Las barras oscuras en el código absorben la luz y las blancas la reflejan, así que el voltaje generado por el foto diodo es un duplicado exacto del patrón de barras y espacios en el código. Esta forma de onda es decodificada por un escáner en manera similar a como se hace con el código Morse a través de un código de puntos y rayas.

Los lectores láser. Funcionan de la misma manera que un lector tipo pluma excepto que usan un rayo láser como fuente de luz y por lo regular emplean un espejo reflector o un prisma que digitaliza el rayo láser de atrás hacia delante a través del código (figura 7). De la misma manera que el lector tipo pluma usa un fotodiodo también se usa para medir la intensidad de la luz reflejada de la parte de atrás del código. En ambos casos de lectores, la luz emitida por el lector es turnada a una frecuencia especifica y el foto diodo es diseñado para detectar solamente la misma frecuencia de luz. La resolución del escáner se mide por el tamaño del punto de luz emitida por el lector. El punto de luz debe ser igual o ligeramente más pequeña que el elemento más angosto (dimensión en “x”). Si el punto es mayor que el ancho de la barra más angosta, entonces no podrá sobreponer dos o más barras al mismo tiempo, lo cual provocará que el escáner no sea capaz de distinguir claramente la transición entre barras y espacios. Si el punto es demasiado pequeño, entonces cada mancha o hueco será malinterpretado como áreas de luz, lo cual hará que el código de barras no pueda ser leído.

Lectores portátiles tipo batch. Almacenan la información en memoria para actualizarla en la computadora varias veces. Un lector portátil tipo batch contiene un escáner, una pantalla LCD para agilizar al usuario a mejorar una tarea e incluso se pueden agregar variables de teclado como cantidades, por ejemplo (figura 8). Se debe contar con una cuna para actualizar la información a la computadora. Los escáners portátiles tipo batch son ideales cuando la movilidad es una factor a considerar y cuando la información recolectada no es inmediatamente necesaria.

Lectores portátiles inalámbricos. Cuando se requiere recolectar información en un lugar remoto y se necesita contar con la información inmediatamente, una solución inalámbrica es la ideal para este tipo de requerimiento (figura 9). Un escáner inalámbrico está incluido dentro de una terminal, y actualiza la información hacia la computadora al mismo tiempo que es digitalizado, instantánea y precisamente.

Interfases para Lectores de Códigos de Barras

Todas las aplicaciones pueden aceptar la salida que produce un lector de código de barras, siempre y cuando se posea el equipo necesario. Los lectores de códigos de barras se encuentran con distintas interfaces de conexión a la PC. Existen modelos de lectores que tienen solamente una interfaz integrada, pero hay algunos de ellos que aceptan varias interfaces. Basta con un simple cambio de cables y una reconfiguración para utilizar una interfaz u otra.Interfaz de teclado . En este caso el lector se conecta a una computadora a través de un puerto llamado interfase de teclado. Cuando un código de barras es digitalizado, la información es transmitida a través de éste al tiempo que fue capturada en el teclado. Algunas veces se les refiere como lectores con emulación de teclado porque físicamente hay una emulación entre el teclado y la computadora que contiene un segundo teclado. Otra gran ventaja de la emulación de teclado es que la lectura de código de barras puede ser agregada sin que haya cambios en el software; el software piensa que recibe la información como si lo hubiera hecho alguien que teclea muy rápido. Cuando se requiere que el decodificador sea de teclado se utiliza lo que se conoce como keyboard wedge, el cual se conecta a la entrada de teclado de la PC o terminal. Este tipo de lectores se conectan directamente al puerto del teclado y ofrecen una salida idéntica a la de éste. Suelen tener un sistema que permite conectar al mismo tiempo un teclado y el lector. Cuando se lee un código de barras el lector envía a la computadora los datos como si hubiesen sido escritos con el teclado (el número que corresponde al código de barras leído), lo que hace que su utilización sea muy sencilla con cualquier programa que espere una entrada de teclado. Sin embargo, este tipo de interfaz tiene algunos inconvenientes. Por ejemplo, la escritura del código será siempre completa, es decir, no puedes dividir el código en varias partes. El lector no es capaz de devolver cuatro cifras, y luego el resto. Obviamente, siempre hay que asegurarse que el cursor del sistema está sobre la casilla/documento que queremos rellenar, el lector no se preocupa de eso y devolverá su salida allí donde estemos situados.

Interfases Seriales. Se puede transmitir datos de un lector a una computadora conectando al escáner (lector) a través de un puerto serial RS-232. La información del código de barras será transmitida a la computadora en un formato ASCII para aparecer como datos tecleados a la computadora. Usando una conexión de puerto serial es ideal para una computadora multiusuario. Con terminales seriales ASCII para cada usuario, el lector de código de barras puede conectarse entre la terminal y la computadora y transmitir datos ASCII justo como una terminal.Por ejemplo, los sistemas por USB son lectores de última generación. Envían la información más rápidamente que los anteriores y su conexión es más simple. No necesitan alimentación añadida, pues la que obtienen por esta interfaz es suficiente.Los escáneres que se conectan a la interfaz RS-232 (o interfaz serie) necesitan utilizar un software especial que recupera la información enviada por el escáner de códigos de barras y la coloca allí donde se le indique. Esta interfaz es algo más sofisticada que la de teclado, y nos ofrece un mejor control sobre el destino de la lectura del código

¿Cual lector es el indicado para su aplicación?Con todas las opciones disponibles, es importante entender su ambiente de trabajo y la aplicación para poder saber con precisión sus necesidades antes de tomar alguna decisión. Responda a estas preguntas para determinar cuál escáner es el más adecuado para sus necesidades:

¿En qué tipo de ambiente será usado el escáner?¿Será trabajo rudo en una fábrica o normal en una tienda?¿Es continuo o periódico el escaneo necesario?¿Es a manos libres o portátil la capacidad requerida?¿El escaneo será aplicado cerca o a distancia del código de barras?

Page 4: 2_FUNCIONAMIENTO_SCANBARCODE

¿Cómo se realizará la conexión?¿La información escaneada será necesaria en tiempo real?

Recuerde que hay una gran variedad de lectores diseñados para cada aplicación. No compre el primer lector que le parezca adecuado o el más económico. El último y más costoso lector puede trabajar bien en una aplicación donde el escaneo es frecuente, pero ciertamente no podrá responder en un ambiente de trabajo rudo donde es necesario un lector de uso rudo.

Terminales Portátiles. Los terminales portátiles se utilizan para colección de datos en lugares donde es difícil llevar una computadora, como en un almacén o para trabajo en campo. Generalmente se diseñan para uso industrial. Las terminales portátiles cuentan con display pequeño, teclado, puerto serie, puerto para conexión de un lector externo de código de barras y son programables. Algunas de ellas tienen el lector de código de barras integrado, y éste puede ser láser, CCD o lápiz. La memoria RAM con que cuentan puede variar de unos 64K hasta 4MB en terminales más sofisticadas. Las terminales más sofisticadas tienen radios, permitiéndose así una interacción en línea con el host. La forma en que se programan depende de la marca y del modelo: Pueden tener un lenguaje nativo o programarse mediante un generador de aplicaciones que genera un código interpretable por la terminal. Algunas tienen sistema operativo MS-DOS y consiguientemente pueden programarse en lenguajes de alto nivel. Los lectores soportados por la mayoría de estas terminales son HHLC (CCD o láser) y lápiz óptico (wand emulation).

Forma de Uso de las Terminales. Una operación típica de una de éstas terminales es la siguiente:

Aparecen preguntas en pantalla.Se leen los datos pedidos con el escáner o se digitan manualmente.Se validan los mismos si es necesario. Se repite el procedimiento las veces que sea necesario.

Cuando se tiene la información completa, se descargan los datos vía serial a una computadora en donde finalmente son procesados. Obviamente pueden existir otras variantes, pero el manejo básico de estas terminales es el mismo.

Compatibilidad con Sistemas

La función de escaneo y decodificación es una tarea del lector de código de barras. Al mismo tiempo la información así obtenida necesita llevarse a la computadora para poder ser procesada.Hoy en día existen muchas opciones de conexión de lectores de códigos de barras a una computadora, y mientras su computadora y el software sean capaces de aceptar los datos provenientes de un código de barras, es muy probable que el mismo software podrá generar e imprimir códigos de barras en facturas, notas de embarque, sobres, etiquetas, boletos, etc.., esto sería lo más conveniente.

Los Softwares para Interpretar Lecturas de Códigos de Barras

Cuando desee usar lectores de código de barras en montacargas, monitores para el cuidado de pacientes, para enviar o recibir paquetes, o en una terminal punto de venta, necesitará una aplicación de software. Es la aplicación de software la que acepta los datos provenientes del lector de código de barras y controla el flujo de misma. Es por eso que es necesario pensar en ese software, como un socio silencioso de su computadora, aceptando, clasificando, procesando y organizando los datos que llegan a la computadora, y convirtiéndolos en información útil y necesaria para el manejo del negocio.

Construcción de un Lector de Código de Barras

Como mencionamos, el lector de código de barras (periférico de entrada) convierte las franjas blancas y negras de un producto determinado en una serie de señales que la computadora pueda entender. Cuando estas señales ingresan a un sistema o programa, éste busca el código leído entre la lista de productos que tiene almacenada y envía su nombre y precio al monitor.El código de barras está diseñado para que no importe la velocidad de barrido de lectura. Lo único que se debe hacer es comparar unas barras con otras, para saber si son de un ancho simple o doble, o triple, etc.Además, como las barras siempre comienzan por un extremo, podrá calcular la velocidad de lectura tan pronto detecte esa secuencia, pudiendo esperar que el resto se lea a la misma velocidad.Basándonos en un proyecto de J. Carlos Díez Rioja, sobre una idea de Neil Ardley del libro How things work, explicaremos cómo construir un lector de código de barras casero. Un detector de luz “traducirá” la cantidad de luz reflejada sobre las barras en una señal on - off. Esta señal se aplicará en un receptor (un zumbador o un LED), el cual sonará o lucirá si el lector pasa sobre una barra negra (señal on) y no sonará si se pasa sobre una barra blanca (señal off). La lista de materiales necesarios para realizar este lector es la siguiente:

Alambre de cobre flexible. Cinta aislante. Zumbador de 9 volt. Circuito integrado CMOS 4011B.Transistor BC548 o equivalente. Resistor variable de 5kžConector de pilas de 9 volt.Placa universal de circuitos impresos.Un tubo de bolígrafo o birome común.Un código de barras.Resistor LDR común.

Explicamos paso a paso la construcción del lector, tal como lo especifican los autores. Para ello, en la figura 10 tenemos la imagen de los componentes necesarios.

1. Corte dos trozos de alambre de cobre flexible de aproximadamente 25 cm de longitud. Pele las cuatro puntas con ayuda de unas tijeras de electricista o un pelacables, tal como se muestra en la figura 11.2. Suelde los dos cables anteriores a los terminales del resistor LDR, figura 12.3. Aisle uno de los terminales del resistor LDR con cinta aislante (figura 13). Esto evitará que los dos terminales se toquen dentro del bolígrafo.4. Introduzca los cables a lo largo del bolígrafo y fije la resistencia LDR al bolígrafo con cinta aislante, figura 14. Atención: no tape la resistencia LDR con cinta aislante, ya que el sensor no recibiría luz.5. Compruebe que los dos terminales estén bien aislados con ayuda de un multímetro (figura 15). Si tapa el resistror LDR, su resistencia debe aumentar (figura 16).6. Monte los componentes electrónicos sobre un trozo de placa universal según el circuito de la figura 17. Realica les soldadures y conexiones que sean necesarias.7. Una vez acabado el montaje, compruebe que funciona correctamente pasando el bolígrafo “óptico” sobre un cuerpo de color negro (debe sonar el zumbador) y uno de color blanco (no debe zumbar).

En la figura 18 tenemos el circuito de un lector de código de barras con PIC. R1 regula la radiación infrarroja que emite el fotodiodo. R2 debe tomar un valor para leer un barra (negro) y otro valor para interpretar un espacio (R2 grande para barras negras y R2 pequeña para los espacios blancos), es por ello que se realiza un arreglo circuital entre el transistor de efecto de

Page 5: 2_FUNCIONAMIENTO_SCANBARCODE

campo 2N7000 y R3. Cuando el lector lee una barra, el microcontrolador pone a nivel alto el pin24 (entrada/salida) y “satura” al transistor de modo que quedan R2 y R3 en paralelo, haciendo que el conjunto tenga un valor bajo y, de esta manera, que el fototransistor del CNY70 trabaje en la zona lineal y diferencie los grosores de los espacios en blanco. Luego, cuando se lee un espacio pasa lo contrario, el microcontrolador pone el pin24 a nivel bajo, se abre el transistor y solo queda la acción de R2 que, como es grande, diferencia bien los grosores de las barras.Decodificador de Código de Barras, Utilizando el Microcontrolador AT90S2313

Describiremos el trabajo realizado por alumnos de la Universidad Tecnológica de Mixteca (Arias Martínez Oswaldo, Hernández Méndez Arturo y Zambrano Nila Juan G.) en conjunto con Enrique Guzmán Ramírez, Profesor Investigador del Instituto de Electrónica y Computación de dicha Universidad. Dicho trabajo consiste en el diseño de un sistema lector de código de barras basado en un microcontrolador AT90S2313 de ATMEL y un lector de barras SR11 Data Logic, el cual puede ser adaptado para realizar funciones que impliquen identificación, tales como reconocimiento de productos, inventarios, reconocimiento de personal, etc.

Comentarios Previos. El concepto de codificación basándose en barras no es nuevo, desde la década de los 60’s, donde los ordenadores todavía tenían como lotes de entrada de información las tarjetas perforadas, un grupo de ingenieros probaron de manera informal otro tipo de lote, soportándose en el empleo de los entonces raros sensores ópticos. En esos años el concepto no pudo concretarse comercialmente, considerando que años más tarde el empleo de material magnético abarcó el terreno dejado por los sensores ópticos. El paso de los años y el avance de la tecnología dio una nueva oportunidad a la codificación de barras, principalmente como sistema de ponderación y serialización, es decir, asignar precios y número de inventarios. Los códigos de barras pueden tener infinidad de aplicaciones, ya sea como sistemas de seguridad (acceso de personal, cerraduras, etc.) transmisión de códigos, control de inventarios, etc. De acuerdo a la aplicación se puede implementar un formato de codificación y es lógico pensar en ello: cada diseñador adecua el formato a sus propósitos. En Internet se encuentran disponibles varios programas gestores de los códigos de barras más comerciales, como el UPC-A, EAN-13, Code 39, FIM, PostNet, etc. Todos estos formatos tienen el inconveniente de que el algoritmo de codificación no se coloca a disposición del público, es decir, a aquellos que intenten decodificarlo (incluyéndonos) les resulte muy difícil hacerlo. Es por eso que en esta nota pretendemos enseñarle también a “generar un código propio”.

Si se define una barra con un ancho específico para que represente un carácter (ya sea dígito o letra), se pueden definir otros anchos de barra para definir otros caracteres.

Para implementar un sistema se requiere un lector de código de barras, seguido por un dispositivo capaz de procesar la señal que genere el anterior (un microcontrolador). El lector deberá reproducir eléctricamente el código de entrada para que de esa forma el microcontrolador pueda procesar la señal y realizar su decodificación. En este caso, el ancho de barras es el parámetro a medir por el microcontrolador, el cual le indicará el código que le corresponde a cada secuencia de barras. Si las barras se escanean de manera uniforme y a velocidad constante, el sistema en general no deberá tener problemas para procesar la señal, pero si alguno de estos parámetros varía se tendrán problemas como códigos erróneos provocados por la forma en la que opera el lector de barras, la forma en que se soluciona este problema se explicará a su tiempo. En el proyecto, los autores hacen uso de los temporizadores que forman parte del Microcontrolador para realizar la lectura del lector de barras, de tal forma que sólo durante los estados altos de la señal generada por el lector se accione dicho temporizador. Para la realización de este proyecto se hizo uso de un lector de barras de la compañía Data Logic Optic Electronics, seriado como SR 11. Consiste en un par emisor – receptor infrarrojos con un sencillo circuito interno que genera una señal equivalente al código de barras sensado, como se muestra en la figura 19. El último pulso corresponde a un método propio del lector para indicar fin de lectura. Al visualizar la señal en un osciloscopio se observa que el pulso de fin de lectura abarca aproximadamente un 32% de la duración total de la señal. Esto significa un primer inconveniente: hay que programar al microcontrolador, de manera que desprecie el efecto de este último pulso. Cuando mencionamos el problema de los tiempos, implícitamente requerimos un microcontrolador que ocupe el mínimo de tiempo para realizar sus instrucciones. Este es uno de los factores por el cual se eligió el microcontrolador AT90S2313 de ATMEL, ya que con un cristal de 4MHz es capaz de procesar instrucciones en 250 ns (en promedio). Se define que el número de caracteres máximo para el sistema será de diez, estos incluyen sólo los dígitos primarios (0 a 9). Esto significa que el lector generará diez pulsos equivalentes a las diez barras más el pulso de final de lectura, como se propuso eliminar el pulso de final de lectura, la forma de ignorarlo es llevar un conteo de pulsos leídos, y cuando sea igual al número máximo de caracteres, se debe colocar al microcontrolador en modo stand by durante un tiempo mayor a la duración del pulso de fin de lectura. Para determinar el valor que tendrá cada barra se implementará una barra de referencia. Si definimos a esta barra de un ancho tal que el resto de las barras sean un submúltiplo de la referencia, una simple operación aritmética bastará para decodificar cada barra. Aquí entran en juego los temporizadores del microcontrolador, los cuales sólo se activan en los tiempos altos de los pulsos, los valores de la cuenta son equivalentes a los anchos de las barras. De esa forma, una división de la referencia entre cada una de las barras restantes basta para realizar la decodificación. Para guardar los valores leídos, el AT90S2313 cuenta con un área de memoria RAM estática, la cual puede ser accesada con una simple instrucción en muy poco tiempo, ya sea para lectura o escritura. Los valores escaneados se almacenarán simultáneamente en esta RAM estática. Una vez almacenados todos los valores, se les puede recuperar para ser procesados.

También se puede modificar el número de caracteres por código durante el tiempo de ejecución. Para ello se hace uso de las dos interrupciones externas del microcontrolador, una para aumentar el número y otra para disminuirla. Existe un rango de una a diez barras. La visualización de la información o el código leído se realiza en un display de cristal líquido. Como se hizo notar, el diseño no tiene una aplicación específica, lo indicado es que cada código pueda ser enviado a un sistema mayor. La forma que se eligió para transmitir la información es mediante el protocolo de comunicación RS232. De esta forma el sistema sólo sirve como intérprete entre el lector de barras y un sistema que realiza una función específica que requiera decodificar códigos de barras. De esta manera, ya estamos en condiciones de mostrar cómo será nuestro sistema y para ello nos referimos al diagrama en bloques de la figura 20.

Diseño del Sistema. En general el lector de barras proporciona un nivel alto (5 Volt) en la parte obscura de la tira de barras, y un nivel bajo (0 Volt) en la parte blanca, es decir, el lector lee las partes negras. A una velocidad moderada se observó que el tiempo que tardaba el pulso en alto ante una barra de 5mm de ancho es de 23ms aproximadamente, como se muestra en la figura 21.

Protocolo del código de barras. El protocolo de las barras elaboradas consiste en una barra de ancho base (5mm) cada 5 números, el tiempo que tarde esta barra será la referencia del número 1, ya que si se quiere colocar un uno en el código de barras se tendrá que poner una barra del mismo grosor, ya que el número estará dado por la siguiente fórmula:

wbase N = ––––––––– Ecuación 1wdato

donde: n = Valor numérico de la barra dato. wbase = Ancho base de la primer barra. wdato = Ancho de la barra dato.

Tomando un ancho base de 5mm, se tienen los anchos mostrados en la tabla 2, para cada número que se tenga que hacer. La principal función de esta barra base de 5 mm es la de eliminar el efecto que tiene el hecho de pasar las barras por el lector con una velocidad que no sea constante, debido a esto se decidió colocar una barra base al inicio y otra después de 5 barras. El algoritmo final del programa se muestra en la figura 22. Con base en los parámetros establecidos y los recursos disponibles por el microcontrolador, se realizó la siguiente distribución en las conexiones de los periféricos al microcontrolador: se requiere el puerto B como salida para la conexión al LCD, y el pin 4 del puerto D como entrada para la señal proporcionada por el lector de barras, además de las interrupciones uno y cero, que serán usadas para modificar la cantidad de datos leídos. Inicialmente el controlador está en espera de la primer barra que será la base para las primeras 5 barras, cuando detecta esta barra, el contador de 16 bits se activa y comienza a incrementar su cuenta hasta que el nivel vuelve a ser bajo. Después de esto se cicla nuevamente, ahora en espera del primer dato, al ocurrir un nivel alto dado por una barra dato, se activa al contador y lo mide nuevamente, almacenándolo en memoria. Mientras hace esto, también se está comparando continuamente con la cantidad pedida de datos (o número de barras para el cual fue configurado el sistema), si se llevan 5 datos capturados, en el primer caso se imprimen inmediatamente los valores de las barras previamente calculados, y en caso de que se tengan 5 datos y faltan más, se procede a leer una nueva barra base, ya que como se había mencionado al inicio después de los 5 primeros datos se introduce una barra base más, la cual ayudará a la estabilidad de las lecturas, eliminando así las lecturas erróneas. La figura 23 muestra el circuito eléctrico de nuestro decodificador.Durante la lectura de barras dato y barras base, la bandera de interrupción global está desactivada, ya que no se puede modificar la cantidad de datos a leer al mismo tiempo en que se está pasando la tarjeta por el lector y cuando se está calculando e imprimiendo los valores de las barras en el LCD. Para calcular el valor numérico de las barras a partir de la barra base

Page 6: 2_FUNCIONAMIENTO_SCANBARCODE

es necesario hacer una división de 16 bits, de la cual sólo se toma la parte entera del resultado, desechando el residuo, esto nos da un margen de certeza más amplio para los números pequeños (0, 1, 2, 3, 4, 5 y 6), sin embargo dicho margen se reduce para números grandes (7, 8 y 9). El impreso del proyecto se muestra en la figura 24, el cual fue realizado con OrCAD.

Conclusiones. Debido a la exactitud que demanda el funcionamiento de este sistema de lectura de barras, se elige el uso del microprocesador AT90S2313, debido a que con un temporizador de 16 bits y un cristal de 4MHz, se logra una cuenta total en aproximadamente 35 ms y dado que en la caracterización del lector se muestra que la duración promedio de la barra más gruesa es de 32 ms, esto hace que el sistema final que sea muy exacto, además que debido a la resolución se eliminan errores, así se pase el código por el lector de barras muy rápido o a una velocidad moderada.

El tiempo que se tarda el microcontrolador en obtener y guardar los datos en la ESTATICRAM del mismo se resiente un poco en la exactitud del sistema para los números grandes o barras pequeñas. Este tiempo es considerable ya que se trata de 24 datos (dos a la vez) en la memoria interna del microcontrolador. No se recomiendan los números 7, 8 y 9, pues se pierde exactitud en el procesado de la señal. La razón estriba en que la diferencia del ancho de barra entre esos tres números es prácticamente indistinguible, se tendría que ampliar la barra base o de referencia, o bien, disminuir proporcionalmente el ancho de barras de los números citados, con el riesgo de que el lector no pueda reproducir fielmente la señal T.

Si Ud. está interesado en obtener más información de este circuito, puede contactar al Ingeniero Enrique Guzmán Ramírez enviando un mail a: [email protected].

Page 8: 2_FUNCIONAMIENTO_SCANBARCODE
Page 11: 2_FUNCIONAMIENTO_SCANBARCODE
Page 12: 2_FUNCIONAMIENTO_SCANBARCODE
Page 13: 2_FUNCIONAMIENTO_SCANBARCODE
Page 14: 2_FUNCIONAMIENTO_SCANBARCODE