You are on page 1of 33

Mdulo Educativo

de construccin de robots para estudiantes

Gobernacin de Arauca

Secretara de Educacin Departamental de Arauca

Autor: Ingeniero Jos Luis Susa Rincn

Agradecimientos:
Agradezco al doctor Luis Eduardo Ataya Arias Gobernador de Arauca. Y al doctor Jos Orlando Cespedes Garca Secretario de Educacin Departamental por apoyar el programa USO Y APROVECHAMIENTO DE NUEVAS TECNOLOGAS EN ROBTICA Y RECICLAJE TECNOLGICO. Igualmente al director del proyecto Jos Flix Susa Lizarazo por sus valiosos consejos y por compartir su gran experiencia conmigo, sin la cual no se hubiera logrado obtener los buenos resultados del programa en general. A todas las dems personas que de una u otra manera colaboraron con el desarrollo exitoso del programa. Finalmente a la ingeniera Paola Fernanda Santos le agradezco por sus acertadas opiniones y correcciones hechas a la cartilla. Gracias por poner un poquito de ella misma para que todos apreciaran an ms este trabajo.

Gobernador de Arauca: Luis Eduardo Ataya Arias Secretario de Educacin de Arauca: Orlando Cespedes Garcia Gerente de Nuevas Tecnologas: Roberto Antonio Melo Padilla Autor: Jos Luis Susa Rincn Contratista: Fundaset Diseo Y Diagramacin: Silvia Vargas Ilustraciones: Jos Luis Susa Rincn Revisin de Estilo: Ingeniera Paola Fernanda Santos Director del proyecto: Jos Flix Susa Lizarazo
Mdulo educativo de construccin de robots para estudiantes

Acerca de la Cartilla: 4 Introduccin: 5


TALLER 1: QU ES LA ROBTICA, PARA QU SIRVE, Y QU ES UN ROBOT? 6 TALLER 2: RECONOCIENDO LOS ELEMENTOS CON LOS QUE CONTAMOS
Experimento 1: Conectando elementos, Primer Circuito: Experimento 2: Prendiendo un LED con un interruptor NA: Experimento 3: Prendiendo un LED con un interruptor NC: Experimento 4: Prendiendo un LED con un potencimetro de 10k ohm:

8
9 9 9 10

TALLER 3: JUGUEMOS CON ARDUINO

12

APRENDIENDO A USAR LA TARJETA ARDUINO: 12


Experimento 5: Conectando la tarjeta Arduino al computador con ayuda del cable USB: 12

PROCEDIMIENTO DE INSTALACIN DE ARDUINO EN WINDOWS XP: 13


Experimento 6: En este experimento vamos a comenzar a utilizar la tarjeta Arduino para encender un LED o un mini parlante: Experimento 7: Presionando un pulsador se activan varias luces: Experimento 8: Prender 4 LEDs con la ayuda de un potencimetro de 10 K ohm: TALLER 4: BIENVENIDOS AL MUNDO DE LA ROBTICA, JUGUEMOS CON LOS SENTIDOS DE UN ROBOT. 19 Experimento 9: Sensor de luz, cul es su utilidad en robtica? Experimento 10: Sensor de choque o fin de carrera, cul es su utilidad en robtica? Experimento 11: Sensor distancia, cul es su utilidad en robtica? Experimento 12: Sensor proximidad, cul es su utilidad en robtica? TALLER 5: BIENVENIDOS AL MUNDO DE LA ROBTICA, JUGUEMOS CON LOS MOTORES DE UN ROBOT. 24 Experimento 13: Controlando 1 motor: 24 Experimento 14: Controlando 2 motores: 25 TALLER 6: A DIVERTIRNOS CONSTRUYENDO UN VERDADERO ROBOT! 27 Experimento 15: Construir un robot que se mantenga separa de un objeto: Experimento 16: Construir un robot seguidor de muro: Experimento 17: Construir un robot que avance cuando detecte luz: 27 29 30 19 20 21 22 14 17 18

Acerca de la cartilla
Esta cartilla fue desarrollada por el ingeniero Jos Luis Susa Rincn, basado en su experiencia obtenida durante el programa USO Y APROVECHAMIENTO DE NUEVAS TECNOLOGAS EN ROBTICA Y RECICLAJE TECNOLGICO, el cual fue coordinado por l mismo y dirigido por el doctor Jos Flix Susa Lizarazo. En esta cartilla encontrarn la manera fcil y rpida de ingresar al mundo de la robtica, contiene informacin til para desarrollar una serie de experimentos divertidos e interesantes sobre los robots y sus partes, igualmente ser una gua didctica para el desarrollo del curso de robtica que podrn dirigir los docentes especializados en el tema que participaron en el programa. Los componentes conceptuales de la cartilla pueden ser divididos en 4 mdulos de aprendizaje: 1. Mdulo de Electrnica digital 2. Mdulo de Programacin 3. Modulo Conociendo Arduino 4. Robtica Cada mdulo ira desarrollndose a medida que se realicen los juegos y los experimentos que soportan toda esta cartilla y que han sido pensados y probados para alcanzar la meta de que un nio entre los 13 y 17 aos aprenda de robtica mvil fcilmente. Al final los nios y jvenes habrn aprendido como construir un robot, entendiendo y usando todas sus partes, podrn luego disear por ellos mismos cualquier tipo de robot posible, o cualquier aplicacin o invento novedoso que en su mente creen usando los conocimientos adquiridos y los materiales con lo que ya disponen. Es importante contar el apoyo de un docente que haya participado en el programa, ya que es necesario hacer complementos tericos en algunos de los experimentos. La cartilla est divida en talleres, y experimentos, cada taller consta de una teora bsica y una serie de experimentos dirigidos y creados para aprender robtica. En la cartilla habrn indicaciones como esta: donde deber hacerse una complementacin terica del tema tratado. Igualmente si el smbolo es el siguiente: se deber complementar la teora con ayuda de exposiciones o ejercicios adicionales. Finalmente tendremos en la cartilla una serie de experimentos a realizar para afianzar los conocimientos en robtica. Se identificarn de la siguiente manera: cada experimento tendr un nmero para hacer ms fcil su ejecucin a la hora de trabajar en clase con los alumnos. No queda ms que decirles BIENVENIDOS al mundo de la robtica, sern participes de la ltima tecnologa en el mundo y ms adelante con esfuerzo y estudio podrn liderar proyectos que cambien el mundo y lo conviertan en un mejor lugar para vivir.
Mdulo Educativo de Construccion de Robots para estudiantes Mdulo educativo de construccin de robots para estudiantes

Introduccin
Echemos una muy rpida mirada al pasado en el que utilizbamos piedras, ramas, pieles y otros materiales para desarrollar pequeos y bsicos utensilios para ayudarnos en nuestras tareas diarias, se pueden imaginar viviendo en esa poca?...cogiendo una piedra para cortar, unindola a un palito para cazar y poder comer?...solo imaginen El mundo fue bueno y nosotros como humanos empezamos a mejorar nuestras primeras invenciones, poco a poco fuimos creando herramientas ms complejas, con el vapor, la plvora, la mecnica y finalmente con la energa elctrica, convertimos un palito y una piedra en mquinas para volar, para nadar como los peces, hasta para ir al espacio! igualmente creamos aparatos para entretenernos, el televisor, el cine, las cmaras, el Xbox, el play station, etc. Finalmente inventamos el computador, el invento moderno que mueve al mundo actual y que junto con nuestra mente nos ha llevado a sobrepasar los lmites humanos. Se dan cuenta que siempre buscamos crear nuevas cosas, las inventamos y las construimos para beneficiarnos y ayudarnos?, siempre desde que usbamos solo palitos y piedras, Se dan cuenta que desde ese tiempo deseamos lo mismo? Nuestra imaginacin se ha dejado llevar y la necesidad de crear ms y mejores cosas para realizar nuestros sueos ha sido tan alta que en nuestros das tenemos mquinas y aparatos que en tiempos pasados parecan sacados de un cuento. La magia no es que no exista, sino que an no la hemos descubierto o inventado, todo es posible en este mundo, solo se necesita paciencia, estudio, mucho tiempo para pensar y permitirnos inventar. La electricidad fue magia en sus primeros das, nadie entenda cmo, ni por qu sala, y mucho menos alguien se imagin algo semejante antes, por eso es razonable pensar que hay cosas an desconocidas por nosotros, que tarde o temprano descubriremos, ser esa magia que ahora nos parece irreal, debemos prepararnos entonces podamos gozar de ella en el futuro y aprovecharla para que todos estemos mejor con los dems y con el medio ambiente. Alguna vez han pensado cmo participar activamente en esta corriente de invenciones? tommonos un tiempo Si su respuesta es No Se tranquilos les dir cmo hacerlo, eso s espero que nadie haya dicho No se puede, porque esa respuesta elimina cualquier solucin y bloquea inmediatamente todo. Entonces creamos en que todo es posible y haremos maravillas. La manera como ustedes comenzarn a inventar es con algo que llaman robots! Y aprendiendo la ciencia que los estudia: La robtica.

