Manual Del Home Boe-Bot en Castellano
Manual Del Home Boe-Bot en Castellano
Manual Del Home Boe-Bot en Castellano
Home Boe-Bot
MANUAL DE MONTAJE Y PROGRAMACION
INGENIERIA DE MICROSISTEMAS
PROGRAMADOS S.L.
C/ Alda. Mazarredo Nº 47 - 1º Dpto. 2
48009 BILBAO - BIZKAIA
Tel/Fax: 94 4230651
Email: [email protected]
www.microcontroladores.com
Microbot “Home Boe-Bot”
Prólogo
Te presentamos la herramienta más valiosa y agradable para introducirse en la realidad tecnológica del
siglo XXI. La época que nos está tocando vivir está marcada por la rápida evolución de todas las áreas
relacionadas con los computadores. La razón es muy sencilla: se ha logrado construir un computador completo en
un circuito integrado que ocupa lo mismo que una moneda y vale poco más de 1 euro. Con este invento que se
llama “microcontrolador” se ha mejorado extraordinariamente las prestaciones y el funcionamiento de todo tipo de
aparatos, desde los más comunes, como la televisión, el teléfono y el automóvil, hasta los más complejos, como
los empleados en la navegación espacial y la medicina.
Otra de las aplicaciones asombrosas de los microcontroladores son los robots. Y en este caso no nos
referimos a los que se dedican a realizar labores complejas y peligrosas en la Industria, si no a los pequeños
robots móviles que desarrollan sencillas y conocidas tareas y que suponen una gran ayuda para todos los seres
humanos. Estas bestiecillas mecánicas las denominamos “microbots” y ya existen en el mundo muchas que se
encargan de limpiar la casa, preparar la comida, cortar el césped, vigilar, explorar nuevos planetas y acompañar y
entretener a sus propietarios. Realizan labores simples, pero muy necesarias y, a veces, muy tediosas. La
invasión de los microbots acaba de comenzar y los próximos años serán espectadores de su implantación masiva
por todos los confines de la tierra.
Las nuevas tecnologías no son difíciles de comprender ni están reservadas a personas con grandes
conocimientos científicos. Pueden y deben ser conocidas y aplicadas por todos. Sólo se necesitan buenos
maestros y herramientas adecuadas que sean fáciles de manejar, profesionales y accesibles para todos.
El presente tutorial está basado en los manuales y productos de Parallax y se ha redactado en Ingeniería
de Microsistemas Programados S.L. para personas que comienzan desde el principio. Sólo hay que saber usar el
PC y tener las nociones fundamentales de electricidad y programación. ¡Lo imprescindible es el interés y la
curiosidad!. Eso lo tienes que poner tú y si no lo tienes te recomendamos que abandones ahora.
Te proponemos la aventura científica más apasionante que vas a disfrutar en tu vida. Vas a construir una
máquina que hará todo lo que tú le mandes y nada más que eso. Es tan dócil y obediente que te encariñarás con
ella y sufrirás cuando se equivoque. Va a ser tu imagen más leal en el mundo y comenzarás a sentir su
corazoncito, por eso la bautizarás, la cuidarás, la enseñarás a realizar muchas tareas interesantes, pasarás muy
buenos ratos con tu bestiecilla y, cuando lleguéis a intimar, ampliarás sus sensores, añadirás nuevos actuadores y
juntos proyectareis ambiciosas metas. ¡Quizás, hasta te animes un día a presentarla en un certamen para
demostrar a todos de lo que los dos sois capaces!. El próximo lo tienes a mediados de Diciembre en la
Universidad de Deusto (Bilbao) y puedes obtener más información en http://www.eside.deusto.es/asignaturas/arq.
Esta mascota se convertirá en el mejor maestro y amigo que has tenido y te introducirá con entusiasmo en
el diseño de las aplicaciones de la Microelectrónica programada del futuro para hacer de ti un gran profesional.
A lo largo del manual hemos intentado atraer tu atención y simplificar tu aprendizaje, pero si tienes
problemas no estás solo. Tenemos un foro en nuestra dirección en Internet ( www.microcontroladores.com )donde
acuden un montón de enamorados del microbot que siempre están disponibles para echar una mano, compartir
sus proyectos y descubrimientos y organizar reuniones de encuentro y certámenes. Otros foros de “piraos” los
puedes encontrar en www.parallax.com en el que existe uno en castellano dirigido por el consultor Arístides
Alvarez al que agradecemos su valiosísima colaboración y sus siempre acertados consejos.
p-1
Microbot “Home Boe-Bot”
Prólogo
BASIC Stamp, Stamps in Class, Home Work, PBASIC y Boe-Bot son marcas
registradas por Parallax Inc.”
NOTA IMPORTANTE
Una versión de este Manual a todo color y con más claridad en el texto, las figuras y las fotos, junto a una
información más amplia puede encontrarla en el CD que acompaña al Kit y en
www.microcontroladores.com
p-2
Microbot “Home Boe-Bot”
Indice general
Prólogo
Tema 2:
Primera Parte: COMUNICANDO LA HOME WORK CON EL PC. LOS PRIMEROS
PROGRAMAS
i-1
Microbot “Home Boe-Bot”
Indice general
i-2
Microbot “Home Boe-Bot”
Indice general
ANEXOS
i-3
Microbot “Home Boe-Bot”
Indice general
BIBLIOGRAFÍA
DIRECCIONES DE INTERÉS
www.microcontroladores.com
[email protected]
www.parallax.com
www.microchip.com
i-4
Microbot “Home Boe-Bot”
Tema 1
Microcontroladores y Microbots. La invasión
tecnológica del siglo XXI
Microbot “Home Boe-Bot”
Tema 1: Microcontroladores y microbots. La invasión tecnológica del siglo XXI
En la actualidad en un hogar medio de un país avanzado existen más de un centenar de aparatos que
contienen uno o varios microcontroladores. El horno microondas, el lavaplatos, el TV, el vídeo, el teléfono, el aire
acondicionado, el PC y todos sus periféricos, el sistema de alarma, el ascensor y el automóvil son ejemplos
elementos comunes que disponen microcontroladores para su gobierno.
Si el hogar está invadido por los microcontroladores “embebidos”, en los lugares de trabajo son
indispensables. Tanto las labores de gestión, como las de diseño, producción, verificación, almacenaje y
comercialización exigen múltiples sistemas gobernados por microcontroladores.
1-1
Microbot “Home Boe-Bot”
Tema 1: Microcontroladores y microbots. La invasión tecnológica del siglo XXI
Para desarrollar una aplicación práctica basada en un microcontrolador hay que hacer dos cosas.
Conectar a las correspondientes patitas del microcontrolador los dispositivos de Entrada, que recogen información
del mundo exterior y, los de Salida, que realizan las acciones precisas. En segundo lugar hay que confeccionar el
programa basado en las instrucciones que admite el microcontrolador, que sirve para organizar y planificar las
operaciones a realizar a lo largo del tiempo. Una vez puesto a punto el programa de la aplicación se graba en la
memoria que posee el microcontrolador y el sistema queda operativo para siempre.
En resumidas cuentas el diseño exige manejar “hardware”, que se refiere al conexionado físico de los
elementos que intervienen en la tarea con las patitas del microcontrolador, y desarrollar el “software”, consistente
en la creación del programa de instrucciones que planifique las acciones a ejecutar en función de las
características de las entradas.
1-2
Microbot “Home Boe-Bot”
Tema 1: Microcontroladores y microbots. La invasión tecnológica del siglo XXI
Para simplificar el diseño de las aplicaciones con microcontroladores dos jóvenes estudiantes americanos
desarrollaron unos módulos que resolvían la mayor parte del conexionado de los componentes físicos de la
aplicación. Además, esos módulos podían programarse con el lenguaje más fácil del mundo, que se llamó
PBASIC y era similar al que usamos los humanos para comunicarnos, sólo que empleando el idioma inglés. Para
la explotación comercial en todo el mundo de esa gran idea crearon la empresa Parallax, cuyo distribuidor para
España es Ingeniería de Microsistemas Programados S.L. ( www.microcontroladores.com ) y que es la que se ha
encargado de confeccionar este Manual en base a los manuales de Parallax para ayudar a sus clientes españoles
e hispanoamericanos a construir y programar el fantástico Robot Home Boe-Bot, que es el equipo que se incluye
con el presente informe. Una información complementaria se puede encontrar en www.parallax.com.
Para diseñar proyectos reales controlados por microcontrolador utilizando los módulos BASIC Stamp de
Parallax no hace falta tener grandes conocimientos de Electrónica ni de Informática. En muy pocas horas una
persona normal puede ser capaz de poner en marcha experiencias de cierta complejidad.
Los módulos microcontroladores de Parallax han sido creados para poderlos utilizar todo el mundo.
Son extraordinariamente interesantes para los muchachos de 14 a 17 años que cursan la Enseñanza Secundaria
y la Formación Profesional. Suponen una gran ayuda a los que inician los estudios universitarios de carreras
técnicas de cualquier tipo de Ingeniería. Volverá locos de alegría a los aficionados a la Electrónica y al montaje y
diseño de proyectos. Para los que saben o se acaban de iniciar en la programación, esta aventura les va a permitir
comprobar cómo se transforman los deseos expresados por instrucciones en órdenes, así como algo inmaterial
como es un programa, se convierte en algo real que se comprueba en cada instante. Finalmente, los técnicos
especialistas en cualquier materia que tengan interés por automatizar y mejorar las prestaciones de su área de
trabajo encontrarán en la tecnología que proponemos la mejor herramienta para llevar a cabo un auténtico
progreso.
No hay excusas. Esta tecnología es accesible a cualquiera y cuánto antes se inicie en ella mejor
preparado estará para los retos del futuro. Cualquier persona que desee materializar sus ideas tiene a su
disposición la herramienta más potente del mundo, el computador, y sólo se requiere que ponga de su parte la
imaginación, la lógica y la inteligencia de su cerebro.
1-3
Microbot “Home Boe-Bot”
Tema 1: Microcontroladores y microbots. La invasión tecnológica del siglo XXI
Como complemento didáctico a la tarjeta Home Work la editorial Thomson Paraninfo S.A. ha editado un
magnífico libro titulado “DISEÑO PRÁCTICO CON MICROCONTROLADORES. Los sellos mágicos de Parallax”,
que además de presentar con mucha claridad todos los conceptos para todos, ofrece la posibilidad de ir
construyendo y programando una colección de experiencias prácticas muy sugerentes y de complejidad
progresiva usando un económico kit de materiales y la Home Work.
Otra forma de aprender a trabajar con microcontroladores es la construcción del microbot Home Boe-Bot
que está basado en la tarjeta Home Work siguiendo el programa de trabajo que le proponemos en este manual
que acompaña al kit ( www.microcontroladores.com ). El Boe-Bot, así le llamaremos abreviadamente, será para
Vd. algo más que una máquina porque seguramente atrapará su corazón al notar que se le parece, piensa y
actúa como Vd. proporcionándole intensos momentos de felicidad y también de tristeza cuando no alcance los
objetivos. Una recomendación que le asegura una sólida formación es conseguir con el programa de prácticas del
libro mencionado y luego construir el robot que sigue utilizando la tarjeta Home Work y no necesitará volverla a
comprar.
1-4
Microbot “Home Boe-Bot”
Tema 1: Microcontroladores y microbots. La invasión tecnológica del siglo XXI
Es un pequeño robot móvil y programable que realiza una sencilla tarea. Su cerebro consiste en un
microcontrolador que gobierna todas sus acciones y según el trabajo encomendado precisa de un programa
concreto y de unas entradas de información y salidas para los actuadores.
Un microbot es una aplicación basada en microcontrolador. Tiene dos grandes cualidades: es bastante
económico y su propietario le puede destinar a realizar cualquier tarea.
Los microbots se extienden por todo el mundo como una plaga que se multiplica y alcanza todas las áreas
de actuación del ser humano. En pocos años será habitual que cada persona disponga de varias de estas
“bestiecillas” para que le ayuden, le acompañen y le distraigan. La mayoría realizan labores muy simples, pero
enormemente frecuentes tales como limpiar, cocinar, planchar, lavar, vigilar, controlar la calefacción, ayudar a
personas discapacitadas y entretener, de tal forma que intentarán conseguir ocupar el puesto de “mascota
preferida”.
Los microbots pueden servir para “todo”. Sus aplicaciones son ilimitadas y sus restricciones vienen
impuestas por la imaginación y la capacitación técnica del diseñador.
¿Quién no conoce los microbots que exploran Marte?. Pero hay otros colegas que llevan a cabo misiones
similares en el fondo de los océanos y en los cráteres de algunos volcanes. Existen minúsculos microbots que
recorren nuestras venas para encontrar estrechamientos y solucionarlos. Otros simulan el comportamiento de
insectos y seres invertebrados y ayudan en el conocimiento y protección de especies vivas.
1-5
Microbot “Home Boe-Bot”
Tema 1: Microcontroladores y microbots. La invasión tecnológica del siglo XXI
Los microbots más deseados y populares son los que ayudan en las tareas cotidianas del hogar. ¡Qué
alegría al llegar a casa y encontrarla ordenada y limpia, con la comida preparada y nuestra bestiecilla que nos
recibe con una de nuestras canciones favoritas, nos trae las zapatillas, guarda los zapatos y nos acompaña al
salón para que, una vez acomodados, elija el programa de TV deseado y raudo y veloz vaya a traernos un vaso
de vino fresco con un plato de aceitunas rellenas!. ¡Qué tranquilidad cuando nuestro amigo se hace cargo de la
vigilancia de la casa y en sus ratos libres limpia las habitaciones, prepara la comida y el tiempo que le queda se
dedica a cortar el césped del jardín!.
1-6
Microbot “Home Boe-Bot”
Tema 1: Microcontroladores y microbots. La invasión tecnológica del siglo XXI
Vas a comenzar a crear una bestiecilla mecánica en cuyo cerebro depositarás tu semilla y es muy probable
que te aporte más satisfacciones que todos los elementos de ocio que te rodean. Será lo que tu quieras, pero sólo
será capaz de reproducir tus ideas. Al final será tu retrato. Si pones ilusión en la empresa este amasijo de metal y
silicio te acabará robando el corazón y pasará a ser tu mascota preferida. Pero, ¡no te engañes!. Él te devolverá
todo lo que tú le des, ¡ni un ápice más!. Así que te interesa ser generoso. Le podrás enseñar a traerte cosas, a
iluminarte el camino, a limpiar, a vigilar tu casa, pero nunca hará nada que tú no se lo enseñes.
Parallax ha intentado con sus manuales eliminar las dificultades de esta aventura y nosotros, desde
Ingeniería de Microsistemas Programados S.L., hemos querido con este tutorial entusiasmarte con la idea
porque si lo conseguimos sabemos que hemos formado un gran profesional que nunca olvidará estos primeros
pasos. Te ofrecemos nuestra ayuda como cliente desde Internet, desde el teléfono o en nuestras oficinas,
personalmente. Gracias por confiar en nosotros y ahora te toca a ti poner tu granito de arena. Con constancia,
paciencia y entusiasmo recorrerás el camino. Todo lo demás te lo dará con creces esta bestiecilla encantadora
que se llama Home Boe-Bot.
El mundo que viene estará invadido por productos gobernados por microcontrolador y por microbots que
desarrollarán la mayoría de las tareas habituales y automáticas que realizamos los humanos en la actualidad.
Ese nuevo mundo necesita millones de especialistas que diseñen y programen microcontroladores y
microbots. Esos profesionales deben tener una gran ilusión, mucha imaginación y perseverancia en la
consecución de sus metas.
Te deseamos que además de disfrutar aprendiendo con esta maravillosa aventura de crear tu bestiecilla
los conocimientos que adquieras te sirvan para que llegues a ser un profesional orgulloso de tu trabajo y tu
colaboración a construir un mundo mejor.
1-7
Microbot “Home Boe-Bot”
Tema 1: Microcontroladores y microbots. La invasión tecnológica del siglo XXI
1-8
Microbot “Home Boe-Bot”
Tema 2
1ª Parte: Comunicando la Home Work con el
PC
2ª Parte: Aprendiendo a programar con el
PBASIC
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
La mayor parte de los productos modernos disponen de uno o varios computadores para controlar su
funcionamiento. El horno microondas, el teléfono móvil y el automóvil son ejemplos muy claros en los que en su
interior existen cada vez más computadores enanos, llamados microcontroladores, que gobiernan todas las
tareas que realizan. Este tipo de elementos constan de dos partes principales:
1ª. El hardware, que hace referencia a todos los dispositivos materiales y piezas físicas que les configuran.
La estructura mecánica, los componentes electrónicos, los cables, los motores, etc., son los componentes
que constituyen el hardware.
2ª. El software, que es algo invisible e inmaterial. Algo que no se ve, pero que es el “alma” del sistema. Se
refiere a los programas que se hallan grabados en la memoria de los computadores y que sirven para
indicarles lo que tienen que hacer en todo momento, según las condiciones existentes.
El robot que vamos a construir y programar para la realización de múltiples tareas se llama Home Boe-Bot
y su cerebro es un microcontrolador, modelo PIC16C57, en cuya memoria se graba el programa que gobierna
todo el sistema. En la confección de programas se utilizará el lenguaje PBASIC que es similar al que usamos los
humanos para comunicarnos, pero en inglés.
Intérprete
PBASIC
Con los programas se conseguirá que el robot realice cuatro tareas fundamentales:
1.- Detectar, visualizar y registrar todo lo que ocurre en el entorno del robot utilizando los sensores
apropiados.
2.- Tomar decisiones según la información suministrada por los sensores.
3.- Controlar el movimiento del robot mediante los dos motores que incorpora.
4.- Intercambiar información con el usuario (ese eres tú).
En este tema vas a tener que poner en marcha la tarjeta Home Work que es la que controla al robot y en la
que se aloja su cerebro: el microcontrolador. Dicha tarjeta se comunica con un cable serie con el PC en donde se
confeccionan los programas en PBASIC para luego descargarlos en la memoria de la tarjeta. Para realizar la
comunicación entre el PC y la Home Work hay que empezar instalando un software que Parallax pone libremente
a disposición de los usuarios en su sitio Web (www.parallax.com) y nosotros, desde Ingeniería de Microsistemas
Programados S.L., te lo incluimos en el CD que acompaña al kit de materiales.
2-1
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Si Vd. pone de su parte interés y entusiasmo nuestras orientaciones y la calidad del material que maneja
harán todo lo demás. Pero si le surgen pegas nosotros en Ingeniería de Microsistemas Programados S.L.
haremos lo que podamos para resolver las dificultades y en último caso contamos con la colaboración de
Arístides Alvarez, asesor de Parallax, que es uno de los expertos más destacados del mundo y además se
comunica en español.
El software que vamos a utilizar para realizar todas las pruebas se denomina “BASIC Stamp Editor”
(Versión 2.0 ó superior). Con este software se podrán confeccionar en el PC los programas en PBASIC y la
posterior descarga del programa en la Home Work del robot. También se pueden mostrar mensajes en la pantalla
del PC sobre la tarea que el Home Boe-Bot está realizando en un cierto momento y sobre lo que detecta mediante
los sensores.
Si no tiene a mano el CD que acompaña a nuestro kit de materiales o desea la última versión, es muy
sencillo descargarse el Basic Stamp Editor desde el sitio Web de Parallax. Las pantallas que se muestran pueden
diferir algo sobre las correspondientes a la última versión que puede encontrar en la Web, pero los pasos para la
obtención son muy similares en todos los casos:
2-2
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Figura 2-4.- Pulsar el icono "BASIC Stamps Windows Editor Version 2.0 Beta (6 MB).
.
Dentro del sitio Web de Parallax, se puede encontrar diverso material que suele ser muy útil, no olvides
visitarlo a menudo.
En el caso de tener el CD-ROM de Parallax, buscar la referencia del programa mencionado y de forma
similar, instalarlo en el disco duro (Aparecerá un menú, con lo que los pasos a dar son muy sencillos e intuitivos).
2-3
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Para instalar el Editor basta con seguir los pasos que va indicando el asistente de instalación que se
presentan en las figuras 2-5 a 2-8.
2-4
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Figura 2-8.- Cuarta y última ventana y operación que se precisa para la instalación del Editor en el PC.
2-5
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Para que funcione la tarjeta Home Work hay que suministrarla energía eléctrica y comunicarla con el PC.
La conexión del PC a la Home Work puede realizarse mediante un cable serie, que debe ser conectado
tanto al conector serie de nuestro PC (Figura 2-9) como al de la Home Work. En caso de utilizar un conector USB
del PC existe un adaptador USB BAFO y hay que seguir las instrucciones que vienen en el propio adaptador, que
se ofrece como opción.
Cuando se desea conectar la tarjeta Home Work a un puerto USB del PC, Parallax recomienda el
adaptador USB-a canal serie, BAFO BF-810 USB (Parallax Stock# 800-00030), que viene acompañado de Manual
y CD con driver para Windows. Además se puede encontrar las especificaciones y el software para este elemento
en http://www.bafo.com
• (1) Tira de cuatro gomas para actuar como “patas” de la placa Home Work.
• (1) Batería o pila de 9V.
• (1) Tarjeta Home Work.
2-6
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Poner las cuatro gomas en la parte inferior de la placa en cada esquina de la Home Work. Como se
muestra en la figura 2-12.
Figura 2-12.- Las gomas se colocan en las cuatro esquinas de la superficie interior de la Home Work.
Conectar el cable serie y la pila a la Home Work, Figura 2-13 (pasos 1 y 2).
Hay que tener en cuenta que el diodo luminiscente (LED) verde de la Home Work no se enciende cuando
conectamos la batería, sino cuando hay un programa en ejecución.
2-7
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Para realizar una rápida comprobación de la correcta comunicación entre el PC y la Home Work se
comienza ejecutando el programa Editor “picando” en el icono que aparecerá en la pantalla del PC una vez
instalado dicho programa. Figura 2-15.
Para comprobar que la Home Work está conectada a tu PC, hacemos clic en Run y después en Identify.
La ventana de identificación es similar a la que se muestra en la figura 2-17. En la figura se visualiza que está
conectada al puerto COM2 y correctamente detectada.
2-8
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Figura 2-17.- Identificación desde el PC de la tarjeta Home Work mediante el comando Identify.
El primer programa que vamos a realizar (escribir y probar) va a consistir en transmitir un mensaje de texto
desde la Home Work al PC para visualizarlo en su pantalla. En la figura 2-18 se muestra de forma gráfica como la
Home Work envía una cadena de ceros y unos para que después el ordenador la interprete como caracteres de
texto. El Editor BASIC Stamp instalado en el PC es capaz de detectar, interpretar y visualizar estos mensajes.
Los programas ejemplo que vas a escribir o teclear en el Editor BASIC Stamp y descargar a la tarjeta de
Parallax los tienes almacenados en el CD del kit del Home Boe-Bot y te puede evitar teclearlos, aunque
inicialmente te recomendamos que te acostumbres a editarlos totalmente.
Programa: HelloBoeBot.bs2
2-9
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Figura 2-19.- Teclea en la ventana del Editor del PC, el programa mostrado sin olvidar ningún signo de
puntuación.
Introduce el nombre de HelloBoeBot.bs2 dentro del campo File Name y pulsa Save (Figura 2-21).
Figura 2-21.- Se introduce el nombre del programa (HelloBoeBot.bs2) en el campo File name.
2-10
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Finalmente ejecuta el programa activando el comando Run como se muestra en la figura 2-22.
Tras la ejecución del programa aparecerá una ventana de transferencia y justo después deberá aparecer
la ventana de debug (Debug Terminal #1) en la que se visualiza el mensaje mandado desde la Home Work.
(Figura 2-23).
Figura 2-23.- La ejecución del programa HelloBoeBot.bs2 origina el mensaje mostrado en la ventana Debug
Terminal #1.
Hemos editado nuestro primer programa, lo hemos ejecutado, y si todo ha ido bien, desde la Home Work
se ha enviado un mensaje para visualizar en la pantalla del PC. Esto nos asegura el correcto funcionamiento de la
Home Work y la comunicación con el PC y su software.
Las dos primeras líneas son comentarios. Los comentarios no son interpretados por el BASIC Stamp
Editor, pero sirven de gran ayuda tanto para el programador como para la persona que quiera entender lo que
hace el programa. En PBASIC, toda línea que se inicia con un apóstrofe significa que es un comentario. En
nuestro programa el primer comentario informa del nombre del fichero y el segundo de su finalidad.
2-11
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Esta primera línea por comenzar con un apóstrofe se trata de un comentario que sólo sirve para informar
del nombre del programa. La segunda línea es otro comentario que informa de lo que hace el programa:
Con los comentarios hay una excepción. Existen "mensajes especiales" que van precedidos por apóstrofe
pero que actúan como "directivas del compilador" cuya misión es informarle de ciertas condiciones. Todos los
programas tienen como mínimo dos de dichas directivas:
La primera directiva se llama directiva Stamp y sirve para informar al Editor BASIC Stamp que el
programa va a ser descargado en un módulo de Parallax tipo Basic Stamp 2 (BS2), como el que dispone la Home
Work. La segunda directiva llamada PBASIC parametriza al compilador para adaptarle al lenguaje de
programación que se utiliza, y que en este caso es la versión 2.5 de PBASIC.
Un comando o instrucción es una palabra que describe una acción a realizar por el módulo BASIC Stamp.
El primer comando de nuestro programa es DEBUG que sirve para mandar un mensaje al PC por el puerto serie.
El mensaje es el texto entrecomillado que sigue al comando.
El segundo comando END indica la finalización del programa. Es importante que todo programa contenga
este comando ya que al ejecutarse, el módulo BASIC Stamp pasa a modo de bajo consumo. En este modo la
placa se queda en espera hasta que le pulsemos el botón reset o le introduzcamos otro programa mediante el
Editor BASIC Stamp. Si pulsamos el botón reset, el programa comienza a ejecutarse desde el principio y si por el
contrario introducimos un nuevo programa, como es lógico el anterior se borrará para siempre.
En conclusión, el primer programa ha tenido como objetivo enviar un mensaje a la pantalla del PC con la
principal misión de comprobar el correcto funcionamiento de la Home Work, del PC y del programa de
comunicación entre ambos.
El comando DEBUG dispone de diversos formatos para enviar un texto con ciertas características a la
ventana de debug. DEC es un ejemplo de formato que sirve para mostrar un valor en decimal. Un ejemplo de
formato para un carácter de control es CR, el cual enviará un retorno de carro a la ventana de debug. Ahora
puedes modificar tu primer programa con el fin de que tenga más comandos DEBUG con distintos formatos y
caracteres de control. He aquí un ejemplo de cómo hacerlo:
Modifica los comentarios y renombra el fichero a otro nombre (por ejemplo: HelloBoeBotYourTurn.bs2)
Añade estas tres líneas entre el primer DEBUG que pusiste antes y el comando END.
2-12
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
DEBUG DEC 7 * 11
Guarda los cambios, deberás tener un código similar a éste (Figura 2-24):
Ahora ejecuta (Run | Run) el nuevo programa. Debe visualizarse en la ventana de debug un texto como
el de la Figura 2-25.
Recuerda que si se expresan operaciones como 7 * 11, el editor las calcula y genera el resultado. El
símbolo % detrás del comando DEBUG significa que se proporcionan los valores en binario, usando sólo 1 y 0.
Los números detrás de DEBUG sin ningún símbolo previo representan caracteres ASCII; así por ejemplo, DEBUG
65 sirve para visualizar la letra A que responde al código 65 en ASCII.
2-13
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Nota: A veces la ventana de debug no se ve, por lo que debes de ir a Run | Debug | Debug Terminal#1
(Figuras 2-26 y 2-27).
Para poder obtener ayuda sobre el lenguaje de programación o sobre otros temas relacionados con el
Home Boe-Bot, la Home Work o el Editor de BASIC Stamp existen cuatro métodos distintos:
1º.- Mediante la ayuda que viene integrada en el programa BASIC Stamp Editor .
4º.- Enviando un e-mail pidiendo ayuda a alguno de los foros que mantienen Parallax e Ingeniería de
Microsistemas Programados S.L. en las direcciones anteriores de Internet.
Una vez terminada la primera sesión de programación y manejo de la Home Work es importante
desconectar la pila para ahorrar energía (Figura 2-29).
2-14
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Preguntas
Ejercicios
1. Explica lo que puedes hacer con cada comando que se ha explicado en el tema.
2. Explica qué pasaría si cogiéramos todos los comandos de control CR y los pusiéramos fuera del comando
DEBUG y a continuación explica qué texto aparece en la ventana de debug.
3. Explica qué realiza el asterisco en esta instrucción:
DEBUG DEC 7 * 11
4. Adivina qué aparecería en la ventana del terminal si escribiéramos esta línea de código:
DEBUG DEC 7 + 11
5. Hay un problema con los dos comandos de los ejercicios 3 y 4. Cuando ejecutas el código, los números que
se muestran salen seguidos, sin ningún tipo de espacio entre sí, con lo que parece que es un solo número.
Modifica estos dos comandos con el fin de que sus resultados se vean en distintas líneas.
DEBUG DEC 7 * 11
DEBUG DEC 7 + 11
Proyectos
2-15
Microbot “Home Boe-Bot”
Tema 2:
Primera Parte: Comunicando la Home Work con el PC.
Los primeros programas
Después, escribe el formato DEC antes de cada número, vuelve a ejecutar el programa y describe lo que hace
dicho formato. El código ASCII para la A es 65, para la B 66, y así sucesivamente. El espacio está
representado por el 32 y el salto de línea por el 13. Ejecuta el siguiente trozo de código y explica en un párrafo
que hace cada línea:
3. Intenta adivinar que ocurriría si quitas el formato DEC. Escribe un programa en PBASIC para confirmar si has
acertado.
DEBUG DEC 7 * 11
4. Échale un vistazo a la figura 2-18. ¿Cómo puedes mandar un numero 65 (A) utilizando únicamente unos y
ceros? Modifica el programa añadiendo el siguiente segmento de código y verifica que hace lo mismo que el
Proyecto 2.
' Envíar los códigos ASCII de 65, 66, 67, 68, 69, y 70.
' El terminal de DEBUG debe visualizar "ABCDEF".
DEBUG %01000001, %01000010, %01000011
DEBUG %01000100, %01000101, %01000110
5. ¿Qué líneas de código se pueden eliminar del HelloBoeBotYourTurn.bs2 si añades la línea mostrada abajo
justo antes del END?. Asegúrate de que salvas el programa con un nombre distinto.
2-16
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
Un computador es una máquina electrónica que sólo sabe realizar unas pocas operaciones con datos,
pero a mucha velocidad. Su potencia está basada más en la velocidad que en la complejidad de las tareas que
puede llevar a cabo. Muchos computadores no saben ni multiplicar, pero hacen tantos millones de sumas por
segundo que podrían proporcionar el resultado de una complicadísima multiplicación en un instante.
La tarjeta Home Work va a ser la que gobierne a nuestro robot y para ello dispone de un pequeño circuito
integrado, llamado PIC16C57, que es un computador enano o microcontrolador. Sólo es capaz de interpretar 35
operaciones muy sencillas con datos de ocho bits, pero a una velocidad enorme. Para que haga una cualquiera
de dichas operaciones hay que especificarle claramente de cuál se trata y para ello se emplea generalmente una
palabra que define la misión de la operación. La palabra que informa al computador la operación que debe
realizar está expresada en inglés en el lenguaje PBASIC y se denomina comando o instrucción.
El fabricante de la Home Work, Parallax Inc., ha creado un lenguaje formado por unas pocas decenas de
instrucciones que recibe el nombre de PBASIC, que son las que la tarjeta y el microcontrolador que incluye son
capaces de entender y ejecutar. Se llama programa a un conjunto ordenado de instrucciones colocadas para
conseguir un resultado.
Una operación elemental, pero muy importante, que puede reconocer y ejecutar el microcontrolador de la
Home Work es contar tiempo. Es capaz de esperar un tiempo exacto para proseguir con su tarea de ejecutar las
instrucciones siguientes. Para soportar la instrucción de temporización o medida del tiempo el lenguaje PBASIC
dispone de una instrucción o comando de nombre PAUSE. Detrás de dicha palabra basta con añadir el tiempo que
se desea que el microcontrolador temporice. El tiempo se expresa en milisegundos, por tanto la instrucción
PAUSE 2500 regula un tiempo de 2.500 milisegundos equivalentes a 2,5 segundos.
Un programa de comprobación
Como en la sección anterior hicistes y ejecutastes un programa en PBASIC ya conoces tres de sus
instrucciones: DEBUG, END y PAUSE, que acabamos de describir. Con ellas vamos a escribir un programa y
comprobar que la práctica responde a la teoría, así que hazte con un reloj preciso para medir tiempo.
Conecta la Home Work al PC, ejecuta el programa BASIC Stamp Editor y con la ventana correspondiente
en la pantalla inserta la pila de 9 V y edita un programa al que vamos a llamar PRUEBA3_1.bs2 tecleando lo
siguiente.
‘ Programa PRUEBA3_1.bs2
‘{$ STAMP BS2}
‘{$ PBASIC 2.5}
2-17
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
END
Al ejecutarse este programa hay que poner en marcha la cuenta del tiempo con el reloj al aparecer el
mensaje de “INICIO DE LA CUENTA DEL TIEMPO”. Aproximadamente habrán transcurrido unos 5 segundos de
tiempo al visualizarse el mensaje ¿HAN PASADO 5 SEGUNDOS?. Compruébalo y luego modifica el programa
cambiando el tiempo que sigue a PAUSE. Intenta calcular cuál es el tiempo máximo que se puede contar con
PAUSE.
Hasta ahora sólo hemos empleado la tarjeta Home Work y la pantalla del PC y hemos sido capaces de
enviar mensajes con los programas y contar el tiempo. Vamos a comenzar a controlar el funcionamiento de
diversos dispositivos materiales, para lo cual les conectaremos a las patitas de entrada y salida de la Home Work
para que ella con su microcontrolador les gobierne.
Vamos a comenzar regulando el comportamiento de una luz pequeñita que consume muy poco y la has
visto innumerables veces como “piloto” de casi todos los aparatos electrónicos. Por ejemplo, la mayoría de los
aparatos, como la TV, cuando se encienden al conectarse a la red y pulsar el botón ON se les ilumina un pequeña
luz roja que indica que reciben la energía eléctrica. Estas lucecitas se denominan LED (Diodos
Electroluminiscentes) y son dispositivos diodos semiconductores de Silicio y otros materiales que disponen de dos
patitas o terminales y cuando se les aplica una diferencia de tensión entre ambos con la polaridad correctamente
aplicada se encienden y emiten una luz que puede ser de diversos colores. Un terminal se denomina ánodo y se
corresponde con el más largo, y el otro, cátodo y es el más corto y el que está situado en la parte achaflanada de
la cápsula que contiene al LED. En la figura 2-30 se muestra el aspecto externo de un LED y el símbolo que se
usa en los esquemas para representarlo.
Para que se ilumine el LED hay que aplicar unos 2 ó 3 V entre sus terminales, de forma que el polo
positivo se aplique al ánodo y el negativo al cátodo. Como por las patitas de salida de la Home Work se van a
obtener 5 V de tensión hay que colocar delante del LED una resistencia que se encargará de absorber la tensión
sobrante. La resistencia es un dispositivo que no tiene polaridad y da lo mismo la posición en la que se coloquen
sus dos terminales. En la figura 2-31 se ofrece el esquema de encendido de un LED con su resistencia de
absorción cuando se aplican 5 V de tensión a ambos componentes.
2-18
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
El efecto de absorción de tensión de las resistencias depende del valor que tengan, que se mide en
ohmios ( Ω ). Una buena iluminación del LED puede conseguirse con una resistencia de 220 Ω, aunque también
se puede conseguir que se encienda algo con una resistencia de 470 Ω. Como las resistencias suelen ser muy
pequeñas y cilíndricas no se puede grabar fácilmente su valor en el cuerpo y por eso se utiliza un código de
colores para indicar su valor. El código de colores usado en las resistencias se indica a continuación en la Figura
2-32.
COLOR NUMERO
Negro 0
Marrón 1
Rojo 2
Naranja 3
Amarillo 4
Verde 5
Azul 6
Violeta 7
Gris 8
Blanco 9
Figura 2-32.- Para hallar el valor de las resistencias se usan colores que representan números decimales.
Además de estos colores que se usan para averiguar el valor, existen otros dos encargados de informar
sobre la tolerancia o “exactitud” del valor indicado por los colores. Así, si la última franja tiene color ORO significa
que el valor que tiene la resistencia real no se desvía más del 5% del que indican sus colores. En caso de ser
PLATA la tolerancia es del 10 %.
Para hallar el valor aproximado de una resistencia por sus colores hay que situarla frente a nosotros con
sus cuatro franjas de forma que la última, la de la derecha, sea la que corresponde al color de la tolerancia. Figura
2-33.
2-19
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
Figura 2-33.- El valor de esta resistencia con 4 colores: amarillo, violeta, marrón y oro es de 470 Ω, con una
tolerancia del 5%.
1ª.- El último color es el de la tolerancia que puede ser oro (5%) y plata (10%). Si no existe ninguno de los dos
la tolerancia es del 20%.
2ª. El color de la primera franja se corresponde con el primer número del valor.
3ª. El color de la segunda franja se corresponde con el segundo número del valor
4ª. El color de la tercera franja se corresponde con el número de ceros que hay que añadir a los dos anteriores
para expresar el valor en ohmios.
Si se dispone de una resistencia con cuatro franjas de colores: amarillo, violeta, marrón y oro, el valor de la
resistencia será de 470 ohmios (amarillo, violeta y marón) y una tolerancia del 5% (oro). Obsérvese que el tercer
color indica el número de ceros que hay que añadir a los dos primeros números. En nuestro caso por ser marrón
habrá que añadir un cero. Como la tolerancia es del 5% significa que el fabricante garantiza que el valor real de
esa resistencia no se desvía más del 5% del que se ha indicado con los colores. Como el 5% de 470 ohmios son
23,5 ohmios, el valor real de la resistencia estará comprendido entre 470 + 23,5 y 470 – 23,5 ohmios, o sea, entre
493,5 y 446,5 Ω.
Como se aprecia en el esquema de la figura 2-34 para encender a un LED basta conectarle en serie una
resistencia y aplicarle una tensíon de 5V, de forma que el polo positivo se conecte al ánodo y el negativo al
cátodo.
2-20
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
Figura 2-35.- En este circuito los polos de la tensión de alimentación se representan con Vdd (+) y Vss (-).
La tarjeta Home Work dispone de una superficie destinada al montaje de los componentes de los circuitos
prácticos basada en una placa protoboard con numerosos orificios interconectados que permiten realizar la
conexión entre los componentes sin usar soldadura y sin estropearlos. Los terminales de los componentes entran
a presión por dichos orificios.
La protoboard de la Home Work consta de dos zonas blancas de 17 filas con cinco orificios
internconectados entre sí cada una. Los cinco orificios de cada fila están conectados entre sí. Figura 2-36. Si a un
orificio de la protoboard se introduce a presión el terminal del cátodo del LED y a otro orificio de la misma fila de
cinco oirificios se introduce un terminal de una resistencia, quedarán conectados el cátodo del LED con el terminal
de la resistencia.
A la izquierda y en la parte superior de la protoboard existen dos conectores negros con orificios. La tira
vertical se llama X4 y tiene 16 orificios que se denominan P0 a P15 y se hallan conectando las 16 líneas de
entrada o salida del microcontrolador. Nuestros programas podrán definir a cada línea como entrada o salida y en
éstas últimas podremos sacar nivel alto o + 5 V,o bien , nivel bajo o 0 V. Si la línea es de entrada el
microcontrolador leerá en ella la tensión exterior aplicada y reconocerá nivel alto o nivel bajo. El nivel alto puede
estar comprendido entre 2 y 5 V, mientras que el bajo siempre será inferior a 1,4 V. En resumen, las patitas P0 a
P15 cuando actúan como salida pueden sacar niveles lógicos altos ( Vdd) o bajos (Vss). A veces al nivel alto le
llamamos 1 y al bajo 0.
2-21
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
terminales centrales se llaman Vin y proporcionan el voltaje positivo de la pila de entrada, que aún no ha sido
regulada y estabilizada a + 5 V, proporcionando los terminales Vss el polo negativo.
El primer experimento real con control de dispositivos va a consistir en encender un LED 3 segundos,
luego volverle a apagar otros 3 segundos y repetir estas dos acciones tres veces. En resumen haremos parpadear
el LED tres veces cada 3 segundos.
Elegiremos una de las patitas de entrada/salida de la tarjeta Home Work , la P0, y haremos que actúe
como salida generando por ella nivel lógico alto ( + 5V ) durante 3 segundos que encenderá al LED conectado a
dicha patita a través de una resistencia de absorción. En los 3 segundos posteriores saldrá por la patita anterior un
nivel bajo ( 0 V ) y el LED permanecerá apagado. Figura 2-37.
Figura 2-37.- Cuando por la patita P0 sale nivel alto ( + 5 V ) el LED se enciende y si sale nivel bajo ( 0 V ) se
apaga.
Para montar el circuito de la figura 2-37 sobre la placa protoboard de la Home Work se introduce el ánodo
del LED en el orificio P0 y el cátodo en un orificio de una fila cercana. A otro orificio de dicha fila se introduce un
terminal cualquiera de la resistencia de 470 Ω, mientras que el terminal restante se conecta a un orificio que
suministra la tierra y está marcado en el conector X3 como Vss como se presenta en la fotografía de la figura 2-38.
Para encender el LED del montaje de la figura 2-37 hay que sacar un nivel alto por P0 y para apagarle
debe salir un nivel bajo. El lenguaje PBASIC dispone de una instrucción que configura a una de las patitas como
salida y saca por ella un nivel alto. Otra instrucción PBASIC puede configurar una patita de E/S de la tarjeta Home
Work como salida y sacar por ella un nivel bajo.
2-22
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
El comando HIGH seguido por el número de la patita que se desea saca por dicha patita un nivel alto.. Por
ejemplo, HIGH 0, saca un nivel alto ( Vdd ) por la patita P0, lo que originará el encendido del LED del circuito de
parpadeo. La instrucción LOW 0 consigue sacar un nivel bajo ( Vss ) por P0 y apagar el LED mencionado.
Para mantener el estado del microcontrolador un tiempo determinado se utiliza la instrucción PAUSE
seguida del número de milisegundos que se desee esperar. Para controlar espacios de tiempo de 3 segundos se
utilizará PAUSE 3000.
El programa PARPADEO LED se iniciará con los comandos habituales referentes a la especificación del
tipo de módulo de Parallax empleado (BS2 ) y la versión del lenguaje PBASIC ( 2.5 ). Luego repetirá tres veces el
encendido del LED durante 3 segundos seguido del apagado del mismo tiempo y con la instrucción DEBUG se
visualizará sobre la pantalla del PC se comenzará indicando el nombre del programa.
Una vez que hayas tecleado y editado el programa guárdalo con el nombre de PARPADEO LED y
ejecútalo sobre la home Work con la pila conectada. ¿Parpadea tres veces el LED cada 3 segundos?.
Sería muy fácil cambiar el tiempo del parpadeo cada 10 segundos (PAUSE 10000 ) o repetir el parpadeo
seis veces en lugar de tres, pero ¿qué habría que hacer para que el LED quedase parpadeando de forma
indefinida?. ¿Habría que repetir la secuencia HIGH O, PAUSE 3000, LOW 0 y PAUSE 3000 miles de veces?.
Existe una forma muy cómoda y fácil de repetir una secuencia de instrucciones continuamente con una instrucción
PPBASIC llamada GOTO. Con esta instrucción se pasa a ejecutar la instrucción que se desee, para lo cual basta
con poner en dicha instrucción una etiqueta identificativa previa, con dos puntos, y colocar dicha etiqueta detrás
del comando GOTO. Para el caso del parpadeo indefinido la primera instrucción de la secuencia que se quiere
repetir es HIGH 0 y como al acabar la secuencia se quiere regresar a ella se la coloca delante una etiqueta
(INICIO :), que es la que se pone detrás de GOTO para que el flujo de control del programa salte a ella para
ejecutarla, como se muestra en el programa:
2-23
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
Al ejecutar este programa el LED permanecerá parpadeando durante tres segundos de forma indefinida.
Para avanzar en el manejo de las instrucciones PBASIC se propone montar un circuito y confeccionar un
programa que simule un semáforo que normalmente está cerrado, en rojo, para los peatones y abierto para los
vehículos. Existe un pulsador que al presionarlo cambia el estado del semáforo durante 10 segundas para permitir
el cruce de los peatones. Además, cuando los peatones tienen encendido la luz verde de paso, un zumbador lo
confirma generando un pitido.
El semáforo lo simularemos con dos diodos LED que indican el estado para los peatones. Uno de ellos
puede ser de color rojo y el otro verde. El estado habitual del semáforo es estar en rojo para los peatones. Cuando
se presiona un pulsador se enciende el LED verde y se apaga el rojo, además genera un pitido el zumbador. El
cruce de los peatones dura 10 segundos.
En la Home Work los LED estarán controlados por dos patitas P0 y P2 que actuarán como salidas. Cada
LED dispone de su resistencia de absorción. El zumbador piezoeléctrico es un dispositivo con dos terminales con
polaridad. Uno de ellos tiene marcado el positivo ( + ) y a él se debe conectar el polo positivo de la alimentación.
También el zumbador dispone de una resistencia de absorción y está controlado por la patita P15 como se
muestra en el circuito de la figura 2-39.
ZUMBADOR
10K
P15 +
VERDE
470
P2
470
P0
ROJO
Figura 2-39.- Circuito eléctrico de conexionado de los tres dispositivos de salida del semáforo sonoro.
El pulsador es un periférico de entrada porque se encarga de introducir a la Home Work un nivel lógico
alto cuando no está presionado, mientras que si se presiona introduce por la patita P5 un nivel bajo. El circuito de
conexionado y funcionamiento del pulsador es el de la figura 2-40.
2-24
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
+5Vcc
10K
PULSADOR
En la fotografía de la figura 2-41 se presenta el semáforo sonoro montado sobre la tarjeta Home Work.
Para indicar el estado habitual del semáforo el programa deberá conseguir el siguiente estado.
Al presionar el pulsador e introducir un nivel bajo por P5 se invierte el estado del semáforo y tras 10
segundos retorna al estado habitual. Durante dicho tiempo el estado del semáforo es el siguiente.
2-25
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
El estado de los dispositivos de salida del semáforo sonoro depende del nivel introducido por el pulsador
por P5. Dicho nivel o valor del pulsador será una variable X que puede tomar dos estados (variable binaria). Un
estado llamaremos 1 cuando el pulsador no está presionado y se introduce nivel alto por P5. Cuando se presiona
el pulsador la variable X pasará a valer 0 e indicará que se está introduciendo nivel bajo por P5. El programa
manejará una variable binaria X cuyo valor depende del pulsador. Los dispositivos de salida toman un estado que
depende del que tenga en cada momento la variable X. Por eso el programa deberá analizar X y según valga 0 ó 1
los dispositivos de salida tomarán un estado u otro. Para evaluar una condición y pasar a ejecutar una secuencia
de instrucciones u otra el lenguaje PBASIC dispone de la instrucción:
En el ejemplo del semáforo sonoro la condición de la anterior instrucción se corresponderá con el valor de
la variable X. Si X = 0 el pulsador está presionado y entonces (THEN) se debe saltar a la instrucción
correspondiente a la etiqueta que se indica. En caso contrario que X = 1 se ejecuta la siguiente instrucción a la
IF...THEN. Recuérdese que cuando X = 0 se debe poner a los dispositivos de salida en un estado transitorio
durante 10 segundos que corresponde con el permiso de cruce de los peatones. El programa que cumple estos
condicionantes puede ser el siguiente.
Debes editar el programa, cargarlo con el nombre de SEMÁFORO SONORO y ejecutarlo. Si todo va bien
debes intentar modificar y mejorar el semáforo añadiendo todas las acciones que estimes oportunas.
Para completar un vistazo rápido del manejo de las principales instrucciones del PBASIC vamos a
confeccionar un programa derivado del semáforo sonoro. En lugar de que el zumbador pite continuamente durante
los 10 segundos en los que pueden cruzar los peatones lo que va a generar son pitidos y silencios alternados
cada segundo. Esto supone que “aproximadamente” durante los 10 segundos habrá 5 intervalos de 1 segundo en
los que el zumbador pita y otros tantos de la misma duración en los que está en silencio.
2-26
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
El programa que sólo controla al zumbador y le hace pitar y callar durante 10 segundos en intervalos de 1
segundo podía ser el siguiente que puedes probar si funciona en la práctica.
END
Teclea este programa, sálvalo con el nombre de INTERMITENCIA ZUMBADOR y ejecútalo sobre la Home
Work con la pila conectada y el circuito del semáforo sonoro montado. Sólo deberá activarse el zumbador con 5
intermitencias de pitido sonido de 1 segundo. Observa lo que pasa con los dispositivos restantes a los que el
programa no les controla.
El programa anterior repite cinco veces la misma secuencia de instrucciones haciendo muy larga y tediosa
la edición del mismo. El lenguaje PBASIC dispone de una instrucción que posibilita repetir una secuencia de
instrucciones el número de veces que se desee. Tiene una estructura que comienza con
FOR VARIABLE = 1 TO N
A la que sigue la secuencia de instrucciones que se desea repetir N veces. Tras la secuencia repetitiva se coloca
el comando NEXT. Por ejemplo, si se quiere repetir cinco veces la alternancia del zumbador (HIGH 15, PAUSE
1000, LOW 15, PAUSE 1000) se podría confeccionar este programa.
2-27
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
En el programa anterior la línea CONTADOR VAR BYTE sirve para definir una variable llamada
CONTADOR que tiene un tamaño byte lo que supone que su valor máximo puede alcanzar 255. En nuestro caso
el valor a alcanzar en el programa es 5. También se pueden declarar variables de tamaño WORD, en cuyo caso el
máximo valor posible es de 65.535.
La instrucción FOR variable = A TO B lo que hace es repetir la secuencia de instrucciones que la siguen
desde que la variable vale A hasta que llega a valer B, al incrementarse una unidad cada vez que se repite la
secuencia. Se podría alcanzar el valor final B en pasos de 2 en 2 o de 5 en 5, en cuyo caso detrás de la línea
FOR ... TO... habría que indicar el valor de cada repetición con el comando STEP 2 , STEP 5, etc.
Intenta ejecutar el programa y si sale bien haz un nuevo programa de SEMÁFORO SONORO con las
últimas instrucciones que has aprendido.
Es frecuente que un programa deba ejecutar una tarea en diversas ocasiones. Un posible ejemplo sería
una aplicación en la que se tuviese que generar el pitido alterno del zumbador en varias situaciones diferentes.
Esto exigiría tener que insertar en el programa esa tarea repetitiva tantas veces como fuese necesario. Si a la
parte que se repite se la llama subrutina, el lenguaje PBASIC permite escribirla una sola vez en el programa y
cada vez que se precise realizar una llamada a la misma. Se antepone a la secuencia de instrucciones de la
subrutina la etiqueta identificativa oportuna y cada vez que se quiera ejecutar se utiliza el comando GOSUB
“etiqueta” ( IR a la SUBRUTINA etiqueta). La secuencia de la subrutina debe terminar con la instrucción RETURN
que provoca que el flujo de control pase a realizar la siguiente instrucción a GOSUB etiqueta que hizo la llamada.
Para manejar las subrutinas se propone confeccionar el programa del semáforo sonoro pero en el que se
contemple como una subrutina el conjunto de instrucciones correspondiente a las cinco alternancias de 1 segundo
de pitido-silencio del zumbador. A este programa final le llamaremos SEMÁFORO SONORO COMPLETO.
X VAR BIT
CONTADOR VAR BYTE
INICIO: X = IN5
IF X = 0 THEN PASO
2-28
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
HIGH 2
LOW 0
LOW 15
GOTO INICIO
PASO: LOW 2
HIGH 0
GOSUB PITAR ‘Llamada a la subrutina PITAR
GOTO INICIO ‘Salto a INICIO
END
Con estos sencillos ejercicios de montaje y programación es posible pasar a iniciar el montaje y
programación del robot Home Boe-Bot que al estar basado en la tarjeta Home Work utilizará las mismas técnicas e
instrucciones que las que acabamos de revisar experimentalmente. En el Anexo 1 de este Manual se recogen las
características principales de todas las instrucciones PBASIC con algunos ejemplos de uso. Puedes descargarte
del sitio www.parallax.com manuales más completos del PBASIC.
Sólo se han presentado las instrucciones más comunes y las técnicas de programación básicas y aunque
son suficientes para acometer tu aventura con el robot si aún quieres profundizar y realizar experimentos más
divertidos y complejos te recomendamos los libros:
1º) “Diseño Práctico con Microcontroladores para todos”, de Angulo J. Mª., Romero, S. y Angulo I., editado
por Thomson-Paraninfo.
2º) “Microcontroladores PIC. Diseño Práctico de Aplicaciones” (Primera Parte con CD), de Angulo J. Mª y
Angulo, I., editado por Mc Graw-Hill en.
3º) “Laboratorio de Prácticas de Microelectrónica”, Volumen II, de Angulo, J. Mª y editado por Mc Graw-Hill.
2-29
Microbot “Home Boe-Bot”
Tema 2:
Segunda Parte: Aprendiendo a programar con el lenguaje PBASIC
2-30
Microbot “Home Boe-Bot”
Tema 3
Servomotores. La fuerza de la bestia
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
En este tema vamos a conectar, ajustar y probar los motores del Home Boe-Bot. Se trata de unos motores
de corriente continua de enorme fuerza y gran precisión de giro que controlarán el movimiento de las ruedas
motrices del robot. Hay que entender ciertos comandos PBASIC y algunas técnicas de programación que
controlarán la dirección, velocidad y duración del movimiento de los motores. De esta manera, las experiencias #1,
#2 y #5 te describirán las herramientas de programación y en las experiencias #3, #4 y #6 se aplicarán a los
servomotores. Como el control de la precisión del servo es la clave para conseguir el mejor rendimiento del Home
Boe-Bot, es importante completar estas experiencias antes de montar los servos en el chasis del Home Boe-Bot.
Los servomotores son motores de corriente continua que incorporan un circuito electrónico que permite
controlar de forma sencilla y segura la dirección, la velocidad y la duración del giro de sus ejes mediante impulsos
eléctricos.
En la figura 3-1 se muestran dos vistas externas de los servos de giro completo de Parallax. Muchas de
las partes que se muestran en la figura se harán referencia en este tema. Los servos especiales de Parallax que
usaremos pueden girar de forma continua en los dos sentidos, mientras que los servos estándar sólo giran unos
270º.
Controlar la velocidad de un servo y su dirección requieren un programa que envíe desde el módulo
microcontrolador un conjunto de señales repetidamente. Dichas señales tienen que enviarse unas 50 veces por
segundo para que el servo mantenga su dirección y su velocidad. Esta experiencia consta de varios programas de
ejemplo escritos en PBASIC, que muestran cómo repetir la misma señal y controlar su duración.
El comando PAUSE indica al BASIC Stamp que espere durante un tiempo antes de ejecutar el siguiente
comando. Su formato es el siguiente:
PAUSE Duración
El número que pongas a la derecha del comando PAUSE es el parámetro Duración y es el valor que
indica al BASIC Stamp cuánto tiempo tiene que esperar antes de pasar al siguiente comando. Las unidades del
parámetro Duración son milisegundos (ms). De este modo, si quieres esperar un segundo, utiliza el valor 1000.
PAUSE 1000
PAUSE 2000
3-1
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
Hay muchas formas distintas de utilizar el comando PAUSE. El programa que se propone usa PAUSE
para hacer que se muestren durante un instante mensajes que dicen cuánto tiempo ha pasado. El programa
debería esperar un segundo antes de enviar el mensaje “Ha transcurrido 1 segundo...” y otros dos más antes de
mostrar “Han transcurrido 3 segundos...”.
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Inicio..."
PAUSE 1000
DEBUG CR, "Ha transcurrido 1 segundo..."
PAUSE 2000
DEBUG CR, "Han transcurrido3 segundos..."
END
Puedes cambiar el retardo entre mensajes cambiando el parámetro duración de los comandos PAUSE.
• Intenta cambiar los parámetros duración 1000 y 2000 por 5000 y 10000, por ejemplo:
DEBUG "Inicio..."
PAUSE 5000
DEBUG CR, "Han transcurrido 5 segundos..."
PAUSE 10000
DEBUG CR, "Han transcurrido 10 segundos..."
Una de las mejores cosas de los ordenadores y de los microcontroladores es que nunca se quejan por
estar haciendo la misma tarea aburrida una y otra vez. Aquí tienes un ejemplo de un programa que repite la misma
operación constantemente.
Puedes colocar comandos entre las palabras DO y LOOP si quieres que se ejecuten reiteradamente.
Por ejemplo, digamos que quieres mostrar un mensaje indefinidamente, una vez cada segundo.
3-2
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
Simplemente coloca los comandos DEBUG y PAUSE entre las palabras DO y LOOP de esta forma:
DO
DEBUG "Hello!", CR
PAUSE 1000
LOOP
Con la estructura del PBASIC formada por DO...LOOP se puede repetir de forma indefinida la secuencia
de instrucciones que se encuentra entre dichos comandos
DO
DEBUG "Hola!", CR
PAUSE 1000
LOOP
Un mensaje distinto
Puedes modificar el programa de tal forma que parte de él se ejecute una sola vez y otra parte se ejecute
varias veces.
DEBUG "Hola!"
DO
DEBUG "!"
PAUSE 1000
LOOP
En este ejemplo construirás circuitos que emitan luz para poder “comprobar” el tipo de señales que se
usan para controlar los motores del Home Boe-Bot.
3-3
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
Figura 3-2.- Circuito para medir el tiempo y repetir las mismas acciones. Utiliza dos LED, cuyos cátodos se
conectan con tierra (Vss) y sus ánodos con las patitas de I/O de la Home Work a través de sendas resistencias.
Los comandos HIGH y LOW sirven para sacar por las patitas de salida del microcontrolador un nivel alto
(Vdd) y bajo (Vss), respectivamente. El parámetro Pin que sigue al comando identifica la patita de I/O
(Entradas/Salidas) por la que sale el nivel lógico.
HIGH Pin
LOW Pin
Por ejemplo, si usas el comando HIGH 13 le ordenas al módulo microcontrolador que saque por el pin de
I/O nº 13 un nivel lógico alto, o sea la tensión positiva (Vdd), lo que conecta el ánodo del LED con el positivo y
como el cátodo está permanentemente conectado a tierra, figura 3-2, el LED se ilumina.
Del mismo modo, si usas el comando LOW 13, sale por el pin 13 el voltaje Vss, lo que apaga el LED.
Probémoslo.
DO
HIGH 13
PAUSE 500
LOW 13
PAUSE 500
LOOP
3-4
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
Hacer parpadear el otro LED (conectado a P12) es tan simple como cambiar el parámetro Pin en los
comandos HIGH y LOW y ejecutar de nuevo el programa.
DO
HIGH 12
PAUSE 500
LOW 12
PAUSE 500
LOOP
DO
HIGH 12
HIGH 13
PAUSE 500
LOW 12
LOW 13
PAUSE 500
LOOP
• Ejecuta el programa modificado y observa cómo ambos LED parpadean aproximadamente al mismo tiempo.
También puedes conseguir que cuando un LED esté encendido, el otro permanezca apagado ajustando
en el comando PAUSE el parámetro Duración dándole valores mayores o menores.
• Pruébalo
Los niveles lógicos altos y bajos que genere el programa que controla el giro de los servos deben durar
una cantidad muy precisa de tiempo. Esto es debido a que el circuito electrónico que gobierna a los servo miden la
cantidad de tiempo que una señal permanece alta, y la usan como si se tratase de una instrucción para girar. Para
controlar con precisión el giro del servo, el tiempo que esas señales permanecen altas tiene que ser mucho más
preciso de lo que se puede conseguir utilizando los comandos HIGH y PAUSE. En el caso del comando PAUSE
sólo se puede controlar su parámetro Duración con pasos de 1 ms. Hay un comando PBASIC diferente, llamado
PULSOUT, que proporciona señales de nivel alto durante periodos de tiempo muy pequeños. En este caso, su
parámetro Duración expresa valores expresados en unidades de "dos" millonésimas de segundo.
Puedes enviar una señal HIGH que encienda el LED P13 durante 2 µs con el siguiente comando:
PULSOUT 13, 1
PULSOUT 13, 2
3-5
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
El comando que se propone seguidamente envía una señal alta durante el tiempo suficiente para que se
puede llegar a observar:
¿Durante cuánto tiempo permanece encendido el LED conectado en P13 cuando envías este pulso?
Veamos. El tiempo que está encendido es 65000 veces 2 µs. Es decir:
El diagrama de tiempos de la figura 3-3 muestra el tren de pulsos que estás a punto de enviar al LED con
este nuevo programa. Esta vez la señal alta dura 0.13 segundos y la señal baja 2 segundos. Esta señal es 100
veces más lenta que la señal que necesita el servo para controlar su movimiento.
DO
PULSOUT 13,65000
PAUSE 2000
LOOP
Este programa envía un pulso al LED conectado a P13 y después envía otro al LED conectado a P12, tal y
como se muestra en la figura 3-4. Después, hace una pausa de dos segundos.
3-6
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
DO
PULSOUT 13,65000
PULSOUT 12,65000
PAUSE 2000
LOOP
Recuerda que la señal del servo debe ser 100 más rápida que la del programa que acabas de ejecutar.
Primero probemos a ejecutar el programa diez veces más rápido. Para ello debemos dividir los parámetros
Duración por 10 (PULSOUT y PAUSE).
DO
PULSOUT 13, 6500
PULSOUT 12, 6500
PAUSE 200
LOOP
• Ejecuta el programa modificado y comprueba que hace que el LED parpadee 10 veces más rápido.
Ahora probemos a hacer que el parpadeo sea 100 veces más rápido. El LED parecerá que no parpadea y
que se ilumina con cierta intensidad . Eso es debido a que el LED está encendiéndose y apagándose tan
rápidamente que el ojo humano no puede detectar los cambios de estado, sólo del brillo promedio.
3-7
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
DO
PULSOUT 13, 650
PULSOUT 12, 650
PAUSE 20
LOOP
• Ejecuta el programa modificado y observa que ambos LED aparecen iluminados aproximadamente con el
mismo brillo.
• Prueba a sustituir por 850 el parámetro Duración del comando PULSOUT que se aplica a P13.
DO
PULSOUT 13, 850
PULSOUT 12, 650
PAUSE 20
LOOP
• Ejecuta el programa modificado y comprueba que el LED de P13 parece más brillante que el LED en P12.
Posiblemente necesites tapar los LED con las manos para poder apreciar la diferencia, ya que la luz que
emitan será muy tenue. El brillo de ambos es distinto porque el LED conectado a P13 permanece más tiempo
encendido que el que está conectado a P12.
• Prueba a sustituir por 750 el parámetro Duración del comando PULSOUT que va a ambos LED.
DO
PULSOUT 13, 750
PULSOUT 12, 750
PAUSE 20
LOOP
• Ejecuta el programa y verifica que la intensidad con la que brillan ambos LED es la misma de nuevo.
En esta práctica montarás los servos y los conectarás a sus pilas exclusivas de alimentación así como a
las patitas de la Home Work por las que saldrán las señales que los gobernarán. Mientras los circuitos electrónicos
de la tarjeta Home Work se alimentan con una pila de 9 V ubicada en la propia tarjeta, los servos precisan de una
alimentación de 6 V procedentes de 4 pilas de 1,5 V que se alojan en un portapilas. Los servos consumen
bastante intensidad por lo que se recomienda que sus pilas sean potentes y recargables.
Los componentes necesarios para esta experiencia son los siguientes (Figura 3-5):
Nota: Mientras que los circuitos electrónicos montados en la tarjeta Home Work se alimentan con la pila de 9V
ubicada en la propia tarjeta, los servos precisan de una alimentación de 6V procedentes de las 4 pilas de 1,5V que
se insertan en el porta pilas. Los servos consumen bastante intensidad por lo que se recomiendan pilas potentes y
recargables.
3-8
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
La figura 3-6 muestra el esquema de conexión de los servos. Antes de empezar a montar este circuito,
asegúrate de que has desconectado la pila de 9 V de la Home Work.
Figura 3-6.- Conexionado de los tres cables de los servos (White:blanco, Red:rojo y Black:negro)
• Comprueba que los colores de los cables de los servos coinciden con lo que se muestra en la figura 3-7.
3-9
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
Figura 3-8.- Aspecto final del conexionado de los servos. Durante el montaje no tener conectadas las pilas
• Añade los LED y las resistencias al circuito para la visualización de las señales como se muestra en la figura 3-
9, de esta forma las señales que se envíen a los servos también iluminarán los LED.
3-10
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
Figura 3-9.- Se conectan dos LED con sus resistencias de absorción para visualizar las señales enviadas a los
servos.
• Cuando hayas hecho y comprobado todas las conexiones coloca las pilas del portapilas y conecta la de 9 V a
la Home Work.
En esta actividad ejecutarás un programa que enviará una señal a los servos que les obligará a que estén
parados. Como los servos no vienen ajustados de fábrica, cuando se les aplica la señal de “paro” en vez de estar
quietos tendrán un ligero movimiento, que habrá que eliminar.
La señal de ajuste
La figura 3-10 muestra la señal que se enviará para calibrar los servos. Dicha señal consiste en un pulso
de 1’5 ms que se genera con el comando PULSOUT que utilizamos en prácticas anteriores para hacer parpadear
los LED. Los servos vienen preparados para permanecer parados con un pulso de 1’5 ms, así que
pasaremos al comando PULSOUT el parámetro Duración con un valor de 750.
Figura 3-10.- Señal necesaria para que los servos estén parados. Se usa en el ajuste inicial.
Es conveniente que ajustes los servos de uno en uno. De ese modo podrás oír con claridad si uno de ellos
se está moviendo ligeramente e identificarlo. El siguiente programa te permite ajustar el servo conectado a P12.
Cuando termines repite el mismo procedimiento para el otro servo.
• Comprueba las conexiones a las baterías tanto de la Home Work como de los servos.
3-11
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
• Comprueba que el LED de monitorización conectado a P12 muestra actividad. Debería estar emitiendo luz,
indicando que se están transmitiendo pulsos al servo conectado a P12.
Si el servo todavía no está bien ajustado su aspa fijada al eje comenzará a girar y podrás oír el motor
interno haciendo ruido.
• Si el servo no está ajustado deberás usar un pequeño destornillador de cabeza plana para ajustar
delicadamente su potenciómetro, tal y como se muestra en la figura 3-11. Ajusta el potenciómetro hasta que
consigas que el servo deje de girar. Hazlo con mucho cuidado porque una imprudencia puede romper al servo.
Figura 3-11.- Mueve cuidadosamente el potenciómetro del servo con un pequeño destornillador de cabeza plana
hasta que deje de girar, cuando está recibiendo la señal de calibración.
• Repite el proceso anterior para el servo conectado a P13 utilizando el siguiente programa
(CenterServoP13.bs2):
3-12
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
En esta experiencia aprenderás lo que son las variables y a utilizarlas en los programas para almacenar
valores. Todos los programas del Home Boe-Bot que aparecerán a partir de ahora utilizarán, en gran medida, las
variables. Si, en los programas, somos capaces de guardar valores en variables, el siguiente paso será contar. Y
desde el momento en que somos capaces de contar, podemos controlar el número de veces que se repiten las
cosas.
Como ya hemos dicho, las variables sirven para almacenar valores, pero antes de utilizarlas hay que
declararlas:
Las variables que se declaran con tamaño Word admiten un valor máximo en decimal de 65.535. Una vez
declarada una variable, ésta puede ser inicializada, es decir, se le puede asignar un valor inicial:
valor = 500
otro_valor = 2000
El símbolo “=” es un operador. Se pueden utilizar distintos operadores para realizar operaciones
matemáticas y asignar valores a las variables, por ejemplo:
valor = 10 * valor
ancho = ancho * promedio
Este programa muestra la forma de declarar variables, inicializarlas y realizar algunas operaciones con
ellas.
• Antes de ejecutar el programa intenta deducir cuál va a ser el comportamiento de cada comando DEBUG.
• Teclea, salva y ejecuta el programa VariablesAndSimpleMath.bs2.
• Compara los resultados con lo que habías previsto y explica las diferencias.
valor = 500
otro_valor = 2000 'Inicialización de variables
DEBUG ? valor
DEBUG ? otro_valor 'Visuliaza valores
3-13
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
DEBUG ? valor
DEBUG ? otro_valor 'Visualiza resultados
END
valor = 500
otro_valor = 2000
Los comandos DEBUG ayudan a ver el valor de las variables después de su inicialización. Como valor ha
recibido un valor de 500 y otro_valor de 2000, los comandos DEBUG envían los mensajes “valor = 500” y
“otro_valor = 2000” al terminal.
DEBUG ? valor
DEBUG ? otro_valor
Con las siguientes tres líneas de código surge la pregunta ¿qué se mostrará en la pantalla del terminal?
La respuesta es que como valor toma un valor diez veces otro_valor y como otro_valor sigue siendo 2000, valor
mostrará 20,000 y otro_valor no cambiará.
valor = 10 * otro_valor
DEBUG ? valor
DEBUG ? otro_valor
Para trabajar con números negativos, puedes utilizar el comando DEBUG en conjunción con el
formateador SDEC para mostrarlos correctamente. Aquí tienes un ejemplo basado en el ejemplo
VariablesAndSimpleMath.bs2.
valor = 10 * otro_valor
DEBUG ? valor
DEBUG ? otro_valor
• Reemplázala por la siguiente:
3-14
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
La manera más acertada de controlar el número de veces que se ejecuta un fragmento de código de
programa es utilizando el bucle FOR…NEXT. Su sintaxis es la siguiente:
Los puntos suspensivos se sustituyen por el bloque de código de programa que se desea repetir.
Asegúrate de declarar previamente unas variables con el nombre Contador, ValorInicial y ValorFinal que
pueden ser tanto números como variables. Cada vez que veas algo entre llaves {} en la descripción de la sintaxis
de una instrucción, quiere decir que es un parámetro opcional.
No es necesario que la variable se llame “contador”. Por ejemplo puedes llamarla “miContador”:
He aquí un ejemplo de un bucle FOR…NEXT que usa miContador como variable para contar. Además
muestra el valor que toma miContador (myCounter) en cada iteración del bucle.
FOR miContador = 1 TO 10
DEBUG ? miContador
PAUSE 500
NEXT
FOR myCounter = 1 TO 10
DEBUG ? myCounter
PAUSE 500
NEXT
END
FOR miContador = 21 TO 9
DEBUG ? miContador
PAUSE 500
NEXT
3-15
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
• Ejecuta el programa modificado. ¿Has observado que el módulo microcontrolador es capaz de decrementar el
valor de la variable, es decir, contar hacia atrás?
¿Recuerdas el parámetro opcional {STEP ValorIncremento}? Se puede utilizar para hacer que el bucle
cuente “por pasos”. En vez de 9, 10, 11…, puedes hacer que cuente de dos en dos (9, 11, 13…) o de cinco en
cinco (10, 15, 20…), o de tantos en tantos como quieras, especificando dicho valor que le des a STEP. Se
propone un ejemplo de un programa que usa “pasos” de tres unidades:
• Ejecuta el nuevo programa y comprueba que cuenta hacia atrás con intervalos de tres unidades.
Aún queda una última tarea por realizar antes de montar los servos en el Home Boe-Bot, se trata de
comprobar que responden correctamente. Para ello haremos un programa que envíe señales de giro a los servos
en diferentes direcciones y a diferentes velocidades.
Recordemos que para calibrar los servos enviábamos una señal con una amplitud de pulso de 1.5 ms que
hacía que permaneciesen en reposo. Lo conseguíamos usando el comando PULSOUT con el parámetro
Duración con un valor de 750. ¿Qué pasaría si el valor enviado no fuera de 1.5 ms?
Ya se hizo un programa para enviar series de pulsos de 1.3 ms a un LED. Observemos con más
detenimiento esas series de pulsos para ver cómo podríamos utilizarlas para controlar un servo. La figura 3-12
muestra cómo gira a toda velocidad un servo de rotación continua en el sentido de las agujas del reloj cuando le
llegan pulsos de 1.3 ms. La máxima velocidad que se alcanza oscila entre las 50 y las 60 RPM (Revoluciones Por
Minuto ).
Figure 3-12.- Señal para girar a toda velocidad en el sentido de las agujas del reloj.
El circuito electrónico que gobierna al servo está preparado para que cuando reciba impulsos de 1,3 ms de
duración cada 20 ms haga girar al eje del motor en el sentido de las agujas del reloj y a la máxima velocidad, que
está comprendida entre 50 y 60 RPM. Cuando aumenta la duración del impulso de 1,3 a 1,5 ms la velocidad
decrece que se para el eje del motor. Cuando se aplica al circuito electrónico del servo un impulso positivo de 1,7
ms de duración cada 20 ms, origina el giro del eje del motor en el sentido contrario a las agujas del reloj y a su
máxima velocidad ( 50 – 60 RPM ). Al reducir la duración del impulso de 1,7 a 1,5 ms decrece la velocidad de giro
hasta pararse.
3-16
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
Puedes utilizar el programa ServoP13Clockwise.bs2 para enviar este tren de pulsos al servo conectado a
P13.
DO
PULSOUT 13, 650
PAUSE 20
LOOP
Observa que un pulso de 1.3 ms necesita que en el comando PULSOUT especifiquemos un valor de 650
para el parámetro Duración, que es menor que 750. Los pulsos menores que 1.5 ms y, por tanto, los valores de
Duración menores que 750, harán que el servo gire en el sentido de las agujas del reloj.
Cambiando el parámetro Pin del comando PULSOUT de 13 a 12, el servo conectado a P12 girará a toda
velocidad en el sentido de las agujas del reloj.
DO
PULSOUT 12, 650
PAUSE 20
LOOP
Como seguramente habrás adivinado, si utilizamos un valor superior a 750 como parámetro Duración
lograremos que el servo gire en sentido contrario. Por ejemplo, un valor de 850 enviará un pulso de 1.7 ms tal y
como se muestra en la figura 3-13. En esta ocasión el servo girará a toda velocidad pero en el sentido contrario al
del giro de las agujas del reloj.
Cuando se aplica al circuito electrónico del servo un impulso positivo de 1.7 mS se origina el giro del eje
en el sentido contrario a las agujas del reloj a su máxima velocidad (50-60 RPM). Al reducir la duración del impulso
de 1.7 a 1.5 mS, la velocidad disminuye hasta cero.
3-17
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
Figura 3-13.- Señal necesaria para hacer girar el eje del servo a toda velocidad en sentido contrario a las agujas
del reloj.
DO
PULSOUT 12, 850
PAUSE 20
LOOP
• Modifica el comando PULSOUT para que el servo conectado a P13 gire en sentido antihorario.
Se pueden utilizar dos comandos PULSOUT para hacer que ambos servos giren al mismo tiempo e
incluso lo hagan en direcciones contrarias.
DO
PULSOUT 13, 850
PULSOUT 12, 650
PAUSE 20
LOOP
3-18
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
El hecho de que los servos giren en sentidos opuestos es de gran importancia. Al encontrarse enfrentados
ambos servos (simétricos), si giran en el mismo sentido sólo consiguen que el Home Boe-Bot dé vueltas sobre su
propio eje. Para que avance en la misma dirección, cada uno tiene que girar en un sentido distinto y a la misma
velocidad.
Hay cuatro combinaciones distintas para la instrucción PULSOUT Duración que se usarán ampliamente
durante la programación del Home Boe-Bot en los próximos temas. ServosP13CcwP12Cw.bs2 envía una de esas
combinaciones, 850 a P13 y 650 a P12. Prueba distintas combinaciones y rellena la columna “Descripción” de la
tabla 3-1, así conseguirás familiarizarte con cada una de ellas y tener una tabla de referencia para consultar
después. Cuando tengas montado el robot podrás observar qué hace con cada una de las combinaciones y
rellenar la columna “Movimiento”.
• Prueba las siguientes combinaciones de PULSOUT Duración y rellena la columna Descripción con los
resultados que obtengas. La columna de Movimiento podrás rellenarla cuando esté montado el robot y veas
hacia donde se mueve (adelante, atrás, giro, etc.).
DURACIÓN
P13 P12 Descripción Movimiento
850 650 Velocidad máxima. Servo P13 en sentido
anti horario, servo P12 en sentido horario.
650 850
850 850
650 650
750 850
650 750
760 740
770 730
850 700
800 650
Tabla 3-1.- Prueba las distintas combinaciones del parámetro Duración para los servos y anota los resultados en
la columna Descripción. La de Movimiento podrás rellenarla cuando tengas montado el robot.
Una vez conocida la forma de controlar la velocidad de giro y su dirección, lo único que queda es
determinar el tiempo que permanece girando el servo. Para conseguirlo utilizaremos el bucle FOR…NEXT. He
aquí un ejemplo de bucle FOR…NEXT que hace girar al servo durante unos segundos:
3-19
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
Calculemos la cantidad exacta de tiempo que el programa anterior mantiene al servo en movimiento. Cada
vez que se recorre el bucle, el comando PULSOUT tarda 1.7 ms, el comando PAUSE dura 20 ms, y el bucle tarda
unos 1.3 ms en ejecutarse.
Supongamos que queremos que el servo gire durante 4.6 segundos.. El bucle FOR…NEXT tendrá que
ejecutarse el doble de veces:
Si se desea que giren ambos servos, el conectado a P13 con un pulso de 850 y el conectado a P12 con
un pulso de 650, cada repetición del bucle consumirá:
Para hacer que giren durante un tiempo determinado, hay que calcular el equivalente así:
3-20
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
Una vez calculado, puedes usar el valor 122 como ValorFinal en el bucle FOR…NEXT:
• He aquí un ejemplo que hace que los servos giren en una dirección durante 3 segundos y luego inviertan la
dirección de giro.
• Teclea, salva y ejecuta el programa BothServosThreeSeconds.bs2.
Comprueba que cada servo gire en una dirección durante 3 segundos, invierte la dirección de giro y rota
durante otros 3 segundos más.
• Elige un tiempo (en segundos) durante el cual quieras que giren los servos
• Divide el número de segundos por 0.024.
• El resultado es el número de repeticiones del bucle que se necesitan.
• Modifica BothServosThreeSeconds.bs2 de forma que ambos servos giren durante el tiempo que hayas
decidido
• Compara el tiempo que has previsto con el que han girado realmente
• Recuerda desconectar las pilas del sistema (tarjeta y servos) cuando hayas terminado
3-21
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
Preguntas
Ejercicios
1. Escribe un comando PAUSE que haga permanecer en espera durante 10 segundos a la BASIC Stamp.
2. Dibuja el diagrama de tiempos de este DO…LOOP:
DO
PULSOUT 15, 6500
PULSOUT 14, 6500
PAUSE 200
LOOP
3. Modifica este FOR…NEXT de tal modo que cuente de 6 a 24 de 3 en 3. Además escribe la declaración de
variable que necesaria.
FOR contador = 9 TO 21
DEBUG ? contador
PAUSE 500
NEXT
4. Modifica este DO…LOOP para conseguir que ambos servos giren en sentido antihorario.
DO
PULSOUT 13, 850
PULSOUT 12, 650
PAUSE 20
LOOP
5. Modifica la respuesta de la pregunta anterior para que los servos giren durante 6.5 segundos.
3-22
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
Proyectos
1. Dibuja el esquema de un circuito con un par de LED conectados a P14 y P15 y servos conectados a P12 y
P13.
2. Escribe un programa que haga que el servo conectado a P12 gire en sentido antihorario durante dos
segundos. Durante ese tiempo, el LED conectado a P14 deberá estar emitiendo luz. Después el programa no
hará nada durante dos segundos y por fin hará que el servo de P13 gire en sentido horario mientras que el
LED de P15 permanece encendido.
3. Escribe un programa que haga que el LED conectado a P14 parpadee mientras que el servo de P12 está
girando.
4. Escribe un programa para que los servos pasen por tres de las cuatro combinaciones posibles de rotación.
Necesitarás cuatro bucles FOR…NEXT distintos. Primero ambos servos deberán rotar en sentido antihorario,
luego en sentido horario, después el de P12 en sentido horario mientras que el de P13 lo hará en sentido
antihorario. Finalmente el servo de P12 girará en sentido antihorario y el de P13 en sentido horario.
3-23
Microbot “Home Boe-Bot”
Tema 3: Servomotores. La fuerza de la bestia
3-24
Microbot “Home Boe-Bot”
Tema 4
Montaje y puesta en marcha del “Home Boe-
Bot”
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
En esta sección te proponemos montar la estructura del robot y probar el funcionamiento de tu Home Boe-
Bot. Es especialmente importante completar todas las experiencias antes de pasar al siguiente tema. Sólo así
podrás evitar un gran número de errores muy comunes que podrían condicionar el futuro comportamiento del
Home Boe-Bot. El Índice de las actividades que tendrás que realizar en este tema es el siguiente:
ACTIVIDAD DESCRIPCION
1 Montar el Home Boe-Bot.
2 Volver a probar los servos para asegurarte de que están correctamente ajustados y conectados.
3 Conectar y probar un zumbador sonoro que te permitirá saber cuando las baterías del Home Boe-
Bot están bajas y hay que sustituir.
4 Dibujar las curvas de transferencia para tus servos, para saber la anchura de pulso que requiere
cada velocidad de giro.
Se describen las operaciones que tendrás que ir realizando para montar la estructura y las ruedas del
robot. En cada paso se precisan de ciertas piezas que tendrás que ir montándolas como se muestra en las
fotografías, las cuales se complementan con sencillas aclaraciones. Síguelas tranquilamente y empezarás a
disfrutar de tu trabajo y recoger las primeras satisfacciones de tu bestiecilla.
Las herramientas recomendables para el montaje se muestran en la figura 4-1 y son tres muy comunes.
Figura 4-1.- Las tres herramientas recomendadas para el montaje del Home Boe-Bot.
Comenzarás montando el chasis del robot para lo cual se precisan los componentes mostrados en la
figura 4-2.
4-1
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Lo siguiente a montar son los servos en el chasis para lo cual debes comenzar llevando a cabo los
siguientes pasos:
Figura 4-3.- Los servos completos (izda.) y una vez quitadas sus aspas (dcha.).
4-2
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
• Une los servos al chasis usando los tornillos y las tuercas. Ten en cuenta que para un mejor montaje tienes que
colocar la cara de cada servo a través de la ventana rectangular del interior del chasis.
• Usa dos trozos de cinta aislante para etiquetar los servos como izquierdo (L) y como derecho (R).
Figura 4-4.- A la izquierda los materiales necesarios para sujetar los servos en el chasis. A la derecha fotografía
de los servos una vez montados. El izquierdo lleva la etiqueta L y el derecho R.
Para montar el porta pilas se precisan los componentes de la figura 4-5, entre los que hay dos tornillos de
paso M3 x 10 con cabeza avellanada y sus correspondientes tuercas M3.
4-3
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Figura 4-5.- Materiales necesarios para sujetar el porta pilas que alimentará a los servos.
Componentes
• Usa los tornillos y las tuercas para sujetar el portapilas a la parte inferior del chasis del Home Boe-Bot tal y
como se muestra en la parte izquierda de la figura 4-6. Es posible que, con las puntas de unas tijeras, debas
hacer un agujero en el porta pilas para que se pueda atornillar en el chasis.
• Asegúrate de insertar los tronillos a través del porta pilas, ajustando las tuercas en la parte superior del chasis.
• Según se muestra en la parte derecha de la figura 4-6, pasa el cable del portapilas por el agujero de la goma
pasa muros colocada en el centro del chasis.
• Pasa los cables de los servo a través del mismo agujero.
Figura 4-6.- Aspecto del chasis con el portapilas montado y con sus cables y los de los servos pasando por la
arandela de goma.
La siguiente operación consistirá en colocar las ruedas con las que se moverá el Home Boe-Bot, para lo
que se requiere:
4-4
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Figura 4-7.- Materiales necesarios para colocar las ruedas del robot.
La imagen izquierda de la figura 4-8 muestra la rueda trasera montada en el chasis. La rueda trasera es
simplemente una bola de plástico con un agujero transversal atravesando su centro. La chaveta la mantiene unida
al chasis y funciona como un eje para esa rueda trasera, que permitirá al robot tomar cualquier dirección
determinada por el movimiento de las dos ruedas motrices delanteras.
• Alinea el agujero de la rueda trasera con los agujeros de la parte trasera del chasis.
• Pasa la chaveta a través de los 3 agujeros (izquierdo del chasis, rueda trasera, derecho del chasis).
• Dobla los extremos de la chaveta para evitar que se salga del agujero.
La imagen derecha de la figura 4-8 muestra las ruedas delanteras del Home Boe-Bot montadas en los servos.
Figura 4-8.- A la izquierda imagen de la rueda trasera. A la derecha las dos ruedas motrices delanteras
acopladas a los ejes de los servos.
Ahora toca montar la tarjeta Home Work de control sobre el chasis para lo cual nos harán falta 4 tornillos
de cabeza redondeada de paso M3 x 10mm.
4-5
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Figura 4-9.- La tarjeta Home Work se sujeta sobre los separadores del chasis mediante 4 tornillos de M3 x10mm
La figura 4-10 muestra los conectores de los servos conectados a la placa Homework.
• Conecta los terminales L y R de los servos a los conectores macho de la protoboard de la Home Work como se
dispusieron en las últimas experiencias del tema anterior.
• Asegúrate de conectar el conector etiquetado como “L” a los cables procedentes de P13, y los etiquetados
como “R” con los de P12.
Figura 4-10.- Conexión de los terminales de los servos con los conectores macho de la protoboard de la Home
Work.
4-6
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Ten cuidado con la conexión de los cables de colores y recuerda que White es blanco, Red es rojo y Black
es negro.
• Asegúrate de que la zona de montaje o protoboard de la tarjeta microcontroladora queda colocada más cerca
de las ruedas delanteras que de la trasera.
Figura43-11.- Fotografía del robot con la Home Work montada y conectados los terminales de los servos.
• Procura recoger los cables tanto los procedentes del porta pilas como los procedentes de los servos. Deben
quedar entre el chasis y la parte inferior de la tarjeta de control Home Work, de forma que no sobresalgan ni se
enreden con las ruedas.
Vas a comprobar que las conexiones eléctricas entre la tarjeta y los servos son correctas. Necesitamos
asegurarnos que el servo de la derecha gira cuando recibe señales procedentes de P12 y que el servo de la
izquierda gira cuando recibe señales de P13.
4-7
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
El siguiente programa de ejemplo prueba el servo conectado a la rueda derecha (Figura 4-13). El
programa hará que la rueda gire en la dirección de las agujas del reloj durante 3 segundos, parará durante un
segundo y después, girará en sentido contrario a las agujas del reloj durante otros 3 segundos.
Figura 4-13.- El programa de comprobación de la rueda derecha la hace girar 3 segundos en un sentido, luego se
para un segundo y finalmente gira en sentido contrario otros tres segundos.
Ahora debes hacer las mismas comprobaciones para la rueda izquierda tal y como se muestra en la figura
4-14. Hay que modificar el programa RightServoTest.bs2 de forma que los comandos PULSOUT sean enviados al
servo conectado a P13 en lugar de a P12.
4-8
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Para que la circuitería electrónica de la tarjeta Home Work funcione correctamente es imprescindible que
disponga de la suficiente tensión de alimentación. Eso supone que la tensión en Vin debe ser superior a 5,2 V, ya
que si hay menos el regulador interno de la tarjeta sólo proporciona un voltaje inferior a 4,3 V, valor insuficiente
que origina una anomalía denominada “brownout” y que hace que se ponga en marcha un mecanismo de
autoprotección del sistema en el que tanto el procesador como la memoria pasan a un estado de congelación o
reposo que detiene la ejecución de instrucciones. Al recuperar el voltaje correcto la Home Work se pone en
marcha pero no donde había quedado en el programa sino desde el principio del mismo. Es decir, actúa como si
se hubiese producido un Reset.
Cuando las baterías están bajas es posible que estas bajadas de tensión hagan reiniciarse al Home Boe-
Bot cuando menos te lo esperas, lo cual puede hacer que el comportamiento del mismo no sea el esperado. Es
decir, que tome direcciones erróneas y se mueva en las direcciones que no debe, de vueltas sobre si mismo...
Este ejercicio introduce un nuevo dispositivo llamado zumbador piezoeléctrico que puedes usar para
generar diferentes tonos en función de la frecuencia de las señales que se envíen desde la Home Work.
Figura 4-15.- Símbolo y aspecto del zumbador que emite un pitido de diferente tonalidad según la frecuencia que
se le aplique.
La figura 4-16 muestra el esquema de conexionado del terminal + del zumbador a la patita P4 de I/O,
mientras que la figura 4-17 muestra el montaje de los componentes sobre la tarjeta.
4-9
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Figura 4-16.- Conexión de un extremo ( + ) del zumbador a la patita P4 de la Home Work. El otro se manda a
tierra.
Figura 4-17.- Montaje de los componentes del circuito sonoro con el zumbador.
El siguiente programa produce un pitido sobre el zumbador. Utiliza el comando FREQOUT para enviar
señales de la frecuencia que se desee por una patita de la Home Work. Su sintaxis es la siguiente:
Un ejemplo sería: FREQOUT 4, 2000, 3000. Envía una señal de 3000 herzios (3 KHz) durante 2000 ms (2
segundos) por el pin 4.
Este programa emite un pitido por el zumbador al iniciarse su ejecución y luego envía mensajes
visualizadores de DEBUG cada medio segundo dentro de un bucle infinito. Se puede simular un “brownout”
(bajada momentánea de voltaje de alimentación) presionando el reset o bien desconectando un instante la batería
de tu Home Work; entonces el programa se reiniciará, emitiendo el pitido de nuevo. Cada vez que se produce el
pitido en el zumbador significa que se inicia el programa desde el principio.
4-10
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
• Verifica que el zumbador emite un pitido durante 2 segundos antes de que comiencen a salir los mensajes de
“Waiting for reset...” (Esperando un reset) en el Terminal de Depuración.
• Si no se oye ningún pitido comprueba las conexiones de los cables y el código.
• Si se oye el pitido puedes simular el estado de “brownout”, primero presionando el botón de reset, y después
desconectando y conectando la pila.
Comienza mostrando el mensaje “Beep!!!” en cuanto se inicia la ejecución del programa. Inmediatamente
envía una señal de 3 KHz al zumbador durante 2 segundos. Cómo las instrucciones son ejecutadas muy
rápidamente por la Home Work da la sensación que el mensaje se presenta al mismo tiempo que el zumbador
comienza a pitar.
Cuando termina de emitirse el pitido el programa entra en un bucle infinito mostrando una y otra vez el
mensaje “Esperando al Reset..”. (Esperando un reset). Cada vez que se produzca un reset, bien porque se aprieta
dicho botón, bien porque se desconectan y se vuelven a conectar las baterías, el programa de reiniciará.
El programa anterior se usará de ahora en adelante en todos los programas. Considéralo parte de la
“rutina de inicialización” de cada programa de tu Boe-Bot.
En esta práctica dibujarás las curvas que relacionan la velocidad de giro de los servos con la duración de
los pulsos que se aplican desde la Home Work. Estas curvas te pueden resultar muy útiles porque cuando quieras
obtener una velocidad en las ruedas gobernadas por los servos sólo tendrás que consultarlas para saber la
anchura de los impulsos que debes aplicar a cada una. Usaremos el Panel de Transmisión del Terminal Debug
para enviar valores a los programas que ejecuta la Home Work. Se teclean sobre dicho terminal y pasan al
programa en ejecución. Sirve para poder introducir parámetros en todo momento a un programa.
4-11
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Figura 4-18.- Sobre la ventana del Panel de Transmisión se pueden introducir valores que pasan al programa en
ejecución.
El comando DEBUGIN
Con el comando DEBUG se visualizan los mensajes que manda la Home Work al ejecutar el programa en
la pantalla del PC. El comando DEBUGIN recoge el valor que se introduce con el teclado en una variable en el
Panel de Transmisión y se envía al programa que está ejecutando la Home Work para que la variable quede fijada
por dicho valor. Es decir, con DEBUGIN se introducen valores de variables que se usan en los programas de la
Home Work.
En el siguiente programa de ejemplo la variable pulseWidth (anchura de pulso) almacena los valores que
el comando DEBUGIN recibe. Evidentemente, habrá que declarar previamente esta variable en el programa:
El comando DEBUGIN captura los valores que introduzcas por el teclado a través del Panel de
Transmisión y los almacena en la variable PulseWidth:
4-12
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Se declaran tres variables: counter para el bucle FOR...NEXT, pulseWidth para los comandos DEBUGIN y
PULSOUT, y pulseWidthComp, que almacena un valor que se usa en un segundo comando PULSOUT destinado
al zumbador.
El comando FREQOUT se utiliza para indicar mediante un pitido en el zumbador que el programa se ha
iniciado.
FREQOUT 4,2000,3000
El resto del programa va dentro del bucle DO...LOOP, por lo que se ejecutará una y otra vez. El
operador del DEBUGl pide que, al ejecutar DEBUGIN DEC pulseWidth, se introduzca un valor decimal que
determinará la duración del pulso que se guardará en la variable pulseWidth.
Para lograr una medición del tiempo más exacta se envían dos comandos PULSOUT, cuyos argumentos
Duración sumarán 1500 entre los dos.
Así consigues que el bucle FOR...NEXT tarde siempre el mismo tiempo en ejecutarse, y por tanto, que las
mediciones de RPM que harás en el siguiente apartado sean más exactas.
El bucle FOR...NEXT envía pulsos al servo derecho (P12) durante 6 segundos. De esa forma las vueltas
que se den en ese tiempo multiplicadas por 10 calculan las RPM. El valor contenido por pulseWidthComp es
enviado al zumbador, y éste emite una serie de rápidos pitidos.
4-13
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Dibujo de las curvas que relacionan la velocidad de los servos con la duración de los pulsos
La figura 4-19 muestra una curva de transferencia para un servo de transferencia continua. El eje
horizontal mide la duración del pulso en milisegundos (ms), y el vertical la velocidad de giro en revoluciones por
minuto (RPM). En dicha figura, el sentido de las agujas del reloj es el negativo, y el sentido contrario, el positivo.
En dicha gráfica, los rangos de velocidad varían entre –48 y 48 RPM, y los de duración de los pulsos entre 1’3 y
1’7 ms.
Figura 4-19.- Gráfico que relaciona la velocidad de rotación del servo en RPM con la anchura de los pulsos que se
le aplican.
Puedes utilizar la tabla 4-1 para llevar a cabo tus propias mediciones.
4-14
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Tabla 4.1 Anchura del pulso y velocidad RPM para el servo de Parallax
Tabla 4-1.- Tabla para que rellenes el valor de las RPM del servo para las diferentes amplitudes de pulsos que se
indican en la otra columna.
Recuerda que el argumento Duración del comando PULSOUT se mide en unidades de 2µs .
Figura 4-20.- El valor del parámetro Duración viene medido en unidades de 2 microsegundos.
Ten en cuenta que el servo ha girado durante 6 segundos, por lo que si multiplicas este valor por 10,
obtendrás el número de RPM.
• Escribe este valor (ya multiplicado por 10) en la tabla 4-1, junto a la celda de 1’3 ms
• Multiplica este valor por 10 y escríbelo junto al valor 1’31 ms de la tabla 4-1.
• Ve incrementando los valores de 5 en 5 (0’01 ms) hasta que llegues a 850 (1’7 ms).
4-15
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Cuestiones
Ejercicios
1. Escribe un comando FREQOUT que haga que el zumbador emita un pitido distinto al del inicio de programa
para identificar el fin del programa.
2. Escribe un comando FREQOUT que haga que el zumbador emita un pitido distinto a los de inicio y final de
programa para indicar un paso intermedio. Prueba los siguientes valores: 100 ms de duración y 4kHz de
frecuencia.
3. Declara una variable y mediante el comando DEBUGIN carga un valor en dicha variable.
Proyectos
1. Modifica el programa RightServoTest.bs2 para que emita un pitido indicando que el test se ha completado.
2. Modifica el programa RightServoTest.bs2 para que emita un pitido indicando cada vez que sale del bucle
FOR...NEXT.
3. Modifica el programa TestServoSpeed.bs2 para que, utilizando el DEBUGIN, puedas introducir la duración de
los pulsos para ambos servos, así como el número de repeticiones del bucle FOR...NEXT.
4. Proyecto Avanzado – Usando las curvas de transferencia, deduce qué argumentos de PULSOUT Duración
harán que el servo izquierdo vaya a una velocidad determinada y el derecho a la misma velocidad en dirección
contraria. La figura 4-21 muestra un ejemplo de cómo el servo izquierdo gira a 40 RPM en la dirección de las
agujas del reloj, mientras que el derecho lo hace en la dirección contraria (a la misma velocidad, 40 RPM).
Puedes multiplicar cada valor por 500 para obtener los argumentos de PULSOUT Duración.
4-16
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
Figura 4-21.- Los dos puntos mostrados en la gráfica indican cuando el servo izquierdo gira a 40 RPM en el
sentido de las agujas del reloj y el derecho a 40 RPM en sentido contrario.
4-17
Microbot “Home Boe-Bot”
Tema 4: Montaje y puesta en marcha de tu “Home Boe- Bot”
4-18
Microbot “Home Boe-Bot”
Tema 5
Enseñando a moverse al Home Boe-Bot
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
En este tema vamos a aprender a gobernar los movimientos fundamentales del robot: traslaciones hacia
delante y atrás, giros y rotaciones. Sin embargo el Home Boe-Bot caminará “a ciegas” porque de momento no
tiene sensores que le informen del entorno que le rodea, pero en los próximos temas iremos añadiendo diversos
tipos de sensores que le proporcionen la información necesaria para esquivar obstáculos o seguir direcciones
marcadas en el suelo.
La figura 5-1 muestra los distintos caminos que puede tomar nuestro amigo: Forward: adelante; backward:
atrás; left turn: a la izquierda y right turn: a la derecha. Cuando el Home Boe-Bot va hacia delante su rueda
derecha gira en el sentido de las agujas del reloj, mientras que la izquierda lo hace en sentido contrario (Figura 5-
2).
Figura 5-1.- Los cuatro movimientos básicos: adelante, atrás, derecha e izquierda.
Figura 5-2.- Movimientos contrarios de las ruedas izquierda y derecha cuando avanza el robot.
Programa BoeBotForwardThreeSeconds.bs2
Con este programa el Home Boe-Bot avanzará en línea recta durante tres segundos.
Recuerda que el argumento Duración del comando PULSOUT controla la velocidad y la dirección de los
servos. Los argumentos StartValue y EndValue de un bucle FOR...NEXT controlan el número de pulsos que son
enviados. Si cada pulso tiene la misma duración, el argumento EndValue también controla el tiempo que
funcionan los servos. Se propone un programa que hará que el robot se mueva hacia delante unos tres segundos.
5 -1
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
• Si cambias el valor EndValue del bucle FOR…NEXT de 122 a 61 harás que el Home Boe-Bot se desplace
hacia delante en la mitad de tiempo, y que se mueva por tanto la mitad de distancia.
• Guarda el programa BoeBotForwardThreeSeconds.bs2 con otro nombre.
• Cambia el EndValue del bucle FOR…NEXT de 122 a 61.
• Ejecuta el programa y comprueba que el robot recorre la mitad de la distancia y durante la mitad de tiempo.
• Repite los pasos anteriores, pero en este caso cambia el valor EndValue a 244.
Si se ajusta el parámetro Duración de PULSOUT cerca de 650 o 850 los servos girarán a su máxima
velocidad Si estos valores se aproximan a 750 harás que se muevan más lentos.
Todos estos movimientos se realizan modificando los argumentos PULSOUT Duración. Por ejemplo estas
dos instrucciones PULSOUT hacen que el robot vaya hacia atrás:
5 -2
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
Programa ForwardLeftRightBackward.bs2
Puedes hacer que el Home Boe-Bot pivote sobre una rueda. Para ello hay que lograr que sólo gire una
rueda mientras la otra se queda quieta. Por ejemplo si quieres que la rueda izquierda permanezca quieta y la
derecha gire hacia delante para que el robot pivote deberás utilizar las siguientes líneas de código:
Si por lo contrario quieres que pivote hacia delante y a la derecha, simplemente detén la rueda derecha y
haz que la rueda izquierda gire hacia delante.
5 -3
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
Los siguientes comandos PULSOUT consiguen que el robot pivote hacia atrás y a la derecha
Cuando el Home Boe-Bot está programado para avanzar en línea recta es frecuente que se vaya
desviando ligeramente hacia uno de los lados. Se puede conseguir mantener la trayectoria mediante software.
Comienza modificando el programa BoeBotForwardThreeSeconds.bs2 para que en vez de 3 segundos, se mueva
durante 10, tiempo necesario para comprobar si se desvía o no. Para ello hay que cambiar el valor de EndValue
del FOR Counter de 122 a 407, quedando el programa como se presenta a continuación. (Guárdalo como Boe-
BotForwardTenSeconds.bs2).
Ajuste de la velocidad de los servos para que el Boe-Bot siga una trayectoria recta.
Vamos a suponer que el Home Boe-Bot se desvía hacia la izquierda. Hay dos posibilidades. Puede ser
porque la rueda izquierda gire más lenta o porque la rueda derecha gire más rápida. Como el Home Boe-Bot está
configurado para que vaya a su máxima velocidad, lo más lógico sería pensar que la rueda derecha debe girar un
poco más despacio.
Recuerda que la velocidad de los servos está determinada por el argumento Duración del comando
PULSOUT. Cuanto más se acerque este valor a 750, más lento girará el servo. Esto quiere decir que hay que
cambiar el valor 650 del comando PULSOUT 12 a un valor más cercano a 750. Si el robot no se desvía
demasiado con un valor de 663 sería suficiente. Si por el contrario el grado de desvío es grande habrá que poner
como mínimo un valor de 690. Para poder regular bien el Home Boe-Bot será necesario que hagas varias pruebas
hasta alcanzar el objetivo deseado.
5 -4
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
Una vez se ha controlado el movimiento hacia delante hay que conseguir que el movimiento hacia atrás
tampoco produzca desviaciones de la trayectoria. Aplica el método que se acaba de describir para la marcha atrás
y utiliza el programa BoeBotForwardTenSeconds.bs2 como referencia.
Es posible también que regules los giros del Home Boe-Bot mediante software. El tiempo que se pasa el
Boe-Bot girando es el que determina el ángulo de giro. Como el que controla el tiempo de giro en el programa es
el bucle FOR…NEXT, lo que hay que hacer es modificar el argumento EndValue para que gire más o menos
según el caso. Aquí tienes la rutina de giro a la izquierda sacada de ForwardLeftRightBakcward.bs2.
Vamos a suponer que el robot gira un poco más de 90º. Prueba primero a modificar el contador del bucle
FOR Counter = 1 TO 23 ó 1 TO 22. Si sigue sin girar los 90º exactos, modifica el argumento de PULSOUT a un
valor más cercano al 750, como has hecho cuando iba recto. Repite al acción hasta que gire los 90º exactos.
Confecciona un programa que haga girar al robot exactamente 90º. Una vez que lo consigas guárdalo
como ForwardLeftRightBackward.bs2. Te dirá si deseas sobrescribir el fichero, a lo que responderás “si”.
Suele ser muy frecuente que los robots tengan que realizar un recorrido desde un punto inicial hasta un
destino situado a cierta distancia, para luego regresar al punto de partida.
Para calcular distancias con el Home Boe-Bot se aplica la fórmula general de la velocidad:
Deberás calcular la velocidad del robot. La forma más fácil de hacerlo es poner un metro a su lado y ver
que distancia recorre. Conociendo los cm que ha recorrido y el tiempo en segundos empleado en ello, sabrás la
velocidad del Home Boe-Bot (cm/s).
5 -5
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
• Pulsa el botón de reset de tu placa y arranca el programa. Mide lo que ha recorrido el Home Boe-Bot y apúntalo
aquí:
Programa BoeBotForwardOneSecond.bs2
El mencionado programa controla el movimiento del robot durante un segundo, por lo que si ha recorrido
23 cm en su ejecución, la velocidad será de 23 cm/s.
Ahora se calculan los pulsos que han de ser enviados a los servos. Para ello deberemos multiplicar el
tiempo obtenido por 40,65 pulsos/segundo.
Se trata que el Home Boe-Bot acelere y decelere (frene) de forma gradual. Así conseguiremos que los
servos y las baterías duren más y que el arranque y parada no sean tan bruscos.
Programa de aceleración
La clave para acelerar es ajustar el argumento Duración de PULSOUT. La figura 5-4 muestra cómo el
bucle FOR…NEXT puede hacer que el Home Boe-Bot acelere. Cada vez que se ejecuta el bucle FOR…NEXT la
variable pulseCount se incrementa en 1. A medida de que el valor de pulseCount es mayor, la velocidad de los
servos también. A la centésima vez que hemos realizado el bucle la variable pulseCount vale 100 que es lo
mismo que usar los comandos PULSOUT 13, 850 y PULSOUT 12, 650. Estos comandos son los que se utilizan
para mover el Home Boe-Bot a su máxima velocidad.
5 -6
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
NEXT
Si por lo contrario hacemos que el bucle FOR…NEXT decremente la variable pulseCount, el robot
decelera hasta pararse. Se propone un programa que hace que el Home Boe-Bot acelere y decelere desde su
inicio hasta su parada.
Programa StartAndStopWithRamping.bs2
5 -7
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
Ahora puedes crear rutinas para combinar las acciones de aceleración y deceleración junto con el resto de
maniobras. Se ofrece un ejemplo de cómo ir acelerando el Home Boe-Bot yendo hacia atrás en vez de hacia
delante. La única diferencia entre que vaya hacia delante o hacia atrás es que en este caso el valor de
pulseCount es el sustraendo de 750 en el comando PULSOUT 13, donde antes actuaba como un sumando.
Se sugiere otro ejercicio para que el robot gire a la derecha mientras va acelerando para después
decelerar hasta pararse otra vez:
Modifica el programa ForwardLeftRightBackward.bs2 para que acelere y decelere en cada una de las
maniobras que realiza. Finalmente guárdalo como ForwardLeftRightBackwardRamping.bs2 y ejecútalo en el Home
Boe-Bot para comprobar que realmente funciona.
5.5. EXPERIENCIA #5: FACILITAR LOS MOVIMIENTOS DEL ROBOT CON SUBRUTINAS
El Home Boe-Bot va a ser capaz, en el siguiente tema de este manual, de realizar maniobras con el fin de
evitar obstáculos. Una de las formas más eficientes de esquivar obstáculos es realizando maniobras pre-
programadas mediante la utilización de subrutinas. En esta práctica aprenderás a utilizar subrutinas y a crearlas
con el fin de programar maniobras predefinidas.
Las subrutinas
Una subrutina es una secuencia de instrucciones que se repite en diversas ocasiones a lo largo del
programa principal. Para no tenerla que repetir e insertar en el programa cada vez que se necesita, sólo se pone
una vez como un programa independiente y cada vez que se precisa se la llama.
Hay dos partes dentro de una subrutina en PBASIC. La primera es la “llamada a la subrutina”, es decir, la
instrucción que hace que una vez llegue el programa allí, se ejecute la parte de código que contiene dentro de la
subrutina. La otra parte es la propia subrutina en sí. La subrutina comienza cuando se referencia con GOSUB su
nombre (también llamado etiqueta) y finaliza con el comando RETURN, que devuelve el control a la siguiente
instrucción a GOSUB. El código que hay entre la etiqueta del nombre de la subrutina y RETURN, es lo que se
ejecutará en cada llamada a esa subrutina.
5 -8
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
La figura 5-5 nos presenta un trozo de código en PBASIC que contiene una llamada a subrutina y la propia
subrutina. La llamada a subrutina se realiza con el comando GOSUB y el nombre de la subrutina, en nuestro caso
My_Subroutine. Un vez se inicia la subrutina, se va ejecutando línea a línea hasta encontrar el comando
RETURN, que obliga a salir de la subrutina y seguir ejecutando el programa en el punto en que se abandonó.
Programa OneSubroutine.bs2
My_Subroutine:
DEBUG "Subrutina en ejecución", CR
PAUSE 1000
RETURN
• Mira la ventana del Debug Terminal y pulsa reset varias veces. Deberás obtener el mismo resultado en los
distintos casos.
Una vez que conoces el uso y funcionamiento de las subrutinas, vamos a usarlas para manejar los
movimientos del robot.
Programa MovementsWithSubroutines.bs2
5 -9
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
GOSUB Left
GOSUB Right
GOSUB Backward
END
Se propone un programa más avanzado donde se incluyen las variables para poder configurar las
maniobras del Home Boe-Bot. Fíjate antes en estos dos trozos de código:
5 -10
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
Lo que hace que estos dos trozos de código ejecuten distintas maniobras es el cambio en los argumentos
FOR StartValue, EndValue y PULSOUT. Estos argumentos pueden ser variables y éstas pueden ser modificadas
a lo largo del programa. En vez de utilizar para cada maniobra una subrutina puedes hacer más sencillo el
programa con el uso de variables a las que se introduce ciertos valores para cada tipo de movimiento.
Navigate:
FOR counter = 1 TO pulseCount
PULSOUT 13, pulseLeft
PULSOUT 12, pulseRight
PAUSE 20
NEXT
PAUSE 200
RETURN
• Modifica el ejemplo anterior para que el Home Boe-Bot se mueva describiendo un cuadrado.
Cuando se introduce un programa el editor BASIC Stamp lo convierte en valores numéricos llamados
“tokens”. Los tokens son lo que utilizan los módulos de Parallax como instrucciones para ejecutar el programa.
Estos datos son guardados en un chip de memoria EEPROM de 2 KB de la Home Work, modelo 24LC16B.
También se pueden guardar en las posiciones de esta memoria EEPROM los datos o valores que nos interesen y
posteriormente leerlos.
Es posible ver el mapa de la memoria EEPROM en el editor BASIC STAMP seleccionando RUN Æ
MEMORY MAP. La figura 5-6 nos muestra el mapa de memoria para el programa MovementsWithSubroutines.bs2
5 -11
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
Para la programación (grabación y lectura de datos) de la EEPROM se utiliza la directiva DATA y los
comandos READ y SELECT…CASE…ENDSELECT. Vamos a explicar un poco estos comandos antes de entrar
en la confección de programas para mover al Boe-Bot por caminos más largos y difíciles.
Cada maniobra básica del Home Boe-Bot estará referenciada por una letra (F: Hacia delante, B: Hacia
Atrás, L: Izquierda, R: Derecha) y esa letra a su vez será una subrutina con lo que podremos hacer rutas
complicadas y guardarlas como conjuntos de letras en la EEPROM. Para ello crearemos una cadena (“String”) con
todos los movimientos que queremos que haga sin olvidar que debe acabar con la letra Q que significa “Salir”.
Para guardar la ruta en la EEPROM utilizaremos la directiva DATA, que se muestra a continuación:
DATA "FLFFRBLBBQ"
Cada letra es guardada en un byte de le EEPROM, comenzando desde la dirección 0 ( a menos que le
indiquemos nosotros la dirección dónde queremos que empiece). El comando READ se utiliza para obtener o leer
la lista que antes hemos guardado en la EEPROM mientras se ejecuta el programa. Estos valores los podemos
obtener con un bucle DO…LOOP de este estilo:
DO
READ address, instruction
address = address + 1
' PBASIC code block omitted here.
LOOP
5 -12
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
Realizaremos un bloque usando el comando SELECT...CASE...ENDSELECT para que cada letra haga
que se ejecute un procedimiento distinto. El funcionamiento de esta instrucción es la misma que en los demás
lenguajes de programación y consiste en que según el valor que tome la variable ejecutará la operación
(subrutina) correspondiente a lo que introduzcamos para esa variable (instrucción). En nuestro caso sería lo
siguiente:
SELECT instruction
CASE "F": GOSUB Forward
CASE "B": GOSUB Backward
CASE "R": GOSUB Right_Turn
CASE "L": GOSUB Left_Turn
ENDSELECT
Tenga en cuenta que finaliza el programa de acceso a la subrutina cuando se encuentra la letra Q (“salir”).
DO
' PBASIC code block omitted here.
LOOP UNTIL instruction = "Q"
Ahora juntamos todos los conceptos en un nuevo programa que llamaremos EepromNavigation.bs2
Programa EepromNavigation.bs2
• Lee todos los comentarios con detenimiento para entender todo lo que el programa realiza.
• Teclea, guarda y ejecuta el programa para ver que realmente funciona bien.
DO
READ address, instruction ' Lee una instrucción de la dirección.
address = address + 1 ' Incrementa la dirección para la siguiente lectura.
SELECT instruction
CASE "F": GOSUB Forward
CASE "B": GOSUB Backward
5 -13
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
Al ejecutar el programa, tu Home Boe-Bot ¿anda describiendo rectángulos? Si describe un trapecio lo que
debes hacer es ajustar los argumentos FOR pulseCount EndValue en las subrutinas con el fin de que realice
giros de 90º
Con el programa anterior en ejecución, dentro del editor BASIC STAMP selecciona RUNÆ MEMORY
MAP.
Las letras indicativas de subrutinas de movimiento que has guardado aparecerán remarcadas (en azul) en
el mapa detallado de la EEPROM como se muestra en la figura 5-7. Los números se muestran en Hexadecimal
por lo que deberás pulsar en Display ASCII para poder ver los caracteres que has introducido antes en una
cadena con la instrucción DATA (Figura 5-8).
5 -14
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
Figura 5-7.- Las letras indicativas de subrutinas de movimiento guardadas en la EEPROM se visualizan en el
mapa de memoria con sus valores hexadecimales correspondientes.
Figura 5-8.- Cuando se convierte a ASCII los números hexadecimales se traducen a las letras indicativas de las
subrutinas.
El programa que estás ejecutando guarda un total de 10 caracteres en la EEPROM. Estos 10 caracteres
son accesibles con la variable address del comando READ. Esta variable está declarada como byte, con lo que
puede acceder hasta a 256 posiciones. Si quisieras guardar más posiciones deberías declararla como word, así
conseguirías acceder a 65535 posiciones
Ahora puedes modificar la cadena que antes hemos puesto por otra para que el Home Boe-Bot haga
distintas rutas. Es posible añadir más directivas DATA, pero recuerda que estas guardarán los datos
inmediatamente después de lo anterior almacenado (de la directiva DATA anterior).
5 -15
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
Programa EepromNavigationWithWordValues.bs2
A primera vista, el siguiente programa parece complicado, pero es la forma más eficiente de realizar
movimientos totalmente personalizados con el Home Boe-Bot. El programa que tenemos a continuación utiliza la
EEPROM, pero no así las subrutinas ya que se opta por guardar también en la EEPROM las variables que harán
que el robot se mueva en distintas direcciones.
Por defecto, la directiva DATA guarda bytes de información en la EEPROM. Para guardar datos de
tamaño word (palabra) deberás utilizar el modificador word. Cuando se utiliza más de una directiva DATA es
recomendable ponerlas nombres a las mismas. Fíjate en este trozo de código, recordando que cada word consta
de dos bytes.
' addressOffset 0 2 4 6 8
Pulses_Count DATA Word 64, Word 24, Word 24, Word 64, Word 0
Pulses_Left DATA Word 850, Word 650, Word 850, Word 650
Pulses_Right DATA Word 650, Word 650, Word 850, Word 850
Cada una de las tres sentencias DATA empiezan con su propia etiqueta. El modificador word va antes de
cada uno de los datos, los cuales van separados por comas. Las tres cadenas se van a guardar una detrás de otra
en la EEPROM. No necesitas calcular nada ya que la etiquetas y la variable addressOffset lo harán
automáticamente. El comando READ usa cada etiqueta para determinar donde empieza cada cadena y después
añadirá el valor de la variable addressOffset para saber dónde debe localizar la cadena. Los datos obtenidos los
guardará entonces en una variable de tipo word al final de la sentencia READ. Fíjate en este trozo de código:
DO
READ Pulses_Count + addressOffset, Word pulseCount
READ Pulses_Left + addressOffset, Word pulseLeft
READ Pulses_Right + addressOffset, Word pulseRight
addressOffset = addressOffset + 2
' PBASIC code block omitted here.
LOOP
La primera vez que se pasa por el bucle, addressOffset = 0. El primer comando READ lo que hará es
obtener el valor de 64 y lo asignará a la variable pulseCount. El segundo comando READ obtiene el valor 850 y
lo asignará en este caso a la variable pulseLEFT. El tercer comando READ hará algo similar con la variable
pulseRight. Cuando estos valores están ya cargados en el programa tendríamos que:
FOR counter = 1 TO 64
PULSOUT 13, 850
PULSOUT 12, 650
PAUSE 20
NEXT
¿Te suena el código generado?
5 -16
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
Después de ejecutarlo, ¿te suena la ruta que ha descrito? Ahora es el momento para que tú consigas que
el Home Boe-Bot describa caminos más complejos.
Pulses_Count DATA Word 60, Word 80, Word 100, Word 110,
Word 110, Word 100, Word 80, Word 60, Word 0
Pulses_Left DATA Word 850, Word 800, Word 785, Word 760, Word 750,
Word 740, Word 715, Word 700, Word 650, Word 750
Pulses_Right DATA Word 650, Word 700, Word 715, Word 740, Word 750,
Word 760, Word 785, Word 800, Word 850, Word 750
5 -17
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
• Usa esta tabla para controlar lo que va a hacer el Home Boe-Bot rellenado cada argumento FOR…EndValue y
PULSOUT Duration que vas a necesitar para cada movimiento.
• Modifica tu programa con las nuevas tablas para aplicarles las directivas DATA personalizadas para tu
proyecto.
• Ejecuta el programa y comprueba que el Home Boe-Bot describe la trayectoria prevista.
Preguntas
1. ¿Que sentido de giro debe tener la rueda izquierda para que el Home Boe-Bot pueda ir hacia delante?
2. ¿Cuál debe tener la rueda derecha para que el robot gire?
3. ¿Cuál debe tener la rueda derecha para que el Home Boe-Bot pueda retroceder?
4. ¿Que dirección debe seguir la rueda izquierda y la derecha para que el robot t gire?
5. ¿Qué es lo que controla la velocidad y dirección de los servos?, ¿qué comando PBASIC utilizamos para ello?
6. ¿Cuando el robot pivota a la derecha, que hace cada rueda?
7. ¿Cómo se resuelve el problema originado cuando quieres que el Home Boe-Bot vaya recto hacia delante y se
desvíe hacia un lado?
8. Si el Home Boe-Bot se mueve a 60cm/s, ¿cuántos pulsos necesitará para recorrer 1 metro?
9. ¿Qué relación hay entre el argumento counter de un bucle FOR…NEXT y el argumento Duración del
comando PULSOUT ?
10. ¿Qué diferencia hay entre una subrutina y una llamada a ésta?
11. ¿Qué comando puedes utilizar para guardar valores en la EEPROM de la BASIC Stamp antes de ejecutar un
programa?
Ejercicios
1. Escribe una rutina que haga que el Home Boe-Bot retroceda durante 350 pulsos.
2. Escribe una rutina que haga que el robot pivote hacia atrás y la izquierda durante 50 pulsos.
3. Vamos a pensar que has calculado que para que el Home Boe-Bot gire 90º hay que mandarle 48 pulsos. Con
esta información calcula los pulsos que hay que mandarle para que gire 30, 45 y 60 grados.
4. Escribe un rutina que haga que vaya hacia delante, que acelere y decelere en un giro con la operación de
pivotar y después siga andando hacia delante.
5. Hay cuatro formas de pivotar. Escribe una rutina para cada una de ellas.
Proyectos
1. Confecciona un programa para realizar un recorrido personalizado con el Home Boe-Bot valiéndote de las
tablas que hemos manejado en el último ejercicio de este tema.
2. En la figura 5-9 vemos varios recorridos posibles. Haz que tu robot describa cada uno de los recorridos que se
muestran.
5 -18
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
5 -19
Microbot “Home Boe-Bot”
Tema 5: Enseñando a moverse al Home Boe-Bot
5 -20
Microbot “Home Boe-Bot”
Tema 6
Navegación con antenas táctiles
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
En el tema anterior enseñamos a caminar al Home Boe-Bot, pero “a ciegas”. Si tropezaba con un
obstáculo allí se quedaba. En esta ocasión vamos a colocarle unos sensores que le avisen de la presencia de
obstáculos en su camino, además de conocer si dicho obstáculo se encuentra a la derecha o a la izquierda.
Conocida esta información podemos mandar realizar un movimiento de desvío que lo evite y pueda proseguir
hacia su destino.
Usaremos dos “bumpers”, nombre técnico que se asigna a ciertos interruptores que cierran sus contactos
cuando se presiona uno de ellos. Los bumper que emplea el Home Boe-Bot están construidos mediante un
alambre de acero y tienen aspecto de antenas. Les llamaremos “bigotes” porque sirven para detectar objetos
como lo hacen los bigotes de un gato o las antenas de una hormiga. Figura 6-1.
Figura 6-1.- Los “bigotes” del Home Boe-Bot le advierten la presencia de obstáculos en su camino.
Para montar los bigotes al robot se precisan los siguientes materiales, que se muestran en la figura 6-2.
(2) “Bigotes”
(2) Tornillos de cabeza plana de M3 x 15mm
(2) Separadores metálicos H-H de M3 x 10 mm
(2) Arandelas de baquelita de 3 mm
(2) Conectores de 3 pines
(2) Resistencias de 220 Ω
(2) Resistencias de 10 kΩ
6 -1
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
• Quita los dos tornillos frontales que unen la tarjeta Home Work con los dos separadores frontales.
• Fíjate en la figura 6-3 para comprender las siguientes operaciones.
• Coloca una arandela de baquelita y un separador de M3x10 en cada uno de los tornillos de M3x15.
• Coloca los tornillos sobre los agujeros de la tarjeta y atorníllalos a los separadores que hay debajo, pero no los
aprietes completamente todavía.
• Engancha los bigotes a los tornillos. Coloca cada uno sobre una de las arandelas, de tal forma que no se
toquen entre si.
• Ahora termina de apretar los tornillos.
Ahora construiremos el circuito eléctrico de los bigotes para añadirlo a los circuitos del zumbador y los
servos que se montaron en el tema anterior. Figura 6-4.
6 -2
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
Figura 6-4.- Circuito eléctrico para el conexionado del bigote derecho y del izquierdo.
Figura 6-5.- Aspecto de la protoboard de la Home Work una vez montados los circuitos de los bigotes, del
zumbador y de los servos.
Echa otro vistazo al esquema de los bigotes (figura 6-6). Cada bigote es una extensión mecánica de un
interruptor normalmente abierto que tiene un extremo conectado a tierra. La razón por la que los bigotes están
conectados a tierra (Vss) es que los agujeros en los bordes exteriores de la tarjeta están conectados a tierra. Los
separadores y tornillos metálicos conectan la señal de tierra con los bigotes.
6 -3
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
Figura 6-6.- El bigote no es más que una extensión mecánica de un interruptor normalmente abierto que tiene un
extremo conectado a tierra.
El módulo microcontrolador puede ser programado para detectar cuando es presionado un bigote. Los
pines o patitas de E/S conectados a cada interruptor están configurados como entradas y reciben un voltaje
(Figura 6-7). Cuando los bigotes están sin presionar el voltaje que reciben los pines de E/S es de 5 V (1 lógico).
Pero si son presionados, el circuito se cierra con tierra y los pines reciben 0 V (0 lógico).
Figura 6-7.- Si el bigote está sin presionar (izquierda) el pin de E/S recibe un nivel lógico alto (1), pero si se
presiona y se cierra, el contacto del bigote que va a tierra e introduce un nivel bajo (0).
Programa TestWhiskers.bs2
Este programa está diseñado para que puedas probar los bigotes y asegurarte que funcionan
correctamente. Lo que hace es mostrar el estado lógico de las entradas que corresponden a los pines de E/S
conectados a los bigotes (IN7 e IN5).
Todos los pines de E/S son de entrada por defecto, a menos que se programe lo contrario. Por lo tanto,
los pines conectados a los bigotes tendrán un “1” si el voltaje que reciben es 5 V (el bigote no está presionado) o
un “0” si lo que reciben es 0 V (el bigote está presionado). Puedes utilizar el Debug Terminal para mostrar estos
valores.
6 -4
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
• Fíjate en los valores que muestra el Debug Terminal; deberían indicar que P7 y P5 son igual a 1.
• Antes de continuar, asegúrate de cual es la patita de entrada conectada a cada uno de los bigotes.
• Presiona el bigote derecho contra el cabezal de 3 pines hasta que haga buen contacto y fíjate lo que se
visualiza en la ventana del Debug Terminal. Debería mostrar: P5 = 1, P7 = 0.
• Presiona el bigote izquierdo contra el cabezal de 3 pines hasta el contacto y fíjate en lo que muestra el Debug
Terminal. Debería ser: P5 = 0, P7 = 1.
• Presiona los dos bigotes el mismo tiempo. Ahora lo que se debería mostrar es: P5 = 0, P7 = 0.
• Si todo es correcto, pasa a la siguiente actividad.
¿Qué ocurriría si no tuvieras a tu disposición un ordenador con el que ver el estado de las entradas en el
Debug Terminal? ¿Cómo comprobarías si has montado correctamente los bigotes? Una posible solución es
programar la tarjeta Home Work para que saque un valor determinado en función de cuál es la entrada que está
activada. Esto puede materializarse con un par de diodos LED que se enciendan y se apaguen según los bigotes
estén presionados o no.
Para montar este circuito que refleje en dos LED el estado de los bigotes se necesita.
Figura 6-8.- Esquema eléctrico de los LED que monitorizan el estado de los bigotes.
6 -5
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
Figura 6-9.- Aspecto de la protoboard una vez montados los circuitos de los bigotes, del zumbador, de los servos
y de los dos LED de monitorización del estado de los bigotes.
IF (IN7 = 0) THEN
HIGH 1
ELSE
LOW 1
ENDIF
IF (IN5 = 0) THEN
HIGH 10
ELSE
LOW 10
ENDIF
Las declaraciones IF...THEN serán explicadas más extensamente en posteriores apartados. En PBASIC
se utilizan para tomar decisiones. La primera declaración pone P1 a nivel alto, de tal forma que el LED se
iluminará cuando el bigote conectado a P7 esté presionado (IN7 = 0). La parte del ELSE hace que el LED se
apague cuando el bigote no está presionado. La segunda declaración hace lo mismo para el otro bigote
(conectado a P5, y su LED conectado a P10).
6 -6
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
En esta experiencia vamos a tratar de que el robot reaccione a la información que introducen los bigotes.
Cuando el Home Boe –Bot esté moviéndose y uno de sus bigotes sea presionado, significa que ha tropezado con
un obstáculo. El programa de exploración deberá comprobar esta entrada y decidir que maniobra hay que
ejecutar para evitar dicho obstáculo y dirigir al robot en otra dirección.
El siguiente programa hace que el Home Boe-Bot vaya hacia delante hasta encontrarse con un obstáculo.
En el momento en que el obstáculo sea detectado por los bigotes las rutinas y subrutinas escritas en el tema
anterior harán que el Home Boe-Bot retroceda y gire. Después, seguirá avanzando hasta que se encuentre con
otro obstáculo.
El microcontrolador que gobierna al Home Boe-Bot tiene que ser programado para que tome decisiones
cuando uno de los bigotes sea presionado. El lenguaje PBASIC dispone de un comando llamado “IF...THEN”. La
sintaxis es la siguiente:
IF (condición) THEN...{ELSEIF (condición)}…{ELSE}…ENDIF
Los puntos suspensivos significan que se puede meter un trozo de código en su lugar. El siguiente
programa hace que el Home Boe-Bot tome decisiones en función de las entradas de los bigotes, llamando a
subrutinas de movimiento ya conocidas.
Programa RoamingWithWhiskers.bs2
Este programa muestra una forma de evaluar las entradas proporcionadas por los bigotes para decidir a
qué subrutina de movimiento llamar, utilizando la declaración IF...THEN.
6 -7
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
Turn_Right:
FOR pulseCount = 0 TO 20 ' Giro a la dcha. 90º.
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
Las declaraciones IF...THEN en el programa principal comprueban el estado de los bigotes. Si los dos
bigotes están presionados (IN5 = 0, IN7 = 0), el robot realizará un giro en U llamando a la subrutina Back_Up
seguida de la rutina Turn_Left (dos veces). Si sólo el bigote izquierdo está presionado (IN5 = 0), el programa
ejecutara la subrutina Back_Up seguido por la subrutina Turn_Right. Si es el bigote derecho el que está
presionado, el programa ejecutará la rutina Back_Up y seguidamente llamará a la rutina Turn_Left. La única
posibilidad que no está resuelta en el programa es cuando los dos bigotes no están presionados (IN5 = 1, IN7 =
1). En ese caso el comando ELSE llama a la rutina Forward_Pulse.
6 -8
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
Las subrutinas Turn_Left, Turn_Right y Back_Up ya son conocidas, pero la subrutina Forward_Pulse tiene
un detalle que debe ser explicado: sólo envía un pulso, después devuelve el control al programa principal. Esto es
importante, porque significa que el Home Boe-Bot puede comprobar sus bigotes entre cada pulso que le hace
avanzar.
Los parámetros del bucle FOR...NEXT en las rutinas Back_Right y Back_Left pueden ser modificados para
variar el ángulo de giro del Home Boe_Bot.
Modifica el parámetro EndValue del bucle FOR...NEXT en las rutinas de movimiento del programa
RoamingWithWhiskers.bs2.
También puedes cambiar las declaraciones IF...THEN para que los LED empleados en la experiencia
anterior indiquen la maniobra que está realizando el Boe-Bot. Aquí tienes un ejemplo:
6 -9
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
6.5. EXPERIENCIA #4: INTELIGENCIA ARTIFICIAL. DECIDIENDO QUÉ HACER CUANDO SE BLOQUEA EL
HOME BOE-BOT EN LAS ESQUINAS
Probablemente ya te habrás dado cuenta de que el Home Boe-Bot se queda bloqueado en las esquinas.
Cuando encuentra una esquina y el bigote izquierdo choca contra la pared, gira a la derecha, pero entonces es el
bigote derecho el que choca contra la otra pared, quedándose maniobrando en un bucle infinito del que no sabe
como salir.
El programa RoamingWithWhiskers puede ser modificado para detectar este problema de bloqueo en las
esquinas y actuar en consecuencia. El truco está en contar y recordar cuantas veces han chocado los bigotes de
forma alternativa . El valor de este contaje es comparado con un valor previamente decidido, y si el número de
choques es menor al valor, se añade uno más. Si dicha cuenta es igual o mayor que el valor decidido
previamente, es el momento de hacer un giro en U y resetear o inicializar el contador de choques alternos.
El siguiente programa te enseña como se jerarquizan las declaraciones IF...THEN. En otras palabras, el
programa comprueba una de las condiciones, y si es verdadera, pasa a comprobar la otra condición dentro de la
primera. Aquí tienes un ejemplo en pseudo código.
ELSE
Comandos que son
ejecutados cuando no
se cumple la condición
ENDIF
Programa EscapingCorners.bs2
• Teclea, salva y ejecuta el programa EscapingCorners.bs2, que hará que tu Home Boe-Bot ejecute un giro en U
al cuarto o quinto choque alterno de los bigotes, dependiendo de cual es el que se ha presionado primero.
6 -10
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
Turn_Right:
FOR pulseCount = 0 TO 20 ' Giro a la dcha 90º.
PULSOUT 13, 850
PULSOUT 12, 850
6 -11
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
PAUSE 20
NEXT
RETURN
Se han creado tres nuevas variables para detectar las esquinas. La variable counter (de tipo nibble) puede
almacenar valores entre 0 y 15 porque es una variable de 4 bits cuyo valor máximo es 15 en decimal.. Es un
tamaño razonable, ya que nuestro valor máximo para detectar que estamos en una esquina es 4. Las otras dos
variables (old7 y old8) son de tipo bit, es decir, que sólo pueden almacenar los valores 1 o 0. Tienen el tamaño
adecuado, ya que servirán para almacenar los valores “viejos” de IN7 e IN5, que también son de tipo bit.
Estas variables deben ser inicializadas. La variable counter se inicializa a 1, y cuando llegue a 4 se
reinicializará de nuevo a 1. Las otras dos variables deben ser inicializadas de tal forma que parezca que uno de
los dos bigotes fue presionado antes de iniciar el programa. Da igual cuál sea la que esté a 1, siempre que la otra
esté a 0.
Counter = 1
old7 = 0
old5 = 1
Ahora pasamos a la sección de ”Detectar Esquinas Alternas Consecutivas”!. Lo primero que debemos
comprobar es que uno de los bigotes ha sido presionado. Una manera muy simple es preguntar si el valor de IN7
es diferente al de IN5.
Si es cierto que uno de los bigotes ha sido presionado, a continuación se debe comprobar si dicho bigote
es el mismo que la vez anterior o si es el otro. Es aquí donde participan las variables old7 y old5.
Cuando se cumple lo anterior significa que ya se han producido cuatro contactos consecutivos de los
bigotes, por lo que hay que resetear el contador, o sea, ponerlo a 1 y ejecutar un giro en U.
6 -12
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
El siguiente ELSE va en la declaración IF (old7 <> IN7) AND (old5 <> IN5) THEN y cubre la posibilidad de
que la condición del IF no sea cierta. En otras palabras, que no se hayan producido los cuatro choques
alternativos y por tanto el Home Boe-Bot no está en una esquina.
ELSE
counter = 1
Cuestiones
Ejercicios
1. Escribe en una nueva línea un comando DEBUG para el TestWhiskers.bs2 que actualice el estado de los
bigotes. Ajusta el comando PAUSE de 50 a 250.
2. ¿Cuál es el nuevo ratio de muestreo que pusiste en el ejercicio 1? Pista: El ratio de muestreo es el número de
veces por segundo que se comprueba el estado de los bigotes. Se puede calcular dividiendo 1 entre el tiempo
que pasa entre cada muestreo.
3. En el programa RoamingWithWhiskers.bs2 determina el ratio de muestreo cuando el Home Boe-Bot está
avanzando y cuando está maniobrando.
4. Utilizando el programa RoamingWithWhiskers.bs2 como referencia, escribe una subrutina llamada Turn_Away
que llame una vez a Back_Up y dos veces a Turn_Left. Escribe también las modificaciones que deberías
hacer al programa principal de RoamingWithWhiskers.bs2.
Proyectos
1. Modifica el programa RoamingWithWhiskers.bs2 para que el Home Boe-Bot emita un pitido de 4 kHz durante
100 ms antes de ejecutar una maniobra evasiva. Haz que el pitido sea doble si han sido los dos bigotes los
que han tropezado con algún obstáculo.
2. Modifica RoamingWithWhiskers.bs2 para que los LED parpadeen cuando el Home Boe-Bot esté ejecutando
una maniobra.
3. Lo ideal sería que el Home Boe-Bot recorriera la mayor distancia en el menor tiempo posible. Modifica el
RoamingWithWhiskers.bs2 para que el robot ejecute giros de 45º en una habitación con unos pocos
obstáculos de tamaño variable. Repite el proceso con giros de 30º, 60º, 90º y 120º. Prueba también a ver
cuanta distancia es capaz de recorrer el Home Boe-Bot marcha atrás.
6 -13
Microbot “Home Boe-Bot”
Tema 6: Navegación con antenas táctiles
6 -14
Microbot “Home Boe-Bot”
Tema 7
Caminando hacia la luz
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
La luz tiene muchas aplicaciones en la robótica y el control industrial. Se citan algunos ejemplos como la
detección del borde de un rollo de tela en la industria textil, el encendido de las farolas según la época del año, el
nivel de luminosidad al tomar una fotografía, el momento adecuado para regar las plantas de un invernadero...
Hay muchos tipos de sensores de luz dedicados a funciones concretas. El sensor de luz que utiliza tu
Home Boe-Bot está diseñado para detectar la luz visible y puede servir para medir el nivel de luminosidad. Con
esta capacidad, tu robot puede ser programado para reconocer áreas con luz o perímetros oscuros, informando de
los niveles de luminosidad que detecte, y buscar así la salida de una habitación navegando hacia la luz que entra
por su puerta.
Las resistencias manejadas hasta ahora tenían un valor fijo que venía marcado en su cuerpo mediante
franjas de colores. Las foto resistencias, también llamadas LDR (Resistencias Dependientes de la Luz), tienen un
valor óhmico que varía en función de la luz (brillo o luminosidad) que incide sobre su superficie en cada momento.
Ver la figura 7-1. La LDR tiene poca resistencia cuando está muy iluminada, mientras que si está en la oscuridad
puede superar los 50 KΩ.
Figura 7-1.- Símbolo eléctrico y apariencia de una LDR, que es una resistencia cuyo valor depende de la luz que
recibe.
7.2. EXPERIENCIA #1: MONTANDO Y PROBANDO LOS CIRCUITOS DE LAS FOTO RESISTENCIAS
Los circuitos con foto resistencias LDR serán capaces de diferenciar entre una sombra y la luz normal. Los
comandos de PBASIC que utilizarás son similares a los manejados para comprobar si un bigote estaba
presionado o no.
La figura 7-2 muestra el esquema, y la 7-3 la apariencia del conexionado de los circuitos de las foto
resistencias que utilizarás en esta y en las dos próximas experiencias.
7-1
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
Un pin de E/S de la Home Work puede funcionar tanto como entrada como salida. Cuando lo hace como
salida, el pin puede enviar señales de nivel alto (5 V) o bajo (0 V). Estas señales pueden utilizarse para controlar
los LED, los servos, el zumbador, etc. Cuando el pin funciona como entrada lo que haces es “escuchar”. Si el pin
de entrada detecta un voltaje superior a 1’4 V almacena un 1 lógico en el biestable correspondiente. Si el voltaje
es inferior almacenará un 0. En el tema anterior estos biestables de entrada almacenaban valores que indicaban
cuando los bigotes eran presionados.
7-2
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
En la figura 7-4 se muestra el circuito que se conecta a una patita de entrada de la Home Work cuando
hay una LDR. Este circuito es un “divisor de tensión” formado por dos resistencias en serie: la LDR y otra de 2kΩ.
Si la LDR está recibiendo la luz de una fluorescente su resistencia interna tiene un valor R = 1 kΩ,
aproximadamente. Si por el contrario se halla situada debajo de la sombra de un objeto, R = 25 kΩ. La tensión Vo
que se aplica a la patita de entrada de la Home Work depende del valor de la LDR. Cuanto más resistencia tenga
la LDR menor valor tendrá Vo y viceversa.
Si Vo se conecta a la patita 6 de E/S (IN6) cuando Vo tiene un voltaje superior a 1,4 v, el biestable de IN6
almacena un nivel lógico 1 y si es inferior a 1,4 V almacena un 0.
Figura 7-4.- Circuito de conexionado de la LDR con una patita de entrada de la Home Work.
Detectando sombras
Al pasar bajo una sombra, la resistividad de la foto resistencia (R) aumenta, lo que hace que el valor de Vo
disminuya. La resistencia de 2 kΩ hace que el valor de Vo esté ligeramente por encima del umbral de 1’4 V incluso
cuando se halla dentro de una habitación bien iluminada. Si haces sombra sobre el Home Boe-Bot con tu mano
Vo tomará un valor inferior al umbral de 1’4 V. Los dos circuitos con las LDR se conectan a las patitas 6 y 3 de la
Home Work.
En una habitación bien iluminada tanto IN6 como IN3 almacenarán el nivel 1. Si existe una sombra sobre
la fotorresistencia conectada a P6, entonces almacenarán un 0. Asimismo, si la sombra está sobre la
fotorresistencia conectada a P3, sólo IN3 almacenará un 0.
Programa TestPhotorresistorsDividers.bs2
7-3
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
Dependiendo de la iluminación en el área de acción del robot, deberás poner unas resistencias superiores o
inferiores a 2 kΩ para que el Home Boe-Bot pueda detectar las sombras.
• Recuerda que debes desconectar la alimentación de la tarjeta cuando estés modificando los circuitos.
• Cambia las resistencias de 2 kΩ por otras con los siguientes valores: 470 Ω, 1 kΩ, 4’7 kΩ y 10 kΩ.
• Prueba el TestDigitalPhotorresistors.bs2 para averiguar con que resistencia trabaja mejor el Home Boe-Bot
bajo esas condiciones de iluminación.
• Utiliza la combinación de resistencias que tu creas más conveniente en las dos siguientes experiencias.
Vamos a adaptar el programa RoamingWithWhiskers.bs2 del tema anterior para que funcione con las foto
resistencias. Todo lo que tienes que hacer es ajustar las condiciones del IF...THEN para que monitoricen IN6 e
IN3 en vez de IN7 e IN5. La figura 7-5 muestra como hacerlo:
Programa RoamingPhotoresistorDividers.bs2
7-4
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
LOOP
7-5
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
RETURN
Turn_Right:
FOR pulseCount = 0 TO 20 ' Giro a la dcha. 90º.
PULSOUT 12, 850
PULSOUT 13, 850
PAUSE 20
NEXT
RETURN
Puedes mejorar el rendimiento de tu robot colocando algunas de las llamadas a subrutina diseñadas para
ayudar al Home Boe-Bot a retroceder ante obstáculos y girar para evitarlos. La figura 7-6 muestra un ejemplo en el
que dos llamadas a la subrutina Turn_Left son usadas en el cuerpo del IF...THEN donde la condición es que
ambas foto resistencias detecten una sombra. De esta forma, si solo una de las foto resistencias detecta la
sombra, las llamadas a la subrutina Back_Up son aplicadas y el Home Boe-Bot girará en respuesta a la sombra.
Figura 7-6.- Programa para hacer girar al robot frente a las sombras.
Eliminando los bucles FOR...NEXT de las subrutinas de movimiento puedes conseguir que tu Home Boe-
Bot sea más eficiente. Esto no era posible con los bigotes, ya que el robot tenía que retroceder antes de girar
cuando se había encontrado con un obstáculo físico. Cuando utilizas las sombras para guiar al Home Boe-Bot,
puedes comprobar entre cada pulso si la sombra ha sido ya detectada, sin importar si está moviéndose hacia
delante o ejecutando una maniobra.
7-6
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
Una manera de controlar remotamente el Home Boe-Bot es hacer que esté parado bajo la luz normal, pero
que siga una sombra en el momento que la detecte. Si creas una sombra con tu mano sobre la fotorresistencia
podrás hacer que el robot te siga los movimientos que hagas con ella.
Programa ShadowGuideBoeBot.bs2
Cuando ejecutes el siguiente programa, el Home Boe-Bot debería quedarse quieto cuando no haya
ninguna sombra sobre sus foto resistencias. Si creas una sombra que afecte a las dos foto resistencias el Home
Boe-Bot debería moverse hacia delante. Si la sombra está sólo sobre una de las foto resistencias, el Home Boe-
Bot debería girar en la dirección en que la fotorresistencia ha detectado la sombra.
IF (IN6 = 0) AND (IN3 = 0) THEN ' Ambas LDR detectan sombras, avance.
PULSOUT 13, 850
PULSOUT 12, 650
ELSEIF (IN6 = 0) THEN ' Sombra a la izda.,
PULSOUT 13, 750 ' giro a la izda.
PULSOUT 12, 650
ELSEIF (IN3 = 0) THEN ' Sombra a la dch.,
PULSOUT 13, 850 ' giro a la dcha.
PULSOUT 12, 750
ELSE
PULSOUT 13, 750 ' No hay sombras, stop
PULSOUT 12, 750
ENDIF
LOOP
El bloque IF...THEN dentro del DO...LOOP busca una de las cuatro posibles condiciones de sombra:
ambas, izquierda, derecha o ninguna. Dependiendo de que condición es detectada, los comandos PULSOUT
determinan los pulsos a enviar para ejecutar la maniobra correspondiente: avanzar, girar a la derecha, girar a la
izquierda o quedarse quieto. Después del bloque IF...THEN, es importante acordarse de incluir la instrucción
PAUSE 20 para asegurarse de que se da a tiempo a los servos a recibir todos los pulsos que les son enviados.
Este programa no necesita la condición del ELSE ni los dos comandos PULSOUT que la siguen. Si
decides no enviar pulsos, el Home Boe-Bot estará parado igual que si ejecutaras un PULSOUT 750.
7-7
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
ELSE
PULSOUT 13, 750
PULSOUT 12, 750
La única información que la Home Work es capaz de tomar de las foto resistencias es si el nivel de luz
está por encima o debajo del umbral predeterminado. Se propone un nuevo circuito con el que la Home Work
puede monitorizar y determinar niveles de iluminación relativos. El valor que producirá este circuito oscilará entre
números muy pequeños (luz muy brillante) y muy grandes (poca luz). Esto significa que no tendrás que volver a
cambiar manualmente las resistencias dependiendo del nivel de luz. En vez de eso, podrás ajustar tu programa
para buscar diferentes umbrales de transición de 0 a 1.
El Condensador
La figura 7-7 muestra el símbolo esquemático para un condensador de 0.01 µF junto a un dibujo del
condensador que viene con tu kit del Home Boe-Bot. La marca 103 indica su valor. Dicha marca expresa el valor
del condensador en nanofaradios, que representan la millonésima parte del µF. Así, 103 indica que al 10 inicial
hay que añadir tres ceros para obtener el valor de 10.000 nF ó 0.01 µF.
El circuito básico que se utiliza para determinar el nivel de luz se llama circuito resistencia/condensador
(RC). La figura 7-8 muestra los esquemas de los circuitos RC para detección de luz del Home Boe-Bot, y la figura
7-9 muestra una imagen del conexionado.
Para medir el nivel de luz que existe sobre la LDR nos basamos en el tiempo que un condensador tarda en
descargarse por una resistencia que se coloca en paralelo con él. Dicha resistencia será la LDR y cuanto mayor
valor tenga más tardará en descargarse el condensador.
7-8
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
Figura 7-8.- Esquema eléctrico de los circuitos de detección del nivel de luz. El condensador se descarga a través
de la LDR en paralelo
Figura 7-9.- Apariencia del montaje de los circuitos detectores del nivel de luz.
Piensa que el condensador del circuito mostrado en la figura 7-10 funciona como una pequeña batería
recargable. Cuando P6 envía una señal de nivel alto, carga el condensador al aplicarle 5 V. Tras unos pocos ms,
el condensador alcanza casi 5 V. Si el programa cambia en este momento la configuración de la patita P6 y la
hace entrada, el condensador irá perdiendo su carga a través de la fotorresistencia. Debido a esto, el voltaje
decrece. La cantidad de tiempo que tarda el voltaje que recibe IN6 en quedar por debajo de 1’4 V depende del
valor óhmico de la fotorresistencia por la que se descarga el condensador. Si la fotorresistencia tiene una alta
resistividad debido a unas condiciones de luz muy débiles, el condensador tardará más en descargarse. Si la
fotorresistencia tiene una baja resistividad por recibir una luz muy brillante, el condensador se descargará
rápidamente. El tiempo de descarga del condensador depende de la luz que incide sobre la LDR.
7-9
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
Figura 7-10.- Primero P6 es salida y saca un 1 para cargar al condensador. Luego P6 es entrada y recibe el
voltaje del condensador que va decreciendo al irse descargando a través de la LDR.
La Home Work puede ser programada para cargar el condensador y después medir cuanto tiempo tarda
en descargarse hasta llegar a 1’4 V. Esta medición del tiempo de descarga puede usarse para determinar el nivel
o intensidad de la luz detectada por la fotorresistencia. Para esta medición se utilizan los comandos HIGH,
PAUSE, y el nuevo RCTIME. Este último, el RCTIME, se utiliza para medir el tiempo de descarga en un circuito
como el mostrado en la figura 7-10. La sintaxis del RCTIME es:
El atributo Pin es el número de pin de E/S que quieres medir. Por ejemplo, si quieres medir P6, el atributo
Pin sería 6. El atributo State puede ser 1 o 0. Sería 1 si el voltaje del condensador comienza siendo mayor que 1’4
V y va bajando, o 0 si es menor que 1’4 V y va subiendo. Para el circuito de la figura 7-10 el voltaje empezará
siendo prácticamente 5 V e irá bajando hasta 1’4 V, por lo que State sería 1. El atributo Duration es una variable
que almacena el tiempo de descarga medido en unidades de 2 µs. En el siguiente ejemplo, mediremos el tiempo
de descarga del circuito RC formado por el condensador y la LDR conectada a P6 (la foto resistencia izquierda
del Home Boe-Bot). Para guardar dicho tiempo usaremos una variable llamada timeLeft.
Lo primero que debes hacer para medir el tiempo de descarga del circuito RC es asegurarte de que has
declarado la variable que almacenará dicho tiempo:
Las tres siguientes líneas de código cargan el condensador, miden el tiempo de descarga y lo almacenan
en la variable timeLeft:
• Comienza por cargar el condensador conectando el circuito a 5 V (utiliza para ello el comando HIGH).
• Utiliza el comando PAUSE para darle suficiente tiempo a HIGH para que cargue el condensador del circuito
RC.
• Ejecuta el comando RCTIME, que configura el pin de E/S como entrada, mide el tiempo de descarga (desde
casi 5 V hasta 1’4 V), y lo almacena en la variable timeLeft.
Programa TestP6Photoresistors.bs2
7-10
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
• Crea una sombra sobre la fotorresistencia conectada a P6 y verifica que el tiempo de descarga del
condensador es mayor cuanto más oscura es la luz que rodea al Home Boe-Bot.
• Aplica una luz brillante sobre la LDR. El tiempo de descarga del condensador debe ser pequeño.
DO
HIGH 6
PAUSE 2
RCTIME 6,1,timeLeft
LOOP
En esta práctica probarás y calibrarás los sensores de tu Home Boe-Bot para que distingan entre luz
ambiental y un foco de luz directa. Programarás tu robot para que siga un foco de luz que se mueva frente a él.
Para esta experiencia se precisa una linterna.
Esta práctica funcionará mejor si las foto resistencias apuntan hacia puntos un poco separados del Home
Boe-Bot (unos 5 cm).
Figura 7-11.- Procura que las LDR apunten a una distancia de unos 5 cm frente al Home Boe-Bot.
7-11
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
Antes de programar el Home Boe-Bot para que siga el foco de luz, debes conocer las diferencias entre las
lecturas de luz que existentes con y sin el foco de luz apuntando sobre su zona de detección.
Programa TestBothPhotoresistors.bs2
DURACION DESCRIPCION
TimeLeft TimeRight
Tiempo de descarga medido sin la linterna (luz
ambiente)
Tiempo de descarga medido aplicando la luz de la
linterna frente al robot
Tabla 7-1.- Tabla para rellenar con los tiempos de descarga corespondientes a la LDR izquierda y a la derecha
cuando hay luz ambiente y cuando la luz procede de una linterna.
PAUSE 100
LOOP
7-12
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
Hasta ahora has estado utilizando declaraciones de variables. Por ejemplo, counter VAR Nib referencia
con el nombre counter a un determinado espacio en la memoria RAM del microcontrolador. Después de declarar
la variable, cada vez que utilizas counter en un programa PBASIC, estás usando ese determinado valor
almacenado en la RAM.
También puedes declarar constantes. En otras palabras, si tienes un número que vas a emplear muy a
menudo a lo largo del programa, puedes darle un nombre representativo. En lugar de utilizar la directiva VAR,
deberás usar la directiva CON. Aquí tienes algunos ejemplos que se utilizarán para referenciar constantes:
Ahora, cada vez que en el programa aparezca el nombre leftAmbient, la Home Work tomará el valor 108.
Actuará igual cuando aparezca rightAmbient, leftBright y rightBright, sustituyéndolos por 114, 20 y 22
respectivamente. Antes de ejecutar, sustituye estos valores por los que apuntaste en la tabla 7-1.
Las constantes también pueden ser utilizadas para calcular otras constantes. Aquí tienes un ejemplo de
dos constantes llamadas leftThershold y rightThershold que se calculan a partir de las constantes que acabamos
de declarar. Estas nuevas constantes se utilizan en el programa para saber cuando el foco de luz ha sido
detectado.
Programa FlashlightControlledBoeBot.bs2
7-13
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
' CAMBIAR ESTOS VALORES POR LOS QUE TU DETERMINES E INCLUIRLOS EN LA TABLA 6-1.
' Declarar variables para almacenar los tiempos RC medidos en las LDR izda.
' y dcha.
DO
GOSUB Test_Photoresistors
GOSUB Navigate
LOOP
Test_Photoresistors:
RETURN
7-14
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
Navigate:
RETURN
Estas son las cuatro declaraciones de constantes que tu deberás hacer con los valores que apuntaste en
la tabla 7-1:
Ahora que has declarado las constantes, las siguientes dos líneas son para calcular las dos nuevas
constantes que comparándolas con los valores de timeLeft y timeRigut te ayudarán a determinar cuando las foto
resistencias están detectando luz ambiental o un foco de luz.
Este es el indicador de reset que has utilizado en muchos de los programas anteriores.
La sección del programa principal sólo contiene dos llamadas a subrutina. Test_Photoresistors toma las
mediciones de RCTIME de los dos circuitos RC y Navigate determina que pulsos se deben enviar a los servos.
7-15
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
DO
GOSUB Test_Photoresistors
GOSUB Navigate
LOOP
Esta es la subrutina que toma las medidas de los circuitos RC. La medición del circuito izquierdo se
almacena en timeLeft y la del circuito derecho en timeRight.
Test_Photoresistors:
HIGH 6
PAUSE 3
RCTIME 6,1,timeLeft
HIGH 3
PAUSE 3
RCTIME 3,1,timeLeft
RETURN
La subrutina Navigate utiliza un bloque IF…THEN para comparar las variables timeLeft y timeRight con las
constantes leftThreshold y rightThreshold respectivamente. Recuerda, cuando la medida de RCTIME es pequeña,
eso significa que una luz brillante ha sido detectada. Así, al comparar esta medición (guardada en la variable
correspondiente), si es menor que la constante, significa que se ha detectado un foco de luz.
Puedes ajustar el funcionamiento del programa cambiando el valor de escalado cuando calculas las
constantes:
Si aquí cambias el factor de escalado de 5/8 a 1/2 tu Home Boe-Bot será menos sensible ante las
variaciones de luz, por lo que será mucho más difícil que detecte los focos de luz.
7-16
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
• Prueba distintos factores de escalado, como ¼, ½, 1/3, 2/3, y ¾, y anota las diferencias cuando el robot detecta
un foco de luz.
Modificando el bloque IF...THEN en el programa de ejemplo puedes cambiar el comportamiento del robot
para que en vez de seguir el foco de luz trate de evitarlo.
• Modifica el bloque IF...THEN para que el Home Boe-Bot retroceda cuando detecte el foco de luz con ambas
foto resistencias y que gire cuando lo detecte sólo con una de ellas.
El programa de ejemplo utilizado en esta práctica puede utilizarse para guiar al Home Boe-Bot, situado en
una habitación oscura, hacia una puerta entreabierta por la que entra una luz. Permite también un control mucho
mayor que cuando generas sombras con tus manos sobre las foto resistencias.
Esta experiencia funciona mejor con la superficie sensible de las fotorresistencia apuntando hacia fuera y
arriba.
• Recoloca las foto resistencias como se muestra en la figura 7-12.
La clave de mover el Home Boe-Bot para que vaya hacia la luz es hacer que avance cuando las
mediciones de las dos foto resistencias sean pequeñas y hacer que gire hacia el lado de la fotorresistencia que
haya obtenido la medición más pequeña cuando éstas sean muy diferentes. Esto hará que el robot gire hacia la
luz.
Inicialmente parece una tarea fácil de programar; un razonamiento con IF...THEN como el del siguiente
ejemplo debería funcionar. El problema está en que el Home Boe-Bot gire continuamente de izquierda a derecha y
viceversa porque la variación de los valores de timeLeft y timeRight sea muy grande. Cada vez que el robot gira
un poco, las variables timeLeft y timeRight cambian y el Home Boe-Bot intenta corregirlo retrocediendo.
7-17
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
Ahora se propone otro bloque de código que trabaja un poco mejor. En este caso se fija el problema del
retroceso y el avance bajo ciertas condiciones. Ahora la variable timeLeft tiene que ser mayor que la timeRight en
un margen de al menos 15 unidades antes de que el Home Boe-Bot gire hacia la izquierda. Igualmente ocurre
cuando el Boe-Bot gira hacia la derecha. Esto le da al robot la oportunidad de retroceder antes de ejecutar el giro.
El problema de este último bloque de código es que sólo trabaja bajo condiciones de una oscuridad media.
Si pones tu Home Boe-Bot en un área más oscura retrocederá y avanzará continuamente. Si lo pones en un área
muy brillante, avanzará continuamente, sin girar a izquierda o derecha.
Cuando el Home Boe-Bot está en una parte oscura de la habitación, el valor de cada fotorresistencia es
muy grande. Para que decida avanzar hacia una zona más iluminada, la diferencia entre ambas mediciones tiene
que ser amplia. Cuando el robot está en una zona más iluminada, las mediciones de cada fotorresistencia serán
menores, pero para que el Home Boe-Bot gire, la diferencia entre ambas mediciones debe ser mucho menor que
cuando estaba en la parte oscura de la habitación. La manera de conseguir que esta diferencia responda a las
condiciones de iluminación es utilizando una variable que sea una fracción de la media entre timeLeft y timeRight.
Así, dará igual si la luz es brillante o no.
Ahora la variable difference puede usarse en el bloque IF...THEN, y será un valor alto cuando la luz esté
baja, y un valor bajo cuando la luz sea brillante.
7-18
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
Programa RoamingTowradTheLight.bs2
Al contrario que RoamingPhotoresistorDividers.bs2, este programa hará que el Home Boe-Bot sea mucho
más sensible a las sombras que crees con tus manos sobre las foto resistencias, sea el nivel de luz ambiental alto
o bajo. Este programa no necesita que cambies la posición de las foto resistencias en función de las condiciones
de iluminación. En cambio, el almacenamiento de las condiciones de iluminación y los ajustes de sensibilidad se
realizan por software utilizando las variables average y difference.
Este programa utiliza la media total de timeLeft y timeRight y la utiliza para calcular difference, valor que
empleará para determinar los pulsos de giro.
' Declara variables para almacenar las medidas de tiempo RC de las LDR
' izda. y dcha.
DO
GOSUB Test_Photoresistors
GOSUB Average_And_Difference
GOSUB Navigate
7-19
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
LOOP
Test_Photoresistors:
RETURN
Average_And_Difference:
RETURN
Navigate:
ELSE
PULSOUT 13, 850
PULSOUT 12, 650
ENDIF
PAUSE 10
RETURN
La variable difference es la average media (average) dividida entre 6. Puedes dividir average por un valor
más pequeño si quieres que el Home Boe-Bot sea menos sensible a las diferencias de iluminación, o mayor si lo
quieres hacer más sensible.
7-20
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
• Ejecuta el programa y comprueba si el Home Boe-Bot es capaz de salir de la habitación oscura con los
distintos valores.
• Decide cuál es el denominador óptimo.
Denominator CON 6
También puedes eliminar una variable. Fíjate que la única vez que utilizas la variable average es para
almacenar temporalmente el valor de la media que después dividirás por Denominator para almacenarlo en la
variable difference. La variable difference vuelve a ser utilizada después, no así average:
Ahora, tanto average como difference referencian a la misma palabra en la RAM. Comprueba que todo
funciona correctamente después de hacer los cambios.
7-21
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
Cuestiones
Ejercicios
Proyectos
7-22
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
1. Con las foto resistencias de tu Home Boe-Bot mirando hacia delante y abajo, escribe un programa que haga
que el Boe-Bot diferencie entre blanco y negro. Busca una superficie blanca esparce trozos de papel negro
sobre ella. Escribe un programa para que el Home Boe-Bot evite estos papeles. Pistas: Asegúrate de probar y
entender cuando el robot detecta el color blanco y cuando el negro. Utiliza los programas de las tres últimas
actividades de este capítulo. Asegúrate de que los obstáculos sigan un curso uniforme y que no hay luces
brillantes en la habitación donde haces las pruebas.
2. Si has hecho bien el proyecto 1, prueba a meter al Home Boe-Bot entre tiras de papel negro.
7-23
Microbot “Home Boe-Bot”
Tema 7: Caminando hacia la luz
7-24
Microbot “Home Boe-Bot”
Tema 8
Navegación guiada por Infrarrojos IR
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
Las ondas electromagnéticas emitidas por los cuerpos de color rojo tienen una longitud de onda de 780
nm (nanómetros) y son visibles al ojo humano. Por encima de dicha longitud de onda las ondas se denominan
"infrarrojas" ( IR ) y ya no son visibles. Existen ciertos modelos de diodos LED que emiten ondas infrarrojas y se
llaman LED IR. También existen detectores (receptores) de IR. En nuestras aplicaciones usaremos pares de
emisores/receptores que funcionan con una longitud de onda de 980 nm.
Para seguir un camino hay procedimientos sofisticados que utilizan Visión Artificial o Radar. Una forma
más sencilla y barata es mediante los rayos IR.
El sistema de infrarrojos (IR a partir de ahora) que vamos a montar en el Boe-Bot se parece bastante a los
focos de un coche. Cuando las luces del coche enfocan los obstáculos, el conductor puede detectarlos y desviar el
vehículo para no chocar. El Home Boe-Bot usa LED IR como el que se muestra en la figura 8-1. Estos LED
emiten luz infrarroja que se refleja en los obstáculos y vuelve hacia el robot. Los ojos del Home Boe-Bot son los
detectores IR que cuando detectan la luz que refleja el obstáculo envían señales a la Home Work. El cerebro del
robot, toma decisiones y maneja los servomotores en función de los datos recibidos desde los detectores.
Figura 8-1.- El LED emite rayos infrarrojos que al reflejarse en el obstáculo los recibe el sensor receptor.
Los detectores IR que usaremos llevan incorporados filtros ópticos que únicamente permiten el paso de
luz infrarroja de 980 nm. También incorporan un filtro electrónico que impide el paso de señales cuya frecuencia
no sea 38.5 kHz, es decir, los detectores seleccionan una fuente de luz que parpadea 38.500 veces por segundo,
así se consigue que otras fuentes de luz no interfieran en la lectura. La luz del sol tiene una frecuencia de 0 Hz
porque no parpadea ninguna vez por segundo y la luz artificial tiende a parpadear con una frecuencia
comprendida entre los 100 y los 120 Hz. Como estas frecuencias se encuentran muy alejadas de los 38.5 kHz que
filtran los detectores IR, tanto la luz natural como la artificial utilizada para iluminación serán ignoradas.
Vamos a montar y probar los pares emisor/detector de IR. Se necesitan los materiales mostrados en la
figura 8-2, que son los siguientes:
8-1
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
Figura 8-2.- Detectores IR (arriba), en el centro LED emisor y abajo carcasa para este último.
Sigue los siguientes pasos para el montaje de los emisores IR, de acuerdo con la figura 8-3.
Cada pareja de emisor/receptor IR será montada en una esquina de la protoboard de la Home Work. La
figura 8-4 muestra el circuito eléctrico y la figura 8-5, la apariencia final del montaje. Desconecta las pilas de la
placa y los servomotores durante el montaje de los elementos. Monta el circuito de la figura 8-5.
8-2
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
Figura 8-4.- Esquemas eléctricos del conexionado de las parejas emisor/receptor de IR para el lado izquierdo y el
derecho del robot.
El comando FREQOUT
El comando FREQOUT fue diseñado principalmente para sintetizar y generar distintos tonos de sonido. El
rango de actuación de FREQOUT se encuentra entre 1 y 32.768 Hz. Un interesante fenómeno del audio
sintetizado es que contiene unas señales llamadas armónicos. Un armónico es una frecuencia múltiplo superior
mezclada con la frecuencia del tono real que se está sintetizando. El umbral de percepción humana se encuentra
comprendido, aproximadamente, entre los 20 Hz y los 20 kHz. Los armónicos generados por el comando
FREQOUT son de frecuencias superiores a 32.769 Hz. Se puede controlar la frecuencia de los armónicos a través
del parámetro Freq1 con valores superiores a 32.768. En esta práctica se va a usar la instrucción FREQOUT 8, 1,
38.500 para enviar un armónico de 38.5 kHz a la patita P8 durante 1 ms. El LED IR conectado a P8 emitirá una
8-3
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
señal infrarroja a dicha frecuencia y si encuentra un objeto en el camino a una distancia adecuada la refleja con
cierto nivel hasta el detector IR (que tiene un filtro a 38.500 Hz). Éste captará la onda reflejada de IR y producirá
una señal de reconocimiento a la Home Work. Si el objeto se halla a mucha distancia el nivel de la onda reflejada
no será suficiente para ser captado por el receptor de IR.
La manera de funcionar cada par emisor/receptor IR es enviar una señal infrarroja de 38.5 kHz por el
emisor durante 1 ms e inmediatamente almacenar la salida del detector/receptor IR correspondiente en una
variable. He aquí un ejemplo que envía una señal de 38.5 kHz al LED IR conectado a P8 durante 1 ms y después
almacena la salida del detector IR que está conectado a P9 en una variable de tipo bit llamada irDetectLeft.
FREQOUT 8, 1, 38500
IrDetectLeft = IN9
Cuando el detector/receptor IR no percibe ninguna señal su salida permanece en estado alto. Cuando el
detector IR capta el armónico de 38.500 Hz reflejado por un objeto, su salida pasa a nivel bajo. La salida del
detector sólo está a nivel bajo durante un milisegundo después de que el comando FREQOUT haya enviado el
armónico, así que es vital almacenar el contenido de la salida del detector/receptor justo a continuación de haber
enviado el armónico.
Programa TestLeftIrPair.bs2
DO
FREQOUT 8, 1, 38500
irDetectLeft = IN9
LOOP
Deja conectado al PC el Home Boe-Bot por el cable serie porque seguirás usando el terminal de
depuración para probar la pareja de IR. Sitúa un objeto delante de la pareja IR a un par de centímetros como se ve
en la figura 8-1. Comprueba que cuando sitúas un objeto ante la pareja IR, el terminal de depuración muestra un 0
y cuando lo retiras, muestra un 1
Tu turno
8-4
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
En esta práctica montaremos unos LED indicadores que señalizarán cuando se detecta un objeto sin
necesidad del terminal de depuración. Escribiremos también un programa para “escuchar” las interferencias
provenientes de las lámparas fluorescentes. El dispositivo que controla el voltaje dentro de una lámpara
fluorescente se llama reactancia. Algunas reactancias funcionan a la misma frecuencia que nuestro detector IR,
38.5 kHz, haciendo que la lámpara emita señales a dicha frecuencia. Cuando se incluye la detección de objetos en
la navegación del Home Boe-Bot, estas interferencias pueden causar comportamientos extraños.
Figura 8-7.- Apariencia del montaje una vez montados los dos LED.
Hay bastantes componentes involucrados en este circuito por lo que la posibilidad de cometer un error en
el cableado aumenta. Por eso es importante tener un programa de prueba para asegurarnos de que los detectores
IR están “escuchando” a los emisores y lo hacen correctamente. Se puede utilizar este programa para comprobar
que todo funciona correctamente antes de desenchufar el Home Boe-Bot del cable serie.
8-5
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
DEBUG CLS,
"DETECTORES IR", CR,
"Izdo. Dcho.", CR,
"----- -----"
DO
FREQOUT 8, 1, 38500
irDetectLeft = IN9
FREQOUT 2, 1, 38500
irDetectRight = IN0
IF(irDetectLeft = 0) THEN
HIGH 10
ELSE
LOW 10
ENDIF
IF(irDetectRight = 0) THEN
HIGH 1
ELSE
LOW 1
ENDIF
DEBUG CRSRXY, 2, 3, BIN1 irDetectLeft,
CRSRXY, 9, 3, BIN1 irDetectRight
PAUSE 100
LOOP
8-6
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
Tu turno
Prueba a colocar objetos de diferentes colores en el camino del Boe-Bot. ¿Qué colores detecta y cuáles
no?
Si el Boe-Bot detecta algún obstáculo cuando realmente no hay ninguno, obviamente está haciendo una
lectura incorrecta de su entorno. Normalmente esto sucede cuando la luz ambiente interfiere con los detectores IR.
Lo peor que te puede pasar si estás haciendo una demostración de las habilidades de tu Home Boe-Bot es que no
se comporte como has previsto, por eso es conveniente hacer esta sencilla comprobación en el escenario de la
demostración.
La prueba es muy sencilla: simplemente dejaremos al Home Boe-Bot tomando lecturas a través de los
detectores de infrarrojos sin que los LED estén emitiendo. De este modo, si se detecta algo, el zumbador
comenzará a sonar y sabremos que se trata de la luz ambiental producida por lámparas fluorescentes y no tiene
nada que ver con nuestro sistema de infrarrojos.
Programa InterferenceSniffer.bs2
DO
IF (IN0 = 0) OR (IN9 = 0) THEN
DEBUG "Interferencias IR detectadas!!!", CR
FOR counter = 1 TO 5
HIGH 1
HIGH 10
FREQOUT 4, 50, 4000
LOW 1
LOW 10
PAUSE 20
NEXT
ENDIF
LOOP
Cuanto más iluminan las luces de un coche, más lejos se puede ver en la oscuridad. Lo mismo le sucede
al Boe-Bot: cuanta más intensidad de IR generen los LED, más aumentará el rango o distancia de detección de
8-7
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
obstáculos. Cuanta menos resistencia ofrezcamos a la corriente, más intensidad de rayos IR producirán los LED.
Se trata de modificar los valores de las resistencias de polarización de los LED para variar la intensidad IR
generada por ellos.
Programa P1LedHigh.bs2
HIGH 1
STOP
Se utiliza el comando STOP en lugar de END para finalizar el programa porque END pondría las patitas de
salida de la Home Work a nivel bajo y se apagaría el LED.
• Sustituye la resistencia de 220 Ω del circuito del LED conectado a P1 por una de 470 Ω .
• Observa cómo brilla el LED.
• Reemplázala por una de 1 kΩ.
• Antes de terminar la actividad, vuelve a dejar la resistencia original. La de 220 Ω.
• Explica con tus palabras la relación entre el valor de la resistencia y el brillo generado por el LED.
Cuanto menor sea la resistencia de polarización, mayor será la intensidad con la que emitirá IR el LED. Una
hipótesis razonable sería que cuanto mayor sea dicha intensidad, mayor será la distancia a la que se puede
detectar.
8-8
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
La salida de los detectores IR tiene nivel alto cuando no se detecta ningún objeto y bajo cuando algo se
interpone en su camino. En esta experiencia, modificaremos el programa RoaminWithWhiskers.bs2 para que
funcione con los detectores IR, en lugar de los bigotes.
El nuevo programa va a ser muy parecido al anterior, cambiando la descripción y añadiendo dos nuevas
variables para almacenar los estados de los detectores IR.
FREQOUT 8,1,38500
IrDetectLeft = IN9
Las sentencias IF...THEN han sido modificadas para que ahora se tomen en cuenta las variables donde se
almacenan las salidas de los detectores IR.
Programa RoamingWithIr.bs2
8-9
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
DO
FREQOUT 2, 1, 38500
irDetectRight = IN0
LOOP
Turn_Right:
FOR pulseCount = 0 TO 20 ' Giro a la dcha. 90º.
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
8-10
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
FOR pulseCount = 0 TO 40
PULSOUT 13, 650
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
Modifica el programa RoamingWithIr.bs2 para que los pares emisor/receptor de IR se comprueben en una
subrutina.
El estilo de maniobras preprogramadas usadas en la experiencia anterior es muy lento cuando se utilizan
LED y detectores IR. Se puede mejorar la navegación del Home Boe-Bot comprobando la presencia de obstáculos
antes de enviar pulsos a los servomotores. El programa puede utilizar las entradas de los sensores para elegir la
mejor maniobra en cada momento, así el Home Boe-Bot nunca girará más de lo que debe y también puede
esquivar el obstáculo de forma casi exacta.
Usando las parejas IR se detecta el obstáculo antes de tocarlo y el Home Boe-Bot dispone de cierto
espacio para moverse alrededor de él. El Home Boe-Bot puede aplicar un pulso para girar en otra dirección, volver
a comprobar si el obstáculo sigue ahí, aplicar otro pulso, etc, hasta que su camino esté libre. Entonces puede
seguir enviando pulsos para continuar hacia delante. Después de experimentar con el siguiente programa, te
darás cuenta que este procedimiento es mucho mejor que los anteriores de evitar colisiones.
Programa FastIrRoaming.bs2
8-11
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
pulseRight = 650
ELSE
pulseLeft = 850
pulseRight = 650
ENDIF
LOOP
Este programa aplica los pulsos de una forma totalmente distinta. Aparte de que utiliza dos bits para
guardar las salidas de los detectores IR, utiliza dos variables tipo Word para definir la duración de los pulsos
utilizada por el comando PULSOUT.
Dentro del DO...LOOP, los comandos FREQOUT se usan para enviar una señal de 38.5 kHz a cada LED
IR. Inmediatamente después, una variable almacena el estado de salida de cada detector IR. Es necesario porque
si se espera algo más, el detector volverá al estado de no detectar nada (1), independientemente de si hay o no un
objeto delante del Home Boe-Bot.
FREQOUT 8, 1, 38500
irDetectLeft = IN9
FREQOUT 2, 1, 38500
irDetectRight = IN0
En las sentencias IF..THEN, en vez de enviar pulsos o llamar a rutinas de navegación, este programa
asigna valores a ciertas variables que luego serán utilizadas en los comandos PULSOUT como parámetro
Duración.
Antes de que el DO...LOOP se repita, lo último que se hace es enviar los pulsos a los servomotores.
Observa que el comando PAUSE es 15, no 20 como antes, la razón es que se tarda aproximadamente 5 ms en
comprobar los LED IR.
PULSOUT 13,pulseLeft
PULSOUT 12,pulseRight
PAUSE 15
8-12
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
Tu turno
Hasta ahora el Home Boe-Bot ha sido programado para realizar maniobras evasivas cuando se detectaba
un objeto, pero también hay aplicaciones en las que el Home Boe-Bot tiene que adoptar esas medidas cuando el
objeto NO es detectado. Por ejemplo, si el Home Boe-Bot está moviéndose por la superficie de una mesa, sus
detectores IR podrían estar mirando hacia abajo, hacia la superficie de la mesa, tal y como se muestra en la figura
8-8. El programa debería hacerle continuar moviéndose hacia delante mientras los detectores “vean” la mesa.
Pero si deja de "verla" significa que se termina la mesa y si continua avanzando se caería, cosa que hay que
evitar.
Figura 8-8.- Los detectores IR se orientan hacia ja superficie de la mesa. Cuando dejen de "verla" hay que
detener el movimiento para que no se caiga el robot.
Construye una superficie con la hoja blanca y la cinta adhesiva negra similar a la de la figura 8-9. Utiliza al
menos tres bandas de cinta adhesiva de borde a borde sin dejar papel visible entre cada banda.
• Asegúrate de estar usando resistencias de 1 kΩ (marrón, negro, rojo) para conectar P2 a su LED y P8 al suyo.
• Conecta la pila de la placa.
• Utiliza el programa TestIrPairsAndIndicators.bs2 para estar seguro de que el Boe-Bot detecta la superficie
blanca de la hoja pero no detecta las bandas negras.
• Ejecuta el programa IrInterferenceSniffer.bs2 para comprobar que las luces de iluminación no interfieren con
los detectores IR del Boe-Bot.
8-13
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
Figura 8-9.- Simulación de una mesa con una hoja blanca y cinta adhesiva en los bordes.
Se trata de programar el Home Boe-Bot para que se mueva por la mesa sin caer por sus bordes. Hay que
ajustar las sentencias IF...THEN del programa FastIrNavigation.bs2. Los servomotores tienen que ser controlados
para que el Home Boe-Bot avance cuando irDetectLeft e irDetectRight sean 0, indicando que un objeto (la
superficie de la mesa) es detectado. También habrá que apartarsedel detector que no detecta objeto. Por ejemplo,
si irDetectLeft es 1, el Home Boe-Bot tendrá que girar hacia la derecha.
Otra función de un buen programa que evite caídas es que se pueda ajustar la distancia de reacción
Home. Puede que quieras que el Home Boe-Bot sólo envíe un pulso hacia delante entre cada comprobación de
los sensores pero en cuanto detecta un "vacío" quieras que envíe varios pulsos para girar antes de volver a
comprobar los sensores.
Sólo por estar enviando múltiples pulsos en la maniobra evasiva no significa que hayamos vuelto al
comportamiento anterior del Home Boe-Bot cuando chocaba con los obstáculos y luego cambiaba de dirección. Se
puede utilizar una variable para definir el número de pulsos a enviar en la maniobra. El comando PULSOUT se
puede colocar dentro de un FOR...NEXT que se ejecute desde 1 hasta el valor de dicha variable. Para un pulso
hacia delante, la variable valdría 1, para 10 pulsos, 10, etc.
Programa AvoidTableEdge.bs2
8-14
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
LOOP
Se ha añadido un bucle FOR...NEXT al programa para controlar cuántos pulsos se envían cada vez a
través de la rutina principal (DO...LOOP). Se han añadido dos variables, loopCount que funciona como índice del
bucle FOR...NEXT y pulseCount que se usa como parámetro EndValue.
Las sentencias IF...THEN ahora dan valores a pulseCount así como a pulseRight y pulseLeft. Si ambos
sensores pueden ver la mesa, se envía un cauteloso pulso hacia delante.
8-15
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
Si ningún sensor ve la mesa, retrocede 15 pulsos y prueba de nuevo, esperando que uno de los sensores
vea el borde antes que el otro.
ELSE
pulseCount = 15
pulseLeft = 650
pulseRight = 850
ENDIF
Ahora que los valores de pulseCount, pulseLeft y pulseRight han sido establecidos, el bucle FOR...NEXT
envía el número de pulsos especificado por la variable pulseLeft y pulseRight.
Puedes experimentar asignando diferentes valores a pulseLeft, pulseRight y pulseCount dentro de las
sentencias IF...THEN. Por ejemplo, si el Home Boe-Bot no gira lo suficiente, puede que siga el borde de la mesa.
Pivotando hacia atrás en vez de girar se puede conseguir comportamientos interesantes.
Modifica el programa AvoidTableEdge.bs2 para que siga el borde de cinta adhesiva ajustando los valores
de pulseCount de tal modo que el Home Boe-Bot no se separe mucho del borde al girar.
Experimenta pivotando como forma de hacer moverse al Home Boe-Bot dentro del perímetro rodeado por
la cinta.
Cuestiones
8-16
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
Ejercicios
Si quisieras enviar una señal infrarroja armónica de 39 kHz al LED IR del Home Boe-Bot, ¿qué comando
utilizarías?
Modifica una línea de código en IrInterferenceSniffer.bs2 de tal modo que sólo se monitorice uno de los pares LED
IR/sensor.
Reescribe la rutina que aplica el pulso de FastIrRoaming.bs2 de tal forma que envíe tres pulsos en vez de uno.
Explica cualquier sentencia PBASIC que se necesite previamente en el programa para conseguirlo.
Explica la función de pulseCount en AvoidTableEdge.bs2. ¿Qué tiene que ver con tu respuesta del ejercicio 3?
Proyectos
Diseña un programa para que el Home Boe-Bot permanezca parado hasta que pases tu mano por delante del
mismo, momento en el que comenzará a andar.
Diseña un programa para que el Home Boe-Bot rote lentamente hasta que detecte un objeto. Cuando lo detecte,
lo seguirá. Este es el clásico comportamiento de los microbots luchadores.
Diseña un programa para que el Home Boe-Bot que deambule, pero que si detecta interferencias infrarrojas haga
sonar brevemente el zumbador y luego siga moviéndose. El sonido tienen que ser distinto que el de batería baja.
Añade bigotes al Home Boe-Bot con infrarrojos. Construye un laberinto con varios espacios delimitados por cinta
adhesiva. En el centro coloca un objeto. El objetivo del Home Boe-Bot es recorrer el laberinto y encontrar el objeto
(por contacto con los bigotes).
Quita los bigotes y añade circuitos de detección de luz. Modifica el laberinto de modo que en cierto sitio luzca una
lámpara o algún tipo de luz. El nuevo objetivo del Home Boe-Bot es recorrer el laberinto hasta que encuentre la
luz.
8-17
Microbot “Home Boe-Bot”
Tema 8: Navegación guiada por Infrarojos
8-18
Microbot “Home Boe-Bot”
Tema 9
Medición de distancia con infrarojos
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
En el capitulo anterior, vimos como conseguir que el Home Boe-Bot detectará obstáculos sin tener que
tocarlos utilizando los sensores infrarrojos.¿No sería estupendo que también supiera la distancia que hay hasta el
obstáculo? Esto podría solucionarse con un sónar, que envía un onda sonora y en función de la intensidad con la
que retorna tras reflejarse y el tiempo que tarda calcula la distancia al obstáculo. Hay una forma de medir dicha
distancia con un circuito muy similar al utilizado en el tema 8. El Home Boe-Bot será capaz de determinar la
distancia a la que se halla un objeto sin tener que llegar hasta él. También podrás conseguir que el robot siga una
línea blanca con lo que convertirás tu Home Boe-Bot en un rastreador.
Partimos del circuito que quedó montado en el tema 8 y necesitarás una regla y una hoja de papel blanco.
La figura 9-1 muestra las especificaciones de nuestro detector de infrarrojos (Panasonic PNA4602M) que
es muy sensible a la frecuencia de 38,5 kHz. Si por ejemplo, le enviamos señales a 40 kHz sólo será un 50%
sensible de lo que es a la frecuencia recomendada de 38,5 kHz. En las frecuencias que es menos sensible, los
objetos deben estar más cerca para que estepuedan ser detectados.
Figura 9-1.- Nuestro sensor de infrarrojos es muy sensible a la frecuencia de 38,5 kHz y menos cuanto más se
desvíe la frecuencia de dicho valor.
A las frecuencias más sensibles en las que se detectan los rayos infrarrojos, el objeto puede ser
detectado más lejos y en las menos sensibles, por el contrario, más cerca. La base sobre la que nos vamos a
fundamentar para trabajar con las distancias, consiste en determinar a qué distancias son sensibles o funcionan
los infrarrojos, de forma que a 38,5 kHz se detectará a un objeto a la máxima distancia y cuanto más se desvíe la
frecuencia de ese valor más cercano deberá estar el objeto para poderlo detectar.
La figura 9-2 nos muestra un ejemplo de cómo el Home Boe-Bot puede calcular las distancias con el uso
de distintas frecuencias. En nuestro ejemplo el objeto está en la zona 3. Esto quiere decir que el objeto puede ser
detectado cuando el infrarrojo transmite frecuencias de 37500 y 38250Hz pero no así de 39500, 40500 y 41500Hz.
Si movemos el objeto a la zona 2, ahora el objeto será detectado cuando se transmitan frecuencias de 37500,
38250 y 39500Hz, pero no cuando sean de 40500 y 41500Hz
9-1
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
Figura 9-2.- Según la distancia o zona a la que se encuentre el objeto la frecuencia a la que funcionan los
infrarrojos para la detección es diferente.
Para probar el detector del infrarrojo será necesario el uso de la instrucción FREQOUT, para enviar 5
frecuencias diferentes desde el Home Boe-Bot y comprobar a que distancia cada frecuencia puede detectar un
objeto. No es recomendable usar el operador STEP del bucle FOR…NEXT ya que el cambio de frecuencias no
sería suficiente. Lo mejor será utilizar las instrucciones DATA y READ. En vez de usar 5 veces la sentencia
FREQOUT crearemos una lista de 5 frecuencias para lo cual se utiliza el comando LOOKUP que funciona de la
siguiente manera:
Si el argumento Index es 0, el valor Value0 será el que tome la variable final de la sentencia, si el Index es
1, el valor que tomará en este caso será el de Value1 y así sucesivamente. Para entendernos mejor podemos
decir que es un tipo de array en la programación normal. Se propone el siguiente ejemplo:
FOR freqSelect = 0 TO 4
La primera vez que pasamos por el bucle la variable freqSelect es 0, por lo que la variable irFrequency
tomará el primer valor que hemos metido en el LOOKUP, es decir, 37500. El comando FREQOUT lo que hace es
enviarle este valor al emisor de infrarrojos que tenemos conectado a P8. Así sucesivamente con las 5 frecuencias
que hemos metido. Los rayos infrarrojos son muy empleados en las agendas electrónicas, los teléfonos móviles,
los mandos de los televisores y otros aparatos, etc..
Programa TestLeftFrequencySweep.bs2
Lo que hace este ejemplo son dos cosas básicamente. Primero comprueba el estado de los infrarrojos
(conectados a P8 y P9) para asegurarse que realmente funcionan para la detección de distancia. Cuando
ejecutes el programa TestLeftFrecuency.bs2 se mostrará algo similar a la figura 9-3.
9-2
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
DEBUG CLS,
" OBJETO", CR,
"FRECUENCIA DETECTAD0", CR,
"---------- --------"
DO
distance = 0
9-3
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
FOR freqSelect = 0 TO 4
PAUSE 100
NEXT
DEBUG CR,
"--------- --------", CR,
"Distancia ", DEC1 distance
LOOP
Para probar este par (detector/emisor) de infrarrojos lo único que deberás hacer es cambiar estas dos
líneas de código por las que se muestran más adelante.
Cambiar por :
A veces puede ser interesante crear un programa que nos muestre la distancia que detectan los sensores.
Este programa está divido en dos subrutinas que son copias de otros programas que también necesitaban saber
distancias.
Programa DisplayBothDistances.bs2
9-4
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
DEBUG CLS,
"ZONA DEL OBJETO", CR,
"Izda. Dcho.", CR,
"----- -----"
DO
GOSUB Get_Distances
GOSUB Display_Distances
LOOP
Get_Distances:
distanceLeft = 0
distanceRight = 0
FOR freqSelect = 0 TO 4
FREQOUT 8,1,irFrequency
irDetectLeft = IN9
distanceLeft = distanceLeft + irDetectLeft
FREQOUT 2,1,irFrequency
irDetectRight = IN0
distanceRight = distanceRight + irDetectRight
PAUSE 100
NEXT
RETURN
Display_Distances:
9-5
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
RETURN
Haz pruebas con hojas de distintos colores y con otros objetos que no sean hojas para que veas que las
mediciones varían.
Conseguir que un Home Boe-Bot siga a otro puede conseguirse en base al cálculo de la distancia que los
separan. Es decir si el Home Boe-Bot que persigue al otro ve que el primero se va alejando hacia la derecha,
seguirá su estela desviándose también a la derecha y manteniendo siempre a la misma distancia.
Ahora vamos a explicar un poco más este diagrama de control. Como hemos dicho antes este ejemplo es
el específico para el servo motor e infrarrojo derecho. El Set Point se denomina a la distancia que va a guardar el
Home Boe-Bot con cualquier objeto que detecte. Hemos elegido el valor de 2. Si la distancia que se mide es 4, se
trata de un objeto muy lejano. El error será la resta entre el Set Point y la distancia medida: 2 – 4= -2. Este valor es
el que podemos ver en el circulo superior izquierdo de la figura 9-4. A continuación este error lo vamos a
multiplicar por una constante proporcional que llamamos (Kp). El valor de esta constante es 35 por lo que
obtendremos un resultado de –70, que será un valor que le llamaremos Output adjust (Ajuste de salida). Después
realizamos la suma de este valor obtenido con la amplitud del pulso del servo motor que es 750. Por lo tanto, el
resultado final es de 680 (amplitud de pulso) que hará que el servo gire en sentido horario a una velocidad ¼
menor de la normal. Con esto conseguiremos que el robot vaya hacia delante, de la misma forma que lo hace el
objeto al que sigue. Esta corrección va motivada por el hecho de que el Home Boe-Bot y el Objeto al que persigue
están a una distancia medida de 4.
La siguiente vez que pasa por el bucle la distancia de medición puede cambiar, y lo que se calculará será
una corrección proporcional al error, el cual es la diferencia entre el Set Point y las distancias medidas.
Se presentan las ecuaciones que se utilizan en el bucle de control mostrado en la figura 9-4.
9-6
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
Error = Distancia establecida (Set Point) derecho - La distancia medida derecho = 2 – 4 =-2
Ajuste de Salida = error × Kp = -2 x 35 = -70
Salida del servo derecho = Ajuste de salida + Amplitud media del pulso = -70 + 750 = 680
Ahora aplicamos todo lo expuesto al infrarrojo y servo del lado izquierdo cuyo funcionamiento es muy
similar al de la parte derecha. El diagrama de control es el que se muestra en la figura 9-5.
Figura 9-5.- Bucle de control para el cálculo de la distancia del infrarrojo izquierdo.
La diferencia radica en la constante Kp, que en este caso es de -35 en vez de 35. Si asumimos la misma
distancia medida que en el infrarrojo derecho, el ajuste de salida del servo izquierdo sería de 820 ya que aplicando
las ecuaciones, quedará:
Salida del servo izquierdo = (Set Point izquierdo – distancia izquierda medida) × Kp + Amplitud de pulso =
((2–4) × -35) + 750= 820
El resultado es una amplitud del pulso que hace que el motor gire en el sentido antihorario a ¼ de su
velocidad normal, es decir vaya hacia delante como nos ha pasado con el otro servo motor. Al realizarse este
bucle continuamente (unas 40 veces por segundo) está siempre tomando muestras de distancias por lo que
siempre seguirá la estela del objeto al que sigue.
Salida del servo derecho = (Set Point Derecho – Distancia medida derecho) x Kp + Amplitud de pulso
Aquí tienes un ejemplo en PBASIC para resolver esa misma ecuación. La distancia al Set Point derecho
es 2, la distancia medida es una variable llamada distanceRight, que almacenará la medición de la distancia
realizada por IR, Kp es 35 y la amplitud del pulso es 750:
Como los valores –35, 35, 2 y 750 tienen nombres, éste es lugar idóneo para declarar estas constantes:
9-7
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
Una vez declaradas estas constantes, puedes utilizar sus nombres en vez de los valores numéricos, es
decir, en vez de 35 puedes escribir Kpr, por ejemplo. Después de estas declaraciones, los cálculos quedan de la
siguiente forma:
La principal ventaja que nos aporta el uso de constantes es la posibilidad de cambiar cada valor una sola
vez al principio del programa. Cada constante aparece un determinado número de veces a lo largo del programa.
Sería muy costoso ir buscando estas ocurrencias e ir cambiando cada valor, sin embargo, una vez declarada la
constante, sólo tenemos que ir a la línea de código donde se ha declarado y cambiar ahí su valor. Este cambio se
verá reflejado automáticamente en el resto de lugares del programa donde aparezca la constante.
Programa FollowingBoeBot.bs2
FollowingBoeBot.bs2 repite el bucle de control que hemos explicado con cada pulso del servomotor. Es
decir, antes de cada pulso se mide la distancia y se determina la señal de error. Después el error se multiplica por
la constante Kp y el valor resultante es sumado/restado a la amplitud del pulso enviado al servomotor
izquierdo/derecho.
9-8
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
DO
GOSUB Get_Ir_Distances
GOSUB Send_Pulse
LOOP
Get_Ir_Distances:
distanceLeft = 0
distanceRight = 0
FOR freqSelect = 0 TO 4
LOOKUP freqSelect,[37500,38250,39500,40500,41500], irFrequency
FREQOUT 8,1,irFrequency
irDetectLeft = IN9
distanceLeft = distanceLeft + irDetectLeft
FREQOUT 2,1,irFrequency
irDetectRight = IN0
distanceRight = distanceRight + irDetectRight
NEXT
RETURN
Send_Pulse:
PULSOUT 13,pulseLeft
PULSOUT 12,pulseRight
PAUSE 5
RETURN
FollowingBoeBot.bs2 declara cuatro constantes, Kpr, Kpl, SetPoint y CenterPulse usando la directiva
CON. Cada vez que ves la palabra SetPoint a lo largo del programa, en realidad es el número 2 (una constante).
Del mismo modo, cada vez que ves otros nombres, realmente lo que se usa es su valor.
9-9
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
Lo primero que hace la rutina principal es llamar a la subrutina Get_Ir_Distances. Cuando la subrutina ha
terminado, distanceLeft y distanceRight contienen respectivamente el número correspondiente a la zona en la que
se haya detectado un obstáculo.
DO
GOSUB Get_Ir_Distances
Las siguientes dos líneas de código implementan los cálculos de control proporcional para cada
servomotor.
Una vez que se han realizado los cálculos se llama a la subrutina de SendPulse
GOSUB Send_Pulse
La figura 9-6 muestra al Home Boe-Bot principal seguido por el Home Boe-Bot sombra. El robot
principal está ejecutando una versión modificada de FastIrRoaming.bs2 y el robot sombra está ejecutando
FollowingBoeBot.bs2. Se pueden encadenar hasta 6 ó 7 Home Boe-Bots sombra añadiéndoles los
paneles laterales y traseros.
• Monta los paneles de cola y laterales en el Home Boe-Bot de cabeza si tienes varios Home Boe-Bots.
• Si no tienes varios Home Boe-Bots, utiliza una hoja de papel a modo de robot principal.
• Sustituye las resistencias de 1 kΩ que conectan los LED IR con P2 y P8 del Home Boe-Bot principal por
resistencias de 470Ω y 220Ω.
• Programa el Home Boe-Bot de cabeza para que esquive los obstáculos con una versión modificada de
FastIrRoaming.bs2. Abre FastIrRoaming.bs2 y renómbralo como SlowerIrRoamingForLeadBoeBot.bs2
• Haz estas modificaciones a SlowerIrRoamingForLeadBoeBot.bs2: incrementa todos los parámetros Duración
de 650 a 710 y reduce todos los parámetros Duración de 850 a 790.
• El Home Boe-Bot sombra debería ejecutar FollowingBoeBot.bs2 sin modificaciones
9-10
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
• Con cada robot ejecutando su respectivo programa, coloca el Home Boe-Bot sombra detrás del principal. El
sombra debería seguir al principal a una distancia fija.
Puedes cambiar los valores de las constantes para conseguir un comportamiento distinto del Home Boe-
Bot sombra. Utiliza la mano o una hoja de papel para dirigir al robot sombra mientras pruebas los siguientes
ejercicios:
• Ejecuta FollowingBoeBots.bs2 usando valores para las constantes Kpr y Kpl en el rango comprendido entre 15
y 50. Observa la diferencia de comportamiento del Home Boe-Bot mientras sigue un objeto.
• Prueba a hacer ajustes al valor de la constante SetPoint. Utiliza valores entre 0 y 4.
La figura 9-7 muestra un circuito de prueba que puedes construir para que lo siga el Home Boe-Bot. Cada
banda del circuito está compuesta por tres tiras de cinta adhesiva negra contiguas sobre fondo blanco. No debe
haber separación entre las tres tiras.
Figura 9-7.- Circuito de prueba para ser recorrido por el Home Boe-Bot.
9-11
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
Figura 9-8.- Cada pareja de emisor/receptor de infrarrojos debe ser orientado hacia abajo y hacia delante.
• Asegúrate de que el circuito está libre de luz fluorescente que pueda causar interferencias.
• Ejecuta el programa DisplayBothDistances.bs2. Mantén el Home Boe-Bot conectado al cable serie para poder
ver reflejadas las distancias.
• Comienza colocando el Home Boe-Bot mirando directamente al fondo blanco del papel como se muestra en la
figura 9-9
• Comprueba que las lecturas indican que se está detectando un objeto en una zona muy cercana. Ambos
sensores deberían generar un 1 ó un 0.
Figura 9-9.- Se comienza colocando el Home Boe-Bot en el fondo blanco del papel.
• Coloca el Home Boe-Bot de modo que ambos pares de emisor/receptor IR apunten directamente al centro de
las cintas adhesivas (ver figuras 9-10 y 9-11)
• Luego cambia la posición del Home Boe-Bot hasta que ambos valores de zona alcancen el nivel 4 ó 5
indicando que el objeto se está detectando muy lejos o que no se está detectando.
9-12
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
Figura 9-11.- Orientación de los emisores/receptores de IR sobre las tiras negras adhesivas.
• Ahora coloca el Home Boe-Bot sobre la línea formada por las tiras adhesivas de la forma que se muestra en la
figura 9-12. La lectura de distancia en ambos pares IR debería ser 0 ó 1 de nuevo. Si los valores son mayores
tienes que apuntarlos ligeramente más hacia fuera, separándolos más del borde de las tiras.
Cuando mueves el Home Boe-Bot en cualquiera de las direcciones indicadas por la flecha doble, uno de
los pares IR apunta hacia la cinta negra haciendo que las lecturas de ese par que está sobre la cinta se
incrementen hasta 4 ó 5. Ten en cuenta que si mueves el robot hacia su izquierda, los detectores de la derecha
aumentarán el valor de sus lecturas y si lo mueves hacia su derecha, los sensores de la izquierda ofrecerán
valores mayores.
9-13
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
Figura 9-12.- El Home Boe-Bot colocado sobre la línea formada por las tiras adhesivas.
Para que el Home Boe-Bot siga la línea construida con las tiras adhesivas, sólo tendrás que hacer unas
pocas modificaciones en FollowingBoeBot.bs2. Debería moverse hacia los objetos más cercanos que SetPoint y
huir de los más lejanos que SetPoint. Este comportamiento es el opuesto al conseguido con
FollowingBoeBot.bs2. Para invertir la dirección en la que se mueve cuando detecta que un objeto no está a la
distancia SetPoint, simplemente cambia los signos de las constantes Kpl y Kpr, es decir, cambia Kpl de –35 a 35 y
Kpr de 35 a –35. Tendrás que experimentar con SetPoint. Los valores de 2 a 4 son los más recomendables. El
siguiente programa de ejemplo utiliza un valor de SetPoint de 3.
Programa StripeFollowingBoeBot.bs2
9-14
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
DO
9-15
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
GOSUB Get_Ir_Distances
GOSUB Send_Pulse
LOOP
Get_Ir_Distances:
distanceLeft = 0
distanceRight = 0
FOR freqSelect = 0 TO 4
LOOKUP freqSelect,[37500,38250,39500,40500,41500], irFrequency
FREQOUT 8,1,irFrequency
irDetectLeft = IN9
distanceLeft = distanceLeft + irDetectLeft
FREQOUT 2,1,irFrequency
irDetectRight = IN0
distanceRight = distanceRight + irDetectRight
NEXT
RETURN
Send_Pulse:
PULSOUT 13,pulseLeft
PULSOUT 12,pulseRight
PAUSE 5
RETURN
Puedes convertir el circuito anterior en una carrera para obtener el menor tiempo en su recorrido. También
puedes crear otros recorridos. Para obtener el mejor rendimiento, experimenta con diferentes valores de SetPoint,
Kpl y Kpr.
Preguntas
1. ¿Cuál sería la sensibilidad relativa del detector IR si enviases un armónico de 35 kHz? ¿Y de 36 kHz?
2. Si mueves un objeto a la zona 1, ¿qué frecuencias se pueden usar para detectar el objeto y cuáles no? ¿Y
en la zona 4?
3. Observa el trozo de código que hay a continuación. Si la variable index es 4, ¿qué número pondríamos en
la variable prime de este comando LOOKUP? ¿Qué valores tomará prime cuando index sea 0, 1, 2 y 7?
LOOKUP index, [1, 3, 5, 7, 11, 17, 23], prime
4. ¿Qué hace el comando irDetect = IN9 en los programas de ejemplo de este capítulo?
9-16
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
5. En la figura 9-4 ¿cuál sería el error si el punto de ajuste fuera 4 y la medida de la distancia derecha 1?
¿Cuál sería el ajuste de la salida? ¿Y la salida del servomotor de la derecha?
6. ¿En qué orden son evaluadas las expresiones PBASIC? ¿Cómo puedes forzar otro orden distinto?
7. ¿Qué directivas PBASIC utilizas para declarar una constante? ¿Cómo darías al número 100 el nombre
“BoillingPoint”?
8. ¿En qué se diferencian StripeFollowingBoeBot.bs2 y FollowingBoeBot.bs2? ¿Por qué esa diferencia hace
que el Home Boe-Bot siga el circuito? ¿Qué ocurre con la distancia de detección si el Home Boe-Bot se
desplaza hacia fuera al seguir la línea? ¿Cómo influyen los cálculos proporcionales para que el Home
Boe-Bot vuelva al circuito?
Ejercicios
1. Haz un listado con la sensibilidad del IR para cada frecuencia en kHz mostrada en la figura 9-1
2. Haz otro listado de los patrones sí/no que se obtienen con TestLeftFrequencySweep.bs2 cuando un objeto
está ubicado en cada zona que se muestra en la figura 9-2
3. Escribe un trozo de código que haga un barrido de frecuencias de cuatro frecuencias en vez de cinco.
4. Realiza los cálculos proporcionales para el servomotor derecho (figura 9-4) para cada posible medida de
distancia (0 a 5). Repítelo para la figura 9-5.
5. Haz un listado resumido de las comprobaciones que se deben hacer para asegurar un correcto
comportamiento del Boe-Bot siguiendo el circuito.
Proyectos
1. Modifica TestLeftFrequencySweep.bs2 para que utilice el zumbador para indicar la distancia que detectan
los sensores. Hay dos posibles formas: la primera es hacer que se oigan pitidos a intervalos regulares y
conforme se vaya detectando un objeto más cerca, que el intervalo entre pitidos se vaya reduciendo. La
segunda manera es hacer que el zumbador suene constantemente con una frecuencia determinada y
cuando se vaya acercando a un objeto, que esa frecuencia se convierta progresivamente en más aguda.
Esto es similar a los sistemas de ayuda para el aparcamiento de los automóviles.
2. Diseña un programa para que el Home Boe-Bot vaya mostrando la distancia al objeto por medio del
parpadeo de los LED normales izquierdo y derecho.
3. Avanzado – Crea diferentes tipos de intersecciones con la cinta adhesiva y programa el Home Boe-Bot
para que sepa de cuál se trata en cada caso. Las intersecciones pueden ser de 90º a la izquierda, de 90º
a la derecha, de tres caminos, de cuatro caminos... Después de que el Home Boe-Bot detecta una
intersección, tiene que usar un movimiento preprogramado para situarse sobre el centro de la misma y
determinar si hay cinta o fondo blanco a ambos lados, después moverse un poco más y quizá rotar
ligeramente para ver si el camino continúa o no.
4. Avanzado – Cuando hayas conseguido realizar con éxito el proyecto anterior, añade movimientos
preprogramados para recorrer esas intersecciones. Crea un laberinto de cinta adhesiva. Observa el
comando RANDOM en el manual de la BASIC Stamp y utilízalo para tomar las intersecciones de tres
caminos y de cuatro caminos. La finalidad es asegurarse de que el Home Boe-Bot recorre el laberinto de
forma distinta en cada intento.
5. Avanzado – Diseña un laberinto inventado por ti y programa el Home Boe-Bot para que salga de él.
9-17
Microbot “Home Boe-Bot”
Tema 9: Medición de distancia con infrarojos
9-18
Microbot “Home Boe-Bot”
Tema 10
GUI Bot, un entorno visual de programación
Microbot “Home Boe-Bot”
Tema 10: GUI Bot, un entorno visual de programación
Consiste en un entorno visual de programación pensado expresamente para aquellos usuarios que no
tienen conocimiento alguno de programación pero quieran introducirse en el apasionante mundo de la
microbótica.
Diseñado para los robots “Home Boe-Bot” y “Boe-Bot” dotados del BASIC Stamp 2, dispone de un
conjunto de iconos cada uno de los cuales representa una instrucción o acción básica. Seleccionando los iconos
deseados en función de la tarea a realizar, se confecciona una lista de instrucciones o programa que se cargará
en el robot para su ejecución. Todo ello en un entorno gráfico y muy intuitivo que trataremos de explicar en el
presente tema.
El software GUI Bot es de libre distribución y se puede descargar desde las siguientes direcciones web:
www.parallax.com/dl/sw/GUIBot.exe o www.microcontroladores.com.
Su instalación en el PC no presenta ninguna dificultad. Una vez descargado desde la red el programa
GUIBot.exe, lo ejecutamos y seguimos las diferentes instrucciones que aparecen en pantalla. Una vez instalado,
nos aparecerán dos accesos directos en nuestro escritorio como los mostrados en la figura 10-1. El de la izquierda
llama al programa GUI Bot propiamente dicho y lo ejecuta. El de la derecha abre un fichero PDF que, a modo de
manual, explica los pasos fundamentales para el manejo del software GUI Bot.
El software GUI Bot es capaz de gestionar los dos tipos fundamentales de sensores que puede soportar el
robot Home Boe-Bot, para la detección de objetos u obstáculos: los sensores IR y los bumpers o “bigotes”. Por
defecto el software asume que ambos tipos de sensores están instalados. A pesar de ello, con algunas sencillas
modificaciones, el robot puede tener tres configuraciones posibles: Disponer de ambos tipos de sensores; Emplear
únicamente los sensores IR; disponer únicamente de los bumpers o “bigotes”.
La figura 10-2 muestra el esquema eléctrico de conexión tanto de los bumpers (izdo y dcho) como de los
sensores IR (izdo y dcho), y se corresponde con los esquemas que se explicaron en los temas 6 y 8 de este
manual. Estos sensores se deben conectar forzosamente a las líneas de E/S indicadas en el esquema y no a
ninguna otra ya que el software GUI Bot lo asume así por defecto.
10-1
Microbot “Home Boe-Bot”
Tema 10: GUI Bot, un entorno visual de programación
En la figura 10-3 se puede apreciar la disposición de componentes sobre la board de la tarjeta de control
del robot, según el anterior esquema eléctrico de conexiones.
El Home Boe-Bot puede emplear únicamente los sensores IR para detectar objetos u obstáculos, tal y
como se explica en el tema 8. De todas formas, para poder hacer un uso correcto del software GUI Bot, es
necesario añadir dos resistencias de 10KΩ entre las líneas de E/S P7 y P5 y Vdd. La figura 10-4 muestra el
aspecto del montaje sobre la board de la tarjeta de control.
10-2
Microbot “Home Boe-Bot”
Tema 10: GUI Bot, un entorno visual de programación
En esta ocasión el robot sólo emplea los bumpers o “bigotes” para la detección de objetos. El circuito es
similar al que ya se explicó en el tema 6. Para que el software GUI Bot pueda gestionar correctamente el estado
de los sensores es necesario conectar dos resistencias de 10KΩ entre las líneas P9 y P0 y Vdd, tal y como se
muestra en la figura 10-5.
Como veremos más adelante, el software GUI Bot dispone de un modo de trabajo, el modo Test, que
permite comprobar el correcto funcionamiento de los sensores y motores del robot Home Boe-Bot.
Siempre que se ejecuta el software GUI Bot debemos elegir entre dos modos de trabajo: Básico o
avanzado. Ver la figura 10-6.
El modo básico está pensado para aquellos usuarios que no tienen experiencia en la programación y/o es
la primera vez que manejan este software. Dispone de una serie de simples acciones o instrucciones relativas al
movimiento del robot. No se contempla el manejo de los sensores. Estos, si se desea, son controlados
automáticamente por el propio software para evitar los posibles obstáculos.
En el modo avanzado se dispone de las mismas acciones que en el básico y, además, se puede controlar
los sensores de entrada para llevar a cabo diferentes tareas en función de su estado.
10-3
Microbot “Home Boe-Bot”
Tema 10: GUI Bot, un entorno visual de programación
La pantalla se divide en tres secciones para el modo básico. A la izquierda disponemos de un conjunto de
iconos que representan las 8 acciones o instrucciones posibles relativas al movimiento del robot. Al centro
disponemos de una sección donde se va confeccionando la lista de acciones o instrucciones que el robot debe ir
ejecutando (programa). A la derecha aparece un panel de control con el que se selecciona el puerto serie que se
va a emplear en la comunicación entre el PC y el robot Home Boe Bot. En esta sección también podemos activar o
no a los sensores. Si, en el modo básico dichos sensores están activados, el robot tratará de esquivar obstáculos
de forma automática (se recuerda que en el modo básico el usuario no tiene control sobre los sensores de
entrada). En caso contrario el robot se limitará a ejecutar las acciones que el usuario haya incluido en la lista de
acciones (programa).
10-4
Microbot “Home Boe-Bot”
Tema 10: GUI Bot, un entorno visual de programación
Todas estas instrucciones, excepto la de repetición, provocan el movimiento (o parada) del robot en la
dirección indicada durante un cierto tiempo. La instrucción de Repetición permite retroceder en la lista de acciones
(programa) de forma que se vuelvan a repetir y ejecutar todos los movimientos a partir del paso indicado.
Las instrucciones de giro a la izquierda o derecha hacen que el robot se mueva en ese sentido al tiempo
que sigue avanzando. Las instrucciones de rotación hacen que el robot gire sobre su propio eje sin avance alguno.
Esta lista se va confeccionando, paso a paso, con las diferentes instrucciones que deseamos ejecute el
robot, empezando por la primera y continuando secuencialmente hasta la última.
Para añadir una instrucción basta con arrastrar el icono correspondiente a la posición deseada dentro de
la lista. También se puede hacer doble clic sobre el icono y su acción se almacena automáticamente al final de la
lista.
Una vez que cualquier instrucción se deposita en la lista, aparece un valor numérico asociado a ella. Este
valor representa el tiempo que debe durar la ejecución de la instrucción, y se puede modificar tecleando
directamente un nuevo valor o bien “picando” en las flechas ↑ y ↓, que producen incrementos/decrementos de
décimas de segundo. El rango válido va de 0,1” a 25,5”.
En la figura 10-8 se muestra, a modo de ejemplo, una instrucción de avance durante 4 segundos insertada
en la lista de acciones.
10.4.3 Ejemplo1
El sencillo ejemplo que se propone consiste en hacer avanzar y retroceder al robot de forma continua. La
figura 10-9 nos presenta la lista de acciones que vamos a realizar. ¡¡¡ Esto es un programa !!!
El primer paso (Step 1) consiste en hacer avanzar al robot durante 2”. El siguiente paso mantiene al robot
parado (stop) durante 1”. Seguidamente, en el paso 3, el robot retrocede durante otros 2”, por lo que se queda
donde estaba al principio. Se realiza una nueva parada de 1” en el paso 4. Finalmente, el paso 5 es una acción o
instrucción de repetición que vuelve, en este ejemplo, al paso 1. Todo el proceso se vuelve a repetir de forma
indefinida.
10-5
Microbot “Home Boe-Bot”
Tema 10: GUI Bot, un entorno visual de programación
Ahora sólo queda descargar el programa anterior sobre la memoria del robot, para que pueda ser
ejecutado. Esto se realiza mediante el botón GO que aparece en la pantalla principal del software GUI Bot. Se
supone que el robot Home Boe Bot está debidamente alimentado y conectado al canal serie del PC.
10.4.4 Ejemplo 2
La figura 10-10 muestra otro ejemplo . En esta ocasión se trata de una serie de movimientos para realizar
una determinada trayectoria.
En este ejemplo debemos notar la diferencia que hay entre el giro a la derecha del paso 2 y la rotación del
paso 4. En el paso 2, además de girar se produce un avance. En el paso 4, el movimiento de rotación se realiza
sobre el propio eje del robot, sin que se realice ningún tipo de avance.
10-6
Microbot “Home Boe-Bot”
Tema 10: GUI Bot, un entorno visual de programación
Como ya se ha explicado anteriormente, en el modo básico el usuario no tiene control sobre los sensores
de entrada. Sin embargo existe la posibilidad de que estos sean gestionados automáticamente por el propio
software GUI Bot, según se van ejecutando las instrucciones de la lista realizada por el usuario. Efectivamente, si
activamos la opción “Sensors Enabled” como se presenta en la figura 10-11, se consigue que cuando se detecte
un obstáculo a la derecha del robot los esquive girando a la izquierda y viceversa.
Si se desactiva esta opción no se realiza gestión alguna de esos sensores. El robot se limita a ejecutar las
instrucciones almacenadas por el usuario en la lista de acciones.
La lista de acciones no es ni mas ni menos que un programa con un conjunto de instrucciones que se
ejecutarán secuencialmente en el robot. Es posible que en ocasiones sea necesario editar dicho programa o lista,
de forma que se puedan insertar, mover, borrar, etc las diferentes instrucciones de que consta.
La figura 10-12 muestra los diferentes botones que permiten la edición del programa almacenado en la
lista de instrucciones.
La tabla que se presenta a continuación resume la función de cada uno de los botones que permite editar
o modificar una lista de acciones o programa.
10-7
Microbot “Home Boe-Bot”
Tema 10: GUI Bot, un entorno visual de programación
BOTÓN DESCRIPCIÓN
Borra de la lista la instrucción seleccionada. Para seleccionar una instrucción basta con
Delete hacer clic sobre la celda que contiene el número que la identifica (Step #). Una vez borrada
la instrucción todas las que están por debajo se desplazan hacia arriba, quedando siempre
agrupadas.
Copy Copia la instrucción seleccionada en el porta papeles para poderla copiar posteriormente
en otro lugar de la lista.
Cut Borra la instrucción seleccionada y la almacena en el porta papeles para poderla copiar
posteriormente otro lugar de la lista.
Pega la instrucción almacenada en el porta papeles sobre la lista, por encima de la
Paste instrucción seleccionada. Todas las instrucciones se desplazan una posición hacia abajo
quedando siempre agrupadas.
Undo Anula la última acción llevada a cabo. Es decir, si por ejemplo se borra accidentalmente
una instrucción de la lista mediante el botón Delete, al pulsar Undo se recupera la
instrucción borrada.
BOTÓN DESCRIPCIÓN
Este modo es ideal para comprobar el hardware de nuestro robot y nos permite comprobar rápidamente el
funcionamiento de los motores y sensores. Se activa al accionar el botón de control Test y muestra una nueva
pantalla que representa al robot. Ver la figura 10-14.
10-8
Microbot “Home Boe-Bot”
Tema 10: GUI Bot, un entorno visual de programación
Cuando se activa el botón “Run Test” se descarga sobre el robot un programa que, en tiempo real, lee el
estado de los sensores y los transmite al PC, donde se visualizan de forma gráfica. Este a su vez transmite a
ambos motores del robot sendos pulsos de anchura variable, lo que permite analizar el movimiento de los mismos.
El usuario puede observar cómo la activación o no de los sensores del robot, bien sean los bumpers o los
IR, tienen un reflejo inmediato en la pantalla del modo test. Igualmente se puede variar la anchura de los pulsos
aplicados a ambos motores y observar cómo estos giran en ambos sentidos.
Cuando se consigue que un motor esté totalmente detenido, se dice que dicho motor está calibrado. El
valor de la anchura del pulso que se está aplicando en ese momento, recibe el nombre de “valor de calibración”.
Este valor puede registrarse internamente cuando se acciona el botón “Calibrate Servos” de la pantalla de Test.
El botón “Set Defaults” configura el modo Test con los valores por defecto. Por último, el botón “Cancel”,
finaliza la ejecución del modo Test devolviendo el control al software GUI Bot.
En el modo avanzado del software GUI Bot se dispone de las mismas opciones, instrucciones y
posibilidades que en el modo básico y, además, el usuario puede gestionar el estado de los sensores de entrada
con objeto de interactuar en base a ellos. Es decir, el robot podrá realiza diferentes movimientos o maniobras en
función del estado de esos sensores. En la figura 10-15 se muestra la pantalla de trabajo en el modo avanzado del
GUI Bot.
10-9
Microbot “Home Boe-Bot”
Tema 10: GUI Bot, un entorno visual de programación
Aparece una nueva columna denominada “Acción de los sensores” que permite confeccionar hasta 5 listas
de instrucciones diferentes según qué pestaña se seleccione: All, Set1, Set2, Set3 y Set4.
En la lista de acciones (programa) aparecen tres nuevas columnas llamadas “Both”, “Left” y “Right”, en las
que el usuario indicará qué hacer si se activan ambos sensores (Both), sólo el de la izquierda (Left) o sólo el de la
derecha (Right), cuando se están ejecutando las instrucciones del programa. En estas columnas se debe indicar
qué lista de instrucciones se debe ejecutar de las 5 posibles (All, Set1, Set2, Set3 y Set4), cuando se activa
cualquiera de los sensores (Both, Left o Right). No se puede hacer distinción entre los sensores IR y los bumpers.
Tenemos pues tres listas de instrucciones que se deben ejecutar en otros tantos casos. Dichas listas las
confeccionamos sobre la columna “Acción de los sensores”, en las pestañas All, Set1 y Set2, tal y como se
muestra en la figura 10-16.
10-10
Microbot “Home Boe-Bot”
Tema 10: GUI Bot, un entorno visual de programación
En la primera instrucción (Step #1) se hace avanzar al robot durante 1,2”. Si se activan ambos sensores
(Both) se ejecutan las instrucciones contenidas en la lista All de “Acción de los sensores”. Si se activa el sensor de
la izquierda (Left) se ejecutan las instrucciones de la lista Set1. Finalmente, si se activa el sensor de la derecha
(Right), se ejecutan las instrucciones de la lista Set2.
En las restantes instrucciones del programa principal (Step #2 y Step #3) se sigue el mismo esquema que
en la primera instrucción.
Para relacionar las columnas Both, Left y Right del programa principal con cualquiera de las listas de
“Acción de los sensores” basta seleccionar la pestaña de una de estas y arrastrar el icono con el signo + hasta
cualquiera de las columnas Both, Left y Right del programa principal.
En otras palabras. Se pueden crear hasta 5 listas de instrucciones diferentes en la columna “Acción de los
sensores”. En la lista del programa principal se relaciona cada instrucción con la lista que se debe ejecutar en el
supuesto de que se activen cualquiera de los sensores (Bth, Left o Right).
10-11
Microbot “Home Boe-Bot”
Tema 10: GUI Bot, un entorno visual de programación
10-12
Microbot “Home Boe-Bot”
Anexo 1: Repertorio de instrucciones PBASIC
Anexo 1
Resumen del repertorio de instrucciones
PBASIC
AN1-1
Microbot “Home Boe-Bot”
Anexo 1: Repertorio de instrucciones PBASIC
AN1-2
Microbot “Home Boe-Bot”
Anexo 1: Repertorio de instrucciones PBASIC
Desde la página principal de Parallax, www.parallax.com, se puede descargar el manual completo del
PBASIC, donde podrás encontrar toda la información detallada y actualizada tanto de las instrucciones PBASIC
como de los módulos BasicStamp. En este anexo le resumimos las características de las instrucciones PBASIC.
Instrucción BRANCH
Sintaxis BRANCH Offset, (dir0, dir1, ... dirn)
Descripción Realiza un salto a cualquiera de las direcciones (dir0, dir1, ... dirn) en función del valor del
offset.
Ejemplo BRANCH valor,(Uno, Dos, Tres)
Salta a la dirección Uno o Dos o Tres en función del contenido de la variable “Valor” (1,2 o 3)
Instrucción GOSUB
Sintaxis GOSUB Dir
Descripción Almacena la dirección de la siguiente instrucción a la propia GOSUB, con objeto de poder
retornar a ella. A continuación salta a la subrutina cuyo inicio se expresa en el parámetro Dir.
Ejemplo GOSUB Rutina1
Instrucción GOTO
Sintaxis GOTO Dir
Descripción Salta al punto del programa indicado o representado por el parámetro Dir. No se almacena la
dirección de partida por lo que el retorno automático no es posible.
Ejemplo GOTO Tarea1
Salta a ejecutar las instrucciones que comienzan en la dirección representada por “Tarea1”
AN1-3
Microbot “Home Boe-Bot”
Anexo 1: Repertorio de instrucciones PBASIC
Instrucción RETURN
Sintaxis RETURN
Descripción Retorno desde una subrutina. Se vuelve al lugar del que se partió
Ejemplo RETURN
AN1-4
Microbot “Home Boe-Bot”
Anexo 1: Repertorio de instrucciones PBASIC
Instrucción STOP
Sintaxis STOP
Descripción Finaliza la ejecución de un programa hasta que se accione el RESET. El Basic Stamp no
queda en el modo de bajo consumo
Ejemplo
Instrucción EXIT
Sintaxis EXIT
Descripción Provoca el inmediato fin de cualquier bucle realizado mediante FOR .. NEXT, DO ... LOOP
Ejemplo
AN1-5
Microbot “Home Boe-Bot”
Anexo 1: Repertorio de instrucciones PBASIC
Instrucción DATA
Sintaxis DATA dato1, dato2, ....
Descripción Graba datos en la EEPROM durante el volcado de un programa desde el PC al BasicStamp
Ejemplo DATA 72,69,76,79
DATA 101,104,108
La primera instrucción DATA graba, a partir de la posición 0 de la EEPROM, cada uno de los
datos que la acompañan en sucesivas posiciones. La siguiente(s) DATA siguen grabando
datos en las posiciones siguientes
Instrucción READ
Sintaxis READ posición, Var
Descripción Lee, de la EEPROM. el dato presente en la dirección dada y lo almacena en la variable “Var”
Ejemplo READ 2,VALOR
Instrucción WRITE
Sintaxis WRITE posición, dato
Descripción Graba un dato sobre la EEPROM, en la dirección indicada
Ejemplo WRITE 2,VALOR
Instrucción LOOKDOWN
Sintaxis LOOKDOWN Valor_Ref, [valor0,valor1, ... valorn],variable
Descripción Compara un valor de referencia con los valores de una lista. En la variable se almacena el
índice de la lista que contiene el valor de referencia.
Ejemplo LOOKDOWN 13,[22,55,65,34,78,13,44,89,09,33],indice
Instrucción LOOKUP
Sintaxis LOOKUP indice,[valor0,valor1,... valorn],variable
Descripción Extrae de una lista de valores el valor indicado por “índice” y lo deposita en la variable
Ejemplo LOOKUP 3,[23,45,67,13,55,67,64,77],valor
En la variable “valor” se almacena el dato 13 que es el dato de la lista apuntado por el índice 3
Instrucción RANDOM
Sintaxis RANDOM variable
Descripción Genera un número seudo aleatorio entre 0 y 65535 y lo almacena en la variable.
Ejemplo
AN1-6
Microbot “Home Boe-Bot”
Anexo 1: Repertorio de instrucciones PBASIC
Instrucción BUTTON
Sintaxis BUTTON pin,estado,delay,ciclos,var,val_ref,dir
Descripción Detecta el accionamiento de una señal de entrada (p.e. un pulsador). Realiza auto repetición y
salta a una dirección si el pulsador se encuentra en un estado de referencia.
Instrucción COUNT
Sintaxis COUNT pin, periodo, var
Descripción Cuenta el nº de transiciones (0-1-0 o 1-0-1) que se producen en el pin de entrada indicado,
durante un periodo de tiempo determinado.
Ejemplo COUNT 0,1000,numero
Instrucción HIGH
Sintaxis HIGH pin
Descripción Pone a nivel lógico “1” el pin de salida indicado
Ejemplo HIGH 3
Instrucción INPUT
Sintaxis INPIT pin
Descripción Configura como entrada al pin indicado
Ejemplo INPUT 7
Instrucción LOW
Sintaxis LOW pin
Descripción Pone a nivel lógico “0” el pin de salida indicado
Ejemplo LOW 3
AN1-7
Microbot “Home Boe-Bot”
Anexo 1: Repertorio de instrucciones PBASIC
Instrucción OUTPUT
Sintaxis OUTPUT pin
Descripción Configura como salida la línea indicada
Ejemplo OUTPUT 7
Instrucción PULSIN
Sintaxis PULSIN pin, estado, var
Descripción Mide la duración de un estado lógico presente en un determinado pin y la almacena en una
variable.
Ejemplo PULSIN 7,1,duración
En la variable duración se almacena el tiempo en que la señal presente en el pin 7 está a nivel
“1”.
Instrucción PULSOUT
Sintaxis PULSOUT pin,periodo
Descripción Se genera sobre el pin indicado, un pulso con un periodo determinado
Ejemplo PULSOU 3,100
Instrucción REVERSE
Sintaxis REVERSE pin
Descripción Invierte la configuración de un pin de E/S. Si es de entrada lo configura como salida y
viceversa.
Ejemplo OUTPUT 7
REVERSE 7
Instrucción TOGGLE
Sintaxis TOGGLE pin
Descripción Invierte el estado lógico de un pin de salida
Ejemplo LOW 7
TOGGLE 7
Instrucción XOUT
Sintaxis XOUTMpin, Zpin, codigo, comando,ciclos
Descripción Envía un comando mediante el protocolo X10 a través de una línea eléctrica.
Mpin: Representa la línea de salida por donde se envía la señal modulada.
Zpin: Representa la línea de entrada para detectar el cruce por cero
Codigo: Representa el código del dispositivo X10 seleccionado
Comando: Representa el comando a transmitir
Ciclos: es opcional y represente el nº de veces que se debe transmitir el comando
Ejemplo
AN1-8
Microbot “Home Boe-Bot”
Anexo 1: Repertorio de instrucciones PBASIC
Instrucción SERIN
Sintaxis SERIN Rpin, Fpin, Baudios, Plabel, timeout, Tlabel, datos
Descripción Recibe datos en serie asíncronos
Instrucción SEROUT
Sintaxis SEROUT Tpin, Fpin, baudios, lap, timeout, Tlabel, Datos
Descripción Transmite un dato serie asíncrono
Instrucción SHIFTIN
Sintaxis SHIFTIN Dpin, Cpin, Modo, Var \bits, var\bits ....
Descripción Lee datos serie síncronos desde un dispositivo serie
Instrucción SHIFTOUT
Sintaxis SHIFOUT Dpin, Cpin, Mode, Var\bits, Var\bits ....
Descripción Transmite datos en serie de forma síncrona hacia un dispositivo serie
AN1-9
Microbot “Home Boe-Bot”
Anexo 1: Repertorio de instrucciones PBASIC
Instrucción PWM
Sintaxis PWM pin, duty, ciclos
Descripción Convierte un valor digital en una salida analógica mediante modulación de anchura de pulsos.
Instrucción RCTIME
Sintaxis RCTIME pin, estado, var
Descripción Mide el tiempo en que un determinado pin está en un determinado estado o nivel.
Instrucción DTMFOUT
Sintaxis DTMFOUT pin, Ontime, OFFtime, Tono, Tono,....
Descripción Genera tonos multifrecuencia (teclado telefónico)
Por la línea 3 se obtienen los tonos correspondientes al nº 944230551 (Tfno. de MSE). Cada
tono tiene una duración de 50ms y el intervalo entre un tono y el siguiente es de 10mS.
Instrucción FREQOUT
Sintaxis FREQOUT pin, periodo, frec1, frec2
Descripción Genera una o dos señales senoidales durante un periodo de tiempo determinado
AN1-10
Microbot “Home Boe-Bot”
Anexo 1: Repertorio de instrucciones PBASIC
Instrucción PAUSE
Sintaxis PAUSE periodo
Descripción Produce una pausa o temporización en la ejecución de un programa
Instrucción END
Sintaxis END
Descripción Finaliza la ejecución de un programa dejando el Basic Stamp en el modo de bajo consumo
indefinidamente.
Ejemplo
Instrucción NAP
Sintaxis NAP Periodo
Descripción Detiene la ejecución de un programa dejando el Basic Stamp en el modo de bajo consumo
durante un intervalo de tiempo. Dicho intervalo se calcula: (2^Periodo) + 18 mS. Donde
periodo es un valor comprendido entre 0 y 7, por lo que el intervalo mínimo es de 0mS y el
máximo 2304 mS (2,3s)
Ejemplo NAP 4
Instrucción SLEEP
Sintaxis SLEEP Periodo
Descripción Detiene la ejecución de un programa dejando al Basic Stamp en el modo de bajo consumo
durante un intervalo de tiempo. Dicho intervalo se calcula: (periodo * 2.3 seg)/2. El periodo
puede estar comprendido entre 1 y 65535, por lo que el intervalo mínimo es de 2.3 seg y el
máximo de aproximadamente unas 20h.
Ejemplo
Instrucción DEBUG
Sintaxis DEBUG datos,datos
Descripción Envía y visualiza información al PC, sobre la ventana del Basic Stamp Terminal. Este
comando se puede emplear para visualizar texto o números con diferentes formatos, de modo
que sirve para analizar el desarrollo de la ejecución de un programa.
Ejemplo
AN1-11
Microbot “Home Boe-Bot”
Anexo 1: Repertorio de instrucciones PBASIC
Instrucción DEBUGIN
Sintaxis DEBUGIN dato
Descripción Recibe información del usuario a través del PC, mediante la ventana del Basic Stamp Terminal
correspondiente.
Ejemplo
AN1-12
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
Anexo 2
Otros Microbots: El PICBOT-2 y PICBOT-3
AN2-1
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
AN2-2
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
AN2.1. EL PICBOT-2
El microbot PICBOT-2 diseñado y comercializado por Ingeniería de Microsistemas Programados S.L. (en
lo sucesivo MSE) consiste en un robot móvil de propósito general compacto y de reducidas dimensiones. Supone
un paso adelante en cuanto a los conceptos de programación. Su tarjeta de control emplea un PIC16F84 que se
programa directamente desde su propio lenguaje natural: El Ensamblador. La principal diferencia con el Home
Boe-Bot es el lenguaje de programación, que en el caso del PICBOT-2 al ser ensamblador, exige conocer en
profundidad la arquitectura del microcontrolador.
Como cualquier otro microbot, consta de cuatro partes fundamentales, de las cuales MSE proporciona una
versión funcional, didáctica y económica de las mismas:
• La estructura
• Los elementos motrices
• Los sensores que informan del entorno
• La unidad de control inteligente
Posteriormente será el propio usuario quién determine y diseñe el tipo de estructura óptima para su propia
aplicación. El usuario será también quién elija el tipo de mecanismos o motores a emplear, en base a la velocidad,
consumo, potencia requerida, etc. Igualmente y, dada la enorme cantidad de tipos de sensores existentes, será
también el usuario quién determine el tipo de los mismos en función del entorno en el que su propio microbot
deberá desenvolverse.
La microbótica es una ciencia en pleno desarrollo. No hay nada determinado, no hay límites. Todo está por
hacer. Es la imaginación de cada cual quién determina ese desarrollo y las múltiples aplicaciones posibles.
La figura AN2-1 muestra el aspecto que, una vez montado, tendrá el microbot PICBOT-2.
AN2-3
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
Las características más relevantes del microbot PIC-BOT que propone Ingeniería de Microsistemas
Programados S.L. (MSE), son las siguientes:
• Los elementos motrices están formados por dos motores de corriente continua. Se trata
de los servomotores de la firma FUTABA S3003. Este tipo de motores disponen de un
grupo reductor que garantiza un buen par de fuerza así como una muy reducida inercia
en los arranques y paradas. Igualmente disponen de un buen sistema de anclaje que
permite acomodarlos fácilmente a cualquier tipo de estructura.
• La unidad de control está formada por la tarjeta MSx84 de MSE. Su unidad de proceso
está formada por el popular microcontrolador PIC16F84. Este permite ser reutilizado
pudiéndose re grabar en numerosas ocasiones. La tarjeta MSx84 permite conectar
directamente hasta 5 sensores de entrada y gobernar dos motores DC o uno paso a
paso PAP.
AN2-4
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
Lista de materiales
El lote completo para la construcción del PICBOT-2 de MSE está compuesto de los siguientes materiales y
componentes:
CANTIDAD DESCRIPCION
1 Tarjeta de control MSx84 gobernada por el microcontrolador PIC 16x84
1 Juego de piezas de metacrilato con las que se confecciona la estructura
2 Motores FUTABA S3003 como elementos motrices
3 Sensores infrarrojos tipo CNY70
2 Sensores infrarrojos tipo H21A1
2 Sensores mecánicos de final de carrera tipo Bumper
5 Cables para la conexión de los sensores con la tarjeta MSx84
1 Portapilas para batería de 9V
1 Portapilas para 4 baterías de 1.5V
Relación de herramientas
También es necesario disponer de algún circuito de grabación con su correspondiente software para poder
grabar el PIC con el programa de aplicación diseñado por el usuario. En Ingeniería de Microsistemas
Programados S.L. disponemos del grabador Micro’PIC Programmer (ref. MPICPRO) y/o del entrenador/grabador
Micro’PIC Trainer (ref.MPICTRAM). Ambos equipos vienen acompañados de su correspondiente software e
instrucciones de grabación. En las figuras AN2-3 y AN2-4 se muestran las fotografías de los mismos.
AN2-5
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
El PICBOT-2 viene acompañado de un completo manual en castellano que se puede bajar desde nuestra
página www.microcontroladores.com, en la sección de Downloads. En el Tema 1 del mismo se irá explicando paso
a paso, mediante dibujos y fotografías, la forma de construir la estructura del PICBOT-2 así como la fijación de los
motores y sensores.
El tema 2 del manual está dedicado a explicar el funcionamiento y aplicaciones de la tarjeta de control
MSx84, que se aprecias en la figura AN2-5.. En dicho tema se darán ideas de cómo controlar y aplicar diferentes
tipos de sensores así como el gobierno de motores tanto DC como paso a paso (PAP).
AN2-6
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
AN2.2. EL PICBOT-3
La fotografía de la figura AN2-6 muestra el aspecto del robot en su versión básica. A partir de ella, el
usuario puede ir añadiendo diferentes sensores, actuadores y complementos, para adaptar el robot a diferentes
entornos de trabajo.
En dicho manual también se irán presentando las diferentes opciones de ampliación junto con una variada
selección de ejemplos de carácter didáctico, que permiten el empleo de los numerosos recursos y posibilidades
del PICBOT-3.
Se basa fundamentalmente en 3 bases de metacrilato que permiten realizar una estructura tipo torre en la
que se alojarán los diferentes sensores y actuadores que forman el robot. En Ingeniería de Microsistemas
Programados S.L. pensamos que, si bien la estructura tiene una cierta importancia, no es menos cierto que el tipo
de sensores, motores y actuadores empleados, son fundamentales, al igual que el tipo de tarjeta de control y el
correspondiente procesador.
Es por ello que la estructura que proponemos es una estructura sencilla y económica aunque no por ello
deja de ser versátil y flexible.
En la figura AN2-7 se muestran los materiales empleados para la construcción de la estructura del
PICBOT-3.
AN2-7
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
1.- Cintas adhesivas. Lo son por ambas caras y se emplearán para la sujeción de prácticamente
todos los elementos de que consta PICBOT-3. Proporcionan una adherencia muy consistente
y, al poderse despegar, ofrecen la ventaja de poder realizar las modificaciones que sean
necesarias.
2.- Bases de metacrilato. Hay tres bases iguales que formarán una estructura tipo torre de tres
alturas, planta baja, planta intermedia y planta superior. El metacrilato es una material bastante
ligero, consistente y fácil de mecanizar. Al no ser poroso admite muy bien todo tipo de
adhesivos.
3.- Soportes de metacrilato. Hay dos y se emplearán para la sujeción de los motores, de forma
que estos queden a cierta altura respecto al plano.
4.- Panel frontal. Se trata de una placa de metacrilato serigrafiada. Se colocará en la parte
delantera del robot.
5.- Tornillos. Son dos tornillos rosca chapa para la sujeción del panel frontal sobre la base de
metacrilato de la de la planta baja.
6.- Tornillos. Cuatro tornillos de 50 mm y métrica 3 que servirán para unir la planta baja con la
planta intermedia.
7.- Separadores. Cuatro separadores de plástico de 15mm empleados para separar la planta baja
de la intermedia.
8.- Separadores. Cuatro separadores de plástico de 20mm empleados para separar la planta baja
de la intermedia.
9.- Separadores. Cuatro separadores metálicos de 25mm que se emplean para separar la planta
intermedia de la planta superior.
10.- Tornillos. Cuatro tornillos de 10mm métrica 3. Se emplean para unir la planta intermedia con la
planta superior de la estructura.
AN2-8
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
El sistema de tracción
Se encarga de producir los movimientos necesarios que permitan maniobrar al microbot PICBOT-3.
Consta de los elementos mostrados en la fotografía de la figura AN2-8.
1.- Motores. Se emplean dos servomotores FUTABA S3003 previamente modificados. Estos
motores están diseñados, fundamentalmente, para tareas de servo control en modelos
teledirigidos (barcos, aviones, etc.). Sin embargo, los vamos a modificar retirando la electrónica
de control que poseen para conseguir así que tengan un giro libre. Estos motores no son
precisamente económicos y además vamos a anular algunas de sus prestaciones, sin embargo
en Ingeniería de Microsistemas Programados S.L. hemos optado por su empleo ya que ofrecen
las siguientes ventajas:
AN2-9
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
2.- Ruedas. Consisten en dos ruedas de PVC de 44 mm de diámetro. El usuario puede optar por
otro tipo de ruedas que tengan una mejor tracción en función del terreno donde deba
desenvolverse el robot.
3.- Rueda trasera. Es una rueda con giro libre que se colocará como rueda trasera del robot
PICBOT-3.
Dispositivos electrónicos
Es un conjunto de circuitos, sensores, actuadores, etc. que posibilitan que el PICBOT-3 tenga
conocimiento del entorno que le rodea, así como de la tarjeta de control que realiza todas las tareas de gobierno.
En la figura AN2-9 se muestran los elementos de que consta el PICBOT-3 en su versión básica. Ingeniería de
Microsistemas Programados S.L. pone a disposición de todos sus clientes y usuarios un variado conjunto de
dispositivos opcionales que permitirán un aumento de las posibilidades y prestaciones del robot.
1.- Tarjeta de control. Se trata de la tarjeta de control MSEF87X diseñada y comercializada por
Ingeniería de Microsistemas Programados S.L. De serie incorpora un microcontrolador
PIC16F876 dotado del programa monitor PICMOS’76. Opcionalmente se puede incorporar el
PIC16F877 con el programa monitor PICMOS’77. El programa monitor PICMOS’7X permite la
comunicación con el software Real-Pic para PC, que facilita la edición, ensamblado y grabación
de los programas de aplicación del usuario. La velocidad de trabajo en ambos casos es de
20MHz lo que significa ejecutar una instrucción cada 200nS. Todas las líneas de E/S están
accesibles mediante un conjunto de bornas que facilitan la conexión con los múltiples sensores
y periféricos disponibles. La tarjeta incorpora el sistema de estabilización de tensión, un canal
serie para comunicación con el PC y un conector Smart-Card que permite el empleo de tarjetas
de memoria Memory Card para salvar y recuperar los programas de aplicación de forma
autónoma.
2.- Driver MSE-A100. Se trata de un driver amplificador de 4 canales con los que se obtiene una
señal de salida de hasta 35Vdc con una corriente de 1 A por cada canal. Se emplea para el
gobierno de los dos motores de que consta PICBOT-3 permitiendo el control ON/OFF de cada
uno de ellos así como el sentido de giro.
AN2-10
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
3.- Sensor MSE-S110.2. Contiene dos transductores IR de reflexión que permitirá controlar la
trayectoria del robot siguiendo una línea negra/blanca trazada en el suelo.
5.- Sensor MSE-S130. Se trata de un sensor capaz de proporcionar información sobre la luz
ambiente que incide sobre él. De esta forma el PICBOT-3 puede reaccionar ante los cambios
de luz que se produzcan en su entorno o área de trabajo.
6.- Sensor MSE-S100. Es un sensor que detecta cualquier señal sonora que se produzca dentro
de su radio de acción. El umbral de sonido se ajusta mediante un potenciómetro y permitirá que
el PICBOT-3 pueda reaccionar ante la presencia de cualquier tipo de ruido.
Varios
Finalmente, en la figura AN2-10 se muestran una serie de accesorios adicionales que componen la versión
básica del PICBOT-3, a los que habría que añadir el manual de usuario así como un disco con el software y
ejemplos de demostración (estos ejemplos también se pueden bajar desde www.microcontroladores.com.
1.- Cable serie. Es el cable para la comunicación serie entre la tarjeta de control MSEF87X y el
PC.
2.- Portapilas. Admite 8 pilas (no incluidas) del tipo RA6/AAA para la alimentación general del
sistema.
3.- Separadores. Se trata de 4 separadores adhesivos que se emplearán para fijar la tarjeta de
control MSEF87X sobre la planta superior de la estructura del PICBOT-3.
AN2-11
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
Sistema de alimentación
Se trata de un forma sencilla de alimentar al PICBOT-3 mediante el empleo de las clásicas fuentes de
alimentación, como la mostrada en la figura AN2-11, fáciles de conseguir y económicas.
Se recomienda el empleo de una fuente de alimentación con una tensión de salida de 12 a 15Vdc y una
corriente de 500 a 1000mA. Si es estabilizada mejor. La conexión con la tarjeta de control MSEF87X se realiza
mediante la correspondiente clavija con el positivo al centro de la misma.
El empleo de este tipo de alimentación resulta muy cómodo y económico cuando el usuario está en fase
de desarrollo y prueba de sus programas de aplicación. No gasta baterías ni pilas. Sin embargo tiene el
inconveniente de que la F.A debe estar conectada a la red eléctrica con lo que el robot pierde toda autonomía.
El empleo de baterías recargables del tipo RA6/AAA como las mostradas en la figura AN2-12 es una
buena solución, que permite que el robot tenga total autonomía a un precio asequible y durante un tiempo
razonable. En los laboratorios de Ingeniería de Microsistemas Programados S.L. hemos probado y obtenido
excelentes resultados mediante el empleo de las baterías FREAK de la firma METROTECNIA S.L. Entre las
características a destacar cabe citar que, además de ser recargables, cada batería ofrece una tensión de salida de
1,5Vdc en lugar de los típicos 1,2 Vdc, y una corriente de 700mA/Hora.
AN2-12
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
El mismo fabricante dispone de un cargador como el mostrado en la figura AN2-13 que permite la carga de
hasta 4 baterías del tipo RA6/AAA o del tipo RA3/AA (nunca mezcladas).
Tal y como se muestra en la figura AN2-14, con un conjunto de 8 baterías de este tipo, alojadas en el
correspondiente porta pilas (incluido), se obtiene una tensión total de 12Vdc. Con esta tensión se alimenta a todos
los elementos de que consta el PICBOT-3, dotándole de una autonomía de unos 45 minutos aproximadamente.
Es otra posible solución a la alimentación del PICBOT-3, con la que hemos conseguido también
excelentes resultados. Se trata del empleo de una única batería recargable de plomo ácido como la mostrada en
la figura AN2-15, para la alimentación de todos los elementos del PICBOT-3.
AN2-13
Microbot “Home Boe-Bot”
Anexo 2: Otros Microbots; El PICBOT-2 y PICBOT-3
Aunque tienen un peso un tanto elevado proporcionan una tensión de salida de 12Vdc y 800mA/hota,
dotando al PICBOT-3 de una excelente autonomía. También está disponible en el mercado, el correspondiente
cargador como el mostrado en la figura AN2-16.
Como solución final cabe citar que la opción más óptima (pero la más cara) consiste en emplear dos
alimentaciones diferentes. Mediante un pack de 8 baterías alcalinas como el de la figura AN2-14 se alimenta a
toda la electrónica (tarjetas de control y sensores). Mediante otra batería de plomo ácido se alimentan única y
exclusivamente los motores. La estructura del PICBOT-3 tiene el espacio suficiente para alojar a ambas.
Lógicamente se consigue así una mayor autonomía y además, como la alimentación de los motores está separada
de la alimentación de la electrónica, se evitan problemas de ruidos e interferencias. Efectivamente, cada vez que
los motores arrancan o cambian de sentido de giro, se producen unos picos de consumo elevados que,
dependiendo del estado de carga de las baterías pueden provocar bajadas en la tensión de alimentación. Esto a
su vez puede producir re inicios no deseados tanto en la tarjeta de control como en algunos de los sensores.
AN2-14
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Anexo 3
Sensores y actuadores para microbots:
Módulos Conectar & Funcionar
AN3-1
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
AN3-2
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
AN3-1 INTRODUCCION
Ingeniería de Microsistemas Programados S.L. viene, desde hace tiempo, desarrollando y comercializando
una serie de sensores y actuadores de propósito general. Estos dispositivos se caracterizan por ser totalmente
autónomos y funcionales por sí mismos. Se pueden emplear en cualquier aplicación de carácter comercial como
pueden ser sistemas de control de procesos, alarmas, control de acceso, automatismos y, por supuesto, en
microbótica.
Efectivamente, se tratan de dispositivos de bajo coste y fácil instalación que puede emplearse tanto en el
Home Boe-Bot como en cualquier otro tipo de robot, haciendo que dicho robot tenga una mayor percepción del
entorno que le rodea.
Se trata de un sensor activado por sonido, ver la figura AN3-1. Un micrófono recoge la señal de sonido o
ruido ambiente. Esta señal es amplificada y, si se alcanza un determinado nivel o umbral, se produce un pulso
lógico de disparo de unos 100 mS de duración y activo por flanco ascendente.
Mediante un potenciómetro de ajuste es posible regular el nivel sonoro al que se desea se produzca la
señal de disparo en la salida. De esta forma se puede ajustar la sensibilidad del circuito.
El circuito en reposo (ausencia de ruido/sonido) mantiene la señal de salida a nivel lógico “0” permanente.
El circuito dispone de un orificio que permite una flexible instalación y sujeción del mismo sobre cualquier
tipo de estructura.
Características técnicas
AN3-3
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Conexionado
Se realiza mediante una borna de 3 contactos con paso 2.54, tal y como se muestra en la figura AN3-2.
Ajustes
El ajuste del sensor de sonido MSE-S100 permite regular el nivel sonoro necesario para disparar la señal
de salida. Se realiza mediante el potenciómetro ajustable P1.
En las posteriores aplicaciones que se realicen con el sensor, es importante que, tras conectar la
alimentación, se espere un mínimo de 100mS antes de procesar la señal de salida. Ello es debido a que el circuito
necesita de ese tiempo para su propia estabilización y durante el cual se pueden generar falsas señales de
disparo.
Aplicaciones
El sensor de sonido MSE-S100 es capaz de generar una señal lógica en función del sonido o ruido
ambiente. Las aplicaciones son numerosas:
• Automatismos digitales en los que se procesan señales que provienen de diferentes sensores o
transductores.
• Microbótica en donde es necesario que se actúe en función del entorno que rodea al robot
El sensor de reflexión MSE-S110 está basado en los populares dispositivos CNY70 y están disponibles en
versiones con 1 o 2 de estos dispositivos (MSE-S110.1 o MSE-S110.2). Ver la figura AN3-3. Cada dispositivo
dispone de un emisor/receptor de luz IR. Cuando la luz se dispersa o es absorbida por una superficie oscura, la
salida del correspondiente dispositivo, tras ser acondicionada, es de nivel “1”. Sin embargo, cuando la luz es
reflejada por una superficie clara, se genera una señal lógica de nivel “0”.
AN3-4
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Estas señales lógicas de salida se obtienen a través de las conexiones 3 y 4 de la borna. OUT1 se
corresponde con la señal captada por el dispositivo 1 y OUT2 con la del dispositivo 2 (sólo en la versión MSE-
S110.2). El circuito dispone de un orificio que permite una flexible instalación y sujeción del mismo sobre cualquier
tipo de estructura.
Características técnicas
Conexionado
Se realiza mediante una borna de 4 contactos con paso 2.54, tal y como se muestra en la figura AN3-4.
1 1 +5Vcc
2 GND Figura AN3-4. Conexionado del sensor
3 OUT1 de reflexión MSE-S110.2
2 4 OUT2
Ajustes
El sensor MSE-S110.X no necesita de ajuste alguno. La alimentación se aplica por las conexiones 1 y 2
de la borna. Las señales de salida OUT1 y OUT2 se corresponden con el estado de los dispositivos CNY70 1 y 2
respectivamente. Con un voltímetro se pueden medir y analizar la tensión de las señales de salida entre GND y
OUT1/OUT2 cuando, frente a los dispositivos se coloca, por ejemplo, un objeto blanco/negro.
AN3-5
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Aplicaciones
Este tipo de sensores puede tener gran cantidad de aplicaciones tanto a nivel industrial, como a nivel
didáctico, microbótica, etc. A continuación y, a modo de ejemplo, se presentan algunas ideas.
En la figura AN3-5 se muestra una aplicación consistente en contar objetos que pasan frente a un sensor.
Estos objetos deben estar suficientemente contrastados con el fondo. Se obtiene un tren de pulsos que se
generan en cada transición de blanco a negro. Se puede emplear la versión MSE-S110.1 con un único dispositivo.
X Sensor 1
XX
M
SE
S- Figura AN3-5. Contando objetos con el
sensor de reflexión MSE-S110.1
CINTA
La figura AN3-7 muestra un ejemplo que permite conocer la velocidad y sentido de desplazamiento de una
cinta transportadora o cualquier sistema de transmisión similar. Se emplea la versión MSE-S110.2 con dos
dispositivos CNY70. Durante el desplazamiento de la cinta, el sensor genera dos señales desfasadas 180º y que
se obtienen por las salidas OUT1 y OUT2. Analizando si la señal de OUT1 está adelantada respecto a OUT2 o
viceversa, se determina el sentido del desplazamiento. Igualmente si se mide la duración de los pulsos o su
frecuencia, también se puede determinar la velocidad. La idea puede ser aplicada, entre otras, al encoder anterior.
Sensor 1
X
S-
XX Sensor 2
Figura AN3-7. Conocer la velocidad y
SE
M Izquierda Derecha
sentido de movimiento mediante el
CINTA sensor de reflexión MSE-S110.2
AN3-6
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
el robot se sale de la línea, bien por la izquierda o bien por la derecha, con objeto de hacer las correcciones
necesarias en la dirección del mismo. Se emplea el sensor MSE-S110.2 con dos dispositivos CNY70.
Analizando las señales de salida OUT1 y OUT2 se determina el desvío que se ha producido. Si ambas
señales son de nivel “1”, el robot está en la trayectoria correcta, sobre la línea negra del ejemplo. Si OUT1 está a
“1” y OUT2 a “0”, significa que el robot se ha desviado por la izquierda, en caso contrario el desvío se ha
producido por la derecha.
Desvío a Trayectoria
la dcha.
Basado en los ultrasonidos, el sensor es capaz de detectar cualquier movimiento o obstáculo dentro de su
radio de acción. Ver la figura AN3-9. Una cápsula ultrasónica emite una señal con una frecuencia en torno a los
40KHz. Cuando la señal rebota sobre un objeto, es captada por otra cápsula receptora. Tras amplificar y
acondicionar la señal recibida, se genera un impulso lógico de salida por la conexión OUT (3) de la borna J1.
Dicho pulso es activo por flanco ascendente y tiene una duración aproximada de 0.5 “.
Mediante el jumper JP1 el sensor puede actuar de forma autónoma o de forma controlada. Cuando JP1
está cerrado, el circuito queda activado permanentemente y se emite señal de forma constante. En este caso la
entrada CONTROL (4) debe estar desconectada. Si se abre el jumper JP1, el funcionamiento del circuito se
controla mediante la entrada CONTROL (4) de la borna J1. Efectivamente, cuando esta entrada se pone a nivel
“1” el circuito se activa en modo normal de funcionamiento. Si la entrada CONTROL se pone a nivel “0” el circuito
deja de emitir señal ultrasónica con lo que únicamente se captan o reciben ruidos, interferencias, armónicos, etc..,
u otras fuentes ultrasónicas. El radio de acción queda por tanto prácticamente inexistente y reducido al mínimo. En
cualquiera de los casos la sensibilidad del sensor se ajusta mediante el potenciómetro P1.
El circuito dispone de orificios que permiten una flexible instalación y sujeción del mismo sobre cualquier
tipo de estructura.
AN3-7
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Características técnicas
Conexionado
Se realiza mediante una borna de 4 contactos con paso 2.54, tal y como se muestra en la figura AN3-10.
Ajustes
El ajuste del sensor ultrasónico de movimiento MSE-S120 permite regular el radio de acción necesario
para disparar la señal de salida. Se realiza mediante el potenciómetro ajustable P1.
Puede ser necesario mover ligeramente las cápsulas con objeto de concentrar o dispersar el haz
ultrasónico de la señal emitida/recibida.
Se recomienda que, tras conectar la alimentación, se espere un mínimo de 1000mS antes de procesar la
señal OUT de salida. Ello es debido a que el circuito necesita de ese tiempo para su propia estabilización y
durante el cual se pueden generar falsas señales de disparo.
AN3-8
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Aplicaciones
El sensor ultrasónico de movimiento MSE-S120 es capaz de generar una señal lógica cada vez que se
detecte un objeto o movimiento dentro de su radio de acción. Las aplicaciones son numerosas:
• Automatismos digitales en los que se procesan señales que provienen de diferentes sensores o
transductores, proximidad de objetos, movimiento de los mismos, etc.
• Microbótica, en donde es necesario que se actúe en función del entorno que rodea al robot.
Se trata de un dispositivo sensor de luz visible basado en el foto transistor BPW40. El circuito, mostrado
en la figura AN3-11, se alimenta con una tensión de +5Vcc. La variación de luz ambiente detectada por el foto
transistor es acondicionada y amplificada para proporcionar a la salida una tensión variable entre 0,1 Vcc y 5Vcc
en función de dicha variación.
La tensión de salida se obtiene por la salida OUT (conexión 3 de la borna) y puede ser tratada de forma
analógica o digital en los posteriores procesos de automatización y control.
El dispositivo dispone de un orificio que permite una flexible instalación y sujeción del mismo sobre
cualquier tipo de estructura.
Características técnicas
Conexionado
Se realiza mediante una borna de 3 contactos con paso 2.54, tal y como se muestra en la figura AN3-12.
AN3-9
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Ajustes
En algunas aplicaciones también puede resultar interesante rodear al sensor mediante algún tipo de
cilindro opaco dejando libre sólo el extremo. De esta forma se evita captar luz ambiente y sólo se capta la luz que
incida directamente sobre dicho sensor.
El circuito se alimenta con +5Vcc. Con ayuda de un voltímetro se mide la tensión de salida entre GND y
OUT (conexiones 2 y 3 de la borna). El usuario puede realizar unas medidas de referencia anotando diferentes
tensiones de salida en función de distintos umbrales de luz.
Teniendo en cuenta que, los diferentes colores absorben la luz en mayor o menor cantidad, es posible
analizar cómo varían los umbrales de luz en función del color de un objeto. Así, se pueden tomar diferentes
referencias o muestras de la tensión de salida, para objetos de distintos colores.
Aplicaciones
El sensor de luz MSE-S130 es capaz de proporcionar una tensión variable en función de la luz que incide
sobre él. Se puede emplear en todas aquellas aplicaciones en las que sea necesario hacer un tratamiento de la
luz visible, como pueden ser aplicaciones de carácter didáctico, entretenimiento, control de procesos, robótica, etc.
El procesamiento de la señal de salida se puede hacer en forma digital o analógico. En este último caso
será necesario el empleo del convertidor ADC correspondiente, pero a cambio es posible realizar un análisis de la
cantidad de luz, color, etc.
El circuito MSE-S135 es un detector IR de obstáculos que detecta la presencia de un objeto sin contacto
físico con el mismo. Se muestra en la figura AN3-13. Consiste en un emisor/detector de luz infrarroja modulada.
Esta característica lo hace prácticamente inmune a interferencias provocadas por otras fuentes de luz.
Un diodo emisor emite una haz infrarrojo modulado a una frecuencia de 7.7 KHz. El rebote de dicho haz
sobre un objeto, es captado por un foto transistor detector que acondiciona la señal recibida, compara si
corresponde con la señal emitida y, en caso afirmativo, genera una señal de salida activa por flanco descendente.
Si no se detecta ningún rebote de la señal emitida, la salida se mantiene en reposo, a nivel lógico “1”.
El dispositivo dispone de un orificio que permite una flexible instalación y sujeción del mismo sobre
cualquier tipo de estructura.
AN3-10
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Características técnicas
Conexionado
Se realiza mediante una borna de 3 contactos con paso 2.54, tal y como se muestra en la figura AN3-14.
Ajustes
En primer lugar se alimenta el circuito con +5Vcc. Con ayuda de un voltímetro se mide la señal de salida
entre GND y OUT (conexiones 2 y 3 de la borna). Cuando no se detecta ningún obstáculo (reposo), la tensión
medida en OUT debe ser de unos 5Vcc (nivel lógico “1”). Al colocar un objeto frente al circuito, a una distancia de
unos 70mm o menos (depende del color del objeto), se debe medir una tensión de 0Vcc (nivel lógico “0”).
AN3-11
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Aplicaciones
El dispositivo MSE-S135 es capaz de detectar objetos a distancia, sin necesidad de que haya contacto
físico con los mismos. Entre las numerosas aplicaciones posibles cabe citar las siguientes:
Consiste en 4 canales amplificadores totalmente independientes entre si. Cada canal es capaz de soportar
corrientes de salida de 1 A con picos de hasta 2 A. Poseen una alta inmunidad al ruido, protección de sobre
temperaturas y tensión de alimentación de las cargas separada de la tensión de alimentación de la lógica. La
señal de entrada de cada canal es compatible con señales TTL. Las señales de salida disponen de los
correspondientes diodos de absorción para las corrientes inversas que generan las cargas inductivas. La figura
AN3-16 muestra el esquema simplificado del driver MSE-A100, junto con una descripción de sus señales.
SEÑAL DESCRIPCION
E1-E4 Señales de entrada, una por cada canal. Estas
señales son compatibles con niveles lógicos TTL.
S1-S4 Señales amplificadas de salida, una por cada canal.
Estas se conectan a las cargas que se desean
controlar. Cada salida puede soportar cargas de
hasta 1 A.
+5Vcc Entrada de +5V para alimentación de la lógica
interna.
+VM Entrada de tensión para la alimentación de las
cargas cuyo valor máximo es de 35V
GND Tierra de alimentación.
AN3-12
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Características técnicas
Conexionado
Se realiza mediante una serie bornas que permiten una fácil conexión. Se presenta en la figura AN3-17.
El driver MSE-A100 puede controlar diferentes tipos de cargas. A continuación se muestra, a modo de
ejemplos, la conexión de MSE-A100 con diferentes tipos de periféricos. Así, la figura AN3-18, muestra la conexión
del driver con cargas luminosas de tipo led.
La resistencia R de absorción asociada a cada led se debe calcular en función de la tensión +VM
empleada según la siguiente fórmula: R = (+VM – VLED) / ILED
La figura AN3-19 muestra la conexión del driver MSE-A100 con dos motores CC. Cada motor se conecta
con dos de las salidas y se gobierna desde las correspondientes dos entradas. Tal y como se muestra en la tabla,
es posible controlar la conexión/desconexión del motor así como el sentido de giro del mismo. También es posible
regular la velocidad de cualquiera de los dos motores. Basta con aplicar por la entrada apropiada una señal PWM.
AN3-13
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
E1 E2 MOTOR 1
0 0 OFF
0 1 Giro horario
1 0 Giro antihorario
1 1 OFF
La figura AN3-20 muestra la forma de conectar, a modo de ejemplo, dos relés y dos motores CC. En este
caso tanto los relés como los motores se conectan a cada una de las 4 salidas disponibles, por lo que únicamente
pueden tener el estado ON/OFF. En el caso de los motores sólo pueden tener un único sentido de giro, que será
horario o antihorario en función de cómo se realicen las conexiones de los mismos.
Finalmente, la figura AN3-21 presenta la conexión del driver MSE-A100 con un motor paso a paso (P-P)
de dos bobinas.
Según las combinaciones binarios que se apliquen por las entradas E1-E3, las bobinas se excitan con una
determinada polaridad y produciendo un desplazamiento de rotación en el eje del motor. El número de grados de
AN3-14
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
esta rotación o “paso” dependerá del motor empleado. Las siguientes tablas muestran las secuencias binarias que
han de aplicarse para producir un giro en uno u otro sentido.
SENTIDO SENTIDO
HORARIO ANTI HORARIO
PASO E4 E3 E2 E1 PASO E4 E3 E2 E1
1 1 0 0 1 1 1 0 1 0
2 0 1 0 1 2 0 1 1 0
3 0 1 1 0 3 0 1 0 1
4 1 0 1 0 4 1 0 0 1
Ajustes
Aplicaciones
MSE-A100 es un driver de 4 canales de propósito general capaz de actuar sobre diferentes tipos de
cargas. Su empleo está dirigido a cualquier aplicación en la que sea necesario amplificar señales lógicas de
control para ser aplicadas a diferentes tipos de actuadores: diferentes tipos motores, relés, indicadores luminosos,
sonoros, etc.
Se describen dos cámaras de vídeo con salida por R.F. y que se muestran en la figura AN3-22:
MSE-V10X Cámara en b/n con salida por radio frecuencia. Está disponible en dos versiones. MSE-V100 tiene
su salida sintonizada en el canal 12 de VHF de TV, a 224 MHz. MSE-V102 tiene la salida
sintonizada en el canal 22 de UHF de TV, a 479 MHz.
MSE-V11X Cámara en color con salida por radio frecuencia. Está disponible en dos versiones. MSE-V110 tiene
su salida sintonizada en el canal 12 de VHF de TV, a 224 MHz. MSE-V112 tiene la salida
sintonizada en el canal 22 de UHF de TV, a 479 MHz.
Cualquiera de los dos modelos se presentan sobre una placa impresa de reducidas dimensiones (62 x 30
mm) y disponen de dos modos de funcionamiento que se establece mediante el jumper JP1. Cuando está cerrado
el circuito se mantiene en constante funcionamiento. La entrada CONTROL (conexión 3 de la borna) debe estar
sin conexión. Si el jumper se abre, el funcionamiento ON/OFF de la cámara se controla mediante la entrada de
CONTROL. Un nivel “1” por esta entrada la activa, un “0” la desactiva, reduciendo así el consumo de la aplicación
final.
Los moduladores de R.F. están basados en los módulos AUREL MAV-VHF224 (canal 12) y MAV-UHF479
(canal 22). Estos vienen insertados en la placa impresa a través del correspondiente zócalo, y son fácilmente
intercambiables. Estos módulos se pueden adquirir por separado y se seleccionan según el canal libre disponible
en la zona.
IMPORTANTE: Las emisiones realizadas se hacen en las bandas comerciales de VHF y UHF. Ingeniería de
Microsistemas Programados S.L. no se hace responsable de la utilización que de estos dispositivos haga
el usuario ni de las interferencias que pudieran provocarse en otros receptores de TV.
Un trozo de cable de unos 15 cm soldado en el terminal de antena (ANT.) de la placa impresa, mejora
notablemente el alcance y calidad de la imagen emitida.
AN3-15
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Características técnicas
MSE-V100/MSE-V102 b/n
MSE-V110/MSE-V112 color
Conexionado
Se realiza mediante una borna de 3 contactos con paso 2.54, tal y como se muestra en la figura AN3-23.
AN3-16
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Ajustes
Ninguno de los modelos de cámaras propuestos necesita de ajuste especial alguno. Como mucho se
podrá ajustar el enfoque de la cámara girando de izda. a dcha. o viceversa el objetivo de la misma. Por las bornas
1 y 2 se conecta la tensión de alimentación de +5Vcc. Si el jumper JP1 está cerrado el circuito queda
permanentemente activado. En estos casos se debe desconectar la entrada CONTROL (conexión 3 de la borna).
Aplicaciones
Este tipo de cámaras suponen una solución sencilla y de bajo coste para aplicaciones tales como
vigilancia, alarmas, visión artificial, microbótica, etc.
El módulo SRF04 consiste en un medidor ultrasónico de distancias de bajo costo desarrollado por la firma
DEVANTECH Ltd. Emplea un microcontrolador PIC12C508 que realiza las funciones de control y dos cápsulas
ultrasónicas de 40KHz. Se muestra en la figura AN3-24.
El rango de medidas es desde unos 3 cm hasta unos 3m aproximadamente. Medidas por debajo de los 3
cm provocan una serie de errores derivados del acoplamiento entre las propias cápsulas emisor-receptor del
módulo. En este caso es muy difícil distinguir si la señal recibida es consecuencia de dicho acoplamiento o del eco
recibido. Por otra parte es posible medir distancias superiores a los 3 m, pero nos podemos encontrar con
problemas derivados de la dispersión del haz ultrasónico o de múltiples rebotes que pudieran generarse.
Tal y como se muestra en el diagrama de tiempos de la figura AN3-25, el modo de empleo es muy
sencillo. Externamente se aplica, por parte del usuario, un pulso de disparo o trigger. Se inicia la secuencia. El
módulo transmite un tren de pulsos o “burst” de 8 ciclos a 40KHz. En ese momento la señal de salida ECO pasa a
nivel “1”. Cuando la cápsula receptora recibe la señal transmitida como consecuencia de haber rebotado en un
objeto (eco), esta salida pasa de nuevo a nivel “0”. El usuario debe medir la duración del pulso de esta señal, es
decir, el tiempo en que la señal eco se mantiene a “1”.
Con objeto de que el módulo se estabilice, se debe dejar un lapsus de tiempo de unos 10mS mínimo entre
el momento en que la señal de eco pasa a “0” y un nuevo pulso de disparo que inicie el siguiente ciclo o medida.
AN3-17
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
La duración del pulso eco de salida varía entre 100µS y 18mS, en función de la distancia entre las
cápsulas del módulo y el objeto. La velocidad del sonido es de 29.15 µS/cm que, como realiza un recorrido de ida
y vuelta, queda establecida en 58.30µS/cm. Así pues el rango mínimo que se puede medir es de 1.7 cm
(100µS/58) y el máximo de 310 cm (18mS/58).
Características técnicas
Conexionado
El módulo emplea tan sólo 4 conexiones que se pueden realizar soldando directamente 4 cables o bien
mediante un conector de 5 vías. Estas se muestran en la figura AN3-26.
AN3-18
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Ajustes
El módulo SRF04 viene perfectamente ajustado y calibrado de fábrica, por lo que no necesita de ningún
tipo de ajuste. Su funcionamiento se puede verificar aplicando una serie de pulsos por la entrada de disparo. Con
ayuda de un osciloscopio se puede medir la anchura de la señal eco de salida. Esta anchura, representada en µS
y dividida entre 58.30 nos permite calcular la distancia del objeto.
Aplicaciones
El módulo SRF04 es capaz de generar una señal lógica de salida cuya duración determina la distancia de
un objeto. Las aplicaciones son numerosas, citamos unas cuantas a modos de ejemplo:
• Microbótica en donde es necesario que se actúe en función de la distancia que separa al robot de
cualquier otro objeto.
El módulo SRF08 consiste en un medidor ultrasónico de distancias de bajo costo desarrollado por la firma
DEVANTECH Ltd. y es una versión mejorada del módulo SRF04. Emplea un microcontrolador PIC16F872 que
realiza todas las funciones de control e interface, dos capsulas ultrasónicas de 40KHz y una célula LDR capaz de
proporcionar una medida de luz ambiente. Se muestra en la figura AN3-27.
Las principales diferencias del SRF08 frente al SRF04 son las siguientes:
AN3-19
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
La comunicación con el módulo SRF08 se realiza según el protocolo I2C, disponible en la mayor parte de
los microcontroladores actuales aunque también puede ser implementado por software. La comunicación se
realiza de la misma manera que con cualquier otro dispositivos I2C. La dirección del módulo es, por defecto, la
0xE0, aunque existe la posibilidad de que el usuario cambie esta dirección por cualquiera de las 16 siguientes:
0xE0, 0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE, 0xF0, 0xF2, 0xF4, 0xF6, 0xF8, 0xFA, 0xFC o 0xFE. Esto
permite controlar hasta 16 módulos SRF08 con un mismo bus (2 líneas).
Además de estas 16 direcciones, todos los módulos responden a la dirección 0x00 de llamada general.
Esto permite escribir un determinado comando en esa dirección que inicie una nueva medida en todos los módulos
SRF08 disponibles en el bus, al mismo tiempo. Posteriormente, la medida de cada módulo se lee de forma
individual, indicando su dirección particular.
Características técnicas
Conexionado
El módulo emplea tan sólo 4 conexiones que se pueden realizar soldando directamente 4 cables o bien
mediante un conector de 5 vías. Estas se muestran en la figura AN3-28.
Ajustes
El módulo SRF08 viene perfectamente ajustado y calibrado de fábrica, por lo que no necesita de ningún
tipo de ajuste externo. Los únicos ajustes son, como ya se ha explicado, el ajuste del rango, de calibración y el
cambio de la dirección I2C.
AN3-20
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Aplicaciones
El módulo SRF08 es capaz de proporcionar información acerca de la distancia que hay entre el propio
módulo y un objeto. También es capaz de medir la luz ambiente. Las aplicaciones son numerosas, citamos unas
cuantas a modos de ejemplo:
• Microbótica en donde es necesario que se actúe en función de la distancia que separa al robot de
cualquier otro objeto
Se trata de un módulo diseñado por DEVANTECH Ltd. capaz de medir su posición en grados respecto al
norte magnético. Es decir, consiste en un compás o brújula digital. Emplea los sensores KMZ51 de Philips
sensibles al campo magnético de la tierra. Ambos sensores están montados en ángulo recto entre sí sobre la
placa impresa y su salida se emplea para calcular la dirección en que se encuentran. Ver la figura AN3-29.
El dispositivo se alimenta con una única tensión de +5Vcc y proporciona dos salidas diferentes que indican
su posición. Por una parte dispone de una salida PWM cuya anchura determina dicha posición y, por otra, un
interface I2C para comunicación de datos con un microcontrolador master.
La salida PWM
La salida PWM es la mas sencilla de emplear. Proporciona un pulso modulado en anchura que representa
el ángulo de la posición del módulo respecto al norte magnético. La anchura de este pulso varía desde 1mS (0º)
hasta 36.99 mS (359.9º). Tiene por tanto una resolución de 100µS/º con un offset de +1mS. Cada vez que finaliza
una medida, esta señal pasa a nivel “0” durante unos 65mS antes de iniciarse una nueva. El ciclo total tiene una
duración mínima de 66mS (para una posición de 0º) y máxima de 102 mS (para una posición de 359.9º). El pulso
lo genera un Timer interno de 16 bits que evoluciona cada 1µS, pero no es recomendable realizar medidas con
intervalos inferiores a los 10µS (0.1º). La figura AN3-30 muestra un diagrama de tiempos en el que se han
representado 4 medidas o ciclos diferentes.
AN3-21
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
El Interface I2C
El interface I2C permite conectar al módulo en un bus I2C junto con otros dispositivos y ser así gobernado
desde un microcontrolador master, encargado de realizar las tareas oportunas. El protocolo empleado es el mismo
que el que se emplea con cualquier otro dispositivo I2C.
Características técnicas
Conexionado
Todas las señales eléctricas, así como las conexiones del módulo, se representan en la figura AN3-31. A
continuación se explican cada una de esas señales.
AN3-22
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
NOTA: Las señales SCL y SDA necesitan de sendas resistencias pull-up conectadas a +5Vcc. En caso de
emplearse la salida PWM, se recomienda colocar unas resistencias de 47K. En caso de emplearse el
protocolo I2C para realizar las medidas, se recomiendan que estas resistencias sean de un valor entre
1.2K y 1.8K. En este caso es muy probable que las resistencias estén ya colocadas en el propio bus
I2C, por lo que no habrá que poner otras.
Ajustes
Antes de proceder al calibrado o ajuste del móduloCMPS03 debemos asegurarnos de colocarlo horizontal
y paralelo a la superficie de la tierra, con los componentes hacia arriba y alejado de cualquier objeto metálico
especialmente si es magnético (destornilladores, tijeras, etc.). Se debe orientar hacia el norte tal y como se
muestra en la figura AN3-32.
La calibración se puede hacer de dos formas: por el método hardware, empleando el pin de calibración o
bien el método software, empleando el bus I2C. A continuación se explica la forma de proceder para ambos
métodos.
AN3-23
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
Método hardware
Es probablemente el método mas sencillo. Se emplea la entrada de Calibración del pin 6. Este entrada
dispone de su propia resistencia pull-up que, en estado de reposo, la mantiene a nivel “1”. Para realizar el
calibrado sólo es necesario aplicar por esta entrada un impulso negativo (transición alto-bajo-alto) por cada uno de
los 4 puntos cardinales. Para ello basta con un simple pulsador. Un extremo de este se conecta con la entrada del
pin 6 y el otro con GND. Cuando el pulsador está sin accionar, la entrada se mantiene a “1” (por el pull-up). Al
pulsarse se aplica “0” y al soltarlo, la entrada vuelve a “1”.
Se recomienda el empleo de una brújula que nos ayude a localizar los cuatro puntos cardinales con la
mayor precisión posible y, poder así, orientar el módulo debidamente durante el proceso de calibración. Este
proceso se resume a seguidamente:
1.- Colocar el módulo paralelo, horizontal y orientado al NORTE. Activar / desactivar el pulsador.
2.- Colocar el módulo paralelo, horizontal y orientado al ESTE. Activar / desactivar el pulsador.
3.- Colocar el módulo paralelo, horizontal y orientado al SUR. Activar / desactivar el pulsador.
4.- Colocar el módulo paralelo, horizontal y orientado al OESTE. Activar / desactivar el pulsador.
Método software
Este método emplea el propio interface I2C y su correspondiente protocolo para proceder al calibrado del
módulo. Efectivamente, basta con escribir el valor 0xFF sobre el registro interno 0x0F en cada uno de los cuatro
puntos cardinales. También se recomienda el empleo de una brújula que permita orientar el módulo en cada uno
de esos puntos.
1.- Colocar el módulo paralelo, horizontal y orientado al NORTE. Escribir 0xFF en la posición 0x0F
2.- Colocar el módulo paralelo, horizontal y orientado al ESTE. Escribir 0xFF en la posición 0x0F
3.- Colocar el módulo paralelo, horizontal y orientado al SUR. Escribir 0xFF en la posición 0x0F
4.- Colocar el módulo paralelo, horizontal y orientado al OESTE. Escribir 0xFF en la posición 0x0F
Aplicaciones
El comportamiento del módulo CMPS03 es similar o equivalente al de un compás o brújula digital. Las
aplicaciones pueden ser todas aquellas en las que sea necesario llevar a cabo una acción, en función de la
posición u orientación de un objeto.
Por ejemplo, un robot móvil puede desplazarse siguiendo una trayectoria previamente establecida,
localizar un objeto en una determinada posición, orientarse de forma automática, etc.
Durante bastante tiempo todos los sistemas dedicados a la síntesis de voz han sido sistemas complejos y
de elevado coste que impedían su empleo en aplicaciones populares y de consumo como puede ser la
microbótica. El empleo de robots móviles dotados de sistemas de voz, puede tener un gran interés general.
La aparición del dispositivo WTS701 de la firma Winbomd ha cambiado radicalmente este panorama.
Consiste en un único circuito integrado que incluye un procesador de textos a voz completo. Aunque la versión
actual tiene un marcado acento de inglés norte americano, el fabricante asegura futuras versiones en las que el
dispositivo sea capaz de reproducir diferentes tonos y acentos que se adapten a diferentes lenguajes.
La firma Devantech Ltd. ha diseñado el módulo de síntesis de voz SP03, objeto de la presente
documentación. Este módulo integra el dispositivo WTS701, un amplificador de audio, regulador de 3 V, un
AN3-24
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
microcontrolador PIC que facilita la comunicación con la aplicación final del usuario y un altavoz de 40 mm. El
interface con el usuario se realiza mediante un canal serie RS232 estándar, un bus I2C y un puerto paralelo que
permite reproducir en el altavoz hasta 30 frases previamente definidas y grabadas en el módulo.
Está disponible también un software para PC, el SP03.EXE, que permite la edición y el volcado sobre el
módulo de hasta 30 frases predefinidas.
Características generales
El módulo SP03 dispone de dos conectores, PL1 y PL2, para la conexión con la aplicación final del
usuario. La tensión de alimentación de +5Vcc se puede aplicar por cualquiera de ellos. La figura AN3-34 muestra
la distribución de las señales disponibles en ambos conectores, cuya descripción se resumen en las siguientes
tablas.
AN3-25
Microbot “Home Boe-Bot”
Anexo 3: Sensores y actuadores para microbots;
Módulos Conectar & Funcionar
AN3-26
Microbot “Home Boe-Bot”
Anexo 4: Relación de materiales del kit Home Boe-Bot
Anexo 4
Relación de materiales del kit
Home Boe-Bot
AN4-1
Microbot “Home Boe-Bot”
Anexo 4: Relación de materiales del kit Home Boe-Bot
AN4-2
Microbot “Home Boe-Bot”
Anexo 4: Relación de materiales del kit Home Boe-Bot
Nota: Ingeniería de Microsistemas S.L se reserva el derecho de cambiar y/o modificar cualquiera de los
componentes anteriores, por otros similares o equivalentes.
AN4-3
Microbot “Home Boe-Bot”
Anexo 4: Relación de materiales del kit Home Boe-Bot
This documentation is copyright 2004 by Parallax, Inc. By downloading or obtaining a printed copy of this
documentation or software you agree that it is to be used exclusively with Parallax products. Any other uses are not
permitted and may represent a violation of Parallax copyrights, legally punishable according to Federal copyright or
intellectual property laws. Any duplication of this documentation for commercial uses is expressly prohibited by
Parallax, Inc. Duplication for educational use is permitted, when used solely in conjunction with Parallax products,
and the user may recover from the student only the cost of duplication.
BASIC Stamp, Stamps in Class, Board of Education and SumoBot are registered trademarks of Parallax, Inc.
HomeWork Board, Boe-Bot and Toddler are trademarks of Parallax Inc. If you decide to use the words BASIC
Stamp, Stamps in Class, Board of Education, HomeWork Board, Boe-Bot or Toddler on your web page or in
printed material, you must state that "BASIC Stamp is a registered trademark of Parallax Inc.”, “Stamps in Class is
a registered trademark of Parallax Inc.”, “Board of Education is a registered trademark of Parallax Inc.”, “SumoBot
is a registered trademark of Parallax Inc.” “HomeWork Board is a trademark of Parallax Inc.”, “Boe-Bot is a
trademark of Parallax Inc.”, or “Toddler is a trademark of Parallax Inc.” respectively, upon the first appearance of
the trademark name. Other brand and product names are trademarks or registered trademarks of their respective
holders.
DISCLAIMER OF LIABILITY
Parallax, Inc. is not responsible for special, incidental, or consequential damages resulting from any breach of
warranty, or under any legal theory, including lost profits, downtime, goodwill, damage to or replacement of
equipment or property, and any costs or recovering, reprogramming, or reproducing any data stored in or used with
Parallax products. Parallax is also not responsible for any personal damage, including that to life and health,
resulting from use of any of our products. You take full responsibility for your BASIC Stamp application, no matter
how life-threatening it may be.
AN4-4