Primer Robot.                    




Nombre: RB0
Función: seguidor de línea.
Tipo: diferencial.
Motores: Tamiya. Twin motor gear box.
Driver: L298.
Sensores: CNY70 leer línea. Sensor GP2D120 para evitar obstáculos..
Microcontrolador: PIC16F877A.
Estructura: panel de PVC 3 mm, rueda loca tamiya, ruedas de Tamiya.
Otros circuitos: fuente conmutada.
Alimentación: Lipo 7.4 V.
Objetivo: iniciarse en la robótica.

Descripción:

Siento no disponer de los esquemas (para explicar su exacto funcionamiento), pcbs y programa de este robot, ya que se encontraban en un disco duro que perdí, así que intentaré describirlo lo mejor posible, en futuros proyectos pondré toda la información.
   
Después de un tiempo leyendo foros y libros sobre el tema, me decidí por un "seguidor de línea" como primer robot. En teoría suele ser el primer robot con el que empieza todo el mundo, su finalidad es seguir una línea negra sobre un fondo blanco.

Para ver la línea se usa el sensor CNY 70, que se compone de un fotodiodo y un fototransistor en un mismo encapsulado, de tal forma que cuando el sensor está sobre negro, el transistor recibe menos luz que cuando está sobre otra superficie de distinto color, por lo que en función de la luz reflejada tenemos una intensidad distinta por el transistor. El montaje es muy simple, sólo hay que añadir una resistencia en serie con el diodo (120 ohmios), y otra en la base o en el colector del transistor (15 K ohmios), tomando aquí su salida. Es decir si conectamos el emisor del CNY a la resistencia y a tierra (emisor-resistencia-tierra), y tomamos nuestra salida en el emisor, cuando el transistor este sobre negro, leeremos un cero, circula poca intensidad. Cuando el transistor este sobre blanco leeremos un uno, ya que la intensidad que pasa por la resistencia será mayor V=I*R.

Con este sensor se puede hacer dos tipos de lecturas, una digital y otra analógica para compensar la luz ambiente. En este caso se realiza una lectura digital que es lo más sencillo, la salida va directamente conectada a una entrada del microcontrolador con disparador smichdt, dependiendo de la tensión que cae en la resistencia (función de la luz reflejada) lo toma como un 1 o un 0, de esta forma sabemos si el sensor está sobre la línea (0).

La placa de sensores se diseño con forma de V, así se simplifica la programación a la hora de detectar ángulos rectos (no perdemos todos los sensores de golpe), nuestro objetivo es hacer un hardware adecuado que haga lo más fácil posible la programación.



Para leer estos sensores y actuar en función de la información recibida utilizamos un microcontrolador de 8 bits, un PIC16F877A de microchip. Se encarga de comprobar el estado de la salida de cada sensor para saber donde está la línea, y dependiendo de la posición de ésta, manda una velocidad y sentido a los motores para situar los sensores centrales sobre la línea. El programa para el microcontrolador se realizó en ensamblador, para la familia del 16 son algo más de 30 instrucciones, por lo que resulta sencillo de realizar aunque lento, pero es la mejor forma de iniciarse y comprender como funciona uno de estos microcontroladores.

Otras opciones más rápidas para realizar el programa es usar un lenguaje de alto nivel como C, para ello necesitamos un complilador, hay varios pero ninguno de ellos gratis. Microchip te ofrece usar una demo de su compilador, con alguna limitación pero que llega de sobra para hacer la mayoría de programas. Bueno quién quiera saber de PICs que googlee, que hay mucha información sobre el tema.

PIC16F877A


Para poder controlar los motores a través de un microcontrolador necesitamos un driver, ya que la intensidad que puede proporcionar una pata del microcontrolador es de 25 mA, y el consumo de un motor de los usados con el rotor parado es de 1.5 A aproximadamente, por lo que si intentamos alimentarlo directamente desde el PIC, además de no moverse, acabaremos quemando el micro.

Como driver usamos un L298, puente en H de transistores bipolares, este circuito integrado nos permite controlar dos motores en velocidad y sentido, y además nos permite frenar el motor, para ello usa una entrada de enable para cada motor, y dos de sentido por motor. El esquema de este circuito se puede encontrar en su datasheet, lo único que tenemos que añadir son los diodos externos para no cargarnos el puente en H (un motor es una bobina y por tanto no le gustan los cambios bruscos de intensidad) y algún condensador para comernos transitorios.

Con este puente podemos manejar motores con un consumo de 2 A continuos y picos de 2.5 A, la principal desventaja es que tiene una caída de tensión alta frente a los puentes en H realizados con Mosfet cuya Ron es muy baja, la ventaja es que realizar un puente en H no es algo sencillo para la mayoría, y aquí nos lo dan todo en un integrado. Este es un circuito que vamos a usar en muchos robots, ya que los 2 A nos permite controlar un gran número de motores para pequeños robots, así que viene bien tener unos cuantos de estos a mano.

Para controlar la velocidad del motor el microcontrolador se encarga de generar una señal de PWM a los enable del L298. Una señal cuadrada de periodo fijo en la que se tiene un ancho de pulso variable, la tensión eficaz y por tanto la velocidad del motor es función del tiempo en que la señal está a uno dentro del período.

Placa L298


El último circuito es una fuente conmutada con un LM2596 (se ve en la parte superior del robot), su objetivo es convertir una tensión mayor de 5 V a 5 V. La ventaja de usar una fuente conmutada sobre un regulador disipativo es que nos durarán más las pilas, ya que en un regulador disipativo toda la tensión*intensidad que sobra se disipa en calor, la desvetaja principal el precio. Este integrado tiene un rendimiento de algo más del 80% para los 5 V, pero bueno este es un circuito que se merece su propio análisis, así que ya lo pondré más adelante. En este robot se podría haber utilizado reguladores disipativos, ya que estamos bajando de 7.4 a 5, habría que ver si merece la pena hacer la fuente conmutada.

Esta fuente es capaz de proporcionar hasta 3 Amperios, por lo que nos valdrá incluso para alimentar dos motores además de la electrónica. En este robot lo hacemos así, los motores funciona a 3 voltios (aunque se pueden sobrealimentar tranquilamente), por lo que bajamos a 5 V los 7.4 de la batería, a estos 5 V hay que restar aproximadamente 1.7 V de caída en el L298, por lo que al final nos quedamos en su tensión recomendada.

El esquema de la fuente conmutada se puede encontrar en su datasheet, lo único un poco difícil de encontrar sea quizás la bobina.



Visto las partes de la electrónica del robot, ahora toca la base.

El diseño es un robot diferencial, es decir un robot de dos ruedas, la forma de girar es como la de los tanques, si la rueda de la derecha gira más rápido que la rueda de la izquierda, el robot girará hacía la derecha, y viceversa. La principal ventaja de realizar un robot de este tipo es que puede girar sobre su propio eje, es decir puede girar sobre sí mismo. Es un diseño adecuado para un seguidor de línea, en donde nos podemos encontrar ángulos muy pequeños.

Una forma rápida y barata de hacer la base es usar uno de los kits de Tamiya, trae un par de motores y una caja a la que se le pueden poner distintas reducciones, además ya tenemos los ejes sobre los que poner las ruedas, por lo que lo único que hay que hacer es buscar una superficie donde atornillarla y encajarle un par de ruedas de Tamiya. Su precio esta entre $10 y $15, hay que comprarlas fuera porque en España no hay mucho de esto. Yo suelo comprarlo aquí: www.robotmarketplace.com.



A esta caja se le puede montar cualquier motor estándar de RC de ese tamaño, hay muchos modelos donde elegir, pero con los que trae son suficientes para este robot. Podemos elegir entre dos tipos de ruedas de Tamiya:





Y por último nuestro robot necesita un tercer punto de apoyo, para esto ponemos una rueda loca capaz de girar en cualquier dirección, después de probar varios tipos a mi las que mas me gustan son las que vienen en el kit de Tamiya, son ajustables en altura. Se pueden encontrar en la tienda anterior.




Con estos kits por aproximadamente $30 tenemos la base completa con sus motores, sólo hay que añadir una superficie plana para atornillar la caja y la rueda loca. Para esto hay un material que es muy fácil de trabajar a la vez que resistente para robots de poco peso, son paneles de PVC, se venden con un grosor de 3 mm y 5 mm en varios colores, para este robot se ha utilizado el de 3 mm de color blanco. Para cortarlo y darlo forma con una cuchilla es suficiente.

Se pueden encontrar en www.robot-italy.com 200 mm x 200 mm x 3 mm por unos dos euros.



A mi es un material que me gusta mucho y que estoy usando en varios robots para bases y para todo tipo de piezas, mejor que la madera y el metraquilato, sólo por detrás del aluminio cuando este es necesario.

Bueno pues esto fue mi primer robot... No tuve mucho tiempo para programarlo, sólo para comprobar el correcto funcionamiento del hardware, ya que enseguida me tuve que poner a preparar dos robots para un concurso. Por lo que su programa fue lo que me deje pendiente.

El programa que hice era muy simple, sólo giraba hacía un lado cuando los correspondientes sensores estaban activados, e iba recto cuando estaba centrado. Esto originaba un constante cabeceo que hay que corregir por software. Por lo demás la experiencia y el resultado fueron satifactorios para un primer robot, y me sirvió para aprender y mejorar siguientes diseños.

Aquí os pongo un video del robot siguiendo la línea, se ve como el robot va de lado a lado:


Para cualquier comentario, duda, corrección..  

Gracias por leer hasta aquí. Saludos.