Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Bueno, hace ya un tiempo comenté que quería pasar de usar los sensores de toda la vida a algo con más resolución. Concretamente a un array de 896 sensores y de 10cm de longitud (200ppp). Pues después de tanto tiempo con el sensor en su plástico hoy he realizado las primeras pruebas, ya que mi idea es usarlo para el robotracker de la campus.
De momento solo quería ver que tal se comportaba sin usar elementos ópticos como lentes o demás, y la verdad es que para leer la linea no hace falta ninguna lente. Para probar el sensor he cogido lo primero que tenía a mano, un arduino y processing. No voy a entrar en detalles porque sería muy largo, pero básicamente Arduino se encarga de leer una sección de las dos que tiene el sensor (son en realidad 2 arrays de 448) y enviarlo por puerto serie. Processing se encarga de leer esos datos y representarlos en escala de grises, de forma que tengo una imagen de lo que ve el sensor. Os pongo algunas capturas comentándolas un poco:
Antes que nada, veréis que la parte derecha siempre está negra, y es porque como ya he comentado solo he estado leyendo una de las dos secciones, ya que Arduino no tiene ni velocidad ni capacidad suficiente como para leer el sensor entero a una velocidad decente para que la imagen no sature. En estas dos imágenes estaba usando luz ambiente tapando un poco el sensor y solo he movido un poco el sensor sobre la linea para que se vea que funciona. Ahí tenemos una resolución de 448px a 200ppp, lo que implica que podemos ver cambios de hasta 0.127mm sobre la linea.
Aquí he aplicado luz con la longitud de onda que recomienda el datasheet. Es muy importante controlar la luminosidad, ya que sino la imagen cambia bastante. Si os fijáis en el borde se puede apreciar que la luz que entra por el lado afecta a la imagen.
Aquí se ve que jugando con la intensidad de la luz, podemos conseguir diferentes definiciones de la linea. Esto es bueno porque facilita mucho la tarea de filtrado y detección de bordes que hará falta posteriormente para halla la posición exacta de la linea sobre el sensor.
En definitiva, se obtiene una resolución adecuada, pero hay que controlar mucho que las condiciones de iluminación sean buenas. Afortunadamente tenemos 2 variables con las que poder jugar, una es la luminosidad de los leds, que la controlamos con PWM, y la otra es el tiempo de integración del sensor, que lo controlamos con el tiempo entre muestras, aunque este estará limitado por la velocidad del conversor A/D. La verdad es que da muchas posibilidades, aunque no lo recomiendo para el que simplemene quiera hacer un velocista/rastreador sin complicarse, ya que intuyo que va a ser complejo tratar la imagen.
¡Saludos!