Escáner de código de barras de tipo lápiz

1

Estoy diseñando un escáner de código de barras de tipo lápiz (1D) que es operado por el usuario, lo que significa que la velocidad a la que se mueve el escáner es aleatoria. Peor aún es que a veces se atasca, por lo que la señal se estira o incluso vuelve a veces.

Bueno, no todo es tan malo como parece, ya que hice algunas pruebas y parece que esta distorsión siempre ocurre en el cuarto pulso. Como se puede ver en la imagen, este pulso tiene un tiempo de caída muy largo. Así que aquí está la pregunta:

¿Qué técnicas de procesamiento de señales puede recomendar para corregir esto? Me refiero a marcar este pulso como 1 sin volver loco al microcontrolador. (La salida del fotodiodo del escáner se alimenta al ADC de un MSP430)

    
pregunta Sina

1 respuesta

4

Tendrás que hacer algunas suposiciones. Una suposición típica es que la velocidad de arrastre del usuario no cambia bruscamente en medio de un código de barras.

Dado que los códigos de barras contienen regiones de ancho fijo conocido, es fácil calcular la velocidad de arrastre en función de eso. Su algoritmo solo espera las primeras transiciones fuertes "brillante-oscuro-brillante", y basa su tiempo en eso.

Por ejemplo, considere los omnipresentes códigos de barras EAN-13 (en realidad, lea el excelente artículo de wikipedia del cual esta imagen era tomado):

Comienzanyterminancondosfranjasdeanchoconstante.Porlotanto,primeroobserve"brillante-oscuro-brillante", mida la duración de este "oscuro", luego espere que "brillante" y el siguiente "oscuro" sean tan largos como la primera oscuridad, y si encuentra eso , es decir. un equidistante "oscuro-brillante-oscuro", has

  1. encontró el comienzo de un código de barras EAN, y
  2. descubrió la "sincronización" de una banda delgada al mismo tiempo.

En función de la longitud de esa "oscuridad", puede ajustar la interpretación de la señal. Incluso los microcontroladores lentos podrán hacer eso; estos códigos de barras fueron diseñados para la electrónica de la década de 1970, después de todo, y se hicieron populares cuando fueron triviales para decodificar usando la electrónica de la década de 1980 ...

Una nota sobre el uso de un ADC: sí, si tiene un microcontrolador que tiene un ADC, no dude en usarlo. No tiene que hacerlo. Clásicamente, los lectores de códigos de barras se implementan utilizando filtros de paso alto analógicos que solo detectan los bordes entre brillante y oscuro (y luego emiten un 1 cada vez que existe dicho borde). d tiene que ajustar sus algoritmos, pero al reducir su entrada analógica a una entrada binaria, potencialmente ahorra mucha CPU.

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas