lunes, 13 de junio de 2011

seguidor de linea

Un seguidor de linea es un robot que puede movilizarse sobre una superficie blanca y detectar una linea de color negro.
Su funcionamiento es bastante sencillo, pero tiene partes interesantes de desarrollo entorno al algoritmo para detección de lineas negras. La parte mas importante esta en el sensor CNY70 el cual consta de un emisor y receptor de infrarrojo en una misma capsula.
cuando una onda de luz infrarroja choca contra una superficie blanca o clara, rebota hacia el receptor, el cual generara una señal lógica de uno si la superficie es blanca o cero si es negra.
En realidad para poder trabajar directamente con un PIC, hay que acomodar la señal con un integrado 40106, El cual es un integrado con lógica negada (NOT) o tambien conocido como Schmitt Trigger.


Diagrama esquemático de la conexión del CNY70 y el 40106

en la pagina de r-luis hay excelente información al respecto, donde se puede ver mucha información técnica y posibilidades de configuración.
Este robot (una variación del presentado en la FUDCON de panama), tiene un sensor CNY70 sobre la rueda libre al frente del robot aproximadamente a 5 mm del piso. Se pone el robot sobre la derecha de la linea negra y cuando se inicia el algoritmo, se enciende el motor izquierdo hasta que toque la linea negra y se apaga el motor izquierdo y se prende el motor derecho hasta llegar al blanco y así avanzara emulando el andar de una persona no vidente con su bastón.
con dos sensores se puede conseguir un mejor rendimiento y velocidad, pero con un sensor es mas fácil de diseñar.

Sensor CNY70 visto de frente


Sensor CNY70 de costado


robot con plataforma para la netbook

Placas con el integrado 40106 de control y el l293D para los motores



Video del robot

Se puede ver como en la primera vuelta el robot "se pierde" por cruzar la linea y no ubicar el espacio blanco. Con dos sensores se puede lograr un mejor rendimiento y estabilidad (y velocidad).

jueves, 9 de junio de 2011

Sensores termicos y motores CC

Este es un pequeño tutorial que muestra como usar icaro para controlar un motor CC (corriente continua) con un relé  simple y ademas el uso de un termistor para controlar la temperatura (un incendio).
Hay varias formas de controlar un motor CC, la mas fácil de entender es mediante el uso de un relé simple. los relé son muy útiles para separar mecánicamente una conexión eléctrica de la controladora de ICARO, nosotros solo activamos la bobina que genera un campo magnético que mueve la pieza de metal que hace contacto, activando o desactivando el paso de la corriente de otra fuente de alimentación.
La ventaja de este sistema es que es bastante fácil de armar y de entender, básicamente un relé es un interruptor de tensión movido por un electro imán, También nos permite manejar grandes cargas de corriente y voltaje sin peligro para nuestra placa (y computadora), un tipico problema es causado por la inductancia que genera todo motor al ser activado y que puede causarnos problemas (en las placas np03 hace que se reinicie el micro controlador).

La desventaja de este tipo de trabajo es que al ser un componente mecanico, los relé solo pueden ser activados a una velocidad reducida, no permitiendo hacer PWM por ejemplo, y si necesitamos invertir el giro del motor tendriamos que usar otro relé mas, del tipo doble inversor, que nos permita invertir la polaridad del motor, por lo tanto su costo de fabricacion haria que sea mas barato conseguir un puente H integrado como el L293D, que es mas eficiente y permite PWM (aunque puede ser difícil de conseguir).

esquema de conexion en la protoboard ( usando fritzing)


relé en la protoboard con los contactos armados



viejo cooler de una fuente ATX 


Conexiones de la placa icaro 


Termistor ntc perla y un encendedor


Esquema echo con GEDA


El circuito en si es muy simple, en la protoboard esta conectado el motor al relé y este es activado por el pin 1 de la placa np03 (que podría ser tranquilamente una placa de puerto paralelo). 
El termistor es un sensor de temperatura, a medida que sube su temperatura, varia su resistencia electrica. Al llegar a un umbral, la placa icaro detecta la variación de resistencia y marca activado o desactivado (1 - 0).
El programa solamente hace un bucle infinito y  mira el valor del sensor 1 de la placa (devuelve uno o cero), si es igual a cero es porque el termistor esta frió y no hace nada; si el sensor marca 1, es porque algo esta calentando el termistor (el encendedor) y activa durante 5 segundos el pin 1 de la placa, lo que hace que se active el relé y este prende el ventilador cooler que apaga la llama y ayuda a enfriar el sensor.



pantalla con el código de turtleart



Video del motor

En el video se puede escuchar como chasquea el relé cuando es activado por la placa icaro (y se prende el led 1 )