Pongmonos cmodos y empecemos a aprender y a jugar para luego poder INVENTAR!

Taller 1: Qu es la robtica, para qu sirve, y qu es un robot?


Para comenzar es importante preguntarnos: qu es la robtica?. Su definicin es la siguiente: La robtica es la ciencia y la tecnologa de los robots. Se ocupa del diseo, manufactura y aplicaciones de estos. Esto nos lleva a una nueva pregunta, qu es un robot? Un robot es una entidad virtual o mecnica artificial, que generalmente realiza alguna tarea. Ok, ya tenemos algo ms claro, pero qu exactamente hacemos con un robot? La respuesta es la misma que si pensamos en lo que hacamos con una palito y una piedra, ayudarnos a hacer nuestras tareas diarias, facilitarnos la vida y ayudarnos a investigar y a aprender nuevas cosas (por ejemplo cuando son enviados al espacio). Como pueden imaginarse hay muchos tipos de robots, hay pequeos que se pueden desplazar llamados robots mviles: Hay robots que tratan de parecerse a nosotros llamados humanoides: y los robots que construyen carros y trabajan en fbricas se llaman robots industriales: Finalmente los ltimos tipos de robots que podemos encontrar no son tangibles, no son aparatos reales en este mundo sino programas y simulaciones en computadores, se denominan robots virtuales, en esta categora podemos encontrar igual a los virus de computador, ya que en la actualidad se han vuelto tan complejos que algunos pueden llamarse robots virtuales.

Robots mviles

Humanoides

Industriales

Mdulo educativo de construccin de robots para estudiantes

Pero bueno, todos estos robots, que tienen en comn para que sean llamados a todos as? Qu los compone y caracteriza?

SENSORES

ACTUADORES

PROCESADOR O MICROCONTROLADOR

INTELIGENCIA ARTIFICIAL

Cables Todos los robots tienen todas o la mayora el grfico de arriba. Adaptador 9v de las partes mostradas enRegulador de Protoboard de volte
Se conecta a una de Son alambres que Este es el elemento las terminales del vienen en diferentesdeber hacer una que le proporcionar El profesor breve explicacin de cada uno de estos elementos, ayudndose adaptador de 9v, colores y tamaos energa a nuestro con el ejemplo del cuerpo humano, los sensores son sentidos, los actuadores nuestros reduce su voltaje para interconectar robot. a 5v para que es nuestro los elementos en el la inteligencia artificial nuestra inteligencia, y nuestro msculos, cerebro puedan protoboard. procesador que controla todo. Qu es un Sensor y qu tipos hay, Qu es un actuador y funcionar los motores. qu tipos hay?, y Qu es la inteligencia artificial?

Complemento Terico:

que el camino apenas comienza!

Animo

Ejercicios aconsejados:
1. Por grupos hacer exposiciones cortas acerca de los diferentes tipos de robot, que cada grupo elija un robot e identifique las partes que lo componen, mostrar videos de ejemplo de cada uno y explicar cul es su utilidad de ellos para las personas o para el mundo. Mini parlante 2. Hacer una discusin sobre los siguientes temas y reconocer Resistencias la importancia de la Leds robtica y su aprendizaje:
Son componentes Esrobot, un pequeo Qu es la robtica, qu es un para qu sirve? Son pequeos electrnicos que parlante, emitepara resolver problemas bombillos emiten que Qu robots simples podramos imaginar en la vida real?, buscar reducen la cantidad sonidos y tiene luces de diferentes personas? Recolectar comida? Detectar intrusos? Qu elementos deberan tener estos robots? de corriente que otros polaridad. colores segun el led. elementos reciben Es importante la robtica para el mundo? Para la gente? Puede ayudar a mejorar nuestra vida? en el circuito.

Luego de entender que es la robtica y que tipos de robots hay y para qu sirven ahora si pasemos a la prctica y empecemos a aprender a construirlos.

Taller 2: Reconociendo los elementos con los que contamos


A continuacin vamos a hacer un reconocimiento de los materiales con los que debemos contar para comenzar con la construccin de robots.
ACTUADORES

SENSORES

PROCESADOR O MICROCONTROLADOR

Ejercicios aconsejados:
Identificar los elementos con ayuda de las imgenes e informacin que se encuentra seguidamente. Los primeros componentes que tenemos son de electrnica:
INTELIGENCIA ARTIFICIAL

Protoboard
Este elemento permite conectar las paticas de los elementos electrnicos para formar circuitos.

Cables de Protoboard
Son alambres que vienen en diferentes colores y tamaos para interconectar los elementos en el protoboard.

Adaptador 9v
Este es el elemento que le proporcionar energa a nuestro robot.

Regulador de volte
Se conecta a una de las terminales del adaptador de 9v, reduce su voltaje a 5v para que puedan funcionar los motores.

Potencimetro
Este elemento es una resistencia que vara su valor al girar la perilla que tiene.

Leds
Son pequeos bombillos que emiten luces de diferentes colores segun el led.

Mini parlante
Es un pequeo parlante, emite sonidos y tiene polaridad.

Resistencias
Son componentes electrnicos que reducen la cantidad de corriente que otros elementos reciben en el circuito.

Mdulo educativo de construccin de robots para estudiantes

Cables de Protoboard

Adaptador 9v

Son alambres que Este es el elemento vienen en diferentes que le proporcionar este experimento vamos aa conectar una pila de 1.5 colores yEn tamaos energa nuestro para interconectar robot. a encenderlo pero vamos a voltios AA a un LED y vamos los elementos en el protoboard. guiarnos por el siguiente diagrama electrnico del circuito:

Experimento 1: Conectando elementos, Primer Circuito:

Regulador de volte

Se conecta a una de las terminales del En de este adaptador 9v, experimento vamos a aadir un interruptor reduce su voltaje normalmente abierto NA al circuito anterior como lo a 5v para que puedanvemos en el siguiente diagrama del circuito: funcionar los motores.

Experimento 2: Prendiendo un LED con un interruptor NA:

Leds
Son pequeos bombillos que emiten Montar el siguiente luces de diferentes colores segun el led.

Mini parlante
parlante, emite circuito en el yprotoboard: sonidos tiene polaridad. Es un pequeo

Resistencias
Son componentes electrnicos que reducen la cantidad de corriente que otros elementos reciben en el circuito.

Complemento Terico:

Se deber explicar que es un protoboard, cmo funciona y para qu lo usaremos ms adelante.

Vemos que cuando presionamos el interruptor el LED se enciende, ya que estamos cerrando el camino de la corriente para permitir que llegue hasta el LED. El interruptor como est normalmente abierto solo permite el paso de corriente cuando se oprima y se cierre.

Experimento 3: Prendiendo un LED con un interruptor NC:


En este experimento podemos cambiar el interruptor NA que usamos en el experimento 3 y lo cambiaremos por un interruptor normalmente cerrado NC. En este experimento conectamos una pila a una resistencia de 1 kilo ohm cuyos colores son caf negro y rojo.

Complemento Terico:
Explicar el cdigo de colores de las resistencias, cmo se sabe qu valor tienen segn los colores que tienen pintados.
Interruptor NA
Es un interruptor que esta normalmente abierto, cuando se presiona se cierra, dejando pasar corriente.

Interruptor NC
Es un interruptor que esta normalmente cerrado, cuando se presiona se abre, y detiene el paso corriente.

Vemos que el LED siempre esta prendido, y si oprimimos el interruptor se apagar ya que el interruptor se abrir y no permitir ms el paso de corriente al LED. El interruptor como est normalmente cerrado siempre permite el paso de corriente pero cuando se oprime este interrumpe el paso abriendo el circuito.

Experimento 4: Prendiendo un LED con un potencimetro de 10k ohm:


En este experimento vamos a variar la intensidad de luz del LED, para esto usaremos un potencimetro, el cual al girar variar su resistencia interna y cambiara por tanto la cantidad de corriente que llega al LED. Para este montaje se debe conectar la patica central del potencimetro y una de sus dos patas de los extremos a la resistencia de 1k ohm como lo muestra el siguiente circuito:

Ejercicios aconsejados:
Hacer girar el potencimetro y descubrir como la intensidad de luz del LED cambia. Cambiar el potencimetro de 10k ohmios por el de 250k ohmios y hacer nuevamente la prueba. Luego de repasar los elementos de electrnica bsica ahora veremos los sensores usados comnmente en robtica, pero los aprenderemos a manejar en los experimentos del taller 4:
Sensor de distancia infrarrojo
Es el sensor encargado de medir distancias y arrojar un voltaje segn la distancia que mida.

CNY70
El sensor de proximidad sirve para detectar objetos cercanos a l, si detecta objeto arroja voltaje, sino arroja 0 voltios.

Fotocelda
La fotocelda o fotoresistencia es una resistencia que vara su valor segn la cantidad de luz que reciba.

Fin de carrera
El fin de carrera es un sensor para detectar cuando un objeto choca al sensor. Se cierra o se abre el circuito interno.

Mdulo educativo de construccin de robots para estudiantes

10

Tarjeta Arduino

Cable usb

La fotocelda o fotoresistencia es una resistencia que vara su valor segn la Fotocelda cantidad de luz que reciba. La fotocelda o fotoresistencia es una resistencia que vara La cabeza de nuestro robot, el microcontrolador su valor segn la y ejecuta rdenescantidad para que nuestro robot haga de luz que reciba.

El fin de carrera es un sensor para detectar cuando un objeto choca al sensor. Se Fin de carrera cierra o se abre el circuito interno. El fin de carrera es un sensor para detectar cuando un objeto es quien recibe choca al sensor. Se las seales de cierra o se abre el deseemos: lo que nosotros circuito interno.

los sensores

Tarjeta Arduino
Esta es la tarjeta donde est el microcontrolador que Tarjeta Arduino se programa para que funcione nuestro robot. Esta es la tarjeta donde est el microcontrolador que se programa para que funcione nuestro robot.

Cable usb
Con este cable conectaremos nuestra tarjeta Arduino al computador. Cable usb
Con este cable conectaremos nuestra tarjeta Arduino al computador.

Pero nuestro robot no se mover sin estos elementos, los aprenderemos a usar en el taller 5:
Chasis de robot Motores
En este chasis se montarn los elementos del robot y este podr Chasissegn de robot moverse lo programemos.
En este chasis se montarn los elementos del robot y este podr moverse segn lo programemos.

El chasis contiene dos motores DC que hacen girar las ruedas del robot. Motores
El chasis contiene dos motores DC que hacen girar las ruedas del robot.

Controlador de motores
Este chip sirve para manejar los voltajes de los motores, ya que Controlador no se conectar depueden motores directamente a la tarjeta arduino. Este chip sirve para manejar los voltajes de los motores, ya que no se pueden conectar directamente a la tarjeta arduino.

11

Taller 3: Juguemos con Arduino

Aprendiendo a usar la tarjeta Arduino:


Lo primero que vamos a aprender es a manejar la tarjeta Arduino, pero qu es? Y para qu nos sirve? Arduino es una tarjeta electrnica que est basada en un microcontrolador (le diremos desde ahora MICRO), como vimos anteriormente un micro es el cerebro de nuestro robot y por tanto debemos ensearle cosas y darle rdenes para que se ejecuten. Entonces nuestra tarjeta Arduino es el camino para poder conectar el mundo de la electrnica con nuestro computador, en el computador escribiremos las ordenes que debe ejecutar nuestro robot y luego debemos grabar esas rdenes en el micro para que se hagan realidad. La tarjeta posee pines, o puntos donde conectaremos diferentes elementos electrnicos y estn marcados con nmeros en la tarjeta. Hay pines digitales, anlogos, y de alimentacin donde podremos sacar energa para conectar otros elementos. Igual que nosotros como seres humanos para entendernos debemos hablar un idioma, algunos hablamos espaol, otros hablan ingls, y otros hasta usan sus manos para hablar, igualmente debemos hablarle a nuestro micro para que nos entienda y nos haga caso, pero para esto debemos usar un lenguaje especfico y decirle las cosas de una manera especial. Le decimos las cosas mediante un cdigo o programa es decir, un texto escrito con instrucciones que entender nuestro micro, y as podr hacer lo que le queremos. En el transcurso de los experimentos iremos aprendiendo a darle rdenes a nuestro micro. Para hacer menos confuso el aprendizaje vamos a hablar de ahora en adelante de programar la tarjeta Arduino o programar el micro indistintamente, pero entendiendo bien que el nico que se programa es el microcontrolador.

Experimento 5: Conectando la tarjeta Arduino al computador con ayuda del cable USB.
Lo primero que debemos hacer es tener a la mano el programa de Arduino que podemos descargar desde la pgina, usaremos la versin 0018 en este caso: http://arduino.cc/es/Main/Software1 O si tienen el programa ya en cd o en algn otro lugar buscaremos en su interior una carpeta con el nombre DRIVERS, en esta carpeta es donde estn ubicados los controladores para que funcione la tarjeta con el computador.

Complemento Terico:
Con el profesor identificar y definir que son los puertos digitales, anlogos, y de alimentacin. Qu sale por un puerto digital?, Qu recibe un puerto anlogo?, Cmo se transforma una seal real en un valor numrico que podemos usar en nuestro micro para hacer nuestros programas?, Qu es poner un voltaje en un pin de la tarjeta, poner en HIGH, enviar un 1 a un pin?. Dnde estn los pines de alimentacin 5v y GND?
Mdulo educativo de construccin de robots para estudiantes Verificar que tenemos la carpeta drivers.

1 En esta pgina encontrarn tutoriales, ejemplos y muchas ayudas para aprender ms sobre Arduino, no duden en ir a visitarla

12

Si poseen una buena conexin a internet y tiene el computador actualizado con solo conectar la tarjeta el sistema operativo Windows buscar el controlador y se instalar el Arduino automticamente, si no es el caso veremos el procedimiento a realizar para instalar los drivers en un sistema operativo Windows XP, si requieren ms ayuda de como instalar los drivers en otros sistemas vayan a la siguiente direccin: http://arduino.cc/es/Guide/HomePage

Procedimiento de instalacin de Arduino en Windows XP:


Tomamos nuestro cable USB y lo conectamos tanto a la tarjeta Arduino como al computador. Inicialmente empezar el sistema operativo a buscar los drivers de la tarjeta: Seleccionamos la casilla Incluir esta ubicacin en la bsqueda: y damos clic en el botn examinar, donde buscaremos la carpeta FTDI USB Drivers que se encuentra dentro de la carpeta Driver del programa Arduino: Luego nos pedir buscar el controlador en internet desde Windows update, pero le diremos que No por el momento y damos clic en siguiente:

Le decimos Instalar desde una lista o ubicacin especifica (avanzado) y damos clic en siguiente:

Finalmente para verificar que todo est en orden, hacemos clic derecho en el icono de mi PC que generalmente est en el escritorio, seleccionamos propiedades luego seleccionamos la pestaa Hardware y luego damos clic donde dice Administrador de Dispositivos:

13

Para la reinstalacin debemos hacer clic derecho donde se presenta el icono con el conflicto y hacemos clic en propiedades, luego en actualizar controlador y hacemos nuevamente los pasos iniciales que acabamos de mostrar.

Experimento 6: En este experimento vamos a comenzar a utilizar la tarjeta Arduino para encender un LED o un mini parlante.
Vamos a hacerlo funcionar por primera vez. Que se haga la luz!...prendiendo un LED. Lo primero que debemos hacer es abrir el programa de Arduino que podemos descargar desde la pgina: Hacemos click en el signo mas (+) donde dice controladores de bus serie universal (USB), y verificamos que el icono donde dice USB Serial Converter esta tal como muestra la imagen siguiente: http://arduino.cc/es/Main/Software2 O si tienen el programa ya en cd o en algn otro lugar podemos abrirlo:

Hacer doble clic (para abrir)

Abrir el programa y tendremos que seleccionar el tipo de tarjeta con la que estamos trabajando, debemos seguir este proceso:

Si todo est en orden podemos empezar a utilizar Arduino en nuestro Pc sin inconvenientes. En caso tal que aparezca un icono con un smbolo amarillo encima debemos reinstalar los drivers:
Mdulo educativo de construccin de robots para estudiantes

2 En esta pgina encontraran tutoriales, ejemplos y muchas ayudas para aprender ms sobre Arduino, no duden en ir a visitarla

14

1. Ir a Menu tools en la parte superior del programa que acabamos de abrir 2. Pasar el mouse donde dice board y de desplegar una lista 3. Hacer clic donde dice Arduino Diecimila, Duelminanove, or Nano w/ AT Mega 168

6. Luego de que automticamente se abra una nueva ventana se debe verificar que el cdigo est bien escrito haciendo clic en la flecha Verify (compilacin del cdigo o verificacin de sintaxis)

7. Vamos a grabar el cdigo en el micro hacer clic en Upload

8. Verificar que se haya programado correctamente: 4. Ir a Men tools -> Serial port -> Elegir Puerto activo (ejemplo: COM5) En caso tal que no aparezcan puertos COM es posible que la tarjeta Arduino haya quedado mal instalada. 9. Se debe conectar un LED tal como muestra la siguiente imagen :

5. Men File ->Examples -> Digital-> Blink

10.Y eso es todo! vemos como el LED prende y apaga sucesivamente, podemos cambiar el LED por un mini parlante para escuchar un sonido intermitente. 11.Pueden cambiar el valor que est en la funcin delay(1000) por un valor ms grande como 4000, y luego por uno ms pequeo como 200. Qu pasa? Que hace esta funcin delay?

15

Complemento Terico:
En este punto es necesario que el profesor haga la introduccin terica sobre programacin con la ayuda del cdigo Blink para prender un LED. Deber ensearse sobre qu es un algoritmo y un programa, cuales son las 3 partes fundamentales de un programa (variables, funciones y funcin principal main que en Arduino es Loop), explicar que es la Sintaxis de un cdigo, que es un comentario y que tipos de variables podemos usar.

void loop(){ // Prender el led enviando // 5 volios por el pin 13 ledPIN digitalWrite(ledPin, HIGH); delay(1000); // esperar un segundo

// Apagar el led enviando //0 voltios por el pin 13 ledPIN digitalWrite(ledPin, LOW); delay(1000); } // esperar un segundo

Anlisis del cdigo:


Como puede verse en este cdigo, hay tres partes fundamentales, que todo cdigo debe tener SIEMPRE, la primera de ellas es la declaracin de variables: int ledPin = 13; // LED conectado al pin digital 13 En esta parte vamos a definir los pines que usaremos de nuestra tarjeta, e igualmente todas las variables que necesitemos usar. El siguiente componente es la funcin configuracin setup(), todo lo que est encerrado dentro los 2 corchetes de la funcin es parte de esta configuracin: void setup(){ // Inicializar el pin digital ledPin como salida: pinMode(ledPin, OUTPUT); } En esta parte le decimos a la tarjeta como vamos a utilizar sus pines, si va a salir voltaje de ellos (OUTPUT) o si van a recibir voltajes o seales (INPUT), para esto usamos la funcin pinMode(nmero de pin, INPUT u OUTPUT). Por ltimo tenemos la funcin principal main que llamamos en Arduino loop(), al igual que la funcin setup() la funcion loop() debe encerrar todo el cdigo entre 2 corchetes que se abren apenas se escribe loop() y se cierran al final de todo el cdigo. Esta funcin se llama loop (en espaol clico) ya que repetir indefinida una y otra vez lo que escribamos entre sus corchetes:

En este cdigo vemos funciones especiales que usa Arduino para poner voltaje en sus pines como la funcin digitalWrite(nmero de pin, LOW/HIGH, ), para poner 5 voltios en un pin y prender el LED que tenemos conectado escribimos digitalWrite(ledPin, HIGH); La funcin delay() si se dieron cuenta sirve para hacer una pausa en el programa, es decir, se congela el programa y no se ejecutan ms instrucciones, por eso en el cdigo de Blink cuando prendemos el LED y hacemos una espera de 1 segundo el LED permanece en ese estado, cuando acaba la espera y la nueva instruccin se ejecuta, el LED se apaga y lo dejamos en este estado por 1 segundo ms, antes de volver a encenderlo. Como se mencion hace un momento la funcin Loop() repite el cdigo indefinidamente, en este ejemplo prende y apaga el LED repetidamente. A medida que vayamos realizando ms experimentos veremos algunas otras funciones especiales de Arduino.

Ejercicios aconsejados:
Los nios deben desarrollar un algoritmo para hacer que uno de sus compaeros que debe hacer de robot, pueda llegar a un lugar del saln partiendo de otro punto. Definir las reglas y las rdenes para que el robot pueda llegar al lugar deseado. Hacer que los nios respondan las siguientes preguntas luego de la clase terica, uno responde y otro lo corrige:
Qu es un programa, para que sirve, en que lo vamos a utilizar? Cmo se escribe un programa, y Qu es un lenguaje de programacin? Qu es un algoritmo? Para qu sirve crear un algoritmo? Las partes de un programa: Qu es y para qu sirve una variable, en qu forma la usaremos, qu es un tipo de variable?, Qu operaciones podemos hacer con los datos o variables, sumar, restar, multiplicar, operaciones lgicas, comparativas, etc.?

Mdulo educativo de construccin de robots para estudiantes

16

Las partes de un programa: Qu es y para qu sirve una funcin, en qu forma la usaremos? Las partes de un programa: Qu es y para qu sirve la funcin principal, en qu forma la usaremos? Qu usamos para programar: las herramientas con las que disponemos son, FOR, WHILE, IF, IF ELSE, SWITCH, para qu nos sirven en nuestros programas?

El siguiente Cdigo es con el que se programar la tarjeta Arduino, se debe copiar en una nueva ventana de programa, compilar (tringulo izquierdo verify) y programar (flecha derecha upload):

Cdigo:
/**************************************************************/ // Creado por Jos Luis Susa - 2010 /*variable que guarda los 4 nmeros donde estarn conectados los 4 LEDs */ int cadenaLeds[ ]={6,7,8,9}; /*Declaracin de la variable que guarda el n del PIN al que se conecta el pulsador*/ int puls=5; /*tiempo es la variable que guarda el valor de la espera que usaremos con la funcin delay*/ int tiempo=200; /*La variable n es el contador en el FOR*/ int n=0; void setup (){ for(n=0;n<4;n++){ /*Configuracin de los pines para los 4 LEDs como salidas*/ pinMode(cadenaLeds[n],OUTPUT); } /*Configuracin del PIN puls como entrada*/ pinMode(puls,INPUT); } void flash(){ /*esta function flash prende los 4 LEDs*/ for(n=0;n<4;n++){ digitalWrite(cadenaLeds[n],HIGH); } delay(tiempo); for(n=0;n<4;n++){ digitalWrite(cadenaLeds[n],LOW); } delay(tiempo); } void loop(){ /*Condicin que se ejecuta si detecta se presiona el pulsador*/ if(digitalRead(puls)==HIGH){ /*se llama a la funcin flash para prender LEDs*/ flash(); } } /**************************************************************/

Experimento 7: Presionando un pulsador se activan varias luces:


Vemos a continuacin la imagen del montaje en protoboard, se usan 4 LEDs (Representados como semicrculos con un signo + y -), 4 resistencias de 330 ohm (naranja naranja caf) conectadas a los 4 LEDs, un interruptor NA y su resistencia de 1K ohm (caf negro rojo).

Explicacin:
En este experimento se conecta un interruptor NA al pin 5 de la tarjeta Arduino de tal forma que sea la entrada del sistema para determinar cundo encender los 4 LEDs conectados a los pines 6, 7, 8, y 9 por medio de sus resistencias. Cada vez que el interruptor (normalmente abierto) es presionado, el pin 5 recibe una seal de 5 voltios y esto enciende los LEDs.

17

Complemento Terico:
Se debe analizar y entender cmo acta la variable cadenaLed[], explicar cmo actan las variables tipo arreglo como esta. Cmo se usa la variable cadenaLed[] en la sentencia FOR. Se debe analizar y entender cmo acta la funcin flash, cmo se usa la funcin en el programa, para que usamos una sentencia FOR y la condicin IF, cmo es la sintaxis te estas sentencias? Cmo se relacionan las tablas de verdad, con la electrnica fsica, los 1 y 0 con las tablas de verdad, para qu me sirven (generacin condiciones IF y ejecucin de acciones dependientes de estas). Qu hace la funcin digitalRead? Para que la usamos en este cdigo?

Cdigo:
/**************************************************************/ // Creado por Jos Luis Susa - 2010 /*variable que guarda los 4 nmeros donde estarn conectados los 4 LEDs*/ int cadenaLeds[ ]={6,7,8,9}; /*n de la entrada analgica a la que va conectado el potencimetro*/ int pot=0; /*La variable n es el contador en el FOR*/ int n=0; /*variable que guarda la lectura de la seal en la entrada*/ int medida=0; /*no es necesario configurar las entradas analgicas, siempre son entradas*/ void setup(){ for(n=0;n<4;n++){ pinMode(cadenaLeds[n],OUTPUT); } } void loop(){ /*Guardamos el valor de la entrada analgica en la variable medida*/ medida=analogRead(pot); /*la seal analgica est entre 0 y 1024. La dividimos en 4 partes.*/ if(medida<1024/4){ /*se enciende el primer LED si la seal est en el primer cuarto*/ digitalWrite(cadenaLeds[0],HIGH); /*los dems se apagan para que cuando la seal disminuya no se queden encendidos*/ digitalWrite(cadenaLeds[1],LOW); digitalWrite(cadenaLeds[2],LOW); digitalWrite(cadenaLeds[3],LOW); } /*seal en el segundo cuarto, 2 LEDs encendidos*/ if((medida>=1024/4)&&(medida<1024/2)){ digitalWrite(cadenaLeds[0],HIGH); digitalWrite(cadenaLeds[1],HIGH); digitalWrite(cadenaLeds[2],LOW); digitalWrite(cadenaLeds[3],LOW); } /*seal en el tercer cuarto, 3 LEDs encendidos*/ if((medida>=1024/2)&&(medida<1024*3/4)){ digitalWrite(cadenaLeds[0],HIGH); digitalWrite(cadenaLeds[1],HIGH); digitalWrite(cadenaLeds[2],HIGH); digitalWrite(cadenaLeds[3],LOW); } /*seal en el ltimo cuarto, 4 LEDs encendidos*/ if(medida>=1024*3/4){ digitalWrite(cadenaLeds[0],HIGH); digitalWrite(cadenaLeds[1],HIGH); digitalWrite(cadenaLeds[2],HIGH); digitalWrite(cadenaLeds[3],HIGH); }

Ejercicios aconsejados:
Hacer que las luces se prendan y apaguen de manera intercalada cuando se oprima el pulsador (estilo auto fantstico).

Experimento 8: Prender 4 LEDs con la ayuda de un potencimetro de 10 K ohm:


En este montaje usamos los mismos 4 LEDs y sus respectivas resistencias de 330 ohmios, usamos un potencimetro conectando a una de sus 3 patas a 5v, la otra a una resistencia de 1k ohmios y la pata central se conecta al pin anlogo 10 de la tarjeta Arduino. Imagen montaje:

} /**************************************************************/
Mdulo educativo de construccin de robots para estudiantes

18

Explicacin:
En este experimento se aprecia cmo puede incluirse un componente anlogo (potencimetro) para controlar segn su valor cual debe ser la accin a ejecutar. En este caso el valor mximo de 5 voltios encender todos los LEDs en cambio de este voltaje mximo solo encender 1, a medida que aumente el voltaje se irn encendiendo cada uno de los LEDs hasta que todos estn prendidos. En el montaje usamos una resistencia de 330 ohmios (naranja naranja cafe), una fotocelda y entre estas sacaremos un cable para llevar el voltaje variable de la fotocelda al pin anlogo 0 de la tarjeta Arduino:

Complemento Terico:
Cmo hacemos la lectura del valor del potencimetro? Para qu sirve la funcin analogRead().

Cdigo:

Taller 4: Bienvenidos al mundo de la robtica, juguemos con los sentidos de un robot.


A partir de este momento vamos a aprender sobre las partes de un robot, iniciaremos con sensores y luego pasaremos al manejo de los motores. Haremos 4 experimentos para manejar los 4 sensores ms utilizados en robtica. Los sensores son los sentidos de nuestro robot, con ellos podrn tocar y saber quin est cerca, si hay luz o no, luego de saber cmo usarlos podemos ponerlos en un robot y hacer grandes e interesantes cosasAs que comencemos!

/**************************************************************/ //Creado por Jos Luis Susa - 2010 //Entrada donde se conecta el sensor int sensorPin = 0; //Salida digital donde se conecta un LED o una bocina int ledPin = 13; //Variable para guardar el valor medido del sensor int sensorValue = 0; void setup() { // declare the ledPin as an OUTPUT: pinMode(ledPin, OUTPUT); //inicializacin serial para mostrar datos en la pantalla Serial.begin(9600); } void loop() { int distanciaCm; // la lectura del sensor va de 0 a 500 aproximadamente sensorValue = analogRead(sensorPin); if(sensorValue>80){ //si el valor medido es > 80 detecta luz // se enciende la salida ledPin digitalWrite(ledPin, HIGH); }else{ // se pone a cero la salida ledPin digitalWrite(ledPin, LOW); } //imprimimos en pantalla el valor medido Serial.print (\nValor Medido:); Serial.print (sensorValue); } /**************************************************************/

Experimento 9: Sensor de luz, cul es su utilidad en robtica?


El sensor de luz o fotocelda es el primer sensor con el que jugaremos, este sensor es una resistencia variable que depende de la cantidad de luz que reciba en su superficie, entre ms luz reciba menos resistencia tendr y viceversa. En el circuito que montaremos veremos como cambiando la luz, cambiar el voltaje que recibe la tarjeta Arduino. Las aplicaciones de este sensor son muy diversas, se puede agregar este sensor a un robot y programar un comportamiento tal que si hay luz el robot avance o de lo contrario permanezca en su sitio, igualmente podramos hacer que un robot al detectar luz genere una seal sonora, o ejecute una serie de movimientos determinados.

19

Explicacin:
En este montaje se recibe una seal anloga por el pin 0 de Arduino, y se visualiza una salida digital por el pin 13. El rango para que encienda o apague el LED depender de las necesidades de uno como programador, dependiendo de la cantidad de luz captada, modificaremos a conveniencia el valor 80 que est en el IF por cualquier otro que deseemos que se ajuste a lo que queremos, el voltaje de salida enviado por la fotocelda ser menor si la esta no recibe luz, ya que su resistencia interna aumenta tanto que se aproxima a un circuito abierto donde no conduce corriente. Se usa una funcin Serial.print que sirve para visualizar en pantalla lo que deseemos, en este caso imprimimos en pantalla la frase Valor Medido y luego imprimimos el valor que tiene la variable sensorValue, el signo \n sirve para generar una nueva lnea, como cuando damos Enter en un teclado. Para ver estos valores en la pantalla del computador, damos clic en el icono monitor del puerto serial (serial monitor): Podemos usar los dos interruptores al tiempo, por ejemplo si conectamos un LED al interruptor NC, este permanecer encendido siempre, a menos que el interruptor sea oprimido, si queremos que el robot retroceda apenas reciba una seal cuando el NA se cierre, estaremos logrando dos efectos diferentes presionando el sensor, apagaremos el LED y haremos que nuestro robot retroceda de forma simultnea. Igualmente los fines de carrera son altamente utilizados para controlar los movimientos de algunos motores, si un motor tiene unido una pequea barra, cuando este gire la barra girara, as si se coloca un fin de carrera de tal manera que luego de cierto giro del motor se toque el sensor con la barra, es posible programar nuestra tarjeta para que detengamos el motor cuando esto suceda y cambiarle el sentido de giro, si colocamos un segundo sensor fin de carrera al otro lado, y hacemos lo mismo, lograremos que el motor se encienda haga girar la barra a un lado hasta tocar el primer sensor y luego regrese hasta que choque con el segundo y vuelva a cambiar el giro. De esta manera lograremos controlar el movimiento de un motor al controlar su giro mximo. El experimento siguiente veremos como es el funcionamiento de este sensor, conectando dos LED como muestra el siguiente diagrama:

Ejercicios aconsejados:
Imprimir en pantalla el valor medido multiplicado por 2, Cmo haramos que la funcin Serial.print() muestre este nuevo valor?.

Experimento 10: Sensor de choque o fin de carrera, cul es su utilidad en


El sensor que usaremos a continuacin es llamado fin de carrera, se puede decir que son dos interruptores en uno, hay un interruptor NA y otro NC, cuando se preciosa el interruptor NA se cierra y el NC se abre, de esta manera es posible enviar dos seales a nuestra tarjeta Arduino al mismo tiempo si queremos. Por ejemplo, si le ponemos este sensor en la parte frontal de nuestro robot si este se chocara de frente oprimira el sensor, si se oprime enviaria una seal digital (5 voltios) a una de las entradas de la tarjeta, podemos programar nuestro robot para que cuando esto suceda retroceda y haga un giro de 180 grados para alejarse del lugar donde se choc.
Mdulo educativo de construccin de robots para estudiantes

20

Cdigo:
/*****************************************************/ // Creado por Jos Luis Susa - 2010 int finCarrera=7; //Declaracin de la variable que guarda el n del PIN al que se //conecta el fin de carrera int pinLed =13; void setup (){ //pin donde se conecta el LED pinMode(pinLed,OUTPUT); //Configuracin del PIN cuyo n guarda la variable //finCarrera como salida digital pinMode(finCarrera,INPUT); } void loop(){ //Condicional que se ejecuta cuando //detecta el finCarrera presionado if(digitalRead(finCarrera)==HIGH){ // se activa la salida ledPin encendiendo el LED digitalWrite(pinLed, HIGH); }else{ // se desactiva la salida ledPin apagando el LED digitalWrite(pinLed, LOW); } } /*****************************************************/

Experimento 11: Sensor distancia, cul es su utilidad en robtica?


Este es quizs el sensor ms usado de todos, el sensor infrarrojo de distancia es muy til para diversas aplicaciones en robtica, ese sensor enva un haz de luz infrarroja (no visible) que al rebotar en algn objeto es recibida por un receptor especial llamado sensor lineal que determina que tan lejos est el objeto, el sensor enva un voltaje por una de sus terminales correspondiente a la distancia medida, entre ms lejos est el objeto ms pequeo el voltaje y entre ms cerca est mayor es el voltaje. Con la tarjeta Arduino leemos el voltaje y determinamos que tan lejos o cerca est el objeto y que queremos que haga nuestro robot, por ejemplo si queremos que evite obstculos le diremos que si el objeto se detect a menos de 15 cm debe parar y girar a la derecha para no estrellarse. A continuacin vamos a hacer el montaje para hacer funcionar el sensor, en este momento ya deben tener bien claro cmo usar el protoboard para conectar el sensor como indica el siguiente diagrama, deben tener cuidado conectando 5v, si se conecta errneamente se daa el sensor, por eso tomen el sensor tal y como muestra el diagrama, el hueco largo hacia la derecha, identificar el cable de la derecha como 5v, el de la mitad como 0v (GND) y el de la izquierda como la salida propia del sensor que ir a la tarjeta Arduino (voltaje de salida):

Explicacin:
En este ejemplo se puede ver inicialmente el LED de la derecha esta encendido sin que el fin de carrera este presionado, ya que este LED est conectado al pin NC (normalmente cerrado) y por tanto el circuito conduce, pero cuando el fin de carrera es presionado el LED de la derecha se apaga y es el de la izquierda quien se prende, ya que el interruptor NA (normalmente abierto) cierra el circuito que enciende este segundo LED. Al tiempo que se enciende este segundo LED se enva una seal digital a la tarjeta Arduino por el pin digital 7 y que segn nuestro programa provoca que se encienda un tercer LED conectado al pin digital 13 de salida.

Ejercicios aconsejados:
Hacer que cuando se oprima el fin de carrera a parte de encender el LED en el pin 13 de la tarjeta Arduino, apaguemos un cuarto LED conectado a otro pin digital. OJO! El nuevo LED debe conectarse con una resistencia de mnimo 330 ohmios entre este y GND, no se debe conectar directamente el LED entre el pin digital y GND porque quemaramos el LED.

21

Cdigo:
/**************************************************************/

Explicacin:
En este experimento se puede ver como la velocidad en que prende y apaga el LED vara de manera inversa a la distancia medida por el sensor. Entre ms lejos el sensor detecte un objeto ms rpido prende y apaga el LED. La distancia es medida mediante la salida de voltaje del sensor, a mayor distancia menor voltaje de salida e viceversa, este voltaje es recibido por la tarjeta Arduino y convertido con su conversor anlogo-digital y guardado en una variable llamada sensorValue.

// Creado por Jos Luis Susa - 2010

//Entrada donde se conectar el sensor int sensorPin = 0; // Salida digital donde se conecta un LED o una bocina int ledPin = 13; // Variable para guardar el valor medido del sensor int sensorValue = 0; //variable donde guardaremos las distancia en cm, //luego de hacer la conversin necesaria con la frmula de abajo int distanciaCm; void setup() { // declarar el ledPin como OUTPUT: pinMode(ledPin, OUTPUT); //inicializacin serial para mostrar datos en la pantalla Serial.begin(9600); } void loop() { //lectura del voltaje arrojado por el sensor //que va aproximadamente de 0 a 600. //este valor debe ser convertido luego a centmetros sensorValue = analogRead(sensorPin); //Se enciende la salida ledPin digitalWrite(ledPin, HIGH); //Tiempo de espera de <sensorValue> millisegundos: delay(sensorValue); //Se desactiva la salida ledPin digitalWrite(ledPin, LOW); //Tiempo de espera de <sensorValue> millisegundos: delay(sensorValue); //imprimimos en pantalla el valor medido Serial.print (\nValor Medido:); Serial.print (sensorValue); //clculo de la distancia en centmetros //a partir del voltaje medido anteriormente distanciaCm = (2914 / (sensorValue + 5)) - 1; /* Como la variable distanciaCm tiene el valor en centmetros que el sensor midi, se puede usar esta variable para hacer las condiciones*/ Serial.print (\n Distancia en Cm:); //imprimimos en pantalla la distancia en cm Serial.print (distanciaCm); } /**************************************************************/

Ejercicios aconsejados:
Modificar el cdigo para que se encienda el LED solo si la distancia medida es menor a 15 cm, si es mayor debe estar apagado el LED. Borrar lo que no necesitaremos, usar la variable sensorValue, la frmula de conversin a cm, la variable distanciaCm y una condicin IF ELSE.

Experimento 12: Sensor proximidad, cul es su utilidad en robtica?


Este sensor se usa generalmente para detectar colores como negro y blanco, ya que como el blanco refleja la luz totalmente el sensor enva una seal de 5v, cuando se pone frente a un color negro, este no permite que haya rebote de la luz infrarroja y por tanto el sensor enva una seal de 0v. Este efecto es til para hacer robot que sigan lneas, si se ubican dos sensores a los costados de una lnea negra, cada vez que se salga un poco de la lnea solo basta hacer girar un poco el robot en sentido contrario para alinearlo nuevamente y seguir la lnea. Hay que tener en cuenta que la luz ambiente puede modificar fuertemente las lecturas del sensor, as que es mejor dejarlo siempre oculto de la luz, si es posible debajo del robot y cubierto por los lados, otra solucin es mantener a su alrededor una luz constante rodendolo por ejemplo de LEDs. Lo primero que debemos hacer es clasificar las 4 patas del sensor con ayuda del siguiente grfico:

Mdulo educativo de construccin de robots para estudiantes

22

El sensor tiene una especie de bombillito de color azul, si ubicamos este, segn el diagrama cada patica vamos a identificarla con una letra, estas letras son importantes para montar correctamente el siguiente diagrama:
Nota: El bombillo azul esta en la parte superior de la imagen

Cdigo:
/***********************************************************/ //Creado por Jos Luis Susa 2010 int sensorPin = 0; // entrada donde se conectara el sensor int ledPin = 13; // salida digital donde se conecta un LED o una bocina int sensorValue = 0; // variable para guardar el valor medido del sensor void setup() { // declare the ledPin as an OUTPUT: pinMode(ledPin, OUTPUT); Serial.begin(9600); //inicializacin serial para mostrar datos en la pantalla } void loop() { // la lectura del sensor que ser fuertemente afectada //por la cantidad de luz ambiente sensorValue = analogRead(sensorPin); //si el valor medido es > 80 detecta color blanco // se enciende la salida ledPin if(sensorValue>80){ digitalWrite(ledPin, HIGH); }else{ // se pone a cero la salida ledPin digitalWrite(ledPin, LOW); } //imprimimos en pantalla el valor medido Serial.print (\nValor Medido:); Serial.print (sensorValue); } /***********************************************************/

Ejercicios aconsejados:
Poner el sensor en la luz del sol y visualizar como afecta la luz ambiente las medidas obtenidas. Arreglar el cdigo para que funciones bajo estas nuevas condiciones ambientales.

23

Taller 5: Bienvenidos al mundo de la robtica, juguemos con los motores de un robot.


En los siguiente dos talleres vamos a aprender a controlar 2 motores de corriente directa llamados motores DC, y sern quienes hagan andar nuestro robot. Inicialmente haremos el experimento para manejar un solo motor luego partiendo de este aprenderemos cmo poder usar un segundo motor, controlando su velocidad y su direccin, para hacer giros, andar en lnea recta o retroceder. Comencemos entonces! Para el trabajo que se realizar se va a usar el puente H de referencia L293D:
1 Habilitar motor1 2 Entrada1 motor1 3 Salida 1 motor1 S1 4, 5 Negativo alimentacin motores y driver S2 6 Salida2 motor1 7 Entrada2 motor1 8 Positivo alimentacin motores (5v a 36v) 9 Habilitar motor 2 10 Entrada2 motor2 S3 S4 11 Salida2 motor2 12,13 Negativo alimentacin motores y driver 14 Salida1 motor2 15 Entrada1 motor2 16 Positivo alimentacin chip (5v)
ENABLE 1 INPUT 1 OUTPUT 1 GND GND OUTPUT 2

1 2 3 4 5 6

16 15 14 13 12 11

VSS INPUT 4 OUTPUT 4 GND GND OUTPUT 3

Experimento 13: Controlando 1 motor.

Para comenzar este montaje es necesario aprender INPUT 2 INPUT 3 7 10 sobre un dispositivo llamado puente H, el objetivo de este dispositivo es servir como interface entre el micro VS ENABLE 2 8 9 y un motor, ya que no es conveniente conectarlos directamente porque el motor maneja corrientes muy El cierre y apertura de los interruptores estar a cargo del micro que est conectado a este altas para el micro y esto lo daara inminentemente. Figura 1: Cerrando interruptores S1 y S4 Figura 2: Cerrando interruptores S2 y S3 puente H mediante los pines de entrada Input 1, 2, 3 y 4. Un puente H generalmente es conocido como driver (controlador, conductor, manejador) de un motor, ya En el pin 8 (alimentacin de los motores) se conectar el cable que sale del regulador de que este dispositivo es quien alimenta al motor, define voltaje amarillo que tenemos, el cual que a su vez estar conectado al adaptador de 9v (9 su direccin, y controla su velocidad mediante una salida voltios). 0 El regulador reducir los 9v a 5v para no daar los motores con exceso de voltaje: 7 Y PWM (obtenida del micro). N C Un puente H es un conjunto de interruptores que se cierran y abren para controlar la direccin del motor. Si se quiere A hacer girar el robot es necesario cerrar los interruptores S1 y S4 o bien S2 y S3 para que circule la corriente por K= Ctodo el motor:
E C

Patillaje del CNY70

Mdulo educativo de construccin de robots para estudiantes

24

Cdigo:
/***********************************************************/ //Creado por Jos Luis Susa 2010 int motor1A = 6; int motor1B = 9; // salida de pwm al motor // salida2 de pwm al motor

void setup() { // PWM del motor pinMode(motor1A, OUTPUT); pinMode(motor1B, OUTPUT); } void loop() { //con analogWrite enviamos un PWM de 100 al pin 6 analogWrite(motor1A,100); analogWrite(motor1B,0); delay(3000); //esperar 3 segundos //cambio de sentido de giro analogWrite(motor1A,0); analogWrite(motor1B,100); delay(3000); } /***********************************************************/

Usamos la funcin delay() para que nuestra tarjeta no ejecute ms instrucciones y por tanto el chip recibir el mismo valor PWM durante estos 3 segundos ya que no se hace ningn cambio, al pasar los 3 segundos se modifican los PWM que se envan y se vuelve a detener todo en este estado para que los motores giren en el nuevo sentido de giro 3 segundos igualmente.

Ejercicios aconsejados:
Hacer que el motor gire durante 4 segundos y luego pare por otros 2 segundos, hacerlo girar hacia el otro lado por 4 segundos y parar otros 2 segundos.

Experimento 14: Controlando 2 motores.


Para conectar 2 motores vamos a usar el mismo montaje anterior pero aadiremos algunos cables ms para poder usar un segundo motor:
Voltaje motor

Explicacin:
En este montaje usamos el integrado (chip) L293 para controlar un motor, este gira en un sentido y en otro alternadamente. En cuanto al montaje, lo primero que se debe notar es que el chip 293 necesita de 2 voltajes diferentes, el primero es el voltaje VSS (pin 16), que es el mismo con el que trabaja la tarjeta Arduino de 5v y el segundo es el voltaje VS del motor (pin 8), que como ya dijimos sale del regulador, NUNCA DEBE USARSE EL VOLTAJE DE LA TARJETA PARA ALIMENTAR LOS MOTORES, SIEMPRE USAR EL REGULADOR EXTERNO. Al pin 8 se pueden conectar voltajes de mnimo 5v hasta 36 voltios, segn la capacidad del motor, para nuestro caso los motores que tenemos reciben mximo 6 voltios. Hay dos lneas que llegan al chip desde la tarjeta Arduino, estas son las seales PWM que enviamos desde Arduino para controlar la velocidad del motor, en el cdigo escribimos la funcin analogWrite(nmero de pin, valor PWM), entre los parntesis ponemos el nmero de pin por el que enviaremos el valor PWM que deseamos. El valor del PWM va de 0 a 255. La razn por la que hay dos PWM para un motor es para poder controlar el sentido de giro, enviando por un pin un PWM y por el otro 0, el motor girar, si queremos que vaya en sentido contrario invertiremos lo que enviamos en los dos pines, en el primer pin enviaremos ahora 0 y en la segundo el PWM que queramos, si queremos detenerlo debemos enviar 0 por ambos pines. Por eso en el cdigo enviamos primero un PWM de 100 por un pin y 0 por el otro, y al cambiar de sentido de giro enviamos 0 al primero y 100 al segundo. Las conexiones para el segundo motor son similares a las del primero, las mismas conexiones que se hicieron en la parte superior del chip se hacen abajo para controlar el segundo motor. En el primer montaje usbamos los pines PWM 6 y 9 del Arduino, en este caso usamos los pines 9 y 11 para el motor de arriba y los pines 5 y 6 para el motor de abajo. Hay que fijarse bien que se conecten los cables en los pines marcados como PWM en la tarjeta Arduino (pin 3, 5, 6, 9, 10, y 11), hay pines que no son PWM y por tanto no nos servirn.

25

Cdigo:
/***********************************************************/ //Creado por Jos Luis Susa 2010 int int int int motor1A motor1B motor2A motor2B = = = = 11; // salida de pwm al motor 9; // salida2 de pwm al motor 5; // salida de pwm al motor 2 6; // salida2 de pwm al motor 2

Explicacin:
Al igual que en anterior experimento hacemos que ambos motores giren en un sentido y luego en otro, invirtiendo las seales PWM que enviamos desde la tarjeta Arduino. Esta vez tenemos 4 pines PWM para manejar los 2 motores, debemos configurar los 4 pines como salidas en la funcin SETUP y luego en la funcin LOOP enviar por ellos las seales PWM que deseamos, primero ponemos a girar el primer motor, luego el segundo y hacemos una espera de 3 segundos para que giren as durante este tiempo, luego cambiamos las seales de ambos motores y esperamos otros 3 segundos girando en este nuevo sentido antes de volver a invertir el giro. Cuando programemos nuestro robot para que vaya al frente, nos encontraremos que quizs las llantas no giran como deseamos, una puede girar en sentido inverso a cmo queremos, y en vez de ir de frente el robot gira, la solucin es invertir los cables de PWM, o los cables del motor, poniendo uno de los cables donde est el otro, lograremos que ambos motores giren de la misma forma con la misma programacin.

void setup() { // PWM del primer motor pinMode(motor1A, OUTPUT); pinMode(motor1B, OUTPUT); // PWM del segundo motor pinMode(motor2A, OUTPUT); pinMode(motor2B, OUTPUT); } void loop() { //girar primer motor analogWrite(motor1A,100); analogWrite(motor1B,0); //girar segundo motor analogWrite(motor2A,100); analogWrite(motor2B,0); delay(3000); //esperar 3 segundos //cambio de sentido de giro primer motor analogWrite(motor1A,0); analogWrite(motor1B,100); //cambio de sentido de giro segundo motor analogWrite(motor2A,0); analogWrite(motor2B,100); delay(3000); } /***********************************************************/ //esperar 3 segundos

Mdulo educativo de construccin de robots para estudiantes

26

Taller 6: A divertirnos construyendo un verdadero robot!


Cuando pensamos en construir un robot siempre vamos a pensar en dos sencillas cosas antes de empezar:
1. Definir qu debe hacer nuestro robot? 2. Pensar en la Programacin

Experimento 15: Construir un robot que se mantenga separa de un objeto:


El primer robot que vamos a construir es el robot que mantenga una distancia especfica a un objeto. Si el objeto se aleja el robot debe acercarse, si el objeto se acerca ms del limite el robot debe alejarse. Como ya sabemos que queremos hacer, ahora debemos pensar en los elementos que necesitaremos para construir el robot:
1. Sensor de distancia frente al robot 2. Dos motores 3. Chasis de robot para acoplar los motores

El primer paso es aunque parezca muy simple, el ms importante. Debemos saber que queremos hacer, debemos pensar en cmo vamos a hacerlo, qu algoritmo usaremos para que haga lo que queremos, qu informacin recibir del exterior y cules sensores tendra nuestro robot, finalmente tendremos que pensar en las salidas que tendr nuestro robot, se mover? Utilizar motores?, parlantes, luces? El segundo paso parte del primero, como vimos un programa comienza con la declaracin de variables as que segn los sensores que definimos en el paso 1 debemos definir las variables donde vamos a guardar los valores de los sensores. Luego de esto sigue la configuracin de la tarjeta Arduino, mediante la funcin setup(),debemos definir cules son pines de salida y entrada, si utilizaremos la comunicacin serial para ver datos en pantalla que necesitemos para probar nuestros cdigos (Serial.begin, Serial.print). Los pines de entrada sern los pines donde conectamos los sensores, los pines de salida sern los pines para sacar una seal PWM, prender LEDs, o Parlantes. Solo nos resta empezar a programar nuestro algoritmo, nuestras condiciones, nuestras acciones, etc. Estas instrucciones irn como vimos anteriormente en la funcin loop().

Para la construccin del robot vamos a tener que montar en el protoboard el sensor de distancia, el puente h L293 para manejar los dos motores como vimos anteriormente, y conectar la tarjeta Arduino con nuestro adaptador de 9v y el regulador para alimentar los motores con 5 voltios. Pidmosle ayuda a nuestro profesor gua para montar todos estos elementos correctamente para seguidamente empezar a programar.

Complemento Terico:
Hacer el ejercicio mental de pensar en varios tipos de robot simples, reconocer sus objetivos, y pensar en cmo hacerlo funcionar (el algoritmo), luego pensar en las variables a utilizar, la configuracin y el desarrollo del cdigo del algoritmo para lograr lo que queremos. Por ejemplo si queremos hacer un robot que huya, si se acerca una mano a un sensor de distancia el robot debe alejarse y hacer sonar un parlante para dar una alerta. Qu tipo de programacin usaramos? Qu variables y que acciones efectuar nuestro robot. Entradas? Salidas?

27

Cdigo:
/**********************************/

if (distanciaCmMedida>12){ //el robot debe acercarce al objeto //motor 1 adelante analogWrite(motor1A,pwm1); delay(100); analogWrite(motor1B,0); //motor 2 adelante analogWrite(motor2A,pwm1); delay(100); analogWrite(motor2B,0); digitalWrite(ledPin, HIGH); //cuando vaya hacia adelante prenda el led Serial.print (\nValor Medido:); Serial.print (pwm1); }else if (distanciaCmMedida<12){ // el robot debe alejarse del objeto //motor 1 hacia atras analogWrite(motor1A,0); delay(100); analogWrite(motor1B,pwm1); //motor 2 hacia atras analogWrite(motor2A,0); delay(100); analogWrite(motor2B,pwm1); digitalWrite(ledPin, LOW); //cuando vaya hacia atras apague el led }else if (distanciaCmMedida==12){ // el robot debe alejarse del objeto //motor 1 hacia atras analogWrite(motor1A,0); delay(100); analogWrite(motor1B,0); //motor 2 hacia atras analogWrite(motor2A,0); delay(100); analogWrite(motor2B,0); } } /***********************************************/

/* El robot que implementa este cdigo, es capaz de mantener una distancia de 12 cm de un objeto en frente de l. Este es un control IA basado en reglas. Creado por Jose Luis Susa 2010 */ int sensorPin = 0; // entrada donde se conectara el sensor int ledPin = 13; // salida digital donde se conecta un led o una bocina int sensorValue = 0; // variable para guardar el valor medido del sensor int distanciaDeseada = 12; //el robot queremos que este a 12cm int pwm1=255; int int int int motor1A motor1B motor2A motor2B = = = = 5; // salida de pwm al motor 1 6; // salida2 de pwm al motor 1 9; // salida de pwm al motor 2 11; // salida2 de pwm al motor 2

void setup() { //configuracion motor 1 pinMode(motor1A, OUTPUT); pinMode(motor1B, OUTPUT); //configuracion motor 2 pinMode(motor2A, OUTPUT); pinMode(motor2B, OUTPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); //inicializacin serial para mostrar datos en la pantalla } void loop() { int distanciaCmMedida; // la lectura del sensor va de 0 a 600 aprox sensorValue = analogRead(sensorPin); //clculo del valor medido en centmetros distanciaCmMedida = (2914 / (sensorValue + 5)) - 1; Serial.print (\n Distancia en Cm:); // imprimimos en pantalla la distancia en cm Serial.print (distanciaCmMedida);
Mdulo educativo de construccin de robots para estudiantes

28

Complemento Terico:
Es necesario analizar el cdigo completo, entender bien las 2 condiciones que se escribieron, para ir hacia adelante si la distancia medida es mayor a 12cm, e ir hacia atrs si la distancia es menor de 12cm.

Cdigo:
/***********************************************************/ /*si distancia >=5 ir de frente si distancia <5 despegarse del muro girando a la derecha si distancia >5 pegarse al muro girando a la izquierda*/ //Creado por Jos Luis Susa 2010 int int int int sensorPin = 0; // entrada donde se conectara el sensor ledPin = 13; // salida digital donde se conecta un LED o una bocina sensorValue = 0; // variable para guardar el valor medido del sensor pwm1=255; // salida de pwm al motor 1 // salida2 de pwm al motor 1

Ejercicios aconsejados:
Hacer que el robot se detenga si el objeto est a una distancia entre 12 y 14. Si est a menos de 12 centmetros alejarse, y si est a ms de 14 cm acercarse al objeto.

Experimento 16: Construir un robot seguidor de muro:


El segundo robot que vamos a realizar es el robot que sigue contornos de objetos, normalmente se llama a este tipo de robots seguidor de muro, queremos que el robot pueda andar al lado de una pared sin estrellarse ni alejarse de ella. Para esto vamos a utilizar el cdigo del anterior robot para hacer este, ya que solo debemos modificar un poco las condiciones y las acciones y obtendremos el comportamiento que queremos. Vamos a analizar lo que debe hacer el robot, si queremos que permanezca cerca al muro, debemos medir la distancia a la que se encuentra, para esto debemos poner un sensor de distancia al costado del robot, si la distancia que medimos se vuelve mayor, por ejemplo a 5 cm, es porque el robot se est alejando del muro, por lo tanto debemos hacer que gire en direccin hacia el muro para acercarse nuevamente, cuando vuelva a conseguir la distancia inferior a 5 cm deber corregir su movimiento y girar nuevamente en el otro sentido para separarse del muro. De esta manera el robot se mover siempre al lado del muro como deseamos. Aunque el movimiento no va a ser perfecto, el robot seguir el muro haciendo los giros sucesivos que vamos a programar. Veamos el cdigo:

int motor1A = 5; int motor1B = 6;

int motor2A = 9; // salida de pwm al motor 2 int motor2B = 11; // salida2 de pwm al motor 2 void setup() { //configuracion motor 1 pinMode(motor1A, OUTPUT); pinMode(motor1B, OUTPUT); //configuracion motor 2 pinMode(motor2A, OUTPUT); pinMode(motor2B, OUTPUT); pinMode(ledPin, OUTPUT); //inicializacin serial para mostrar datos en la pantalla Serial.begin(9600); } void loop() { int distanciaCmMedida; //La lectura del sensor va de 0 a 600 aprox sensorValue = analogRead(sensorPin); //clculo del valor medido en centmetros distanciaCmMedida = (2914 / (sensorValue + 5)) - 1; Serial.print (\n Distancia en Cm:); Serial.print (distanciaCmMedida); if (distanciaCmMedida>5){ //el robot debe acercarse al objeto //motor 1 adelante analogWrite(motor1A,0);

29

delay(100); analogWrite(motor1B,pwm1); //motor 2 adelante analogWrite(motor2A,pwm1); delay(100); analogWrite(motor2B,0); //cuando vaya hacia adelante prenda el LED digitalWrite(ledPin, HIGH); //el robot debe alejarse del objeto }else if (distanciaCmMedida<5){ //motor 1 hacia atrs analogWrite(motor1A,pwm1); delay(100); analogWrite(motor1B,0); //motor 2 hacia atrs analogWrite(motor2A,0); delay(100); analogWrite(motor2B,pwm1); //cuando vaya hacia atrs apague el LED digitalWrite(ledPin, LOW); //el robot debe alejarse del objeto }else if (distanciaCmMedida>=5){ //motor 1 hacia atrs analogWrite(motor1A,pwm1); delay(100); analogWrite(motor1B,0); //motor 2 hacia atrs analogWrite(motor2A,pwm1); delay(100); analogWrite(motor2B,0); } } /***********************************************************/

Ejercicios aconsejados:
Hacer que el movimiento del robot sea ms suave, corregir los movimientos para que los giros sean menos bruscos y agregar una condicin adicional para que si el robot est a una distancia entre 4 y 6 se mueva de frente, en las otras dos condiciones debern modificar el valor de la condicin para que cuando la distancia sea menor a 4 el robot se aleje y si es mayor a 6 se acerque al muro.

Experimento 17: Construir un robot que avance cuando detecte luz:


El ltimo robot que construiremos es un robot que siga la luz, es decir que avance en el momento que detecte luz. Para hacer este robot qu necesitamos entonces?...claro una fotocelda! Vamos a hacer el montaje de la fotocelda tal como aprendimos anteriormente en el experimento 9, igualmente vamos a necesitar montar el L293 para manejar nuestros dos motores que movern el robot.

Complemento Terico:
Es necesario analizar el cdigo completo, entender bien las 2 condiciones que se escribieron, para acercarse al muro si la distancia medida es mayor a 5cm, y alejarse del muro si la distancia es menor de 5cm.

Mdulo educativo de construccin de robots para estudiantes

30

Cdigo:
// Creado por Jos Luis Susa 2010 int sensorPin = 0; // entrada donde se conectara el sensor int ledPin = 13; // salida digital donde se conecta un LED o una bocina int sensorValue = 0; // variable para guardar el valor medido del sensor int motor1A = 5; int motor1B = 6; // salida de pwm al motor 1 // salida2 de pwm al motor 1

int motor2A = 9; // salida de pwm al motor 2 int motor2B = 11; // salida2 de pwm al motor 2 int pwm1=255; void setup() { //configuracion motor 1 pinMode(motor1A, OUTPUT); pinMode(motor1B, OUTPUT); //configuracion motor 2 pinMode(motor2A, OUTPUT); pinMode(motor2B, OUTPUT); // declare the ledPin as an OUTPUT: pinMode(ledPin, OUTPUT); //inicializacion serial para mostrar datos en la pantalla Serial.begin(9600);

void loop() { int distanciaCm; // la lectura del sensor va de 0 a 500 aproximadamente sensorValue = analogRead(sensorPin); //imprimimos en pantalla el valor medido Serial.print (\nValor Medido:); Serial.print (sensorValue); if(sensorValue>80){ //si el valor medido es > 80 detecta luz // se enciende la salida ledPin digitalWrite(ledPin, HIGH); //motor 1 adelante analogWrite(motor1A,pwm1); delay(100); analogWrite(motor1B,0); //motor 2 adelante analogWrite(motor2A,pwm1); delay(100); analogWrite(motor2B,0); }else{ // se pone a cero la salida ledPin digitalWrite(ledPin, LOW); //motor 1 parar analogWrite(motor1A,0); delay(100); analogWrite(motor1B,0); //motor 2 parar analogWrite(motor2A,0); delay(100); analogWrite(motor2B,0);

31

Mdulo Educativo
de construccin de robots para estudiantes

Mdulo educativo de construccin de robots para estudiantes

32

Con este ltimo robot acabamos! Hemos hecho un recorrido por todas las partes del robot, sus sensores, sus motores, su cabeza, la programacin y hemos logrado hacer tres robots con tres comportamientos diferentes. Espero que hayan sido los experimentos divertidos y que hayan jugado con los cdigos, los elementos y con todo lo que tienen a la mano para crear nuevos robots, con tiempo y dedicacin lograran hacer ms y mejores robots y luego vern cmo estos cambiarn el mundo. Gracia por usar esta cartilla, espero que haya sido de gran utilidad para ustedes y hayan quedado muy entusiasmados con todo lo que pueden hacer de aqu en adelante. Cualquier comentario pueden escribir al correo: josesusa@gmail.com, con gusto recibir recomendaciones, opiniones y claro, felicitaciones! Atentamente Ing. Jos Luis Susa Rincn.

You might also like