Robótica con el Boe-Bot

Guía para el Estudiante v2.2

VERSION EN CASTELLANO 1.0

GARANTÍA
Parallax garantiza sus productos contra defectos en sus materiales o debidos a la fabricación por un período de 90 días. Si descubres un defecto, Parallax según corresponda, reparará, reemplazará o regresará el valor de la compra. Simplemente pide un número de autorización de regreso de mercancía (Return Merchandise Authorization, “RMA”), escribe el número en el exterior de la caja y envíala a Parallax. Por favor incluye tu nombre, número telefónico, dirección, y una descripción del problema. Nosotros te regresaremos tu producto o el reemplazo, usando el mismo método de correo que usaste para enviar el producto a Parallax.

GARANTÍA DE 14 DÍAS DE REGRESO DE DINERO
Si dentro de los 14 días en que recibiste tu producto, encuentras que no es conveniente para tus necesidades, puedes regresarlo y recibir un reembolso. Parallax regresará el precio de compra del producto, excluyendo los costos de manipulación y envío po correo. Esto no aplica si el producto ha sido alterado o dañado. Refiérete a la sección anterior (Garantía) para instrucciones de cómo regresar el producto a Parallax.

DERECHOS DE COPIA Y MARCAS REGISTRADAS
Esta documentación (la versión en inglés) tiene derechos reservados de autor Copyright 2003-2004 por Parallax, Inc. Al descargar u obtener una copia impresa de esta documentación o software aceptas su uso exclusivo con productos Parallax. Algún otro uso no está permitido y puede representar una violación de los derechos de copia de Parallax, punible por la ley de acuerdo con las leyes Federales de copyright o de propiedad intelectual. Alguna duplicación de esta documentación para usos comerciales esta explícitamente prohibido por Parallax Inc. Duplicación para uso educacional es permitido, sujeto a las siguientes Condiciones de Duplicación: Parallax Inc., concede al usuario derecho condicional para descargar, duplicar, y distribuir este texto sin el consentimiento de Parallax. Este derecho está basado en las siguientes condiciones: el texto, o cualquier porción del mismo, no podrá ser duplicado para uso comercial; podrá ser duplicado únicamente para uso educacional y solamente en conjunción con productos Parallax, y el usuario podrá cargar al estudiante solo el costo de la duplicación. Este texto está disponible en formato impreso por medio de Parallax Inc. Porque imprimimos este texto en volumen, el precio al consumidor es usualmente menor que el típico precio al detal por duplicación. BASIC Stamp (“Estampilla BASIC”), Stamps in Class (“Estampilla en el Aula”), Board of Education (“Plaqueta de de Educación”), SumoBot, y SX-Key (“Llave-SX”) son marcas registradas de Parallax Inc. Si decides usar marcas registradas de Parallax Inc. en su página web o en material impreso, debes declarar que “(marca registrada) es una marca registrada de Parallax Inc.” inmediatamente al aparecer dicha marca registrada por primera vez en cada documento impreso o página web. Nuestra marca y nombre de productos son marcas registradas de sus dueños particulares.

ISBN TBD

DESVINCULACIÓN DE RESPONSABILIDAD
Parallax, Inc. no es responsable de daños por consecuencias, incidentes o daños especiales que resulten de cualquier violación de la garantía, bajo cualquier teoría legal, incluyendo pérdida de beneficio, tiempo, daño o reemplazo de equipo o propiedad y cualquier costo, recuperando, reprogramando o reproduciendo cualquier dato guardado o usado dentro de los productos Parallax. Parallax tampoco es responsable de cualquier daño personal, incluyendo vida o muerte, resultado del uso de cualquiera de nuestros productos.

ACCESO EN INTERNET Y LISTAS DE DISCUSION
La página web de Parallax Inc. (www.parallax.com) contiene numerosos descargues, productos, aplicaciones para el consumidor, y un sistema de encargo en línea para los componentes usados en este texto. También mantenemos diversas listas de discusión por correo electrónico para personas interesadas en el uso de productos Parallax. Estas listas son accesibles a través de www.parallax.com en el menú Support → Discussion Groups. Estas son las listas que operamos actualmente: BASIC Stamps (en inglés) – Esta lista es utilizada ampliamente por ingenieros, aficionados y estudiantes quienes comparten sus proyectos con el BASIC Stamp y hacen preguntas. Stamps in Class (en inglés) – Creada para educadores y estudiantes, aquí los suscritos discuten el uso de los textos “Stamps en el Aula” en sus cursos particulares. Esta lista provee una oportunidad tanto para estudiantes como educadores de hacer preguntas y obtener respuestas. Parallax Educators (en inglés) – Exclusivamente para educadores y aquellos quienes contribuyen al desarrollo de “Stamps en el Aula”. Parallax creó este grupo para obtener feedback en cuanto a los textos y para proveer un forum para que educadores desarrollen y obtengan Guías para la Enseñanza. Parallax Translators (en inglés) – El propósito de esta lista es establecer un vínculo entre Parallax y aquellos quienes traducen nuestra documentación a idiomas distintos del inglés. Parallax facilita a los traductores documentos editables de Word y realiza esfuerzos para coordinar las traducciones con las publicaciones de la empresa. Toddler Robot (en inglés) – Un cliente creó esta lista de discusión para discutir las aplicaciones y la programación del robot Toddler de Parallax. SX Tech (en inglés) – Discusión sobre la programación del microcontrolador SX con las herramientas de lenguaje ensamblador de Parallax y terceras partes para BASIC y C. Javelin Stamp (en inglés) – Discusión sobre la aplicación y diseño con Javelin Stamp, un módulo de Parallax programado usando un subconjunto del lenguaje Java® de Sun Microsystems.

ERRATA (TEXTO EN INGLÉS)
A pesar de los esfuerzos realizados para asegurar la exactitud de nuestros textos, es posible encontrar errores en ellos. Si encuentras algún error puede notificarlo a través de un correo electrónico, el cual agradecemos que envíe a nuestra dirección editor@parallax.com. Realizamos un constante esfuerzo para mejorar nuestro material y documentación educativa, a través de la continua revisión de nuestros textos. Ocasionalmente, se publica en nuestra página web www.parallax.com una errata que contiene una lista con los errores y las correcciones en un texto determinado. Para cada producto, el archivo de errata puede encontrarse en la parte de descargas gratis de la página del producto.

NOTAS DEL TRADUCTOR (VERSION EN CASTELLANO)
Gracias por descargar la versión en Castellano de “Robotics with the Boe-Bot” por Andy Lindsay. Este documento es una traducción literal de este libro. Como toda traducción literal de un idioma a otro, muchos aspectos quedan a la interpretación del traductor. En este caso, aunque el traductor es familiar con la robótica, desconoce algunos de los términos usados en castellano para describir ciertos componentes electrónicos. Por ello, en ocasiones se ha escogido la palabra que mejor corresponda de acuerdo al contexto. Adicionalmente, para minimizar los problemas acarreados por el cambio de idioma, se ha tomado las siguientes medidas: Conservación de ciertos términos en inglés: Ciertos términos como por ejemplo Basic Stamp o HomeWork Board se han dejado escritos en inglés. A pesar de poder ser traducidos sin ambigüedades (Estampilla Basic y Plaqueta para Tareas respectivamente), consideramos conveniente que si los lectores de esta traducción necesitan información adicional acerca de los productos, sería mas fácil identificarlos por su nombre original. Glosario: Un pequeño Glosario ha sido incluído en este texto donde explicamos expresiones tanto en castellano como en inglés que puedan ser ambiguas. Programas: Todos los programas en este texto están siendo traducidos al castellano. Sin embargo, para esta primera versión hemos decidido dejar los programas en inglés ya que el código para dichos programas se encuentra disponible en el sitio web de Parallax. Una vez que terminemos de traducir todo el código, los programas enlistados en esta traducción serán actualizados para coincidir con sus respectivas versiones en castellano. Listas de Discusión (en español) – Gracias al esfuerzo de ciertos miembros del equipo Parallax, la compañía ha abierto sus puertas hacia Latinoamérica a través de la página http://www.microsparallax.com.ar/ donde encontrarás varias listas de discusiones en español donde podrás hacer las preguntas que desees. Finalmente, como traductor de este texto, te pido que me contactes con cualquier sugerencia, pregunta, comentario o insulto que puedas tener acerca de este documento. La dirección de correo es: robotics@csu.fullerton.edu

ERRATA (EN CASTELLANO)
Sugerencias y comentarios acerca de esta traducción serán compilados en una lista de Errata (en Español) la cual será publicada conjuntamente con este documento para que todos nuestros lectores estén al tanto de las últimas modificaciones a este texto.

· Página i

Tabla de Contenidos
Prefacio........................................................................................................................5
Prólogo ...........................................................................................................................5 Audiencia ........................................................................................................................6 Soporte y Grupos de Discusión ......................................................................................6 El Curriculum Stamps In Class .......................................................................................7 Traducciones en Otros Idiomas ......................................................................................9 Contribuciones Especiales .............................................................................................9

Capítulo 1: El Cerebro de tu Boe-Bot .......................................................................1
Hardware y Software ......................................................................................................2 Actividad #1: Obteniendo el Software.............................................................................4 Actividad #2: Instalando el Software.............................................................................10 Actividad #3: Preparando el Hardware y Probando el Sistema....................................13 ActivIdad #4: Tu Primer Programa ...............................................................................23 Actividad #5: Buscando Respuestas ............................................................................30 Actividad #6: Introducción al Código ASCII ..................................................................33 Actividad #7: Cuando Hayas Terminado ......................................................................35 Resumen ......................................................................................................................37

Capítulo 2: Los Servomotores de Tu Boe-Bot.......................................................41
Introducción del Continuous Rotation Servo ................................................................41 Actividad #1: Cómo Registrar el Tiempo y Repetir Acciones .......................................42 Actividad #2: Registrando el Tiempo y Repitiendo Acciones con un Circuito ..............45 Actividad #3: Conectando los Servo Motores ...............................................................58 Actividad #4: Calibrando los Servos .............................................................................67 Actividad #5: Cómo Guardar Valores y Contar.............................................................71 Actividad #6: Probando los Servos ...............................................................................76 Resumen ......................................................................................................................87

Capítulo 3: Ensambla y Prueba tu Boe-Bot ...........................................................93
Actividad #1: Ensamblando tu Boe-Bot ........................................................................93 Actividad #2: Probando los Servos Nuevamente .......................................................104 Actividad #3: Circuito y Programa Indicador Start/Reset............................................107 Actividad #4: Probando el Control de Velocidad con el Debug Terminal ...................114 Resumen....................................................................................................................121

Capítulo 4: Navegación del Boe-Bot.....................................................................127
Actividad #1: Maniobras Básicas con el Boe-Bot .......................................................127 Actividad #2: Entonando las Maniobras Básicas ........................................................133 Actividad #3: Calculando Distancias...........................................................................137 Actividad #4: Maniobras – Aceleración Gradual.........................................................142 Actividad #5: Simplificando la Navegación con Subrutinas ........................................145

Página ii · Robótica con el Boe-Bot

Actividad #6: Tópico Avanzado – Construyendo Maniobras Complejas en EEPROM ....................................................................................................................................151 Resumen ....................................................................................................................163

Capítulo 5: Navegación Táctil con Bigotes ......................................................... 171
Navegación Táctil .......................................................................................................171 Actividad #1: Construyendo y Probando los Bigotes..................................................172 Actividad #2: Verificando los Bigotes en el Campo ....................................................180 Actividad #3: Navegación con Bigotes .......................................................................183 Actividad #4: Inteligencia Artificial y Decidiendo Cuándo Estás Atascado .................188 Resumen ....................................................................................................................194

Capítulo 6: Navegación Sensitiva a Luz con Fotoresistores............................. 199
Introduciendo el Fotoresistor ......................................................................................199 Actividad #1: Construyendo y Probando Circuitos de Fotoresistores ........................200 Actividad #2: Navegación Libre y Evasión de Objetos Tipo Sombra .........................206 Actividad #3: Un Boe-Bot Controlado por Sombras mas Responsivo........................209 Actividad #4: Obteniendo mas Información de tus Fotoresistores .............................211 Actividad #5: Boe-Bot Seguidor de Rayo de Luz de Linterna ....................................217 Actividad #6: Navegando Libremente Hacia la Luz ....................................................226 Resumen ....................................................................................................................234

Capítulo 7: Navegando con Luces Delanteras Infrarrojas................................. 243
Usando Luces Delanteras Infrarrojas para Ver la Vía ................................................243 Actividad #1: Construyendo y Probando los Pares IR................................................245 Actividad #2: Prueba de Campo para Detección de Objeto e Interferencia Infrarroja 250 Actividad #3: Ajustes del Rango de Detección Infrarroja ...........................................255 Actividad #4: Detección y Evasión de Objetos ...........................................................257 Actividad #5: Navegación IR con Alto Desempeño ....................................................260 Actividad #6: El Detector de Caída.............................................................................263 Resumen ....................................................................................................................271

Capítulo 8: Control de Robot con Detección de Distancia ................................ 279
Determinando la Distancia con el Mismo Circuito IR LED/Detector ...........................279 Actividad #1: Verificando el Barrido de Frecuencia ....................................................279 Actividad #2: Vehículo Boe-Bot Sombra ....................................................................287 Actividad #3: Siguiendo una Banda............................................................................296 Resumen ....................................................................................................................305

Apéndice A: Resolución de Problemas de Comunicación entre la PC y el BASIC Stamp ...................................................................................................................... 313 Apéndice B: Componentes y Características del BASIC Stamp y la Plaqueta de Soporte.................................................................................................................... 319

· Página iii

Apéndice C: Código de Colores de un Resistor .................................................323 Apéndice D: Reglas para Uso de la Protoboard..................................................325 Apéndice E: Lista de Partes del Boe-Bot.............................................................331 Apéndice F: Balanceando Fotoresistores ...........................................................335 Apéndice G: Entonando la Detección de Distancia con IR................................343 Apéndice H: Concursos de Navegación para el Boe-Bot ..................................349 Apéndice I: Glosario...............................................................................................355 Indice .......................................................................................................................359

Página iv · Robótica con el Boe-Bot .

Esto cambió cuando General Motors instaló los primeros robots en su fábrica en 1961. Estas máquinas autómatas tenían una imagen totalmente diferente a la de los robots “humanoides” de la ciencia ficción. médica y manufacturera.Prio · Página v Prefacio PROLOGO Los robots son utilizados en la industria automotriz. La palabra "robot" apareció por primera vez en una obra de teatro checoslovaca. Los robots de esta obra satírica asemejaban seres humanos. . de Karel Capek en 1920. solamente con discrepancias en cuanto al tamaño y el nivel de sofisticación. en numerosas películas de ciencia ficción. la mecatrónica y el desarrollo de software. en todos los tipos de vehículos de exploración. Construir y programar un robot envuelve una combinación de mecánica. con circuito infrarrojo integrado para detección de obstáculos en la protoboard de la Board of Education se muestra en la Figura P-1. y. Los principios mecánicos. Un Boe-Bot de ejemplo. electrónica y capacidad de resolución de problemas. por supuesto. construyen y programan un robot autónomo. Lo que aprenderás mientras realizas las actividades y proyectos de este texto tendrá relevancia en aplicaciones en “el mundo real” del control robótico. Rossum Universal Robots. Desde ese momento. El objetivo de este texto es lograr que los estudiantes se interesen con entusiasmo en las áreas concernientes a la ingeniería. llamado el "Boe-Bot". Esta serie de proyectos y actividades manuales servirá a los estudiantes como una introducción a los conceptos básicos de robótica a través del uso del robot Parallax Boe-Bot™. mientras diseñan. Su nombre se debe a la plaqueta Board of Education® que se encuentra montada en su chasis sobre ruedas. varias historias de ciencia ficción trataban el tema de los robots tratando de integrarse a la sociedad y de darle sentido a las emociones humanas. programas de ejemplo y los circuitos que usarás son muy similares y en ocasiones iguales a aplicaciones industriales desarrolladas por ingenieros.

programarás el BoeBot para realizar maniobras básicas.Página vi · Robótica con el Boe-Bot Figura P-1 Boe-Bot™ de Parallax Inc. el microcontrolador BASIC Stamp® 2 de Parallax. como continuación del texto Whats a Microcontroller? (¿Qué es un microcontrolador?). navegación utilizando feedback (retroalimentación) y diversas técnicas de control. Los temas generales en esta serie son: navegación básica del Boe-Bot bajo control de programa. este foro permite a sus miembros intercambiar preguntas y respuestas acerca de las distintas actividades. Robot autónomo sobre ruedas. complementado con algunos experimentos prácticos. educadores y usuarios independientes. Cada tema está diseñado en un formato introductorio para lograr un entendimiento conceptual. Stamps In Class Group: Disponible para estudiantes. Los experimentos de cada tema también pueden beneficiar en gran medida a quienes deseen profundizar en la tecnología industrial. SOPORTE Y GRUPOS DE DISCUSION Los siguientes Grupos de Discusión de Yahoo! (en inglés) para quienes deseen ayuda para utilizar este texto. prueba y calibración del Boe-Bot. AUDIENCIA La guía para el estudiante Robótica con el Boe-Bot está dirigida a personas mayores de 13 años.com en Discussion Groups del menú Support. y navegación utilizando inteligencia artificial programada. y luego procederás a añadir sensores y escribir programas para que el robot responda de acuerdo a su entorno y realice tareas autónomas. la robótica o la electrónica. Después. Puedes acceder a estos grupos a través de www. ejercicios y proyectos de este texto. para pasar luego a la construcción. Las actividades y los proyectos de este texto comienzan con una introducción sobre el cerebro de tu Boe-Bot. Como todos los textos del curriculum Stamps in Class (Estampillas en la Clase). esta serie de experimentos enseña técnicas y circuitos nuevos en su gran mayoría con respecto a los otros textos. navegación utilizando diversos datos proporcionados por sensores. .parallax.

. Para ingresar a este grupo Parallax debes verificar tu estatus como educador. Las versiones mencionadas a continuación estaban vigentes cuando se imprimió este material.com Contacta a nuestro equipo de soporte técnico en caso de tener preguntas generales con respecto a la instalación y el uso de cualquiera de nuestros productos de hardware o software.com.. Educational Sales: sales@parallax.Prio · Página vii Parallax Educator’s Group: Este foro moderado provee apoyo a los educadores y recibe feedback.com y www.parallax.com En caso de tener alguna dificultad para suscribirse a alguno de estos grupos de Yahoo! contacta directamente al equipo de Stamps in Class de Parallax.2. La guía del profesor de este texto está disponible de manera gratuita en este foro. Por favor. Student Guide. busca las últimas versiones en nuestras páginas web www.stampsinclass. u otros manuales discutidos más adelante. se recomienda el texto Whats a Microcontroller? como introducción al Stamps in Class curriculum. “What’s a Microcontroller?”. Version 2. nuestro Educator’s Courses o cualquiera de nuestro servicios educativos. Parallax Inc. Technical Support: support@parallax.parallax. mientras nosotros seguimos desarrollando nuestro curriculum Stamps in Class. Educational Support: stampsinclass@parallax.com.com Contacta a nuestro equipo de ventas para información sobre descuentos educativos y paquetes escolares de nuestro Stamps in Class y otros productos seleccionados. Contínuamente nos esforzamos para mejorar nuestro programa educativo. 2004 Después de terminar este texto podrás continuar sus estudios con cualquiera de los paquetes y guías de estudiantes. o si tienes preguntas acerca del material en este texto. Sin embargo. Todas estas publicaciones están disponibles para descargar de manera gratuita en la página www. nuestro Stamps in Class Curriculum. EL CURRICULUM STAMPS IN CLASS Este texto puede ser completado satisfactoriamente sin prerrequisitos.

Student Guide.0. Version 1. Parallax Inc. Parallax Inc. Version 2.. Parallax Inc.. Parallax Inc. inventores y diseñadores de productos. 2003 “SumoBot” Manual. 2000-2001 “Understanding Signals”. Parallax Inc.. 2004 Más kits robótica: Después de completar este texto estarás preparado para los siguientes textos y kits de robótica más avanzados (en inglés): “Advanced Robotics: with the Toddler”. Student Guide. Manual. “Elements of Digital Logic”. el editor del BASIC Stamp. Parallax Inc... Version 1. 2004 “Process Control”. Understanding Signals y Experiments with Renewable Energy están más orientados hacia temas de electrónica.0. Student Guide. Student Guide. Version 1. Student Guide. Parallax Inc. Parallax Inc..2.0. Version 2. Student Guide. 2004 “StampWorks”.3. 2003 “Basic Analog and Digital”.. Incluye información acerca de los microcontroladores del BASIC Stamp. “BASIC Stamp Manual”.. Student Guide. 2003 Referencia El BASIC Stamp Manual es una referencia indispensable para todas las guías para el estudiante Stamps in Class. Version 1. Version 2. Version 1..0c. Version 1. Parallax Inc. Version 1..0. mientras que Stamp Works provee diseños proyectos útiles para aficionados.0.2. 2004 Kits de proyectos educativos: Elements of Digital Logic.Página viii · Robótica con el Boe-Bot Guías para el estudiante Stamps in Class: Para logar obtener una introducción completa a las prácticas de diseño utilizadas en dispositivos y maquinarias modernas se recomienda trabajar con las actividades y proyectos de las siguientes guías para el estudiante (en inglés): “Applied Sensors”. Parallax Inc.3. 2000 . y el lenguaje de programación de PBASIC. 2003 “Experiments with Renewable Energy”.

el Dr. Para mayor información acerca de esta versión. contáctanos. También mantenemos un grupo de discusión para traductores de Parallax al que puedes unirte. Este texto es una traducción literal en Castellano del texto “Robotics with the Boe-Bot” por Andy Lindsay. Segundo. Cuando el texto fue escrito. lee la sección Notas del Traductor (versión en Castellano) que precede a la Tabla de Contenidos. el diseño de Chuck fue adoptado como la base para el Boe-Bot de Parallax que se usa en este texto. programación. escritas cuidadosamente. Figura P-2 Prototipo original del Boe-Bot Andrew Lindsay. para que podamos enviarte los documentos en un formato correcto de MS Word. etc. Jefe Roboticista de Parallax. acompañar todas las actividades en el texto con instrucción del tipo “cómo se hace”.com) si planeas traducir alguno de nuestros textos. con varias funciones únicas. exponer al lector y el estudiante a conceptos referentes al nuevo circuito. imágenes. Russ Miller de Parallax diseñó el Boe-Bot basado en este prototipo.Prio · Página ix TRADUCCIONES EN OTROS IDIOMAS Los textos educacionales de Parallax pueden ser traducidos a otros idiomas con nuestro permiso (e-mail stampinclass@parallax. Inc. Después de varias revisiones. El diseñó el Board of Education Robot (Boe-Bot) original que se muestra en la Figura P-2 junto con otros robots derivados similares. CONTRIBUCIONES ESPECIALES El doctor Chuck Schoeffler es autor de porciones del v1. Schoeffler se desempeñaba como profesor en el departamento de Educación de Tecnología Industrial en la Universidad de Idaho. Se llama Parallax Translators Yahoo! Group y las instrucciones para encontrarlo están incluidas en este texto. desde entonces ha reescrito este texto y sus actividades con tres metas en mente. Primero. Ve la sección: ACceso en internet y listas en la página precedente a la Tabla de Contenidos.2 del texto (en inglés) en conjunto con Parallax. .

asegurar que los experimentos puedan ser realizados con un alto grado de éxito usando los equipos más actualizados de Parallax. Gracias también a los siguientes participantes del e-group de Stamps in Class por sus colaboraciones: Richard Breen.4. Un agradecimiento especial para el personal de Parallax. Parallaxianos: Andy Lindsay – autor. En lo que concierne a esta versión. La versión 2. Inc. Dwayne Tunnell. Cada uno de los miembros del equipo de Parallax ha contribuido de alguna manera para hacer del programa Stamps in Class un éxito. Esta revisión no hubiera sido posible sin las siguientes personas. . el equipo más avanzado es la Board of Education Rev C o la BASIC Stamp HomeWork Board.4. soporte para PBASIC 2. Si tienes alguna sugerencia. Gracias a la estudiante Laura Wong y a Rob Gerber por sus respectivas contribuciones a la v1.0 de esta Guía para el estudiante fue una revisión a gran escala y una reescritura completa que incluye nuevas actividades. Tercero. Gracias a Dale Kretzer por la revisión editorial. Kris Magri – corrector y gurú de la robótica. Subscríbete y mantente en contacto con el StampsInClass Yahoo! Group para las últimas ofertas de hardware gratis por contribuciones con Robotics with the Boe-Bot. También. Stephanie Lindsay – edición técnica. la cual fue incluída en la v1. gracias a los correctores y colaboradores externos de Stamps in Class Robert Ang y Sid Weaver. Ve la sección ACceso en internet y listas en la página anterior a la Tabla de contenidos. piensas que encontraste algún error o quieres contribuir con alguna actividad o capítulo en próximas versiones de Robotics with the Boe-Bot (en inglés) o próximos textos de More Robotics with the Boe-Bot (en inglés). Robert Ang.5 y para la BASIC Stamp HomeWork Board. contáctenos a través de stampsinclass@parallax. útiles sugerencias editoriales o nuevo material para la v1.com. Marc Pierloz y Nagi Babu. Rich Allred – ilustraciones técnicas. Estos participantes nos suministraron una o más de las siguientes contribuciones: correcciones de errores.5.Página x · Robótica con el Boe-Bot ingeniería y robótica en cada capítulo.

Figura 1-1 Módulo BASIC Stamp® 2 en un robot BoeBot®. 3.Capítulo 1: Cerebro de tu Boe-Bot · Página 1 Capítulo 1: El Cerebro de tu Boe-Bot El robot Boe-Bot™ de Parallax.Muy eficiente y funcional para resolver diferentes tipos de problemas Symbolic (simbólico. Monitorear sensores para detectar su entorno Tomar decisiones basándose en lo que captan los sensores Controlar su movimiento (operando los motores que permiten girar las ruedas) Intercambiar información con su roboticista (¡Nos referimos a ti!) El lenguaje de programación que utilizarás para lograr estas tareas se llama PBASIC. cuyas siglas significan: • • • • • • Parallax . en inglés) .Desarrollado para que los principiantes aprendan cómo programar computadoras All-purpose (multifuncional.Para enseñar a una computadora cómo solucionar problemas Code (código. en inglés) . en inglés) – En términos de que tú y la computadora entiendan . 4.La compañía que inventó y fabrica los microcontroladores del BASIC Stamp Beginners (principiantes. 2.Usa símbolos (términos semejantes a palabras o frases en inglés) Instruction (instrucción. en inglés) . Inc. especialmente con un robot. En la Figura 1-1 se muestra el Boe-Bot y su cerebro microcontrolador programable BASIC Stamp® 2 en detalle. proyectos y competencias en este libro. El módulo BASIC Stamp 2 es tanto poderoso como fácil de usar. Las actividades en este texto serán tu guía para escribir programas simples para que el BASIC Stamp y tu Boe-Bot realicen cuatro tareas robóticas esenciales: 1. en inglés) . es el centro de las actividades.

En caso de tener dificultades para conseguirlas en tu mercado local. Está disponible para descargar gratuitamente desde la página www.parallax. también pueden ser compradas directamente a Parallax.com. √ √ √ Si ya completaste la Guía del estudiante What’s a microcontroller?. La Guía para el estudiante What’s a microcontroller? es recomendada como el primer texto para los principiantes. emitir sonidos electrónicos y controlar lo que se muestra en la pantalla digital. calculadora. En caso contrario. HARDWARE Y SOFTWARE Iniciarse en la programación con el BASIC Stamp resulta similar a los primeros pasos con una nueva PC o laptop. carros. las actividades de este capítulo te guiarán paso a paso para activar tu microcontrolador BASIC Stamp.Página 2 · Robótica con el Boe-Bot ¿Qué es un microcontrolador? Es un dispositivo programable que está diseñado en tu reloj digital. De ser así. radio despertador.com o a través del teléfono (888) 512-1024. Este capítulo te mostrará cómo comenzar a programar con BASIC Stamp con las siguientes actividades: • • • • • Encontrar e instalar el software de programación Conectar el módulo de tu BASIC Stamp a una fuente de alimentación Conectar el módulo de tu BASIC Stamp a la computadora para poder programar Escribir algunos programas en PBASIC Desconectar la fuente de alimentación cuando termines el trabajo Si estás en clase. . Si esta es tu primera vez usando microcontroladores BASIC Stamp. puede que el BASIC Stamp ya esté preparado para ti. si ya conoces tu BASIC Stamp y la Board of Education o BASIC Stamp HomeWork Board. submarinos y naves espaciales porque pueden ser programados para recibir información de sensores. En estos dispositivos. realizará esas mismas actividades. avanza al siguiente capítulo. También están integrados en maquinarias industriales. así como en el CD de Parallax. el microcontrolador ha sido programado para responder cuando presionas un botón. Lo primero que la mayoría hace luego de comprar una PC o una laptop es sacarla de la caja. enchufarla. etc. De igual manera.parallax. Tiene múltiples ejemplos sobre cómo usar microcontroladores y sobre cómo convertir el BASIC Stamp en el cerebro de sus inventos dependientes de microcontroladores. puede que tu profesor tenga otras instrucciones. avanza al siguiente capítulo. teléfono celular. tomar decisiones y hacer funcionar dispositivos que controlen mecanismos de movimiento. y tal vez escribir software usando un lenguaje de programación. instalar y probar algún software. a través de la compra en línea en www. Los kits de What’s a Microcontroller? así como las Guías para el estudiante en versión impresa se pueden encontrar en distintas tiendas de electrónica.

Introducción al BASIC Stamp y la Board of Education Un módulo BASIC Stamp 2 y un Board of Education® carrier board pueden ser apreciados en la Figura 1-2.Capítulo 1: Cerebro de tu Boe-Bot · Página 3 Tanto este texto como What’s a microcontroller? contienen instrucciones sobre como comenzar a manejar el hardware y software del BASIC Stamp en el Capítulo 1. Pronto te darás cuenta de que la Board of Education facilita la conexión a una fuente de alimentación y un cable serial al módulo BASIC Stamp. Figura 1-2 Módulo BASIC Stamp® 2 (izquierda) Board of Education® Carrier Board (derecha) Introducción a la BASIC Stamp HomeWork Board La Figura 1-3 muestra la plataforma de proyecto BASIC Stamp® HomeWork Board™. Asegúrate de seguir las instrucciones para la plataforma de proyectos que estés usando. . Como fue mencionado anteriormente. un módulo BASIC Stamp es como una computadora muy pequeña. Esta plaqueta es como una Board of Education con el microcontrolador BASIC Stamp 2 integrado. Puedes usar tanto el módulo BASIC Stamp 2 con la Board of Education carrier board o el BASIC Stamp HomeWork Board como su plataforma de proyectos para las actividades de este texto. Esta pequeña computadora va enchufada a la plaqueta portadora Board of Education . Con actividades que realizarás más adelante se verá cómo la Board of Education facilita la construcción de circuitos y su conexión al BASIC Stamp. debido a que tienen ciertas diferencias. Estas instrucciones son prácticamente idénticas.

pero es más barata. Este software le permite escribir programas en tu computadora y descargarlos en el cerebro de tu Boe-Bot BASIC Stamp. salida externa para fuente de alimentación ni interruptor de energía.0 o superior) es el software que usarás en la mayoría de las actividades y proyectos de este texto.Página 4 · Robótica con el Boe-Bot Figura 1-3 Plataforma de proyectos BASIC Stamp® HomeWork Board™. . control sobre el tipo de fuente de alimentación que los servos reciben. y un interruptor de 3 posiciones que resulta muy útil para controlar qué partes del sistema reciben energía. La BASIC Stamp HomeWork Board no tiene puertos para servos. o construyendo tus propios circuitos de control de energía. el roboticista. Debes construir sus respectivas conexiones para servos y controlar la fuente de alimentación desconectándola de la plaqueta. ¿Cuál es la diferencia? Usar una plaqueta de soporte Board of Education y el módulo BASIC Stamp le proporciona características adicionales tales como cabezales para conectar servomotores. El módulo BASIC Stamp 2 es removible y puede ser reemplazado. También despliega mensajes en la pantalla de tu computadora enviados por el BASIC Stamp dando a tu Boe-Bot una manera de reportarte a ti. lo que hace y capta a través de los sensores. El microcontrolador BASIC Stamp 2 está incorporado en la misma plaqueta y cada pin I/O está protegido por un resistor de 220 Ω montada en la superficie de la plaqueta. Ver también: Apéndice B: Componentes y Características del BASIC Stamp y la Plaqueta de Soporte ACTIVIDAD #1: OBTENIENDO EL SOFTWARE El BASIC Stamp Editor (versión 2.

0 (o superior) e instálela en tu PC o laptop. ¿Tienes prisa? Obtén tu copia del BASIC Stamp Windows Editor versión 2. Ve el cuadro de información de la página 14 para más detalles. Luego. Incluido en el CD de Parallax: Sigue el enlace Software que aparece en la página de Bienvenida. Diríjete al menú Downloads para desplegar las opciones. accede a www. La página web mostrada en la Figura 1-4 puede ser diferente a la que veas cuando visite el sitio.0…” en la página www. y las dos maneras más fáciles de obtenerlo son: • • Descargarlo de la Internet: Busca “BASIC Stamp Windows Editor Version 2. Requerimientos del Sistema Necesitarás una PC o una laptop para ejecutar el software del BASIC Stamp Editor. . acceso a la Internet.com (mostrada en la Figura 1-4).com → Downloads → BASIC Stamp Software. Diríjete al enlace de BASIC Stamp Software y haz clic para seleccionarlo.Capítulo 1: Cerebro de tu Boe-Bot · Página 5 El BASIC Stamp Editor es un software libre. avanza hasta: Preparando el hardware y probando el sistema. Asegúrate de que la fecha impresa en el CD es posterior a abril de 2003. Descargando el Software de la Internet Es fácil descargar el software del BASIC Stamp Editor desde la página web de Parallax. o ambos Adaptador para el puerto USB: Si tu computadora sólo dispone de puertos USB.parallax. los pasos para descargar el software deben ser parecidos a los siguientes: √ √ √ Usando un buscador en Internet. necesitarás un adaptador de USB a Serial. Iniciarse con el BASIC Stamp es más fácil si tu PC o laptop cumple con los siguientes requerimientos: • • • Windows 98 o un sistema operativo más reciente Un puerto serial o USB Una unidad de CD-ROM.parallax. Si se te presentan interrogantes. la Actividad #1 puede ser usada como una guía paso a paso para obtener el software y la Actividad #2 puede ser usada como referencia para instalarlo en tu PC o laptop. Sin embargo.

el icono Download parece una carpeta de archivos a la derecha de la descripción: “BASIC Stamp Windows Editor Version 2.Página 6 · Robótica con el Boe-Bot Figura 1-4 La página web de Parallax: www.parallax. Figura 1-5 La página web de descargas de Parallax √ √ Cuando aparezca la ventana de descarga de archivos mostrada en la Figura 1-6. selecciona: Save this program to disk (guardar este programa en disco. . En la Figura 1-5. Haz clic en el icono Download. en inglés).com √ √ √ Cuando entres a la página del BASIC Stamp Software.0 Beta 1 (6MB)”.0. Haz clic en el botón OK. busca la descarga del BASIC Stamp Windows Editor con un número de versión igual o superior al 2.

Puedes utilizar el campo Save in (guardar en. en inglés). . Figura 1-7 Ventana Save As Seleccionando el lugar para guardar el archivo √ Espera mientras se descarga el programa de instalación del BASIC Stamp Editor (mostrado en la Figura 1-8). Esto puede tardar unos cuantos minutos si usas una conexión por módem. haz clic en el botón Save (guardar.Capítulo 1: Cerebro de tu Boe-Bot · Página 7 Figura 1-6 Ventana de descarga de archivos La Figura 1-7 muestra la ventana Save As (guardar como. √ Luego de seleccionar donde guardar el archivo que estás bajando. en inglés) para seleccionar la carpeta que más te convenga dentro de sus discos duros. en inglés) que aparece a continuación.

√ Introduce el CD de Parallax en tu computadora.Página 8 · Robótica con el Boe-Bot Figura 1-8 Ventana de progreso de la descarga √ Cuando se complete la descarga. Puedes encontrar el año y el mes del CD de Parallax CD examinando la etiqueta en la cubierta del CD.Actividad #2: Instalando el Software. en inglés). Esta aplicación se muestra en . El buscador del CD de Parallax es la aplicación Welcome (bienvenida. pero la versión del CD debe ser posterior a la de abril de 2003. Otras descargas gratuitas que están incluidas en la página web de Parallax son: • • • • Este texto y otros textos Stamps in Class Videos de robots Más software gratuito ¡Cientos de aplicaciones y experimentos que puedes usar! Encontrando el Software en el CD de Parallax También puedes instalar el BASIC Stamp Editor desde el CD de Parallax. Figura 1-9 Ventana de descarga completa Pasa a la Actividad #2: Instalando el Software. para que puedas obtener la versión del BASIC Stamp Editor compatible con los ejemplos en este texto. deja abierta la ventana que se muestra en la Figura 1-9 mientras que avanza a la siguiente sección .

. haz doble clic en Mi PC.exe)”.Capítulo 1: Cerebro de tu Boe-Bot · Página 9 √ √ la Figura 1-10 y debería correr inmediatamente después de introducir el CD en tu computadora. Haz clic en el ícono del floppy diskette con el nombre “Stamp 2/2e/2sx/2p/2pe (stampw. Haz clic en el enlace Software mostrado en la Figura 1-10. Figura 1-10 Buscador del CD de Parallax √ √ √ √ Haz clic en el + al lado de la carpeta del BASIC Stamps que se muestra en la Figura 1-11. Si la aplicación Welcome no corre automáticamente. Haz clic en el + al lado de la carpeta de Windows. luego doble clic en la unidad de CD y luego doble clic en la aplicación Welcome. Continúa con la Actividad #2: Instalando el Software.

haz clic en el botón Open (abrir. La fecha en la cubierta del CD indica cuando fue editado. ACTIVIDAD #2: INSTALANDO EL SOFTWARE En estos momentos. Instalando el Software Paso a Paso √ Si descargaste el BASIC Stamp Editor Installer desde la Internet. Si el CD es más viejo. ya has descargado el BASIC Stamp Editor Installer desde la página web de Parallax o lo localizaste en el CD de Parallax. pero sólo las actualizaciones hasta la fecha de edición del CD. deberías considerar pedir uno nuevo a Parallax o descargar los archivos que necesites desde la página web de Parallax. Ahora debes ejecutar el BASIC Stamp Editor Installer. probablemente dispongas del material más actualizado.Página 10 · Robótica con el Boe-Bot Figura 1-11 El buscador del CD de Parallax Selecciona el programa de instalación del BASIC Stamp Editor desde la página de software. . Si el CD sólo tienes uno o dos meses de haber sido editado. Las descargas gratis en la página web de Parallax están incluidas en el CD de Parallax. en inglés) en la ventana de descarga completa mostrada en la Figura 1-12.

haz clic en el botón Install (instalar. en inglés) que se muestra en la Figura 1-14. en inglés) que se muestra en la Figura 1-13. Figura 1-13 El buscador del CD de Parallax Botón Install (instalar. √ Cuando la ventana del InstallShield Wizard del BASIC Stamp Editor se abra. √ Si localizaste el software en el CD de Parallax. . haz clic en el botón Next (siguiente. en inglés) ahora.Capítulo 1: Cerebro de tu Boe-Bot · Página 11 Figura 1-12 Ventana de descarga completa Si avanzaste hasta acá desde la sección “Descargando el software desde Internet” haz clic en el botón Open (abrir. en inglés) cerca del final de la ventana.

. Figura 1-15 Tipo de configuración √ Cuando el InstallShield Wizard te anuncie que está “Ready to Install the Program” (listo para instalar el programa.Página 12 · Robótica con el Boe-Bot Figura 1-14 InstallShield Wizard del BASIC Stamp Editor √ √ Selecciona Typical (típica. como se muestra en la Figura 1-15. haz clic en el botón Install. Haz clic en el botón Next. en inglés). en inglés) para tu configuración. mostrado en la Figura 1-16.

Luego de realizar estas conexiones. . en inglés). También necesita estar conectado a una PC para poder ser programado. como se muestra en la Figura 1-17. ¡Felicitaciones! Tu BASIC Stamp Editor ya está instalado. Figura 1-17 InstallShield Wizard completado ACTIVIDAD #3: PREPARANDO EL HARDWARE Y PROBANDO EL SISTEMA El BASIC Stamp necesita estar conectado a una fuente de alimentación para funcionar. Esta actividad te enseñará cómo. √ Cuando la ventana del InstallShield Wizard te anuncie “InstallShield Wizard Completed” (InstallShield Wizard completado. puedes utilizar el BASIC Stamp Editor para probar el sistema. haz clic en Finish (finalizar.Capítulo 1: Cerebro de tu Boe-Bot · Página 13 Figura 1-16 Preparado para la instalación Haz clic en el botón Install. en inglés).

√ Si estás usando un cable serial. √ Si estás utilizando un adaptador de USB a Serial.Página 14 · Robótica con el Boe-Bot Configuración del Cable Serial de la Computadora La Board of Education o la BASIC Stamp HomeWork Board debe estar conectada a tu PC o laptop por cualquier cable serial o adaptador de USB a Serial . . conéctalo a un puerto COM disponible en la parte trasera de tu computadora como lo muestra la Figura 1-18.com. sigue las instrucciones de instalación del hardware y software suministradas junto con el producto. el adaptador de USB a Serial US232 fabricado por Parallax es el recomendado para utilizar con los productos Parallax. transferencia directa de www.parallax. Los conductores de VCP se incluyen en la versión más última del software de BASIC Stamp Editor. Com Figura 1-18 Puerto COM de la PC o laptop Enchufa el cable serial en un puerto COM disponible en tu PC o laptop. El adaptador viene con el hardware mostrado en la Figura 1-19. Adaptador de USB a Serial US232B/LC de FTDI: Para el momento de la impresión de esta guía.

avanza hasta la sección en la página 21. Instrucciones para la Conexión de la Board of Education Si posees un BASIC Stamp y una Board of Education. Los conductores de VCP se incluyen en la versión más última del software de BASIC Stamp Editor.com. la Figura 1-20 te muestra el hardware necesario para comenzar.parallax. transferencia directa de www. sigue las instrucciones de la siguiente sección. Si tu equipo ya está conectado. √ √ √ Si posees un BASIC Stamp y una Board of Education. Hardware Requerido (1) Banda con cuatro patas de goma (1) Paquete de baterías (1) BASIC Stamp 2 (1) Board of Education (4) Baterías alcalinas AA (no incluidas) . Instrucciones para la Conexión de la Board of Education . Si posees una plaqueta BASIC Stamp HomeWork.Capítulo 1: Cerebro de tu Boe-Bot · Página 15 Figura 1-19 Adaptador de USB a Serial RS232 Este adaptador tiene el número de stock en Parallax 28031. avanza hasta las Instrucciones para la conexión del BASIC Stamp HomeWork Board en la página 19. Ahora que tu cable de programación está conectado a tu computadora. es hora de ensamblar el hardware.

Aunque la Board of Education Rev C esté conectada a una batería u otra fuente de alimentación. √ Retira cada pata de goma de la banda y fíjela en la parte de abajo de la Board of Education.Página 16 · Robótica con el Boe-Bot Figura 1-20 Hardware para comenzar con el BASIC Stamp y la Board of Education Conectando el Hardware Las patas de goma se muestran en la Figura 1-21. La posición 0 es para apagar completamente la energía en la Board of Education. Figura 1-21 Patas de goma (izquierda) fijadas en la parte de abajo de la Board of Education (derecha) La Board of Education Rev C tiene un interruptor de 3 posiciones (ver Figura 1-22). √ Coloca el interruptor de 3 posiciones de la Board of Education en la posición 0. cuando el interruptor de 3 posiciones esté en 0. La Board of Education tiene círculos en la parte de abajo donde deben fijarse las patas de goma. y deben ser fijadas en la parte de abajo de tu Board of Education. . el dispositivo estará apagado.

paso 3. ¡Asegúrate de que tu BASIC Stamp esté correctamente posicionado (como se muestra en la Figura 1-24) antes de insertarlo en el enchufe! Si el BASIC Stamp es enchufado al revés. Cuando te indiquemos colocar el interruptor de 3 posiciones en 1 o 2. √ Si tu BASIC Stamp todavía no está conectado al Board of Education. puede dañarse al conectar la energía. √ Coloca las baterías en el paquete de baterías como se muestra en la Figura 1-23. Sólo la Board of Education Rev C tiene un interruptor de 3 posiciones. paso 3). paso 1. Figura 1-23 Paquete de baterías Indicadores de polaridad en la cubierta plástica (izquierda) para colocar correctamente las baterías (derecha). . Si posees una Board of Education Rev A o B: • • Cuando te indiquemos colocar el interruptor de 3 posiciones en 0. conecta el paquete de baterías como se indica en la Figura 1-24.Capítulo 1: Cerebro de tu Boe-Bot · Página 17 Figura 1-22 Interruptor de tres posiciones 0 1 2 Colóqcalo en 0 para apagarlo. Asegúrate de seguir las marcas de polaridad (+ y -) dibujadas dentro de la cubierta plástica del paquete de baterías. apágalo desconectando el paquete de baterías (al contrario de la Figura 1-24. insértalo en el enchufe mostrado en la Figura 1-24. al momento de insertar cada batería.

Reset X2 0 1 2 Board of Education © 2000-2003 www. . Enchufa el paquete de baterías en la salida de batería 6-9 VDC como se muestra en la Figura 1-24. Batería y cable Serial Conecta los componentes en el orden indicado en el diagrama. paso 3. √ La luz verde que dice Pwr en la Board of Education debe estar encendida. BASIC Stamp.stampsinclass. El módulo debe entrar aproximadamente 1/8 de pulgada (3 mm). paso 2.com 2 1 √ √ √ Enchufa el cable serial en la Board of Education tal como se muestra en la Figura 1-24. Figura 1-25 Interruptor de 3 posiciones 0 1 2 Colóquelo en la posición uno para volver a encender la energía. 6-9VDC 15 14 Vdd 13 12 Red Black 9 Vdc Battery X4 X5 3 1 Sout Sin ATN Vss P0 P1 P2 P3 P4 P5 P6 P7 Pwr Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 Vin Vss in STA MPS CLA SS TM U1 Vin Vss Rst Vdd P15 P14 P13 P12 P11 P10 P9 P8 Vss P0 P2 P4 P6 P8 P10 P12 P14 Vdd Vss P1 P3 P5 P7 P9 P11 P13 P15 Vin X1 Figura 1-24 Board of Education. luego presione firmemente para que encaje. Mueve el interruptor de 3 posiciones a la posición 1 para encender la energía.Página 18 · Robótica con el Boe-Bot √ Asegúrate de que los pines estén alineados correctamente con los agujeros del enchufe.

mostradas en la Figura 1-27 (1) Basic Stamp HomeWork Board (1) Banda de cuatro patas de goma (1) Pila de 9 V nueva (no incluida) (1) BASIC Stamp HomeWork Board Figura 1-27 Hardware para comenzar a utilizar el BASIC Stamp HomeWork Board √ Retira cada pata de goma de la banda y fíjela en la parte de abajo del HomeWork Board al lado de cada agujero chapado en cada esquina de la plaqueta. asegurándose de no tapar los agujeros.Capítulo 1: Cerebro de tu Boe-Bot · Página 19 Figura 1-26 BASIC Stamp y Board of Education conectados y listos para programar √ Avanza a la sección en la página 21. . Instrucciones para la Conexión del BASIC Stamp HomeWork Board Esta sección te guiará para conectar el BASIC Stamp a tu computadora y a una fuente de alimentación si tienes un BASIC Stamp HomeWork Board. Hardware Requerido √ Toma las siguientes partes de tu kit. como se indica en la Figura 1-28.

parallaxinc.stampsinclass. pasos 1 y 2). La luz que dice Pwr no se enciende cuando conecta la batería.Página 20 · Robótica con el Boe-Bot Figura 1-28 Patas de goma √ Conecta el cable serial y la batería al HomeWork Board (Figura 1-29. Sólo se encenderá cuando un programa esté corriendo. 1 in Figura 1-29 HomeWork Board y Cable Serial Rev A STAM PS CL ASS (916) 624-8333 www. Alkaline Battery Powercell Reset X2 © 2002 ® .com Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 Vin Vss 2 Conecte el cable serial y la pila de 9 V en el HomeWork Board.com www. Power BASIC Stamp HomeWork Board La Figura 1-30 muestra la BASIC Stamp HomeWork Board conectada a tu fuente de alimentación y al cable de programación serial.

Debe parecerse a la Figura 1-31. Inc. Figura 1-31 Acceso directo al BASIC Stamp Editor Busca un acceso directo similar a este en el escritorio de tu computadora También se puede ejecutar el BASIC Stamp Editor a través del menú de inicio de Windows. luego haz clic en el icono del BASIC Stamp Editor. . luego selecciona Programas → Parallax. ejecuta el BASIC Stamp Editor haciendo doble clic en el acceso directo que está en tu escritorio. → Stamp Editor 2…. La ventana de tu BASIC Stamp Editor debe ser similar a la que se muestra en la Figura 132. Haz clic en el botón Inicio de Windows. Figura 1-30 BASIC Stamp HomeWork Board listo para programar Probando la comunicación √ Primero.Capítulo 1: Cerebro de tu Boe-Bot · Página 21 Ya estás listo para probar la conexión de programación entre el BASIC Stamp y tu PC/laptop.

diríjase a la página 313 (Apéndice A: Resolución de Problemas de Comunicación entre la PC y el BASIC Stamp). Figura 1-33 Ventana de identificación Ejemplo: BASIC Stamp 2 encontrado en el COM2. Figura 1-32 BASIC Stamp Editor Aparecerá una ventana de identificación similar a la que se muestra en la Figura 1-33.Página 22 · Robótica con el Boe-Bot La primera vez que ejecutes el BASIC Stamp Editor. El ejemplo en esta imagen muestra un BASIC Stamp 2 detectado en el COM2. √ √ √ Si conoce el número del puerto COM al que tu BASIC Stamp está conectado. √ Para asegurarte de que tu BASIC Stamp se está comunicando con tu computadora. haz clic en el menú Ejecutar. √ √ Verifica la ventana de identificación para estar seguro de que el BASIC Stamp 2 ha sido detectado en alguno de los puertos COM. asegúrate de que está incluido en la lista. haz clic en OK. Si el BASIC Stamp 2 ha sido detectado. luego selecciones Identify (identificar. sigue las instrucciones del BASIC Stamp Editor para añadir un puerto COM. Si la ventana de identificación no detecta el BASIC Stamp 2 en ninguno de los puertos COM. . en inglés). Si no estás seguro de cuál es el puerto COM. estás listo para la Actividad #4: Tu Primer Programa. Si no está incluido en la lista. puede que despliegue algunos mensajes y listas de los puertos COM encontrados por el software. por ahora.

Este conjunto de ceros y unos es lo que llamamos código binario. La Figura 1-34 muestra cómo el BASIC Stamp envía una secuencia de unos y ceros para comunicar los caracteres que son desplegados por tu PC o laptop.Capítulo 1: Cerebro de tu Boe-Bot · Página 23 ACTIVIDAD #4: TU PRIMER PROGRAMA El primer programa que escribirás y probarás le ordenará al BASIC Stamp que envíe un mensaje a tu PC o laptop. El software del BASIC Stamp Editor tiene la habilidad de detectar y mostrar estos mensajes. He aquí un ejemplo: 10 0 1 0 0 11 100 10000100 01 10 00 10 1 0 6-9VDC 9 Vdc Battery Figura 1-34 Mensajes del BASIC Stamp a tu computadora in STA MPS CL A SS TM 1 Sout Sin ATN Vss P0 P1 P2 P3 P4 P5 P6 P7 Vin Vss Rst Vdd P15 P14 P13 P12 P11 P10 P9 P8 U1 www.stampsinclass.com . como lo verás a continuación. 10 10101001 0 11 100 00 100 010 01 10 00 1 0 101 Tu primer programa Los programas ejemplo que escribirás en el BASIC Stamp Editor y descargarás en el BASIC Stamp estarán presentados siempre con un fondo gris.

puede que accidentalmente uses paréntesis ( ) o corchetes rectos [ ]. Figure 1-35 Icono PBASIC 2.5} al principio del programa.. ¡SIEMPRE usa estos botones de la barra de herramientas para agregar estas dos líneas al principio del programa! Las direcciones para el compilador deben estar entre { }. √ √ Comienza haciendo clic en el ícono BS2 (el chip diagonal verde) en la barra de herramientas. Luego. this is a message from your Boe-Bot" END Introducirás este programa desde el BASIC Stamp Editor.Página 24 · Robótica con el Boe-Bot Programa de ejemplo: HelloBoeBot. .5 Hacer clic en este botón desplegará automáticamente '{$PBASIC 2. Figura 1-34 Icono BS2 Hacer clic en este botón desplegará automáticamente '{$STAMP BS2} al principio del programa. Al momento de escribir en estas partes del programa. haz clic en el ícono en forma de engranaje “2. Algunas líneas del programa aparecen automáticamente al presionar algunos botones de la barra de herramientas.HelloBoeBot. Si lo haces. El mensaje de descripción es “PBASIC Language: 2. ' {$STAMP BS2} ' {$PBASIC 2.5”.5} DEBUG "Hello.bs2 ' Robotica con el Boe-Bot . tu programa no funcionará.bs2 ' BASIC Stamp envia un mensaje a tu PC/laptop. aparecerá el mensaje de descripción “Stamp Mode: BS2”. si mantienes el cursor sobre este botón. el cual está resaltado en la Figura 1-34. Otras líneas aparecen al escribirlas con el teclado.5” que aparece resaltado en la Figure 1-35.

. (Figura 1-37). en inglés) y seleccionando Save (guardar.Capítulo 1: Cerebro de tu Boe-Bot · Página 25 √ Escribe el resto del programa en el BASIC Stamp Editor exactamente como está mostrado en la Figura 1-36. Figura 1-36 Programa HelloBoeBot.bs2 √ √ Introduce el nombre HelloBoeBot. Haz clic en el botón Save. y el resto del programa está después de ellas. en inglés) cerca del final de la ventana Save As (guardar como. Figura 1-37 Guardando el programa HelloBoeBot. en inglés).bs2 introducido en el BASIC Stamp Editor √ Guarda tu trabajo haciendo clic en File (archivo.bs2 en el campo File name (nombre de archivo. Nota que las dos primeras líneas están antes de las direcciones para el compilador. en inglés) tal como se muestra en la Figura 1-38.

en inglés). bs2 Una ventana de progreso de descarga aparecerá brevemente mientras el programa es trasmitido desde la PC o laptop a tu BASIC Stamp. Figura 1-39 Ejecutando tu primer programa HelloBoeBot. y verás otra copia del mensaje desplegado en el Debug Terminal. para elegir otro nombre. √ Haz clic en Run (ejecutar. el BASIC Stamp Editor guardará el archivo automáticamente con el mismo nombre (HelloBoeBot. La Figura 1-40 muestra el Debug Terminal que debería aparecer cuando la descarga se complete. Cada vez que efectúas esta operación. . el programa volverá a ejecutarse. Puedes comprobar que este es un mensaje del BASIC Stamp presionando y soltando el botón Reset en tu Board of Education o HomeWork Board. y selecciona Run del menú que aparece (al hacer clic en el primero) como se muestra en la Figura 1-39.bs2) a menos que hagas clic en File y selecciones Save As (en lugar de Save).Página 26 · Robótica con el Boe-Bot Figura 1-38 Introduciendo el nombre del archivo La próxima vez que hagas clic en guardar.

Figura 1-41 BASIC Stamp Editor Botones de acceso directo Funcionamiento del Programa HelloBoeBot. En PBASIC. Puedes ver mensajes similares para saber que función representa cada botón colocando el cursor sobre ellos. Un comentario es una línea de texto ignorada por el BASIC Stamp Editor. El primer comentario dice de qué libro es el programa de ejemplo y cuál es el nombre del programa.bs2 Las dos primeras líneas del programa de ejemplo son comentarios.bs2 ' BASIC Stamp envia un mensaje a tu PC/laptop. También puedes hacer clic en el botón Run. porque están escritos para ser leídos por personas. desplegado en el Debug Terminal? ¿Viste un segundo mensaje “Hello…” Figura 1-40 Debug Terminal El Debug Terminal muestra los mensajes enviados a la PC/laptop por el BASIC Stamp. Por ejemplo. puedes presionar las teclas ‘Ctrl’ y ‘R’ al mismo tiempo. todo lo que siga a un apóstrofe es considerado un comentario por el BASIC Stamp Editor. La segunda línea contiene información útil y breve sobre qué hace el programa. El mensaje de descripción aparecerá si coloca el cursor sobre el botón Run. Es el triángulo azul mostrado en la Figura 1-41 que parece el botón Play de un reproductor de CD.HelloBoeBot. no por el BASIC Stamp. ' Robotica con el Boe-Bot .Capítulo 1: Cerebro de tu Boe-Bot · Página 27 √ Presiona y suelta el botón Reset. para ejecutar un programa. . El editor BASIC Stamp Editor tiene accesos directos para la mayoría de las tareas.

y todos los programas de este texto utilizan dos directivas: ' {$STAMP BS2} ' {$PBASIC 2. Tu Turno – Formateadores DEBUG y Caracteres de Control Un formateador DEBUG es una palabra-código utilizada para hacer que el mensaje envíado por el BASIC Stamp tenga un aspecto determinado en el Debug Terminal." Este es el comando que le indica al BASIC Stamp que envíe e mensaje a la PC usando el cable serial. He aquí un ejemplo de cómo hacerlo: . que manda un Retorno de Línea al Debug Terminal.5 del lenguaje de progamación PBASIC. Si se carga un nuevo programa. La segunda es la directiva PBASIC . y le indica al BASIC Stamp Editor que descargarás el programa a un BASIC Stamp 2. Un comando es una palabra que usas para indicarle al BASIC Stamp que ejecute alguna tarea. El primero de los dos comandos en este programa se llama comando DEBUG: DEBUG "Hello. el anterior será borrado y el nuevo se comenzará a ejecutar. Puede modificar tu programa de tal manera que contenga más comandos DEBUG junto con algunos comandos formateadores y caracteres de control. Si se presiona el botón Reset en tu plaqueta. y le indica al BASIC Stamp Editor que estás usando la versión 2. El segundo comando es el comando END: END Este comando es útil porque coloca al BASIC Stamp en modo de baja energía cuando termina de ejecutar el programa.Página 28 · Robótica con el Boe-Bot Existen varios mensajes especiales que puedes enviar al BASIC Stamp Editor colocándolos dentro de comentarios (a la derecha de un apóstrofe en cualquier línea). el BASIC Stamp espera que se presione el botón Reset.5} La primera se llama directiva Stamp. o que el BASIC Stamp Editor cargue un nuevo programa. En modo de baja energía. el BASIC Stamp ejecutará nuevamente el programa cargado anteriormente. Los textos o números que siguen a CR aparecerán en la línea siguiente a la de los caraceteres antes del caracater de control. Un ejemplo de caracater de control es de CR. Estos son llamados directivas para el compilador. DEC es un ejemplo de formateador que hace que el Debug Terminal muestre un valor decimal. this is a message from your Boe-Bot.

"What's 7 X 11?" DEBUG CR. Un buen nombre para el nuevo archivo puede ser HelloBoeBotYourTurn. Modifica los comentarios del principio de la siguiente manera: ' Robotica con el Boe-Bot . √ Agregue estas tres líneas entre el primer comando DEBUG y el comando END: DEBUG CR. o tendrás que hacer clic en el botón Run tal como lo muestra la Figura 1-41. guarda el programa con un nuevo nombre haciendo clic en File y seleccionando Save As.bs2 Modificado Compara tu trabajo con el programa con el ejemplo aquí mostrado. Ejecuta tu programa modificado.HelloBoeBotYourTurn. Figura 1-42 Programa HelloBoeBot. tal como lo muestra la Figura 1-39.bs2 ' BASIC Stamp realiza operaciones matematicas simples y envia ' los resultados al Debug Terminal.Capítulo 1: Cerebro de tu Boe-Bot · Página 29 √ √ √ Primero. . Tu programa debe verse como la Figura 1-42.bs2. Consejo: tendrás que hacer nuevamente clic en Run desde el menú Run. "The answer is: " DEBUG DEC 7 * 11 √ Guarda los cambios haciendo clic en File y seleccionando Save.

bs2 modificado Asegurese de obtener los resultados esperados al volver a ejecutar el programa. ACTIVIDAD #5: BUSCANDO RESPUESTAS El programa de ejemplo que acaba de terminar te permitió conocer dos comandos de PBASIC: DEBUG y END. Figura 1-43 Salida de la Debug Terminal del programa HelloBoeBot. o la tecla F12 de tu teclado. Puede volver a colocarla en frente usando el menú Run como se muestra en la Figura 1-44. Figura 1-44 Debug Terminal 1 visible en el escritorio Usando el menú (izquierda) y usando el acceso directo (derecha). . buscándolos en la ayuda del BASIC Stamp Editor o en el manual de BASIC Stamp. Esta actividad te guiará para realizar un ejemplo de búsqueda de DEBUG usando la ayuda del BASIC Stamp Editor y el Manual de BASIC Stamp.Página 30 · Robótica con el Boe-Bot Tu Debug Terminal ahora debe parecerse a la imagen en la Figura 1-43. Puedes conocer más acerca de estos comandos y cómo usarlos. el botón de acceso directo de la Debug Terminal 1 mostrado en la parte derecha de la imagen. ¿Dónde está mi Debug Terminal? A veces la Debug Terminal queda escondida detrás de la ventana del BASIC Stamp Editor.

Capítulo 1: Cerebro de tu Boe-Bot · Página 31 Usando la Ayuda del BASIC Stamp Editor √ En el BASIC Stamp Editor. Figura 1-46 Buscando el comando DEBUG usando la ayuda Tu Turno √ √ √ Usa la barra de búsqueda para leer el artículo sobre el comando DEBUG. Haz clic en la pestaña Contents. Figura 1-45 Seleccionando Index desde menú de ayuda √ √ Escribe DEBUG en el campo donde dice Type in the keyword to find: (Figura 1-46). luego selecciona Index como se muestra en la Figura 1-45. . Cuando la palabra DEBUG aparezca en la lista debajo del campo en donde estás escribiendo. y haz una búsqueda de la palabra DEBUG. Observa que contiene varias explicaciones y programas ejemplos que puedes probar. haz doble clic en la palabra. haz clic en Help. Haz clic en la pestaña Search. luego haz clic en el botón Display. y busca DEBUG allí.

Coloca el cursor sobre el menú Downloads para desplegar las opciones. Descargar el Manual de BASIC Stamp desde la página Web de Parallax √ √ √ √ √ Usa un explorador de Internet para entrar en www. busca el BASIC Stamp Manual. Señala el enlace Documentation y haz clic para seleccionarlo. También lo puedes comprar como material adicional y manual impreso. Viendo el Manual del BASIC Stamp en el CD de Parallax √ √ √ √ √ Haz clic en el enlace Documentation. Obteniendo y usando el Manual del BASIC Stamp El BASIC Stamp Manual está disponible para ser descargado de manera gratuita desde la página web de Parallax y también está incluido en el CD de Parallax. Muestra que la información sobre el comando DEBUG se puede encontrar en la página 97. Cuando llegues a la página de BASIC Stamp Documentation. Haz clic en el icono en forma de libro del BASIC Stamp Manual. Figura 1-47 Buscado el comando DEBUG en la Tabla de contenidos La Figura 1-48 muestra un extracto del BASIC Stamp Manual. Allí se explica .parallax. Haz clic en el + al lado de la carpecta de BASIC Stamps.Página 32 · Robótica con el Boe-Bot √ Repite este proceso para el comando END. detalladamente el comando DEBUG.0 (3. Haz clic en el botón View.2 MB)”. La Figura 1-47 muestra un extracto de la sección de contenidos del BASIC Stamp Manual (página 2).com. Haz clic en el icono Download con forma de carpeta de archivo que está a la derecha de la descripción: “BASIC Stamp Manual Version 2.

Cuenta el número de programas ejemplo en la sección de DEBUG ¿Cuántos hay? Figura 1-48 Revisando el comando DEBUG debug en el BASIC Stamp Manual Tu Turno √ √ Usa el índice del BASIC Stamp Manual para buscar el comando DEBUG. Algunos números corresponden a acciones del teclado. Programando con el código ASCII ASCII son las siglas de American Standard Code for Information Interchange. tales como arriba. . Otros números corresponden a caracteres y símbolos impresos. La mayoría de los microcontroladores y PC usan este código para asignar un número a cada función del teclado. ACTIVIDAD #6: INTRODUCCION AL CÓDIGO ASCII En la Actividad #4: Tu Primer Programa. el BASIC Stamp leerá ese número como un código ASCII. espacio o borrar. Busca el comando END en el BASIC Stamp Manual. abajo.Capítulo 1: Cerebro de tu Boe-Bot · Página 33 √ √ Ve brevemente la explicación sobre el comando DEBUG en el BASIC Stamp Manual. Los números del 32 al 126 corresponden a esos caracteres y símbolos que el BASIC Stamps puede mostrar en la Debug Terminal. ¿Pero. El siguiente programa usará el código ASCII para mostrar las palabras “BASIC Stamps 2” en la Debug Terminal. usaste el formateador DEC con el comando DEBUG para mostrar un número decimal en la Debug Terminal. qué pasa si no usa el formateador DEC con un número? Si usas el comando DEBUG seguido de un número sin formateador.

5. Observa que cada número código esta separado por comas. ' {$STAMP BS2} ' {$PBASIC 2.32.83.AsciiName.32.97. guarda y ejecuta el programa AsciiName. ¡Recuerda utilizar los iconos de la barra de herramientas para lograr colocar las directivas del compilador en tus programas! '{$STAMP BS2} .109. Las comas permiten que DEBUG ejecute cada símbolo como comandos separados.5} – Usa el icono en forma de engranaje que dice 2.83. el 65 para la “A” mayúscula y así sucesivamente.97.83.bs2 √ Introduce.bs2 ' Usar codigo ASCII en un comando DEBUG para mostrar las palabras ' BASIC Stamp 2.112.65. Esto es mucho más fácil de escribir que 12 comandos de DEBUG separados. Reemplaza los números del código ASCII del programa por los que elegiste.50 END Funcionamiento del Programa AsciiName.32.bs2.Usa el icono del chip electrónico diagonal verde.bs2 como AsciiRandom. ' Robotica con el Boe-Bot .65.112. '{$PBASIC 2.67. ¡Ejecuta el programa modificado y ve qué obtienes! . Tu Turno – Explorando el Código ASCII √ √ √ √ Guarda el programa AsciiName.67.73. DEBUG 66.32. El 32 es el código para un espacio entre caracteres.bs2 Cada letra en el comando DEBUG corresponde a un símbolo del código ASCII que apareció en la Debug Terminal.50 El 66 es el código ASCII para la “B” mayúscula.109.73.83. Puedes volver a ver una imagen de estos iconos en la página 24.116.116.Página 34 · Robótica con el Boe-Bot Programa de ejemplo – AsciiName.5} DEBUG 66.bs2 Selecciona 12 números al azar entre el 32 y 127.

en experimentos posteriores. Primero. Aparte de esos detalles. Nunca sabes que clase de accidente puede ocurrir mientras no estás. Ejecuta el programa para ver si escribiste tu nombre correctamente. . el paso más importante que debes seguir siempre es desconectar la fuente de alimentación cuando termines. Siempre desconecta la fuente de alimentación de tu Board of Education o HomeWork Board. ¡buen trabajo y guarda tu programa! ACTIVIDAD #7: CUANDO HAYAS TERMINADO Es importante desconectar la energía de tu BASIC Stamp y de la Board of Education o HomeWork Board por diversas razones. en inglés) del BASIC Stamp Manual contiene un cuadro con los números del código ASCII y sus símbolos correspondientes. Segundo. Modifica el programa para escribir tu nombre. tus baterías durarán más tiempo si el sistema no está recibiendo energía mientras no está siendo usado. Nunca debes dejar de vigilar los prototipos de circuitos mientras la batería o la fuente de alimentación esté conectada. tales como desconectar el cable serial.Capítulo 1: Cerebro de tu Boe-Bot · Página 35 El Appendix A (Apéndice A. incluso si nada más piensas dejarlo solo durante uno o dos minutos.bs2 como YourAsciiName. construirás circuitos en el área de prototipos de la Board of Education o la HomeWork Board. guardar tu Board of Education/HomeWork Board en un lugar seguro. desconectar la energía es fácil: √ Si estás usando la Board of Education Rev C. puede que tu instructor tenga más instrucciones. Desconectando la Energía Con la Board of Education Rev C.bs2 Busca el cuadro de ASCII en el BASIC Stamp Manual. Si fue así. mueve el interruptor de 3 posiciones a la posición 0 moviéndolo hacia la izquierda como se muestra en la Figura 1-49. etc. Puedes buscar los números correspondientes a las letras de tu nombre. Si estás en un salón de clases. √ √ √ √ √ Guarda el programa AsciiRandom.

. Cada vez que el BASIC Stamp es desconectado y reconectado en la Board of Education. esto no será necesario durante las actividades de este texto.Página 36 · Robótica con el Boe-Bot Sout Sin ATN Vss P0 P1 P2 P3 P4 P5 P6 P7 U1 Vin Vss Rst Vdd P15 P14 P13 P12 P11 P10 P9 P8 P10 P12 P14 Vdd P11 P13 P10 P15 P9 Vin P8 P7 X1 P6 P5 P4 P3 Reset P2 P1 P0 X2 0 1 2 Board of Education © 2000-2003 Figura 1-49 Apagando la energía en la Board of Education Rev C www. Alkaline Battery Powercell Reset X2 Tu Turno √ Desconecta la energía ahora. pueden ocurrir errores que podrían dañarlo.stampsinclass. quitando la batería o desenchufando el suministro de CC del jack. Desconectar la energía de la BASIC Stamp HomeWork Board también es fácil: √ Si estás usando la BASIC Stamp HomeWork Board.com ¡No desconectes el BASIC Stamp de su enchufe en la Board of Education! Resiste el impulso de guardar la Board of Education y el BASIC Stamp por separado. desconecta la batería como se muestra en la Figura 1-50. A pesar de que el BASIC Stamp puede ser movido de un enchufe a otro durante un proyecto largo. Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 Vin Vss Power Figura 1-50 Desconectando la energía de la HomeWork Board © 2002 BASIC Stamp® HomeWork Board La energía de la Board of Education Rev A o B también debe ser desconectada.

Cuando el BASIC Stamp envía un mensaje a tu PC/laptop ¿Qué tipo de números se usan para enviar el mensaje a través del cable serial? 3. ¿Qué comandos de PBASIC aprendiste en este capítulo? Ejercicios 1. la Board of Education y la HomeWork Board Cómo configurar el hardware del BASIC Stamp Cómo probar tu software y hardware Cómo escribir y ejecutar un programa de PBASIC Usar los comandos DEBUG y END Usar el caracter control CR y el formateador DEC Usar códigos ASCII para transmitir caracteres Cómo usar el menú de ayuda del BASIC Stamp Editor y el BASIC Stamp Manual Cómo desconectar la energía de tu Board of Education o HomeWork Board cuando termines Preguntas 1. 2. Explica lo que puedes hacer con cada comando de PBASIC que aprendiste en este capítulo. ¿Qué dispositivo será el cerbero de tu Boe-Bot? 2. ¿Cuál es el nombre de la ventana que muestra mensajes enviados desde el BASIC Stamp a tu PC/laptop? 4. Explica qué hace el caracter asterisco en la siguiente línea: DEBUG DEC 7 * 11 .Capítulo 1: Cerebro de tu Boe-Bot · Página 37 RESUMEN Este capítulo te guió a través de los siguientes puntos: • • • • • • • • • • • • Una introducción al BASIC Stamp Dónde obtener el software gratuito del BASIC Stamp Editor que usarás en casi todos los experimentos de este texto Cómo instalar el software del BASIC Stamp Editor Una introducción al BASIC Stamp.

guarda y ejecuta tu programa. DEBUG "What's 7 X 11?". ¿Qué lineas puedes borrar en el programa HelloBoeBotYourTurn. Anticipa que se verá si quitas el formateador DEC de este comando. "The answer is: ".Página 38 · Robótica con el Boe-Bot 3. Cuando ejecutas el código. Escribe un programa que use la instrucción DEBUG para que muestre la solución al siguiente problema matemático: 1 + 2 + 3 + 4. Asegúrate de guardar el programa HelloBoeBotYourTurn. DEBUG DEC 7 * 11 DEBUG DEC 7 + 11 Proyectos 1. como HelloBoeBotCh01Project03. en la línea inmediatamente anterior al comando END del programa? Verifica tu hipótesis (tu predicción de lo que va a pasar). los números que muestran aparecen uno al lado del otro lo que hace que parezca un sólo número en vez de dos separados. 2.bs2 si colocas el comando mostrado a continuación. CR.bs2. DEC 7 * 11 . Hay un problema con estos dos comandos. Usa el programa PBASIC para verificar tu predicción.bs2 con un nuevo nombre para que te ayude a hacerle seguimiento. DEBUG DEC 7 * 11 3. Modifica estos dos comandos para que las respuestas aparezcan en dos lineas diferentes en el Debug Terminal. Haz entonces tu modificación.

DEBUG y END. Predicción: Imprimirá el caracater "M". DEC 7 + 11 P1.5} DEBUG "Cuanto es 1+2+3+4?" DEBUG CR. La información se muestra en el Debug Terminal. El Debug Terminal. END – Este comando se usa para terminar un programa de PBASIC y para poner al módulo BASIC en modo de energía baja. resultando el producto 77. Q2. E3. Para arreglar el problema. El asterisco multiplica los operadores 7 y 11. E1. DEBUG DEC 7 * 11 DEBUG CR. "La respuesta es: " DEBUG DEC 1+2+3+4 END P2.bs2 ' Suma 4 numeros con DEBUG '{$STAMP BS2} '{$PBASIC 2. Q3. El asterisco es el operador de multiplicación. Números binarios. E2. Este programa verifica tu predicción: ' Robotica con el Boe-Bot .Capítulo 1: Cerebro de tu Boe-Bot · Página 39 Soluciones Q1. Q4. DEBUG – Este comando se usa para enviar un mensaje del BASIC Stamp a la PC. El módulo microcontrolador BASIC Stamp 2. He aquí un programa que soluciona el problema matemático: ' Robotica con el Boe-Bot . añade un caracter de retorno.HelloBoeBotCh01Project02.5} DEBUG END 7 * 11 . el caracater controlador CR.HelloBoeBotCh01Project01.bs2 ' Muestra 7 * 11 en ASCII ' {$STAMP BS2} ' {$PBASIC 2.

Cuanto es 7 X 11? La respuesta es: 77 Esta salida es la misma que produce con las tres lineas. este es un mensaje de tu Boe-Bot.Página 40 · Robótica con el Boe-Bot P3. ' Robotica con el Boe-Bot – HelloBoeBotCh01Project03.5} DEBUG "Hola. . ' {$STAMP BS2} ' {$PBASIC 2. este es un mensaje de tu Boe-Bot. Se necesita un CR adicional después del mensaje "Hello".". DEC 7 * 11 END La salida del Debug Terminal es: Hola. CR. CR DEBUG "Cuanto es 7 X 11?". "La respuesta es: ".bs2 ' Envía un mensaje al Debug Terminal y realiza unos calculos. Esto es un ejemplo del uso de comas para mostrar bastante información usando sólo una declaración DEBUG. Las tres últimas lineas de DEBUG se pueden borrar.

Capítulo 2:Los Servomotores de tu Boe-Bot · Page 41 Capítulo 2: Los Servomotores de tu Boe-Bot Este capítulo te guíara para que puedas conectar. Para poder lograrlo. INTRODUCCION DEL CONTINUOUS ROTATION SERVO Los Continuous Rotation Servos (Servos de Rotación Contínua. #4 y #6 te servirán para ver cómo aplicarlas a los servos. las Actividades #1. Por lo tanto. luego las Actividades #3. Dado que un control preciso es la clave para el desempeño exitoso del Boe-Bot. Esta imagen destaca las partes externas del servo. circuitos y engranajes Pestaña de montaje Toma para la conexión del RC servo en la Board of Education Consejo: Puede resultarte útil marcar esta página para referencias posteriores. #2 y #5 te servirán como introducción a estas herramientas de programación. Figura 2-1 Continuous Rotation Servo de Parallax Control horn Pestaña de montaje Orificio de acceso para centrar e feedback del potenciometr o Tornillos Phillips Cable para el control de energía y de señal La etiqueta debe decir “Continuous Rotation” Contiene motor. en inglés) de Parallax mostrados en la Figura 2-1 son los motores que harán que las ruedas del Boe-Bot giren. ajustar y probar los motores del BoeBot. deberás comprender ciertos comandos y técnicas de programación de PBASIC que controlarán la velocidad y duración del movimiento de los servomotores. . Se hará referencia a muchas de estas partes a lo largo de las instrucciones de este capítulo. es importante y necesario que completes estas actividades antes de montar los servos en el chasis del Boe-Bot.

cuando ves 1 s. Los Continuous Rotation Servos reciben las mismas señales electrónicas. ¿Entendiste? . Estos servos controlan las posiciones de los alerones de los aviones a control remoto. El mensaje debe repetirse unas 50 veces por segundo para que el servo mantenga su velocidad y dirección. ACTIVIDAD #1: COMO REGISTRAR EL TIEMPO Y REPETIR ACCIONES Controlar la velocidad y dirección de un servomotor envuelve un programa que hace que el BASIC Stamp envíe el mismo mensaje una y otra vez. Mostrando Mensajes a Velocidade Humanas Puedes utilizar el comando PAUSE para indicarle al BASIC Stamp que debe esperar para ejecutar el comando que sigue. Por lo tanto. significa un segundo. En este texto. He aquí cómo debe verse el comando: PAUSE 1000 Si deseas esperar el doble de tiempo. y es el valor que le indica al BASIC Stamp cuánto tiempo debe esperar para continuar con el siguiente comando. Esta actividad tiene algunos programas ejemplo en PBASIC para demostrar cómo repetir el mismo mensaje una y otra vez. y cómo controlar el tiempo para la repetición del mensaje. giran a ciertas velocidades en ciertas direcciones. intenta: PAUSE 2000 Un segundo se abrevia “s”. Continuous Rotation Servos: Los Standard Servos están diseñados para recibir señales eléctronicas que les indican que posición deben mantener. y se abrevia “ms”.Página 42 · Robótica con el Boe-Bot Standard Servos vs. Un milisegundo es la milésima parte de un segundo. pero en lugar de mantener ciertas posiciones. si quieres esperar un segundo. lo cual es equivalente a un segundo. El comando PAUSE 1000 retrasa el programa en 1000 ms. lo que equivale a 1000/1000 de segundo. Las unidades para el argumento de Duration son las milésimas de segundo (ms). PAUSE Duration El número que coloques al lado del comando PAUSE se llama argumento Duration. o 1 s. timones de barcos y volantes de carros. Los Continuous Rotation Servos son ideales para controlar ruedas y poleas. usa el valor 1000.

guarda y ejecuta el programa TimedMessages. las tres instrucciones escritas antes de este programa serán resumidas en una frase como esta: Introduce.." PAUSE 1000 DEBUG CR. Guarda el programa bajo el nombre “TimedMessages." DEBUG CR. cambia el interruptor de 3 posiciones de la posición 0 a la posición 1 Si posees un HomeWork Board. ' {$STAMP BS2} ' {$PBASIC 2.TimedMessages. Ejecuta el programa." PAUSE 2000 DEBUG CR.bs2.. Introduce el siguiente programa en el BASIC Stamp Editor.”. luego observa el retraso entre los mensajes. El programa debe esperar un segundo antes de desplegar el mensaje “One second elapsed…” y otros dos segundos antes del mensaje “Three seconds elapsed. .bs2 Existen diversas maneras de usar el comando PAUSE.. ' Robotica con el Boe-Bot . "Three seconds elapsed. "One second elapsed...bs2”.5} DEBUG "Start timer. Este programa de ejemplo usa PAUSE para retrasar la aparición de mensajes impresos que le indican cuanto tiempo ha pasado. "Done.bs2 ' Muestra como el comando PAUSE puede ser usado para mostrar mensajes ' a velocidades humanas.. √ √ √ √ √ Si posees una Board of Education Rev C. Tu Turno – Duraciones de Pause Diferentes Puedes cambiar el tiempo de retraso entre mensajes cambiando el valor del argumento Duration del comando PAUSE..." END De aquí en adelante. reconecta la batería de 9 V.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 43 Programa de ejemplo: TimedMessages.

intenta PAUSE 60000. CR PAUSE 1000 LOOP Programa de ejemplo: HelloOnceEverySecond.Página 44 · Robótica con el Boe-Bot √ Intenta cambiar los argumentos Duration del comando PAUSE de 1000 y 2000 a 5000 y 10000. por ejemplo: DEBUG "Start timer.bs2..... Si dispones de un minuto." PAUSE 10000 DEBUG CR. Simplemente coloca sus comandos DEBUG y PAUSE entre las palabras DO y LOOP de la siguiente manera: DO DEBUG "Hello!"." PAUSE 5000 DEBUG CR. van a pasar muy rápido. "Fifteen seconds elapsed.. También intenta con números como 40 y 100 para los argumentos Duration. Puedes colocar comandos entre las palabras DO y LOOP si deseas que se ejecuten una y otra vez. "Five seconds elapsed. . Verifica que el mensaje “Hello!” aparezca una vez cada segundo. digamos que quieres imprimir un mismo mensaje una vez por segundo. El argumento Duration más largo es 65535..bs2 √ √ Introduce. Una y Otra Vez Uno de los mejores aspectos de los microcontroladores y las computadoras es que nunca se quejan por hacer las mismas tareas aburridas una y otra vez. guarda y ejecuta el programa HelloOnceEverySecond." √ √ √ Ejecuta el programa modificado. Por ejemplo.

√ Incluso si estás familiarizado con el texto What’s a Microcontroller?.5} DO DEBUG "Hello!". CR PAUSE 1000 LOOP Tu Turno – Un Mensaje Diferente Puedes modificar tu programa para que una parte se ejecute una vez y la otra se ejecute una y otra vez. construirás circuitos que emitirán luz que te permitirán “ver” la clase de señales que se usan para controlar los servomotores del Boe-Bot. En la segunda mitad de esta actividad. ¿Qué es un microcontrolador? Extractos – Esta actividad contiene extractos seleccionados de la Guía para el Estudiante What’s a Microcontroller? Student Guide v2. √ Modifique el programa para que los comandos queden de esta manera: DEBUG "Hello!" DO DEBUG "!" PAUSE 1000 LOOP √ ¡Ejecútalo y observa qué sucede! ¿Esperabas ese resultado? ACTIVIDAD #2: REGISTRANDO EL TIEMPO Y REPITIENDO ACCIONES CON UN CIRCUITO En esta actividad.0. no obvies esta actividad. examinarás las señales que controlan tus servos y los diagramas de tiempo desde un punto de vista distinto al de What’s a Microcontroller? Introducción del LED y el Resistor Un resistor es un componente que ‘resiste’ el flujo de la electricidad.bs2 ' Muestra el mensaje una vez por segundo.HelloOnceEverySecond. ' {$STAMP BS2} ' {$PBASIC 2. Este flujo de electricidad se llama corriente.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 45 ' Robotica con el Boe-Bot . Cada resistor tiene un valor que indica cuán fuerte es la .

El dibujo de la derecha es un dibujo de partes utilizado en algunos niveles de principiantes en los textos Stamps in Class para ayudarte a construir los circuitos. En el símbolo esquemático. por sus siglas en inglés) emite luz cuando la corriente pasa a través de él. La mayoría de los diagramas de circuitos que muestran resistores usan el símbolo de la izquierda con las líneas en zigzag para indicarle a la persona que construye el circuito que debe usar un resistor de 470 Ω. Hay un casco de cerámica entre las dos patas y esa es la parte que resiste la corriente.) y dibujo de parte (der. uno saliendo de cada extremo. el color del LED simplemente indica cual es el color de la luz que se enciende cuando pasa la corriente eléctrica.Ω. Un diodo es una válvula de corriente unidireccional y un diodo emisor de luz (LED. Dado que un LED es una válvula de corriente unidireccional. En este dibujo de parte. El resistor tiene dos conectores (llamados patas). A diferencia del código de colores de los resistores. tendrás que integrar el LED en un circuito y deberás prestar atención y asegurarte de que el ánodo y el cátodo estén correctamente conectados al circuito. el ánodo está señalado con el signo (+).Página 46 · Robótica con el Boe-Bot resistencia a la corriente eléctrica. Ver Apéndice C: Código de Colores de un Resistor para información sobre cómo determinar el valor de un resistor por las bandas de colores del casco de cerámica.) 470 Ω Yellow Violet Brown Las bandas de colores indican los valores de resistencia. Las marcas importantes en un LED tienen que ver con su forma. En esta actividad. El resistor con el que estará trabajando en esta actividad es un resistor de 470 Ω mostrado en la Figura 2-2. de lo contrario no funcionará como esperas. el cátodo está señalado con el signo (-) y en el símbolo esquemático. el cátodo es la línea tangente al vértice del triángulo. Una es el ánodo y la otra es el cátodo. . Gold Silver or Blank Figura 2-2 Dibujo de Parte del Resistor de 470 Ω Símbolo esquemático (izq. En el dibujo de parte. el ánodo es la parte ancha del triángulo. La Figura 2-3 muestra el símbolo esquemático de un LED y su dibujo de parte. A esto se le llama símbolo esquemático. Un LED tiene dos terminales. Este valor de resistencia se llama ohm y el símbolo del ohm es la letra griega Omega . debes asegurarte de conectarlo de la manera correcta.

Por lo tanto. Si observa detalladamente el casco plástico del LED en el dibujo de partes. Siempre revisa el casco plástico del LED. Siempre verifica dos veces el circuito antes de reconectar la energía. asegúrate de compararlo con el símbolo esquemático y el dibujo de parte. Para el BASIC Stamp HomeWork Board. pero tiene una parte plana cerca de uno de las patas que señala el cátodo. siempre es mejor buscar la parte plana del casco. Nota también que las patas del LED son de tamaños diferentes. Si conectas el LED al contrario. LED Cuando comiences a construir un circuito.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 47 Figura 2-3 Dibujo de parte y símbolo esquemático del LED Dibujo de parte (arriba) y símbolo esquemático (abajo). tiene forma redondeada. Partes del Circuito de Prueba para el LED (2) LEDs – rojos (2) Resistores – 470 Ω (amarillo-violeta-marrón) ¡Siempre desconecta la energía de tu plaqueta antes de construir o modificar circuitos! Para la Board of Education Rev C. pero la luz no se encenderá. la pata mas larga está conectada al ánodo y el más corto al cátodo. Sin embargo a veces las patas son cortadas del mismo tamaño o el fabricante no sigue esta convención. En este texto. coloca el interruptor de 3 posiciones en la posición 0. Generalmente. el ánodo se mostrara con el signo + y el cátodo con el signo –. _ + Dibujos de parte posteriores del LED tendran un + al lado de la pata ánodo. no se dañará. . desconecta la batería de 9 V.

El BASIC Stamp tiene 24 pines.Página 48 · Robótica con el Boe-Bot Circuitos de Prueba para el LED Si completaste el texto What’s a Microcontroller?. √ √ √ Construye el circuito mostrado en la Figura 2-4. Asegúrate de que los pines más corto de cada LED (los cátodos) estén conectados en los enchufes negros marcados Vss. programarás el BASIC Stamp para usar pines I/O como salidas para lograr que las luces del LED se apaguen y se prendan. controlen la velocidad y dirección de giro de los Continuous Rotation servos de Parallax. niveles de luz. Asegúrate de que los pines más largos (los ánodos. reproduzcan tonos con altavoces y preparen sensores para detectar luces y objetos. 16 de los cuales son pines I/O. También programarás el BASIC Stamp para que use pines I/O como entradas para monitorear sensores que indiquen contacto mecánico. seguramente estás familiarizado con el circuito mostrado en la Figura 2-4. por sus siglas en inglés. En este texto. Figura 2-4 Dos LEDs conectados a los pines I/O P13 y P12 del BASIC Stamp Diagrama esquemático (izquierda) y diagrama de conexión (derecha). objetos en el camino del Boe-Bot e incluso sus distancias. marcados con un ⊕ en el diagrama de conexión) estén conectados en los enchufes del protoboard exactamente como se muestra. El lado izquierdo muestra el esquema del circuito y el lado derecho muestra un ejemplo de diagrama de conexión del circuito construido en el área de prototipos de tu plaqueta. Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin + Vss + P13 470 Ω P12 470 Ω LED Vss Vss LED ¿Qué es un pin I/O? I/O significa entrada/salida. ¿Es nuevo construyendo circuitos? Ver Apéndice D: Reglas para Uso de la Protoboard. .

Cuando se realizan estas conexiones. Puedes ir un paso más allá conectando la pata del resistor a Vss.3 mA pasan a través del circuito de la Figura 2-5. 5 A. Vdd + 5V +++ +++ +++ N N Vdd + 5V + = N N + Vss _ ------N N -N - +++ +++ +++ N N N Figura 2-5 BASIC Stamp cambiando la conección El BASIC Stamp puede ser programado para conectar internamente la entrada del circuito de LED a Vdd o Vss. la corriente dejará de fluir y el LED dejará de emitir la luz. A pesar de que una batería de 5 V no es común. etc. Corriente se refiere a la velocidad con la que los electrones pasan a través de un circuito. es como aplicar presión eléctrica.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 49 La Figura 2-5 muestra lo que hará el BASIC Stamp en el circuito del LED después de que lo programes. Cuando conectas el otro extremo del circuito a Vdd. La cantidad de energía que un motor eléctrico consume generalmente se mide en amperios. . Cuando aplicas voltaje a un circuito. Esta es la acción para la cual programarás al BASIC Stamp. Vss _ ------N N -N Voltios se abrevia V. Cuando conectas un circuito a Vss. 10. para que se encienda el LED (emita luz) y se apague (no emita luz). por ejemplo 2 A. es decir. causando el flujo de electrones y que el LED emita una luz. Por ejemplo. 5 V de presión eléctrica son aplicados al circuito. que se abrevia A. Imagina que tienes una batería de 5 voltios (5 V). Esto significa que 5 voltios se abrevia 5 V. Tan pronto como desconectes la pata del resistor del extremo positivo de la batería. Sin embargo. es como conectar el circuito al extremo negativo de una batería de 5 V. A menudo verás medidas de corriente expresadas en amperios. lo cual tendrá el mismo resultado. la Board of Education posee un dispositivo llamado regulador de voltaje que suministra un equivalente a una batería de 5 V al BASIC Stamp. o miliamperios. es como conectarlo al extremo positivo de una batería de 5 V. las corrientes que usarás en tu Board of Education son medidas en milésimas de amperios.

lo cual apaga el LED. Verifica que el circuito de LED conectado al P13 se encienda y se apaga cada segundo. ' {$STAMP BS2} ' {$PBASIC 2. si usas el comando HIGH 13 le indicas al BASIC Stamp que conecte el pin I/O P13 a Vdd.5} DEBUG "The LED connected to Pin 13 is blinking!" DO HIGH 13 PAUSE 500 LOW 13 PAUSE 500 LOOP .bs2 √ √ √ Reconecta la energía a tu plaqueta. El argumento Pin es un número entre 0 y 15 que le indica al BASIC Stamp cuál pin I/O debe conectar a Vdd o Vss.Página 50 · Robótica con el Boe-Bot Programas de Control para Los Circuitos de Prueba para el LED Los comandos HIGH y LOW son usados para hacer que el BASIC Stamp conecte un LED alternamente a Vdd y Vss. Programa de ejemplo: HighLowLed. lo cual enciende el LED. ' Robotica con el Boe-Bot – HighLowLed. Introduce. De igual manera. Intentemos lo siguiente. guarda y ejecuta el programa HighLowLed. HIGH Pin LOW Pin Por ejemplo.bs2.bs2 ' Prender/Apagar el LED conectado a P13 una vez cada segundo. si usas el comando LOW 13 le indicas al BASIC Stamp que conecte el pin I/O P13 a Vss.

bs2. son ejecutados una y otra vez. Cuando está conectado a Vss. . Al colocar un comando DEBUG al programa LedOnOff. el comando PAUSE 500 indica al BASIC Stamp que lo deje en ese estado durante 500 ms. El comadno PAUSE 500 indica al BASIC Stamp que deje el circuito en ese estado durante 500 ms. el LED no emite ninguna luz. Cuando está conectado a Vdd. Dado que estos comandos están escritos entre DO y LOOP. pero sería importante saber si lo tiene. Nuevamente.LOOP.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 51 Funcionamiento del Programa HighLowLed. el LED emite una luz. el Debug Terminal abierta evita que esto suceda. √ √ √ Abre el programa HighLowLed. tu computadora no tiene ese problema. detienen el programa de PBASIC después de la primera vez en un bucle DO. 8 9 17 16 8 9 17 16 10 11 15 14 10 11 15 14 12 13 12 13 BS2-IC BS2-IC Una Prueba Diagnóstico para tu Computadora Muy pocas computadoras.. Si el LED titila continuamente. al igual que cuando ejecutaste el programa normal con el comando DEBUG. tal es el caso de algunas laptops. A continuación volverás a ejecutar este programa sin el comando DEBUG para ver si tu computadora tiene este problema de diseño de puerto serial no estándar. Borra la instrucción DEBUG por completo. El comando HIGH 13 indica al BASIC Stamp que conecte P13 a Vdd.bs2 La Figura 2-6 muestra cómo el BASIC Stamp puede conectar un circuito de LED alternamente a Vdd y Vss. Ejecuta el programa modificado mientras observas el LED. El comando LOW 13 indica al BASIC Stamp que conecte el LED a Vss. Estas computadoras tienen un diseño de puerto serial no estándar. SOUT SIN ATN VSS P0 P1 P2 P3 P4 P5 P6 P7 1 24 VIN VSS RES VDD (+5V) P15 P14 P13 P12 P11 P10 P9 P8 SOUT SIN ATN VSS P0 P1 P2 P3 P4 P5 P6 P7 1 24 VIN VSS RES VDD (+5V) P15 P14 P13 P12 P11 P10 P9 P8 2 3 4 5 6 7 BS2 Vdd Vss 23 22 21 20 19 18 2 3 4 5 6 7 BS2 Vdd Vss 23 22 21 20 19 18 Figura 2-6 BASIC Stamp cambiando la conexión El BASIC Stamp puede ser programado para conectar internamente la entrada del circuito de LED a Vdd o Vss.bs2. No es probable..

.bs2 … Vss (0 V) 500 ms 1000 ms El estado LED encendido/apagado se muestra arriba del diagrama. tienes una computadora con un diseño de puerto serial no estándar. . En la Figura 2-7. el tiempo aumenta de izquierda a derecha. Introducción al Diagrama de Control de Tiempo Un diagrama de control de tiempo es un gráfico que relaciona las señales altas (Vdd) y las bajas (Vss) con el tiempo. deberías añadir el comando: DEBUG "Program Running!" Justo después de las directivas del compilador. Verás este comando en algunos de los programas de ejemplo que de otra manera no necesitarían la instrucción DEBUG. o cualquier otro comando de bucle que aprendas en capítulos posteriores. . Si desconectas el cable serial de tu plaqueta y presionas el botón Reset. Por lo tanto.) a la derecha de la señal es una forma de indicar que la señal se repite. Esto abrirá el Debug Terminal y mantendrá abierto el puerto COM. La línea punteada (.Página 52 · Robótica con el Boe-Bot Si el LED sólo titiló una vez y se detuvo. Este diagrama de control de tiempo muestra un fragmento de 1000 ms de la señal alta/baja con la que acabas de experimentar. deberías ser capaz de ejecutar el resto de los programas de este libro aunque tu computadora no haya pasado la prueba diagnóstico. el BASIC Stamp ejecutará el programa correctamente sin detenerse. 500 ms Vdd (5 V) Figura 2-7 Diagrama de control de tiempo para el programa HighLowLed. Esto evitará que tus programas se detengan después de una repetición del ciclo DO…LOOP. y las señales altas y bajas están alineadas con Vdd (5 V) o Vss (0 V). En programas escritos por ti mismo.

más alto o más bajo. También puedes hacer que ambos LEDs titilen al mismo tiempo. √ Modifica el programa para que los comandos queden de la siguiente manera: DO HIGH 12 HIGH 13 PAUSE 500 LOW 12 LOW 13 PAUSE 500 LOOP √ Ejecuta el programa modificado y verifica que ambos LEDs se encienden y se apagan casi simultáneamente. √ ¡Inténtalo! . y también puedes cambiar el ritmo del titileo ajustando el argumento Duration del comando PAUSE. Puedes volver a modificar el programa para hacer que un LED se encienda y se apague.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 53 Tu Turno – Encendido y Apagado del Otro LED Hacer que el otro LED (conectado a P12) se encienda y se apague se logra simplemente cambiando el argumento Pin en los comandos HIGH y LOW y volviendo a ejecutar el programa. √ Modifica el programa para que los comandos queden de la siguiente manera: DO HIGH 12 PAUSE 500 LOW 12 PAUSE 500 LOOP √ Ejecuta el programa modificado y verifica que el otro LED se enciende y se apaga.

deben durar períodos muy precisos de tiempo. Por ejemplo. Puedes mandar una señal HIGH que enciende el LED conectado a P13 durante 2 μs (dos millonésimas de segundo) usando este comando: PULSOUT 13. Estas cantidades de tiempo son valores que se usan en el argumento Duration y se miden en unidades que equivalen a ¡dos millonésimas de segundo! PULSOUT Pin. El período de tiempo equivale a 65000 veces 2 μs. Eso es: Duration = 65000 × 2 μs = 65000 × 0. Para un control preciso de servomotores. 8 microsegundos se abrevia 8 μs. Duration Un microsegundo es la millonésima parte de un segundo.000002 s = 0. 1 Este comando encenderá el LED durante 4 μs PULSOUT 13. es la letra griega mu ‘μ’. . después de que lo programes para ello. Sólo puede cambiar el argumento Duration del comando PAUSE en 1 ms (recuerda.Página 54 · Robótica con el Boe-Bot Viendo una Señal de Control de Servo con un LED Las señales altas y bajas que el BASIC Stamp enviará a los servomotores. el tiempo durante el que estas señales se mantienen altas debe tener mucha más precisión de la que se puede lograr con un comando HIGH y uno PAUSE. 2 Este comando enviará una señal alta que podrás ver: PULSOUT 13. no es la letra ‘u’ de nuestro alfabeto. Debes ser cuidadoso al escribir este valor. Esto se debe a que los servomotores miden la cantidad de tiempo que la señal se mantiene alta y la usan como una instrucción que les indica hacia dónde girar. eso es 1/1000 de segundo) a la vez. 65000 ¿Por cuánto tiempo permanecerá el circuito de LED conectado a P13 encendido cuando envíe este pulso? Deduzcámoslo.13 s lo cual sigue siendo bastante rápido. trece centésimas de segundo. Se abrevia μs. Existe un comando diferente llamado PULSOUT que puede enviar señales altas durante períodos de tiempo precisos.

Esto es 100 veces más lento que la señal que el servo necesita para controlar sus movimientos. Verifica que el circuito de LED esté conectado a pulsos P13 durante trece centésimas de segundo. 65000 PAUSE 2000 LOOP Programa de ejemplo: PulseBothLeds. guarda y ejecuta el programa PulseP13Led.0 s Figura 2-8 Diagrama de control de tiempo para el programa PulseP13Led.13 segundos y la señal baja dura 2 segundos. ' {$STAMP BS2} ' {$PBASIC 2.bs2 El diagrama de control de tiempo en la Figura 2-8 muestra la serie de pulsos que estás a punto de enviar al LED con este nuevo programa. para durante dos segundos. 0. .13 segundos al circuito LED conectado a P13 cada 2 s.bs2 ' Envia un pulso de 0. una vez cada dos segundos.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 55 El valor más alto que puedes usar en un argumento Duration es 65535. Programa de ejemplo: PulseP13Led.13 s Vss (0 V) 2. Esta vez.13 s Vdd (5 V) 0.bs2.bs2 Este programa de ejemplo enviará un pulso al LED conectado a P13 y luego manda un pulso al LED conectado a P12 como lo muestra la Figura 2-9. la señal alta dura 0.5} DEBUG "Program Running!" DO PULSOUT 13.bs2 √ √ Introduce. ' Robotica con el Boe-Bot – PulseP13Led. Después.

13 s Figura 2-9 Diagrama de control de tiempo para el programa PulseBothLeds. A veces el tiempo no se incluye.bs2. Los ingenieros que crearon el BASIC Stamp tuvieron que buscar en varios documentos este tipo información necesaria para ayudarles a tomar decisiones mientras diseñaban el producto. √ √ Introduce.bs2 0. 2.Página 56 · Robótica con el Boe-Bot 0. Esto es una práctica común en documentos que explican el control del tiempo de las señales altas y bajas. Este concepto se discute en más detalle en Basic Analog and Digital.13 segundos a P13 y P12 cada 2 segundos. ' {$STAMP BS2} ' {$PBASIC 2.13 segundos. los valores de tiempo deseados para thigh y tlow se encuentran en una tabla a continuación del diagrama.13 s P12 Los LEDs emiten luz durante 0. Con el BASIC Stamp.5} DEBUG "Program Running!" . Verifica que circuitos de LED emiten pulsos simultáneamente durante unas trece centésimas de seguno.bs2 ' Envia un pulso de 0. ' Robotica con el Boe-Bot – PulseBothLeds.13 s P13 0. Entonces.13 s 0. Muchas veces hay uno o más documentos de este tipo para cada componente del circuito que un ingeniero está diseñando. otra Guía para el estudiante del curriculum Stamps in Class de Parallax. mientras la señal es alta. o simplemente no se muestra explícitamente thigh y tlow. se entiende que la señal alta es de 5 V (Vdd) y que la señal baja es de 0 V (Vss).26 s Los voltajes (Vdd y Vss) en este diagrama de control de tiempo no están señalados. guarda y ejecuta el programa PulseBothLeds. una vez cada dos segundos.

6500 PAUSE 200 LOOP √ Ejecuta el programa modificado y verifica que los LEDs titilan 10 veces más rápido. Esto se debe a que el LED está titilando tan rápido y por períodos de tiempo tan breves que el ojo humano no puede detectar el titileo. Primero. DO PULSOUT 13. probemos 100 veces más rápido (una centésima de la duración). el LED simplemente parecerá ser menos brillante que con la señal alta normal. √ Modifica el programa para que quede como el siguiente: DO PULSOUT 13. En lugar de parecer un titileo. 6500 PULSOUT 12.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 57 DO PULSOUT 13. probemos ejecutar el programa 10 veces más rápido. Ahora. √ Modifica el programa para que quede como el siguiente: DO PULSOUT 13. Eso signidica dividir todos los argumentos Duration (PULSOUT y PAUSE) por 10. Intenta substituir 850 en el argumento Duration para el comando PULSOUT que va a P13. 850 . sólo detecta un cambio en el brillo. 65000 PULSOUT 12. 650 PULSOUT 12. 650 PAUSE 20 LOOP √ √ Ejecuta el programa modificado y verifica que los LEDs producen el mismo brillo. 65000 PAUSE 2000 LOOP Tu Turno – Observando la Señal del Servo a Velocidad Completa Recuerda que la señal del servo es 100 veces más rápida que el programa que acabas de ejecutar.

Intenta substituir 750 en el argumento Duration para el comando PULSOUT que va a ambos LEDs. construirás un circuito que conecta al servo a una fuente de alimentación y a un pin I/O del BASIC Stamp. Puede ser que tengas que colocar sus manos alrededor de los LEDs y mirar dentro para notar la diferencia. Partes para Conectar los Servos (2) Continuous Rotation Servos de Parallax (2) Circuitos de LED construidos y probados de la actividad anterior Encontrando las Instrucciones de Conexión para tu Carrier Board Existen tres diferentes Revs de la Board of Education y un Rev de la BASIC Stamp HomeWork Board. . DO PULSOUT 13. ACTIVIDAD #3: CONECTANDO LOS SERVOMOTORES En esta actividad. 750 PULSOUT 12. La Figura 2-10 muestra ejemplos de las etiquetas que puedes encontrar en tu plaqueta. pero el nivel de brillo está entre los niveles obtenidos con los argumentos Duration de 650 y 850. Puede que no sea obvio. Son diferentes porque la cantidad de tiempo que el LED conectado a P13 permanece encendido es más larga que la del LED conectado a P12. 650 PAUSE 20 LOOP √ Ejecuta el programa modificado y verifica que el LED P13 se ve un poco más brillante que el LED P12. Los Boards of Education pueden ser Rev A. 750 PAUSE 20 LOOP √ √ Ejecuta el programa modificado y verifica que el brillo de ambos LEDs es el mismo otra vez.Página 58 · Robótica con el Boe-Bot PULSOUT 12. B o C. El HomeWork Board es Rev B. Los circuitos de LED que desarrollaste en la actividad previa serán usados posteriormente para monitorear las señales que el BASIC Stamp envía a los servos para controlar sus movimientos.

com www. Tan sólo utiliza el paquete de baterías de 6 V como fuente de alimentación para los proyectos del Boe-Bot con una Board of Education Rev B. deberá conectar la energía.com Rev B X2 Vdd X3 Vin Vss Board of Education Rev C © 2000-2003 BASIC Stamp HomeWork Board Rev B 15 14 13 12 Red Black Board of Education Rev C Rev A STA in C MPS LASS Figura 2-10 Ejemplos de etiquetas Rev en la BASIC Stamp HomeWork Board y la Board of Education X4 Vdd X5 Vin Rev B Vss VR1 X3 X2 5 Vdd nc Vss X3 Board of Education Rev B Board of Education Rev A √ Sabiendo la revisión de tu carrier board. La Board of Education Rev B no tiene una configuración de puentes para la energía. sigue las instrucciones para la Board of Education Rev C a lo largo del texto. recordando siempre estos dos puntos: • La Board of Education Rev B no tiene interruptor de tres posiciones. B o A. . avanza a las instrucciones (enumeradas a continuación) para conectar el servo a tu plaqueta: Página 60 Página 63 → → Board of Education Rev C BASIC Stamp HomeWork Board Board of Education Rev B Si posees una Board of Education Rev B.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 59 √ Examina la etiqueta de tu carrier board y determine si tienes un BASIC Stamp HomeWork Board Rev B o una Board of Education Rev C. Deberás desconectar la salida del paquete de baterías de la salida de energía de la Board of Education cuando se indique colocar el interruptor de 3 posiciones en la posición 0. Cuando se indique colocar el interruptor de tres posiciones en la posición 1 o 2.stampsinclass. • Board of Education Rev A Si posees una Board of Education Rev A. P3 P2 P1 P0 (916) 624-8333 www. sigue las instrucciones para el BASIC Stamp HomeWork Board a lo largo del texto.parallaxinc.

Esta plaqueta tiene un puente que puede ser utilizado para conectar la fuente de alimentación del servo a Vin o Vdd. avanza a la Actividad #4: Calibrando los Servos en la página 67.5 V). debes halarlo hacia arriba y fuera de los pines sobre los que está y luego empujarlo sobre el par de pines sobre los que quieres que esté.2 V en vez de 1. √ Si está usando el paquete de baterías de 6 V. asegúrate de que el puente entre los puertos de servo y la Board of Education está fijado en Vin como se muestra a la izquierda en la Figura 2-12. Para moverlo. √ Si está utilizando una fuente de CC 1000 mA center positive de 7.5 V. Evite baterías recargables porque son de 1. .Página 60 · Robótica con el Boe-Bot √ Cuando termines. Conectando los Servos a la Board of Education Rev C √ Apaga la energía colocando el interruptor de 3 posiciones de la Board of Education en la posición 0 (ver Figura 2-11). Reset 0 1 2 Figura 2-11 Desconecta la energía La Figura 2-12 muestra el cabezal del servo en la Board of Education Rev C. fije el puente eléctrico a Vdd como se muestra en la parte derecha de la Figura 2-12. Usa sólo baterías alcalinas AA (1.5 V.

Capítulo 2:Los Servomotores de tu Boe-Bot · Page 61 PRECAUCIÓN – El uso incorrecto de fuentes AC powered DC puede dañar sus servos. Si no tienes experiencia con fuentes de CC. Figura 2-12 Seleccionando la fuente de alimentación de tu servo en la Board of Education Rev C X4 X5 Vin Todos los ejemplos e instrucciones de este libro usan el paquete de baterías. √ Conecta los servos al Board of Education Rev C como se muestra en la Figura 213. La Figura 213 muestra el esquema del circuito que construirás en la Board of Education Rev C. considere usar sólamente el paquete de baterías de 6 V que viene con el Boe-Bot. Usa sólamente fuentes de CC con sálidas de voltaje entre 6 y 7. 15 14 Vdd 13 12 Red Black X4 X5 Vin Selecciona Vin si estás usando el paquete de baterías que viene con los kits del Boe-Bot. . El puente eléctrico está colocado en Vin. Sólo usa fuentes de CC equipadas con el mismo tipo de enchufe que el paquete de baterías del Boe-Bot (2. y salidas de corriente de 800 mA o más. 15 14 Vdd 13 12 Red Black Selecciona Vdd si estás usando una fuente de alimentación DC que se conecta a un enchufe AC (adaptador AC). center-positive).1 mm.5 V.

Estos serán los circuitos de monitoreo de señal de los servos. √ Cuando termines de ensamblar el sistema. Si el número es 12. (los circuitos LED no aparecen en la imagen). significa que el servo está conectado a P13. debería verse como la Figura 2-14. . asegúrate de reconstruirlos como lo indica la Figura 2-15. Si el número del cabezal en el que está conectado el servo es 13. Figura 2-14 Board of Education con los servos y el paquete de baterías conectado √ Si retiraste los circuitos de LED después de la Actividad #2. significa que está conectado a P12.Página 62 · Robótica con el Boe-Bot Vin P13 White Red Black White Red Black White Red Black 15 14 Vdd 13 12 Vss Vin P12 White Red Black Red Black X4 X5 Figura 2-13 Diagrama esquemático de la conección del Servo y diagrama de conexión para la Board of Education Rev C Vss ¿Cómo determinar cuál servo está conectado a P13 y cuál servo está conectado a P12? Acabas de conectar los servos a cabezales que tienen unos números sobre ellos.

Conectando los Servos a la BASIC Stamp HomeWork Board Si estás conectando los servos a la BASIC Stamp HomeWork Board. √ Para desconectar la energía de tu Board of Education Rev C. necesitarás las partes enumeradas a continuación y mostradas en la Figura 2-16: Lista de partes: (1) Paquete de baterías con conexiones estañadas (2) Continuous Rotation Servos de Parallax (2) Cabezales de 3 pines macho-macho (4) Cables para puente eléctrico (4) Baterías AA – 1.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 63 Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin + Vss + P13 470 Ω P12 470 Ω LED Vss Vss LED Figura 2-15 Cicuito de monitoreo de la señal del servo con el LED Desconectando la Energía – Instrucciones Especiales para la Board of Education Rev C Nunca dejes la energía conectada a tu sistema cuando no estés trabajando con él. coloca el interruptor de 3 posiciones en la posición 0. √ Avanza hasta la página 67 (Actividad #4: Calibrando los Servos).5 V alcalinas (2) Circuitos de LED construidos y probados en la actividad anterior .

√ La batería de 9 V debe desconectarse del clip de la batería y el paquete de baterías con conexiones estañadas no debe tener ninguna batería adentro.Página 64 · Robótica con el Boe-Bot Figura 2-16 Partes para el centrado de servos con la HomeWork Board La Figura 2-17 muestra un esquema de circuitos de servos en la HomeWork Board. Vbp P13 White Red Black Figura 2-17 Vss Vbp P12 White Red Black Diagrama esquemático de la conexión de servos para la BASIC Stamp HomeWork Board. asegúrate de que la energía esta desconectada del BASIC Stamp HomeWork Board. . Construye los puertos de servos mostrados en la parte izquierda de la Figura 218. Antes de comenzar a construir este circuito. Vss √ √ Retira los dos circuitos de LED/resistors y guarda las partes.

La fuente de alimentación de tu BASIC Stamp sigue siendo la batería de 9 V. Cable negro con (916) 624-8333 banda negra www. Vbp y P12 coinciden exactamente con el diagrama de conexión. Vbp.stampsinclass. Vbp son las siglas de Voltage battery pack (Voltaje del paquete de baterías. Vss. en inglés). Verifica dos veces para asegurarte de que todas las conexiones para P13.5 V.parallaxinc.com www. .com Cable negro Rev B (916) 624-8333 www.com Rev B Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 Vin Vss Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 Vin Vss Figura 2-18 Diagrama de conexión indicando la conexión de los servos en la BASIC Stamp HomeWork Board Izquierda (construye los puertos de servos). Conecta los enchufes de los servos en el cabezal macho como se muestra en la parte derecha de la Figura 2-18.parallaxinc.com www. Verifica dos veces para asegurarte de que los colores de los cables del servo coinciden con la leyenda de la imagen. Esto se refiere a 6 VDC generados por las baterías de 1. Esto es suministrado directamente a la protoboard para dar energía a los servos en los Boe-Bots construidos con el HomeWork Board o Board of Education Rev A.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 65 √ √ √ √ Verifica dos veces para asegurarte de que el cable negro esté conectado junto con el cable blanco a Vss.stampsinclass. Derecha (conecta los servos). P13 Vbp Vss Vbp P12 Blanco Rojo Negro Rojo Blanco Conexiones en puertos Conexiones de servos por color Tu configuración debe ser similar a la Figura 2-19.

stampsinclass. (916) 624-8333 www.com www.Página 66 · Robótica con el Boe-Bot Figura 2-19 Suministros de alimentación duales y servos conectados √ Reconstruye el circuito de LED como se muestra en la Figura 2-20.parallaxinc.com Rev B Vdd Vin P13 470 Ω P12 470 Ω LED Vss Vss LED X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 + Vss Vss + Figura 2-20 Circuito de monitoreo de señal del servo con el LED © 2002 HomeWork Board .

Retira una batería del paquete de baterías. Sin embargo. Herramientas y Partes de los Servos El destornillador de Parallax mostrado en la Figura 2-21 es la única herramienta adicional que necesitará paras esta actividad. Luego de este ajuste. y Vss). Esta señal es llamada señal de centrado y después de que el servo ha sido debidamente ajustado. cualquier destornillador de punta plana de Estría #1 con un eje de 1/8" (3.18 mm) sirve. Este proceso se llama calibrar (o centrar) los servos.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 67 √ Cuando todas tus conexiones estén construidas y hayan sido verificadas dos veces. Entonces utilizarás un destornillador para ajustarlos de tal manera que se detengan completamente. Vin. coloca las baterías en el paquete de baterías y reconecta la batería de 9 V al clip de batería de la HomeWork Board. probarás los servos para comprobar que funcionan adecuadamente. en lugar de no moverse. desconectar la energía requiere de dos pasos: √ √ Desconecta la batería de 9 V del clip de batería para desconectar la energía de la HomeWork Board. Esto desconecta la energía del BASIC Stamp incorporado y las tomas de energía que se encuentran sobre el protoboard (Vdd. ejecutarás un programa que manda una señal a los servos. La instrucción consiste en pulsos de 1. Esto desconecta la energía de los servos. Desconectando la energía – Instrucciones especiales para la HomeWork Board Nunca dejes la energía conectada a tu sistema cuando no esté trabajando con él. De aquí en adelante. ordenándoles quedarse quietos. . ACTIVIDAD #4: CALIBRANDO LOS SERVOS En esta actividad. esta señal le indica al servo que no se mueva.5 ms con pausas de 20 ms entre cada pulso. comenzarán a girar. Debido a que los servos no están preajustados de fábrica. Figura 2-21 Destornillador Parallax Enviando la Señal de Centrado La Figura 2-22 muestra la señal que debe ser enviada al servo conectado a P12 para calibrarlo. Los programas de prueba enviarán señales para ordenar a los servos que se muevan conreloj (CNR) y contrareloj (CTR) a diferentes velocidades.

5 ms P12 Figura 2-22 Diagrama de control de tiempo para el programa CenterServoP12. será PAUSE 20 para los 20 ms entre cada pulso.Página 68 · Robótica con el Boe-Bot 1. Lo mejor es centrar sólo un servo a la vez. 20 ms El programa para esta señal será un comando PULSOUT y un comando PAUSE dentro de un DO…LOOP.5 ms 1. Recuerda que el número que esté en el argumento Duration del comando PULSOUT. √ Si posees una Board of Education Rev C. se multiplica por 2 μs (2 dos milésimas de segundo = 0. También puedes calcular cual debe ser el argumento Duration del comando PULSOUT si deseas saber cuánto durará cada pulso. Este programa sólo enviara la señal de centrado al servo conectado a P12 y las instrucciones a continuación te guíaran durante el proceso de ajuste. Calcular el argumento Pin del comando PULSOUT también es fácil. Simplemente divide 2 μs por el tiempo que quieres que dure.5 ms a P12 debe ser PULSOUT 12. será 12.5 ms pulsos. Calcular el comando PAUSE para el diagrama de control es fácil.bs2 Los pulsos de 1.000002 s sabemos que el comando para un pulso de 1. Después de completar el proceso con el servo conectado a P12.0015 s = 750 2 μs 0. Con este cálculo: Duration argument = Pulse duration 0. 750. 1. Luego. calculemos cuál debe ser el argumento Duration del comando PULSOUT para lograr 1.5 ms es equivalente a 1. para el pin I/O P12. y así sabrás cuánto tiempo va a durar.5 ms indican al servo que no se mueva. o 0. porque así puedes escuchar cuándo el motor se detiene mientras lo ajustas. asegúrate de colocar el interruptor de 3 posiciones en la posición 2 como se muestra en la Figura 2-23. . repetirás el proceso con el servo conectado a P13.0015 s.000002 s).5 milésimas de segundo.

√ Si el servo todavía no está centrado. luego continúa con las instrucciones que siguen después del programa. √ Introduce. usa un destornillador para ajustar suavemente el potenciómetro en el servo como se muestra en la Figura 2-24.CenterServoP12. Ejemplo Program: CenterServoP12. . Si los servos comienzan a girar (o moverse levemente sin control) apenas conecta la energía Probablemente se deba a que el BASIC Stamp está ejecutando el programa que ejecutaste en la actividad anterior. Ajusta el potenciómetro hasta que el servo deje de moverse. verifica las conexiones de energía de tu BASIC Stamp y de sus servos.bs2 ' Robotica con el Boe-Bot . √ Asegúrate de introducir.5 ms al servo conectado a P12 para ' centrarlo manualmente ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Program Running!" DO PULSOUT 12. el cuerno comenzará a girar y podrás escuchar el motor haciendo un ruido como un silbido.bs2. y el paquete de baterías de 6 V debe tener las cuatro baterías puestas. guardar y ejecutar el programa CenterServoP12. La batería de 9 V debe estar conectada al clip de batería.bs2 ' Este programa envia pulsos de 1. 750 PAUSE 20 LOOP Si el servo todavía no ha sido centrado. guarda y ejecuta el programa el programa CenterServoP12.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 69 0 1 2 Figura 2-23 Coloca el interruptor de 3 posiciones en la posición 2 √ Si estás utilizando la HomeWork Board.bs2 antes de avanzar hasta las instrucciones para centrar el srvo que siguen al programa de ejemplo.

√ Si el servo no gira. Tu Turno – Centrando el Servo Conectado a P13 √ Repite el proceso para el servo conectado a P13 usando el siguiente programa: . muestre actividad. no girará. pero un servo dañado o defectuoso tampoco girará. Puede aprender más acerca de potentiometers en las guías para el estudiante What's a Microcontroller? y Basic Analog and Digital. otros tienen salidas que pueden ser ajustadas con un destornillador. La Actividad #6 descartará esta posibilidad antes de que los servos sean instalados en el chasis de tu Boe-Bot. El resistor de un potenciómetro se ajusta con una parte movible.Página 70 · Robótica con el Boe-Bot Precaución: ¡No presiones demasiado fuerte el destornillador! El potenciómetro que se encuentra dentrro del servo es muy delicado. Debe estar emitiendo una luz. El resistor del potenciómetro dentro del Continuous Rotation servo de Parallax se ajusta con la punta de un destornillador de Estría #1 de punta plana. indicando que los pulsos están siendo transmitidos al servo conectado a P12. En algunos potenciómetros. Si el servo ya ha sido centrado. Es improbable. esta parte movible es una perilla o una barra corrediza. avanza hasta la sección Tu Turno en la página 70 para que puedas probar y centrar el otro servo que está conectado a P13. ¿Qué es un Potenciómetro? Un potenciómetro es una especie de resistor ajustable. por lo tanto debes procurar no ejercer más presión de la necesaria cuando estés ajustando el servo. conectado a P12. Figura 2-24 Centrando el servo Inserta la punta del destornillador Phillips en el orificio de acceso al potenciómetro. Gire suavemente el destornillador para ajustar el potenciómetro √ Verifica que el circuito de señal de monitoreo de LED.

5 ms al servo conectado a P13 para ' centrarlo manualmente ' {$STAMP BS2} ' {$PBASIC 2.CenterServoP13. Vdd. pero mantén la batería de 9 V conectada al clip de batería. ACTIVIDAD #5: COMO GUARDAR VALORES Y CONTAR Esta actividad introduce variables. Si posees una Board of Education Rev C. retira una batería del paquete de baterías. El BASIC Stamp. Retira una de las baterías del paquete de baterías. Si posees una BASIC Stamp HomeWork Board. √ Si posees una Board of Education Rev C.bs2 ' Este programa envia pulsos de 1. Vdd. Vin y Vss permanecerán conectados a la fuente de alimentación. estos valores serán de importancia fundamental para programas posteriores del Boe-Bot. que son usadas por programas escritos en PBASIC para almacenar valores.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 71 Programa de ejemplo: CenterServoP13. coloca el interruptor de 3 posiciones en la posición 1. pero la energía permanece conectada al BASIC Stamp incorporado. Lo más importante de poder almacenar valores es que el programa puede usarlos para contar. En este libro. Esto desconecta la energía de los puertos de servo.5} DEBUG "Program Running!" DO PULSOUT 13. Esto desconecta la energía de los puertos de los servos sólamente. podrá controlar y hacer seguimiento del número de veces que algo sucede.bs2 ' Robotica con el Boe-Bot . Si posees un BASIC Stamp HomeWork Board: √ √ Desconecta la batería de 9 V battery del clip de batería para desconectar la energía de la HomeWork Board. √ Coloca el interruptor de 3 posiciones en la posición 0. √ . Tus servos no necesitan estar conectados a una fuente de alimentación para la siguiente actividad. 750 PAUSE 20 LOOP Recuerda desconectar completamente la energía cuando termines. Vin y Vss. Tan pronto como tu programa sea capaz de contar.

el programa comenzará automáticamente asignando el número cero a esa variable. o en otras palabras. asignarle un valor inicial. He aquí unos ejemplos: value = 10 * value anotherValue = 2 * value Programa de ejemplo: VariablesAndSimpleMath. A esto se le llama el valor por defecto de la variable. debes darle un nombre y especificar su tamaño.bs2 Este programa muestra como declarar. inicializar y realizar operaciones con variables. value = 500 anotherValue = 2000 Valor por defecto – Si no inicializas una variable.Página 72 · Robótica con el Boe-Bot Usando Variables para Almacenar Valores. A este proceso se le llama declarar la variable. variableName VAR Size Puedes declarar cuatro tamaños diferentes para las variables de PBASIC: Tamaño Bit Nib Byte Word – – – – – Capacidad de almacenamiento 0a1 0 a 15 0 a 255 0 a 65535 ó -32768 a+ 32767 El siguiente programa de ejemplo incluye nada más un par de variables de tamaño Word: value anotherValue VAR VAR Word Word Después de haber declarado una variable. El signo “=” en la línea value = 500 es un ejemplo de un operador. también puedes inicializarla. Realizar Operaciones Matemáticas y Contar Las variables pueden ser utilizadas para almacenar valores. . Antes de poder utilizar una variable en PBASIC. Puedes utilizar otros operadores para realizar operaciones matemáticas con variables.

bs2. {$STAMP BS2} {$PBASIC 2. Compara los resultados con tus predicciones y explica las diferencias.bs2 Declara variables y las usa para resolver unos pocos problemas de aritmetica. value almacenará 500 y anotherValue almacenará 2000. Robotica con el Boe-Bot . Introduce.VariablesAndSimpleMath. trata de imaginar lo que cada comando DEBUG mostrará. value = 500 anotherValue = 2000 ' Inicializa las variables Los comandos DEBUG te ayudarán a ver qué almacenan las variables después de ser inicializadas. value y anotherValue. Dado que a value se le asignó 500 y a anotherValue 2000.5} VAR VAR Word Word ' Declara las variables ' Inicializa las variables ' Muestra los valores ' Realiza operaciones ' Muestra valores nuevamente value anotherValue value = 500 anotherValue = 2000 DEBUG ? value DEBUG ? anotherValue value = 10 * anotherValue DEBUG ? value DEBUG ? anotherValue END Funcionamiento del Programa VariablesAndSimpleMath. guarda y ejecuta el programa VariablesAndSimpleMath. .bs2 Este código declara dos variables de palabra. Luego de que estos dos comandos sean ejecutados. estos comandos DEBUG envían el mensaje “value = 500” y “anotherValue = 2000” al Debug Terminal. value anotherValue VAR VAR Word Word ' Declara las variables Estos comandos son ejemplos de inicialización de variables con los valores que determines.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 73 √ √ √ ' ' ' ' ' Antes de ejecutar el programa.

La variable anotherValue no cambia. He aquí un ejemplo realizado con una modificación de VariablesAndSimpleMath.Página 74 · Robótica con el Boe-Bot DEBUG ? value DEBUG ? anotherValue ' Muestra los valores El formateador “?” del comando DEBUG puede ser usado delante de una variable para hacer que el Debug Terminal despliegue su nombre (de la variable). value = 10 * anotherValue DEBUG ? value DEBUG ? anotherValue ' Realiza operaciones ' Muestra valores nuevamente Tu Turno – Cálculos con Números Negativos Si quieres realizar cálculos que incluyan números negativos.anotherValue ' Respuesta = -1500 DEBUG "value = ". Resulta útil para ver los contenidos de una variable. Contando y Controlando Repeticiones La manera más conveniente de controlar el número de veces que una porción de un código se ejecuta es con un bucle FOR…NEXT. El acertijo en las siguientes tres líneas es ¿Qué aparecerá en pantalla? La respuesta es que value será diez veces el valor de anotherValue. He aquí la sintáxis: FOR Counter = StartValue TO EndValue {STEP StepValue}…NEXT .bs2: value = 10 * anotherValue DEBUG ? value ' Realiza operaciones ' Muestra valores nuevamente √ Sustitúyala por el siguiente: value = value . puede usar el formateador SDEC del comando DEBUG para que aparezcan en pantalla. SDEC value. CR ' Muestra valores nuevamente √ Ejecuta el programa modificado y verifica que value cambia de 500 a -1500.bs2. Dado que anotherValue es 2000. value se fijará en 20. √ Elimine este fragmento del programa VariablesAndSimpleMath. el valor decimal que está almacenando y un caracter de retorno.000.

Los argumentos StartValue y EndValue pueden ser tanto números como variables.bs2 ' Usa una variable en un bucle FOR..NEXT. FOR myCounter = 1 TO 10 DEBUG ? myCounter PAUSE 500 NEXT Programa de ejemplo: CountToTen.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 75 Los tres puntos . guarda y ejecuta el programa el programa CountToTen.bs2.bs2 √ Introduce. También muestra el valor de la variable myCounter cada vez que el bucle realiza una iteración. En otras palabras. indican que puedes colocar uno o más comandos entre FOR y NEXT.5} myCounter VAR Word FOR myCounter = 1 TO 10 DEBUG ? myCounter PAUSE 500 NEXT DEBUG CR.. Cuando veas algo entre llaves { } en una descripción de sintáxis. "All done!" END . pero puedes utilizarlo para un fin específico. myCounter VAR Word Por ejemplo. ' Robotica con el Boe-Bot – CountToTen.. ' {$STAMP BS2} ' {$PBASIC 2. significa que es un argumento opcional. “myCounter”. el bucle FOR…NEXT trabajará sin él. puedes llamarla He aquí un ejemplo de un bucle FOR…NEXT que usa la variable myCounter para contar.. No es necesario nombrar la variable “counter”. Asegúrate de declarar la variable para usarla en el argumento Counter.

porque no es para nada divertido desarmar completamente un robot para solucionar un problema que pudo haber sido identificado antes de armarlo. ¿Notaste que el BASIC Stamp contó en orden decreciente en vez de creciente? Hará esto cada vez que el argumento StartValue sea mayor que el argumento EndValue. . 11…. y esa es probar los servos. En lugar de 9. 20…). you podrás verificar si los servos están funcionando apropiadamente antes de ensamblar tu Boe-Bot. puede hacer que cuente de dos en dos (9. √ Modifica el bucle FOR…NEXT para que quede de la manera siguiente: FOR myCounter = 21 TO 9 DEBUG ? myCounter PAUSE 500 NEXT √ √ ¿Recuerdas el argumento opcional {STEP StepValue}? Puedes utilizarlo para que myCounter cuente en escalas. De esta manera. 10. y contando en escalas Puedes utilizar diferentes valores para los argumentos StartValue y EndValue.Página 76 · Robótica con el Boe-Bot Tu Turno – Diferentes valores iniciales y finales. ejecutarás programas que harán los servos giren a diferentes velocidades en diferenetes direcciones. o cualquier StepValue que le asignes. 13…) o de cinco en cinco (10. Hacer pruebas de subsistemas es una costumbre que vale la pena desarrollar. en orden creciente o decreciente. 11. 15. ACTIVIDAD #6: PROBANDO LOS SERVOS Hay una tarea más para realizar antes de ensamblar tu Boe-Bot. En esta actividad. √ Ejecuta el programa modificado y verifica que cuenta de 3 en 3 en orden decreciente. Esto es un ejemplo de una prueba de subsistema. He aquí un ejemplo que lo usa para contar de 3 en 3 en orden decreciente: √ Añade STEP 3 al bucle FOR…NEXT para que quede de la siguiente manera: FOR myCounter = 21 TO 9 STEP 3 DEBUG ? myCounter PAUSE 500 NEXT Ejecuta el programa modificado.

La Figura 2-25 muestra como un Continuous Rotation Servo de Parallax gira a toda velocidad conreloj cuando le envías pulsos de 1.3 ms s un LED.5 ms daba como resultado que los servos no se movieran. por ejemplo. las pruebas de subsitemas son rigurosas y exhaustivas. carros y videojuegos.3 ms indica al servo ir a toda velocidad conreloj 1.5 ms? En la sección Tu Turno de la Actividad #2. un tren de pulsos es una serie de pulsos. También es una habilidad esencial usada por ingenieros alrededor del mundo para desarrollar productos desde juguetes.3 ms Vss (0 V) 20 ms ¿Qué significa RPM? Revoluciones por minuto. Velocidad y Dirección Recuerda que cuando centraste los servos aprendiste que una señal con un ancho de pulso de 1. ¿Qué es un tren de pulsos? Tal como un tren es una serie de vagones. Es una valiosa estrategia que le puede ayudar a ganar concursos de robótica. Especialmente en dispositivos complejospuede resultar casi imposible decifrar un problema si no se ha probado de antemano cada uno de sus componentes. desmontar un prototipo para solucionar un problema puede costar cientos de miles o.3 ms. incluso.parallax. Esto se logró utilizando el comando PULSOUT con Duration de 750.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 77 Una prueba de subsistema se refiere a la práctica de probar los componentes por separado antes de integrarlos en un dispositivo mayor. Controles de Ancho de Pulso. La velocidad máxima oscila entre los 50 y 60 RPM.com 1. Es el número de vueltas completas que se realizan en un minuto. ¿Qué pasaría si el ancho del pulso de la señal es diferente a 1.3 ms Vdd (5 V) standard servo www. millones de dólares. En proyectos de aeronáutica. hasta cohetes espaciales y robots para realizar exploraciones en Marte. programaste al BASIC Stamp para que mandará series de pulsos de 1. Examinemos en más detalle esa serie de pulsos y decifremos cómo puede ser usada para controlar un servo. . Figura 2-25 Un tren de pulsos de 1. En ese tipo de proyectos.

bs2 Al cambiar el argumento Pin del comando PULSOUT de 13 a 12. guarda y ejecuta el programa el programa ServoP13Clockwise.bs2 ' Mueve el servo conectado a P13 a velocidad maxima conreloj. Vdd. 650 PAUSE 20 LOOP Nota que un pulso de 1. incluyendo los servos debe estar conectado a una fuente de alimentación para esta actividad. Si posees un BASIC Stamp HomeWork Board. a una velocidad entre 50 y 60 RPM. Esto suministrará energía al BASIC Stamp incorporado. Programa de ejemplo: ServoP13Clockwise. Vdd.bs2 para enviar este tren de pulsos al servo conectado a P13. y por lo tanto los argumentos Duration del comando PULSOUT son menores que 750. reemplaza la batería que retiraste del paquete de baterías. √ √ Si posees una Board of Education Rev C.bs2 Todo tu sistema. esto causará que el servo gire conreloj.Página 78 · Robótica con el Boe-Bot Puedes usar el programa ServoP13Clockwise. Vin. Todos los anchos de pulso son menores que 1.bs2 como ServoP12Clockwise.3 ms requiere un argumento Duration del comando PULSOUT de 650.5 ms.bs2. conecta la batería de 9 V al clip de batería. Esto restaurará la energía a los puertos de los servos. Programa de ejemplo: ServoP12Clockwise. coloca el interruptor de 3 posiciones en la posición 2. √ √ Introduce. √ Guarda el programa ServoP13Clockwise. puede hacer que el servo conectado a P12 gire a toda velocidad conreloj. ' {$STAMP BS2} ' {$PBASIC 2. Verifica que el cuerno del servo está rotando conreloj. y Vss. Vin. También. . ' Robotica con el Boe-Bot – ServoP13Clockwise.5} DEBUG "Program Running!" DO PULSOUT 13. el cual es menor a 750.bs2. Esto conecta la energía a los puertos de los servos además de la energía de la posición 1 del BASIC Stamp. y Vss.

' {$STAMP BS2} ' {$PBASIC 2.bs2 ' Mueve el servo conectado a P12 a maxima velocidad conreloj.com 1.bs2. Un Duration de 850 enviará pulsos de 1. . Modifica el programa cambiando el argumento Duration del comando PULSOUT de 650 a 850.7 ms Vdd (5 V) standard servo www.7 ms como se muestra en la Figura 2-26.7 ms Vss (0 V) 20 ms Figura 2-26 Un tren de pulsos de 1. Ejecuta el programa y verifica que el servo conectado a P12 está girando conreloj a una velocidad de entre 50 y 60 RPM. 1. 650 PAUSE 20 LOOP Programa de ejemplo: ServoP12Counterclockwise.parallax. Esto ocasionará que el servo gire a toda velocidad contrareloj.5} DEBUG "Program Running!" DO PULSOUT 12.bs2 como ServoP12Counterclockwise. ' Robotica con el Boe-Bot – ServoP12Clockwise.bs2 Probablemente ya adivinaste que cambiando el argumento Duration del comando PULSOUT a más de 750 causará que el servo gire contrareloj.7 ms indica al servo ir a toda velocidad Contrareloj √ √ √ Guarda el programa ServoP12Clockwise. Ejecuta el programa y verifica que el servo conectado a P12 está girando contrareloj a una velocidad de entre 50 y 60 RPM.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 79 √ √ Modifica el programa actualizando los comentarios y el argumento Pin del comando PULSOUT a 12.

guarda y ejecuta el programa el programa ServosP13CcwP12Cw.bs2. ¿Te parece extraño? Si no puedes imaginarlo. entonces prueba lo siguiente: . uno tendrá que rotar conreloj mientras que el otro rota en el sentido contrario para hacer que el Boe-Bot ruede en línea recta.ServosP13CcwP12Cw.bs2 Puedes utilizar dos comandos PULSOUT para hacer que ambos servos se muevan al mismo tiempo. √ √ Introduce. Piénsalo: cuando los servos estén montados en cada uno de los lados del chasis.bs2 √ Modifica el argumento Pin del comando PULSOUT para que haz que el servo conectado a P13 gire contrareloj. ' Robotica con el Boe-Bot . 650 PAUSE 20 LOOP Pronto esto será importante.5} DEBUG "Program Running!" DO PULSOUT 12. 850 PULSOUT 12.Página 80 · Robótica con el Boe-Bot ' Robotica con el Boe-Bot – ServoP12Counterclockwise. ' {$STAMP BS2} ' {$PBASIC 2. ' {$STAMP BS2} ' {$PBASIC 2. 850 PAUSE 20 LOOP Tu Turno – Programa P13Clockwise. Programa de ejemplo: ServosP13CcwP12Cw. Incluso puedes hacer que giren en direcciones opuestas.5} DEBUG "Program Running!" DO PULSOUT 13.bs2 ' Mueve el servo conectado a P13 a maxima velocidad contrareloj ' y el servo conectado a P12 a maxima velocidad conreloj. Verifica que el servo conectado a P13 está girando a toda velocidad contrareloj mientras que el servo conectado a P12 está girando a toda velocidad conreloj.bs2 ' Mueve el servo conectado a P12 a velocidad maxima contrareloj.

El programa ServosP13CcwP12Cw.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 81 √ Sostén los servos uno contra el otro. Probando varias combinaciones posibles y llenando la columna Descripción de la Tabla 2-1. Llenarás la columna Comportamiento luego de haber ensamblado completamente tu Boe-Bot. . en direcciones opuestas y vuelve a ejecutar el programa. cuando te puedas dar cuenta de cómo influye cada combinación en el movimiento del Boe-Bot. te familiarizarás con ellas y crearás una referencia tú mismo. y llena la columna Description con sus resultados. Tu Turno – Ajustando la Velocidad y la Dirección Existen cuatro combinaciones diferentes de argumentos Duration del comando PULSOUT que se usarán en repetidas ocasiones cuando programes los movimientos de tu Boe-Bot en los capítulos siguientes. √ Prueba las siguientes combinaciones de Duration de PULSOUT.bs2 envía una de estás combinaciones. 850 a P13 y 650 a P12.

P12 servo conreloj. 750 750 760 740 770 730 850 700 800 650 . Comportamiento 650 850 850 850 650 650 750 850 650 750 Ambos servos deben permanecer quietos gracias a los ajustes que hiciste en la Actividad #4.Página 82 · Robótica con el Boe-Bot Tabla 2-1: Combinaciones de PULSOUT Duration Durations P13 850 P12 650 Descripción Maxima velocidad. P13 servo contrareloj.

bs2. el comando PAUSE dura 20 ms y el bucle completo se ejecute en aproximadamente 1.3 ms = 23.30 s Digamos que quieres que el servo se mueva durante 4. ' Robotica con el Boe-Bot .0 ms = 100 × 0. 850 PAUSE 20 NEXT Calculemos la cantidad exacta de tiempo durante la cual este código hará que el servo gire.ControlServoRunTimes. Tu bucle FOR…NEXT deberá ejecutarse el doble de veces: FOR counter = 1 TO 200 PULSOUT 13. He aquí un ejemplo de un bucle FOR…NEXT que hará que el servo gire por unos segundos: FOR counter = 1 TO 100 PULSOUT 13.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 83 FOR…NEXT para Controlar el Tiempo de Funcionamiento del Servo Por ahora deberías entender completamente que el ancho de los pulsos controla la velocidad y la dirección del Continuous Rotation servo de Parallax. y esto se logra con un bucle FOR…NEXT. el comando PULSOUT dura 1. 850 PAUSE 20 NEXT Programa de ejemplo: ControlServoRunTimes.0 ms.0 ms por 100.6 seconds. Cada vez que se completa el bucle. time = 100 × 23.0230 s = 2. seguido por el servo en P12 el cual girará el doble del tiempo.bs2 . También existe una manera simple de controlar la cantidad de tiempo durante la cual un motor está en funcionamiento. Verifica que el servo en P13 gire contrareloj durante 2.7 ms + 20 ms + 1. Dado que el bucle se ejecuta 100 veces. Es una forma muy simple de controlar la velocidad y dirección de un motor.7 ms. eso es 23. guarda y ejecuta el programa el programa ControlServoRunTimes.3 segundos aproximadamente.3 ms. Tiempo en el que se completa el bucle = 1.bs2 √ √ Introduce.

3 ms 20 ms 1. 850 PAUSE 20 NEXT END Digamos que quieres que ambos servos giren. puedes usar el valor 122 en EndValue del bucle FOR…NEXT. Eso es Numero de pulsos = 3 / 0.6 ms – – – – – Servo conectado a P13 Servo conectado a P12 Pausa Ejecucion del código -----------------------------Total Si quieres que los servos giren durante un período de tiempo determinado.3 s. puedes calcularlo de la siguiente manera: Numero de pulsos = Time s / 0. ' {$STAMP BS2} ' {$PBASIC 2. 850 PAUSE 20 NEXT FOR counter = 1 TO 200 PULSOUT 12. cada vez que se cumpla el bucle completo transcurrirán: 1.6 ms --------24.7ms 1. el servo en P13 con un ancho de pulso de 850 y el servo en P12 con un ancho de pulso de 650. y quedará de la siguiente manera: .0246s = Time / 0.0246 Digamos que quieres hacer que los servos giren durante 3 segundos.Página 84 · Robótica con el Boe-Bot ' Mueve el servo P13 a velocidad maxima contrareloj por 2.0246 = 122 Ahora. Ahora. luego ' mueve el P12 servo por el doble del tiempo.5} DEBUG "Program Running!" counter VAR Byte FOR counter = 1 TO 100 PULSOUT 13.

Robotica con el Boe-Bot . 850 PULSOUT 12. luego invierte la direccion de ambos servos y los mueve por otros tres segundos. √ ' ' ' ' Introduce. ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Program Running!" counter VAR Byte FOR counter = 1 TO 122 PULSOUT 13. guarda y ejecuta el programa BothServosThreeSeconds.BothServosThreeSeconds. 650 PAUSE 20 NEXT FOR counter = 1 TO 122 PULSOUT 13.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 85 FOR counter = 1 TO 122 PULSOUT 13.bs2.bs2 He aquí un ejemplo de cómo hacer que los servos giren en una dirección durante 3 segundos y luego inviertan su dirección. 650 PULSOUT 12. 850 PAUSE 20 NEXT END Verifica que cada servo giró en una dirección durante 3 segundos y luego en dirección inversa durante tres segundos más.bs2 Mueve ambos servos en direcciones opuestas por tres segundos. 650 PAUSE 20 NEXT Programa de ejemplo: BothServosThreeSeconds. 850 PULSOUT 12. ¿Notaste que los servos al cambiar de dirección al mismo tiempo siempre giraron en direcciones opuestas? ¿Por qué puede resultar esto útil? .

Si posees un HomeWork Board. mantén presionado el botón Reset en tu Board of Education (o BASIC Stamp HomeWork Board). Compara el tiempo que predijiste con la cantidad de tiempo durante la que en realidad giraron. CONSEJO – Para medir el tiempo de funcionamiento. Modifica el programa BothServosThreeSeconds.bs2 para que haga que ambos servos giren durante la cantidad de tiempo que seleccionaste. Eso quiere decir colocar el interruptor de 3 posiciones en la posición 0 si posees una Board of Education Rev C.Página 86 · Robótica con el Boe-Bot Tu Turno – Predecir el tiempo de funcionamiento del servo √ √ √ √ √ √ Elige el tiempo (seis segundos o menos) durante el que quieres que giren tus servos. Recuerda desconectar la energía de tu sistema (plaqueta y servos) cuando termines. . Cuando estés listo para comenzar a tomar el tiempo. Tu respuesta es el número de bucles que necesitará.024. Divide el número de segundos por 0. suelta el botón Reset. desconecta la batería de 9 V del clip de batería y retira una de las baterías del paquete de baterías.

Los bucles FOR…NEXT controlan el número de veces que se ejecutan las declaraciones FOR y NEXT. ¿En qué se diferencian los Continuous Rotation Servos de Parallax de los servos standard? 2.5 ms con intervalos de 20 ms. Se usaron los bucles FOR…NEXT para controlar el número de pulsos enviados al servo. ¿Qué comandos ocasionan qu el BASIC Stamp conecte uno de sus pines I/O a Vdd? ¿Qué comandos hacen la misma clase de conexión pero a Vss? . Se vieron señales altas y bajas con la ayuda de un circuito de LED. Se introdujeron los bucles FOR…NEXT como una forma de contar. dichos pulsos son de 1. El comando PAUSE hace que el programa se detenga brevemente o por períodos largos de tiempo. Estas señales se usaron para introduciar Diagramas de Control de Tiempo. se introdujeron variables como una forma de almacenar valores. DO…LOOP hace que un comando o un grupo de comandos de PBASIC se repitan una y otra vez de manera eficiente. A este proceso se le denomina “centrando” el servo. dependiendo del argumento Duration que uses. también se usó un circuito de LED para ver las señales enviadas por el comando PULSOUT. Se introdujo el comando PULSOUT como una forma más precisa de enviar señales altas o bajas. A lo largo del capítulo. Después de haber centrado los servos. ¿Qué comandos de PBASIC puedes usar para que se ejecuten otros comandos de PBASIC una y otra vez? 4.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 87 RESUMEN Este capítulo te guío para conectar. Preguntas 1. Se ajustó el servo con un destornillador mientras recibía los pulsos de 1. Las variables se pueden usar en actividades en operaciones matemáticas y para contar. lo que a su vez controla el tiempo durante el que servo funciona. una variedad de comandos de PBASIC fueron introducidos. ¿Cuánto dura un milisegundo? ¿Cómo se abrevia? 3. HIGH y LOW fueron introucidos como formas de hacer que el BASIC Stamp se conecte a un pin I/O Vdd o Vss. ajustar y verificar los Continuous Rotation Servos de Parallax. DO…LOOP. PULSOUT y PAUSE se usaron para enviar la señal de permanecer quieto a los Continuous Rotation Servos de Parallax.5 ms hasta que permaneciera sin movimiento.

2. ¿Cuál es la clave para controlor la velocidad y dirección de un Continuous Rotation Servo de Parallax? ¿Cómo se relaciona esto con los diagramas de control de tiempo? ¿Cómo se relaciona esto con los comandos de Comandos PBASIC? ¿Cuáles son los comandos y argumentos que se pueden ajustar para controlar la velocidad y dirección de un Continuous Rotation Servo? Ejercicios 1. Modifica este bucle FOR…NEXT para que cuente de 6 a 24 de 3 en 3. ambos servos deben rotar contrareloj. También. ¿Cuáles son los nombres de los diferentes tamaños de variable que se pueden declarar en un programa de PBASIC? ¿Qué rango de valores puede almacenar cada tamaño de variable? 6. escribe la delaración de variable que necesitarás para hacer que este programa funcione. . el servo P12 debería rotar conreloj mientras el servo P13 rota contrareloj. Escribe un programa que lleve a los servos a cada una de las cuatro combinaciones de rotación durante tres segundos. 2. Primero. Ahora. luego conreloj.Página 88 · Robótica con el Boe-Bot 5. y finalmente. Consejo: necesitarás cuatro bucles FOR…NEXT diferentes. FOR counter = 9 TO 21 DEBUG ? counter PAUSE 500 NEXT Proyectos 1. Escribe un programa que ocasione que el LED conectado a P14 emita una luz suave (encendido/apagado con cada pulso) mientras el servo P12 gire. Escribe un comando PAUSE que haga que el BASIC Stamp no haga nada por 10 segundos. el servo P12 servo debería contrareloj mientras el servo P13 rota conreloj.

E1. PAUSE 10000 E2. '{$STAMP BS2} '{$PBASIC 2. Q3. La clave para escribir una declaración de variable es elegir un tamaño de variable lo suficientemente grande para almacenar el valor de 24. Bit – Almacena de 0 a 1 Nib – Almacena de 0 a 15 Byte – Almacena de 0 a 255 Word – Almacena de 0 a 65535 o de -32768 a +32767 Q6. El argumento Duration del comando PULSOUT ajusta la velocidad y la dirección. LOW a Vss. ' Robotica con el Boe-Bot . Por lo tanto.Ch02Prj01_DimlyLitLED. Q5. Q4. el ancho del pulso es el tiempo durante el cual la señal permanece alta. los Continuous Rotation servos de Parallax giran en ciertas direcciones a ciertas velocidades. elige una variable Byte. Los tamaños de variables son bit. counter VAR Byte FOR counter = 6 TO 24 STEP 3 DEBUG ? counter PAUSE 500 NEXT P1. Visto en un diagrama de control de tiempo. En vez de mantener un posición como un servo normal. La clave para resolver este problema es enviar un tren de pulsos al LED y al servo. Un Nib (nibble) no va a ser suficiente. Q2. nib.Capítulo 2:Los Servomotores de tu Boe-Bot · Page 89 Soluciones Q1. ya que el valor máximo que un Nib puede almacenar es 15. El ancho del pulso determina la velocidad y control del servo.5} DEBUG "Program Running!" . Milisegundo se abrevia "ms". ' para hacer que ilumine suavemente. El comando DO…LOOP se usa para hacer que otros comandos de PBASIC se ejecuten una y otra vez. Un milisegundo dura una milésima de segundo. HIGH conecta a un pin I/O a Vdd. En PBASIC.bs2 ' Mueve el servo y envia la misma senal al LED conectado a P14. byte y word. el pulso se puede generar con un comando PULSOUT.

Cuatro combinaciones (1.7 + 20 ms + 1. un bucle = 1. 850 2. 12 CW y 13 CCW: 12. número de pulsos = 3 s / 0.6 = 24. 850 y 13. 12 CCW y 13 CW: 12.3 + 1.7 + 1. Incluye los argumentos PULSOUT correctos para la combinación de rotación. Como se vio en la página 79. 650 PULSOUT 14.3 + 20 ms + 1. calcula el número de bucles necesarios para hacer que los servos avancen durante tres segundos. se usa 1.3 + 1. 650 y 13. 850 Cada combinación: Calcula cuánto tiempo dura cada bucle: 1. un bucle = 1. para cada combinación de rotación. un bucle = 1.0246 s 4. 650 y 13.0246 s = 121.025 s = 120 2. Ambos conreloj (CW): 12.7 + 1.6 ms.6 = 25. 650 4. .0 ms = 0.Página 90 · Robótica con el Boe-Bot DO PULSOUT 12.4).9 = 122 4.3 + 20 ms + 1. 850 y 13.6 ms = 0. usando el número de pulsos que calculaste para el argumento EndValue. número de pulsos = 3 s / 0.2.3.0242 s = 123.6 ms = 0.0242 s 3.0246 s Cada combinación: Calcula el número de pulsos que se necesitan para 3 s de movimiento: 1. Primero. Cada combinación: Determina los argumentos Duration del comando PULSOUT: 1. Ambos contrareloj (CCW): 12.9 = 122 Ahora escribe cuatro bucles FOR…NEXT. número de pulsos = 3 s / 0.9 = 124 3.7 + 20 ms + 1.6 = 24. número de pulsos = 3 s / 0.2 ms = 0. un bucle = 1. 650 3. 650 PAUSE 20 LOOP ' P12 servo conreloj ' P14 LED ilumina suave P2.6 = 24.025 s 2.0246 s = 121.

Ch02Prj02_4RotationCombinations. 650 PULSOUT 12. 650 PULSOUT 12.5} DEBUG "Program Running!" counter VAR Word ' Bucle por 3 segundos ' P13 servo contrareloj ' P12 servo contrareloj FOR counter = 1 TO 120 PULSOUT 13. 850 PULSOUT 12. 850 PAUSE 20 NEXT FOR counter = 1 TO 124 PULSOUT 13. '{$STAMP BS2} '{$PBASIC 2. 650 PAUSE 20 NEXT FOR counter = 1 TO 122 PULSOUT 13.bs2 ' Mueve servos a traves de 4 combinaciones de rotacion ' conreloj/contrareloj. 850 PULSOUT 12. 650 PAUSE 20 NEXT END ' Bucle por 3 segundos ' P13 servo conreloj ' P12 servo conreloj ' Bucle por 3 segundos ' P13 servo conreloj ' P12 servo contrareloj ' Bucle por 3 segundos ' P13 servo contrareloj ' P12 servo conreloj .Capítulo 2:Los Servomotores de tu Boe-Bot · Page 91 ' Robotica con el Boe-Bot . 850 PAUSE 20 NEXT FOR counter = 1 TO 122 PULSOUT 13.

Página 92 · Robótica con el Boe-Bot .

podrás evitar algunos errores comunes que podrían descontrolar el comportamiento del Boe-Bot en capítulos posteriores. Realizando las pruebas.18 mm) shaft) (1) Llave de 1/4″ (opcional) (1) Tenazas puntiagudas (opcional) . asegúrate de seguirlas cuidadosamente. También pueden ser adquiridas en tu ferretería más cercana. He aquí un resumen de las actividades que realizarás en este capítulo: Actividad Resumen 1 2 3 4 Construir el Boe-Bot Volver a probar los servos para asegurarte de que están conectados adecuadamente Conectar y probar una bocina que te permitirá saber cuándo Boe-Bot se están descargando Usar el Debug Terminal para controlar y probar la velocidad del servo ACTIVIDAD #1: ENSAMBLANDO TU BOE-BOT Esta actividad te guíara en el proceso de ensamblar el Boe-Bot. Es especialmente importante completar la parte de pruebas antes de continuar con el siguiente capítulo. paso a paso. Herramientas (1) Destornillador Parallax (Phillips #1 point screwdriver 1/8″ (3. Herramientas y Partes del Servo Todas las herramientas mostradas en la Figura 3-1 son de uso común y pueden ser encontradas en casi cualquier tienda escolar o de electrodomésticos. Cada imagen tiene una instrucción correspondiente.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 93 Capítulo 3: Ensambla y Prueba tu Boe-Bot Este capítulo contiene instrucciones para construir y probar tu Boe-Bot. En cada paso. recolectarás algunas de las partes y las ensamblarás de tal manera que concuerden con las imágenes.

Luego. sigue las instrucciones. . (1) Chasis del Boe-Bot (4) Espaciador de 1″ (4) Tornillos de cabeza plana con ranura. 13/32″ √ √ √ Inserta el ojal de goma 13/32″ en el orificio central del chasis del Boe-Bot.Página 94 · Robótica con el Boe-Bot Figura 3-1 Herramientas para ensamblar el Boe-Bot Montando el Hardware de la Parte Superior √ √ Comienza por recolectar las siguientes partes. Usa los tornillos de 1/4″ 4-40 para sujetar los espaciadores al chasis como se muestra en la imagen. Asegúrate de que el surco de la parte exterior del ojal de goma quede sobre el borde del orificio del chasis. Instruciones: Lista de partes: Ver Figura 3-2. 1/4″ 4-40 (1) Ojal de goma.

Ver Apéndice E: Lista de Partes del Boe-Bot para más información. Hala cada cuerno hacia arriba y fuera del eje del servo. Retira todas las baterías AA del paquete de baterías. previamente centrados √ √ √ Usa un destornillador de Estría para retirar los tornillos que sostienen los cuernos de control del servo de sus respectivos ejes. Partes del Boe-Bot – Las partes del Boe-Bot están incluidas en el kit completo del Boe-Bot o en una combinación de los kits completos de la Board of Education y de Robotics Parts. Instrucciones: Lista de partes: Ver Figura 3-3. ensamblado (derecha). Desconecta los servos de tu plaqueta. Retirando los Cuernos de los Servos √ √ √ Desconecta la energía de tu BASIC Stamp y de los servos. Se usarán en un paso posterior. Guarda los tornillos.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 95 Figura 3-2 Hardware del chasis y la parte superior Partes (izquierda). (2) Continuous Rotation Servos de Parallax. .

debes haber terminado las actividades del Capítulo 2: Los Servomotores de tu Boe-Bot. 4-40 √ √ Sujeta los servos al chasis usando los tornillos de Estría y las tuercas. Usa pedazos de teipe para etiquetar los servos izquierdo (L) y derecho (R). (1) Chasis del Boe-Bot (parcialmente ensamblado) (2) Continuous Rotation Servos de Parallax (8) Tornillos de cabeza plana con ranura. • • Actividad #3: Connecting the Servo Motors Actividad #4: Calibrando los Servos Montando los Servos en el Chasis Lista de Partes: Instrucciones: Ver Figura 3-4. . debes colocar el frente de cada servo a través de la ventana rectangular desde el interior del chasis en lugar de soltarlos desde el exterior hacia adentro.Página 96 · Robótica con el Boe-Bot Tornillo Phillips Horn de control Palanca de salida Figura 3-3 Removiendo los cuernos de control de los servos Partes (izquierda). después de seguir las instrucciones (derecha). 3/8″ 4-40 (8) Tuercas. Nota que para un desempeño óptimo. ¡Alto! √ Antes del siguiente paso.

Montando el Paquete de Baterías La Figura 3-5 dos juegos de partes distintos. (1) Chasis del Boe-Bot (parcialmente ensamblado) (2) Tornillos de Estría de cabeza plana. 3/8″ 4-40 (2) Tuercas. Lista de Partes para el BoeBot con una Board of Education Rev C: Lista de Partes para el Boe-Bot con una HomeWork Board: Ver Figura 3-5 (lado izquierdo). 4-40 (1) Paquete de baterías con conexiones estañadas . ensamblado (derecha). 3/8″ 4-40 (2) Tuercas. Usa las partes de la izquierda si posees una Board of Education y las de la derecha si posees una HomeWork Board. (1) Chasis del Boe-Bot (parcialmente ensamblado) (2) Tornillos de Estría de cabeza plana.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 97 Figura 3-4 Montando los servos en el chasis Partes (izquierda). 4-40 (1) Un paquete de baterías con enchufe de polo positivo central Ver Figura 3-5 (lado derecho).

Hala los cables de los servos a través del mismo orificio. Acomoda los cables de los servos y el cable de la fuente de alimentación como se muestra en la imagen. Asegúrate de insertar los tornillos a través del paquete de baterías. luego aprieta las tuercas en la parte de arriba del chasis. Como se muestra a la derecha de la Figura 3-6. hala el cable conductor de energía del paquete de baterías a través del orificio donde colocaste el ojal de goma (en el centro del chasis). .Página 98 · Robótica con el Boe-Bot Figura 3-5 Hardware para montaje del paquete de baterías Para usar con la Board of Education Para usar con la HomeWork Board Instrucciones: √ √ √ √ √ Usa los tornillos de cabeza plana y las tuercas para sujetar el paquete de baterías en la parte baja del chasis del Boe-Bot como se muestra a la izquierda de la Figura 3-6.

La rueda trasera es simplemente una bola de plástico con un orificio en el centro. Montando las Ruedas Lista de Partes: (1) Boe-Bot parcialmente ensamblado (no se muestra en la imagen) (1) Pin de 1/16″ (1) Bola rodante traser (2) Bandas de goma para usar como neumáticos (2) Ruedas de plástico mecanizadas (2) Tornillos que fueron guardados en el paso de retiro de los servo horns. Instrucciones: Figura 3-7 Hardware de las ruedas El lado izquierdo de la Figura 3-8 muestra cómo se monta la rueda trasera del Boe-Bot en el chasis.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 99 Figura 3-6 Paquete de baterías montado Vista inferior (izq. √ Alínea el orificio de la rueda trasera con los orificios de la parte de atrás del chasis. .). Un pin metálico la sujeta del chasis y funciona como un eje giratorio para la misma.). Vista superior (der.

Presiona cada rueda de plástico contra el eje de salida de un servo asegurándote de que cada eje esté alineado y la rueda se pueda hundir en cada uno de los orificios. . Cada rueda de plástico tiene un orificio que encaja en el eje de salida del servo. ruedas de manejo (der. Usa los tornillos que guardaste cuando retiraste los cuernos de los servos para sujetar las ruedas a los ejes de salida de los servos. derecha del chasis). El lado derecho de la Figura 3-8 muestra las ruedas del Boe-Bot montadas en los servos. rueda trasera.).Página 100 · Robótica con el Boe-Bot √ √ Pasa el pin a través de los tres orificios (izquierda del chasis. Dobla los extremos del pin para que no se salga del orificio.). √ √ Estira cada banda de goma y colócelas sobre el borde exterior de cada rueda. √ Figura 3-8 Montando las ruedas Rueda trasera (izq.

1/4″ 4-40 (1) Board of Education with BASIC Stamp 2 Ver lado derecho de la Figura 3-9. (1) Chasis del Boe-Bot (parcialmente ensamblado) (4) Tornillos de cabeza plana con ranura. (1) Chasis del Boe-Bot (parcialmente ensamblado) (4) Tornillos de cabeza plana con ranura. 1/4″ 4-40 (1) BASIC Stamp HomeWork Board Figura 3-9 Chasis del BoeBot y plaquetas Con la Board of Education Rev C Con la HomeWork Board .Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 101 Sujetando la Board of Education o HomeWork Board al Chasis Parts List para el Boe-Bot con una Board of Education: Parts List para el Boe-Bot con un HomeWork Board: Ver lado izquierdo de la Figura 3-9.

. Asegúrate de que el protoboard blanco está más cerca de las ruedas de manejo y no de la rueda trasera.Rojo Vss .com Rev B Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 Vin Vss Figura 3-10 Puertos de servos reconectados Board of Education Rev C (izq.) HomeWork Board (der. √ √ White Red Black Reconecta los servos a los cabezales correspondientes.com www.parallaxinc.Blanco Vbp .). X4 X5 P13 . √ √ √ Fija la plaqueta sobre los cuatro espaciadores de tal manera que queden alineados con los cuatro orificios de las esquinas exteriores de la plaqueta.Negro Vbp .stampsinclass. White Red Black Banda blanca Cable negro 15 14 Vdd 13 12 Red Black (916) 624-8333 www. Sujeta la plaqueta a los espaciadores usando los tornillos de cabeza plana.Blanco En la Board of Education Rev C En la HomeWork Board La Figura 3-11 muestra el chasis del Boe-Bot con sus respectivas plaquetas sujetas a él.Rojo P12 . Asegúrate de conectar el enchufe etiquetado ‘L’ al puerto P13 y el enchufe etiquetado ‘R’ al puerto P12.Página 102 · Robótica con el Boe-Bot La Figura 3-10 muestra los puertos de servo reconectados tanto para la Board of Education Rev C (lado izquierdo) como para la HomeWork Board (lado derecho).

Figura 3-12 Boe-Bots ensamblados Con la Board of Education Rev C Con la HomeWork Board . el izquierdo construido con una Board of Education Rev C y el derecho construido con una HomeWork Board. hala cualquier cable (de servo o batería) que sea demasiado largo. √ √ Desde la parte de abajo del chasis. a través de orificio con el ojal de goma. Mete la parte sobrante de los cables entre los servos y el chasis.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 103 Figura 3-11 Plaquetas sujetas al chasis del Boe-Bot Con la Board of Education Rev C Con la HomeWork Board La Figura 3-12 muestra Boe-Bots ensamblados.

Izquierda Parte trasera Parte posterior Figura 3-13 La parte izquierda. izquierda y derecha de tu Boe-Bot. verificarás que las conexiones eléctricas entre tu plaqueta y los servos funcionan apropiadamente. luego se detenga por un segundo. posterior y trasera de tu Boe-Bot Derecha Verificando la Rueda Derecha El siguiente programa de ejemplo verificará el servo conectado a la rueda derecha. derecha. la parte trasera. La Figura 3-13 muestra el frente. Clockwise 3 segundos Detenida 1 segundo Counterclockwise 3 segundos Figura 3-14 Verificando la rueda derecha . y luego gire contrareloj durante 3 segundos.Página 104 · Robótica con el Boe-Bot ACTIVIDAD #2: PROBANDO LOS SERVOS NUEVAMENTE En esta actividad. mostrado en la Figura 3-14. Necesitamos asegurarnos de que el servo de la derecha gira cuando recibe los pulsos de P12 y que el servo de la izquierda gira cuando recibe pulsos de P13. El programa hará que la rueda gire conreloj durante 3 segundos.

bs2 ' Servo derecho rota conreloj por tres segunds. ' Robotica con el Boe-Bot . guarda y ejecuta el programa RightServoTest. Está inmediatamente después del programa RightServoTest. Pon las baterías en el paquete de baterías. 750 PAUSE 20 NEXT FOR counter = 1 TO 122 PULSOUT 12. Introduce. coloca el interruptor de 3 posiciones en la posición 2. FOR counter = 1 TO 122 PULSOUT 12.RightServoTest.bs2 √ √ √ √ √ √ √ √ Coloca el Boe-Bot sobre su extremo de tal manera que las ruedas queden suspendidas en el aire. Si tienes una Board of Education Rev C.bs2. Si tienes una BASIC Stamp HomeWork Board. ' {$STAMP BS2} ' {$PBASIC 2. ' y luego se mueve contrareloj por tres segundos. ' Contrareloj 3 s. 650 PAUSE 20 NEXT FOR counter = 1 TO 40 PULSOUT 12. entonces avanza a la sección Tu Turno. 850 PAUSE 20 NEXT END ' Para 1 s. ve la sección . donde verificarás la rueda izquierda. Verifica que la rueda derecha gira conreloj durante tres segundos. .5} DEBUG "Program Running!" counter VAR Word ' Conreloj por poco menos de 3 s. se detiene 1 segundo. conecta la batería de 9 V al clip de batería. luego gira contrareloj por tres segundos. Si la rueda/servo sí se comporta como se esperaba.bs2.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 105 Programa de ejemplo: RightServoTest. Si la rueda/servo no se comporta como se esperaba. se detiene por un segundo.

. se torna más lenta. 750. O. √ √ √ √ Si estás utilizando una Board of Education Rev C. Puedes ajustar con frecuencia el programa para que el servo no se mueva. √ √ √ √ √ √ Desconecta la energía. puede que gire rápidamente en una sola dirección por siete segundos. Desenchufa los dos servos. asegúrate de que el paquete de baterías tiene baterías. Si está girando conreloj. √ √ √ Si la rueda se vuelve más lenta contrareloj. Sin importar el caso. Esto puede significar que el servo no está completamente centrado. Puedes volver a ejecutar el programa presionando y soltando el botón Reset. Conecta el otro servo (que estaba conectado a P13) a P12. El servo derecho no funciona. El servo que está conectado a P12 debería estar conectado a P13 y el servo que está conectado a P13 debería estar conectado a P12. asegúrate de que el interruptor de 3 posiciones se encuentra en la posición 2. Puedes hacerlo modificando el comando PULSOUT 12. desmonta los servos servos y repite el ejercicio en el Capítulo 2. usa un valor un poco mayor que 750. asegúrate de usarlo en donde encuentres el comando PULSOUT 12.bs2. La rueda no se detiene por completo. eso significa que el potenciómetro está desajustado. También puede que gire rápidamente por tres segundos. pero el izquierdo sí. usa un valor un poco menor que 750. también deberías volver a ver la Figura 2-18 de la página 65. Revisa y asegúrate de que introdujiste el programa correctamente. Si estás utilizando una BASIC Stamp HomeWork Board. la Actividad #4: Calibrando los Servos. La rueda no se detiene por un segundo entre el cambio de direcciones. √ Retira las ruedas. Revisa otra vez las conexiones de tu servo usando la Figura 3-10 de la página 102 como referencia. luego rápidamente otra vez por tres segundos. luego un poco más lento por un segundo. Si estás usando una HomeWork Board. Esto significa que los servos están intercambiados. Puede que la rueda gire rápidamente por tres segundos en una dirección y por cuatro en la otra. El servo no se mueve. 750. Vuelve a ejecutar el programa RightServoTest. Si puedes encontrar un valor entre 740 y 760 con el que el servo se detenga por completo.Página 106 · Robótica con el Boe-Bot Reparación de Servos: He aquí una lista de los síntomas más comunes y de cómo repararlos. Reconecta la energía. Conecta el servo que estaba conectado a P12 a P13.

Clockwise 3 segundos Detenida 1 segundo Counterclockwise 3 segundos Figura 3-15 Verificando la rueda izquierda √ √ √ √ √ √ Guarda el programa RightServoTest. Cambia los tres comandos PULSOUT para que digan PULSOUT 13 en lugar de PULSOUT 12.2 V en Vin ocasiona un voltaje inferior a 4. Guarda y ejecuta el programa. Si la rueda/servo sí se comporta como se esperaba. es momento de ejecutar la misma verificación para la rueda izquierda como lo muestra la Figura 3-15. Un voltaje inferior a 5.bs2 como LeftServoTest.bs2 de tal manera que los comandos PULSOUT se manden al servo conectado a P13 en lugar de al servo conectado a P12. Lo único que debes hacer es cambiar los tres comandos PULSOUT para que digan PULSOUT 13 en lugar de PULSOUT 12. Esto involucra modificar el programa RightServoTest. Si la rueda/servo no se comporta como se esperaba. Un circuito llamado detector de bajón en el BASIC . se detenga por un segundo. entonces tu Boe-Bot está funcionando adecuadamente y estás listo para pasar a la siguiente actividad. ACTIVIDAD #3: CIRCUITO Y PROGRAMA INDICADOR START/RESET Llamamos bajón al momento cuando el suministro de voltaje llega a un nivel inferior del necesario para que un dispositivo funcione correctamente. ve la sección Reparación de Servos en la página 106. luego gire contrareloj por tres segundos. Verifica que la rueda izquierda gire conreloj durante tres segundos.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 107 Tu Turno – Verificando la Rueda Izquierda Ahora.bs2.3 V en la salida del regulador de voltaje interno del BASIC Stamp. El BASIC Stamp se protege de un bajón manteniendo a tu procesador y los chips de memoria de los programas en estado inactivo hasta que el suministro de voltaje vuelva a sus niveles normales.

el BASIC Stamp vuelve a funcionar. Una señal efectiva para resets es una bocina que emita un tono cada vez que un programa del BASIC Stamp se ejecute desde el principio o haga reset. esto es lo que sucede cuando desconectas y vuelves a conectar la energía. arranca desde el principio el programa. Si la causa de esto es la descarga de las baterías.2 V. Esto puede ocasionar comportamientos erráticos del Boe-Bot. y también cuando presionas y sueltas el botón Reset de tu plaqueta. En otros casos. sobrecargan las baterías las cuales ya están muy descargadas como para hacerlos girar normalmente. puede que el Boe-Bot comience a girar de un lado para otro confusamente porque cada vez que los servos comienzan a girar. En lugar de eso. una buena herramienta para el robot.Página 108 · Robótica con el Boe-Bot Stamp está siempre alerta en caso de un bajón. Cuando las baterías del Boe-Bot se estén descargando. En algunos casos. Siempre puedes saber cuándo el paquete de baterías se está descargando porque los servos se moverán gradualmente más despacio durante una operación normal. De hecho. es incluir una señal inconfundible al principio de todos los programas del Boe-Bot. pero no en el mismo lugar del programa. un bajón puede causar que un programa se reinicie en un lugar donde no esperabas. Estas situaciones hacen de un indicador start/reset. Por una fracción de segundo el programa intenta que los servos giren.5 V. pero también ocurre cada vez que un bajón provoca un reset. Este ejercicio introducirá un dispositivo llamado bocina piezoeléctrica (piezobocina. reemplaza las baterías descargadas con nuevas baterías alcalinas de 1. Instrucciones especiales para la BASIC Stamp HomeWork Board A pesar de que el indicador de reset te dirá cuando la batería de 9 V que alimenta a la BASIC Stamp se está descargando. así como también. Esta puede emitir diferentes tonos dependiendo . un dispositivo de diagnóstico extremadamente útil. Cuando observes este síntoma. pero en seguida se reinicia una y otra vez. no te dirá cuándo el suministro del servo (el paquete de baterías) se está descargando. Cuando ocurre un bajón. en inglés) que puedes usar para emitir tonos. el detector de bajón deshabilita el procesador y la memoria de programas del BASIC Stamp. Una manera de indicar cuándo ocurre un reset. La señal ocurre cada vez que se conecta la energía. Cuando el suministro de voltaje vuelve por encima de 5. el Boe-Bot seguirá el curso que se programó para navegar y de repente parecerá perdido e irá en una dirección inesperada. puede tratarse de que el programa del Boe-Bot regreso al inicio y comenzó desde cero.

cuando se les aplica fuerza. pueden crear voltaje. Partes Requeridas (1) Boe-Bot ensamblado y verificado (1) Piezobocina (misc. El símbolo esquemático y el dibujo de parte de la bocina piezoeléctrica se muestra en la Figura 3-16. Cada ritmo o vibración tiene un tono distinto. ¡Tu bocina piezoeléctrica no necesita ser lavado! Construyendo el Circuito Indicador de Start/Reset La Figura 3-17 muestra el diagrama de un circuito de alarma con la bocina piezoeléctrica para la Board of Education y la BASIC Stamp HomeWork Board.) Cables para puente eléctricos Si tu bocina piezoeléctrica tiene una etiqueta que dice “Retire el sello después de lavarlo” simplemente retirelo y proceda. Nota: Los elementos piezoeléctricos tienen diversos usos. esta tendrá una frecuencia de vibración distinta y producirá un tono diferente. Aplicar voltajes altos y bajos a un cristal piezoeléctrico con un ritmo de velocidad.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 109 de la frecuencia de señales altas/bajas que reciba del BASIC Stamp. Esta bocina emitirá sonidos cuando el BASIC Stamp haga reset en esta actividad así como en el resto de las actividades de este texto. si tocas la cuerda de una guitarra. Estos pueden ser usados para crear voltajes a frecuencias que funcionen como el oscilador de un reloj para varias computadoras y microcontroladores. Si tocas otra cuerda. causa que el cristal piezoeléctrico cambie rápidamente de forma. El resultado es vibración. ¿Qué es un elemento piezoeléctrico y cómo puede emitir sonidos? Es un cristal que cambia levemente de forma cuando se le aplica voltaje. Algunos elementos piezoeléctricos tienen una frecuencia a la que vibran naturalmente. Es esto lo que nuestros oídos detectan como sonidos y tonos. tendra una frecuencia de vibración y escucharás un tono particular. Por ejemplo. Figura 3-16 Bocina piezoeléctrica ¿Qué es frecuencia? Es la medida de cuán a menudo ocurre algo en un período de tiempo determinado. La vibración de los objetos provoca que el aire alrededor de ellos también vibre. . La Figura 3-18 muestra un diagrama de conexión para cada una de las plaquetas. Por ejemplo.

P4 Figura 3-17 Circuito del indicador de Start/Reset de programas Vss . coloca el interruptor de tres posiciones en la posición 0. desconecta la batería de 9 V del clip de batería y retira la una batería del paquete de baterías. √ Construya el circuito de la Figura 3-17 y la Figura 3-18. Si posees una BASIC Stamp HomeWork Board.Página 110 · Robótica con el Boe-Bot ¡Desconecta siempre la energía antes de construir o modificar circuitos! √ √ Si posees una Board of Education Rev C.

) y HomeWork Board (der.com X4 X5 Vdd Vss Vin Vss Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Figura 3-18 Diagramas de conexión para el circuito del indicador de Start/Reset Programa Board of Education (izq.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 111 To Servos 15 14 Vdd 13 12 Red Black To Servos (916) 624-8333 Rev B www. + + Board of Education Rev C © 2000-2003 HomeWork Board Los circuitos de la bocina piezoeléctrica y de los servo permanecerán conectados a la plaqueta por el resto de las actividades de este texto.parallax.com www. El programa usa el comando FREQOUT para enviar señales altas/bajas perfectamente sincronizadas a la bocina.stampsinclass. Freq1 {.). Duration. Todos los diagramas de circuitos de ahora en adelante mostrarán circuitos que deben ser añadidos a los circuitos de servos y del piezobocina ya existentes. He aquí la sintáxis del comando FREQOUT: FREQOUT Pin.Freq2} . Todos los diagramas de conexión mostrarán los circuitos de los dibujos esquemáticos que le preceden. así como también las conexiones con los circuitos de servos y de la bocina piezoeléctrica. Programando el Indicador Start/Reset El siguiente programa de ejemplo verificará la bocina piezoeléctrica.

las señales altas/bajas producirán un tono de 3000 hertz. Repite hasta que obtengas un tono audible de tu bocina. 2000. Verifica que la bocina piezoeléctrica produce un tono claramente audible después de cada acción de reset.bs2 Este programa de ejemplo emite un bip al principio del programa. Cuando comience de nuevo.bs2. Si se interrumpe la fuente de alimentación de la BASIC Stamp mientras el programa está en el proceso DO…LOOP. Introduce. La frecuencia se puede medir en hertz (Hz). El comando FREQOUT aplica tonos altos/bajos de duraciones variadas para hacer que la vibración de la bocina piezoeléctrica se parezca a vibraciones naturales de cuerdas musicales. Si no escuchaste un tono. volverá a emitir el bip. En este ejemplo. es 2000. El argumento Freq1 es la frecuencia de las señales altas/bajas. Estos mensajes continuarán indefinidamente porque están anidados entre DO y LOOP. FREQOUT sintetiza tonos digitalmente. o 3 kHz. El argumento Duration. 3000 El argumento Pin es 4. Un hertz equivale simplemente una vez por segundo y se abrevia 1 Hz. lo cual significa que las señales altas/bajas se enviarán al pin I/O P4. . intenta simular la condición de bajón presionando y soltando el botón Reset de la plaqueta.Página 112 · Robótica con el Boe-Bot He aquí un ejemplo del comando FREQOUT usado en el próximo programa de ejemplo. el que determina la duración de la señal alta/baja. FREQOUT 4. luego ejecuta un programa que envía mensajes DEBUG cada medio segundo. Un kilohertz equivale a mil veces por segundo y se abrevia 1 kHz. El hertz es una medida de frecuencia para indicar cuantas veces ocurre un evento por seguno. Programa de ejemplo: StartResetIndicator. Ahora puedes simular un bajón presionando y soltando el botón Reset o desconectando y conectando el suministro de baterías de tu plaqueta. guarda y ejecuta el programa StartResetIndicator. el programa volverá al inicio nuevamente. Si llegaste a escuchar un tono. lo que equivale a 2000 ms ó 2 segundos. √ √ √ √ √ Reconecta la energía de tu plaqueta. revisa si el cableado o el código presenta errores. Verifica que el piezobocina emitió un tono claramente audible durante dos segundos antes de que el mensaje “Waiting for reset…” comenzara a aparecer en el Debug Terminal.

bs2 El programa StartResetIndicator.. Cuando el tono termina. Tu Turno .Añadiendo el Programa StartResetIndicator. Una rutina de inicialización está compuesta por todos los comandos necesarios para hacer que un dispositivo o programa arranque. bips y.5 segundos hasta que haya un reset. Debido a que estas instrucciones son ejecutados tan rápidamente por el BASIC Stamp. o se desconecta y reconecta la energía. el programa volverá a iniciarse con el mensaje "Beep!!!" y el tono de 3 kHz.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 113 √ También intenta desconectando y reconectando la fuente de suministro de baterías y verifica que el resultado también es el tono de adverencia de reset.5} DEBUG CLS. "Waiting for reset…" PAUSE 500 LOOP ' Directiva del Stamp ' Directiva de PBASIC ' Mensaje mientras bocina suena ' Senal de start/reset ' ' ' ' DO. Puedes considerarlo como parte de la “rutina de inicialización” o “boot routine” para cada progrma del Boe-Bot.LOOP Muestra mensaje cada 0. ' Robotica con el Boe-Bot .bs2 ' Prueba el circuito de la bocina piezoelectrica. valores. mostrando el mismo mensaje “Waiting for reset…” una y otra vez. debería parecer que el mensaje se despliega al mismo tiempo en que la bocina piezoeléctrica comienza a emitir el tono. el programa entra en un bucle DO…LOOP. 2000. autoverificación y calibración. Cada vez que se presione el botón reset de la Board of Education. . para dispositivos más complejos.bs2 a un Programa Diferente Las líneas del código en el programa del indicador de batería se utilizarán al principio de cada programa de ejemplo de ahora en adelante. el comando FREQOUT reproduce un tono de 3 kHz en el speaker piezoeléctrico durante 2 s. Generalmente incluye establacer ciertas variables. Funcionamiento del Programa StartResetIndicator. 3000 DO DEBUG CR.bs2 comienza desplegando el mensaje “Beep!!!” Luego de imprimir el mensaje. ' {$STAMP BS2} ' {$PBASIC 2.StartResetIndicator.. "Beep!!!" FREQOUT 4.

bs2 en el programa HelloOnceEverySecond. Algo que puede hacer que este proceso avance mucho más rápido es el “Transmit windowpane” del Debug Terminal . Transmit Windowpane Receive Windowpane Figura 3-19 Windowpanes del Debug Terminal Ancho de pulso es una manera común de describir cuánto dura el pulso. puedes verificar la velocidad del servo ante cada ancho de pulso.bs2 arriba de la sección DO…LOOP. Copia el comando FREQOUT command del programa StartResetIndicator. La razón por la que se llama "ancho" se debe a que la duración del pulso está relacionada con su anchura en un diagrama de medición del tiempo. Puedes utilizar el Transmit windowpane (panel-ventana para transmisión. Los pulsos que duran más tiempo son más largos en el diagrama y los pulsos que duran menos tiempo son más cortos. harás un gráfico de la velocidad vs. que se muestra en la Figura 3-19. ACTIVIDAD #4: PROBANDO EL CONTROL DE VELOCIDAD CON EL DEBUG TERMINAL En esta actividad. el ancho del pulso.bs2.Página 114 · Robótica con el Boe-Bot √ √ √ Abre el programa HelloOnceEverySecond. Enviando mensajes al BASIC Stamp indicándole que ancho de pulso debe enviar al servo. . Ejecuta el programa modificado y verifica que responde con un tono de advertencia cada vez que se hace reset a la BASIC Stamp (presionando y soltando el botón Reset en la plaqueta o desconectando y conectando el suministro de la batería). en inglés) para enviar mensajes al BASIC Stamp.

una variable de palabra pulseWidth se utilizará para almacenar valores que recibe el comando DEBUGIN. en inglés) porque es el lugar donde son mostrados los mensajes que son recibidos desde el BASIC Stamp. El comando DEBUGIN coloca el valor que escribes en el Transmit windowpane dentro de una variable. .bs2. guarda y ejecuta el programa TestServoSpeed. Coloca el cursor sobre el Transmit windowpane del Debug Terminal. pulseWidth VAR Word Ahora. Introduce.bs2 Este programa te permite establacer el argumento Duration del comando PULSOUT introduciéndolo en el Transmit windowpane de la Debug Terminal. Verifica que el servo gira a toda velocidad conreloj durante seis segundos. probablemente ya estás familiarizado con el comando DEBUG y cómo puede usarse para enviar mensajes desde el BASIC Stamp al Debug Terminal. Aquí está siendo usado en el argumento Duration del comando PULSOUT: PULSOUT 12. Escribe 650 y luego presiona la tecla Enter. En el siguiente programa de ejemplo. y haz clic para activar el cursor en esa ventana para escribir. √ √ √ √ √ Continúa esta actividad con el Boe-Bot sobre su punta de tal manera que las ruedas no toquen el piso. el comando DEBUGIN puede ser utilizado para capturar un valor decimal que ingreses en el Transmit windowpane del Debug Terminal y almacenarlo en pulseWidth: DEBUGIN DEC pulseWidth Entonces puedes programar el BASIC Stamp para que use este valor. pulseWidth Programa de ejemplo: TestServoSpeed. El lugar donde se ven los mensajes se llama “Receive windowpane” (panel-ventana para recepción. Puedes usar el comando DEBUGIN para hacer que el BASIC Stamp reciba lo que escribes en el Transmit windowpane y lo almacene en una o más variables. El Debug Terminal también tiene un Transmit windowpane. que te permite enviar información a tu BASIC Stamp cuando un programa se está ejecutando.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 115 Usando el comando DEBUGIN A estas alturas.

810. 680. 820.Página 116 · Robótica con el Boe-Bot Cuando el servo deje de girar. 740. el programa te pedirá que introduzcas otro valor. .5 RPM. 850 Para cada ancho de pulso.5} counter VAR pulseWidth VAR pulseWidthComp VAR FREQOUT 4. 3000 DO DEBUG "Enter pulse width: " DEBUGIN DEC pulseWidth pulseWidthComp = 1500 – pulseWidth ' Calcula el complemento del pulso ' usado para la otra rueda ' Muestra mensaje para ingresar ' ancho de pulso Word Word Word ' Senal de start/reset del programa. 780. 790. Robotica con el Boe-Bot . 700. 800. Trata de medir la velicidad rotacional de la rueda RPM (revoluciones por minuto) para un rango de anchos de pulso de entre 650 y 850. luego cuenta las revoluciones de la rueda La rueda se movera por 6 segundos Multiplica por 10 para obtener las RPM. 700. Usa el Debug Terminal para probar qué tanto gira con los siguientes anchos de pulso: 650. 830. 770.65 vueltas completas. He aquí cómo: √ √ √ √ ' ' ' ' Coloca una marca en la rueda para ver qué tanto gira en 6 segundos. √ √ Escribe 850 y luego presiona la tecla Enter. 720. 730. Explica en tus propias palabras cómo se puede usar el ancho de pulso para controlar la velocidad del Continuous Rotation servo. 660. Por ejemplo. 750. 840. 670. 2000. 710. si la rueda realizó 3. multiplica el número de vueltas por 10 para obtener las RPM. 760.TestServoSpeed. '{$STAMP BS2} '{$PBASIC 2.bs2 Ingresa el ancho de pulso. 690. Verifica que el servo gira a toda velocidad contrareloj. estaba girando a 36.

Haciendo que uno de los comandos PULSOUT sea igualmente inferior a 750 como el otro es superior a 750. Si introduces un ancho de pulso de 850. El operador del Debug Terminal (ese eres tú) debe introducir un ancho de pulso. Esto hará que las mediciones en RPM que harás en la sección Tu Turno sean más precisas. FREQOUT 4. Esto resulta en que independientemente del valor Duration del comando PULSOUT. y pulseWidthComp que almacena el valor en un segundo comando PULSOUT. DEBUG "Enter pulse width: " DEBUGIN DEC pulseWidth Para que la medición sea precisa. counter para el bucle FOR…NEXT. la suma de los dos argumentos Duration del comando PULSOUT será siempre 1500. Esto asegura que los dos comandos PULSOUT combinados tarden la misma cantidad de tiempo. pulseWidthComp PAUSE 20 NEXT LOOP ' Envia el pulso a P12 ' Envia el complemento a P13 Funcionamiento del Programa TestServoSpeed. se deben enviar dos comandos PULSOUT.2000.bs2 Se declaran tres variables. pulseWidthComp . pulseWidth para los comandos DEBUGIN y PULSOUT. pulseWidthComp será 850.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 117 FOR counter = 1 TO 244 PULSOUT 12. El comando DEBUGIN almacena este valor en la variable pulseWidth.3000 El resto del programa está anidado en un DO…LOOP. counter VAR pulseWidth VAR pulseWidthComp VAR Word Word Word El comando FREQOUT se usa para señalar que el programa comenzó. pulseWidth PULSOUT 13. el bucle FOR…NEXT tardará el mismo tiempo en ejecutarse. El siguiente comando toma el ancho de pulso que introduciste y calcula un ancho de pulso que sumado al anterior de como total 1500. Si introduces un ancho de pulso de 650. así que se ejecutará una y otra vez.

positiva. pulseWidth PULSOUT 13.600 1.300 Figura 3-20 Ejemplo de curva de transferencia para el servo de Parallax 1.7 ms. La curva de transferencia de este servo en particular oscila entre las -48 RPM y las 48 RPM y el ancho de pulso oscila entre los1.500 Pulse Width. dirección conreloj es negativa y en sentido contrario.450 1. FOR counter = 1 TO 244 PULSOUT 12.550 1.650 1. El valor pulseWidthComp se envía al servo izquierdo (P13). En este gráfico. Todos sumarán 1500. Pulse Width for Servo 60 40 Rotational Velocity.pulseWidth Un bucle FOR…NEXT que se ejecute durante 6 seconds envía pulsos al servo derecho (P12). m s Right Servo 1. Rotational Velocity vs.Página 118 · Robótica con el Boe-Bot será 650. haciendo que gire en la dirección opuesta. Intenta otros ejemplos.350 1. Velocidad Rotacional La Figura 3-20 muestra un ejemplo de una curva de transferencia para un Continuous Rotation Servo.400 1. El eje horizontal muestra el ancho de pulso en ms y el eje vertical muestra la velocidad rotacional en RPM. pulseWidthComp = 1500 . RPM 20 0 -20 -40 -60 1.3 ms y los 1. pulseWidthComp PAUSE 20 NEXT Tu Turno – Tema avanzado: Graficando Ancho de Pulso vs. Si introduces un ancho de pulso de 700.700 . pulseWidthComp será 800.

3 m s Duration = 655 × 2 μs = 655 × 0.580 1. Tabla 3-1: Ancho de pulso y RPM para el servo de Parallax Ancho de pulso (ms) 1.490 Velocidad rotacional (RPM) Ancho de pulso (ms) 1.390 Velocidad rotacional (RPM) Ancho de pulso (ms) 1.400 1. Recuerda que el programa de ejemplo controla la rueda derecha con los valores que introduces.690 1. Duration = 650 × 2 μs = 650 × 0.310 1.000002 s = 0.680 1.bs2.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 119 Puedes usar la Tabla 3-1 para registrar las data de tu propia curva de transferencia.460 1.350 1. y así sucesivamente.00132 s = 1. Introduce el valor 650.330 1.660 1.420 1.340 1.00131 s = 1.650 1.570 1.370 1.31 m s Duration = 660 × 2 μs = 660 × 0.560 1. La rueda izquierda gira en la dirección opuesta.000002 s = 0.0013 s = 1. Haz clic en el Transmit windowpane de la Debug Terminal.470 1. Ejecuta el programa TestServoSpeed.450 1. PULSOUT 12.31 ms.300 1. PULSOUT 12.32 m s √ √ √ √ Marca la rueda derecha para tener un punto de referencia para contar las revoluciones. 650 manda pulsos que duran 1.700 Velocidad rotacional (RPM) Recuerda que el argumento Duration del comando PULSOUT está indicado en unidades de 2 µs.550 1.500 1.32 ms.360 1.440 1.590 Velocidad rotacional (RPM) Ancho de pulso (ms) 1.640 1.630 1. PULSOUT 12.3 ms a P12.520 1.410 1.670 1.000002 s = 0. 655 manda pulsos que duran 1.320 1.600 1.530 1.430 1. .620 1.380 1.610 1. 660 manda pulsos que duran 1.480 1.540 1.510 1.

Dado que el servo gira durante 6 segundos. Cuenta cuantas vueltas da la rueda. Repite este proceso para el otro servo. puedes multiplicar este valor por 10 to para obtener las revoluciones por minuto (RPM). Puedes repetir esta medición para el otro servo. Sigue aumentando los valores de 5 en 5 (0. Tendrás que modificar los comandos PULSOUT para que los pulsos con una duración de pulseWidth sean enviados a P13 y los pulsos con duración de pulseWidthComp sean enviados a P12. √ √ √ √ √ √ √ Multiplica este valor por 10 e introduce el resultado en la Tabla 3-1 al lado de la entrada 1. . Multiplica este valor por 10 e introduce este resultado en la Tabla 3-1 al lado de la entrada 1.01 ms) hasta que llegues a 850 (1. calculadora o papel cuadriculado para graficar las data.31 ms.3 ms. Introduce el valor 655. Usa una hoja de cálculo.7 ms).Página 120 · Robótica con el Boe-Bot √ Cuenta cuántas vueltas da la rueda.

Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 121 RESUMEN Este capítulo cubrió cómo ensamblar y verificar el Boe-Bot. Se introdujo el concepto de bajón. También incluyó ensamblaje de circuitos. Para lograr que la bocina piezoeléctrica emita un tono para señalar un reset. se introdujo el comando FREQOUT. ¿Qué comando tienes que usar para cambiar el programa RightServoTest. el Debug Terminal se ha usado para mostrar mensajes enviados a la computadora por el BASIC Stamp. ¿Cuáles son algunos síntomas de un bajón en el Boe-Bot? ¿Cómo se puede usar un piezobocina para detectar un bajón? ¿Qué es un reset? ¿Qué es una rutina de inicialización? ¿Cuáles son tres (o más) posibles errores que pueden ocurrir cuando se desconectan y reconectan los servos? 6. al igual que las consecuencias de dicha condición a un programa ejecutado por el BASIC Stamp. Estos mensajes se mostraban en el Receive windowpane. 4. después de haber sido desconectados para construir el Boe-Bot. Esto incluyó ensamblaje mecánico. Preguntas 1. puede que indique un bajón. El Debug Terminal también tiene un Transmit windowpane que puedes usar para enviar valores al BASIC Stamp. Esta técnica se usó para establacer el ancho de pulso para controlar y verificar la velocidad y dirección del servo. conectando los servos y la bocina piezoeléctrica. El valor puede ser usado por el programa PBASIC. cuando no se supone que deba hacerlo. 2. 5. Un bajón causa que el BASIC Stamp se reinicie y comience a ejecutar el programa desde el principio.bs2 para probar la rueda izquierda en lugar de la derecha? . El BASIC Stamp puede capturar estos valores ejecutando el comando DEBUGIN. tal como conectar varias partes móviles al chasis del Boe-Bot. 3. Por su parte. Hasta este capítulo. Este comando es parte de una rutina de inicialización que se usará al principio de todos los programas del Boe-Bot. Si la bocina piezoeléctrica suena en medio de un programa en ejecución. También se usó como ayuda para la recolección de data para trazar la curva de transferencia de un Continuous Rotation Servo. Se añadió una bocina piezoeléctrica para señalar el comienzo de un programa. Las verificaciones incluyeron probar los servos de nuevo. el cual recibe un valor enviado por el Transmit windowpane del Debug Terminal y lo almacena en una variable. los bajones pueden estar indicando que las baterías se están descargando.

bs2 para que puedas usar DEBUGIN para introducir el ancho de pulso para los servos izquierdo y derecho así como el número de pulsos que se enviaran en el bucle FOR…NEXT loop.Página 122 · Robótica con el Boe-Bot Ejercicios 1. Modifica el programa RightServoTest. . Usa este programa para controlar los movimientos de tu Boe-Bot a través del Transmit windowpane del Debug Terminal. Escribe un comando FREQOUT que emita un tono que suene diferente al tono de detección de reset para que marque el final de un programa. Modifica el programa TestServoSpeed. Prueba un valor con 100 ms de duración y una frecuencia de 4 kHz. Escribe un comando FREQOUT que emita un tono (diferente a los de inicio y final) que marque que un paso intermedio en un programa se ha completado.bs2 para que emita un tono que marque que la prueba se completó. 2. 2. Proyectos 1.

luego se mueve contrareloj tres segundos. El interruptor de energía no está en la posición 2. 4000 P1. 3000. Estas líneas de código se ejecutan cada vez que el programa comienza desde el principio. Por lo tanto. 500. Uno o ambos servos están conectados al contrario.5} DEBUG "Program Running!" counter VAR Word . Por ejemplo: FREQOUT. Las líneas de los servos P12 y P13 están intercambiadas. E1. Q4. es decir. Un comando FREQOUT al principio de todos los programas del Boe-Bot ocasiona que la bocina piezoeléctrica emita un tono.bs2. Los comandos PULSOUT se deben cambiar para que se lea PULSOUT 13 en vez de PULSOUT 12. 100. FREQOUT. El potenciómetro de centrado de servos no está ajustado. E2. 2.Ch03Prj01_TestCompleteTone. Los síntomas incluyen comportamiento errático como ir en direcciónes inesperadas o hacer movimientos confusos. este tono sonará cada vez que ocurra un reset accidental debido a un bajón. La batería de 9 V o las baterías AA no están puestas. de manera que el código de colores blanco-rojo-negro está de manera incorrecta. ' ' ' ' Robotica con el Boe-Bot . 4. 5. 3. La clave para solucionar este programa es añadir la línea del Ejercicio 1 arriba del comando END en el programa RightServoTest.bs2. Q5. 3500 funcionaría. Q3. Q6. Q2. el cual comienza nuevamente desde el principio. Un tono senaliza que la prueba ha finalizado.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 123 Soluciones Q1. FREQOUT 4. 2000. ' {$STAMP BS2} ' {$PBASIC 2. 4. se detiene por 1 segundo. La clave es modificar el comando FREQOUT usado para el programa StartResetIndicator. Un reset consiste en una interrupción de la energía y en el programa del BASIC Stamp.bs2 Servo derecho se mueve conreloj tres segundos. 4. 1. Una rutina de inicialización consiste en líneas de código que son usadas al principio del programa.

3500 END ' Senal comienzo de programa. 750 PAUSE 20 NEXT FOR counter = 1 TO 122 PULSOUT 12. Luego. el programa TestServoSpeed. Aún más. ancho de pulso del servo derecho y número de pulsos. ' Contrareloj 3 segundos. ' Senalizacion de final de programa P2.Ch03Prj02_DebuginMotion. ' Para 1 segundo. Un ejemplo de solución es el siguiente programa. un bucle FOR…NEXT con dos comandos PULSOUT para los servos deben ser añadidos para que los sevomotores se muevan. todas las variables deben declararse al principio del programa. Para resolver este problema. 650 PAUSE 20 NEXT FOR counter = 1 TO 40 PULSOUT 12.bs2 ' Ingresa el ancho de pulso del servo y la duracion para ambas ruedas a ' traves del Debug Terminal. 3000 FOR counter = 1 TO 122 PULSOUT 12.bs2 debe ser expandido para recibir data: ancho de pulso del servo izquierdo. ' Conreloj poco menos de 3 segundos.5} ltPulseWidth rtPulseWidth pulseCount counter DO DEBUG "Enter left servo pulse width: " DEBUGIN DEC ltPulseWidth DEBUG "Enter right servo pulse width: " DEBUGIN DEC rtPulseWidth DEBUG "Enter number of pulses: " ' Ingresa valores al Debug ' Terminal VAR VAR VAR VAR Word Word Byte Word ' ' ' ' Ancho de pulso servo izq Ancho de pulso servo der Numero de pulsos para el servo Contador de bucle . 850 PAUSE 20 NEXT FREQOUT 4. 2000. 500. '{$STAMP BS2} '{$PBASIC 2.Página 124 · Robótica con el Boe-Bot FREQOUT 4. ' Robotica con el Boe-Bot .

rtPulseWidth PAUSE 20 NEXT LOOP ' Numero de pulsos especifico ' Mocion servo izq ' Mocion servo der Nota: Este proyecto se verifica mejor con las ruedas del Boe-Bot suspendidas.Capítulo 3: Ensambla y Prueba tu Boe-Bot · Página 125 DEBUGIN DEC pulseCount FOR counter = 1 TO pulseCount PULSOUT 13. ltPulseWidth PULSOUT 12. .

Página 126 · Robótica con el Boe-Bot .

atrás. ACTIVIDAD #1: MANIOBRAS BASICAS CON EL BOE-BOT La Figura 4-1 muestra el frente. rota a la izquierda. Las maniobras y técnicas de programación introducidas en este capítulo serán usadas nuevamente en capítulos posteriores. La única diferencia es que en este capítulo. Escribe subrutinas para realizar las maniobras básicas de tal manera que cada subrutina pueda ser utilizada una y otra vez en un programa. Este capítulo también introduce formas para entonar y calibrar la navegación del BoeBot. izquierda y derecha de tu Boe-Bot. rota a la derecha y giros sobre sí mismo. Entona las maniobras de la Actividad 1 para que sean más precisas. el Boe-Bot realizará maniobras similares en respuesta a condiciones detectadas con sus sensores. Entre ellas están técnicas de enderezar la línea recta del Boe-Bot. la parte trasera. Usa las matemáticas para calcular el número de pulsos que se deben enviar para hacer que el Boe-Bot recorra una distancia predeterminada. escribe programas para que el Boe-Bot comience o termine una maniobra acelerando o desacelerando gradualmente. Cuando el Boe-Bot avanza.Capítulo 4: Navegación del Boe-Bot · Page 127 Capítulo 4: Navegación del Boe-Bot El Boe-Bot puede ser programado para realizar una variedad de maniobras. en la imagen. . En lugar de programar al Boe-Bot para que arranque y frene abruptamente. Registra maniobras complicadas en la memoria de programa sin usar del módulo BASIC Stamp y escribe programas que reproducen estas maniobras. debe rodar hacia la derecha de la página. El retroceso debe ser hacia la parte izquierda. En capítulos posteriores. el BoeBot realizará las maniobras a ciegas. Un giro hacia la izquierda debe hacer que el Boe-Bot de vuelta hacia la parte de arriba de la página y un giro a la derecha debería dejarlo viendo hacia la parte de abajo de la página. Actividad Resumen 1 2 3 4 5 6 Programa el Boe-Bot para realizar las actividades básicas: adelante. giros más precisos y cálculo de distancias.

Los argumentos StartValue y EndValue de un bucle FOR…NEXT controlan el número de pulsos que se envían.Página 128 · Robótica con el Boe-Bot Giro a la izq Retroceso Adelante Figura 4-1 Tu Boe-Bot y las direcciones de manejo Giro a la der Avanzando He aquí algo curioso: para hacer que el Boe-Bot avance. la otra rueda debe girar conreloj para que el BoeBot avance. Counterclockwise Clockwise Figura 4-2 Rotación de las ruedas para movimiento de avance Adelante Adelante Lado izquierdo Lado derecho Recuerda del Capítulo 2 que el argumento Duration del comando PULSOUT controla la velocidad y la dirección del giro del servo. la rueda tiene que girar contrareloj para que el Boe-Bot avance. pero su rueda derecha debe hacerlo conreloj. Si todavía no has comprendido esto. Observada desde la izquierda. Observada desde la derecha. Dado que cada pulso . observa la Figura 4-2 y ve si puedes convencerte de que es cierto. La rueda izquierda del Boe-Bot debe girar contrareloj.

FREQOUT 4. FREQOUT 4. 650 PAUSE 20 NEXT END Funcionamiento del Programa BoeBotForwardThreeSeconds. He aquí un programa de ejemplo que hará que el Boe-Bot ruede hacia adelante durante unos tres segundos. 3000 FOR counter = 1 TO 122 PULSOUT 13.bs2 ' Hace que el Boe-Bot avance por 3 segundos. Programa de ejemplo: BoeBotForwardThreeSeconds. y comandos PAUSE.. genera un tono para señalar el comienzo del programa. He aquí un repaso de lo que hace cada uno y cómo se relaciona con los movimientos del servo.bs2 Desde el capítulo 2. 2000. el argumento EndValue también controla la cantidad de tiempo durante la cual el servo funciona. 850 PULSOUT 12. Se usará en todos los programas que ejecuten los servos. ya tienes bastante experiencia con elementos de este programa: declaración de una variable. un bucle FOR…NEXT. 3000 ' Senal comienzo del programa.. counter VAR Word Deberías reconocer este comando.BoeBotForwardThreeSeconds. ' Mueve servos por 3 segundos.Capítulo 4: Navegación del Boe-Bot · Page 129 toma la misma cantidad de tiempo. .5} DEBUG "Program Running!" counter VAR Word ' Senal comienzo del programa. ' Robotica con el Boe-Bot .bs2.bs2 √ √ Asegúrate de que la energía esté conectada a la BASIC Stamp y los servos. comandos PULSOUT con argumentos Pin y Duration.NEXT. guarda y ejecuta el programa BoeBotForwardThreeSeconds. Introduce. 2000. Primero se declara una variable a ser usada en el bucle FOR. ' {$STAMP BS2} ' {$PBASIC 2.

Cambia el EndValue del bucle FOR.. haciendo pausas de 20 ms después de cada grupo y luego volviendo al principio del bucle. el Boe-Bot avanzará la mitad de la distancia. Guarda el programa BoeBotForwardThreeSeconds. El bucle FOR…NEXT tarda unos 3 segundos para ejecutarse 122 veces. Los argumentos Duration del comando PULSOUT. 720 √ Ejecuta el programa y verifica que tu Boe-Bot se mueve más lentamente. 850 PULSOUT 12. te permite reducir la velocidad de tu Boe-Bot. por lo que el BoeBot avanzará durante unos 3 segundos. Acercando los argumentos Duration del comando PULSOUT al valor 750. . 780 PULSOUT 12. Así. 650 produce que el servo derecho gire conreloj. pero esta vez.Página 130 · Robótica con el Boe-Bot Este bucle FOR…NEXT envía 122 grupos de pulsos a los servos. √ Modifica tu programa con los comandos PULSOUT: PULSOUT 13.bs2 con un nuevo nombre.NEXT de 122 a 61. 650 PAUSE 20 NEXT PULSOUT 13. Tu Turno – Ajustando la distancia y la velocidad √ √ √ √ √ Cambiando el argumento EndValue del bucle FOR…NEXT de 122 a 61. FOR counter = 1 TO 122 PULSOUT 13. 850 produce que el servo izquierdo gire contrareloj mientras que PULSOUT 12. puedes hacer que el Boe-Bot avance durante la mitad del tiempo. ambas ruedas estarán girando hacia el extremo posterior del Boe-Bot. provocaron que los servos giraran a una velocidad cercana a su máxima velocidad.. Ejecuta el programa y verifica que avanzó la mitad de la distancia en la mitad del tiempo. uno a P13 y uno a P12. Por lo tanto. Intenta estos pasos nuevamente. cambia el EndValue del bucle FOR…NEXT a 244. produciendo un movimiento de avance. con valored respectivos 650 y 850. el cual indica a los servos que no se muevan.

Capítulo 4: Navegación del Boe-Bot · Page 131 Retrocediendo. 850 PULSOUT 12.ForwardLeftRightBackward. guarda y ejecuta ForwardLeftRightBackward. Luego. der. 850 Estos dos comandos harán que tu Boe-Bot realice un giro hacia la izquierda (contrareloj si lo miras desde arriba): PULSOUT 13. CONSEJO – Para escribir este programa rápidamente. estos dos comandos PULSOUT pueden ser usados para hacer que tu Boe-Bot retroceda: PULSOUT 13. Por ejemplo.bs2 ' Mueve hacia adelante.5} DEBUG "Program Running!" counter VAR Word ' Senal comienzo del programa.. izq. ajusta sólo los valores del PULSOUT Duration y el EndValues del bucle FOR…NEXT. 850 Puedes combinar todos estos comandos en un solo programa que hará que el Boe-Bot avance.bs2 √ Introduce. gire a la izquierda.bs2. girando y rotando sobre sí mismo Lo único que necesitas hacer para obtener los otros movimientos de tu Boe-Bot es tomar diferentes combinaciones de los argumentos Duration del comando PULSOUT. ' {$STAMP BS2} ' {$PBASIC 2. luego a la derecha y finalmente retroceda. ' Robotica con el Boe-Bot . usa el menú de herramientas de edición del BASIC Stamp Editor (copiar y pegar) para hacer cuatro copias del bucle FOR…NEXT.. 650 Estos dos comandos harán que tu Boe-Bot realice un giro a la derecha (conreloj si lo miras desde arriba): PULSOUT 13. 650 PULSOUT 12. 2000. FREQOUT 4. 650 PULSOUT 12. y atras para ensayar y entonar. Programa de ejemplo: ForwardLeftRightBackward. 3000 .

1/4 de vuelta ' Atras Tu Turno – Pivoteando Puedes hacer que el Boe-Bot rote por medio de un pivoteo alrededor de una rueda. 1/4 de vuelta ' Rota der. 750 PULSOUT 12. 850 PULSOUT 12. Por ejemplo. PULSOUT 13. 650 PAUSE 20 NEXT PAUSE 200 FOR counter = 1 TO 24 PULSOUT 13. 850 PAUSE 20 NEXT END ' Adelante ' Rota izq. – aprox.Página 132 · Robótica con el Boe-Bot FOR counter = 1 TO 64 PULSOUT 13. 650 . 850 PULSOUT 12. el Boe-Bot rotará sobre sí mismo hacia la izquierda. 650 PULSOUT 12. 850 PAUSE 20 NEXT PAUSE 200 FOR counter = 1 TO 64 PULSOUT 13. El truco está en hacer que una de las ruedas permanezca quieta mientras la otra gira. 650 PAUSE 20 NEXT PAUSE 200 FOR counter = 1 TO 24 PULSOUT 13. – aprox. 650 PULSOUT 12. si mantienes la rueda izquierda quieta mientras la derecha gira conreloj (hacia adelante).

PULSOUT 13. Esto se puede lograr con una . simplemente detienes la rueda derecha y haces que la rueda izquierda gire contrareloj (hacia adelante). Ejecuta el programa y verifica que cada uno de los movimientos de giro sobre sí mismo funcionan. Mientras la solución que involucra el uso del destornillador se denomina “ajuste de hardware”. ACTIVIDAD #2: ENTONANDO LAS MANIOBRAS BASICAS Imagina escribir un programa que le indica al Boe-Bot que avance a toda velocidad durante 15 segundos. 650 PULSOUT 12.bs2. Diez segundos de avance deberían ser suficientes. Simplemente puedes ajustar levemente el programa para que las ruedas del Boe-Bot se desplacen a la misma velocidad. PULSOUT 13. ¿Qué pasa si el Boe-Bot se desvía un poco hacia la derecha o la izquierda durante este trayecto cuando se supone que debía avanzar en línea recta? No es necesario desarmar el Boe-Bot y volver a ajustar los servos con el destornillador para arreglar esto. 850 PULSOUT 12.Capítulo 4: Navegación del Boe-Bot · Page 133 Si quieres que rote sobre sí mismo hacia adelante y la derecha. 750 Finalmente. Enderezando el Camino del BOE-BOT El primer paso es examinar el trayecto de tu Boe-Bot durante suficiente tiempo para averiguar si la desviación es hacia la izquierda o la derecha cuando debería ir en línea recta. Substituye los comandos PULSOUT que acabas de ver por las rutinas avance. derecha y retroceso. 750 PULSOUT 12. la solución a través de la revisión del programa se denomina “ajuste de software”. 850 √ √ √ √ √ Guarda el programa ForwardLeftRightBackward.bs2 como PivotTests. Ajusta el tiempo de ejecución para cada maniobra cambiando cada EndValue del bucle FOR…NEXT a 30. Asegúrate de cambiar el comentario al lado de cada bucle FOR…NEXT para que refleje las nuevas acciones. 750 Estos son los comandos PULSOUT para que rote sobre sí mismo hacia atrás y a la derecha. PULSOUT 13. izquierda. estos son los comandos PULSOUT para que rote sobré sí mismo hacia atrás y a la izquierda.

. ' ' ' ' Numero de pulsos – tiempo de corrida. Dado que el Boe-Bot ya está avanzando a toda velocidad. debería ajustar tu Boe-Bot para que se desvíe ligeramente hacia la derecha.bs2.bs2 √ √ √ Abre el BoeBotForwardThreeSeconds. velocidad max CTR. Existen dos maneras de ver este problema: la rueda izquierda está girando lentamente o la derecha. 3000 FOR counter = 1 TO 407 PULSOUT 13. Cambia el EndValue del FOR counter de 122 a 407.bs2 ' Hace que el Boe-Bot ruede hacia adelante por 10 segundos. 2000. Programa de ejemplo: BoeBotForwardTenSeconds.bs2. Si sigues las instrucciones. Servo izq. ' {$STAMP BS2} ' {$PBASIC 2. prueba este ejemplo de todas maneras. Cámbiale el nombre y guárdalo como BoeBotForwardTenSeconds. para que quede así: ' Robotica con el Boe-Bot .. Digamos que el Boe-Bot gira levemente hacia la izquierda. rápidamente. FREQOUT 4. velocidad max CNR.Página 134 · Robótica con el Boe-Bot simple modificación del programa BoeBotForwardThreeSeconds.BoeBotForwardTenSeconds. Tu Turno – Ajustando la Velocidad del Servo para Enderezar el Recorrido del Boe-Bot Si tu Boe-Bot avanza perfectamente derecho. aumentar la velocidad de la . Servo der. 850 PULSOUT 12.5} DEBUG "Program Running!" counter VAR Word ' Senal comienzo del programa. 650 PAUSE 20 NEXT END √ Ejecuta el programa y observa cuidadosamente para ver si tu Boe-Bot se desvía hacia la derecha o la izquierda mientras avanza durante diez segundos.bs2 de la actividad previa.

Si el Boe-Bot se encuentra sólo un poco fuera de curso. más lento girará el servo.650 a algo más cercano a 750. Tal vez esto lo sobrecorrija y resulta que PULSOUT 12. Digamos que el primer intento es PULSOUT 12. significa que tienes que desacelerar la rueda izquierda reduciendo el Duration de 850 en el comando PULSOUT 13. Mientras más cercano sea el valor de Duration a 750. es decir un proceso que requiere múltiples intentos y refinamientos para llegar al valor adecuado. Si los servos están muy desfasados. intenta estas modificaciones para ver los resultados.663. Probablemente te tome varios intentos encontrar el valor adecuado. más lento será el movimiento del servo.Capítulo 4: Navegación del Boe-Bot · Page 135 rueda izquierda no resulta práctico. √ √ √ Modifica el programa BoeBotForwardTenSeconds.665 es la solución. . Debería provocar que el Boe-Bot se desplace describiendo una curva en lugar de una línea recta. Repita la verificación para la trayectoria en línea recta. tal vez podría usarse PULSOUT 12.bs2 para que indique al BoeBot que se desplace en retroceso durante diez segundos.663 solucione el problema. tal vez PULSOUT 12. √ √ Modifica el programa BoeBotForwardTenSeconds. Si tu Boe-Bot se desvía hacia la derecha en vez de la izquierda. pero desacelerar la derecha debería ayudar a resolver el problema. Entonces intentas PULSOUT 12. Usa teipe o un marcador para etiquetar cada servo con los mejores valores PULSOUT.bs2 para que indique al BoeBot avanzar en línea recta. Recuerda que el límite de velocidad del servo está determinado por el argumento Duration del comando PULSOUT. mientras más cercano es el valor a 750.690. Nuevamente. Esto significa que deberías cambiar el valor 650 en el comando PULSOUT 12.670.850. Si tu Boe-Bot no necesita ajustes para avanzar en línea recta. pero resulta que no es suficiente porque el Boe-Bot todavía se desvía un poco hacia la izqierda. Esto es lo que se llama un proceso iterativo. Puede que te des cuenta de que ocurre una situación completamente distinta cuando programas tu Boe-Bot para que se desplace en retroceso.

1/4 de vuelta Digamos que el Boe-Bot rota un poco más de 90° (1/4 de una circunferencia completa). Intenta FOR counter = 1 TO 23. Si no rota lo suficiente. Si llegas a un valor que se pasa ligeramente de 90° y otro que no llega al ángulo deseado por muy poco. puedes ajustar el argumento EndValue del bucle FOR…NEXT para acercarte bastante al ángulo de giro que deseas.bs2 para que realice giros precisos 90° .Página 136 · Robótica con el Boe-Bot √ Repite los pasos para corregir el argumento Duration del comando PULSOUT para enderezar el recorrido en retroceso del Boe-Bot. He aquí una rutina de giro a la izquierda del programa ForwardLeftRightBackward. intenta eligiendo el valor que se pase ligeramente. FOR counter = 1 TO 24 PULSOUT 13. y luego desacelere levemento los servos. Tu Turno – Giro de 90° √ √ √ Modifica el programa ForwardLeftRightBackward. ambos argumentos Duration del comando PULSOUT deberían cambiarse de 650 a un valor más cercano a 750. Actualiza la etiqueta en cada servo con la notación acerca del valor EndValue apropiado para un giro de 90°. o tal vez. Entonando los Giros Los ajustes de software también pueden usarse para que el Boe-Bot gire en un ángulo deseado. éste también va a ser un proceso iterativo. En el caso de rotación a la izquierda. . Actualiza el programa ForwardLeftRightBackward. Como con los ejercicios en línea recta. Dado que el bucle FOR…NEXT controla el tiempo. El tiempo que el Boe-Bot rota sobre sí mismo determina cuánto gira.bs2. por ejemplo 90°. aumenta el tiempo de giro incrementando el valor EndValue del bucle FOR…NEXT al valor que se necesite para completar el cuarto de giro.bs2 con los valores PULSOUT que determinaste para trayectos de avance y retroceso en línea recta. 650 PULSOUT 12. – aprox. FOR counter = 1 TO 22. 650 PAUSE 20 NEXT ' Rota izq.

o. una y otra vez. time = distance speed . después de ser mayor y haber aprendido a dividir en la escuela. Un tipo de concurso de robótica popular es llamado dead reckoning (cálculo a ojo. comenzaste a leer las señales en la carretera para ver qué tan lejos estaba la ciudad de destino. Luego. Seguramente no estabas pensando en estos términos. pero esta es la ecuación que estabas utilizando. Para maniobras más precisas. Probablemente recuerdas haberle preguntado a tus padres. ¡No esperes resultados perfectos! Una alfombra es como el green en un campo de golf – las fibras de la alfombra pueden afectar la forma en que tu Boe-Bot se desplaza. SI estás usando tu Boe-Bot sobre una alfombra. Dividiendo la distancia por la velocidad podías obtener un buen estimado del tiempo que tardarían en llegar. la siguiente pregunta: “¿Ya llegamos?” Tal vez. especialmente en distancias largas. El propósito de este concurso es hacer que tu robot vaya a una o más localidades y luego regrese exactamente al lugar de donde comenzó. en la vía hacia un lugar de vacaciones o a casa de un familiar.Capítulo 4: Navegación del Boe-Bot · Page 137 Las alfombras pueden producir errores de navegación. ACTIVIDAD #3: CALCULANDO DISTANCIAS En muchos concursos de robótica una navegación más precisa es meritoria de un mejor puntaje. usa una superficie más lisa. en inglés). veías el velocímetro del carro. navegación a estima.

Asegúrate de alinear el punto donde la rueda toca el piso con el 0 de la regla.Bot Tendrás que verificar la velocidad de tu Boe-Bot. time = 140 miles 70 miles/hour 1 hour = 140 miles × 70 miles = 2 hours Si estás a 200 kilómetros de tu destino y viajas a 100 kilómetros por hora. √ √ √ Introduce. guarda y ejecuta el programa ForwardOneSecond. te va a tomar 2 horas llegar. te va a tomar 2 horas llegar. Si tu regla está marcada en pulgadas tu respuesta estará dada en pulgadas por segundo (in/s). Midiendo cuán lejos avanzó tu Boe-Bot. si está marcada con centímetros tu respuesta estará dada en centímetros por segundo (cm/s). . sólo que tienes control sobre la distancia a la que se encuentra de su destino. La forma más fácil de hacerlo es colocar el Boe-Bot al lado de una regla y hacer que avance durante un segundo. Coloca tu Boe-Bot al lado de una regla como se muestra en la Figura 4-3.bs2.Página 138 · Robótica con el Boe-Bot Ejemplo – Tiempo para distancias en millas Ejemplo – Tiempo para el sistema métrico decimal Si estás a 140 millas de tu destino y viajas a 70 millas por hora. sabrás su velocidad. time = 200 kilometers 100 kilometers/hour 1 hour = 200 km × 100 km = 2 hours Puedes hacer el mismo ejercicio con el Boe-Bot.Bot velocidad del Boe . He aquí la ecuación que vas a utilizar: tiempo de corrida de servo = distancia del Boe .

3000 FOR counter = 1 TO 41 PULSOUT 13. Mide cuán lejos avanzó tu Boe-Bot e indica la distancia hasta el sitio donde la rueda está haciendo contacto con el piso:__________________ in / cm.ForwardOneSecond.Capítulo 4: Navegación del Boe-Bot · Page 139 Figura 4-3: Midiendo el recorrido del Boe-Bot 6-9VDC 15 14 Vdd 1 3 12 Red Black 9 Vdc Battery X4 Pwr ST in AMPS CLA SS TM X5 Vdd X3 P1 5 P1 4 P1 3 P1 2 P11 P1 0 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 Vin Vss 1 Sout Sin ATN Vss P0 P1 P2 P3 P4 P5 P6 P7 Vin Vss Rst Vdd P15 P14 P13 P12 P11 P10 P9 P8 Vss P0 P2 P4 P6 P8 P1 0 P1 2 P1 4 Vd d Vss P1 P3 P5 P7 P9 P11 P1 3 P1 5 Vin X1 U1 Reset X2 www.bs2 ' Mueve el Boe-Bot hacia adelante pro un segundo.com 0 1 2 Board of Education Rev C © 2000-2003 Measured Distance inch cm 1 2 1 3 4 2 5 6 7 3 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 4 5 6 7 8 9 10 √ √ Presiona el botón Reset en tu plaqueta para volver a ejecutar el programa. Programa de ejemplo: ForwardOneSecond. FREQOUT 4.5} DEBUG "Program Running!" counter VAR Word ' Senal comienzo del programa.stampsinclass.bs2 ' Robotica con el Boe-Bot . 2000. 650 PAUSE 20 NEXT END . 850 PULSOUT 12. ' {$STAMP BS2} ' {$PBASIC 2.

Este es el número que debes usar en tu argumento EndValue del bucle FOR…NEXT. las cuales son apropiadas para el Boe-Bot. Ya que esta prueba demoró un segundo. Otra forma de obtener un recíproco es dividir uno entre un número o una fracción.22 s para avanzar 20 in. pulgadas por segundo se abrevia in/s y centímetros se abrevia cm/s. Digamos que tu Boe-Bot avanzó 9 in (23 cm).Página 140 · Robótica con el Boe-Bot También puedes pensar en la distancia que acabas de marcar como la velocidad de tu Boe-Bot. . El recíproco de este valor equivale al número de pulsos por segundo que el bucle trasmite a cada servo. en unidades por segundo.22 s = 51 cm × = 2. En otras palabras. Actividad #6. 1 ÷ 0. Ahora. Hay 2. time = 20 in 9 in/s 1s 9 in A 23 cm/s.024 s/pulso = 40. significa que tu Boe-Bot avanza a una velocidad alrededor de 9 in/s (23 cm/s). tu Boe-Bot tiene que avanzar durante 2. aprendimos que la ejecución de dos comandos PULSOUT y uno PAUSE.. time = 51 cm 23 cm/s 1s 23 cm = 20 in × = 2.54.65 pulsos/s.22 s) y el número de impulsos que el BASIC Stamp manda a los servos cada segundo (40.22 s En el Capítulo 2.54 cm en 1 in.024 s). Dado que conoces la cantidad de tiempo durante la que quieres que tu Boe-Bot avance (2.22 s para avanzar 51 cm.65 pulsos/s). puedes usar estos valores para calcular cuántos pulsos se deben mandar a los servos. Pulgadas y centímetros por segundo – La abreviatura para pulgadas en inglés es in. tarda 24. Puedes convertir los centímetros en pulgadas dividiendo el número de centímetros por 2. Puedes convertir de pulgadas a centímetros multiplicándo el número de pulgadas por 2. Ambas son medidas que indican velocidad. en un bucle FOR…NEXT. la abreviatura para centímetros es cm.6 ms (0. El recíproco de un número es el resultado obtenido al invertir numerador y denominador de una fracción.54. tu Boe-Bot tiene que avanzar durante 2. De manera análoga. Ejemplo – tiempo para 20 in Ejemplo – tiempo para 51 cm A 9 in/s. puedes calcular cuántos segundos necesita tu BoeBot para avanzar una distancia determinada.

Dado que sabes que tienes que multiplicar por 40. tu Boe-Bot tiene que avanzar durante 2.65 pulses s = 90.65 pulses = 51 cm × × 23 cm 1s = 51 ÷ 23 × 40. luego calcula cuántos pulsos necesitas para que los servos se desplacen durante ese periodo de tiempo. calcula cuánto tiempo deben desplazarse los servos para que el Boe-Bot avance una cierta distancia. tu Boe-Bot tiene que avanzar durante 2. usa una regla y el programa ForwardOneSecond.65 para convertir tiempo de desplazamiento.. Decide cuán lejos quieres que tu Boe-Bot avance.65 pulses × 9 in/s s 1 s 40...65 pulses × 23 cm/s s 1s 40. Primero.bs2 para determinar la velocidad de tu Boe-Bot en in/s o cm/s.65 pulses = 90.333. pulses ≈ 90 pulses A 23 cm/s.. es momento de intentar esto con distancias que tú elijas.24. pulses = 51 cm 40. en pulsos.65 pulses × Boe − Bot speed s Ejemplo – tiempo para 20 in Ejemplo – tiempo para 51 cm A 9 in/s.22 s × 40. Usa la ecuación de pulsos para calcular cuántos pulsos deben ser enviados a los servos del Boe-Bot: pulses = Boe − Bot dis tan ce 40. √ √ √ Si todavía no lo has hecho. pulses ≈ 90 pulses Tu Turno – La Distancia de tu Boe-Bot Ahora. pulses ≈ 90 pulses Los cálculos en este ejemplo requirieron dos pasos.65 pulses × Boe − Bot speed s .65 pulses = 90..65 pulses = 20 in × × 9 in 1s = 20 ÷ 9 × 40.136.22 s para avanzar 20 in.. puedes reducir la operación a un sólo paso.22 s para avanzar 51 cm.Capítulo 4: Navegación del Boe-Bot · Page 141 pulses = 2. pulses = Boe − Bot dis tan ce 40. pulses = 20 in 40.

Mientras el valor de la variable pulseCount aumenta.Página 142 · Robótica con el Boe-Bot √ √ Modifica el programa BoeBotForwardOneSecond. 749. así que equivale a usar los comandos PULSOUT 13. Las velocidades del servo también serán más bajas a medida que las baterías pierden su carga. La Figura 4-4 muestra un bucle FOR…NEXT que puede aumentar gradualmente la velocidad del Boe-Bot desde 0 hasta la velocidad máxima hacia adelante. lo cual representa la máxima velocidad hacia adelante del Boe-Bot. 752 y PULSOUT 12. así que quivale a usar los comandos PULSOUT 13. que cuentan el número de orificios de las ruedas dell Boe-Bot a medida que van pasando.parallax. Cuando el bucle se encuentre en su centésima iteración. o. la variable pulseCount aumenta en 1. Esta técnica tiene margen de error. documentación y programas ejemplo de estos dispositivos se pueden encontrar en la página Robotics Accessories del sitio www. La actividad que acabas de terminar no toma en cuenta el hecho de que hace falta un cierto número de pulsos para lograr que el Boe-Bot llegue a su velocidad máxima. también lo hace la velocidad de los servos. 850 y PULSOUT 12. Esta técnica puede aumentar la vida de las baterías y servos de tu Boe-Bot. Tampoco tomó en cuenta la distancia que pueda recorrer el Boe-Bot antes de frenar por completo. en rampa. ACTIVIDAD #4: MANIOBRAS – ACELERACION GRADUAL Ramping (gradualmente. Hardware. Programando para Aceleración Gradual La clave para una aceleración gradual es usar variables en conjunto con el argumento Duration del comando PULSOUT. la variable pulseCount es 100.bs2 para que envíe el número de pulsos que determinaste para recorrer tu distancia.com. . pulseCount es 1. Cada vez que el bucle FOR…NEXT se repite. 748. Puedes reducir el margen de error de las distancias de tu Boe-Bot con dispositivos llamados encoders (codificadores de giro. así que equivale a usar los comandos PULSOUT 13. el valor de pulseCount es 2. 650. La segunda vez en el bucle. en inglés). en inglés) es una forma de acelerar o desacelerar gradualmente la velocidad de los servos en lugar de arrancar o frenar abruptamente. 751 y PULSOUT 12. La primera vez en el bucle. Ejecuta el programa y verifica que tan cerca estuviste.

750 + pulseCount PULSOUT 12. FOR pulseCount = 1 TO 100 PULSOUT 13. Programa de ejemplo: StartAndStopWithRamping. He aquí un programa de ejemplo que usa bucles FOR…NEXT para ramp hasta la velocidad máxima y luego ramp hasta frenar. Verifica que el Boe-Bot acelera gradualmente hasta alcanzar la velocidad máxima.5} DEBUG "Program Running!" pulseCount VAR Word ' Contador para bucle FOR. 750 . se mantiene así por un rato y luego desacelera gradualmente hasta frenar por completo. 3.5 ms – pulseCount. ' -----[ Main Routine ]------------------------------------------------------' Ramp up forward.pulseCount PAUSE 20 NEXT 1.. 2000. = 1. guarda y ejecuta el programa StartAndStopWithRamping.bs2 √ √ Introduce. 750 + pulseCount PULSOUT 12.StartAndStopWithRamping.NEXT ' -----[ Initializacion ]---------------------------------------------------FREQOUT 4.pulseCount PAUSE 20 ' ' ' ' Bucle Pulso Pulso Pausa acelera gradualmente 100 pulsos. avanza. 2. Puede usar esto para ramp la velocidad en forma decreciente usando FOR pulseCount = 100 TO 1. …100 Recuerda del Capítulo 2. ' {$STAMP BS2} ' {$PBASIC 2.5 ms + pulseCount. = 1.bs2 ' Acelera gradualmente. que los bucles FOR…NEXT también pueden contar en forma decreciente.bs2. por 20 ms.Capítulo 4: Navegación del Boe-Bot · Page 143 pulseCount VAR Word Figura 4-4 Ejemplo de aceleración gradual FOR pulseCount = 1 TO 100 PULSOUT 13. 750 . ' -----[ Titulo ]------------------------------------------------------------' Robotica con el Boe-Bot . 3000 ' Senal comienzo del programa.. desacelera gradualmente. . Actividad #5.

De manera análoga. 750 . en el comando PULSOUT 12 se suma a 750 el valor de pulseCount. maxima iendo hacia atras FOR pulseCount = 1 TO 100 PULSOUT 13. 750 + pulseCount PULSOUT 12. de 1. en vez de ser sumado como antes. de 1. Restando pulseCount a 750 en los dos comandos PULSOUT. 750 . sumando el valor de pulseCount a 750 en los dos comandos PULSOUT. FOR pulseCount = 1 TO 100 PULSOUT 13. 850 PULSOUT 12.5 ms .pulseCount PAUSE 20 NEXT END ' ' ' ' Bucle Pulso Pulso Pausa desacelera gradualmente 100 pulsos. Tu Turno También puedes crear rutinas para combinar aceleración gradual ascendente o descendente con otras maniobras. ' Acelera gradualmente hasta vel.7 ms a servo izq.pulseCount.Página 144 · Robótica con el Boe-Bot NEXT ' Avanza por 75 pulsos. ' Desacelera gradualmente avanzando hasta dentenerse completamente. FOR pulseCount = 1 TO 75 PULSOUT 13. = 1. por 20 ms. 750 + pulseCount PAUSE 20 NEXT También puedes crear una rutina para realizar gradualmente un giro. = 1. 650 PAUSE 20 NEXT ' ' ' ' Bucle Pulso Pulso Pausa manda 75 pulsos de avance. He aquí un ejemplo sobre cómo acelerar gradualmente hasta la velocidad máxima retrocediendo en vez de avanzando.pulseCount PULSOUT 12. puedes realizar un giro gradual en la otra dirección. por 20 ms.3 ms a servo der. La única diferencia entre esta rutina y la rutina original de avance es que el valor de pulseCount en el comando PULSOUT 13 es restado a 750.5 ms + pulseCount. el cual antes era restado. ' Se detiene hasta un reset. He aquí un .

Esto consiste en el comando en el programa que le dice que salte a la parte reusable del código. 750 + pulseCount PULSOUT 12. 750 + pulseCount PULSOUT 12. Uno de los ingredientes clave para evadir obstáculos es ejecutar las maniobras preprogramadas. Consejo: podrías utilizar los fragmentos de código anteriores y fragmentos similares del programa StartAndStopWithRamping. 750 + pulseCount PAUSE 20 NEXT ' Gradualmente desacelera rotando hacia la derecha. Esta actividad introduce subrutinas y también dos enfoques diferentes hacia la creación de maniobras reusables con subrutinas. Una forma de ejecutar maniobras preprogramadas es con subrutinas. 750 + pulseCount PAUSE 20 NEXT √ √ Abre el programa ForwardLeftRightBackward.bs2. tu Boe-Bot tendrá que realizar maniobras para evadir obstáculos. Dentro de la Subrutina Una subrutina de PBASIC tiene dos partes. La otra parte es la subrutina como . La primera es la llamada a la Subrutina. FOR pulseCount = 30 TO 0 PULSOUT 13. y que luego vuelva cuando haya terminado. ' Gradualmente acelera rotando hacia la derecha. Los servos no tienen la oportunidad de llegar a la velocidad máxima antes de tener que desacelerar otra vez.Capítulo 4: Navegación del Boe-Bot · Page 145 ejemplo de un cuarto de giro con rotación gradual. ACTIVIDAD #5: SIMPLIFICANDO LA NAVEGACION CON SUBRUTINAS En el siguiente capítulo. Modifica el nuevo programa para que el Boe-Bot acelere gradualmente para comenzar y terminar cada maniobra. FOR pulseCount = 0 TO 30 PULSOUT 13.bs2.bs2 de la Actividad #1 y guárdalo como ForwardLeftRightBackwardRamping.

CR 1000 My_Subroutine "After subroutine". PAUSE 1000 ocasiona una pausa de un segundo. He aquí cómo trabaja. la flecha (2) muestra como vuelve a saltar al comando inmediatamente después del comando GOSUB. Entonces. El programa empieza a bajar línea por línea desde la etiqueta. es todo lo que aparece desde la etiqueta My_Subroutine: hasta el comando RETURN. La subrutina en sí. cuando el programa llega al comando RETURN. En este caso. CR PAUSE 1000 RETURN Programa de ejemplo – OneSubroutine. La subrutina comienza con una etiqueta que sirve como su nombre y termina con un comando RETURN. Cuando el programa llega al comando GOSUB My_Subroutine.5} .Página 146 · Robótica con el Boe-Bot tal. ' {$STAMP BS2} ' {$PBASIC 2. guarda y ejecuta el programa OneSubroutine. es un comando DEBUG el cual despliega el mensaje “After subroutine”.bs2 ' Este programa demuestra una llamada a subrutina simple. La llamada a subrutina consiste en el comando GOSUB My_Subroutine. Los comandos entre la etiqueta y el comando RETURN componen el bloque de código que hace el trabajo que quieres que realice la subrutina. La Figura 4-5 muestra un fragmento de un programa de PBASIC que contiene una llamada a subrutina y una subrutina. el programa salta de la etiqueta My_Subroutine: y comienza a ejecutar comandos. DO DEBUG PAUSE GOSUB DEBUG PAUSE LOOP "Before subroutine". por lo que obtendrás el mensaje “Command in subroutine” en tu Debug Terminal.OneSubroutine.bs2 ' Robotica con el Boe-Bot . Como se muestra en la flecha (1). CR 1000 1 Figura 4-5 Subrutinas básicas 2 My_Subroutine: DEBUG "Command in subroutine". busca la etiqueta My_Subroutine:.bs2 √ Introduce.

Prueba este programa y observa su efecto.CR 1000 My_Subroutine "After subroutine". 3500 RETURN ' Etiqueta de la subrutina ' Bloque de ' codigo de la subrutina .bs2 Robotica con el Boe-Bot . Deberías recibir el mismo grupo de tres mensajes en el mismo orden cada vez. CR My_Subroutine: DEBUG "Command in subroutine". guarda y ejecuta el programa TwoSubroutines.bs2 Este programa demuestra que una subrutina es un bloque de comandos reusables."..5} High_Pitch "Back in main". 2000. CR 1000 "Repeat. He aquí un programa de ejemplo que tiene dos subrutinas.CR. CR FREQOUT 4.TwoSubroutines. Programa de ejemplo – TwoSubroutines..bs2 √ ' ' ' ' ' DO GOSUB DEBUG PAUSE GOSUB DEBUG PAUSE DEBUG LOOP Introduce. Los comandos entre DO y LOOP llaman cada una de las subrutinas en su turno correspondiente.Capítulo 4: Navegación del Boe-Bot · Page 147 DEBUG PAUSE GOSUB DEBUG END "Before subroutine". Una subrutina produce un tono alto mientras que el otro produce un tono bajo. CR PAUSE 1000 RETURN √ Observa tu Debug Terminal y presiona el botón Reset varias veces.CR ' Llamada a la subrutina High_Pitch ' Muestra este mensaje al regresar ' LLamada a la subrutina Low_Pitch ' Muestra este mensaje al regresar otra vez High_Pitch: DEBUG "High pitch". CR 1000 Low_Pitch "Back in main again". {$STAMP BS2} {$PBASIC 2.

MovementsWithSubroutines. Consejo: puedes utilizar el menú Edit del BASIC Stamp Editor para copiar y pegar bloques de código de un programa a otro. izquierda. 650 Forward Left Right Backward . derecha y atrás dentro de las subrutinas. He aquí un ejemplo: Programa de ejemplo – MovementsWithSubroutines.bs2. ' Robotica con el Boe-Bot .5} DEBUG "Program Running!" counter VAR Word ' Senal comienzo del programa.Página 148 · Robótica con el Boe-Bot Low_Pitch: DEBUG "Low pitch". ' {$STAMP BS2} ' {$PBASIC 2.bs2 √ Introduce. 3000 GOSUB GOSUB GOSUB GOSUB END Forward: FOR counter = 1 TO 64 PULSOUT 13. 850 PULSOUT 12. a ' subrutinas reusables. izquierda. guarda y ejecuta el programa MovementsWithSubroutines. 650 PULSOUT 12. derecha. 2000 RETURN ' Etiqueta de la subrutina ' Bloque de ' codigo de la subrutina Intentemos las rutinas de navegación adelante. retroceso. FREQOUT 4. 2000. CR FREQOUT 4. 2000. 650 PAUSE 20 NEXT PAUSE 200 RETURN Left: FOR counter = 1 TO 24 PULSOUT 13.bs2 ' Convierte los movimientos de avance.

Capítulo 4: Navegación del Boe-Bot · Page 149 PAUSE 20 NEXT PAUSE 200 RETURN Right: FOR counter = 1 TO 24 PULSOUT 13. 850 PULSOUT 12. Seguramente ya habrás notado a estas alturas que cada maniobra del Boe-Bot ha sido lograda con bloques de código similares. 650 PAUSE 20 NEXT NEXT FOR pulseCount = 100 TO 1 PULSOUT 13.pulseCount PULSOUT 12. Compara estos dos fragmentos: ' Adelante max. 650 PULSOUT 12. existen varias formas de estructurar un programa que tenga como resultado los mismos movimientos.bs2. Por supuesto. 750 + pulseCount PAUSE 20 ' Desaceleracion gradual desde maxima ' velocidad en retroceso . A continuación se presenta un tercer enfoque. 850 PAUSE 20 NEXT PAUSE 200 RETURN Backward: FOR counter = 1 TO 64 PULSOUT 13. es el mismo realizado por el programa ForwardLeftRightBackward.bs2 He aquí otro programa de ejemplo que le indica al Boe-Bot que realice las mismas maniobras. velocidad FOR counter = 1 TO 64 PULSOUT 13. 850 PULSOUT 12. 850 PAUSE 20 NEXT RETURN Deberías reconocer el patrón de movimientos que realiza el Boe-Bot. Programa de ejemplo – MovementsWithVariablesAndOneSubroutine. pero sólo utiliza una subrutina y algunas variables. 750 .

3000 ' Adelante pulseLeft = 850: pulseRight = 650: pulseCount = 64: GOSUB Navigate ' Vuelta a la izquierda pulseLeft = 650: pulseRight = 650: pulseCount = 24: GOSUB Navigate ' Vuelta a la derecha pulseLeft = 850: pulseRight = 850: pulseCount = 24: GOSUB Navigate ' Retrocede pulseLeft = 650: pulseRight = 850: pulseCount = 64: GOSUB Navigate END Navigate: . √ Introduce.MovementWithVariablesAndOneSubroutine. con argumentos Duration del comando PULSOUT específicos para cada maniobra. el programa ' Robotica con el Boe-Bot . y los argumentos Duration del comando PULSOUT. La clave para realizar diversas maniobras es establacer las variables con los valores correctos para las maniobras que quieres obtener antes de llamar la subrutina. ' {$STAMP BS2} ' {$PBASIC 2.Página 150 · Robótica con el Boe-Bot Lo que causa que estos dos bloques de códigos ejecuten maniobras diferentes son los cambios en los argumentos StartValue y EndValue del comando FOR. el siguiente programa usa la misma subrutina una y otra vez. En lugar de usar subrutinas separadas. 2000. guarda y ejecuta MovementWithVariablesAndOneSubroutine.5} DEBUG "Program Running!" counter pulseLeft pulseRight pulseCount VAR VAR VAR VAR Word Word Word Byte ' Senal comienzo del programa.bs2. Estos argumentos pueden ser variables y estas variables pueden ser cambiadas repetidamente durante la ejecución del programa para generar diferentes maniobras. FREQOUT 4.bs2 ' Rutina de navegacion que acepta parametros.

el cual determinaste en la Actividad #2. pulseRight PAUSE 20 NEXT PAUSE 200 RETURN ¿Tu Boe-Bot realizó la secuencia ya conocida de adelante-izquierda-derecha-atrás? Este programa puede ser difícil de leer al principio. ACTIVIDAD #6: TOPICO AVANZADO – CONSTRUYENDO MANIOBRAS COMPLEJAS EN EEPROM Cuando descargas el programa PBASIC a tu BASIC Stamp. página 136. en inglés).” Este chip es un tipo especial de memoria de computadora llamado EEPROM. ser almacenados juntos en una misma línea como una llamada de subrutina. el que está marcado "24LC16B. Tu Turno He aquí tu concurso "dead reckoning" mencionado anteriormente. Estos tokens son lo que la BASIC Stamp usa como instrucciones para ejecutar el programa. Consejo: necesitarás usar tu propio argumento EndValue del comando PULSOUT. . La EEPROM del BASIC Stamp puede almacenar 2048 bytes (2 kB) de información. Lo que no se usa para almacenamiento de programas (lo cual comienza desde la dirección de memoria 2047 hacia la dirección 0) puede ser usado para almacenamiento de datos (lo cual comienza desde la dirección de memoria 0 hasta la dirección 2047). Usar los dos puntos de esta manera le permite a todos los valores nuevos de las variables para una determinada maniobra. están agrupadas en la misma línea y separadas por dos puntos (:). los dos puntos funcionan como un caracter de retorno para separar cada instrucción de PBASIC. el BASIC Stamp Editor convierte tu programa en valores numéricos llamados tokens.Capítulo 4: Navegación del Boe-Bot · Page 151 FOR counter = 1 TO pulseCount PULSOUT 13. porque las instrucciones están ordenadas de una forma diferente. avanzando de frente en los dos primeros lados y de retroceso en los otros dos. En lugar de tener cada declaración de variables y cada comando GOSUB en líneas diferentes. Aquí. pulseLeft PULSOUT 12. Son almacenados en uno de los dos chips pequeños en la parte de arriba de tu BASIC Stamp.bs2 para hacer que tu Boe-Bot se desplace en un cuadrado. √ Modifica el programa MovementWithVariablesAndOneSubroutine. que son las siglas de electrically erasable programmable read only memory (memoria programable de sólo lectura eléctricamente borrable.

bs2. pero tendrá un formato distinto. La Figura 4-6 muestra el mapa de memoria para el programa MovementsWithSubroutines.1. las data pueden ser almacenadas en el espacio sobrante. en inglés) en varios aspectos: • • • La EEPROM necesita más tiempo para almacenar un valor. La memoria EEPROM es diferente al almacenamiento de variable RAM (memoria de acceso aleatorio. Observa el mapa condensado de la EEPROM a la izquierda de la figura. La RAM tiene capacidades de lectura/escritura ilimitadas. tu mapa de memoria incluirá la misma información.Página 152 · Robótica con el Boe-Bot Si las data que almacena en el EEPROM choca con tu programa. Si estás usando una versión anterior del BASIC Stamp Editor. a veces hasta varios milisegundos. El área sombreada en el cuadro pequeño en la parte de abajo muestra el espacio de la EEPROM que ocupa el programa MovementsWithSubroutines. Puedes ver los contenidos de la EEPROM del BASIC Stamp en el BASIC Stamp Editor haciendo clic en Run y seleccionando Memory Map. el programa PBASIC no se ejecutará adecuadamente. Las imágenes del mapa de memoria mostradas en esta actividad fueron tomadas del BASIC Stamp Editor v2. La EEPROM puede aceptar un número finito de ciclos de escritura.bs2. La primera función de la EEPROM es almacenar programas. . alrededor de 10 millones de escrituras.

Capítulo 4: Navegación del Boe-Bot · Page 153 Figura 4-6 Mapa de memoria del BASIC Stamp Mientras estamos aquí. pero sólo ocupa 136 de los 2048 bytes disponibles de la memoria de programa. hay espacio para 1912 instrucciones de un caracter de tamaño para indicar la dirección del Boe-Bot. A cada maniobra se le asigna un código de una letra como referencia. Como un caracter ocupa un byte de memoria. gire a la izquierda. la derecha y retroceda. El siguiente programa de ejemplo usará el bloque de códigos en subrutinas que ya has usado en varias oportunidades para cada maniobra básica. en inglés) del mapa de RAM. Cada técnica tiene sus méritos. Esto evita el tedio de repetir largas listas de subrutinas o tener que cambiar las variables antes de usar cada comando GOSUB. observa también que la variable counter que declaramos tamaño Word se puede ver en el Register 0 (Registro 0. pero todo sería muy engorroso si quisieras que tu Boe-Bot ejecutara grupos de maniobras más largos y complejos. Este programa puede haber parecido largo cuando lo estabas escribiendo. Navegación con la EEPROM Hasta este momento hemos probado tres enfoques de programación diferentes para hacer que tu Boe-Bot se desplace hacia adelante. En estos momentos hay suficiente espacio para una larga lista de instrucciones. . En la EEPROM se pueden almacenar largas listas de estas letras código y luego leerlas y decodificarlas durante la ejecución del programa.

que significa “quit” (abandonar. el valor de la variable address se incrementa en uno. Nuestro ejemplo utilizará DO…LOOP UNTIL (condition).. empezando desde la dirección de memoria 0. En este caso. en inglés). Esto permitirá que cada letra sea leída desde bytes consecutivos en la EEPROM. es decir. omitido por ahora. Observa que cada vez que comienza el bucle. en inglés).CASE. DO UNTIL (condition).. Estos valores pueden ser leídos desde dentro de un DO…LOOP como el siguiente: DO UNTIL (instruction = "Q") READ address.ENDSELECT. El comando READ puede ser utilizado para obtener esta lista desde la EEPROM mientras el programa se ejecuta. El comando DO…LOOP tiene condiciones opcionales que son útiles para distintas circunstancias... DO WHILE (condition). en inglés) cuando los movimientos terminen. La última letra en la secuencia es una Q. B para Backward (retroceso. lo cual queda como esto: DATA "FLFFRBLBBQ" Cada letra es almacenada en un byte de la EEPROM.LOOP permite que un bucle se repita sólamente mientras exista una cierta condición... La variable instruction almacenará el valor de ese byte. Veamos cada una antes de probar el programa de ejemplo.LOOP permite que el bucle se repita hasta que ocurra una cierta condición. empezando en la dirección de memoria 0 (a menos que le indiquemos que comience en alguna otra dirección de memoria). L para Left_Turn (giro izq. Cada una de las maniobras básicas tiene un código de una sóla letra asignado que corresponderá a tu subrutina: F para Forward (adelante. LOOP La variable address es la posición de cada byte en la EEPROM que está almacenando una letra código... instruction address = address + 1 ' Aca se ingresa el codigo PBASIC.Página 154 · Robótica con el Boe-Bot Este enfoque de programación requiere algunas nuevas instrucciones de PBASIC instructions: la directiva DATA .. Movimientos complejos del Boe-Bot pueden programarse rápidamente haciendo una secuencia de estas letras códigos. . en inglés) y R para Right_Turn (giro der. nuestra letra código. en inglés). La lista se guarda en la EEPROM durante la descarga del programa con la directiva DATA. esto hace que DO…LOOP se repita hasta que se lea el caracter “Q” desde la EEPROM.. y los comandos READ y SELECT.

Programa de ejemplo: EepromNavigation. . ' -----[ Inicializacion ]----------------------------------------------------FREQOUT 4..ENDSELECT puede usarse para elegir una variable y evaluarla caso por caso.CASE. ' -----[ Data EEPROM ]-------------------------------------------------------' ' DATA Address: 0123456789 |||||||||| "FLFFRBLBBQ" ' ' ' ' Estas tres lineas-comentario muestran las direcciones de cada datum en la EEPROM. ' {$STAMP BS2} ' {$PBASIC 2.EepromNavigation.bs2 para entender lo que hace cada parte del programa.Capítulo 4: Navegación del Boe-Bot · Page 155 Una declaración SELECT. ' Directiva de PBASIC. y además.5} DEBUG "Program Running!" ' -----[ Variables ]---------------------------------------------------------pulseCount address instruction VAR VAR VAR Word Byte Byte ' Almacena numero de pulsos.bs2 √ √ Lee cuidadosamente el código de instrucciones y los comentarios en el programa EepromNavigation. 2000. Instrucciones de navegacion. He aquí el bloque de código que verá el valor de cada letra. 3000 ' Senal comienzo del programa. almacenado en la variable instruction.bs2 ' Navega usando los caracteres almacenados en la EEPROM. SELECT instruction CASE "F": GOSUB Forward CASE "B": GOSUB Backward CASE "R": GOSUB Right_Turn CASE "L": GOSUB Left_Turn ENDSELECT Aquí están todos los conceptos juntos en un solo programa. ' Directiva del Stamp. Introduce. ' Robotica con el Boe-Bot . ' Almacena instruccion de EEPROM.. y que luego llamará a la subrutina para cada instancia o caso de una letra determinada.. guarda y ejecuta el programa EepromNavigation. ' Almacena direccion de EEPROM..bs2. ejecutar bloques de códigos de acuero a cada caso.

7 ms para servo izq.Página 156 · Robótica con el Boe-Bot ' -----[ Rutina Principal ]--------------------------------------------------DO UNTIL (instruction = "Q") READ address. Pulso de 1. Envia 24 pulsos rotacion izq. ' Suma 1 a address para lectura siguiente. 650 PAUSE 20 NEXT RETURN ' ' ' ' ' Subrutina de giro izq.7 ms para servo der. instruction address = address + 1 SELECT instruction CASE "F": GOSUB Forward CASE "B": GOSUB Backward CASE "L": GOSUB Left_Turn CASE "R": GOSUB Right_Turn ENDSELECT LOOP END ' Detiene ejecucion hasta que ocurra reset ' Data en direccion de memoria address de ' la variable instruction.3 ms para servo der.Forward ]-----------------------------------------------Forward: FOR pulseCount = 1 TO 64 PULSOUT 13.3 ms para servo der. Pulso de 1. 850 PAUSE 20 NEXT RETURN ' ' ' ' ' Subrutina de retroceso. Envia 64 pulsos para retroceder. Pulso de 1. ' -----[ Subrutina . 850 PULSOUT 12. Pulso de 1. ' ' ' ' Llama una subrutina distinta para cada caracter posible que puede ser recogido de la EEPROM.Left_Turn ]---------------------------------------------Left_Turn: FOR pulseCount = 1 TO 24 PULSOUT 13. Envia 64 pulsos para avanzar. Pulso de 1.3 ms para servo izq. Pausa por 20 ms. ' Retorna al bucle Rutina Principal ' -----[ Subrutina .3 ms para servo izq. Pausa por 20 ms. 650 PULSOUT 12. Pausa por 20 ms. 650 PULSOUT 12. ' Retorna al bucle Rutina Principal ' -----[ Subrutina – Right_Turn ]--------------------------------------------- . 650 PAUSE 20 NEXT RETURN ' ' ' ' ' Subrutina de avance. ' Retorna al bucle Rutina Principal ' -----[ Subrutina – Backward ]----------------------------------------------Backward: FOR pulseCount = 1 TO 64 PULSOUT 13. Pulso de 1.

Capítulo 4: Navegación del Boe-Bot · Page 157

Right_Turn: FOR pulseCount = 1 TO 24 PULSOUT 13, 850 PULSOUT 12, 850 PAUSE 20 NEXT RETURN

' ' ' ' '

Subrutina de giro der. Envia 24 pulsos rotacion der. Pulso de 1.7 ms para servo izq. Pulso de 1.7 ms para servo der. Pausa por 20 ms.

' Retorna al bucle Rutina Principal

¿Tu Boe-Bot se desplazó en un rectángulo, avanzando de frente los dos primeros lados y luego de retroceso los otros dos? Si se vio más como un trapezoide, quizá quieras ajustar los argumentos EndValue del bucle FOR...NEXT en las subrutinas de giro para hacer precisos los giros de 90 grados.
Tu Turno

Con el programa EepromNavigation.bs2 activo en el BASIC Stamp Editor, haz clic en Run y selecciona Memory Map.

Tus instrucciones almacenadas aparecerán resaltadas en azul al principio del mapa detallado de la EEPROM como se muestra en la Figura 4-7. Los números mostrados son códigos hexadecimales de ASCII (American Standard Code for Information Interchange) que corresponden a los caracateres que introduciste en tu declaración DATA.

Figura 4-7 Mapa de memoria con instrucciones almacenadas visibles en el mapa de la EEPROM

Haz clic en la casilla Display ASCII cerca de la esquina inferior izquierda de la ventana de Memory Map.

Página 158 · Robótica con el Boe-Bot

Ahora la dirección de tus instrucciones aparecerán en un formato más familiar mostrado en la Figura 4-8. En lugar de los códigos ASCII, aparecen con el caracter con que los registraste usando la directiva DATA .

Figura 4-8 Acercamiento del mapa detallado de la EEPROM después de marcar la casilla “Display ASCII”

Este programa almacenó un total de 10 caracteres en la EEPROM. Estos 10 caracteres fueron localizados por la variable address del comando READ. La variable address se declaró como un byte, así que puede localizar 256 direcciones de memoria, muchas más de las 10 que necesitamos. Si la variable address se vuelve a declarar, ahora con tamaño Word, teóricamente podría acceder a 65535 direcciones de memoria, muchas más de las que hay disponibles. Recuerda que si tu programa se hace más largo, el número de direcciones disponibles en la EEPROM para almacenar data se hace más pequeño. Puedes modificar la secuencia de data existente para que sea un nuevo grupo de direcciones. También puede añadir declaraciones DATA adicionales. Las data son almacenadas secuencialmente, para que el primer caracter de la segunda secuencia de data sea almacenado inmediatamente después del último caracter de la primera secuencia de data. √ √ √ Prueba cambiar, añadir y borrar caracteres en la directiva DATA, y vuelve a ejecutar el programa. Recuerda que el último caracater en la directiva DATA debería ser siempre “Q.” Modifica la directiva DATA para hacer que tu Boe-Bot realice la secuencia de movimientos conocidos adelante-izquierda-derecha-atrás. Prueba añadir una segunda directiva DATA. Recuerda quitar la “Q” del final de la primera directiva DATA y añádela al final de la segunda. De no hacerlo, el programa ejecutará nada más los comandos de la primera directiva DATA.

Capítulo 4: Navegación del Boe-Bot · Page 159

Programa de ejemplo – EepromNavigationWithWordValues.bs2

El siguiente programa de ejemplo parece complicado al principio, pero es una manera muy eficiente de diseñar programas para direcciones de movimiento habituales del BoeBot. Este programa de ejemplo usa el almacenamiento de data de la EEPROM, pero no usa subrutinas. En su lugar, se usa un solo bloque de código, con variables en lugar de los argumentos EndValue del bucle FOR...NEXT y Duration. del comando PULSOUT. Por defecto, la directiva DATA almacena byets de información en la EEPROM. Para almacenar ítems de data de tamaño Word puedes añadir el modificador Word a la directiva DATA, antes de cada ítem de data de tu secuencia. Cada ítem de data de tamaño Word, usará dos bytes del almacenamiento en la EEPROM; así que se podrá acceder las data a través de cada otra dirección de memoria (es decir, cada dos direcciones de memoria). Cuando se usa más de una directiva DATA, es recomendable asignar una etiqueta a cada una. De esta manera, tus comandos READ pueden referirse a la etiqueta para buscar los ítems de data sin tener que decifrar en cual dirección de la EEPROM comienza cada secuencia de ítems de data. Observa este fragmento de código:
' addressOffset Pulses_Count DATA Pulses_Left DATA Pulses_Right DATA 0 Word 64, Word 850, Word 650, 2 Word 24, Word 650, Word 650, 4 Word 24, Word 850, Word 850, 6 8 Word 64, Word 0 Word 650 Word 850

Cada una de las declaraciones DATA comienza con su propia etiqueta. El modificador Word va delante de cada íitem de data y los ítems están separados por comas. Estas tres secuencias de data se almacenarán en la EEPROM una tras otra. No debemos hacer cálculos para deducir el número de la dirección de un ítem de data específico, porque las etiquetas y la variable addressOffset lo harán automáticamente. El comando READ usa cada etiqueta para determinar la dirección en la EEPROM donde la secuencia comienza y luego suma el valor a la variable addressOffset para saber cuántos números de direcciones debe pasar para encontrar DataItem. que corresponde. El ítem DataItem encontrado en la dirección de memoria Address resultante será almacenada en el argumento Variable del comando READ. Observa que el modificador Word también está antes de la variable que almacena el valor traído de la EEPROM.
DO READ Pulses_Count + addressOffset, Word pulseCount READ Pulses_Left + addressOffset, Word pulseLeft READ Pulses_Right + addressOffset, Word pulseRight

Página 160 · Robótica con el Boe-Bot

addressOffset = addressOffset + 2 ' Bloque de codigo PBASIC omitido. LOOP UNTIL (pulseCount = 0)

La primera vez que pasa por el bucle, addressOffset = 0. El primer comando READ traerá un valor de 64 desde la primera dirección de memoria de la etiqueta Pulses_Count y lo coloca en la variable pulseCount. El segundo comando READ trae un valor de 850 desde la primera dirección de memoria especificada por la etiqueta Pulses_Left y la coloca en la variable pulseLeft. El tercer comando READ trae un valor de 650 desde la primera dirección de memoria especificada por la etiqueta Pulses_Right y la coloca en la variable pulseRight. Observa que estos son los tres valores de la columna “0” del fragmento de código de la página 159. Cuando el valor de esas variables es colocado en el siguiente bloque de código, esto:
FOR counter = 1 TO pulseCount PULSOUT 13, pulseLeft PULSOUT 12, pulseRight PAUSE 20 NEXT FOR counter = 1 TO 64 PULSOUT 13, 850 PULSOUT 12, 650 PAUSE 20 NEXT

se transforma en

¿Reconoces la maniobra básica generada por este bloque de código? √ √ √ Mira el fragmento de código en la página 159 e imagina cómo se verá el bloque de código FOR…NEXT después de la segunda, tercera y cuarta vez que pase por el bucle. Mira la declaración LOOP UNTIL (pulseCount = 0) en el siguiente programa. El operador <> significa "no-igual a". ¿Qué pasará la quinta vez que se repita el bucle? Introduce, guarda y ejecuta el programa EepromNavigationWithWordValues.bs2.

' Robotica con el Boe-Bot - EepromNavigationWithWordValues.bs2 ' Almacena listas de valores de tamano Word que dictan. ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Program Running!" ' -----[ Variables ]---------------------------------------------------------' Directiva del Stamp. ' Directiva de PBASIC.

Capítulo 4: Navegación del Boe-Bot · Page 161

counter pulseCount addressOffset instruction pulseRight pulseLeft

VAR VAR VAR VAR VAR VAR

Word Word Byte Byte Word Word

' ' ' '

Almacena Almacena Almacena Almacena

numero de pulsos. valor de compensado. instruccion de EEPROM. anchos de pulso de servo.

' -----[ Data EEPROM ]-------------------------------------------------------' addressOffset Pulses_Count DATA Pulses_Left DATA Pulses_Right DATA 0 Word 64, Word 850, Word 650, 2 Word 24, Word 650, Word 650, 4 Word 24, Word 850, Word 850, 6 8 Word 64, Word 0 Word 650 Word 850

' -----[ Inicializacion ]----------------------------------------------------FREQOUT 4, 2000, 3000 ' Senal comienzo del programa.

' -----[ Rutina Principal ]--------------------------------------------------DO READ Pulses_Count + addressOffset, Word pulseCount READ Pulses_Left + addressOffset, Word pulseLeft READ Pulses_Right + addressOffset, Word pulseRight addressOffset = addressOffset + 2 FOR counter = 1 TO pulseCount PULSOUT 13, pulseLeft PULSOUT 12, pulseRight PAUSE 20 NEXT LOOP UNTIL (pulseCount = 0) END ' Detiene ejecucion hasta que ocurra reset

¿Tu Boe-Bot realizó los movimientos adelante-izquierda-derecha-atrás? ¿Está aburridísimo con esto? ¿Quieres ver a tu Boe-Bot realizar algo más o coordinar tu propia rutina?
Tu Turno – Haciendo tus Propias Rutinas de Navegación

√ √

Guarda el programa EepromNavigationWithWordValues.bs2. bajo un nuevo nombre. Reemplaza las directivas DATA con las que están a continuación.

Página 162 · Robótica con el Boe-Bot

Ejecuta los programas modificados y observa lo que hace tu Boe-Bot.
60, 110, 850, 740, 650, 760, Word Word Word Word Word Word 80, 100, 800, 715, 700, 785, Word Word Word Word Word Word 100, 80, 785, 700, 715, 800, Word Word Word Word Word Word 110, 60, Word 0 760, Word 750, 650, Word 750 740, Word 750, 850, Word 750

Pulses_Count DATA Word Word Pulses_Left DATA Word Word Pulses_Right DATA Word Word

√ √ √ √

Haz una tabla con tres filas, una para cada directiva DATA y una columna para cada maniobra que quieras que el Boe-Bot realice, además de una para el ítem Word 0 en la fila Pulses_Count. Usa la tabla para planear los movimientos de tu Boe-Bot, rellenando los argumentos EndValue del bucle FOR...NEXT y Duration del comando PULSOUT, los cuales necesitarás para el bloque de código de cada maniobra. Modifica tu programa con las directivas DATA de tu nueva tabla. Introduce, guarda y ejecuta el programa tu programa personalizado. ¿El Boe-Bot hizo lo que tú querías que hiciera? Sigue trabajando en ello hasta que la respuesta sea afirmativa.

Capítulo 4: Navegación del Boe-Bot · Page 163

RESUMEN
En este capítulo se introducieron las maniobras básicas del Boe-Bot: adelante, atrás, girar a la derecha y la izquierda, y girar sobre sí mismo. El tipo de maniobra está determinado por los argumentos Duration del comando PULSOUT. Cuán lejos sigue la maniobra, está determiando por los argumentos StartValue y EndValue del bucle FOR…NEXT. El capítulo 2 incluyó ajustes de hardware, es decir, centrar físicamente los servos del Boe-Bot con un destornillador. Este capítulo se enfoca hacia la entonación a través de la manipulación del software. Específicamente, se compensó una diferencia de velocidad entre los dos servos cuambiando los argumentos Duration del comando PULSOUT para el servo más rápido. Esto cambia el trayecto del Boe-Bot de una línea curva a una recta si los servos no están perfectamente calibrados. Para entonar los giros para que el Boe-Bot gire en el ángulo deseado, los argumentos StartValue y EndValue del bucle FOR…NEXT pueden ajustarse. Se puede lograr programar el Boe-Bot para que recorra una distancia predefinida midiendo la distancia que recorre en un segundo, con la ayuda de una regla. Usando esta distancia y el número de pulsos por cada segundo durante el tiempo del recorrido, puedes calcular el número requerido para cubrir la distancia deseada. Se introdujo la aceleración gradual (ramping) como una manera de acelerar y desacelerar gradualmente. Es mejor para los servos, por lo que recomendamos que uses tus propias rutinas de aceleración gradual en lugar de arranques y frenadas abruptas como se muestra en los programas de ejemplo. La aceleración gradual se logra tomando la misma variable que se usa en el argumento Counter de un bucle FOR…NEXT y sumándolo o restándolo a 750 en el argumento Duration del comando PULSOUT. Se introducieron subrutinas como una manera de realizar maniobras preprogramadas reusables en un programa de PBASIC. En lugar de escribir un nuevo bucle FOR…NEXT para cada maniobra, se puede ejecutar una subrutina que contenga el bucle FOR…NEXT si se necesita, con el comando GOSUB. Una subrutina comienza con una etiqueta y termina con el comando RETURN. Una subrutina es llamada desde el programa principal con el comando GOSUB. Cuando una subrutina finaliza y encuentra el comando RETURN, el próximo comando que se ejecutará es el que sigue inmediatemente después del comando GOSUB.

. ¿Cuál es la relación entre el argumento Counter del bucle FOR…NEXT y el argumento Duration del comando PULSOUT que hace posible la aceleración gradual? 6. Las condiciones opcionales de DO…LOOP son útiles en ciertas ciscunstancias.. pero puedes aprovechar cualquier porción sin usar del programa para almacenar valores.LOOP and DO. pero añadiendo el modificador Word te permite alamacenar valores de hasta 65535 en el equivalente a dos bytes de espacio de la EEPROM. Esta es una muy buena opción para personalizar rutinas de navegación. asegúrate de colocar el modificador Word delante de la variable que va a recibir el valor. Puedes leer los valores de la EEPROM usando el comando READ. ¿Qué comando puedes usar para buscar un valor almacenado en la EEPROM y copiarlo en la variable? 8. ¿Qué bloque de código puedes usar para seleccionar una variable particular y evaluarla caso por caso. Si vas a traer una variable de tamaño Word. Si tu Boe-Bot se desvía levemente hacia la izquierda cuando estás ejecutando el programa para que avance en línea recta ¿Cómo lo corriges? ¿Qué comandos necesitas ajustar y que clase de ajustes se deben hacer? 4. ¿Qué directiva puedes usar para pre almacenar los valores en la EEPROM del BASIC Stamp antes de ejecutar un programa? 7. y además ejecutar un bloque de código diferente para cada caso? 9. La directiva DATA pede almacenar valores en la EEPROM. SELECT…CASE fue introducido como una forma de evaluar una variable caso por caso y ejecutando un bloque de código diferente dependiendo de cada caso..Página 164 · Robótica con el Boe-Bot La EEPROM del BASIC Stamp almacena el programa que ejecuta. Preguntas 1. ¿En qué dirección debe girar la rueda izquierda para que el Boe-Bot avance hacia adelante? ¿Y la rueda derecha? 2. El tamaño por defecto es Byte. Si tu Boe-Bot avanza a 11 in/s. Cuando el Boe-Bot gira sobre sí mismo hacia la izquierda ¿Qué están haciendo las ruedas derecha e izquierda? ¿Qué comandos de PBASIC necesitas para que el Boe-Bot ruede sobre sí mismo hacia la izquierda? 3. ¿Cuántos pulsos necesitará para avanzar 36 pulgadas? 5. ¿Cuáles son las diferentes condiciones que se pueden usar con DO…LOOP? .LOOP UNTIL (Condición) se mostraron como formas de ejecutar DO…LOOP hasta que se detectara una situación particular. el cual es buscaddo por la directiva READ.. DO UNTIL(Condición).

Una vez completada. en la columna 3. Es momento de llenar la columna 3 de la Tabla 2-1: Combinaciones de PULSOUT Duration en la página 82. Figura 4-9 Trayecto simple con obstáculos . luego acelere/desacelere gradualmente para comenzar y culminar un giro sobre sí mismo y luego coninúe su avance rectilíneo. Proyectos 1. Digamos que probaste tus servos y descubriste que necesitan 48 pulsos para girar 180° a la derecha. Escribe una rutina que haga que el Boe-Bot retroceda durante 350 pulsos. Registra el comportamiento resultante de tu Boe-Bot.bs2 usando cada par de valores de la columna 1. 45 y 60 grados. 2. Para hacer esto. La Figura 4-9 muestra dos trayectos simples con obstáculos. esta tabla servirá como guía de referencia cuando diseñes tus propias maniobras personalizadas para tu Boe-Bot. Escribe un programa que haga que tu Boe-Bot navegue a lo largo de cada figura. modifica los argumentos Duration del comando PULSOUT en el programa BoeBotForwardThreeSeconds. Asume que las distancias en línea recta (incluyendo el diámetro del círculo) equivalen a 1 yd o 1 m. 2. escribe rutinas que hagan que el BoeBot realice giros de 30. 3.Capítulo 4: Navegación del Boe-Bot · Page 165 Ejercicios 1. Escribe una rutina que haga que el Boe-Bot avance en línea recta. correspondiente a cada pareja. Con esta información.

FOR counter = 1 to 350 ' Retroceso PULSOUT 13.ENDSELECT. Q5... El comando READ. PULSOUT 12. . 663 Q4. rueda derecha conreloj. La rueda derecha está girando conreloj (hacia adelante). Con los datos: Velocidad del Boe-Bot = 11 in/s Distancia que recorre el Boe-Bot = 36 in/s pulsos = (distancia del Boe-Bot / velocidad del Boe-Bot) * (40.. 750 – pulseCount PAUSE 20 NEXT Q6. Q7. 850 PAUSE 20 NEXT FOR counter = 1 to 8 ' Rota der. Q9. PULSOUT 13.CASE. La variable pulseCount del bucle FOR…NEXT puede ser usada como un compensador (de suma o resta) para 750 (la posición central) en el argumento Duration. Q8.Página 166 · Robótica con el Boe-Bot Soluciones Q1.65 pulsos / s) = (36 / 11 ) * (40. SELECT. PULSOUT 12. 750 PULSOUT 12. UNTIL y WHILE. 650 Q3. Q2. La directiva DATA.. 650 Ajusta 650 a algo más cercano a 750 para desacelerar la rueda. 750 + pulseCount PULSOUT 12. Rueda izquierda contrareloj. El comando PULSOUT para la rueda derecha necesita ser ajustado. 30 grados E2. y la izquierda no se mueve. 650 PULSOUT 12.65) = 133. E1. FOR pulseCount = 1 to 100 PULSOUT 13. Puedes desacelerar la rueda derecha para corregir la desviación hacia la izquierda.04 = 133 Deberías necesitar 133 pulsos para recorrer 36 pulgadas.

45 grados ' Rota der. 750 + counter PULSOUT 12. 850 PULSOUT 12. 850 PULSOUT 12. 850 PAUSE 20 NEXT ' Rota der. 850 PAUSE 20 NEXT FOR counter = 1 to 16 PULSOUT 13. ' gradual ' Desacel. 850 PULSOUT 12. 850 PAUSE 20 NEXT FOR counter = 1 to 12 PULSOUT 13. 850 PULSOUT 12. 850 PULSOUT 12. gradual ' Avance . FOR counter = 1 to 100 PULSOUT 13.Capítulo 4: Navegación del Boe-Bot · Page 167 PULSOUT 13. 650 PAUSE 20 NEXT ' Vuelta pivot con acel. 60 grados E3. 750 + counter PULSOUT 12. 750 PAUSE 20 NEXT FOR counter = 30 TO 0 PULSOUT 13. 650 PAUSE 20 NEXT ' Avance FOR counter = 0 TO 30 PULSOUT 13. 750 PAUSE 20 NEXT FOR counter = 1 to 100 PULSOUT 13.

P2. Ensayo y error.bs2 ' Boe-Bot navega un circulo de 1 yarda de diámetro. 3000 ' -----[ Rutina Principal ]-------------------------------------------Main: DO PULSOUT 13. Luego . 2000. El círculo se puede completar desviando continuamente hacia la derecha. P12 CW Velocidad máxima P13 CW. Detenido Avance lento Avance mediano Desvío hacia der. FREQOUT 4. 716 PAUSE 20 LOOP Para completar el triángulo.Circle.Página 168 · Robótica con el Boe-Bot P1. Pivot hacia atrás der. Para un círculo con un diámetro de una yarda: ' Robotica con el Boe-Bot . 850 ' Desvío derecha PULSOUT 12. P13 850 650 850 650 750 650 750 760 770 850 800 P12 650 850 850 650 850 750 750 740 730 700 650 Descripción Velocidad máxima P13 CCW. P12 CW P13 Detenido P12 CCW Velocidad máx P13 CW Velocidad máx P12 Detenido P13 Detenido P12 Detenido P13 CCW Lento P12 CW Lento P13 CCW Med P12 CW Med P13 CCW Velocidad máx P12 CW Mediana P13 CCW Mediana P12 CW Velocidad máx Comportamiento Avance Retroceso Rotación der.Capítulo 4 . como en la Pregunta 4.5} DEBUG "Program running!" pulseCount VAR Word ' Contador de pulsos para los servos ' Senal comienzo del programa. Desvío hacia izq. una vara de una yarda o un metro puede ayudarte a encontrar el valor PULSOUT adecuado. Pivot hacia atrás izq. P12 CCW Velocidad máxima P13 CW. P12 CCW Velocidad máxima P13 CCW. primero calcula el número de pulsos necesarios para recorrer una yarda o un metro en línea recta. Rotación izq. '{$STAMP BS2} '{$PBASIC 2.

5} DEBUG "Program running!" counter pulseCount VAR VAR Nib Word ' Un triangulo tiene 3 lados ' Contador de pulsos para los servos ' Senal comienzo del programa.bs2 Boe-Bot navega un trayecto con forma de triangulo con lados de 1 yarda. '{$STAMP BS2} '{$PBASIC 2. 850 PAUSE 20 NEXT RETURN ' Avance 1 yarda ' Rotacion der.Capítulo 4: Navegación del Boe-Bot · Page 169 entona las distancias para que estén coordinadas con la superficie de tu Boe-Bot. Puede que tengas que ajustar el EndValue en pulseCount usado en la subrutina Right_Rotate120 para obtener un giro preciso. 120 grados . Repite tres veces. 650 PAUSE 20 NEXT RETURN Right_Rotate120: FOR pulseCount = 1 TO 21 PULSOUT 13. el Boe-Bot debe recorrer 1 metro/yarda hacia adelante. Esto se debe repetir tres veces. Para un patrón en forma de triángulo. luego hacer un giro de 120 grados.Capítulo 4 . ' Repetir 3 veces para triangulo FREQOUT 4. 3000 Main: FOR counter = 1 TO 3 GOSUB Forward GOSUB Right_Rotate120 NEXT END Forward: FOR pulseCount = 1 TO 163 PULSOUT 13. 850 PULSOUT 12. una para cada lado del triángulo. luego gira 120 grados. 850 PULSOUT 12.Triangle. ' ' ' ' Robotica con el Boe-Bot . 2000. Avanza.

Página 170 · Robótica con el Boe-Bot .

un interruptor táctil puede detectar cuando un brazo robótico se ha topado con un objeto. aunque algunas personas sostienen que se parecen más a una antena. programarás al Boe-Bot para que monitoree el estado de estos interruptores y decida qué hacer cuando encuentre algún obstáculo. Las actividades de este capítulo usan los bigotes solos. construirás interruptores táctiles. pero también pueden usarse en combinación con otros sensores los cuales aprenderás a usar en capítulos posteriores para incrementar la funcionalidad de tu Boe-Bot. o una calculadora. Las entradas son monitoreadas electrónicamente por el producto. o una línea de producción. en tu Boe-Bot y los verificarás. . El robot puede ser programado para recoger el objeto y colocarlo en otro sitio. estos bigotes se muestran montados en un Boe-Bot en la Figura 5-1. llamados interruptores de bigote (o simplemente bigotes en este texto). En todas estas instancias. tal como una antena para una hormiga o los bigotes en un gato. sea un robot. En todo caso. NAVEGACIÓN TÁCTIL Los bigotes reciben este nombre porque son interruptores que se asemejan precisamente a un bigote. el brazo robótico agarra un objeto. Por ejemplo. Luego. El resultado final será una navegación autónoma por contacto. los interruptores proporcionan entradas que dictaminan alguna otra forma de salida programada. Las fábricas utilizan interruptores táctiles para contar objetos en la línea de producción y también para alinear objetos durante el proceso industrial. Los bigotes le dan al Boe-Bot la capacidad de percibir el mundo que le rodea a través del tacto. En este capítulo.Capítulo 5: Navegación Táctil con Bigotes · Page 171 Capítulo 5: Navegación Táctil con Bigotes Varios tipos de maquinarias robóticas dependen de una variedad de interruptores táctiles. o la línea de producción de la fábrica reacciona con motores o servos para guíar sus productos. Basado en el estado del interruptor. o la calculadora muestra actualizaciones.

es esencial construir y verificar los bigotes.Página 172 · Robótica con el Boe-Bot Figura 5-1 Boe-Bot con bigotes ACTIVIDAD #1: CONSTRUYENDO Y PROBANDO LOS BIGOTES Antes de seguir con los programas que hacen que tu Boe-Bot navegue basado en lo que puede tocar. Circuito y Ensambleje de los Bigotes √ √ Toma el hardware de los bigotes como se muestra en la Figura 5-2. Esta actividad te guiará a través del proceso de construcción y verificación de los bigotes. Desconecta la energía de tu plaqueta y tus servos. .

Apreta los tornillos a los separadores. Observa la Figura 5-3 mientras sigues el resto de las instrucciones. uno sobre la arandela y otro por debajo de la arandela. Sujeta los tornillos a través de los orificios en tu plaqueta. a los separadores que están debajo. Coloca los extremos con forma de gancho de los bigotes alrededor de los tornillos. pero no los aprietes completamente todavía.Capítulo 5: Navegación Táctil con Bigotes · Page 173 Lista de partes: (2) Cables de bigote (2) Tornillos de Estría 7/8″ de cabeza plana 4-40 (2) Separador circular de ½″ (2) Arandela de nylon – tamaño #4 (2) Cabezales de 3-pines m/m (2) Resistores de 220 Ω (rojo-rojo-marrón) (2) Resistores de 10 kΩ (marrón-negro-naranja) Construyendo los Bigotes Figura 5-2 Hardware para los Bigotes √ √ √ √ √ √ Retira los dos tornillos que sujetan tu plaqueta a los separadores frontales. . Ensarta una arandela de nylon y luego un separador circular de ½″ en cada uno de los tornillos de 7/8″. posicionándolos de tal manera que se crucen sin tocarse.

Asegúrate de ajustar cada bigote para que esté cerca del cabezal de 3 pines en la protoboard. Si posees una HomeWork Board.Página 174 · Robótica con el Boe-Bot Figura 5-3 Montando los Bigotes Board of Education / HomeWork Board El próximo paso es añadir el circuito de los bigotes mostrado en la Figura 5-4 a la bocina piezoeléctrica y los circuitos de servo que construiste y verificase en el Capítulo 2 y en el Capítulo 3. construye el circuito de los bigotes mostrado en la Figura 5-4 usando el diagrama de conexión de la Figura 5-5 de la página 175 como referencia. Se recomienda un punto de partida de 1/8″ (3 mm). √ √ √ Si posees una Board of Education. pero sin tocarlo. Vdd Vdd 10 kΩ P7 220 Ω P5 220 Ω Right Whisker Left Whisker 10 kΩ Figura 5-4 Diagrama Esquemático de los Bigotes Vss Vss . construye el circuito de los bigotes mostrado en la Figura 5-4 usando el diagrama de conexión de la Figura 5-6 de la página 176 como referencia.

Capítulo 5: Navegación Táctil con Bigotes · Page 175 Figura 5-5: Diagrama de Conexión de los Bigotes para la Board of Education Left Whisker To Servos 15 14 Vdd 13 12 Red Black X4 X5 Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss + Board of Education Rev C © 2000-2003 Right Whisker Utiliza los resistores de 220 Ω (código de colores rojo-rojo-marrón) para conectar P5 y P7 a sus cabezales de 3 pines correspondientes. . Utiliza los resistores de 10 kΩ (código de colores marrón-negro-naranja) para conectar Vdd a cada cabezal de 3 pines.

stampsinclass.com www. (916) 624-8333 Rev B www. .com Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss + HomeWork Board Right Bigote Whisker Der. Utiliza los resistores de 220 Ω (código de colores rojo-rojo-marrón) para conectar P5 y P7 a sus cabezales de 3 pines correspondientes. Utiliza los resistores de 10 kΩ (código de colores marrón-negro-naranja) para conectar Vdd a cada cabezal de 3 pines.Página 176 · Robótica con el Boe-Bot Figura 5-6: Diagrama de Conexión de los Bigotes para la HomeWork Board Hacia los servos To Servos Left Bigote Whisker Izq.parallax.

Vdd 10 kΩ P7 220 Ω P5 220 Ω Vdd 10 kΩ Bigote Right Der. Cuando un bigote no se encuentra presionado. El Debug Terminal puede usarse para mostrar estos valores. por lo que la línea I/O lee 0 V.Capítulo 5: Navegación Táctil con Bigotes · Page 177 Verificando los Bigotes Vuelve a observar el dibujo esquemático de los bigotes (Figura 5-7). de un solo polo (single-pole). Los pines I/O conectados a cada circuito de interruptor monitorean el voltaje del resistor de subida (pull-up resistor) de 10 kΩ. La razón para que los bigotes estén conectados a tierra (Vss) es que los todos orificios enchapados en el borde exterior de la plaqueta están conectados a Vss. el voltaje del pin I/O conectado a ese bigote es de 5 V. Cuando un bigote es presionado. Whisker Bigote Left Izq. La Figura 5-8 ilustra su funcionamiento. Cada bigote consiste tanto en la extensión mecánica como en la conexión eléctrica a tierra de un interruptor simple (single-throw). Whisker Figura 5-7 Diagrama Esquemático de los Bigotes – Una Segunda Vista Vss Vss La BASIC Stamp puede ser programada para detectar cuando un bigote es presionado. regularmente abierto. la línea I/O hace contacto a tierra (Vss). Esto significa que los pines I/O conectados a los bigotes funcionarán como entradas automáticamente. Como entrada. Los standoffs y los tornillos de metal proveen la conexión eléctrica para cada bigote. Todos los pines I/O funcionan por defecto como entradas cada vez que un programa de PBASIC comienza. Esto es así en la Board of Education y la BASIC Stamp HomeWork Board. . un pin I/O conectado a un circuito de bigote ocasionará que tu registro de entrada almacene un 1 si el voltaje es de 5 V (bigote no presionado) o un 0 si el voltaje es 0 V (bigote presionado).

El BIN1 es un formateador que le dice al Debug Terminal que muestre un dígito binario (un 1 ó un 0).bs2. el bigote no está presionado. Las variables de registros de entrada vienen con el software por lo que no es necesario declararlas al comienzo de tu programa. el bigote se encuentra presionado.Página 178 · Robótica con el Boe-Bot ¿Cómo haces para que el BASIC Stamp te diga si está leyendo 1 ó 0? Porque el circuito está conectado a P7. este valor 1 ó 0 aparecerá en una variable llamada IN7. el programa te mostrará si el BASIC Stamp detecta algún contacto con los bigotes. IN7 es conocida como un registro de entrada. Mostrando los dígitos binarios guardados en los registros de entrada P7 y P5 (IN7 e IN5). √ √ √ Reconecta la alimentación a tu plaqueta y servos. Este programa hace uso del Debug Terminal.bs2 Este próximo programa de ejemplo está diseñado para probar los bigotes y asegurar que funcionan apropiadamente. Cuando el valor guardado en un registro de entrada determinado es 1. Figura 5-8 Detectando Contactos Eléctricos Bigote presionado Programa de Ejemplo: TestWhiskers. Escribe. guarda y ejecuta TestWhiskers. así que deja conectado el cable serial al BASIC Stamp mientras el programa se está ejecutando. Cuando es 0. . Puedes ver el valor que esta variable guarda usando el comando DEBUG BIN1 IN7.

BIN1 IN5.” Presiona el bigote derecho hasta su cabezal de tres-pin. 3. Qué es CRSRXY? Es un formateador que te permite arreglar de manera conveniente la información que tu programa manda al Debug Terminal. BIN1 IN5. " P7 = ". y observa los valores mostrados en el Debug Terminal. CR. 0. "Left Right". fila 3 en el Termnal de Depuración. estás listo para sequier adelante. en el comando DEBUG CRSRXY. CR. debería mostrar que ambos P7 y P1son iguales a 1. . revisa tu programa y los circuitos en busca de errores. en caso contrario. BIN1 IN7 PAUSE 50 LOOP ' Directiva del Stamp. " P7 = ". "P5 = ". y observa que el valor mostrados en el Debug Terminal otra vez. 3. Revisa la Figura 5-5 en la página 175 (o la Figura 5-6 en la página 176) para que sepas cuál es el “bigote izquierdo” y cuál es el “bigote derecho. 0. 3. ' Directiva de PBASIC.bs2 ' Muestra lo que perciben los pines I/O conectados a los bigotes. Cada paso por el bucle. los nuevos valores reemplazan los viejos valores porque el cursor siempre regresa al mismo lugar. ' Tabla Estado de Bigotes ' Derecho Izquierdo √ √ √ √ √ √ Observa el valor mostrado en el Debug Terminal.5} DEBUG "WHISKER STATES". BIN1 IN7 coloca el cursor en la columna 0. Esto hace que se muestre debajo del encabezado de la tabla “Estados de Bigotes”. Ahora deberías ver: P5 = 1 P7 = 0 Presiona el bigote izquierdo hasta su cabezal de tres-pin. El formato CRSRXY 0.Capítulo 5: Navegación Táctil con Bigotes · Page 179 ' Robotica con el Boe-Bot . Esta vez deberías ver: P5 = 0 P5 = 0 P7 = 1 P7 = 0 Presiona ambos bigotes contra ambos cabezales de tres-pin. "-----------" DO DEBUG CRSRXY.TestWhiskers. Ahora deberías ver: Si ambos bigotes pasan todas estas pruebas. "P5 = ". ' {$STAMP BS2} ' {$PBASIC 2.

no dejará pasar corriente. Esto puede hacese con un par de circuitos LEDs y un programa que prenda y apague los LEDs de acuerdo a las entradas de los bigotes. agrega el circuito mostrado en la Figura 5-9 con la ayuda del diagrama de cabledo en la Figura 5-11 (página 182). Como el Debug Terminal no estará disponible. Si está conectado alrevés. y su cátodo debe estar conectado a Vss.220 Ω (rojo-rojo-marrón) (2) LEDs – Rojo Construyendo el Circuito de Prueba de Bigotes con LEDs √ √ √ Desconecta la fuente de alimentación de tu plaqueta y servos. Recuerda que un LED es una válvula de corriente en un sólo sentido. por lo que no emitirá luz. ¿qué puedes hacer? Una solución puede ser programar el BASIC Stamp para que envíe una señal de salida que corresponda a la señal de entrada que está recibiendo. Observa la Figura 5-10 o la Figura 5-11. Para que el LED emita luz cuando el BASIC Stamp mande una señal alta. . agrega el circuito mostrado en la Figura 5-9 con la ayuda del diagrama de conexión en la Figura 5-10 (página 181). Lista de Partes: (2) Resistores .Página 180 · Robótica con el Boe-Bot ACTIVIDAD #2: VERIFICANDO LOS BIGOTES EN EL CAMPO Asume que puede ser necesario que verifiques los bigotes un rato más tarde lejos de la computadora. el ánodo del LED debe estar conectado al resistor de 220 Ω. Si tienes una HomeWork Board. P10 220 Ω P1 220 Ω LED Vss Vss LED Figura 5-9 Daigrama de Verificación de Bigote con LED Agrega este circuito LED. Si tienes una Board of Education.

Bigote Right Der.Capítulo 5: Navegación Táctil con Bigotes · Page 181 Figura 5-10: Diagrama de conexión de Bigotes más LED para la Board of Education Esta pata es This lead is el ánodo the anode. Whisker . Bigote Left Izq. Whisker Hacia los To Servos Servos 15 14 Vdd 13 12 Red Black X4 X5 Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss Parte plana en el cobertor plástico indica cátodo + Board of Education Rev C © 2000-2003 This lead ises Esta pata the ánodo el anode.

stampsinclass. Guarda TestWhiskers.com Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss + Parte plana en el cobertor plástico indica cátodo HomeWork Board El ánodo se conecta al 220 Ω resistor.bs2. Inserta estos dos sentencias IF. Programando el Circuito de Prueba de Bigotes con LEDs √ √ √ Reconecta la fuente de alimentación a tu plaqueta.bs2 como TestWhiskersWithLeds.com www..Página 182 · Robótica con el Boe-Bot Figura 5-11: Diagrama de Conexión de Bigotes más LED para la HomeWork Board Hacia los Servos To Servos El ánodo se conecta al 220 Ω resistor. (916) 624-8333 Rev B www. Left Bigote Whisker Izq.parallax.. IF (IN7 = 0) THEN HIGH 1 ELSE LOW 1 ENDIF .THEN entre los comandos PAUSE 50 y LOOP. Right Bigote Whisker Der.

de la vuelta. significará que el Boe-Bot ha chocado contra algo. Tan pronto como el obstáculo es detectado por los bigotes. La primera de las dos sentencias IF…THEN hace que P1 sea alto. el BASIC Stamp fue programado para detectar si alguno de los bigotes había sido presionado. La segunda sentencia IF…THEN hace lo mismo para el bigote conectado a P5 y el LED conectado a P10. el Boe-Bot sabe cuando encuentra un obstáculo chocando uno o ambos de sus bigotes contra él. Cuando el Boe-Bot esté rodando y se presione un bigote. y ellas serán introducidas más detalladamente en la próxima actividad. En esta actividad. √ √ Ejecuta TestWhiskersWithLeds. Entonces. Los LEDs rojos deberían iluminarse cuando cada bigote hace contacto con su cabezal de trespins. La porción ELSE de la sentencia hace que P1 sea bajo. Estas sentencias son usadas para tomar decisiones en PBASIC. ACTIVIDAD #3: NAVEGACION CON BIGOTES En la Actividad #1. En este caso. Verifica el programa presionando gentilmente los bigotes.bs2. lo cual apaga el LED cuando el bigote no se encuentra presionado. el Boe-Bot continúa su moción hacia adelante hasta chocar con otro obstáculo. el BASIC Stamp será programado para aprovechar esta información y guiar al Boe-Bot. lo cual prende el LED cuando el bigote conectado a P7 es presionado (IN7 = 0). y vaya en una dirección distinta. .Capítulo 5: Navegación Táctil con Bigotes · Page 183 IF (IN5 = 0) THEN HIGH 10 ELSE LOW 10 ENDIF Estas son llamadas sentencias IF…THEN. Un programa de navegación necesita tomar esta entrada. decidir qué significa. y llamar al conjunto de maniobras que harán que el Boe-Bot retroceda del obstáculo. Programando el Boe-Bot para Navegar Basado en las Entradas de los Bigotes Este próximo programa hace que el Boe-Bot avance hasta que encuentre un obstáculo. las rutinas de navegación y subrutinas desarrolladas en el capítulo 4 harán que el Boe-Bot retroceda y se voltee.

no hay contacto GOSUB Forward_Pulse ' Aplica un pulso hacia adelante ENDIF ' chequea nuevamente Programa de Ejemplo: RoamingWithWhiskers. Aquí está el uso de IF…THEN. Cuando haga contacto con obstáculos en su camino. el Boe-Bot necesita ser programado para tomar decisiones. dar vuelta. y luego correr libremente en una nueva dirección. IF (IN5 = 0) AND (IN7 = 0) THEN GOSUB Back_Up ' Ambos bigotes detectan el obstáculo. GOSUB Turn_Left ELSE ' Ambos bigotes 1. ' -----[ Title ]-------------------------------------------------------------' Robotica con el Boe-Bot . guarda. y luego llama las subrutinas para hacer qye el Boe-Bot haga una acción.bs2 Este programa demuestra una manera de evaluar las entradas de los bigotes y decidiendo cuales subrutinas de navegación deben ser llamadas usando IF…THEN. hace contacto GOSUB Back_Up ' Retrocede y voltea a la izq. El próximo programa de ejemplo toma decisiones basado en las decisiones de las entradas de los bigotes. PBSIC tiene el comando llamado sentencia IF…THEN que toma decisiones.RoamingWithWhiskers. ' dos veces) GOSUB Turn_Left ELSEIF (IN5 = 0) THEN ' Bigote izq. . hace contacto GOSUB Back_Up ' Retrocede y voltea a la der. GOSUB Turn_Right ELSEIF (IN7 = 0) THEN ' Bigote der. Introduce. Trata de dejar que el Boe-Bot corra libremente. GOSUB Turn_Left ' Retrocede y has vuelta en U (izq. y ejecuta RoamingWithWhiskers.Página 184 · Robótica con el Boe-Bot Para hacer eso. La sintaxis para la sentencia IF…THEN es: IF (condition) THEN…{ELSEIF (condition)}…{ELSE}…ENDIF Los “…” significan que puedes poner un bloque de código (uno o más comandos) entre las palabras clave.bs2. debería retroceder. √ √ √ Reconecta la fuente de alimentación a tu plaqueta y servos. Las subrutinas son similares a las que desarrollaste en el Capítulo 4: Navegación del Boe-Bot.bs2 ' Boe-Bot usa los bigotes para detectar obstaculos y navegar en torno a ellos.

' -----[ Main Routine ]------------------------------------------------------DO IF (IN5 = 0) AND (IN7 = 0) THEN GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left ELSEIF (IN5 = 0) THEN GOSUB Back_Up GOSUB Turn_Right ELSEIF (IN7 = 0) THEN GOSUB Back_Up GOSUB Turn_Left ELSE GOSUB Forward_Pulse ENDIF LOOP ' ' ' ' ' Ambos bigotes detectan el obstáculo. ' Bigote der. ' Vuelta der. aprox. .Capítulo 5: Navegación Táctil con Bigotes · Page 185 ' {$STAMP BS2} ' {$PBASIC 2.NEXT ' -----[ Initialization ]----------------------------------------------------FREQOUT 4.5} DEBUG "Program Running!" ' Directiva del Stamp. ' -----[ Variables ]---------------------------------------------------------pulseCount VAR Byte ' Contador del bucle FOR. hace contacto ' Retrocede y voltea a la izq. 2000.650 PAUSE 20 RETURN Turn_Left: FOR pulseCount = 0 TO 20 PULSOUT 13. 650 PULSOUT 12. 3000 ' Senal comienzo del programa. hace contacto Retrocede y voltea a la der. Retrocede y has vuelta en U (izq. dos veces) Bigote izq.. ' Ambos bigotes 1.. 90-grados. 850 ' Envia un solo pulso de avance ' Vuelta izq. 90-grados.. aprox. ' Directiva de PBASIC. no hay contacto ' Aplica un pulso hacia adelante ' chequea nuevamente ' -----[ Subrutinas ]--------------------------------------------------------Forward_Pulse: PULSOUT 13. 850 PULSOUT 12.850 PULSOUT 12. 650 PAUSE 20 NEXT RETURN Turn_Right: FOR pulseCount = 0 TO 20 PULSOUT 13..

Si ambos bigotes son presionados (IN5 = 0 e IN7 = 0). 850 PAUSE 20 NEXT RETURN ' Retrocede. la subrutina Back_Up es llamada.Página 186 · Robótica con el Boe-Bot PAUSE 20 NEXT RETURN Back_Up: FOR pulseCount = 0 TO 40 PULSOUT 13. Funcionamiento de Corriendo con Bigotes Las sentencias IF. Si el bigote derecho es presionado (IN7 = 0). Esto es realmente importante. Si solo el bigote izquierdo es presionado (IN5 = 0). La única combinación posible que no ha sido cubierta es si ninguno de los dos bigotes es presionado (IN5 = 1 and IN7 = 1). entonces el programa llama a la subrutina Back_Up y seguidamente llama a la subrutina Turn_Right. y luego retorna. El comando ELSE llama en este caso a la subrutina Forward_Pulse. pero la subrutina Forward_Pulse tiene un truco. IF (IN5 = 0) AND (IN7 = 0) THEN GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left ELSEIF (IN5 = 0) THEN GOSUB Back_Up GOSUB Turn_Right ELSEIF (IN7 = 0) THEN GOSUB Back_Up GOSUB Turn_Left ELSE GOSUB Forward_Pulse ENDIF Las subrutinas Turn_Left. y Back_Up deberían verse bastante familiares. Turn_Right. 650 PULSOUT 12.THEN en la sección de la Rutina Principal primero chequean los bigotes para saber si hay un estado de atención. porque significa que el Boe-Bot puede chequear sus .. una vuelta en U es ejecutada llamando a la subrutina Back_Up y seguidamente llamando la subrutina Turn_Left dos veces seguidas.. y seguidamente la subrutina Turn_Left. Sólo envía un pulso.

Eso significa que el Boe-Bot chequea por obstáculos aproximadamente 40 veces por segundo mientras viaja hacia adelante.NEXT en las rutinas Back_Right y Back_Left pueden ser ajustados para más o menos vuelta. Forward_Pulse: PULSOUT 12. y la rutina Back_Up puede tener su EndValue ajustado para retroceder menos en espacios más apretados. Tu Turno Los argumentos EndValue del bucle FOR. √ Experimenta con los arguntos EndValue del bucle FOR. Ya que la sentencia IF…THEN está dentro de un DO…LOOP. También puedes modificar tus sentencias IF…THEN para hacer que los indicadores LED de la actividad previa transmitan la maniobra en la que el Boe-Bot se encuentra añadiendo comandos HIGH y LOW para controlar los circuitos LED.650 PULSOUT 13..850 PAUSE 20 RETURN Ya que cada pulso hacia adelante hace que el Boe-Bot ruede medio centímetro. Aquí está un ejemplo. y luego regresar y chequear los bigotes cada vez. IF (IN5 = 0) AND (IN7 = 0) THEN HIGH 10 HIGH 1 GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left ELSEIF (IN5 = 0) THEN HIGH 10 GOSUB Back_Up GOSUB Turn_Right ELSEIF (IN7 = 0) THEN HIGH 1 . es realmente una buena idea mandar un sólo pulso. llega a LOOP..bs2. lo cual envía al programa de regreso a DO..NEXT en las rutinas de navegación en RoamingWithWhiskers. cada vez que el programa retorna de un Forward_Pulse.. ¿Qué pasa entonces? La sentencia IF…THEN chequea los bigotes una vez más.Capítulo 5: Navegación Táctil con Bigotes · Page 187 bigotes entre cada pulso hacia adelante.

el programa chequea por una condición. ACTIVIDAD #4: INTELIGENCIA ARTIFICIAL Y DECIDIENDO CUANDO ESTAS ATASCADO Puedes notar que el Boe-Bot se atasca en las esquinas. Cuando voltea choca con la pared izquierda nuevamente. hasta que alguien lo rescata de su lío. entonces.bs2 puede ser modificado para detectar este problema y hacer algo al respecto. es hora de dar una vuelta en U y reiniciar el contador de bigotes alternos. En otras palabras. Cuando el Boe-Bot se mueve hacia adelante nuevamente. entonces suma uno al contador. IF condition1 THEN Commands for condition1 IF condition2 THEN Commands for both condition2 and condition1 ELSE . su bigote toca la pared en la izquierda por lo que voltea a la derecha. Si el contador pasa de un umbral que tú (el programador) has determinado. Tiene que comparar eso con el estado de los bigotes durante el contacto actual. Aquí está un ejemplo con pseudo código demostrando su utilización. Este próximo programa también depende del hecho que puedes “encadenar” o “anidar” sentencias IF…THEN. Programando para Escapar de las Esquinas RoamingWithWhiskers.Página 188 · Robótica con el Boe-Bot GOSUB Back_Up GOSUB Turn_Left ELSE LOW 10 LOW 1 GOSUB Forward_Pulse ENDIF √ Modifica la sentencia IF…THEN en RoamingWithWhiskers.bs2 para hacer que el Boe-Bot Boe-Bot transmita su maniobra usando los indicadores LED. Cuando el Boe-Bot entra a una esquina. Si son opuestos. chequea otra condición dentro de la primera condición. y si esa condición es verdadera. Una cosa importante de este truco es que el programa tiene que recordar en qué estado estaba cada bigote durante el contacto previo. su bigote derecho choca con la pared en la derecha así que da vuelta a la izquierda. y así sucesivamente. El truco es contar el número de veces que bigotes alternos hacen contacto. y con la pared derecha nuevamente.

el Boe-Bot debería ejecutar su maniobra de vuelta en U después de la cuarta o quinta vez consecutiva que los bigotes son presionados. 2000.bs2 Boe-Bot navega fuera de las esquinas detectando el contacto alterno de los bigotes ' Directiva del Stamp.bs2 Este programa causará que tu Boe-Bot ejecute una vuelta en U en la cuarta o quinta esquina alterna. y ejecuta EscapingCorners. Verifica este programa presionando bigotes alternos mientras el Boe-Bot corre libremente. ' Directiva de PBASIC. Guarda IN7 previo.bs2. Guarda IN5 previo. ' {$STAMP BS2} ' {$PBASIC 2.NEXT Cuenta contactos alternos.. √ √ Introduce.5} DEBUG "Program Running!" ' -----[ Variables ]---------------------------------------------------------pulseCount counter old7 old5 VAR VAR VAR VAR Byte Nib Bit Bit ' ' ' ' Contador de bucle FOR. ' ' ' ' -----[ Titulo ]------------------------------------------------------------Robotica con el Boe-Bot . guarda.Capítulo 5: Navegación Táctil con Bigotes · Page 189 Commands for condition1 but not condition2 ENDIF ELSE Commands for not condition1 ENDIF Hay un ejemplo de sentencias IF…THEN anidadas en la rutina que detecta los contactos de bigotes alternos en el próximo programa. ' -----[ Rutina Principal ]--------------------------------------------------- . dependiendo de cuál bigote fue presionado primero. ' Comienza contador alterno. 3000 counter = 1 old7 = 0 old5 = 1 ' Senal comienzo del programa. Dependiendo de cual Bigote fue presionado primero. ' -----[ Initializacion ]----------------------------------------------------FREQOUT 4.. Programa de Ejemplo: EscapingCorners. ' Inventa valores previos.EscapingCorners.

IF (IN5 = 0) AND (IN7 = 0) THEN GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left ELSEIF (IN5 = 0) THEN GOSUB Back_Up GOSUB Turn_Right ELSEIF (IN7 = 0) THEN GOSUB Back_Up GOSUB Turn_Left ELSE GOSUB Forward_Pulse ENDIF LOOP ' Bigote der.Página 190 · Robótica con el Boe-Bot DO ' --.650 PAUSE 20 RETURN Turn_Left: FOR pulseCount = 0 TO 20 PULSOUT 13. 650 ' Envia un solo pulso de avance ' Vuelta izq. no alternante. 90-grados. hace contacto ' Retrocede y voltea a la izq. 650 PULSOUT 12. ELSE (old7=IN7) o (old5=IN5). dos veces) Bigote izq. Contador alterno + 1. reinicia counter y ejecuta una vuelta en U. Diferente del previo. ENDIF counter > 4. Misma rutina de navigacion de RoamingWithWhiskers. hace contacto Retrocede y voltea a la der.bs2" que sigue al programa IF (IN7 <> IN5) THEN IF (old7 <> IN7) AND (old5 <> IN5) THEN counter = counter + 1 old7 = IN7 old5 = IN5 IF (counter > 4) THEN counter = 1 GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left ENDIF ELSE counter = 1 ENDIF ENDIF ' --' ' ' ' ' ' ' ' ' ' ' ' ' ' Uno u otro es presionado. Retrocede y has vuelta en U (izq.. reinicia counter ENDIF (old7<>IN7) y (old5<>IN5).bs2 ----------------' ' ' ' ' Ambos bigotes detectan el obstáculo. no hay contacto ' Aplica un pulso hacia adelante ' chequea nuevamente ' -----[ Subrutinas ]--------------------------------------------------------Forward_Pulse: PULSOUT 13. . ENDIF (IN7<>IN5).Detecta Esquinas Alternas Consecutivas -------------------------------' Ve la seccion "Funcionamiento de EscapingCorners. Si la cuenta de contacto alterno = 4. ' Ambos bigotes 1. Guarda este contacto de bigote para proxima comparacion. aprox.850 PULSOUT 12.

Para hacer el programa más facil de leer. 850 PAUSE 20 NEXT RETURN ' Retrocede. counter es inicializado como 1. Recuerda que una variable tamaño bit puede guardar un sólo bit. ' Vuelta der. counter old7 old5 VAR VAR VAR Nib Bit Bit Estas variables tienen que ser inicializadas (dados los valores iniciales). Ya que nuestro valor objetivo para detectar una esquina es 4. Las variables old7 y old5 tienen que ser establecidas para que parezca que uno de los dos bigotes fue presionado algún tiempo atrás antes de que el programa comenzara. y cuando llega a 4 debido al hecho que el Boe-Bot se encuentra atascado en una esquina. un 1 o un 0. aprox. Funcionamiento del Programa EscapingCorners. Las próximas dos variables (old7 y old5) son ambas variables tamaño bit. los cuales son también de tamaño bit. 650 PULSOUT 12.Capítulo 5: Navegación Táctil con Bigotes · Page 191 PAUSE 20 NEXT RETURN Turn_Right: FOR pulseCount = 0 TO 20 PULSOUT 13. Estas son también de tamaño adecuado para la operación ya que son usadas para guardar valores previos de IN7 e IN5.bs2.bs2 Ya que este programa es una versión modificada de RoamingWithWhiskers. La variable tamaño nibble counter puede guardar un valor entre 0 y 15. 850 PULSOUT 12. 850 PAUSE 20 NEXT RETURN Back_Up: FOR pulseCount = 0 TO 40 PULSOUT 13. 90-grados. Esto . el tamaño de la variable es razonable. es reiniciado a 1.. Tres variables extras son creadas para detectar una esquina. sólo las nuevas características relacionadas con la detección y el escape de las esquinas son discutidas aquí.

entonces es hora de reiniciar el contador a 1 y ejecutar la vuelta en U. IF (old7 <> IN7) AND (old5 <> IN5) THEN counter = counter + 1 old7 = IN7 old5 = IN5 Si resulta que esta es la cuarta vez consecutiva que hay contacto con uno de los bigotes. la próxima cosa es chequear si es el patrón exactamente opuesto de la vez anterior. La primera cosa que queremos chequear es si uno de los bigotes es presionado. En otras palabras. ENDIF . podemos usar el operador noigual a <> en una sentencia IF: IF (IN7 <> IN5) THEN Si ciertamente uno de los bigotes está presionado.Página 192 · Robótica con el Boe-Bot tiene que hacerse porque la rutina para detectar esquinas consecutivas siempre compara un patrón alternante. old5 y old7 tienen que ser diferentes entre sí. es hora de sumar uno al contador que sigue los contactos alternos de los bigotes. De igual forma. entonces. Una manera de hacer esto es preguntar “¿es IN7 diferente de IN5?” En PBASIC. counter = 1 old7 = 0 old5 = 1 Ahora llegamos a la sección Detectar Esquinas Alternantes Consecutivas. ¿es (old7 <> IN7) y es (old5 <> IN5)? De ser cierto. (IN5 = 1 e IN7 = 0) ó (IN5 = 0 e IN7 = 1). IF (counter > 4) THEN counter = 1 GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left Este ENDIF finaliza el bloque de código que es ejecutado si counter > 4. Además es tiempo de recordar que el patrón actual de bigote haciendo que old7 sea igual al actual IN7 y old5 sea igual al actual IN5.

. ENDIF ENDIF El remanente del programa es similar al anterior.Capítulo 5: Navegación Táctil con Bigotes · Page 193 Esta sentencia ELSE está conectada a la sentencia IF (old7 <> IN7) AND (old5 <> IN5) THEN. así que se reinicia el contador porque el Boe-Bot no está atascado en una esquina. En otras palabras. Tu Turno Una de las sentencias IF. ELSE counter = 1 Esta sentencia ENDIF finaliza el proceso de toma de decisión para la sentencia IF (old7 <> IN7) AND (old5 <> IN5) THEN.bs2 chequea si counter ha llegado a 4. √ √ Trata incrementando el valor a 5 y 6 y observa el efecto. Trata también reduciendo el valor y observa si tiene algún efecto cuando corre libremente.THEN en EscapingCorners.. . La sentencia ELSE cubre lo que sucede si la sentencia IF no es válida. no se ha presionado un bigote alterno.

Tanto el palpe como la visión abren muchas oportunidades para que el Boe-Bot navegue en ambientes de mayor complejidad. las sentencias IF…THEN en la sección de la Rutina Principal del programa. que significa? ¿Qué significa si IN7 = 0? ¿Y qué hay de IN5 = 1 e IN5 = 0? .” si detectan Vss (0 V). ¿Cuando un bigote es presionado. Los próximos tres capítulos se concentrarán en usar diferentes tipos de sensores para darle visión al BoeBot. Cuando están conectados adecuadamente. comparados con los estados actuales de los bigotes. y un voltaje distinto (0 V) cuando están cerrados. los cuales sirvieron como interruptores de contacto normalmente abiertos. qué valor tiene IN8 cuando el bigote es presionado. ¿Qué tipo de conección eléctrica es un bigote? 2. Este capítulo introdujo la navegación del Boe-Bot basada en sensores. el Debug Terminal y LEDs. estos interruptores pueden mostrar un voltaje (5 V) en el punto de contacto del interruptor cuando están abiertos. Las entradas de sus sensores en este capítulo fueron bigotes. Esta rutina requirió que los estados previos de los bigotes fueran guardados. El BASIC Stamp fue programado para probar los sensores de bigote y mostrar los resultados de la verificación usando dos tipos distintos de medios. y contando el numero de veces en que objetos alternantes fueron detectados. Como un ejemplo de inteligencia artificial. y que valor tiene cuando el bigote no es presionado? 3. llamaron a subrutinas de navegación similares a las desarrolladas en el capítulo anterior para guiar al Boe-Bot evadiendo los obstáculos. una rutina adicional fue desarrollada para permitir que el Boe-Bot determinase cuando se quedaba atascado en una esquina. ¿Si IN7 = 1. que voltaje ocurre en el pin I/O que lo monitorea? ¿Qué valor binario ocurrirá en el registro de entrada? ¿Si el pin I/O P8 es usado para monitorear el pin de entrada. Preguntas 1. el Boe-Bot fue programado para navegar basado en entradas de sus sensores. Programas en PBASIC fueron desarrollados para hacer que el BASIC Stamp chequeara los bigotes entre cada pulso del servo. Los registros de los pines de I/O del BASIC Stamp guardan “1” si detectan Vdd (5 V) y “0.Página 194 · Robótica con el Boe-Bot RESUMEN En este capítulo. en vez de navegar con una lista pre-programada. Basado en los estados de los bigotes.

bs2 como referencia. Usando RoamingWithWhiskers. Modifica el programa RoamingWithWhiskers. 2. Cuando toques el otro bigote. 2. causará que el Boe-Bot navegue en un círculo de mayor diámetro.bs2 que actualice el estado de cada bigote en una nueva línea. Escribe un comando DEBUG para TestWhiskers. Cuando toques uni de los bigotes. Haz que haga bip dos veces si ambos bigotes detectan un contacto durante el mismo muestreo (o ciclo). escribe una subrutina llamada Turn_Away que llame a la subrutina Back_Up una vez y a la subrutina Turn_Left dos veces. Proyectos 1.bs2 de modo que el Boe-Bot haga un bip de 4 kHz que dure 100 ms antes de ejecutar la maniobra evasiva.bs2. Ajusta el comando PAUSE para que sea 250 en vez de 50. Modifica el programa RoamingWithWhiskers.bs2 de modo que el Boe-Bot navegue libremente en un círculo de 1 yarda (o metro) de diámetro. . Escribe las modificaciones que vas a tener que hacerle a la sección de la Rutina Principal del programa RoamingWithWhiskers. ¿Qué comando es usasdo para saltar a diferentes subrutinas dependiendo del valor de una variable? ¿Qué comando es utilizado para decidir a cuál subrutina saltar? ¿En qué se basan estas decisiones? 5.Capítulo 5: Navegación Táctil con Bigotes · Page 195 4. causará que el Boe-Bot navegue en un círculo más apretado (de menor diámetro). ¿Cuál es el propósito de tener sentecias IF…THEN anidadas? Ejercicios 1.

Q5. IN5 = 0 significa que el bigote izquiero es presionado. Para alinearlo con los encabezados. El comando GOSUB realiza el salto. IN7 = 0 significa que el bigote derecho es presionado. IN8 = 1 cuando el bigote no está presionado. "P7 = ". Esa decisión es basada en condiciones. Turn_Away: GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left RETURN . Un interruptor táctil. El comando IF. las cuales son sentencias lógicas que son evaluadas como verdadero o falso. Q3. Cero (0) voltios.5} DEBUG "WHISKER STATES". ' Robotica con el Boe-Bot . IN5 = 1 significa que el bigote izquierdo no está presionado. IN8 = 0 cuando el bigote es presionado. 9. E2. ' Directiva de PBASIC. CR. BIN1 IN5 DEBUG CRSRXY. E1. "P5 = ".Página 196 · Robótica con el Boe-Bot Soluciones Q1. "Left Right". resultando en un cero Binario (0) en el registro de entrada. y si esa condición es verdadera.. el texto debe comenzar en la columna 9 de la fila 3. Q4. 0. BIN1 IN7 PAUSE 250 LOOP ' Muestra en Columna 0. 3.THEN es usado para decidir a cuál rutina saltar. Q2. El programa puede chequear por una condición. "-----------" DO DEBUG CRSRXY. ' {$STAMP BS2} ' {$PBASIC 2..Fila 3 ' Cambio de 50 a 250 ' Directiva del Stamp. La clave para resolver este problema es usar un segundo comando CRSRXY que hará que el estado del segundo bigote se muestre en el lugar apropiado en la pantalla. CR. 3. IN7 = 1 significa que el bigote derecho no está presionado. puede chequear otra condición dentro de la primera condición.Fila 3 ' Muestra in Columna 9.bs2 ' Actualiza el estado de cada bigote en una nueva linea.TestWhiskers_UpdateEaOnNewLine.

4000 ' Repite dos veces GOSUB Back_Up ' Retrocede y da vuelta en U GOSUB Turn_Left GOSUB Turn_Left ELSEIF (IN5 = 0) THEN ' Bigote izq. como se muestra abajo. no GOSUB Forward_Pulse ' hay contacto ENDIF ' Pulso de avance y LOOP ' chequea nuevamente P2. Usando estos valores como el círculo de 1y. 4000 ' Bip de 4kHz por 100ms Esta sentencia debe ser agregada a la Rutina Principal en los lugares apropiados. 716. . hace contacto FREQOUT 4. 100. Cada vez que un bigote es presionado el programa sumará o restará un poco del ancho de pulso de la rueda derecha. 100. reemplaza los tres comandos GOSUB bajo la primera condición IF con esta sola línea: GOSUB Turn_Away P1. 4000 ' Bip de 4 kHz por 100 ms GOSUB Back_Up ' Retrocede y gira izq. 850 y PULSOUT 12. Encontramos en los Proyectos del Capítulo 4 que un círculo de 1 yarda puede ser logrado con PULSOUT 13. GOSUB Turn_Left ELSE ' Ambos bigotes 1. ' -----[ Rutina Principal ]-----------------------------------DO IF (IN5 = 0) AND (IN7 = 0) THEN ' Ambos bigotes detectan FREQOUT 4. GOSUB Turn_Right ELSEIF (IN7 = 0) THEN ' Bigote der. El resto del programa se mantiene igual. el radio puede ser ajustado a través de leves incrementos o disminuciones del ancho de pulso desde un valor inicial de 716. 100. 4000 ' Bip de 4 kHz por 100 ms GOSUB Back_Up ' Retrocede y gira der. hace contacto FREQOUT 4.Capítulo 5: Navegación Táctil con Bigotes · Page 197 Para modificar la Rutina Main. 100. 4000 ' Bip de 4 kHz por 100 ms FREQOUT 4. 100. La clave para resolver este problema es escribir una sentencia que haga bip con los parámetros requeridos: FREQOUT 4.

100 FREQOUT 4.CirclingWithWhiskerInput. pulseWidth 650. ' Toca el tono como indicacion ' Bigote der. 100. toneFreq ENDIF ENDIF LOOP ' Pulso de servos en trayecto circular ' 12 mas lento que 13 para curvear ' Bigote izq. ' {$STAMP BS2} ' {$PBASIC 2. hasta el min pulso ' del servo. un indicador con bip audible fue añadido. hasta el max pulso ' del servo. 100. pulseWidth 850. toneFreq ENDIF ELSEIF (IN7 = 0) THEN IF (pulseWidth >= 655) THEN pulseWidth = pulseWidth . Esto actúa como una retroalimentación para verificar que el bigote fue presionado.Página 198 · Robótica con el Boe-Bot En la solución de abajo.5 toneFreq = toneFreq . uno incrementa y el otro disminuye. hace el circulo ' pequeno.5} DEBUG "Program Running!" ' -----[ Variables/Inicializacion ]-----------------------------------pulseWidth VAR toneFreq VAR pulseWidth = 716 toneFreq = 4000 Word Word ' ' ' ' ' Senal enviada al servo Frecuencia del tono (bip) Encontrado en Cap 4 para circulo de 1y Tono inicial es 4 kHz ' -----[ Rutina Principal ]-------------------------------------------DO PULSOUT 13. ' Directiva de PBASIC. hace el circulo ' grande. incrementa/disminuye el radio en respuesta al activamiento de los bigotes.bs2 Mueve en un circulo de 1 yarda. pulseWidth PAUSE 20 IF (IN5 = 0) THEN IF (pulseWidth <= 845) THEN pulseWidth = pulseWidth + 5 toneFreq = toneFreq + 100 FREQOUT 4. ' Directiva del Stamp. ' ' ' ' Robotica con el Boe-Bot . Esto es completamente opcional. ' Toca el tono como indicacion . 850 PULSOUT 12.

Por otro lado. Con esta abilidad. Lo cual quiere decir. la percepción del borde de un rollow de tela en la industria textil. La Figura 6-1 muestra el símbolo esquemático y el dibujo de parte del fotoresistor que usarás para hacer que el Boe-Bot sea capaz de detectar variaciones en la intensidad de la luz. Light detecting surface Figura 6-1 Fotoresistor Símbolo Esquemático y Dibujo de parte . tu Boe-Bot puede ser programado para reconocer áreas con perímetros claros u obscuros. o cuándo regar con agua una cosecha de plantas. así como también. Algunos ejemplos son. es un resistor dependiente de luz (LDR. Existen muchos sensores de luz diferentes con funciones únicas. por sus siglas en inglés).Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 199 Capítulo 6: Navegación Sensitiva a Luz con Fotoresistores La luz tiene muchas aplicaciones en robótica y control industrial. cuándo tomar una foto. podrá reportar la luminosidad global y el nivel de obscuridad que observe. el fotoresistor . tales como el rayo de luz de una linterna y puertas que permitan el paso de luz a un cuarto obscuro. tales como 220 Ω y 10 kΩ. INTRODUCIENDO EL FOTORESISTOR Los resistores con los que has trabajado en capítulos previos tenían valores fijos. El sensor de luz en tu kit del Boe-Bot está diseñado para detectar luz visible. además podrá seguir fuentes de luz. y puede ser usado para hacer que tu Boe-Bot detecte variaciones en la intesidad de la luz. que su valor de resistencia depende en la luminosidad en el ambiente que es reflejada sobre su superficie detectora de luz. la determinación de cuándo activar las luces en la calle durante distintas épocas del año.

La unidad de medida de luminosidad es comunmente llamado "foot-candle" (en inglés) en el sistema Británico de medida. El rayo de luz enfocado que observas iluminando la pared es la luz incidente. El elemento activo de estos fotoresistores está hecho de Sulfuro de Cadmio (CdS). En otras palabras. Tu circuito perceptor de nivel de luz será capaz de detectar la diferencia entre sombra y no-sombra. solo de que la luminosidad sea mayor o menor en ciertas direcciones. . Mientras estemos usando fotoresistores no nos preocuparemos de los niveles de lux. ACTIVIDAD #1: CONSTRUYENDO Y PROBANDO CIRCUITOS DE FOTORESISTORES En esta actividad.7 kΩ (amarillo-violeta-rojo) Resistores – 10 kΩ (marrón-negro-naranja) Construyendo los Ojos Fotosensitivos Figura 6-2 muestra el dibujo esquemático y Figura 6-3 muestra el diagrama de conexión para los circuitos de fotoresistores que vas a usar para esta y las próximas dos actividades. o también como "lux" en es sistema métrico. Una resistencia eléctrica definida es producidad de manera inversamente proporcional a la intensidad de la iluminación (o luminosidad). En otras palabras.CdS Resistores – 2 kΩ (rojo-negro-rojo) Resistores – 220 Ω (rojo-rojo-marrón) Cables de conexión Resistores – 470 Ω (amarillo-violeta-marrón) Resistores – 1 kΩ (marrón-negro-rojo) Resistores – 4. Lista de Partes: (2) (2) (2) (4) (2) (2) (2) (2) Fotoresistores . por sus siglas en inglés) que tiene una sensitividad espectral similar a la del ojo humano. El Boe-Bot puede ser programado para usar la intensidad relativa de la luz para tomar decisiones de navegación. el tipo de luz que tu ojo detecta es el mismo tipo de luz que afecta la resistencia del fotoresistor. Una manera de entender luz incidente es pensar acerca de una linterna iluminando la pared. La luz entra en la capa de semiconductor que se encuentra sobre el substrato de cerámica y que se encarga de producir conductores libres. construirás y verificarás un circuito sensible a la luz con fotoresistores. y brillo causa menor resistencia. Los comandos PBASIC para determinar si una sombra recubre el fotoresistor será muy similar a los usados para determinar si un bigote había sido presionado o no.Página 200 · Robótica con el Boe-Bot Un fotoresistor es un resistor dependiente de luz (LDR. la obscuridad causa mayor resistencia. Luminosidad es un nombre científico para la medida de luz incidente .

Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 201 √ √ Desconecta la energía de tu plaqueta y servos. usando la Figura 6-3 como referencia.parallax.stampsinclass.com www.). Construye el circuito mostrado en Figura 6-2. + + Board of Education Rev C © 2000-2003 HomeWork Board . Vdd Vdd P6 220 Ω 2 kΩ P3 220 Ω 2 kΩ Figura 6-2 Schematic – First Light Detection Circuit Vss Vss To Servos 15 14 Vdd 13 12 Red Black To Servos (916) 624-8333 www.) y HomeWork Board (der.com Rev B X4 X5 Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss Figura 6-3 Diagrama de Conexión para el Primer Circuito de Detección de Luz Board of Education (izq.

estos registros de entrada guardaron valores que indicaban si un bigote era presionado o no. señales altas y bajas han sido usadas para prender y apagar los circuitos LED. Hasta ahora. y enviar tonos a la bocina. De esta forma. mientras R aumenta. Cuando un programa del BASIC Stamp comienza. Un pin de I/O establecido como pin de entrada no necesita tener 5 V ejercidos sobre él para hacer que su registro de entrada almacene 1. Vo aumenta. IN6 almacenará un 1. la resistencia podría ser tan pequeña como 1 kΩ (exposición completa a la luz) o tan grande como 25 kΩ (sombra recubiendo la mayor parte del objeto). controlar los servos. Podría ser unos pocos Ω si la luz es muy brillante. Cualquier voltaje por debajo de 1. el circuito se comporta como si no estuvieran presente ni el pin de I/O ni el resistor de 220 Ω.4 V hará que el registro de entrada del pin de I/O almacene un 0. Mientras la resistencia del fotoresistor cambia con la exposición a la luz. escucha silenciosamente sin afectar el circuito. los pines de I/O son cambiados de entradas a salidas de modo que el BASIC Stamp pueda mandas las señales altas o bajas. IN6 almacenará un 0. Cualquier valor por encima de 1. Por ejemplo. también lo hace el voltaje en Vo. Vo es lo que el pin del BASIC Stamp I/O está detectando cuando funciona como una entrada. Como una salida. cuando el voltaje en Vo es mayor a 1. La resistencia del fotoresistor es mostrada con la letra R. Si Vo cae por debajo de 1. Cuando un pin de I/O del BASIC Stamp es una entrada. o un 0 cuando percibía 0 V (bigote presionado). La Figura 6-4 muestra el circuito equivalente.Página 202 · Robótica con el Boe-Bot Funcionamiento del Circuito Fotoresistivo Un pin I/O en el BASIC Stamp puede funcionar como una entrada o una salida.4 V. Un pin I/O del BASIC Stamp I/O también puede funcionar como una entrada. Vo disminuye y mientras R disminuye. De igual forma. el pin I/O no ejerce nigún voltaje al circuito al cual está conectado. . En un cuarto bien iluminado con ajustes de luces fluorescentes en el techo. el pind I/O puede enviar una señal alta (5 V) o baja (0 V). LOW. el registro de entrada IN7 guardaba un 1 cuando percibía 5 V (bigote no presionado). Al contrario. En el capítulo previo. PULSOUT o FREQOUT. Los pines de I/O del BASIC Stamp son entradas por defecto. el pin no necesita 0 V para hacer que su registro de entrada almacene un 0.4 V hará que el registro de entrada de un pin de I/O almacene un 1.4 V. Si este circuito es conectado a IN6. todos los pines de I/O comienzan como entradas. o en la vecindad de 50 kΩ en obscuridad total. Cuando usas los comandos como HIGH.

4 V. Cuando R sea más pequeño que 2 kΩ. Los resistores de 2 kΩ fueron escogidos para hacer que el valor de Vo fuera un poco mayour al voltaje umbral del pin I/O del BASIC Stamp (1. El vlaor exacto de Vo es determinado por la relación entre R y 2 kΩ. lo cual hace que Vo sea menor. Cuando el voltaje percibido por un pin de I/O está por encima de ese umbral. el valor de Vo puede rondar entre Vdd y Vss. el circuito es llamado divisor de voltaje. puedes calcular el otro valor usando uno de estas dos ecuaciones. . Detectando Sombras Cubrir con una sombra al fotoresistor produce un valor de resistencia (R) mayor. el registro de entrada del pin I/O almacenará un 0.4 V) en un cuarto bien alumbrado.Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 203 Vdd R Vo Figura 6-4 Dibujo Esquemático – Circuito Divisor de Voltaje 2 kΩ Vss Cuando los resistores están conectados extremo con extremo como lo muestra la figura Figura 6-4 están conectados en serie. Vo estará más cerca a Vdd. Cuando dos resistores se encuentran conectados en serie para establecere un voltaje Vo. debería de enviar Vo por debajo del umbral de 1.5 V. Cuando R sea igual a 2 kΩ. y pueden ser llamados resistores en serie . Si es menor a ese valor. Si mides uno de los valores (R o Vo). Vo = 5V × 2 000 Ω 2 000 Ω + R 2000 Ω ⎞ ⎛ R = ⎜ 5V × ⎟ − 2000 Ω Vo ⎠ ⎝ 1. Cuando R sea mayor a 2 kΩ. también es conocido como el umbral lógico del pin I/O. En este circuito. Vo estará más cerca de Vss. Cuando cubres con una sombra sonre él con tu mano. el registro de entrada del pin I/O almacenará un 1.4 V es llamado el voltaje umbral del pin I/O del BASIC Stamp. Vo será 2.

3. ' Robotica con el Boe-Bot . y ejecuta TestPhotoresistorDividers.bs2 ' Muestra lo que perciben los pines de I/O conectados al circuito de ' fotoresistores divisores de voltaje.bs2 adaptado a los fotoresistores divisores.bs2 Este programa de ejemplo es TestWhiskers. o si los registro de entrada son 0 independientemente si originas una sombra o no. guarda. CR. Example Program: TestPhotoresistorsDividers. los cuales están conectados a los circuitos de fotoresistores divisores. ahora monitoreamos P3 y P6. De igual manera. Si cubres con una sombra el fotoresistor divisor conectado a P6. 0. Cuando cubres con una sombra uno o ambos fotoresistores. ' {$STAMP BS2} ' {$PBASIC 2. los valores correspondientes deberían cambiar a 0. BIN1 IN6. bien sea haciendo que el registro de entrada cambie a 0 cuando causas una sombra. " P3 = ".5} DEBUG "PHOTORESISTOR STATES". En vez de monitorear P5 y P7 como hicimos con los bigotes. entonces almacenará un 0. causará que IN3 almacene un 0.bs2. √ √ √ √ √ Reconecta la energía a tu plaqueta. CR. tanto IN6 como IN3 almacenan el valor 1.TestPhotoresistorDividers. Este programa debería mostrar un valor de 1 en ambos lados dentro de un cuarto bien iluminado. Si estás teniendo dificultades. "P6 = ". Verifica que cuando usas tu mano para cubrir con una sombra cada uno de los fotoresistores puedes originar un cambio en el registro de entrada de 1 a 0. "Left Right". tanto IN6 como IN3 almacenarán el valor 1.Página 204 · Robótica con el Boe-Bot En un cuarto bien iluminado. si cubres con una sombra el fotoresistor divisor conectado a P3. consulta el recuadro Resolución de Problemas del Fotoresistor Divisor luego del listado del programa. Continúa trabajando en ello hasta que la sombra originada por tu mano haga que el estado cambie de 1 a 0 con regularidad. BIN1 IN3 PAUSE 100 LOOP . Introduce. Verifica que sin sombra. "--------------" DO DEBUG CRSRXY.

Tu Turno – Experimentando con Distintos Divisores de Voltaje Dependiendo de las condiciones de luz en tu área. La mejor combinación es una que no sea super sensitiva. Si ninguno de los registros IN3 o IN6 mostró 1 independientemente de si los cubriste o no con una sombra: √ Si el cuarto está muy iluminado. Trata con un resistor de 1 kΩ (marrón-negro-rojo). Prueba cada combinación de divisor de voltaje con TestPhotoresistorDividers. √ √ √ Recuerda desconectar la energía de tu plaqueta durante cada modificación de algún circuito. Si ninguno de lo registros IN3 o IN6 mostró 0 independientemente de si los cubriste o no con una sombra: √ Si el cuarto tiene poca iluminación. 4. Alternativamente. y te ves forzado a poner tu mano en forma de copa sobre la superficie recolectora de luz del fotoresistor para hacer que 1 cambie a 0. pero que no requiera tampoco que coloques tu mano como un domo encima del fotoresistor. Los resistores conectando P6 y P3 a los fotoresistores deberían ser de 220 Ω (rojorojo-marrón). √ . Esto hará que tu divisor tenga mejor desempeño en condiciones de luz baja.Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 205 Resolución de Problemas para el divisor de voltaje con fotoresistor Cosas en general para verificar: √ √ √ Chequea tus conexiones y programa por errores. colocar resitores en serie más grande o pequeños a 2 kΩ puede mejorar el desempeño de tus detectores de sombra. y 10 kΩ.7 kΩ. Para condiciones de luz realmente bajas. Los resistores que se conectan entre Vss y los fotoresistores deberían ser de 2 kΩ (rojo-negro-rojo).7 kΩ (Amarillo Violeta Rojo). Usa la combinación de resistor que creas más conveniente durante las próximas dos actividades. puedes reemplazar los resitores de 2 kΩ con unos de 4.bs2 y determina cuáles resistores funcionan mejor bajo tus condiciones de iluminación. Chequea el código de colores de tus resistores. hasta puedes usar resistores de 10 kΩ (marrón-negro. o inclusive con uno de 470 Ω (amarillo-violeta-marrón) si te encuentras en un área al aire libre. puede que necesites subsituir por un valor menor. 1 kΩ. el resistor de 2 kΩ.naranja). Trata de reemplazar los resistores de 2 kΩ (rojo-negro-rojo) con cada uno de los valores de los otros resistores que has recolectado: 470 Ω. Asegúrate que cada componente está firmemente conectado en su enchufe. considera traer unas lámparas extra.

bs2 de la página 184.bs2 IF (IN6 = 0) AND (IN3 = 0) THEN GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left ELSEIF (IN6 = 0) THEN GOSUB Back_Up GOSUB Turn_Right ELSEIF (IN3 = 0) THEN GOSUB Back_Up GOSUB Turn_Left ELSE GOSUB Forward_Pulse ENDIF ' De RoamingWithWhiskers.Página 206 · Robótica con el Boe-Bot ACTIVITY #2: NAVEGACIÓN LIBRE Y EVASIÓN DE OBJETOS TIPO SOMBRA Ya que los fotoresistores divisores se comportan de manera similar a los bigotes. Figura 6-5: Modifica RoamingWithWhiskers.bs2 para Usar con Fotoresistores Divisores ' Modificado para ' RoamingWithPhotoresistor ' Dividers. Haz las modificaciones mostradas en la Figura 6-5. Reconecta la energía a tu plaqueta y servos. Ejecuta y verifica el programa.bs2 para los Fotoresistores Divisores Lo único que en realidad necesitas hacer es ajustar las sentencias IF…THEN de manera que monitoreen IN6 e IN3. La Figura 6-5 demuestra como hacer estos cambios. .bs2. y guárdalo como RoamingWithPhotoresistorDividers. vale la pena examinar lo que implica la adaptación de RoamingWithWhiskers. Adaptando RoamingWithWhiskers.bs2 √ √ √ √ Abre el programa RoamingWithWhiskers. en vez de IN7 e IN5.bs2 para que funcione con los fotoresistores divisores.bs2 IF (IN5 = 0) AND (IN7 = 0) THEN GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left ELSEIF (IN5 = 0) THEN GOSUB Back_Up GOSUB Turn_Right ELSEIF (IN7 = 0) THEN GOSUB Back_Up GOSUB Turn_Left ELSE GOSUB Forward_Pulse ENDIF Example Program – RoamingWithPhotoresistorDividers.

' Fotoresistor izq. √ √ Verifica que el Boe-Bot esquiva las sombras usando tu mano para crear sombras sobre los fotoresistores. ' Directiva del Stamp. ' ' ' ' -----[ Titulo ]------------------------------------------------------------Robotica con el Boe-Bot . detecta ' sombra. revisa los fotoresistores aproximadamente 40 veces/segundo.RoamingWithPhotoresistorDividers. Tu tendrás que moverte rápidamente pra crear una sombra sobre ambos fotoresistores entre los pulsos. Alternativamente. Ayuda que muevas tu mano rápidamente de una pose sin nada de sombra a una con sombra completa para activar ambos fotoresistores al mismo tiempo.bs2 El Boe-Bot detecta sombras con circuito de fotoresistor divisor de voltahe y gira alejandose de ellas. retrocede y vuelta en U ' (izquierda dos veces). y una sombra sobre ambos fotoresistores divisores. puedes dejar que tu mano cubra con una sombra ambos fotoresistores mientras ejecuta una maniobra. 2000. ' Directiva de PBASIC. Cuando el Boe-Bot avanza. . una sombra sobre el fotoresistor divisor izquierdo (circuito conectado a P7). 3000 ' Senal de start/restart ' -----[ Rutina Principal ]--------------------------------------------------DO IF (IN6 = 0) AND (IN3 = 0) THEN GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left ELSEIF (IN6 = 0) THEN GOSUB Back_Up ' Ambos fotoresistores detectan ' sombra.5} DEBUG "Program Running!" ' -----[ Variables ]---------------------------------------------------------pulseCount VAR Byte ' Contador de bucle FOR. ' {$STAMP BS2} ' {$PBASIC 2. Actualiza los comentarios tales como el título y las descripciones de las reacciones para reflejar el cambio de contactos con los bigotes a comportamiento del circuito del fotoresistor. Debería parecerse al siguiente programa cuando hayas terminado... retrocede y gira der.Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 207 Creando sombras sobre ambos fotoresistores puede ser difícil. luego con una sombra sobre el fotoresistor divisor derecho (circuito conectado a P3). Cuando retorne de la maniobra y chequee los fotoresistores nuevamente. Trata primero sin ninguna sombra. debería reconocer que ambos fotoresistores están cubiertos por una sombra.NEXT ' -----[ Inicializacion ]----------------------------------------------------FREQOUT 4.

650 PULSOUT 13.Página 208 · Robótica con el Boe-Bot GOSUB Turn_Right ELSEIF (IN3 = 0) THEN GOSUB Back_Up GOSUB Turn_Left ELSE GOSUB Forward_Pulse ENDIF LOOP ' Fotoresistor der. Entonces. cuando la condición sea que ambos fotoresistores detecten una sombra. retrocede y gira izq. 650 PAUSE 20 NEXT RETURN Turn_Right: FOR pulseCount = 0 TO 20 PULSOUT 12. Tu Turno – Mejorando el desempeño Puedes mejorar el desempeño de tu Boe-Bot comentando algunas de las llamadas a subrutinas que fueron diseñadas para ayudar al Boe-Bot a retroceder de los obstáculos y luego girar para evadirlos. 90-grados ' Retrocede. aprox. cuando . aprox. 850 PULSOUT 13. ' Ningun fotoresistor detecta ' sombra. ' -----[ Subrutinas ]--------------------------------------------------------Forward_Pulse: PULSOUT 12. 850 PAUSE 20 NEXT RETURN Back_Up: FOR pulseCount = 0 TO 40 PULSOUT 12. 850 PULSOUT 13. 650 PAUSE 20 NEXT RETURN ' Envia un solo pulso de avance ' Giro izq. avanza. La Figura 6-6 muestra un ejemplo donde dos llamadas a la subrutina Turn_Left son comentadas dentro de la sentencia IF…THEN. 90-grados ' Giro der. detecta ' sombra. 650 PULSOUT 13.850 PAUSE 20 RETURN Turn_Left: FOR pulseCount = 0 TO 20 PULSOUT 12.

Ejecuta el programa y compara el desempeño.Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 209 solamente uno de los fotoresistores detecte sombras. porque el Boe-Bot tenía que retroceder antes de girar ya que había hecho contacto físico con el obstáculo. las llamadas a subrutina Back_Up son comentadas de manera que el Boe-Bot solo gire en respuesta a una sombra. él puede chequear entre cada pulso.bs2 IF (IN6 = 0) AND (IN3 = 0) THEN GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left ELSEIF (IN6 = 0) THEN GOSUB Back_Up GOSUB Turn_Right ELSEIF (IN3 = 0) THEN GOSUB Back_Up GOSUB Turn_Left ELSE GOSUB Forward_Pulse ENDIF ' Extracto modificado del programa ' RoamingWithPhotoresistor ' Dividers.bs2 ' Extracto del programa ' RoamingWithPhotoresistor ' Dividers.bs2 IF (IN6 = 0) AND (IN3 = 0) THEN GOSUB Back_Up ' GOSUB Turn_Left ' GOSUB Turn_Left ELSEIF (IN6 = 0) THEN ' GOSUB Back_Up GOSUB Turn_Right ELSEIF (IN3 = 0) THEN ' GOSUB Back_Up GOSUB Turn_Left ELSE GOSUB Forward_Pulse ENDIF √ √ Modifica RoamingWithPhotoresistorDividers. Cuando estás usando sombras para guiar el Boe-Bot. y luego siga una sombra que hagas sobre los fotoresistores. puedes hacer que tu BoeBot sea significativente más responsivo. . para determinar si la sombra todavía es detectada independientemente de si se está moviendo hacia adelante o si está ejecutando una maniobra.bs2 como lo muestra la parte derecha de la Figura 6-6. Un Control Simple con Sombras para el Boe-Bot Una forma interesante de control remoto es hacer que el Boe-Bot se quede quieto en la luz normal. Es una manera amigable al usuario para guiar la moción del Boe-Bot. Figura 6-6: Modifica RoamingWithPhotoresistorDividers. ACTIVIDAD #3: UN BOE-BOT CONTROLADO POR SOMBRAS MAS RESPONSIVO Al eliminar los bucles FOR…NEXT en las subrutinas navegación. Esto no era realmente posible con los bigotes.

Cuando cubras ambos fotoresistores con una sombra. 850 PULSOUT 12. izq. ' Directiva de PBASIC. detecta sombra. ninguno. √ √ √ Introduce. pero a la vez muy poderoso.ShadowGuidedBoeBot. guarda. ' Der.bs2 ' Boe-Bot detecta sombras creadas por tu mano y trata de seguirlas. el Boe-Bot debería quedarse quieto mientras que ninguna sombra cubra sus fotoresistores divisores. 750 PULSOUT 12. 3000 DO IF (IN6 = 0) AND (IN3 = 0) THEN PULSOUT 13. avanza ' Izq. Funcionamiento del Programa ShadowGuidedBoeBot. 850 PULSOUT 12. y ejecuta ShadowGuidedBoeBot. ' No hay sombra. Dependiendo de cuál condición es detectada. Es muy corto. ' gira (pivotea) izq. Usa tu mano para crear sombras sobre los fotoresistores divisores. queda quieto ' Directiva del Stamp.. ' Robotica con el Boe-Bot . Si cubres con una sombra uno de los fotoresistores. 750 ELSE PULSOUT 13. 750 ENDIF PAUSE 20 LOOP ' Ambos detectan sombras. der. 650 ELSEIF (IN6 = 0) THEN PULSOUT 13. ' gira (pivotea) der. ' Senal de Start/restart ' Pausa entre pulsos. Estudia este programa detalladamente y asegúrate de entender cómo funciona. 2000.Página 210 · Robótica con el Boe-Bot Programa de Ejemplo – ShadowGuidedBoeBot. los .bs2 Cuando ejecutes este próximo programa.bs2.5} DEBUG "Program Running!" FREQOUT 4. 750 PULSOUT 12.. detecta sombra. ' {$STAMP BS2} ' {$PBASIC 2. el Boe-Bot debería girar en la dirección de el fotoresistor que perciba la sombra. el Boe-Bot debería avanzar. 650 ELSEIF (IN3 = 0) THEN PULSOUT 13.bs2 La sentencia IF…THEN en DO…LOOP busca una de cuatro combinaciones de sombra posibles: ambos.

y obtener suficiente información para determinar niveles relativos de iluminación. pivoteo a la izq. fue si el nivel de luz estaba por encima o por debajo de un umbral. Los capacitores que usarás en esta actividad almacenan fracciones de millonésimas de faradio. uno de los cuatro conjuntos de pulsos será enviado en cada iteración de DO…LOOP. 750 √ √ Ejecuta el programa modificado. indicando poca luz. y es un bloque fundamental para la construcción de muchos circuitos. √ Prueba borrar (o comentar) este bloque de código. La capacidad de almacenamiento de carga del capacitor es medida en faradios (F). Una millonésima de faradio se llama .. Independientemente de la condición. ¿Puedes detectar alguna diferencia en el comportamiento del Boe-Bot? ACTIVIDAD #4: OBTENIENDO MAS INFORMACION DE TUS FOTORESISTORES La única información que el BASIC Stamp fue capaz de recolectar de los circuitos de fotoresistores divisores. podrás ajustar tu programa para buscar diferentes rangos de valores. hasta números grandes. Esta actividad introduce un circuito diferente que el BASIC Stamp puede monitorear. En su lugar. Luego de una sentencia IF…THEN. 750 PULSOUT 12. Introduciendo el Capacitor Un capacitor es un dispositivo que alamacena carga. pivoteo a la der.Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 211 comandos PULSOUT envían pulsos para una de las siguientes maniobras: avance. de igual forma que si le envías pulsos usando 750 para el argumento Duration del comando PULSOUT. es importante recordar incluir el comando PAUSE 20 para asegurar el tiempo de señal baja entre cada par de pulsos hacia los servos. indicando luz intensa. ELSE PULSOUT 13. Si no envías pulsos.. El valor que el BASIC Stamp obtiene del circuito variará entre números pequeños. Tu Turno – Condensando el Programa Este programa no necesita la condición ELSE o los dos comandos PULSOUT que le siguen. el Boe-Bot se quedará quieto. Un faradio es un valor bastante grande por lo que no es práctico para ser usado con el Boe-Bot. Esto implica que no tendrás que reemplazar a mano los resistores en serie basado en los niveles de luz. or quedarse quieto.

01 μF. con pocas fuentes de iluminación. . Lista de Partes: Figura 6-7 Capacitor Símbolo esquemático y Dibujo de parte (2) Fotoresistores . He aquí la manera de relacionar 103 con 0. equivale a 0. 10.01 μF es una medida de picofaradios (pF).01 μF.01 μF (103) (2) Resistores . 103 es 10.220 Ω (rojo-rojo-marrón) (2) Cables de conexión 0. y se abrevia μF. (10 × 10 ) × (1 × 10 ) F = 10 × 10 F lo cual equivale a 0. lo cual equivale a 10.01 × 10 F lo cual. con tres ceros añadidos.01 μF junto con el dibujo de la parte en el kit de partes de tu Boe-Bot.1 μF pueden ser usados en áreas con bastante iluminación. a su vez.CDS (2) Capacitores – 0.Página 212 · Robótica con el Boe-Bot microfaradio.000.000 equivale a 10 × 10 . No los uses en estas actividades. El 103 del capacitor indica su valor. Los capacitores de 0. abreviado como nF (trillonésimas de un Faradio). 0. abreviado como μF (billonésimas de un Faradio). -6 3 -12 -9 3 La Figura 6-7 muestra el símbolo esquemático para un capacitor de 0.01 μF.01 µF (marcados 103) para esta actividad. Medidas de capacitancia comunes: • • • Microfaradios: -6 1×10 F Nanofaradios: -9 1×10 F Picofaradioss: -12 1×10 F (millonésimas de un Faradio). abreviado como pF 1 1 1 μF nF pF = = = El 103 en la carcasa del capacitor de 0.01 µF 103 También puede haver capacitores de 0. El capacitor que usarás en este ejercicio alamacena exactamente una centésima de una millonésima de faradio. pero interfieren con el desempeño del Boe-Bot en áreas cubiertas.1 μF marcados con 104 en tu kit. Es decir. √ Asegúrate que hayas selecionado los capacitores de 0.

√ √ Desconecta la energía de tu plaqueta y servos. P6 220 Ω 0. Construye el circuito RC mostrado en la Figura 6-8 usando Figura 6-9 como referencia.01 µF Figura 6-8 Dibujo esquemático – Dos circuitos RC con Fotoresistores Para medir resistencia que varía con luminosidad. La Figura 6-8 muestra los dibujos esquemáticos del circuito RC de detección de luz del Boe-Bot y la Figura 6-9 muestra ejemplos de los diagramas de conexión para la Board of Education y la HomeWork Board.Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 213 Reconstruyendo los Ojos Fotosensitivos El circuito que el BASIC Stamp puede usar para determinar los niveles de luz es llamado cicuito resistor/capacitor (RC).01 µF Vss P3 220 Ω 0. Vss .

Mientras el capacitor pierde su carga a través del fotoresistor. Si el programa del BASIC Stamp program cambia entonces el pin de I/O para que escuche silenciosamente. .4 V depende de cuán fuerte el fotoresistor “resista” el flujo de corriente eléctrica proveniente del capacitor.com www. Si el fotoresistor tiene un valor de resistencia grande debido a condiciones de luz baja.parallax. Cuando P6 envía la señal alta . por lo que el capacitor se descargará rápidamente. disminuyendo a medida que pierda la carga.stampsinclass.com Rev B X4 X5 Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss Figura 6-9 Diagramas de Conexión para los Circuitos con Fotoresistores Board of Education (izq. + + Board of Education Rev C © 2000-2003 HomeWork Board Acerca del Tiempo de Decaimiento RC y del Circuito Fotoresistor Piensa que un capacitor. Si el fotoresistor tiene un valor de resistancia pequeño debido a condiciones de luz alta. esencialmente carga esta batería-capacitor aplicándole 5 V.).) y HomeWork Board (der. Luego de unos cuantos ms. el capacitor pierde su carga a través del fotoresistor. el capacitor tarda mas en descargarse. su voltaje decae. no resistirá la corriente muy fuertemente. El tiempo que le toma a IN6 en percibir que el voltaje está oir debajo de 1.Página 214 · Robótica con el Boe-Bot Hacia los To Servos Servos 15 14 Vdd 13 12 Red Black Hacia los To Servos Servos (916) 624-8333 www. es como una batería recargable pequeña. como el encontrado en circuito mostrado en la Figura 6-10. el capacitor se carga hasta casi 5 V.

El comando RCTIME está diseñado para medir el tiempo de decaimiento RC en un circuito como el que muestra la Figura 6-10. cada uno de sus extremos debe estar conecado a un terminal común (tambieén llamados nodos ). el argumento Pin debería ser 6/ El argumento State puede ser 1 ó 0. mediremos el tiempo de decaimiento RC en el circuito con fotoresistor.4 V y decae. He aquí la sintaxis del comando RCTIME: RCTIME Pin. el voltaje a través del capacitor comenzará cerca de 5 V y decaerá a 1. State. Duration El argumento Pin es el número del pin de I/O que quieres medir. Esta medida requiere una combinación de comandos HIGH y PAUSE junto con un nuevo comando llamado RCTIME. El argumento Duration tiene que ser una variable que guarde la medida del tiempo. Para que dos componentes estén conectados en paralelo. Debería ser 1 si el voltaje a través del capacitor comienza por encima de 1.4 V. la cual está en unidades de 2 μs. También tienen un extremo conectado al mismo terminal del resitor de 220 Ω. En este próximo programa de ejemplo. Por ejemplo.4 V y crece. Debería ser 0 si el voltaje a través del capacitor comienza por debajo y de 1. así que el argumento State debería ser 1. el cual es el fotoresistor en la izquierda del Boe-Bot. Para el circuito en la Figura 6-10. . Midiendo el Tiempo de Decaimiento RC con el BASIC Stamp El BASIC Stamp puede ser programado para cargar el capacitor y luego medir el tiempo que le toma al voltaje almacenado en decaer a 1.01 µF Figura 6-10 Circuito RC Conectado a un Pin de I/O Vss Conectado en paralelo El fotoresistor y capacitor mostrados en la Figura 6-10 se encuentran conectados en paralelo.4 V. que se encuentra conectado a P6. si quieres medir P6. Es tiempo de decaimiento puede ser usado para indicar la resistencia del fotoresistor.Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 215 P6 220 Ω 0. Tanto el fotoresistor como el capacitor tienen un terminal (o pata) conectado a Vss. La resistencia a su vez indica cuan brillante es la luz detectada por el fotoresistor.

si con tu mano haces una sombra que lo cubra o si apagas las luces.Página 216 · Robótica con el Boe-Bot Para medir el decaimiento RC. Apunta la superficie recolectora de luz del fotoresistor directamente hacia una lámpara en el techo. el código implementa estos tres pasos: 1. Cubre con una sombra al fotoresistor conectado a P6 y verifica que el tiempo medido aumenta a medida que el ambiente se hace más obscuro.timeLeft Para obtener la medida. HIGH 6 PAUSE 3 RCTIME 6. miden el tiempo de decaimiento RC. Luego. 2. y ejecuta TestP6Photoresistor.bs2 √ √ √ √ Reconecta la energía a tu plaqueta. 3.5} ' Directiva del Stamp. y luego almacenan ese valor en la variable timeLeft. Example Program: TestP6Photoresistor. . Debería de aumentar mucho más inclusive. Ejecuta el comando RCTIME. debería de aumentar mientras gradualmente alejas el fotoresistor de la fuente de luz.4 V). ' Robotica con el Boe-Bot . El tiempo medido debería de disminuir bastante. guarda. y lo almacena en la variable timeLeft.TestP6Photoresistor.1. ' {$STAMP BS2} ' {$PBASIC 2. o alúmbrala directamente con una linterna. Introduce. ' Directiva de PBASIC.bs2 ' Verifica el circuito con fotoresistor conectado a P6 en el Boe-Bot ' y mmuestra el tiempo de decaimiento. lo cual establece al pin de I/O como entrada. Comienza a cargar el capacitor conectando el circuito a 5 V (usando el comando HIGH). Usa el comando PAUSE para darle suficiente tiempo al comando HIGH para cargar el capacitor en el circuito RC.bs2. mide el tiempo de decaimiento (desde casi 5 V a 1. la primera cosa que debes hacer es asegurarte que hayas declarado una variable que guarde la medida de tiempo: timeLeft VAR Word Estas próximas tres líneas de código cargan el capacitor.

ACTIVIDAD #5: BOE-BOT SEGUIDOR DE RAYO DE LUZ DE LINTERNA En esta actividad. Repite las pruebas con sombra y luz con el circuito RC conectado a P3 y verifica su desempeño.1. harás que el Boe-Bot siga el rayo de luz de una linterna que se encuentre apuntado a la superficie frontal del Boe-Bot. el que está conectado a P3. verificarás y entonarás los sensores de luz de tu Boe-Bot.bs2.bs2 como TestP3Photoresistor. Necesitarás modificar los argumentos Pin para ambos comandos HIGH y RCTIME.1 cm) en frente del Boe-Bot.timeLeft DEBUG HOME. Partes Extra (1) Linterna Ajuste de Sensores para Percibir el Rayo de Luz de una Linterna Esta actividad funciona mejor si la superficie recolectora de luz de los fotoresistores está apuntada hacia adelante a puntos separados en el piso a una distancia de 2 in (5. DEC5 timeLeft PAUSE 100 LOOP Tu Turno √ √ √ Guarda TestP6Photoresistor. Modifica el programa para que realice la medida de tiempo de decaimiento en el fotoresistor dereche.Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 217 timeLeft DO VAR Word HIGH 6 PAUSE 2 RCTIME 6. . √ Apunta las superficies recolectoras de luz de tus fotoresistores a la superficie en frente del Boe-Bot como lo muestra la Figura 6-11. de manera que reconozcan la diferencia etre luz de ambiente y un rayo de luz de linterna enfocado. cambiándolos de 6 a 3. De allí. "timeLeft = ".

Página 218 · Robótica con el Boe-Bot Figura 6-11: Orientación del Fotoresistor To Servos 15 14 Vdd 13 12 Red Black X4 X5 Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss + Board of Education Rev C © 2000-2003 Verificando la Respuesta del Sensor al Rayo de Luz de una Linterna Antes de que puedas programar el Boe-Bot para dar vuelta hacia un rayo de luz de una linterna. Programa del Ejemplo: TestBothPhotoresistors. Coloca el Boe-Bot en la superficie donde va a seguir el rayo de luz de linterna.bs2 √ √ √ Introduce. y ejecuta TestBothPhotoresistors. . guarda. Guarda ambos valores de las medidas de tiempo en la primera fila de la Tabla 61. Asegúrate que está conectado al cable serial y que las medidas están siendo mostradas en el Debug Terminal.bs2. tienes que saber la diferencia entre las medidas de luz con y sin el rayo de luz de linterna iluminando el trayecto del Boe-Bot.

' Medida de RC time izq. " ". DEC5 timeRight PAUSE 100 LOOP ' Rutina principal. 3. Guarda estos nuevos valores de ambas medidas de tiempo en la segunda fila de la Tabla 6-1. ' Robotica con el Boe-Bot . Los tiempos medidos deberán ser ahora. CR. Tabla 6-1: Medidas de Tiempo RC con y sin el Rayo de Luz de Linterna Valores de Duración timeLeft timeRight Descripción Medidas de tiempo sin rayo de luz de linterna (luz de ambiente). "timeLeft timeRight". significativamente más bajos que antes.1. ' {$STAMP BS2} ' {$PBASIC 2.1. ' Mostrar medidas. ' Medida de RC time der.timeLeft HIGH 3 PAUSE 3 RCTIME 3.timeRight DEBUG CRSRXY. CR. DEC5 timeLeft. 0. ' Declaraciones de variables. Medidas de tiempo con el rayo de luz de linterna enfocado en frente del Bo-Bot.bs2 ' Prueba de los circuitos RC con fotoresistores. "-------.---------" DO HIGH 6 PAUSE 3 RCTIME 6. y enfoca tu rayo de luz en frente del Boe-Bot. ' Inicializacion. ' Directiva de PBASIC. DEBUG "PHOTORESISTOR VALUES".TestBothPhotoresistors. .Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 219 √ √ Prende tu linterna.5} timeLeft timeRight VAR VAR Word Word ' Directiva del Stamp.

En otras palabras. el BASIC Stamp usará el valor 114. cada vez que aparezca LeftBright.Página 220 · Robótica con el Boe-Bot Tu Turno √ √ Trata de apuntar el Boe-Bot en direcciones distintas y repetir tus medidas. usa la directiva CON. Las constantes LeftThreshold y RightThreshold son usadas en el programa para determinar si el rayo de luz de la linterna ha sido detectado. Puedes también declarar constantes. Cada vez que RightAmbient sea usado. counter VAR Nib le da el nombre counter a una localidad particular en la memoria RAM del BASIC Stamp. cada vez que usas counter en un programa PBASIC. ' LeftThreshold CON RightThreshold CON Promedio Factor de Escala LeftBright + LeftAmbient / 2 * 5 / 8 RightBright + RightAmbient / 2 * 5 / 8 . En vez de la directiva VAR. Por ejemplo. He aquí un ejemplo en el que dos constantes llamadas LeftThreshold y RightThreshold son calculadas usando las cuatro constantes discutidas anteriormente. De igual manera. cada vez que en el programa aparezca el nombre LeftAmbient. Aquí se muestran varias directivas CON del próximo programa de ejemplo: LeftAmbient RightAmbient LeftBright RightBright CON CON CON CON 108 114 20 22 Ahora. dale un nombre útil. si tuenes un número que planeas usar tu programa. Substituirás tus valores específicos que anotaste en la Tabla 61 antes de ejecutar el programa. el BASIC Stamp usará el número 108. Luego de que declaras la variable. Las constantes también pueden ser usadas para calcular otras constantes. Para mejores resultados. Siguiendo el Rayo de Luz de una Linterna Has estado usando declaraciones de variables hasta ahora. puedes promediar tus medidas con la linterna prendida y apagada respectivamente y reemplazar los valores en la Tabla 6-1 con tus valores promedio. dicho programa usa el valor guardado en esa localidad particular en la memoria RAM del BASIC Stamp. en realidad es el valor 20. y RightBright es 22.

El cálculo del promedio para LeftThreshold es LeftBright + LeftAmbient / 2. Primero. Este valor es dividido por 2.bs2 al BASIC Stamp Editor. 64 * 5 = 320 320 / 8 = 40 Puedes usar paréntesis para forzar que un cálculo que esté más a la derecha en una línea de código en PBASIC sea ejecutada primero. Luego. Substituye tu medida timeRight con el valor obtenido cuando el rayo de luz de la linterna estaba enfocado. en lugar del valor 114 en la directiva RightAmbient CON. Ese resultado es multiplicado por 5 y dividido por 8. 35 es multiplicado por el resultado de (2 – distanceRight). el resultado es multiplicado por 5 y dividido por 8. Esto significa que LeftThreshold es una constante cuyo valor es 5/8 del promedio de LeftBright y LeftAmbient. Intentemos: LeftBright + LeftAmbient = 20 + 108 = 128. Substituye tu medida timeLeft con el valor sin rayo de luz de linterna (de la Tabla 6-1).distanceRight * 35 + 750 de esta manera: pulseRight = 35 * (2 – distanceRight) + 750 En esta expresión. en lugar del valor 20 en la directiva LeftBright CON. 128 / 2 = 64. . Programa de Ejemplo: FlashlightControlledBoeBot.Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 221 Los cálculos matemáticos hechos con estas constantes consisten en un promedio seguido de una re-escala. Substituye tu medida timeRight con el valor sin rayo de luz de linterna. Substituye tu medida timeLeft con el valor obtenido cuando el rayo de luz de la linterna estaba enfocado. en lugar del valor 22 en la directiva RightBright CON.bs2 √ √ √ √ √ Introduce FlashlightControlledBoeBot. Las expresiones matemáticas en PBASIC son ejecutadas de izquierda a derecha. entonces el producto es sumado a 750. LeftBright es sumado a LeftAmbient. en lugar del valor 108 en la directiva LeftAmbient CON. puedes reescribir esta línea de código en PBASIC: pulseRight = 2 . Por ejemplo.

Guarda y luego ejecuta FlashlightControlledBoeBot.bs2 ' El Boe-Bot sigue el rayo de luz de linterna enfocado en su frente.5} DEBUG "Program Running!" ' -----[ Constantes ]--------------------------------------------------------' REEMPLAZA ESTOS VALORES CON LOS VALORES QUE DETERMINASTE E INTRODUCISTE EN ' LA TABLA 6. 3000 ' -----[ Rutina Principal ]--------------------------------------------------DO GOSUB Test_Photoresistors . LeftAmbient RightAmbient LeftBright RightBright ' LeftThreshold CON RightThreshold CON CON CON CON CON 108 114 20 22 Promedio Factor de Escala ' Directiva del Stamp.Página 222 · Robótica con el Boe-Bot √ √ √ √ Reconecta la energía a tu plaqueta y servos. dar vuelta a la izquierda.y der. ' -----[ Titulo ]------------------------------------------------------------' Robotica con el Boe-Bot . Usa la linterna para guiar a tu Boe-Bot a través de varios cursos con obstáculos. y dar vuelta a la derecha. LeftBright + LeftAmbient / 2 * 5 / 8 RightBright + RightAmbient / 2 * 5 / 8 ' -----[ Variables ]---------------------------------------------------------' Declara las variables para alamacenar los tiempos RC medidos ' por los fotoresistores izq. Experimenta y descubre cómo hay que apuntar la luz para avanzar.FlashlightControlledBoeBot. 2000. timeLeft timeRight VAR VAR Word Word ' -----[ Inicializacion ]----------------------------------------------------FREQOUT 4. ' Directiva de PBASIC. ' {$STAMP BS2} ' {$PBASIC 2.bs2.1.

pivotea hacia la der. LeftAmbient RightAmbient LeftBright RightBright CON CON CON CON 108 114 20 22 . detecta rayo de luz. Ninguno detecta rayo de luz.1. 750 ' ENDIF PAUSE 20 RETURN < RightThreshold) THEN Ambos detectan rayo de luz. max. pivotea hacia la izq.Test_Photoresistors ]-----------------------------------Test_Photoresistors: HIGH 6 PAUSE 3 RCTIME 6.Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 223 GOSUB Navigate LOOP ' -----[ Subrutina . 750 ' PULSOUT 12.1. 700 ELSEIF (timeRight < RightThreshold) THEN ' PULSOUT 13. 800 ' PULSOUT 12. 800 ELSE PULSOUT 13.timeLeft HIGH 3 PAUSE 3 RCTIME 3. 650 ' ELSEIF (timeLeft < LeftThreshold) THEN ' PULSOUT 13. detecta rayo de luz. ' Medida de tiempo RC izq. 700 ' PULSOUT 12. Izq. Funcionamiento del Programa FlashlightControlledBoeBot.timeRight RETURN ' -----[ Subrutina . queda quieto. ' Medida de tiempo RC der. 850 ' PULSOUT 12. Der.bs2 Estas son las cuatro declaraciones de constantes que usaste con tus valores de la Tabla 61. Velocidad de avance.Navigate ]----------------------------------------------Navigate: IF (timeLeft < LeftThreshold) AND (timeRight PULSOUT 13. ' Pausa entre pulsos.

timeLeft timeRight VAR VAR Word Word Este es el indicador de reset que ha sido usado en la mayoría de nuestros programas en este texto. Estos valores de umbral pueden ser comparados con los valores de las medidas actuales de timeLeft y timeRight para determinar si los fotoresistores están percibiendo luz de ambiento o el rayo de luz enfocado. Todo el trabajo en el programa ocurre en estas dos subrutinas.1. las próximas dos líneas promedian y re-escalan los valores para determinar los valores de umbral el programa. 2000. 3000 La sección de la Rutina Principal contiene solamente dos llamadas a subrutinas.Página 224 · Robótica con el Boe-Bot Ahora que las cuatro constantes han sido declaradas. ' LeftThreshold CON RightThreshold CON Promeadio Factor de Escala LeftBright + LeftAmbient / 2 * 5 / 8 RightBright + RightAmbient / 2 * 5 / 8 Estas variables son utilizadas para almacenar los valores de las medidas de RCTIME. La medida para el circuito izq.timeLeft . y la medida para el circuito der. Test_Photoresistors toma las medidas de RCTIME de ambos circuitos RC con fotoresistores. Es almacenada en la variable timeRight. DO GOSUB Test_Photoresistors GOSUB Navigate LOOP Esta es la subrutina que realiza las medidas RCTIME en ambos circuitos RC con fotoresistores. y la subrutina Navigate toma las decisiones y envía los pulsos a los servos. Test_Photoresistors: HIGH 6 PAUSE 3 RCTIME 6. FREQOUT 4. es almacenada en la variable timeLeft.

Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 225

HIGH 3 PAUSE 3 RCTIME 3,1,timeRight RETURN

La subrutina Navigate usa una sentencia IF…THEN para comparar la variable timeLeft con la constante LeftThreshold y la variable timeRight con la constante RightThreshold. Recuerda que cuando la medida de RCTIME es pequeña, significa que luz intensa ha sido detectada, y cuano es grande, significa que la luz detectada no es tan intensa. Así que, cuando una de las variables que almacena una medida de RCTIME, es más pequeña que la constante de umbral, significa que el rayo de luz de la linterna ha sido detectado. De lo contrario, significa que el rayo no ha sido detectado. Dependiendo de cuál condición detecte la subrutina (ambos, izq., der., o ninguno), los pulsos de navegación apropiados son enviados a los servos, seguido de un comando PAUSE antes de que el comando RETURN salga de la subrutina.
Navigate: IF(timeLeft<LeftThreshold)AND(timeRight<RightThreshold) THEN PULSOUT 13, 850 PULSOUT 12, 650 ELSEIF (timeLeft < LeftThreshold) THEN PULSOUT 13, 700 PULSOUT 12, 700 ELSEIF (timeRight < RightThreshold) THEN PULSOUT 13, 800 PULSOUT 12, 800 ELSE PULSOUT 13, 750 PULSOUT 12, 750 ENDIF PAUSE 20 RETURN

Tu Turno – Ajustando el Desempeño y Modificando el Comportamiento

Puedes ajustar el desempeño del programa ajustando el factor de escala en esta declaración de constates:

Página 226 · Robótica con el Boe-Bot

' LeftThreshold CON RightThreshold CON

Promedio

Factor de Escala

LeftBright + LeftAmbient / 2 * 5 / 8 RightBright + RightAmbient / 2 * 5 / 8

Si cambias el factor de escala de 5/8 a 1/2, harás que el Boe-Bot sea menos sensible a la luz de la linterna, lo cual puede (o no) mejorar el control del Boe-Bot con la linterna. √ Prueba diferentes factores de escala, tales como 1/4, 1/2, 1/3, 2/3, y 3/4 y toma notas acerca de las diferencias en cuanto a cómo respondió el Boe-Bot ante el rayo de luz de la linterna.

Modificando la sentencia IF…THEN en el programa de ejemplo, puedes cambiar el comportamiento del Boe-Bot en el Programa de Ejemplo, puedes cambiar el comportamiento del Boe-Bot para que trate de deshacerse de la luz que ilumine sus ojos. √ Modifica la sentencia IF…THEN para que el Boe-Bot retroceda cuando detecte el rayo de luz de la linterna con ambos circuitos de fotoresistores y de vuelta si detecta el rayo de luz de la linterna con sólo uno de sus circuitos con fotoresistores.

ACTIVIDAD #6: NAVEGANDO LIBREMENTE HACIA LA LUZ
El programa de ejemplo en esta actividad puede ser usado para guiar al Boe-Bot a salir de un cuarto obscuro hacia una puerta o entrada que está dejando entrar luz más brillante. También permite mayor control sobre la navegación libre del Boe-Bot creando sombras con tu mano que cubran los fotoresistores.
Reajustando los Fotoresistores

Esta actividad funciona mejor si las superficies recolectoras de luz de los fotoresistores están apuntando hacia arriba y afuera. √ Apunta las superficies recolectoras de luz de tus fotoresistores hacia arriba y afuera como lo muestra la Figura 6-12.

Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 227

Figura 6-12: Orientación del Fotoresistor

Vdd X3
P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2

Vin

Vss

+

Programando Comportamiento para Navegación Libre hacia la Luz

La clave para la navegación libre hacia fuentes de luz más brillantes es avanzar en línea recta cuando la diferencia entre las medidas de los fotoresistores son pequeñas, y dar vuelta hacia el fotoresistor con la menor medida cuando haya una diferencia grande entre las dos medidas. De hecho, esto significa que el Boe-Bot dará vuelta hacia luz brillante. Inicialmente esto parece como una tarea sencilla de programación; razonando con un comando IF…THEN como en el ejemplo que ves abajo debería funcionar. El problema está en que no funciona, esto se debe a que el Boe-Bot se queda atascado dando vuelta a la izquierda y luego a la derecha nuevamente porque la variación de las variables timeLeft y timeRight son muy grandes. Cada vez que el Boe-Bot gira un poco, las variables timeRight y timeLeft cambian tanto que el Boe-Bot trata de corregir y voltear nuevamente. Nunca logra incorporar los pulsos de avance.
IF (timeLeft > timeRight) THEN PULSOUT 13, 850 PULSOUT 12, 850 ELSEIF (timeRight > timeLeft) THEN PULSOUT 13, 650 PULSOUT 12, 650 ELSE ' Gira der. ' Gira izq. ' Avanza.

Página 228 · Robótica con el Boe-Bot

PULSOUT 13, 850 PULSOUT 12, 650 ENDIF

He aquí otro bloque de código que funciona un poco mejor. Este bloque de código repara el problema de inestabilidad de giro de una lado para otro bajo ciertas condiciones. La variable timeLeft ahora tiene que ser mayor que timeRight por un margen de 15 antes que el Boe-Bot aplique un pulso izquierdo. De igual manera timeRight tiene que ser mayor que timeLeft por 15 antes de que el Boe-Bot ajuste hacia la izquierda. Esto le da al Boe-Bot la oportunidad de aplicar suficientes pulsos de avance antes de corregir su trayectoria con un giro, pero solo a ciertos niveles de luminosidad.
IF (timeLeft > timeRight + 15) THEN PULSOUT 13, 850 PULSOUT 12, 850 ELSEIF (timeRight > timeLeft + 15) THEN PULSOUT 13, 650 PULSOUT 12, 650 ELSE PULSOUT 13, 850 PULSOUT 12, 650 ENDIF ' Gira der. ' Gira izq. ' Avanza.

El problema con el bloque de código arriba es que funciona solamente en condiciones de luminosidad medianamente obscuras. Si lo llevas a un área muy obscura, el Boe-Bot comienza a oscilar de un lado para otro nuevamente, y nunca aplica los pulsos de avance. Si lo llevas a un área más alumbrada, entonces el Boe-Bot sólo avanza, y nunca hace ajustes hacia la izquierda o hacia la derecha. ¿Por qué sucede esto? He aquí la respuesta: Cuando el Boe-Bot está en un área del cuarto obscura, la medida de de cada fotoresistor será grande. Para que el Boe-Bot decida girar hacia la fuente de luz, la diferencia entre las dos medidas tiene que ser grande. Cuando el Boe-Bot está en un área más ilumindad, la medida de cada fotoresistor será pequeña. Para que el Boe-Bot decida girar, la diferencia entre las medidas de los fotoresistores también tiene que ser mucho más pequeña que lo que fue en la parte más obscura del cuarto. Lo que podemos hacer parar que esta diferencia responda a las condiciones de luminosidad, es hacerla una variable que sea una fracción del averaje de timeRight y timeLeft. De esa manera, siempre será el valor correcto, independientemente de si la luminosidad es alta o baja.
average = timeRight + timeLeft / 2

Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 229

difference = average / 6

Ahora, la variable difference puede ser usada en esta sentencia IF…THEN, y será un valor grande cuando la luminosidad sea baja, y un valor pequeño cuando la luminosidad sea alta.
IF (timeLeft > timeRight + difference) THEN ' Gira der. PULSOUT 13, 850 PULSOUT 12, 850 ELSEIF (timeRight > timeLeft + difference) THEN ' Gira izq. PULSOUT 13, 650 PULSOUT 12, 650 ELSE ' Avanza. PULSOUT 13, 850 PULSOUT 12, 650 ENDIF

Programa de Ejemplo– RoamingTowardTheLight.bs2

En contraste con RoamingWithPhotoresistorDividers.bs2 en la página 207, este programa será muy responsivo a la sombra generada por tu mano sobre el fotoresistor, independientemente de las condiciones de iluminación (altas o bajas) del área. Este programa no necesita cambiar los resistores dependiendo de las condiciones de iluminación. En su lugar, toma en consideración las condiciones de iluminación y ajusta la sensitividad en el software usando las variables average y difference.
Para que este programa funcione bien, tus fotoresistores deben responder de manera similar a condiciones semejantes de iluminación. Si los circuitos RC están severamente disparejos, tus medidas de Tabla 6-1 serán muy distintas bajo las mismas condiciones de iluminación. Puedes corregisr estas mediciones disparejas usando las técnicas discutidas en el Apéndice F: Balanceando Fotoresistores.

Este programa mide el averaje total de timeLeft y timeRight y los usa para establecer la variable difference entre las medidas timeLeft y timeRight que son necesarias para justificar el envío de un pulso. √ √ Introduce, guarda, y ejecuta RoamingTowardTheLight.bs2 Llévalo a varias áreas, déjalo navegar libremente, y verifica que puedes cambiar su curso al cubrir uno de sus cicuitors RC con fotoresistores, con una sombra generada por tu mano independientemente de las condiciones de iluminación.

Página 230 · Robótica con el Boe-Bot

También trata de colocar tu Boe-Bot en un cuarto que esté pobremente iluminado, pero que tenga una entrada de luz por una puerta de un cuarto adyacente brillante o de un pasillo. Observa si el Boe-Bot puede satisfactoriamente salir por la puerta.

' ' ' '

-----[ Titulo ]------------------------------------------------------------Robotica con el Boe-Bot - RoamingTowardTheLight.bs2 Boe-Bot navega libremente, y da vuelta alejandose de la obscuridad en busca de areas bien iluminadas. ' Directiva del Stamp. ' Directiva de PBASIC.

' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Program Running!"

' -----[ Variables ]---------------------------------------------------------' Declara variables para almacenar tiempos RC medidos de los fotoresitores ' izqquierdo y derecho. timeLeft timeRight average difference VAR VAR VAR VAR Word Word Word Word

' -----[ Inicializacion ]----------------------------------------------------FREQOUT 4, 2000, 3000 ' -----[ Rutina Principal ]--------------------------------------------------DO GOSUB Test_Fotoresistors ' Para fotoresistores disparejos, consulta Apendice F, quita el comentario ' para usar la proxima linea. ' timeLeft = (timeLeft */351)+7 ' Reemplaza 351 y 7 con tus propios valores. GOSUB Average_And_Difference GOSUB Navigate LOOP ' -----[ Subrutina - Test_Photoresistors ]-----------------------------------Test_Photoresistors: HIGH 6 PAUSE 3 RCTIME 6,1,timeLeft HIGH 3 ' Medida de tiempo RC izq.

' Medida de tiempo RC der.

Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 231

PAUSE 3 RCTIME 3,1,timeRight RETURN ' -----[ Subrutina – Averaje y Diferencia ]--------------------------------Average_And_Difference: average = timeRight + timeLeft / 2 difference = average / 6 RETURN ' -----[ Subrutina - Navegacion ]--------------------------------------------Navigate: ' Sombra significativamente mayor en detector izq., gira der. IF (timeLeft > timeRight + difference) THEN PULSOUT 13, 850 PULSOUT 12, 850 ' Sombra significativamente mayor en detector der., gira izq. ELSEIF (timeRight > timeLeft + difference) THEN PULSOUT 13, 650 PULSOUT 12, 650 ' Sombras en la misma vecindad de valores de intensidad en ambos detectores. ELSE PULSOUT 13, 850 PULSOUT 12, 650 ENDIF PAUSE 10 RETURN qué PAUSE 10 en vez de PAUSE 20? Porque la subrutina Test_Photoresistors tiene dos comandos PAUSE que añaden 6 ms más el tiempo extra que toma la ejecución de los comandos RCTIME. Ambos factores suman tiempo entre los pulsos enviados a los servos, así que el comando PAUSE en la subrutina Navigate debe ser reducido. Luego de un poco de ensayo y error, el comando PAUSE 10 pareció dar los mejores resultados para los servos bajo el rango más amplio de niveles ¿Por de luminosidad.

Tu Turno – Adjustando la Sensibilidad a las Diferencias en Iluminación

Ahora, la variable difference es la variable average dividida por 6. Puedes dividir average por un valor menor si quieres hacer al Boe-Bot menos sensible a las diferencias

Ejecuta el programa y verifica la abilidad del Boe-Bot’s para salir de un cuarto obscuro con cada valor en el denominador. 4. prueba dividir la variable average por los valores 3. He aquí como se miraría esta subrutina: . Una manera de resolver este problema es simplemente usando la variable difference en lugar de la variable average. y 9. 7. Nota que la única vez que la variable average es usada es para alamacenar temporalmente el valor del averaje. puedes reemplazar 6 (o el valor óptimo que hayas determinado) con la constante Denominator de esta manera: Average_And_Difference: average = timeRight + timeLeft / 2 difference = average / Denominator RETURN √ Haz los cambios que acaban de ser discutidos. y verifica que el programa todavía funciona correctamente. También puedes eliminar el uso de una variable en este programa. La variable difference es usada luego. Average_And_Difference: average = timeRight + timeLeft / 2 difference = average / 6 RETURN También puedes cambiar el valor del denominador a una constante como: Denominator CON 6 Entonces. luego es dividida por la constante Denominator y almacenada en la variable difference. pero la variable average no. y no tendrás que usar la variable average. 5. √ √ √ En vez del valor 6. en tu subrutina Average_And_Difference. Funcionará bien. Decide cuál de ellos es el valor óptimo.Página 232 · Robótica con el Boe-Bot en iluminación o dividir por un valor mayor si quieres hacer que el Boe-Bot sea más sensible a las diferencias de iluminación.

existe una mejor manera. .Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 233 Average_And_Difference: difference = timeRight + timeLeft / 2 difference = difference / Denominator RETURN Inclusivve. √ Deja la rutina Average_And_Difference así: Average_And_Difference: average = timeRight + timeLeft / 2 difference = average / Denominator RETURN √ Luego. haz el siguiente cambio en las declaraciones de variable: Figura 6-13: Modifica RoamingTowardTheLight. √ Verifica tu programa modificado y asegúrate que funcione apropiadamente. He aquí como crear un alias llamado difference para la variable average.bs2 para Alamacenar en RAM ' Codigo original average difference VAR VAR Word Word ' Codigo modificado para almacenar ' en RAM average difference VAR VAR Word average En realidad no necesitamos la variable average. difference VAR average Ahora. tanto average como difference se refierem a la misma variable en RAM de tamaño Word en RAM. si usamos el término average en la primera línea y el término difference en la segunda línea. pero el programa tiene más sentido a alguien quien quiere entenderlo.

Página 234 · Robótica con el Boe-Bot

RESUMEN
Este capítulo estuvo enfocado en medir diferencias de iluminación y programando al Boe-Bot para actuar de acuerdo a esas diferencias. Un par de fotoresistores de Sulfuro de Cadmio (CdS) fueron usados para medir las diferencias de luz visible. Los fotoresistores de CdS fueron conectados primero a resistores para forma divisores de voltaje, y el BASIC Stamp monitoreó el voltaje en la conexión entre el fotoresistor y el resistor fijo. Cuando este voltaje caía por debajo o aumentaba por encima de 1.4 V, el registro de entrada oara el pin de I/O conectado al circuito, almacenaba un 0 ó 1. El Boe-Bot fue programado para tomar decisiones usando estos valores binarios de una manera similar a los bigotes. La técnica de fotoresistor divisor funciona siempre y cuando los resistores adecuados sean escogidos, y también el nivel de luminosidad no varíe. Sin embargo, una manera más versátil de detectar los valores de luminosidad con el BASIC Stamp es usando los fotoresistores CdS en un circuito RC, cargando el capacitor, y luego midiendo el tiempo de caída. RC significa resistor capacitor, y el capacitor fue introducido en este capítulo junto con un circuito que hizo posible que el BASIC Stamp midiera el tiempo de decaimiento RC. Esto se hizo sencillamente con el BASIC Stamp usando el comando RCTIME, el cuál está diseñado específicamente para medir el tiempo de decaimiento RC y los tiempos de crecimiento (o incremento). Las constantes fueron introducida como una manera de substituir nombres con sentido en vez de números en un programa de PBASIC. Ajuste (escala) y promedio (averaje) también fueron introducidos. Ajuste fue usado para establecer un valor umbral para indicar si el rayo de luz de la linterna había sido detectado. También fue usado para determinar el valor del averaje de los niveles de luminosidad en el área, basándose en las medidas de tiempo de los dos fotoresistores. Esto fue usado para crear un umbral que automáticamente se ajustaba a las condiciones generales de luminosidad, eliminando la necesidad de cambiar los resistores con los cambios de iluminación.
Observa el Boe-Bot en Acción en el sitio www.parallax.com! Puedes observar al Boe-Bot resolviendo los Proyectos 1 y 2 del Capítulo 6 junto com otros clips de video robóticos, en la galería de video “Robo Video Gallery” (en inglés) bajo el menú “Robotics Menu” (en inglés) en el sitio www.parallax.com.

Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 235

Preguntas 1. ¿Cómo responde la resistencia de un fotoresistor a luz brillante y obscuridad? ¿Qué sucede cuando los niveles de luminosidad están entre brillante y obscuro? 2. ¿Un pin de I/O tiene algún efecto en un circuito cuando está establecido como entrada (input)? ¿Qué causa que el registro de entrada del pin de I/O almacene un 1 ó 0 cuando está establecido como entrada (input)? 3. ¿Qué quiere decir voltaje umbral? ¿Cuál es el voltaje umbral de un pin de I/O en el BASIC Stamp? 4. Refiriéndote a la Figura 6-4 en la página 203, ¿qué causa que Vo crezca por encima o caiga por debajo del voltaje umbral? ¿Qué hay con respecto al circuito que causa que Vo cambie de valor? 5. ¿Cómo difiere el programa ShadowGuidedBoeBot.bs2 del programa RoamingWithPhotoresistorDividers.bs2? ¿Cómo afecta esto al desempeño del Boe-Bot? 6. ¿Qué es una declaración de constante? ¿Qúe es lo que hace? ¿Cómo podrías usar una en tu programa? 7. ¿Cómo son evaluadas las expresiones matemáticas en PBASIC? 8. ¿En cuáles dos ejemplos de este capítulo se usó PBASIC para calcular un promedio? ¿Cuáles son las diferencias entre ellos? ¿Cómo se asemejan? Ejercicios 1. Calcula Vo para la Figura 6-4 en la página 203 si R es 10 kΩ. Repite para R = 30 kΩ. 2. Si Vo en la Figura 6-4 en la página 203 es 1.4 V, ¿cuál es el valor de R? Repite para Vo = 1 V y Vo = 3 V. 3. Asume que tienes tres valores varibales: firstValue, secondValue, y thirdValue. Escribe un comando que tome el promedio de estos tres valores en una variable llamada myAverage. Escribe un comando que guarde 7/8 del valor Escribe las del averaje en una variable llamada myScaledAverage. declaraciones de variable necesarias para hacer que tu comando pueda ser ejecutado en un programa, primero con myAverage y myScaledAverage como variables separadas, y luego con una de ellas siendo un alias de la otra. Proyectos 1. Con los fotoresistores de tu Boe-Bot mirando hacia abajo y al frente de él, desarrolla un programa que haga que tu Boe-Bot reconozca la diferencia entre negro y blanco. Encuentra una superficie extensa blanca, y coloca hojas de papel

Página 236 · Robótica con el Boe-Bot

negro sobre ella. Escribe un programa que haga que el Boe-Bot esquive las hojas de papel negro. Pista: Asegúrate de verificar y enteder lo que el Boe-Bot observa cuadno está enfocado en una hoja negra de papel y lo que observa cuando está enfocado en un fondo blanco. Usa los programas de ejemplo de las últimas tres actividades en este capítulo. El circuito RC de tiempo de decaimiento y los programas asociados, serán de mucha más ayuda para hacer que el programa funcione que las técnicas de fotoresistor divisor. También, asegúrate de que es curso con obstáculos se encuentra en un área con una iluminación uniforme. Luz brillante del sol entrando por las ventanas, y sombras originadas por espectadores, pueden hacer que la demostración no sea exitosa. 2. Si tienes éxito con el proyecto 1, experimenta restringiendo al Boe-Bot para que sólo pueda navegar libremente en un espacio delimitado por hojas de papel negro.

Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 237

Soluciones Q1. La resistencia es pequeña, unos pocos ohms, si la luz es brillante. La resistencia es grande, aproximadamente 50 kΩ, en obscuridad. Para niveles de luz entre brillante y obscuro, la resistencia estará entre valores de luz brillante y obscuridad. Q2. No. El pin de I/O sólo escucha silenciosamente sin ningún efecto sobre el circuito. El valor del voltaje aplicado causa que el registro de entrada cambie lo que almacena. Si el voltaje es menor a 1.4 voltios almacena un 0. De lo contrario, guarda un 1. Q3. El voltaje umbral es un valor que por encima de él se considera como 1 lógico, y por debajo se considera como 0 lógico. El voltaje umbral del módulo BASIC Stamp modules es de 1.4 voltios. Q4. El valor de Vo es determinado por la relación entre los resitores. Vo cambia su valor porque el resistor, R, cambia de valor. R es un fotoresistor que cambia su valor dependiendo del nivel de iluminación que recae sobre él. Q5. El chequea los sensores entre cada pulso, en vez de tener maniobras fijas de muchos pulsos. Esto hace que el Boe-Bot sea muy responsivo. Q6. Una declaración de constante le dice al compilador el valor de tu constante. Por ejemplo, MaxTemp CON 212 es una declaración de una constante . Una declaración de una constante le da un nombre significativo a un número o valor usado en un programa. Para usar una constante, escribe su nombre en cualquier parte del programa donde de su valor es necesario. Q7. Las expresiones son evaluadas de izquierda a derecha. Esto es diferente a evaluaciones algebráicas normales, donde la multiplicación y división son evaluadas antes de la suma y la resta. Q8. En el programa FlashLightControlledBoeBot.bs2, los promedios fueron usados para calcular los umbrales de luminosidad. En el programa RoamingTowardTheLight.bs2, un promedio de las medidas izquierda y derecha fue calculado. Los dos programas difieren en que el primero es calculado estáticamente en una declaración constante, mientras que el segundo es calculado dinámicamente mientras el programa es ejecutado. Se asemejan debido a que ambos suman dos valores y dividen por 2.

Página 238 · Robótica con el Boe-Bot

E1.
a) R = 10 kOhm Vo = 5V * (2000 / (2000 + R)) = 5 * (2000 / (2000 + 10000) = 5 * (2000 / (12000) = 5 * ( 2 / 12 ) =5*(1/6) = 5 * 0.17 = 0.83 Volts Si R = 10 kOhm, Vo = 0.83 V b) R = 30 kOhm Vo = 5V * (2000 / (2000 + R)) = 5 * (2000 / (2000 + 30000) = 5 * (2000 / (32000) = 5 * ( 2 / 32 ) = 5 8 ( 1 / 16 ) = 5 * 0.06 = 0.31 Volts Si R = 30 kOhm, Vo = 0.31 V

E2.
a) Vo = 1.4 V R = (5 * (2000/Vo)) – 2000 = (5 * (2000/1.4)) – 2000 = (5 * 1428.57) – 2000 = 7142.86 – 2000 = 5142.86 = 5143 Ohm Cuando Vo = 1.4V, R = 5143 Ω c) Vo = 3.0 V R = (5 * (2000/3.0)) – 2000 = (5 * 666.67) – 2000 = 3333.33 – 2000 = 1333.33 = 1333 Ohm Cuando Vo = 1.4V, R = 1333 Ω b) Vo = 1.0 V R = (5 * (2000/1)) – 2000 = (5 * 2000) – 2000 = (10000) – 2000 = 8000 = 8 kOhm Cuando Vo = 1.4V, R = 8 kΩ

E3. El promedio de estos tres valores en una variable llamada myAverage, almacenando 7/8 en myScaledAvereage:
myAverage = firstValue + secondValue + thirdValue / 3 myScaledAverage = myAverage * 7 / 8

Declaraciones como variables separadas:
myAverage VAR myScaledAverage VAR Word Word

Declaraciones usando alias:
myAverage VAR myScaledAverage VAR Word myAverage

Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 239

P1. El primer paso es usar el programa "TestBothPhotoresistors.bs2" y determinar los valores para la superficie blanca y el papel negro. Similarmente al programa "FlashlightControlledBoeBot.bs2", estos valores pueden ser codificados como constantes. Luego, las sentencias IF…THEN pueden ser usadas para determinar si los valores están por encima o por debajo del promedio de las lecturas. (Para el Boe-Bot del autor, no fue necesario ningún ajuste). He aquí un programa solución que hace que el Boe-Bot reconozca la diferencia entre superficies negras y blancas.
' -----[ Titulo ]--------------------------------------------------------' Robotica con el Boe-Bot - TestBlackWhiteLogic.bs2 ' Calcula si el Boe-Bot esta sobre superficie negra o blanca y lo muestra. ' {$STAMP BS2} ' {$PBASIC 2.5} ' Directiva del Stamp ' Directiva de PBASIC.

' -----[ Constantes ]----------------------------------------------------LeftWhite RightWhite LeftBlack RightBlack LeftAvg RightAvg CON CON CON CON CON CON 16 33 26 45 LeftWhite + LeftBlack / 2 RightWhite + RightBlack / 2

' -----[ Variables ]-----------------------------------------------------timeLeft timeRight VAR VAR Word Word ' Medida fotoresistor izq. ' Medida fotoresistor der.

' -----[ Rutina Principal ]----------------------------------------------DO GOSUB Test_Photoresistors IF (timeLeft > LeftAvg) THEN DEBUG CRSRXY, 0, 0, "Left Negro " ELSE DEBUG CRSRXY, 0, 0, "Left White " ENDIF IF (timeRight > RightAvg) THEN DEBUG CRSRXY, 13, 0, "Right Negro", CR ELSE DEBUG CRSRXY, 13, 0, "Right White", CR ENDIF LOOP ' -----[ Subrutina - Test_Photoresistors ]--------------------------------

Página 240 · Robótica con el Boe-Bot

Test_Photoresistors: HIGH 6 PAUSE 3 RCTIME 6,1,timeLeft HIGH 3 PAUSE 3 RCTIME 3,1,timeRight RETURN

' Medida tiempo RC izq. ' Medida tiempo RC der.

Para desarrollar un programa que haga que el Boe-Bot esquive las hojas de papel negro, los pasos de navegación y decisión requeridos son muy similares a los usados en los programas "FlashlightControlledBoeBot.bs2" y "RoamingTowardTheLight.bs2". Una solución de ejemplo se muestra a continuación:
' -----[ Titulo ]-----------------------------------------------------' Robotica con el Boe-Bot - AvoidBlackSpots.bs2 ' Boe-Bot esquiva piezas de papel negras. ' {$STAMP BS2} ' {$PBASIC 2.5} ' Directiva del Stamp ' Directiva de PBASIC.

' -----[ Constantes ]-------------------------------------------------LeftWhite CON 16 RightWhite CON 33 LeftBlack CON 26 RightBlack CON 45 LeftAvg CON LeftWhite + LeftBlack / 2 RightAvg CON RightWhite + RightBlack / 2 ' -----[ Variables ]--------------------------------------------------timeLeft VAR Word ' Medidad fotoresistor izq. timeRight VAR Word ' Medidad fotoresistor der. ' -----[ Inicializacion ]---------------------------------------------FREQOUT 4, 2000, 3000 ' -----[ Rutina Principal ]-------------------------------------------DO GOSUB Test_Photoresistors GOSUB Navigate LOOP ' -----[ Subrutinas ]-------------------------------------------------Test_Photoresistors: HIGH 6 ' Medida de tiempo RC izq. PAUSE 3 RCTIME 6,1,timeLeft

3300 ' Ninguno detecta papel negro. asegúrate de que es curso con obstáculos se encuentra en un área con una iluminación uniforme. 650 PULSOUT 12. avanza enviando un solo pulso ELSE PULSOUT 13. Luz brillante del sol entrando por las ventanas.com. Navigate: ' Ambos detectan papel negro. 2200 ' Der.1. Un clip de video del Boe-Bot haciendo esto puede ser visto en el sitio www. El programa solución "AvoidBlackSpots. 650 FREQOUT 4. . 20. funciona muy bien para mantener al Boe-Bot confinado en un espacio delimitado por hojas negras. detecta papel negro.650 PAUSE 20 ENDIF RETURN Pistas: Asegúrate de probar y entender lo que el Boe-Bot observa cuando está enfocado en una hoja de papel negro y lo que observa cuando está enfocado en un fondo blanco. Usa los programas de ejemplo de las últimas tres actividades en este capítulo.850 PULSOUT 12.. También. 650 PULSOUT 12. El circuito RC de tiempo de decaimiento y los programas asociados. y sombras originadas por espectadores.Capítulo 6: Navegación Sensible a la Luz con Fotoresitores · Page 241 HIGH 3 PAUSE 3 RCTIME 3.timeRight RETURN ' Medida de tiempo RC der. gira hacia la der. Bajo el menú “Robotics menu”. busca la galería de videos “Robo Video Gallery”.parallax. detecta papel negro. emite sonido ELSEIF (timeRight > RightAvg) THEN PULSOUT 13. retrocede y emite sonido IF (timeLeft > LeftAvg) AND (timeRight > RightAvg) THEN PULSOUT 13. 850 FREQOUT 4. emite sonido ELSEIF (timeLeft > LeftAvg) THEN PULSOUT 13. pueden hacer que la demostración no sea exitosa. arriba. 850 PULSOUT 12. gira hacia la izq.bs2". 20. 20. 850 FREQOUT 4. serán de mucha más ayuda para hacer que el programa funcione que las técnicas de fotoresistor divisor.. 4400 ' Hace Bip en vez de pausa ' Izq. P2.

Página 242 · Robótica con el Boe-Bot .

Organizadores personales mandan data a las computadoras de escritorio a través de rayos. La Tabla 7-1 muestra las longitudes de ondas para colores comunes a lo largo del espectro ifrarrojo. La Tabla 7-1 muestra las longitudes de onda para colores comunes junto con el espectro infrarrojo. así como en el caso de los controles remotos que nos dejan surfear por los canales. Los lentes de visión-nocturna y los sensores de temperatura IR usan longitudes de ondas de lejano a infrarrojo. Gracias a la proliferación de controles remotos infrarrojos (IR). entre 2000-10. USANDO LUCES DELANTERAS INFRARROJAS PARA VER LA VIA Detectar objetos sin los bigotes no requiere nada tan sofisticado como visión de máquina (Machine Vision). Con unas cuantas partes de poco costo y ampliamente disponibles. dependiendo de la aplicación. Tabla 7-1: Colores y Longitudes de Onda Aproximadas Color Violeta Azul Verde Amarillo Naranja Longitud de Onda 400 470 565 590 630 Color Rojo Infrarrojo Cercano Infrarrojo Infrarrojo Lejano Longitud de Onda 780 800-1000 1000-2000 2000-10. Nuestro LED IR y detector funcionan a 980 nm (nanómetros) lo cual es considerado cercano a infrarrojo. o una longitud de onda más larga que la luz roja.000 nm. dicho rango se encuentra más abajo del espectro de luz visible.000 . así que Infra-rojo es luz (o radiación elctromagnética) que tiene una frecuencia más baja. el BASIC Stamp puede también recibir señales de luz infraroja. emisores y detectores IR están abiertamente disponibles y son poco costosos. Un sistema incluso más simple es usar luz infrarroja para iluminar el camino del robot y determinar cuando la luz es reflejada de un objeto. es decir. Muchos controles remotos y PDA’s usan señales en el rango infrarojo de frecuencia para comunicar. Infrarrojo: Infra quiere decir por debajo.Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 243 Capítulo 7: Navegando con Luces Delanteras Infrarrojas Los productos más populares actualmente parecen tener una cosa en común: comunicación inalámbrica (wireless). Algunos robots usan RADAR o SONAR (a veces conocidos como SODAR cuando usan aire en vez de agua).

. es completamente ignorda por los detectores IR.Página 244 · Robótica con el Boe-Bot Luces Delanteras Infrarrojas El sistema de detección de objetos con luz infrarroja que construiremos en el Boe-Bot se asemeja a las luces delanteras de un carro de varias maneras. dependiendo de la fuente de alimentación principal y la región. y la luz interna tiende a prenderse y apagarse de 100 a 120 Hz. El Boe-Bot usa LEDs infrarrojos para las luces delanteras como lo muestra la Figura 7-1. El detector infrarojo también tiene un filtro electrónico que sólo deja pasar señales alrededor de 38. Los detectores infrarrojos envían señales indicando si han detectado o no la luz infrarroja reflejado de algún objeto. La luz del Sol hace interferencia (0 Hz). Ya que 120 Hz está por fuera de la banda de frecuencia de paso para el filtro electrónico a 38. tus ojos detectan dicho obstáculo y tu cerebro los procesa y hace que tu cuerpo conduzca el carro de manera apropiada. basado en esta entrada de sensor. Los ojos del Boe-Bot son los detectores infrarrojos. el BASIC Stamp. y en algunos casos. Cuando las luces delanteras de un carro reflejan de un obstáculo. Esto previene interferencia IR de fuentes comunes como luz del sol y luz interna. la luz infrarroja refleja de un objeto y rebota de regreso en la dirección del Boe-Bot. El cerebro del Boe-Bot. Ellos emiten luz infrarroja.5 kHz.5 kHz. En otras palabras el detector solamente está buscando por infrarrojo que está prendiéndose y apagándose 38. toma decisiones y opera los servomotores. con la excepción del rango infrarrojo (de 980 nm) que queremos detectar con su fotodiodo interno perceptor. Figura 7-1 Detección de Objeto con Luces Delanteras IR Los detectores IR tienen filtros ópticos ya incorporados que dejan entrar muy poca luz.500 veces por segundo.

Asegura la parte más pequeña del cobertor sobre la cubierta plástica del LED y sobre la parte más grande del ensamble. Lista de Partes: 1 2 3 (2) Detectores Infrarrojos (2) LEDs IR (cubierta transparente) (2) LED IR ensambles cobertores (2) Resistores . Estas luces pueden causar problemas con las luces delanteras infrarrojas de tu Boe-Bot. . construirás y probarás los pares infrarrojos transmisor/detector. Asegúrate que el LED quede asegurado en la parte más grande del cobertor. Una de las cosas que harás en este capítulo es desarrollar un “husmeador” de frecuencias de interferencia que puedes usar para probar las luces fluorescentes alrededor de las pistas de tu Boe-Bot.220 Ω (rojo-rojo-marrón) (2) Resistores – 1 kΩ (marrón-negro-rojo) 1 2 3 + Pata larga Longer lead + Figura 7-2 Nuevas Partes Usadas en este Capítulo detector IR (arriba) IR LED (medio) Flattened Borde liso edge - Ensamblaje decobertores del LED IR (abajo) Construyendo las Luces Delanteras IR √ √ √ Inserta los LED infrarrojos en los cobertores como lo indica la Figura 7-3.Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 245 Algunas luces fluorescenetes generan señales que pueden ser detectadas con los detectores IR. ACTIVIDAD #1: CONSTRUYENDO Y PROBANDO LOS PARES IR En esta actividad.

Página 246 · Robótica con el Boe-Bot IR LED queda El LEDwill snap in. Construye el circuito mostrado en el dibujo esquemático en la Figura 7-4. Vdd P2 1 kΩ P9 220 Ω Vss P8 1 kΩ IR LED P0 220 Ω Vss Vss Vss Vdd IR LED Figura 7-4 Pares IR Izquierdo y Derecho Par IR Izquierdo Par IR Derecho . asegurado + Figura 7-3 Asegurando el LED IR en el Ensamble - Un par IR (LED y detector IR) es montado en cada esquina de la protoboard. La Figura 7-4 muestra las luces delanteras IR en un dibujo esquemático y la Figura 7-5 muestra el circuito como un diagrama de conexión. √ √ Desconecta la fuente de alimentación de tu plaqueta y servos. usando el diagrama de conexión para tu plaqueta en la Figura 7-5 como una referencia para la colocación de partes.

la cual tiende a ser entre 20 Hz to 20 kHz. Si la luz . usarás el comando FREQOUT 8. Board of Education Rev C © 2000-2003 HomeWork Board Probando los Pares IR Usando el Truco FREQOUT El comando FREQOUT fue diseñado principalmente para sintetizar tonos de audio. En esta actividad. 38500 para enviar una armónica de 38. El circuito LED infrarrojo conectado a P8 difusionará esta armónica.5 kHz que dure 1 ms a P8. 1. el ánodo de cada LED IR está conectado a un resistor de 1 kΩ.stampsinclass.com X4 X5 Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss Figura 7-5 Diagramas de Conexión para Circuitos Emisor y Receptor Infrarrojos anode Patas de leads Anodos anode Patas leads de Anodos + + Board of Education (izquierda) y HomeWork Board (derecha).com www. En la Figura 7-5. To Servos Hacia los servos To Hacia Servos los servos 15 14 Vdd 13 12 Red Black (916) 624-8333 Rev B www. La pata del cátodo se enchufa en la misma fila de la protoboard que el pin central del detector IR. y esa fila se conecta a Vss con un cable de conexión.Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 247 Observa los ánodos y cátodos de tu LED IR! Recuerda que la pata del ánodo es más larga por convención en un LED IR. Estos tonos están fuera de la habilidad humana de detectar sonido. El rango actual del comando FREQOUT es de 32768 Hz. La pata del cátodo es la que está cerca del borde liso de la cubierta. Un fenómeno interesante de tonos digitalmente sintetizados es que ellos contienen señales llamadas armónicas. Las armónicaas generadas por el comando FREQOUT comienzan a 32769 Hz e incrementan. Tú puedes controlar directamente estas armónicas usando los argumentos Freq1 por encima de 32768. Una armónica es una tono de frecuencia más alto que está mezaclado con el tono que quieres oír.parallax. pero también recuerda que necesitas chequear la cubierta plástica del LED para asegurarte.

5 kHz a un LED IR conectado a P8. 2000.5 kHz. en la vecindad de 62. Aquí está cómo calcular la frecuencia armónica dada una frecuencia fundamental y viceversa. 38500 irDetectLeft = IN9 La salida del estado del detector IR cuando no ve ninguna señal IR.5 kHz.Página 248 · Robótica con el Boe-Bot infrarroja es reflejada de regreso al Boe-Bot por un objeto en su trayecto. la frecuencia fundamental es 3000 Hz. así que es esencial guardar la salida del detector IR en una variable inmediatamente después de enviar el comando FREQOUT. La ecuación para la armónica es: frecuencia armónica = 65536 – Freq1. y luego guarda la salida del detector IR. el cual está conectado a P9. el detector infrarrojo enviará una señal al BASIC Stamp para dejarle saber que la luz infrarroja reflejada fue detectada. 1. La ecuación para la frecuencia fundamental es: frecuencia fundamental = 65536 – Freq1. cuando usas el comando FREQOUT 4. La salida del detector IR sólo se mantiene baja por una fracción de milisegundo luego de que el comando FREQOUT termina de enviar la armónica. es alta. Freq1 > 32768 La clave para hacer funcionar cada par LED/detector IR es enviar 1 ms de armónica FREQOUT a 38. El valor guardado por la variable puede entonces ser mostrado en el Debug Terminal o usado para decisiones de navegación por el Boe-Bot. Aquí está un ejemplo que envía la señal de 38. en una variable tamaño bit llamada irDetectLeft. Cuando el detector IR ve la armónica de 38500 Hz reflejada por un objeto. inmediatamente guardar la salida del detector IR en una variable. FREQOUT 8. su salida es baja. Freq1 <= 32678 Cada vez que usas el comando FREQOUT con un argumento Freq1 por encima de 32768 para enviar una armónica. pero también hay un sonido armónico que lo acompaña. Ese es el sonido buscado. contiene también ese tono (armónica) escondido. y luego. Cada vez que usas el comando FREQOUT para enviar un tono en este rango. contiene un tono fundamental. Por ejemplo. . Esta armónica es a una frecuencia mucho más alta que el oído humano no puede detectar. 3000. Comando FREQOUT – Harmónicas Fundamentales La frecuencia fundamental es el valor del argumento Freq1 cuando es igual o menor a 32768.

trata de seguir los pasos en la sección de Resolución de Problemas. muestra un 1. Introduce. como lo muestra la Figura 7-1 en la página 244. Coloca un objeto. avanza a la sección Tu Turno que sigue al programa de ejemplo.5} irDetectLeft DO FREQOUT 8.TestLeftIrPair. 1. guarda. ' Robotica con el Boe-Bot . 38500 irDetectLeft = IN9 DEBUG HOME. Si el Debug Terminal muestra los valores anticipados para objeto no detectado (1) y objeto detectado (0). y ejecuta TestLeftIrPair. ' {$STAMP BS2} ' {$PBASIC 2.Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 249 Programa de Ejemplo: TestLeftIrPair. "irDetectLeft = ". Verifica que cuando colocas un objeto en frente del par IR el Debug Terminal muestra un 0. Si el Debug Terminal no muestra los valores corectos. LED IR conectado a P8 y ' detectores conectados a P9. y cuando quitas el objeto del frente del par IR.bs2 ' Prueba circuitos IR de deteccion de objetos. . porque vas a usar el Debug Terminal para probar tu dispositivo IR.bs2. BIN1 irDetectLeft PAUSE 100 LOOP VAR Bit √ √ √ √ √ Deja el Boe-Bot conectado al cable serial.bs2 √ √ Reconecta la fuente de alimentación a tu plaqueta. como tu mano o una hoja de papel a una pulgada del par IR izquierdo.

construirás y probarás indicadores LEDs que te dirán si un objeto es detectado sin la ayuda del Debug Terminal. Necesitarás hacer esto cuatro veces en el Programa. Si mides 1 la mayor parte del tiempo cuando no hay ningún objeto en frente del Boe-Bot. Si siempre estás obteniendo 0.bs2. ACTIVIDAD #2: PRUEBA DE CAMPO PARA DETECCION DE OBJETO E INTERFERENCIA INFRARROJA En esta actividad. un 0. Mueve el Boe-Bot para que los LED y detectores IR no puedan ser reflejados por ningún objeto cercano. Apaga cualquier fuente de luz fluorescente cercana y repite tus pruebas. Esto es útil si no estás cerca de una PC o Laptop. y ocasionalmente. Cuando integras la detección de objetos con IR a la navegación. y si necesitas resolver algún problema con tus circuitos de detector IR.Página 250 · Robótica con el Boe-Bot Resolución de Problemas Si el Debug Terminal no muestra los valores corretos. También escribirás un programa para “husmear” alguna interferencia infrarroja proveniente de las luces fluorescentes. 38. esta interferencia puede hacer que el Boe-Bot ¡se comporte alocadamente! . La superficie de la mesa en frente del Boe-Bot es una culpable típica. Cambia el argumento Pin del comando FREQOUT de 8 a 2. Algunas luces fluorescentes envían señales que se asemejan a las enviadas por tus LEDs infrarojos.5 kHz. Repite los pasos de prueba en esta actividad para el par IR derecho. Algunos de estos dispositivos operan en el mismo rango de frecuencia de tu detector IR. hasta cuando no hay ningún objeto al frente del Boe-Bot. Cambia la sentencia DEBUG.bs2 como TestRightIrPair. Cambia el registro de entrada monitoreado por la variable irDetectRight de IN9 a IN0. el título y los comentarios para referirse al par IR derecho. pero aparece por un breve instante. Tu Turno √ √ √ √ √ √ Guarda TestLeftIrPair. El dispositivo dentro de la luz fluorescente que controla el voltaje de la lámpara es llamdo “ballast” (en inglés). revisa el circuito y el programa en busc de algún error. puede ser que tengas interferencia dde una luz fluorescente cercana. con el circuito LED IR conectado a P2 y el detector conectado a P0. puede haber un objeto cercano reflejando la luz infrarroja. Cambia el nombre de la variable de irDetectLeft a irDetectRight. lo cual causa que la lámpara emita una señal a esta frecuencia.

Lista de Partes: (2) LEDs Rojos (2) Resistores – 220 Ω (rojo-rojo-marrón) √ √ Desconecta la fuente de alimentación de tu plaqueta y servos.stampsinclass.).Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 251 Reconstruyendo los Circuitos Indicadores con LED Estos son los mismos circuitos indicadores que usaste con los bigotes.parallax. P1 220 Ω Red LED 220 Ω Red LED P10 Figura 7-6 Indicadores LEDs Izquierdo y Derecho Vss IR Par Izquierdo To Servos 15 14 Vdd 13 12 Vss IR Par Derecho To Servos Anode leads Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Rojo Negro Anode leads (916) 624-8333 Rev B www.com Vdd Vin Vss X4 Vin X5 Vss X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Figura 7-7 Diagrama de Conexión para Indicadores LED Rojos con Circuito IR de Detección de Objetos Board of Education (izq. Construye el circuito mostrado en la Figura 7-6 usando la Figura 7-7 como referencia.) y HomeWork Board (der.com www. + + Board of Education Rev C © 2000-2003 HomeWork Board .

.bs2 ' Verifica Circuitos IR de Deteccion de objetos. 3000 DEBUG CLS.TestIrPairsAndIndicators. chequea tus conexiones y tu programa.Página 252 · Robótica con el Boe-Bot Probando el Sistema Existen unos cuantos componentes envueltos en este sistema.5} ' Directiva del Stamp.-----" ' -----[ Rutina Principal ]--------------------------------------------------DO FREQOUT 8. Verifica que la bocina emite un tono claro y audible mientras el Debug Terminal muestra “Testing piezobocina…”. "Left Right". ' -----[ Variables ]---------------------------------------------------------irDetectLeft irDetectRight VAR VAR Bit Bit ' -----[ Inicializacion ]----------------------------------------------------DEBUG "Testing piezobocina. guarda. Programa de Ejemplo – TestIrPairsAndIndicators. lo que incrementa la posibilidad de un error de conexión.. Verifica que el LED próximo a cada detector emite luz cuando el detector detecta un objeto. "IR DETECTORS". "----. Usa el Debug Terminal para verificar que el BASIC Stamp todavía recibe un cero de cada detector IR cuando un objeto es colocado en su frente. 2000. Puedes usar este programa para verificar que todos los circuitos están funcionando antes de desconectar al Boe-Bot de su cable serial para probar con otros objetos. Si uno o ambos LEDs parecen no funcionar. ' {$STAMP BS2} ' {$PBASIC 2. Por ello es importante tener un programa de verificación que te muestre lo que los detectores infrarojos estás percibiendo. 1. CR. 38500 .bs2 √ √ √ √ √ Reconecta la fuente de alimentación a tu plaqueta. Introduce. CR.bs2. y ejecuta TestIrPairsAndIndicators. ' Robotica con el Boe-Bot ." FREQOUT 4. ' Directiva de PBASIC.

Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 253 irDetectLeft = IN9 FREQOUT 2. Prueba el rango de detección de objetos de coloración distinta. ¿Qué color es detectado al rango más lejano? ¿Qué color es detectado al rango más cercano? Husmeando Interferencia IR Si te has dado cuenta que tu Boe-Bot te deja saber que detectó algo a pesar de que nada estaba en su rango. puede significar que alguna luz cercana está generando cierta luz IR a una frecuencia cercana a 38. . 3. BIN1 irDetectRight PAUSE 100 LOOP Tu Turno – Pruebas Remotas y Pruebas de Rango Puedes usar ahora tus detectores LED para probar los detectores IR de tu Boe-Bot con objetos que de otra manera no podrían estar en el rango de alcance del cable serial de la computadora. 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. √ √ Desconecta tu Boe-Bot del cable serial. 3. La última cosa que alguien quisiera. y colócalo al frente de una variedad de objetos y prueba el rango de los detectores IR. puede ser que tus sistemas infrarrojos terminen desempeñándose de una manera pobre. BIN1 irDetectLeft.5 kHz. 9. 2. 1. así que asegúrate de revisar previamente con un “husmeador” de interferencia IR cualquier área de demostración posible. Si tratas de hacer que el Boe-Bot participe en un concurso o haga una demostración bajo estas condiciones de iluminación. es ver que tu robot no se comporta como debe durante una demostración pública. CRSRXY.

guarda. Puedes hacer esto con un Boe-Bot separado ejecutando TestIrPairsAndIndicators.. ' Robotics with the Boe-Bot – IrInterferenceSniffer. reproductores CD/DVD. sólo usa un control remoto de mano para TV. y proyectores usan los mismos detectores IR que tienes en tu Boe-Bot. VCRs.bs2 ' Prueba luces fluorescentes. o proyector. Si no tienes un segundo Boe-Bot.5 kHz IR. Similarmente. Simplemente apunta el control remoto al Boe-Bot y presiona un botón.Página 254 · Robótica con el Boe-Bot El concepto tras este programa es simple. y otras fuentes ' de interferencia IR de frecuencia 38. sólo monitorea a ver si alguna señal IR es detectada. Puedes usar un control remoto de mano de casi cualquier aparato electrónico para generar interferencia IR. Si una señal IR es detectada.bs2. y ejecuta IrInterferenceSniffer. reproductor CD/DVD. DEBUG "IR interference not detected. sabes que tu husmeador de IR funciona. 4000 LOW 1 LOW 10 PAUSE 20 NEXT ENDIF LOOP . CR FOR counter = 1 TO 5 HIGH 1 HIGH 10 FREQOUT 4.". Si el Boe-Bot responde sonando la alarma. conroles remotos infrarrojos. ' {$STAMP BS2} ' {$PBASIC 2.. ' Directiva de PBASIC. 50. Prueba para asegurarte que el Boe-Bot emite la alarma cuando detecta interferencia infrarroja. Programa de Ejemplo – IrInterferenceSniffer. VCR. no transmite ninguna señal IR a través de los LEDs IR. suena una alarma a través de la bocina piezoeléctrica. yet. TVs.5} counter VAR Nib ' Directiva del Stamp. VCR. los controles que usas para manejar estos dispositivos usan el mismo tipo de LED IR que está en tu Boe-Bot para transmitir mensajes al detector IR en tu TV. etc.bs2. CR DO IF (IN0 = 0) OR (IN9 = 0) THEN DEBUG "IR Interference detected!!!".bs2 √ √ Introduce. reproductor CD/DVD.

y apúntalo hacia cualquier luz fluorescente cerca de donde planeas operar. también puede incrementar su rango de detección. y ejecuta P1LedHigh. Programa de Ejemplo – P1LedHigh.bs2 √ √ Introduce. ACTIVIDAD #3: AJUSTES DEL RANGO DE DETECCION INFRARROJA Puede que hayas visto que luces más brillantes de un carro (o una linterna más brillante) pueden ser usadas para ver objetos más lejos cuando está obscuro. En esta actividad. usemos uno de los LEDs rojos para “ver” la diferencia que un resistor hace en el brillo de un LED.bs2 para asegurarte que cualquier área donde estás usando al Boe-Bot está libre de interferencia infrarroja. Ejecuta el programa y verifica que el LED conectado en el circuito a P1 emite luz. Lista de Partes: Vas a necesitar unas partes extra para esta actividad.bs2. examinarás el efecto de distintos valores de resistencia tanto con los LEDs rojos como los infrarrojos. Resistiendo menos la corriente eléctrica. . Siempre usa este IrInterferenceSniffer. Todo lo que necesitamos para probar el LED es un programa que envíe una señal alta al LED. (2) (2) (2) (2) Resistores – 470 Ω (amarillo-violeta-marrón) Resistores – 220 Ω (rojo-rojo-marrón) Resistores – 2 kΩ (rojo-negro-rojo) Resistores – 4. un resistor más pequeño permite mayor flujo de corriente a través de un LED. Especialmente si obtienes alarmas frecuentes. guarda. Haciendo que los IR LED del Boe-Bot sean más brillantes. apaga las luces fluorescentes antes de tratar de usar la detección IR de objetos bajo ellas.Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 255 Tu Turno – Probando para Luces Fluorescentes que Interfieran √ Desconecta tu Boe-Bot de su cable serial.7 kΩ (amarillo-violeta-rojo) Resistencia en Series y Brillo del LED Primero.

P1LedHigh. 470 ohm. ' {$STAMP BS2} ' {$PBASIC 2. Repite para un resistor de 2 kΩ. Observa cuán brillante esta el LED. Explica en tus propias palabras la relación entre el brillo de LED y la resistencia en serie. Resistencia en Serie y Rango de Detección IR Sabemos que menor resistencia en serie hace que un LED brille más.bs2 (de la página 252). Recuerda también que el mismo programa correrá nuevamente cuando reconectes la fuente de alimentación. Reemplaza el resistor de 220 Ω conectado a P1 y al cátodo del LED derecho con un resistor de 470 Ω. Reemplaza el resistor de 4. Tu Turno – Probando el Brillo de los LEDs Recuerda desconectar la fuente de alimentación antes de cambiar un circuito. √ √ √ √ √ √ √ Observa cuán brillante está el LED en el circuito conectado a P1 con el resistor de 220 Ω. así que puedes retomar justo donde terminaste con cada prueba.bs2 ' Haz que P1 sea alto para probar la luminosidad de LED con cada resistor de ' valor: 220 ohm . Una hipótesis razonable sería que LEDs IR más brillantes permiten detectar obstáculos más lejanos. ya que END pondría al BASIC Stamp en modo de alimentación baja. Verifica que ambos detectores funcionan adecuadamente.7 kΩ con el resistor de 220 Ω antes de continuar con la próxima porción de esta actividad.7 kΩ. 1 k ohm.5} DEBUG "Program Running!" HIGH 1 STOP El comando STOP es usado aquí en vez de END. .Página 256 · Robótica con el Boe-Bot ' Robotica con el Boe-Bot . Repite una vez más con un resistor de 4. √ √ Abre y ejecuta TestIrPairsAndIndicators.

Repite con resistores de 2 kΩ. Tabla 7-2: Distancia de Detección de Distancia vs. cuando algún objeto es detectado su salida es baja. Determina la distancia más larga a la cual la misma hoja de papel es detectada y guarda tu data. Además. antes de proseguir. Repite con resistores de 220 Ω.Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 257 Tu Turno – Probando el Rango de LED IR √ √ √ √ √ √ Con una regla. En esta actividad.7 kΩ. Reemplaza los resistores de 1 kΩ que conectan a P2 y P8 a los ánodos de los IR LEDs con resistores de 4. regresa tus pares IR a su configuración original (con resistores de 1 kΩ en serie con cada LED IR). asegúrate de verificar este último cambio con TestIrPairsAndIndicators. ACTIVIDAD #4: DETECCION Y EVASION DE OBJETOS Un aspecto interesante acerca de los detectores IR es que sus salidas son semejantes a los bigotes. .bs2 de la página 184 es modificado para que funcione con detectores IR. Encierra una en círculo: ( in / cm ) √ √ Antes de proseguir con la próxima actividad. la salida es alta. Resistencia Resistencia (Ω) en Serie con LED IR 4700 2000 1000 470 220 Máxima Distancia de Detección. Repite con resistores de 470 Ω. RoamingWithWhiskers. usando los resistores de 1 kΩ . y guarda tus data en la Tabla 7-2. Cuando ningún obstáculo es detectado.bs2 para verificar que ambos pares LED/detector IR funcionan adecuadamente. mide la distancia más larga que pueda ser detectada con el LED IR colocando una hoja de papel en frente de él.

Reconecta la fuente de alimentación a tu plaqueta y servos.Página 258 · Robótica con el Boe-Bot Convirtiendo el Programa de Bigotes para Detección/Evasión de Objetos con IR Este próximo programa de ejemplo comenzó como RoamingWithWhiskers.bs2 Modifícalo de tal manera que sea igual al programa abajo. 1.bs2 √ √ √ √ √ Abre RoamingWithWhiskers. IF (irDetectLeft = 0) AND (irDetectRight = 0) THEN GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left ELSEIF (irDetectLeft = 0) THEN GOSUB Back_Up GOSUB Turn_Right ELSEIF (irDetectRight = 0) THEN GOSUB Back_Up GOSUB Turn_Left ELSE GOSUB Forward_Pulse ENDIF Programa de Ejemplo – RoamingWithIr. aparte del hecho que no hay ningún contacto requerido. Aparte de ajustar el nombre y la descripción. irDetectLeft VAR irDetectRight VAR Bit Bit Una rutina fue agregada también para leer los pares IR. .bs2. FREQOUT 8. dos variables de tamaño bit fueron añadidas para guardar los estados de los detector IRes. Verifica que. Guárdalo y ejecútalo.bs2. se comporta como RoamingWithWhiskers. 38500 irDetectLeft = IN9 Las sentencias IF…THEN fueron modificadas para que observen las variables que guardan las detecciones de los pares IR en vez de las entradas de los bigotes.

5} DEBUG "Program Running!" ' -----[ Variables ]---------------------------------------------------------irDetectLeft VAR irDetectRight VAR pulseCount VAR Bit Bit Byte ' Directiva del Stamp. no detects GOSUB Forward_Pulse ' Apply a forward pulse ENDIF ' and check again LOOP ' -----[ Subroutines ]-------------------------------------------------------Forward_Pulse: PULSOUT 13. ' Directiva de PBASIC.bs2 para uso con pares IR. 1. 38500 irDetectRight = IN0 IF (irDetectLeft = 0) AND (irDetectRight = 0) THEN GOSUB Back_Up ' Both IR pairs detect obstacle GOSUB Turn_Left ' Back up & U-turn (left twice) GOSUB Turn_Left ELSEIF (irDetectLeft = 0) THEN ' Left IR pair detects GOSUB Back_Up ' Back up & turn right GOSUB Turn_Right ELSEIF (irDetectRight = 0) THEN ' Right IR pair detects GOSUB Back_Up ' Back up & turn left GOSUB Turn_Left ELSE ' Both IR pairs 1.650 PAUSE 20 RETURN ' Send a single forward pulse. ' Store IR detection values in ' bit variables. 3000 ' Senal comienzo del programa.RoamingWithIr. ' {$STAMP BS2} ' {$PBASIC 2. ' -----[ Rutina Principal ]--------------------------------------------------DO FREQOUT 8.bs2 ' Adapta RoamingWithWhiskers. ' -----[ Inicializacion ]----------------------------------------------------FREQOUT 4. 2000.Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 259 ' -----[ Titulo ]------------------------------------------------------------' Robotica con el Boe-Bot . 1.850 PULSOUT 12. 38500 irDetectLeft = IN9 FREQOUT 2. .

aplicar otro pulso . Tu Turno √ Modifica RoamingWithIr. 650 PULSOUT 12. 650 PAUSE 20 NEXT RETURN Turn_Right: FOR pulseCount = 0 TO 20 PULSOUT 13. chequear nuevamente y si el objeto sigue allí. y puede limpiamente encontrar la vía alrededor de los obstáculos y navegar satisfactoriamente a través de pistas más complejas. El programa puede usar las entradas de los sensores para seleccionar la mejor maniobra para cada momento de navegción. 650 PULSOUT 12. about 90-degrees. El Boe-Bot puede aplicar un pulso para dar vuelta lejos de un objeto. De esa manera. pero son innecesariamente lentos para su uso con IR LEDs y detectores. el Boe-Bot nunca voltea más allá de lo que necesita.Página 260 · Robótica con el Boe-Bot Turn_Left: FOR pulseCount = 0 TO 20 PULSOUT 13. ' Right turn. ' Back up. 850 PAUSE 20 NEXT RETURN ' Left turn. 850 PAUSE 20 NEXT RETURN Back_Up: FOR pulseCount = 0 TO 40 PULSOUT 13. 850 PULSOUT 12. Muestreando Entre Cada Pulso para Evitar Colisiones El gran detalle de detectar obstáculos antes de chocar contra el es que le da al Boe-Bot cierto espacio para navigar a su alrededor.bs2 para que los pares IR sean chequeados en una subrutina. ACTIVIDAD #5: NAVEGACION IR CON ALTO DESEMPEÑO El estilo de maniobras pre-programadas que fueron en la actividad previa estaban bien para bigotes. Puedes mejorar bastante el desempeño de tu Boe-Bot al correr libremente chequeando por obstáculos antes de enviar cada grupo de pulsos a los servos. about 90-degrees.

IF (irDetectLeft = 0) AND (irDetectRight = 0) THEN pulseLeft = 650 pulseRight = 850 ELSEIF (irDetectLeft = 0) THEN pulseLeft = 850 pulseRight = 850 ELSEIF (irDetectRight = 0) THEN pulseLeft = 650 pulseRight = 650 ELSE pulseLeft = 850 pulseRight = 650 ENDIF PULSOUT 13.pulseLeft PULSOUT 12. ' Repeat main routine . Robotica con el Boe-Bot . Entonces. 2000. 3000 DO FREQOUT 8.pulseRight PAUSE 15 LOOP ' Apply the pulse.bs2 Higher performance IR object detection assisted navigation {$STAMP BS2} {$PBASIC 2.bs2. seguramente coincidirás en que es una mejor manera de correr libremente con el BoeBot. guarda. y ejecuta FastIrRoaming. 38500 irDetectLeft = IN9 FREQOUT 2. puede continuar con sus pulsos de avance. 1.bs2 √ ' ' ' ' Introduce. El Boe-Bot puede mantenerse aplicando pulsos y chequeando.Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 261 para evadirlo. Luego de experimentar con este proximo programa de ejemplo. 1.5} DEBUG "Program Running!" irDetectLeft irDetectRight pulseLeft pulseRight VAR VAR VAR VAR Bit Bit Word Word ' Variable Declarations FREQOUT 4. hasta que maniobre hasta donde no se encuentre el obstáculo. 38500 irDetectRight = IN0 ' Senal comienzo del programa. Programa de Ejemplo – FastIrRoaming.FastIrRoaming. ' Main Routine ' Check IR Detectors ' Decide how to navigate.

porque si esperas por un poco más de tiempo que lo que le toma al comando en ejecutar. FREQOUT 8. una variable tamaño bit guarda el estado de la salida del detector IR.bs2 Este programa toma una ruta distinta al aplicar los pulsos. IF (irDetectLeft = 0) AND (irDetectRight = 0) THEN pulseLeft = 650 pulseRight = 850 ELSEIF (irDetectLeft = 0) THEN pulseLeft = 850 pulseRight = 850 ELSEIF (irDetectRight = 0) THEN pulseLeft = 650 pulseRight = 650 ELSE pulseLeft = 850 pulseRight = 650 ENDIF . este proma establece los valores de las variables que serán usados en los argumentos Duration de los comandos PULSOUT. 38500 irDetectRight = IN0 En las sentencias IF…THEN. 1. los comandos FREQOUT son utilizados para enviar una señal IR de 38.Página 262 · Robótica con el Boe-Bot Funcionamiento del Programa FastIrRoaming. 38500 irDetectLeft = IN9 FREQOUT 2. el detector IR retornará al estado de no detectado (estado 1). independientemente de si había o no había detectado un objeto. 1. en vez de enviar pulsos o llamar rutinas de navegación. usa dos variables tamaño Word para establecer las duraciones de los pulsos enviados por el comando PULSOUT. Aparte de las dos bits que se usan para guardar las salidas del detector IR. Esto es necesario. irDetectLeft irDetectRight pulseLeft pulseRight VAR VAR VAR VAR Bit Bit Word Word Dentro del DO…LOOP.5 kHz IR a cada IR LED. Inmediatamente después el destello de IR es enviado por 1 ms.

Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 263 Antes de que se repita el DO…LOOP. Existen también aplicaciones donde el Boe-Bot debe tomar acciones evasivas incluso cuando un objeto no es detectado. √ √ Desconecta la fuente de alimentación de tu plaqueta y servos. En otras palabras. sus detector IRes pueden estar viendo hacia abajo a la superficie de la mesa como lo muestra la Figura 7-8. Tu Turno √ √ √ Guarda FastIrRoaming. ACTIVIDAD #6: EL DETECTOR DE CAIDA Hasta ahora.pulseLeft PULSOUT 12. . Observa que el comando PAUSE no sigue siendo 20. Trata de modificar los valores que establecidos para pulseLeft y pulseRight para que el Boe-Bot haga todo a media velocidad.bs2 como FastIrRoamingYourTurn. Usa los LEDs para transmitir que el Boe-Bot ha detectado un objeto. la última cosa por hacer es enviar pulsos a los servos. el Boe-Bot puede continuar avanzando siempre y cuando la mesa sobre la que está navegando sea detectada.pulseRight PAUSE 15 ' Apply the pulse. es 15 ya que aproximadamente se toman 5 ms en chequear los IR LEDs. el Boe-Bot ha sido programado principalmente para tomar maniobras evasivas cuando un objeto es detectado. El programa debería continuar avanzando mientras ambos detector IRes puedan “ver” la superficie de la mesa. Apunta tus pares IR hacia abajo y hacia afuera como lo muestra la Figura 7-8. PULSOUT 13.bs2. En vez. Por ejemplo. si el Boe-Bot está corriendo libremente sobre una mesa.

sin peligro para tu Boe-Bot. . Simulación de Caída con Teipe Eléctrico Una lámina blanca para póster con un borde hecho de teipe eléctrico es una manera útil de simular la caída presente en el borde de una mesa. √ √ √ √ √ Construye una pista similar a la que se muestra en la Figura 7-9 usando teipe negro. Nosotros queremos que el BoeBot sea corto de vista para esta actividad.bs2 (página 254) para asegurarte que las luces fluorescentes cercanas no van a interferir con los detector IRes de tu Boe-Bot.Página 264 · Robótica con el Boe-Bot To Servos 15 14 Vdd 13 12 Rojo Negro X4 Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin X5 Vss Figura 7-8 IR Pares Dirigidos Hacia Abajo Para Chequear por una Caída + Board of Education Rev C © 2000-2003 Vista Superior Vista Lateral Recommended Materials: (1) Rollo de teipe eléctrico negro de vinil – ¾″ (19 mm) de ancho. Usa el programa TestIrPairsAndIndicators. Reemplaza tus resistores de 1 kΩ con resistores de 2 kΩ (rojo-negro-rojo) para conectar P2 a sus IR LED y P8 a sus IR LED. Reconecta la fuente de alimentación a tu plaqueta. sin nigún tipo de espacios blancos entre las tiras. (1) Lámina blanca para póster – 22 x 28 in (56 x 71 cm). Ejecuta el programa IrInterferenceSniffer. Usa al menos tres tiras de teipe eléctrico de borde a borde.bs2 (página 252) para asegurarte de que el Boe-Bot detecta la lámina de póster y no detecta el teipe eléctrico.

40500 Si estás usando antiguos IR LEDs. Ajusta el comando FREQOUT con distintos argumentos Freq1.Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 265 Si el Boe-Bot todavía "ve" el teipe eléctrico muy brillante. el Boe-Bot puede estar teniendo dificultades siendo muy corto de vista. Trata reemplazando los resistores de 2 kΩ con resistores de 4. 22” (56 cm) 22” (56 cm) Figura 7-9 Borde con Teipe Eléctrico Simula Borde de Mesa .7 kΩ (amarillo-violetarojo) para hacer que el Boe-Bot sea más corto de vista. Aquí están algunos argumentos que harán que el Boe-Bot sea más corto de vista: 38250. Aquí están algunos remedios que aumentarán la sensibilidad del Boe-Bot a objetos haciéndolo menos corto de vista: √ Trata con 1 kΩ (marrón-negro-rojo) ó 470 Ω (amarillo-violeta-marrón) o inclusive resistores de 220 Ω (rojo-rojo-marrón) en serie con los IR LEDs en vez de 2 kΩ. Trata con una marca diferente de teipe eléctrico de vinil. 39500. aquí hay unos cuantos remedios: √ √ √ √ Trata ajustando los detector IRes y los LEDs hacia abajos a varios ángulos.

El comando PULSOUT puede ser colocado dentro de un bucle FOR…NEXT que ejecuta los pulsos de acuerdo a FOR 1 TO pulseCount pulses. pero tan pronto como una caída sea detectada. . indicando que un objeto (la superficie de la mesa) ha sido detectado.THEN del programa FastIrNavigation. programando a tu Boe-Bot para navegar alrededor de la superficie de una mesa sin caer del borde es cuestión de ajustar las sentencias IF. En vez. Su programa actual no tiene ninguna manera de diferenciarte a tí de la mesa bajo él. Sólo porque tú estás enviando múltiples pulsos en una maniobra evasiva. Por ejemplo. Así que mantente fuera del campo de visión del detector mientras asistes a tu Boe-Bot. Puede ser que quieras que tu Boe-Bot solamente tome un pulso hacia adelante entre chequeos de los detectores.Página 266 · Robótica con el Boe-Bot Si intentas con una mesa luego de tener éxito con la pista de teipe eléctrico: √ Recuerda seguir los mismos pasos que seguiste antes de dejar que el Boe-Bot navegara sobre la pista con teipe eléctrico! Asegúrate que seas el asistente de tu Boe-Bot. Está prevenido apenas tu Boe-Bot corra libremente por la mesa: √ Siempre está listo para recoger tu Boe-Bot desde arriba cuando se acerque al borde de la mesa sobre la que esté navegando. El ajuste principal es que los servos deberían ser dirigidos para hacer que el Boe-Bot ruede hacia adelante cuando irDetectLeft y irDetectRight son 0. puedes agregar una variable pulseCount que puedas usar para establecer el número de pulsos a ser enviados para completar la maniobra. Si el Boe-Bot intenta manejar fuera del borde de la mesa agárralo antes de que se lance. De otra manera. tu Boe-Bot puede que se convierta en un No-Bot! Tu Boe-Bot puede detectarte si estás en su campo de visión. así que puede intentar continuar avanzando fuera del borde de la mesa. Para un pulso hacia adelante. si irDetectLeft es 1. para diez pulsos hacia la izquierda. el Boe-Bot más vale que voltee a la derecha.bs2. no quiere decir que tienes que regresar a la navegación al estilo de los bigotes.. El Boe-Bot también tiene que dar vuelta alejándose de un detector que no ha detectado un obstáculo. puede ser que quieras hacer que tu Boe-Bot tome varios pulsos para voltear antes de chequear los detectores nuevamente. pulseCount puede ser establecido a 10. Una segunda característica de un programa para voltear de las caídas es distancia ajustable.. y así sucesivamente. pulseCount puede ser 1. √ Programando para Detección de Caída En su mayoría.

3000 DO FREQOUT 8.bs2 y guárdalo como AvoidTableEdge. 38500 irDetectLeft = IN9 FREQOUT 2.bs2 ' IR detects object edge and navigates to avoid drop-off. 1. ' Check detector IRs. recuerda de seguir los consejos discutidos antes. Sus valores son diferentes de los presentes en FastIrNavigation. . 38500 irDetectRight = IN0 ' Senal comienzo del programa. y anidar los comandos PULSOUT dentro del bucle FOR…NEXT.5} DEBUG "Program Running!" irDetectLeft irDetectRight pulseLeft pulseRight loopCount pulseCount VAR VAR VAR VAR VAR VAR Bit Bit Word Word Byte Byte ' Variable declarations. Reconecta la fuente de alimentación a tu plaqueta y servos. ' {$STAMP BS2} ' {$PBASIC 2. pulseLeft = 850 ' one pulse forward. Si decides tratar sobre una mesa. Ten cuidado de asegurarte que todas los valores de las variables pulseLeft y pulseRight dentro de las sentencias IF…THEN están apropiadamente ajustadas. Esto incluye agregar variables. 2000. ' Main Routine.bs2 √ √ √ √ √ Abre FastIrNavigation. FREQOUT 4. modificar las sentencias IF…THEN. Modifica el programa para que sea exacto en comparación con el programa de ejemplo. 1. pulseCount = 10 ' 10 pulses left.AvoidTableEdge. ' Robotica con el Boe-Bot . pulseRight = 650 ELSEIF (irDetectRight = 1) THEN ' Right not detected.bs2.bs2 porque las reglas de la pista son distintas. Verifica el programa en tu pista delimitada por teipo eléctrico. IF (irDetectLeft = 0) AND (irDetectRight = 0) THEN pulseCount = 1 ' Both detected.Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 267 Programa de Ejemplo – AvoidTableEdge. ' Decide navigation.

Página 268 · Robótica con el Boe-Bot

pulseLeft = 650 pulseRight = 650 ELSEIF (irDetectLeft = 1) THEN pulseCount = 10 pulseLeft = 850 pulseRight = 850 ELSE pulseCount = 15 pulseLeft = 650 pulseRight = 850 ENDIF FOR loopCount = 1 TO pulseCount PULSOUT 13,pulseLeft PULSOUT 12,pulseRight PAUSE 20 NEXT LOOP

' Left not detected, ' 10 pulses right. ' Neither detected, ' back up and try again.

' Send pulseCount pulses

Funcionamiento del Programa AvoidTableEdge.bs2
Debido a que este programa es una versión modificada de FastIrRoaming.bs2, sólo los cambios al programa son discutidos aquí.

Un bucle FOR…NEXT es agregado al programa para controlar el número de pulsos que son enviados cada vez que se completa la rutina (DO…LOOP) principal. Dos variables son añadidas, loopCount funciona como un índice para un bucle FOR…NEXT y pulseCount es usado como el argumento EndValue.
loopCount pulseCount VAR VAR Byte Byte

Las sentencias IF…THEN ahora tienen el valor de pulseCount establecido así como también los valores de pulseRight y pulseLeft. Si ambos detectores pueden ver la mesa, entonces, toma un pulso precabido hacia adelante.
IF (irDetectLeft = 0) AND (irDetectRight = 0) THEN pulseCount = 1 pulseLeft = 850 pulseRight = 650

Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 269

De lo contrario, si el detector IR derecho no ve la superficie de la mesa, rota 10 pulsos hacia la izquierda.
ELSEIF (irDetectRight = 1) THEN pulseCount = 10 pulseLeft = 650 pulseRight = 650

De lo contrario, si el detector IR izquierdo no ve la superficie de la mesa, rota 10 pulsos hacia la derecha.
ELSEIF (irDetectLeft = 1) THEN pulseCount = 10 pulseLeft = 850 pulseRight = 850

De lo contrario, si ninguno de los dos detectores puede ver el borde de la mesa, retrocede 15 pulsos y prueba nuevamente, en busca de que alguno de los detectores vea la caída antes que el otro.
ELSE pulseCount = 15 pulseLeft = 650 pulseRight = 850 ENDIF

Ahora que el valor de pulseCount, pulseLeft, y pulseRight están establecidos, este bucle FOR…NEXT envía el número específico de pulsos para la maniobra determinada por las variables pulseLeft y pulseRight.
FOR loopCount = 1 TO pulseCount PULSOUT 13,pulseLeft PULSOUT 12,pulseRight PAUSE 20 NEXT

Tu Turno

Puedes experimentar con establecer diferentes valores para pulseLeft, pulseRight, y pulseCount dentro de la sentencia IF…THEN. Por ejemplo, si el Boe-Bot no da la vuelta completa, puede rastrear el borde de la pista delimitada por teipe eléctrico. Pivotear hacia atrás en vez de rotar en el sitio puede conllevar también a comportamientos interesantes.

Página 270 · Robótica con el Boe-Bot

√ √

Modifica AvoidTableEdge.bs2 para que siga el eje de la pista delimitada con teipe eléctrico ajustando los valores pulseCount para que el Boe-Bot no de la vuelta tan alejado del borde. Experimenta con el pivoteo como una manera de hacer que el Boe-Bot corra libremente dentro del perímetro en vez de siguiendo el borde.

Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 271

RESUMEN
Este capítulo cubrió una técnica úniica para la detección de objetos con infrarrojo que usa los IR LED encontrados en controles remotos comunes de casa, y los detectores infrarrojos encontrados en TVs, reproductores de CD/DVD, y otros dispositivos electrónicos controlados con estos controles remotos. Alumbrando con infrarrojo en el camino del Boe-Bot y mirando su reflexión, la detección de objetos es lograda sin detectar fisicamente el objeto. Circuitos LED infrarrojos son usados para enviar una señal de 38.5 kHz con la ayuda de una propiedad del comando FREQOUT llamada armónica, la cual es inherente a las señales sintetizadas digitalmente. Un programa indicador de detección infrarroja fue introducido para pruebas remotas (sin conexión a la PC) de los pares IR LED/Detector. Un programa husmeador de interferencia infrarroja también fue introducido para ayudar a detectar interferencia que puede ser generada por algunas luces fluorescentes. Ya que las señales enviadas por los detector IRes son tan similares a las señales enviadas por los bigotes, RoamingWithWhiskers.bs2 fue adaptado a los detectores infrarrojos. Un programa que chequea los detectores infrarrojos entre cada pulso de servo fue introducido para demostrar mejor desempeño al correr libremente para no chocar con con obstáculos. Este programa fue modificado para evadir el borde de un área delimitada por teipe eléctrico. Debido a que el teipe eléctrico absorbe infrarrojo, enmarcar una hoja amplia de papel de construcción asemeja la caída vista en el borde de una mesa sin el peligro para el BoeBot. Preguntas 1. ¿Cuál es la frecuencia de la harmónica enviada por FREQOUT 2, 1, 38500? Cuál es el valor de la frecuencia fundamental enviado por ese comando? ¿Cuál es la duración de estas señales? ¿Qué pin I/O tiene que tener el circuito de IR LED conectado para poder transmitir esta señal? 2. ¿Qué comando tiene que seguir inmediatamente al comando FREQOUT para poder determinar precisamente si el objeto ha sido o no detectado? 3. ¿Qué significa que el detector IR envíe una señal baja? ¿Qué significa que el detector envíe una señal alta? 4. ¿Qué socede so cambias el valor de un resistor en serie con un LED rojo? ¿Qué pasa si cambias el valor de un resistor en serie con un LED infrarrojo?

Página 272 · Robótica con el Boe-Bot

Ejercicios 1. Modifica una línea de código en IrInterferenceSniffer.bs2 para que sólo monitoree uno de los pares IR LED/detector. 2. Explica la función de pulseCount en AvoidTableEdge.bs2. ¿Cómo se relaciona esto a tu respuesta al Ejercicio 3? Proyectos 1. Diseña una aplicación para el Boe-Bot en la que se quede quieto hasta que muevas tu mano en frente de él, y luego comience a correr libremente. 2. Diseña una aplicación para el Boe-Bot en la que rote en un punto hasta que detecte un objeto. Tan pronto detecte el objeto, lo asegura y lo persigue. Este es un comportamiento clásico de un SumoBot. 3. Diseña una aplicación para el Boe-Bot que navegue libremente, pero si detecta interferencia infraroja, suena una alarma brevemente, y continúa navegando. Esta alarma debería ser distinta a la alarma que indica batería baja.

Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 273

Soluciones Q1. 38.5 kHz es la frecuencia de la armónica. Su frecuencia fundamental = 65536 – 38500 = 27036 Hz. Las señales son enviadas por 1 milisegundo, y el IR LED debe ser conectado al Pin I/O 2. Q2. El comando que guarda la salida del detector en una variable. Por ejeplo
irDetectLeft = IN9.

Q3. Una señal baja significa que IR a 38.5 kHz fue detectada, por ende, un objeto fue detectado. Una señal alta significa que IR a 38.5kHz no fue detectada, entonces, ningún objeto. Q4. Electricamente hablando, para LEDs tanto rojos como infrarrojos, resistores más pequeños causarán que el LED brille más intensamente. Un resistor más grande resulta en LEDs más opacos. En términos de resultados, IR LEDs hacen posible la detección de obstáculos más lejanos. E1. Cambia la sentencia IF…THEN por:
IF (IN0 = 0) THEN

Esto solo monitoreará el detector derecho. E2. La variable pulseCount permita que el Boe-Bot tenga una distancia de movimiento ajustable dependiendo de la situación. P1. El programa FastIrRoaming.bs2 puede ser combinado con un bucle DO…UNTIL para que no nada hasta que detecte un objeto. Una ejemplo de solución es mostrado abajo.
' -----[ Title ]------------------------------------------------------' Robotica con el Boe-Bot - MotionActivatedBoeBot.bs2 ' Boe-Bot starts roaming when hand is waved in front of detector IRs. ' {$STAMP BS2} ' {$PBASIC 2.5} ' -----[ Variables ]--------------------------------------------------irDetectLeft irDetectRight pulseLeft pulseRight VAR VAR VAR VAR Bit Bit Word Word ' Variable Declarations

' -----[ Initialization ]---------------------------------------------DEBUG "Program Running!"

Página 274 · Robótica con el Boe-Bot

FREQOUT 4, 2000, 3000 programa.

' Senal comienzo del

' -----[ Main Routine ]-----------------------------------------------Main: ' Loop until something is detected DO GOSUB Check_IRs LOOP UNTIL (irDetectLeft = 0) OR (irDetectRight = 0) ' Now start roaming -- this code from FastIrRoaming.bs2 DO IF (irDetectLeft = 0) AND (irDetectRight = 0) THEN pulseLeft = 650 ' Both detect pulseRight = 850 ' Back up ELSEIF (irDetectLeft = 0) THEN ' Left detect pulseLeft = 850 ' Turn right pulseRight = 850 ELSEIF (irDetectRight = 0) THEN ' Right detect pulseLeft = 650 ' Turn left pulseRight = 650 ELSE ' Nothing detected pulseLeft = 850 ' Go forward pulseRight = 650 ENDIF PULSOUT 13, pulseLeft PULSOUT 12, pulseRight PAUSE 15 GOSUB Check_IRs LOOP ' Apply the pulse.

' Check IRs again

' -----[ Subroutines ] -----------------------------------------------Check_IRs: FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 2, 1, 38500 IrDetectRight = IN0 RETURN ' Check IR Detectors

P2. Este comportamiento es de muchas formas opuesto al comportamiento de correr libremente cubierto en este capítulo. En vez de evadir objetos, el Boe-Bot trata de ir hacia ellos. Por esta razón el código principal puede ser derivado de "FastIrRoaming.bs2", con algo extra añadido para hacer que el Boe-Bot voltee lentamente hasta que el objeto es detectado.

lock onto it and push it. 790 PAUSE 15 ' 5 ms for detectors GOSUB Check_IRs ' While looking for object LOOP UNTIL (irDetectLeft = 0) OR (irDetectRight = 0) ' Now figure out exactly where the object is DO ' Object in both detectors -. pero esta no es razón por la cual abandonar la persecusión.bs2 ' Search for object. Esto se debe a que el Boe-Bot está maniobrando hacia el objeto.go right ELSEIF (irDetectRight = 0) THEN and go toward it = 0) THEN ' Forward ' Left toward object .SumoBoeBot. ' Robotica con el Boe-Bot .go forward IF (irDetectLeft = 0) AND (irDetectRight pulseLeft = 850 pulseRight = 650 ' Object on left .5} irDetectLeft irDetectRight pulseLeft pulseRight VAR VAR VAR VAR Bit Bit Word Word ' Left IR reading ' Right IR reading ' pulse values for servos ' -----[ Initialization ]---------------------------------------------DEBUG "Program Running!" FREQOUT 4. una vez que el Boe-Bot a espieado un objeto. 2000. algunas veces los detectores muestran "ningún objeto" por unos breves instantes. 3000 ' Signal start/reset. continuará hacia adelante incluso cuando los detectores muestren "ningún objeto" (1) por unos cuantos bucles. ' {$STAMP BS2} ' {$PBASIC 2. ' -----[ Main Routine ]-----------------------------------------------Main: ' Spin around slowly until an object is spotted DO PULSOUT 13. 790 ' Rotate slowly PULSOUT 12.go left ELSEIF (irDetectLeft = 0) THEN pulseLeft = 650 pulseRight = 650 ' Object on right .Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 275 En la situación de abajo.

1. 38500 IrDetectRight = IN0 RETURN ' Check IR Detectors ' Apply the pulse. because the detectors will ELSE ' momentarily show pulseLeft = 850 ' "no object" as the pulseRight = 650 ' Boe-Bot is adjusting ENDIF ' its position.RoamAndSniffBoeBot.pulseLeft PULSOUT 12.bs2" en un mismo programa.bs2" con "IrInterferenceSniffer. ' {$STAMP BS2} ' {$PBASIC 2.pulseRight PAUSE 15 ' Check IRs again in case object is moving GOSUB Check_IRs LOOP ' -----[ Subroutines ] -----------------------------------------------Check_IRs: FREQOUT 8.go forward anyway.Página 276 · Robótica con el Boe-Bot pulseLeft = 850 ' Right toward object pulseRight = 850 ' No object -. 38500 irDetectLeft = IN9 FREQOUT 2. ' 5 ms for detectors P3. 1. 3000 programa.5} ' -----[ Variables ]--------------------------------------------------irDetectLeft irDetectRight pulseLeft pulseRight counter VAR VAR VAR VAR VAR Bit Bit Word Word Nib ' Left IR sensor reading ' Right IR sensor reading ' Pulses sent to servos ' Loop counter ' -----[ Initialization ]---------------------------------------------DEBUG "Program Running!" FREQOUT 4. La clave para resolver este problema es combinar "FastIrRoaming. ' -----[ Title ]------------------------------------------------------' Robotica con el Boe-Bot . ' Senal comienzo del ' -----[ Main Routine ]------------------------------------------------ . PULSOUT 13. 2000.bs2 ' Boe-Bot roams around and sounds alarm when IR detected.

38500 irDetectLeft = IN9 FREQOUT 2. 38500 irDetectRight = IN0 ' From IrInterferenceSniffer.Capítulo 7: Navegando con Luces Delanteras Infrarrojas · Page 277 Main: DO GOSUB Roam GOSUB Sniff LOOP ' -----[ Subroutines ] -----------------------------------------------Sniff: IF (IN0 = 0) OR (IN9 = 0) THEN FOR counter = 1 TO 5 HIGH 1 HIGH 10 FREQOUT 4.pulseLeft PULSOUT 12.bs2 ' Check IR Detectors ' Decide how to navigate. 4000 LOW 1 LOW 10 PAUSE 20 NEXT ENDIF RETURN Roam: FREQOUT 8.pulseRight PAUSE 15 RETURN ' Apply the pulse. .bs2 ' Beep 5 times ' and flash LEDs ' From FastIrRoaming. IF (irDetectLeft = 0) AND (irDetectRight = 0) THEN pulseLeft = 650 pulseRight = 850 ELSEIF (irDetectLeft = 0) THEN pulseLeft = 850 pulseRight = 850 ELSEIF (irDetectRight = 0) THEN pulseLeft = 650 pulseRight = 650 ELSE pulseLeft = 850 pulseRight = 650 ENDIF PULSOUT 13. 1. 50. 1.

Página 278 · Robótica con el Boe-Bot .

5 kHz. Especialmente para . asegúrate que tu IR LED tengan resistores de 1 kΩ en serie. Si el IR es prendido y apagado a 42 kHz. Si ya desarmaste el circuito del capítulo previo. el cual envía un pulso de sonido y guarda el tiempo que toma el eco en regresar. Este extracto es una gráfica que muestra cuán menos sensible es este detector de IR si la señal que recibe se prende y se apaga continuamente a una frecuencia distinta a 38. √ √ Si el circuito todavía se encuentra construido en tu Boe-Bot. repite los pasos en el Capítulo #7.Capítulo 8: Control de Robot con Detección de Distancia · Page 279 Capítulo 8: Control de Robot con Detección de Distancia En el Capítulo 7. una manera de lograr la detección de distancia con el mismo circuito que usaste en el capítulo previo. se puede programar para seguir un objeto en movimiento sin chocar contra él. Por ejemplo. Materiales y Equipo Recomendados: (1) Regla (1) Hoja de papel ACTIVIDAD #1: VERIFICANDO EL BARRIDO DE FRECUENCIA La Figura 8-1 muestra un extracto de la hoja de especificaciones de un detector de IR de marca específica (Panasonic PNA4602M). DETERMINANDO LA DISTANCIA CON EL MISMO CIRCUITO IR LED/DETECTOR Vas a usar el mismo circuito del capítulo anterior para detectar la distancia. El Boe-Bot también puede ser programado para segir pistas negras en un fondo blanco. ActiviDAD #1 en la página 245. usamos los sensores infrarojos para detectar si un objecto está en el camino del Boe-Bot sin tocarlo directamente. Existe. el detector es solamente 20% sensible. ¿No sería agradable saber cuán lejos se encuentra el objeto? Este es la tarea para un sonar. El tiempo que le toma al eco en regresar puede ser usado para determinar la distancia a la que se encuentra el objecto.5 kHz. Con tu Boe-Bot capacitado para determinar la distancia de un objecto. de cualquier manera. solo es 50% sensible a como sería a 38. si envías una señal que se prende y apaga a 40 kHz.

Trata con la más sensible primero. . el objecto se encuentra en la Zona 3. En este ejemplo. el objecto tiene que estar más cercano para hacer el IR reflejado más brillante para que el detector lo pueda detectar. Esto hace que la detección de la distancia sea simple. y 41500 Hz. pero no cuando 40500 y 41500 Hz son transmitidos. 38250. Dependiendo en cuál frecuencia el infrarrojo reflejado no es visible para el detector IR. y 39500 Hz son transmitidos. Barrido de Frecuencia es la técnica que consiste en probar la salida de un circuito usando una variedad de frecuencias de entrada. Programando el Barrido de Frecuencia para la Detección de Distancia La Figura 8-2 muestra un ejemplo de como el Boe-Bot puede probar las distancia usando frecuencias. Si un objeto es detectado.Página 280 · Robótica con el Boe-Bot frecuencias que hacen el detector menos sensible. Si movieras el objeto a la Zona 2. entonces el objecto podría ser detectado cuando 37500. pero no puede ser detectado con 39500. Figura 8-1 Sensibilidad del Filtro Depende en la Frecuencia Portadora Otra manera de pensar al respecto es que la frecuencia más sensible detectará los objectos más lejanos. puedes inferir la distancia. Selecciona 5 frecuencias. mientras que las frecuencias menos sensibles sólo pueden detectar objetos cercanos. luego prueba de la más a la menos sensible. Eso quiere decir que el objeto puede ser detectado cuando 37500 y 38250 Hz son transmitidos. revisa a ver si la próxima frecuencia más sensible lo detecta. 40500.

la mejor manera de guardar una lista corta de valores que quieres usar en secuencia es un comando llamado LOOKUP. Las frecuencias listadas en la Figura 8-2 son frecuencias que vas a programar para que el BASIC Stamp use para determinar la distancia a un objeto.5 kHz y no 38. Estas frecuencias fueron determinadas usando ensayos similares a los que aparecen descritos en el Apénance of an object.Capítulo 8: Control de Robot con Detección de Distancia · Page 281 Figura 8-2: Frecuencias y Zonas del Boe-Bot Objeto 15 14 Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vdd 13 12 Vin Vss Roj o Negr o X4 X5 + Zona 0 41500 Hz Zona 1 40500 Hz Zona 2 Zona 3 39500 Hz 38250 Hz Zona 4 37500 Hz Zona 5 No hay Detección a ninguna Frecuencia Board of Education © 2000-2003 Puede que te preguntes por qué el valor de la Zona 4 es 37. Los pasos entre cada frecuencia no son tan precisos como para usar el operador STEP del bucle FOR…NEXT. necesitarás usar FREQOUT para enviar cinco frecuencias distintas y probar a cada frecuencia para descubrir si el detector IR pudo ver el objeto. solo necesitaremos 5. Value1.5 kHz. Pudieras usar DATA y READ. Para verificar el detector IR a cada frecuencia. Puede haber hasta 256 valores en la lista.5 kHz. La razón por la que no son los valores que esperarías basado en el % de sensibilidad de la gráfica es porque el comando FREQOUT transmite una señal un poco más potente (harmónica) a 37. La sintaxis para el comando LOOKUP es: LOOKUP Index. [Value0. …ValueN]. pero eso sería un tanto incómodo. En vez de esto. Si Index es 1.5 kHz que a 38. Variable Si el argumento Index es 0. Value0 de la lista dentro de los corchetes será colocado en Variable. Aquí esta cómo será usado: FOR freqSelect = 0 TO 4 . pero eso sería una pérdida de espacio de código. These frequencies were determined using tests similar to the ones outlined in Apéndice G: Entonando la Detección de Distancia con IR. pero para el próximo programa ejemplo. Value1 de la lista será colocado en Variable. Pudieras usar cinco comandos diferentes FREQOUT.

bs2 TestLeftFrequencySweep. Existen muchos patrones si-no que pueden ser generados..41500]. especialmente considerando que estás usando partes que fueron diseñadas para un propósito completamente distinto.[37500. En la segunda pasada por el bucle FOR…NEXT. NEXT En la primera pasada por el bucle FOR…NEXT. lo cual significa que el comando LOOKUP coloca 38250 en la variable irFrequency. y el proceso es repetido para esta frecuencia más alta. la “Zona 2” es la ubicación del objeto detectado en ambos ejemplos.Página 282 · Robótica con el Boe-Bot LOOKUP freqSelect. dos están mostrados en la Figura 8-3. el comando FREQOUT envía esa frecuencia al LED IR conectado a P8. ambos tienen tres ocurrencias “Si” y dos “No. así que el comando LOOKUP coloca el valor 37500 en la variable irFrequency. el valor de IN9 es entonces guardado en la variable irDetect. Cuando corres el programa.39500.bs2 hace dos cosas. prueba que el par izquierdo de IR LED/detector (conectado a P8 y P9) para asegurarse que están funcionando apropiadamente para la detección de distancia.. el Debug Terminal mostrara tu medida de zona. para establecer comunicación IR entre un control remoto de mano y una televisión. el valor de freqSelect es ahora 1.” Observa que a pesar de que los dos patrones de prueba del Debug Terminal en la Figura 8-3 son distintos.38250. irFrequency irDetect = IN9 ' Commands not shown. freqSelect es 0. El resultado es notable.40500. también demuestra cómo el barrido de frecuencia ilustrado Figura 8-2 es logrado. Ya que irFrequency contiene 37500 después del comando LOOKUP. Como en el capítulo anterior. El programa determina en cuál zona se encuentra el objeto detectado contando el número de ocurrencias de “No. En la tercera pasada el proceso es repetido nuevamente con 39500.” Por lo tanto. Primero. . Los patrones de prueba variarán dependiendo de las características del filtro dentro del detector. y así sucesivamente. Programa de Ejemplo – TestLeftFrequencySweep.irFrequency FREQOUT 8. Sin embargo.1.

quizás a ¼ in (ó 1 cm) de distancia del IR LED. los experimentos en este capítulo funcionarán. √ √ √ √ Introduce. Si el rango de detector de distancia es menor que eso. ' {$STAMP BS2} ' Directiva del Stamp. y otras actividades. ellas le dan al Boe-Bot un sentido de distancia al objeto suficientemente bueno como para seguir. rastrear. trata de reducir tu resistencia en serie de 1 kΩ a 470 Ω ó 220 Ω. . Usa una hoja de papel o tarjeta viendo hacia el IR LED/detector para verificar la detección de distancia. Tu Zona en el Debug Terminal debería ser o 0 ó 1. Para los LED antiguos con cubierta de goma viejos las distancias serán menores.bs2. Mientras los objetos puedan ser detectados hasta 4 in (10 cm) de distancia.bs2 ' Test detector IR distance responses to frequency sweep.Capítulo 8: Control de Robot con Detección de Distancia · Page 283 Figura 8-3 Probando los Ejemplos de Detección de Distancia Ten en cuenta que estas medidas de distancia son relativas y no son necesariamente precisas ni espaciadas uniformemente. Comienza con la hoja bastante cerda del IR LED. Gradualmente mueve la hoja de papel alejándola del IR LED y tomando nota de cada distancia que cause que el valor de la zona aumente. guarda. lo cual es muy probable si tienes los IR LEDS antiguos con cubierta de goma.TestLeftFrequencySweep. ' -----[ Title ]-------------------------------------------------------------' Robotica con el Boe-Bot . Las Zonas 1-4 típicamente caen en el rango de 6 a 12 in (de 15 a 30 cm) para estos LEDs encubiertos con un resistor de 1 kΩ. Sin embargo. y ejecuta TestLeftFrequencySweep.

--------" ' -----[ Main Routine ]------------------------------------------------------DO distance = 0 FOR freqSelect = 0 TO 4 LOOKUP freqSelect.Página 284 · Robótica con el Boe-Bot ' {$PBASIC 2. freqSelect + 3 IF (irDetect = 0) THEN DEBUG "Yes" ELSE DEBUG "No " PAUSE 100 NEXT DEBUG CR. "--------"Zone LOOP --------". DETECTED". ". irFrequency FREQOUT 8. DEC5 irFrequency DEBUG CRSRXY. DEC1 distance Tu Turno – Probando el Par Derecho IR LED/Detector A pesar de que habría que tomar en cuenta la denotación.1.39500.5} ' Directiva de PBASIC. CR. ' -----[ Variables ]---------------------------------------------------------freqSelect irFrequency irDetect distance VAR VAR VAR VAR Nib Word Bit Nib ' -----[ Initialization ]----------------------------------------------------DEBUG CLS.[37500.1. CR. 4. " "FREQUENCY "--------OBJECT". (freqSelect + 3). irFrequency irDetect = IN9 . irFrequency irDetect = IN9 distance = distance + irDetect DEBUG CRSRXY. puedes modificar el programa para probar el IR LED y detector derecho cambiando estas dos líneas FREQOUT 8.38250.41500]. 11. CR.40500.

Este programa está organizado en subrutinas. -----[ Title ]-------------------------------------------------------------Robotica con el Boe-Bot . "IR OBJECT ZONE".bs2. "----. CR. las cuales son prácticas para copiar y pegar en otros programas que requieran detección de distancia.bs2 para probar la medición de distancia del par derecho de IR LED/detector. ' {$STAMP BS2} ' {$PBASIC 2.5} ' -----[ Variables ]---------------------------------------------------------freqSelect irFrequency irDetectLeft irDetectRight distanceLeft distanceRight VAR VAR VAR VAR VAR VAR Nib Word Bit Bit Nib Nib ' -----[ Initialization ]----------------------------------------------------DEBUG CLS. Repite el ejercicio de la medida de distancias con una hoja de papel en cada LED. y luego en ambos LED al mismo tiempo. ' Directiva de PBASIC. Ejecuta el programa y verifica que este par puede medir una distancia similar. irFrequency irDetect = IN0 √ √ Modifica TestLeftFrequencySweep. CR. y ejecuta DisplayBothDistances.1. "Left Right". Programa de Ejemplo – DisplayBothDistances.-----" . ' Directiva del Stamp.Capítulo 8: Control de Robot con Detección de Distancia · Page 285 para que digan FREQOUT 2.bs2 √ √ ' ' ' ' Introduce. Mostrando Ambas Distancias Es útil a veces tener un programa rápido que puedas correr para probar ambos detectores de deistancias del Boe-Bot’s al mismo tiempo. guarda.DisplayBothDistances.bs2 Test detector IR distance responses of both IR LED/detector pairs to frequency sweep.

2.3.1.irFrequency irDetectLeft = IN9 distanceLeft = distanceLeft + irDetectLeft FREQOUT 2.3. CRSRXY.1.9.38250. DEC1 distanceRight RETURN Tu Turno – Más Pruebas de Distancia √ Trata de medir la distancia de distintos objetos y encuentra si el color y/o la textura hacen alguna diferencia en cuanto a la medida de distancia.irFrequency irDetectRight = IN0 distanceRight = distanceRight + irDetectRight PAUSE 100 NEXT RETURN ' -----[ Subroutine – Display_Distances ]------------------------------------Display_Distances: DEBUG CRSRXY.39500. DEC1 distanceLeft.40500.Página 286 · Robótica con el Boe-Bot ' -----[ Main Routine ]------------------------------------------------------DO GOSUB Get_Distances GOSUB Display_Distances LOOP ' -----[ Subroutine – Get_Distances ]----------------------------------------Get_Distances: distanceLeft = 0 distanceRight = 0 FOR freqSelect = 0 TO 4 LOOKUP freqSelect. irFrequency FREQOUT 8.41500]. .[37500.

o. o sensores y motores. y funciona muy bien ayudando a que el Boe-Bot mantenga su distancia a un objeto. y luego controlar las salidas mecánicas respectivamente. y describe los pasos del proceso de control proporcional que el BoeBot utilizará para medir la distancia con su IR LED y detector derecho y ajustar su posición para mantener la distancia con servo derecho. como distancia. o nivel de fluido. el procesador es el BASIC Stamp 2. sensores y servos de rotación contínua. la mayoría de los lazos de control proporcional mostrados en la Figura 8-4 se reducen a sólo una línea de código PBASIC. Todos estos tipos de control son introducidos en dealle en el texto Process Control (en inglés) de la serie Stamps in Class. y derivativo. proporcional. La distancia es sólo un tipo de valor por el cual robots y otra maquinaria autamatizada son responbles. Si el vehículo sombra está muy cerca al vehículo líder. Estos sistemas a veces consisten de sensores y válvulas.Capítulo 8: Control de Robot con Detección de Distancia · Page 287 ACTIVIDAD #2: VEHICULO BOE-BOT SOMBRA Para que un Boe-Bot siga a otro. el Boe-Bot que sigue o “vehículo sombra. Si el vehículo sombra se retrasa. Cuando una máquina está diseñada para mantener un valor automáticamente. Algunos de los más comunes son histéresis. integral. De hecho. Si está a la distancia correcta. puede esperar a que la medida indique que está muy lejos o muy cerca nuevamente. tiene que detectar esto y acelerar. . El procesdor tiene que ser programado para tomar decisiones basado en las entradas de los sensores. Este diagrama es llamado diagrama de bloque. En el caso del Boe-Bot. generalmente requiere un sistema de control. La mayoría de las técnicas pueden ser implementadas con unas pocas líneas de código en PBASIC. listado en el Prefacio.” tiene que saber cuán lejos adelante está el vehículo líder. Existe también algún tipo de procesador que toma las medidas de los sensores y las convierte en acción(es) mecánica(s). tiene que detectar esto y desacelerar. en el caso del Boe-Bot. Existen muchos ti[os distintos de control de lazo cerrado. Control de lazo cerrado es un método común para mantener niveles. presión.

Luego. Esto es indicado por los símbolos dentre del círculo a la izquierda. la cual es muy lejana. pero eso está bien porque independientemente de la distancia medida. Este círculo es conocido como nodo sumador. el cual consiste en el Boe-Bot. medida = 4 Sistema Figura 8-4 Diagrama de Bloque para Control Proporcional del Servo y Par de IR LED y Detector Derechos Miremos más de cerca los números en la Figura 8-4 para aprender cómo funciona el control proporcional. La distancia medida. Este ajuste de salida entra a otro nodo sumador. Esto hace que la rueda derecha del Boe-Bot ruede hacia adelante. Este bloque muestra que el error será multiplicado por un valor llamado constante de proporcionalidad (Kp). y esta vez es sumado al ancho de pulso central del servo 750. En la próxima pasada por el lazo.Página 288 · Robótica con el Boe-Bot Ancho de Pulso Central 750 Ajuste de salida + -70 Kp X error + 35 X -2 Salida Servo derecho 680 Punto de control distancia derecha = 2 Error = -2 + - Distancia der. es 4. que fue medido a una distancia de 4. hacia el objeto. la distancia medida puede cambiar. el error alimenta a un bloque operador. El punto de control es 2. El error es el punto de control menos la distancia medida 2 – 4 = –2. este lazo de control calculará el valor que ocasionará que el servo se mueva para corregir cualquier error. el cual es la diferencia entre el punto de control y las distancias medidas. Un lazo de control tiene un grupo de ecuaciones que gobiernan el sistema. La salida del bloque muestra el resultado de –2 × 35 = –70. El resultado es un ancho de pulso de 680 que hará que el servo se mueva hacia adelante a aproximadamente ¾ de su velocidad en sentido de las manecillas del reloj. Esta corrección entra al sistema general. el cual es llamado ajuste de salida. El diagrama de bloque en la Figura 8-4 es una manera de describir visualmente este grupo de . lo que significa que queremos que el Boe-Bot mantenga una distancia de 2 entre sí y cualquier objeto que detecte. El valor de Kp es 35. y el objecto. Este ejemplo particular es para el IR LED/detector y servo derechos. La corrección siempre es proporcional al error.

Entonces el lazo de control se repite otra y otra vez. Este también es un pulso hacia adelante para la rueda izquierda. las tres ecuaciones arriba pueden ser reducidas a una. aproximadamente 40 veces por segundo. La idea de retroalimentación es que la salidad del sistema sea muestreada nuevamente.Capítulo 8: Control de Robot con Detección de Distancia · Page 289 ecuaciones. Aquí están las ecuaciones que pueden ser extraídas de este diagrama de bloque. Aquí est’a la ecuación y los cálculos para este diagrama de bloque: Salida Servo izq. por el Boe-Bot sombra tomando una nueva medida de distancia. junto con las soluciones. = = Ajuste de Salida = = = Salida Servo derecho = = = Error Punto de Control distancia derecha – Distancia derecha medida 2–4 error × Kp –2 × 35 – 70 Ajuste de salida + Ancho de pulso central – 70 + 750 680 Haciendo algunas substituciones.. la cual te dará el mismo resultado. Salida Servo derecho = (Punto de Control distancia derecha – Distancia derecha medida) × Kp + Ancho de pulso central Substituyendo los valores del ejemplo. La diferencia es que Kp es –35 en vez de +35.. . Asumiendo que el mismo valor del par IR derecho es medido. el ajuste de salida resulta en un ancho de pulso de 820. podemos darnos cuenta que la ecuación funciona: = = ((2 – 4) × 35) + 750 680 El par IR y servo izquierdos tienen un algoritmo similar mostrado en la Figura 8-5. = = = (Punto de Control distancia izquierda – Distancia izquierda medida) × Kp + Ancho de pulso central ((2 – 4) × –35) + 750 820 El resultado de este lazo de control es un ancho de pulso que hace que el servo izquierdo rote a aproximadamente ¾ de su máxima velocidad en el sentido contrario a las manecillas del reloj.

= 2 Error = -2 + - Distancia izq. El punto de control de la distancia derecha es 2.distanceRight * 35 + 750 . Kp es 35. medida = 4 Sistema Figura 8-5 Diagrama de Bloque para Control Proporcional del Servo y Par de IR LED y Detector Izquierdos Programando el Vehículo Boe-Bot Sombra Recuerda que la ecuación para la salida del servo derecho era: Salida Servo derecho = (Punto de Control distancia derecha – Distancia derecha medida) × Kp + Ancho de pulso central Aquí esta un ejemplo de cómo resolver la misma ecuación en PBASIC. la distancia medida es la variable llamada distanceRight que guardará las medidas de la distancia IR. y el ancho de pulso central es 750: pulseRight = 2 .Página 290 · Robótica con el Boe-Bot Ancho de pulso Central 750 Ajuste de salida + +70 Kp X error + -35 X -2 Salida Servo izquierdo 820 Punto de control distancia izq.

2. el producto es sumado al ancho de pulso central. distanceRight es substraída de 2. y entonces el productos es sumado a 750. es definitivamente una buena ocasión para el uso de algunas declaraciones de constantes. al comienzo del programa. Esto es bastante útil para experimentar y entonar los lazos de control proporcional izquierdo y derecho. Primero. Los cambios que hagas al comienzo del programa serán reflejados en todos lados donde estas constantes son usadas. 35. . toda instancia de Kpl en todo el programa cambia de -35 a -40.distanceLeft * (-35) + 750 Ya que los valores -35.distanceRight * Kpr + CenterPulse Lo conveniente de declarar constantes para estos valores es que puedes cambiarlos en un sólo lugar. cambiando la directiva Kpl CON de -35 a -40. Kpl Kpr SetPoint CenterPulse CON CON CON CON -35 35 2 750 Con estas declaraciones de constantes en el programa. El servo izquierdo es diferente porque Kp para ese sistema es -35 pulseLeft = 2 .Capítulo 8: Control de Robot con Detección de Distancia · Page 291 Recuerda que en PBASIC las expresiones matemáticas son ejecutadas de izquierda a derecha.distanceRight * 35 + 750 de esta manera: pulseRight = 35 * (2 – distanceRight) + 750 En esta expresión. y luego. El resultado de esta substracción es entonces multiplicado por Kpr. Después de estas declaraciones de constantes. SetPoint en vez de 2. 35 es multiplicado por el resultado de (2 – distanceRight). Kpr en vez de 35. Puedes usar paréntesis para forzar que un cálculo que esté más a la derecha en una linea de código PBASIC sea realizado primero. puedes usar el nombre Kpl en vez de -35. y 750 tienen sus respectivos nombres. Recuerda este ejemplo: tu puedes reescribir esta línea de código PBASIC: pulseRight = 2 . Por ejemplo. los cálculos de control proporcional se ven así: pulseLeft = SetPoint .distanceLeft * Kpl + CenterPulse pulseRight = SetPoint . y CenterPulse en vez de 750.

√ √ √ √ √ Introduce. y el valor que resulta es sumado/substraído a/de los anchos de pulso que son enviados a los servos izquierdo/derecho. El Boe-Bot debería mantener una distancia fiha entre sí mismo y la hoja de papel.Página 292 · Robótica con el Boe-Bot Programa Ejemplo – FollowingBoeBot. y ejecuta FollowingBoeBot. El BoeBot debería seguirla. la distancia es medida y el la señal de error es determinada. ' -----[ Variables ]---------------------------------------------------------freqSelect irFrequency irDetectLeft irDetectRight distanceLeft distanceRight pulseLeft pulseRight VAR VAR VAR VAR VAR VAR VAR VAR Nib Word Bit Bit Nib Nib Word Word ' -----[ Initialization ]----------------------------------------------------- . Trata de usar la hoja de papel para guiar al Boe-Bot por sus alrededores. alejándose del papel. En otras palabras. Trata de rotar un poco la hoja de papel.bs2.bs2 FollowingBoeBot.5} DEBUG "Program Running!" ' -----[ Constants ]---------------------------------------------------------Kpl Kpr SetPoint CenterPulse CON CON CON CON -35 35 2 750 ' Directiva del Stamp.bs2 ' Boe-Bot adjusts its position to keep objects it detects in zone 2.FollowingBoeBot. debería de retroceder. guarda. Entonces el error es multiplicado por Kp. antes de cada pulso. ' {$STAMP BS2} ' {$PBASIC 2. El Boe-Bot debería de rotar con ella. ' -----[ Title ]-------------------------------------------------------------' Robotica con el Boe-Bot . Mueve la hoja de papel muy cerca del Boe-Bot. ' Directiva de PBASIC. Apunta el Boe-Bot a una hoja de papel tamaño carta (8 ½ × 11”) sostenida en frente del mismo como si se tratase de una pared-obstáculo.bs2 repite el recientemente discutido lazo de control proporcional con cada pulso de servo.

irFrequency irDetectLeft = IN9 distanceLeft = distanceLeft + irDetectLeft FREQOUT 2.bs2 FollowingBoeBot.Capítulo 8: Control de Robot con Detección de Distancia · Page 293 FREQOUT 4.pulseLeft PULSOUT 12. Dondequiera que ves SetPoint. 3000 ' -----[ Main Routine ]------------------------------------------------------DO GOSUB Get_Ir_Distances ' Calculate proportional output.[37500. es en realidad el número 2 (una .bs2 declara cuatro constantes.40500. SetPoint.irFrequency irDetectRight = IN0 distanceRight = distanceRight + irDetectRight NEXT RETURN ' -----[ Subroutine – Get Pulse ]--------------------------------------------Send_Pulse: PULSOUT 13.38250. y CenterPulse usando la directiva CON.distanceLeft * Kpl + CenterPulse pulseRight = SetPoint . 2000. irFrequency FREQOUT 8.39500.pulseRight PAUSE 5 RETURN Funcionamiento del Programa FollowingBoeBot. Kpl.1.1. pulseLeft = SetPoint .41500].distanceRight * Kpr + CenterPulse GOSUB Send_Pulse LOOP ' -----[ Subroutine .Get IR Distances ]-------------------------------------Get_Ir_Distances: distanceLeft = 0 distanceRight = 0 FOR freqSelect = 0 TO 4 LOOKUP freqSelect. Kpr.

bs2. LOOP Tu Turno La Figura 8-6 muestra un Boe-Bot líder seguido por un Boe-Bot sombra. El Boe-Bot líder está ejecutando una versión modificada del programa FastIrRoaming. El control proporcional hace que el vehículo sombra sea un seguidor fiel. DO GOSUB Get_Ir_Distances Las próximas dos líneas de código implementan los cálculos del control proporcional para cada servo.distanceRight * Kpr + CenterPulse Ahora que los cálculos pulseLeft y pulseRight han finalizado. ' Calculate proportional output. la subrutina Send_Pulse puede ser llamada.Página 294 · Robótica con el Boe-Bot constante). es en realidad el número -35. Kpr es en realidad 35.bs2. dondequiera que veas Kpl.distanceLeft * Kpl + CenterPulse pulseRight = SetPoint . y CenterPulse es 750. distanceLeft y distanceRight contienen cada una un número correspondiente a la zone en la cual un objeto fue detectado para los pares IR izquierdo y derecho. pulseLeft = SetPoint . y el BoeBot sombra está ejecutando FollowingBoeBot. Un Boe-Bot líder puede llevar consigo unos 6 ó 7 . Kpl Kpr SetPoint CenterPulse CON CON CON CON -35 35 2 750 La primera cosa que la rutina principal hace es llamar la subrutina Get_Ir_Distances. Luego que la subrutina Get_Ir_Distances finaliza. De igual manera. GOSUB Send_Pulse La porción LOOP del DO…LOOP envía el programa de regreso al comando que se encuentra inmediatamente después de DO al principio del bucle principal.

Haz estas modificaicones al programa SlowerIrRoamingForLeadBoeBot.bs2: √ Incrementa todos los argumentos Duration de PULSOUT de su valor actual 650 a 710.Capítulo 8: Control de Robot con Detección de Distancia · Page 295 Boe-Bots sombra. Reemplaza los resistores de 1 kΩ que conectan P2 y P8 del Boe-Bot líder con los IR LEDs con resistores de 470 Ω ó 220 Ω. Abre FastIrRoaming. Programa el Boe-Bot líder para evadir objeto usando una versión modificada del programa FastIrRoaming. .) √ √ √ √ √ √ Si eres parte de una clase.bs2. √ Reduce todos los argumentos Duration de PULSOUT de su valor actual 850 a 790. Si no eres parte de una clase (y sólo tienes un Boe-Bot) el vehículo sombra seguirá un pedazo de papel o tu mano de igual manera que si siguiera un BoeBot líder.bs2. Figura 8-6 Boe-Bot líder (izq. y dale el nombre SlowerIrRoamingForLeadBoeBot.bs2.) y Boe-Bot sombra (der.bs2 sin ninguna modificación. monta los páneles de papel en la cola y a ambos lados del Boe-Bot líder como se muestra en la Figura 8-6. Solo añade los páneles del lado y la parte posterior del Boe-Bot líder al resto de los Boe-Bot sombra en la cadena. El Boe-Bot sombra debería de ejecutar FollowingBoeBot.

Trata con valores de 0 a 4. Trata de hacer ajustes al valor constante SetPoint. t am ps n cl a ss. Observa la diferencia en cuanto a la responsividad de tu Boe-Bot al seguir un objeto.200 3 1312 X5 B ac k l R ed V ss .Página 296 · Robótica con el Boe-Bot √ Con ambos Be-Bots ejecutando sus programas respectivos. Puedes ajustar los puntos de control y constantes de proporcionalidad para cambiar el comportamiento del Boe-Bot sombra. Cada banda en esta pista contiene tres tiras largas de ¾ in (19 mm) de teipe eléctrico de vinil en una tabla para póster blanca. El Boe-Bot sombra debería seguir a una distancia fija. c om s i 1 U1 S T A MP in S C LA SS 6. coloca el Boe-Bot sombra detrás del Boe-Bot líder. Ningún papel debería ser visible entre las bandas de teipe eléctrico. st a mp si nc a ss . Usa tu mano o una pieza de papel para guiar al Boe-Bot sombra mientras haces estos ejercicios: √ √ Trata de ejecutar FollowingBoeBot.bs2 usando valores constantes de Kpr y Kpl. ACTIVIDAD #3: SIGUIENDO UNA BANDA La Figura 8-7 muestra un ejemplo de una pista que puedes construir y programar a tu Boe-Bot para que la siga.9V D C P9 P8 P 10 P 11 P 12 P 14 P 13 P 15 V dd R st Vn i V ss TM Vs s P0 P2 P4 P6 P8 P1 0 P1 2 P1 4 Vd d 0 1 2 R ese t X1 X3 X3 V ss P1 P1 5 P 3 P 15 P1 4 P 5 P 14 P1 3 P 7 P 13 P1 2 P 9 P 12 P1 1 P 11 P 11 P1 0 P 1 3 P 10 P9 P1 5 P9 P8 Vin P8 P7 P7 P6 P6 P5 P5 P4 P4 P3 P3 P2 P2 P1 P1 P0 P0 X2 P r w R ev C B o a rd o f E d u ca t i o n Vd d + 1514 X4 V dd Vn i © 200 0.003 2 Start Inicio 22” (56 cm) Finish Final 28” (71 cm) 9 Vd c B a t e ry V ss S out Sn i P 6 P 7 P 5 P 4 P 3 P 1 P 2 P 0 A TN Figura 8-7 Pista para seguimiento de banda w w w .9V C D 15 1 4 V dd 13 1 2 R ed B ack l 9 V dc B a t t ery X4 X5 V dd Vn i VVss ss X3 V ss P1 P 3 P 15 P 5 P 14 P 7 P 13 P 9 P 12 P 11 P 11 P 13 P 10 P 15 P 9 Vn P8 i P7 P6 P5 P4 P3 + R eset P2 P1 P0 X2 0 1 2 B o a rd o f E d uc a t i o n P r w S TA S n MP i C S LA S 1 S out Sn i A N T V ss P0 P1 P2 P3 P4 P5 P6 P7 TM Vn i V ss R st V dd P 15 V ss P0 P2 P4 P6 P8 P 10 P 12 P 14 V dd X1 U1 P 14 P 13 P 12 P 11 P 10 P9 P8 w w w . 6. om l c R ev C © 2 000 . siempre y cuando no sea distraído por otro objeto como una mano o una pared cercana. en el rango 15 a 50.

bs2 encontrado en la página 285.Capítulo 8: Control de Robot con Detección de Distancia · Page 297 Construyendo y Probando la Pista Para navegación exitosa en esta pista. Lee Husmeando Interferencia IR en la página 253 ). Reemplaza los resistores de 1 kΩ en serie con los IR LEDs por unos resistores de 2 kΩ para hacer reducir el campo de visión de tu Boe-Bot. . es requerida cierta verificación y ajuste del BoeBot. Probando las bandas √ Apunta tus pares IR hacia abajo y afuera como muestra la Figura 8-8 (la Figura 7-8 de la página 264 es repetida acá por conveniencia). Ejecuta DisplayBothDistances. √ Usa tu tabla para póster y teipe eléctrico para construir la pista mostrada en la Figura 8-7. Materiales Requeridos (1) Lámina de tabla para póster – Dimensiones aproximadas: 22 X 28 in (56 X 71 cm) (1) Rollo de Teipe Eléctrico Negro de Vinil – ¾” (19 mm) de ancho. Mantén tu BoeBot conectado a su cable serial para que puedas observar las distancias mostradas. X5 X4 Vdd Vin Vss + Figura 8-8 Pares IR Dirigidos Hacia Abajo para Buscar la Banda Board of Education Rev C © 2000-2003 Vista Superior Vista Lateral √ √ √ Asegúrate que tu teipe eléctrico esté libre de interferencia generada por luces fluorescentes.

st a mps i nc a ss . Entonces. consulta la sección de Resolución de Problemas de la Pista de Teipe EléctricoIf you are having difficulties getting the higher readings with your electrical tape course. see Resolución de Problemas de la Pista de Teipe Eléctrico en la página 300. Verifica que las medidas de tus zonas indican que un objeto es detectado en una zona bastante cercana.003 2 S TA S i n MP C S LA S 1 S out Sn i A N T V ss P0 P1 P2 P3 P4 P5 P6 P7 TM Vn i V ss R st V dd P 15 V ss P0 P2 P4 P6 P8 P 10 P 12 P 14 V dd U1 P 14 P 13 P 12 P 11 P 10 P9 P8 w w w .Página 298 · Robótica con el Boe-Bot √ √ Comienza colocando tu Boe-Bot de tal manera que se encuentre viendo directamente al fondo blanco de tu tabla para póster como lo muestra la Figura 89. Ambos sensores deberían darte una medida de 1 ó 0. Si tienes dificultades en obtener lecturas más altas con tu pista de teipe eléctrico. om l c Figura 8-9 Prueba para Número de Zona Bajos – Vista Superior √ √ √ Coloca tu Boe-Bot de tal manera que ambos pares de IR LED/detector estén enfocados directamente sobre el centro de tu teipe eléctrico (como en la Figura 8-10 y la Figure 8-11). 6. . o ningún objeto ha sido detectado. ajusta la posición de tu Boe-Bot (acercándolo y alejándolo del teipe) hasta que ambos valores de zona alcancen el nivel 4 ó 5 indicando que un objeto lejano ha sido detectado.9V C D 15 1 4 V dd 13 1 2 R ed B ack l 9 V dc B a t t ery X4 X5 P r w V dd Vn i V ss V ss X3 P1 P 3 P 15 P 5 P 14 P 7 P 13 P 9 P 12 P 11 P 11 P 13 P 10 P 15 P 9 Vn P8 i P7 P6 P5 P4 P3 + P2 R eset P1 P0 X2 0 1 2 B o a rd o f E d uc a t i o n X1 R ev C © 2 000 .

om l c Figura 8-10 Prueba para Número de Zona Alto – Vista Superior Figure 8-11 Prueba para Número de Zona Alto – Vista Lateral Electrical Tape .Capítulo 8: Control de Robot con Detección de Distancia · Page 299 6. st a mps i nc a ss .9V C D 15 1 4 V dd 13 1 2 R ed B ack l 9 V dc B a t t ery X4 P r w S TA S i n MP C S LA S X5 Vn i V ss V dd 1 S out Sn i A N T V ss P0 P1 P2 P3 P4 P5 P6 P7 TM Vn i V ss R st V dd P 15 V ss P0 P2 P4 P6 P8 P 10 P 12 P 14 V dd X1 V ss X3 P1 P 3 P 15 P 5 P 14 P 7 P 13 P 9 P 12 P 11 P 11 P 13 P 10 P 15 P 9 Vn P8 i P7 P6 P5 P4 P3 P2 P1 P0 U1 P 14 P 13 P 12 P 11 P 10 P9 P8 R eset + X2 B o a rd o f E d uc a t i o n R ev C © 2 000 .003 2 0 1 2 w w w .

puedes estar teniendo dificultades para obtener los números bajos cuando los IR/LED detectores están enfocados sobre el fondo blanco. alejados de el borde de la banda. . coloca el Boe-Bot en la pista de manera tal que sus ruedas estén a ambos lados de la línea negra. Si los números de zona siguen siendo bajos. toma una hoja de papel adicional. el detector derecho debería aumentar el valor. Estos LEDs puede que necesiten resistores de 470 Ω (amarillo-violeta-marrón) ó 220 Ω (rojo-rojo-marrón) en serie. Ajustando el IR LED/detector para que esté enfocado más cerca o más lejos de la parte de adelante del Boe-Bot (observa la Figure 8-11) puede ayudar también. asegúrate que las patas de los IR LEDs no están haciendo contacto entre ellas. prueba con una marca distinta de teipe negro eléctrico de vinil. Los detectores IR deberían de estar apuntando un poco hacia afuera. También puedes probar con valores de resistor más bajos como 1 kΩ (marrón-negro-rojo). asegúrate que estás usando resistores de 2 kΩ (rojo-negro-rojo) en serie con tus IR LEDs.7 kΩ para reducir aún más el campo de visión del Boe-Bot. Ve el acercamiento en la Figura 8-12. Si usas antiguos IR LEDs con cubierta de goma en vez de los de la cubierta de plástico de 2-piezas. Si las medidas son más altas. el detector izquierdo debería mostrar el valor más alto. Si estás teniendo problemas con las medidas bajas de zona cuando mides la superficie blanca. Entonces estarás listo para tratar de seguir la banda. También. Verifica que la medida de distancia para ambos pares IR son nuevamente 0 ó 1. Cuando mueves tu Boe-Bot en cualquier dirección indicada por una flecha-doble. √ Ajusta tus pares IR LED/detector hasta que el Boe-Bot pase esta última prueba.Página 300 · Robótica con el Boe-Bot Resolución de Problemas de la Pista de Teipe Eléctrico Si no puedes obtener un valor alto de zona cuando los detectores IR están enfocados sobre el teipe eléctrico. uno u otro par IR será enfocado sobre el teipe eléctrico. Puedes también probar con un 4. significa que necesitan estar apuntados un poco más hacia afuera. y has una banda que contenga cuatro tiras en vez de tres. Ten en cuenta que si mueves al Boe-Bot hacia su izquierda. Si ninguno de éstos métodos funciona. Cuando haces esto. las medidas del par que se encuentra ahora sobre el teipe eléctrico deberían aumentar a 4 ó 5. √ Ahora. pero cuidado que no causes reflexiones del chasis. y si lo mueves hacia su derecha. trata de apuntar los IR LEDs y detectores más hacia abajo y hacia el frente del BoeBot.

bs2. Entonces rodará hacia adelante. Para revertir la dirección en que se mueve el Boe-Bot cuando detecta que el objeto no está a la distancia del punto de control SetPoint. cambia Kpl de -35 a 35.Capítulo 8: Control de Robot con Detección de Distancia · Page 301 X4 X5 6. Ejecuta el programa (mostrado abajo). Cambia la declaración de SetPoint de SetPoint CON 2 a SetPoint CON 3. en la página 292 para hacer que funcione para seguimiento de banda. Este próximo ejemplo usa un punto de control SetPoint de 3. simplemente cambia los signos de las constantes Kpl y Kpr. Programa de Ejemplo: StripeFollowingBoeBot.bs2 √ √ √ √ √ √ Abre FollowingBoeBot. el Boe-Bot debería moverse hacia objetos cercanos al punto de control SetPoint y alejarse de los objetos más alejados de SetPoint.9V C D 15 1 4 V dd 13 1 2 R ed B ack l 9 V dc B a t t ery X4 X5 V dd Vn i V ss V ss X3 P1 P 3 P 15 P 5 P 14 P 7 P 13 P 9 P 12 P 11 P 11 P 13 P 10 P 15 P 9 Vn P8 i P7 P6 P5 P4 P3 + R eset P2 P1 P1 P0 X2 0 1 2 B o a rd o f E d uc a t i o n P r w Vdd Vin Vss S MP TA S n i C S LA S 1 S out Sn i A N T V ss P0 P1 P2 P3 P4 P5 P6 P7 TM Vn i V ss R st V dd P 15 V ss P0 P2 P4 P6 P8 P 10 P 12 P 14 V dd X1 U1 P 14 P 13 P 12 P 11 P 10 P9 P8 w w w . El BoeBot debería esperar allí hasta que coloques tu mano en frente de sus pares IR. . Cambia Kpl de -35 a 35. Cuando pase la banda de inicio.003 2 Figura 8-12 Prueba de Lectura de Banda + Board of Education Rev C © 2000-2003 Acercamiento sobre los Pares IR Vista superior del Boe-Bot a ambos lados de la banda Programando para Seguimiento de Banda Sólo vas a necesitar hacer unos pequeños ajustes al programa FollowingBoeBot. En otras palabras. Vas a necesitar experimentar con tu punto de control SetPoint.bs2 y guárdalo como StripeFollowingBoeBot. retira tu mano. Primero. Los valores de 2 a 4 tienden a funcionar mejor. om l c R ev C © 2 000 .bs2. Esto es opuesto al comportamiento del programa original FollowingBoeBot. Cambia Kpr de 35 a -35.bs2. y cambia Kpr de 35 a -35. st a mps i nc a ss . Coloca tu Boe-Bot en la ubicación “Inicio” mostrada en la Figura 8-13.

bs2 Boe-Bot adjusts its position to move toward objects that are closer than zone 3 and away from objects further than zone 3. om l c R ev C © 2 000 .9V C D 15 1 4 V dd 13 1 2 R ed B ack l 9 V dc B a t t ery X4 X5 V dd Vn i VVss ss V ss X3 P1 P 3 P 15 P 5 P 14 P 7 P 13 P 9 P 12 P 11 P 11 P 13 P 10 P 15 P 9 Vn P8 i P7 P6 P5 P4 P3 + P2 R eset P1 P0 X2 0 1 2 B o a rd o f E d uc a t i o n P r w S TA S n MP i C S LA S 1 S out Sn i A N T V ss P0 P1 P2 P3 P4 P5 P6 P7 TM Vn i V ss R st V dd P 15 V ss P0 P2 P4 P6 P8 P 10 P 12 P 14 V dd X1 U1 P 14 P 13 P 12 P 11 P 10 P9 P8 w w w .StripeFollowingBoeBot. 6.9V D C P9 P8 P 10 P 11 P 12 P 14 P 13 P 15 V dd R st Vn i V ss TM Vs s P0 P2 P4 P6 P8 P1 0 P1 2 P1 4 Vd d 0 1 2 R ese t X1 X3 X3 V ss P1 P1 5 P 3 P 15 P1 4 P 5 P 14 P1 3 P 7 P 13 P1 2 P 9 P 12 P1 1 P 11 P 11 P1 0 P 1 3 P 10 P9 P1 5 P9 P8 Vin P8 P7 P7 P6 P6 P5 P5 P4 P4 P3 P3 P2 P2 P1 P1 P0 P0 X2 P r w R ev C B o a rd o f E d u ca t i o n Vd d + 1514 X4 V dd Vn i © 200 0. 3. y 4 deberían funcionar. st a mp si nc a ss . Cuando ve la banda de “Final. ' Directiva de PBASIC.” debería detenerse y esperar allí.200 3 1312 X5 B ac k l R ed V ss . Asumiendo que puedes obtener medidas de distancia de 5 sobre el teipe eléctrico y 0 sobre la tabla para póster. c om s i 1 U1 S T A MP S in C LA SS 6. ' {$STAMP BS2} ' {$PBASIC 2. Useful for following a 2. Trata con valores distintos de SetPoint y toma notas del desempeño de tu Boe-Bot’s en la pista. ' Directiva del Stamp.25 inch wide vinyl electrical tape stripe. ' -----[ Variables ]---------------------------------------------------------- 9 Vd c B a t e ry V ss S out Sn i P 6 P 7 P 5 P 4 P 3 P 1 P 2 P 0 A TN w w w .Página 302 · Robótica con el Boe-Bot √ y debería de empezar a seguir la banda.003 2 InicioStart 22” (56 cm) Figura 8-13 Pista de Seguimiento de Banda Final Finish 28” (71 cm) ' ' ' ' ' -----[ Title ]-------------------------------------------------------------Robotica con el Boe-Bot . los valores constantes de SetPoint de 2. t am ps n cl a ss.5} DEBUG "Program Running!" ' -----[ Constants ]---------------------------------------------------------Kpl Kpr SetPoint CenterPulse CON CON CON CON 35 -35 3 750 ' Change from -35 to 35 ' Change from 35 to -35 ' Change from 2 to 3.

irFrequency irDetectLeft = IN9 distanceLeft = distanceLeft + irDetectLeft FREQOUT 2.39500.[37500.Capítulo 8: Control de Robot con Detección de Distancia · Page 303 freqSelect irFrequency irDetectLeft irDetectRight distanceLeft distanceRight pulseLeft pulseRight VAR VAR VAR VAR VAR VAR VAR VAR Nib Word Bit Bit Nib Nib Word Word ' -----[ Initialization ]----------------------------------------------------FREQOUT 4.irFrequency irDetectRight = IN0 distanceRight = distanceRight + irDetectRight NEXT RETURN . 2000.1. irFrequency FREQOUT 8.Get IR Distances ]-------------------------------------Get_Ir_Distances: distanceLeft = 0 distanceRight = 0 FOR freqSelect = 0 TO 4 LOOKUP freqSelect.41500].1. 3000 ' -----[ Main Routine ]------------------------------------------------------DO GOSUB Get_Ir_Distances ' Calculate proportional output. pulseLeft = SetPoint .distanceLeft * Kpl + CenterPulse pulseRight = SetPoint .40500.38250.distanceRight * Kpr + CenterPulse GOSUB Send_Pulse LOOP ' -----[ Subroutine .

pulseRight PAUSE 5 RETURN Tu Turno – Concurso de Seguimiento de Banda Puedes convertir esto en un concurso en el que el menor tiempo gane. experimenta con distintos valores para SetPoint. y Kpr.Get Pulse ]--------------------------------------------Send_Pulse: PULSOUT 13. .” Puedes inventar otros concursos también. dado que el BoeBot espere fielmente en las bandas de “Inicio” y “Final. Para mejor desempeño.Página 304 · Robótica con el Boe-Bot ' -----[ Subroutine . Kpl.pulseLeft PULSOUT 12.

se introdujo el comando LOOKUP como una manera sencilla de usar la secuencia de conteo proveniente de un bucle FOR…NEXT para indicar listas secuenciales de números. Preguntas 1. Para el Boe-Bot. Control proporcional en un sistema de lazo cerrado es un algoritmo donde el error es multiplicado por una constante de proporcionalidad para determinar la salida del sistema. El BASIC Stamp fue programado en PBASIC para operar lazos de control para tanto el servo izquierdo como el derecho y los detectores de ditancia.5 kHz (más sensible) a 41. Debido a que no todas las frecuencias estaban separadas por el mismo valor. cuál número será colocado en la variable prime en este comando LOOKUP? ¿Qué valores guardará prime cuando index es 0. Observa el Boe-Bot en Acción en el sitio web www. y tambien usó este tipo de control para seguir una banda de teipe eléctrico negro. Remuestreando la distancia y ajustando las salidas de los servos antes de mandar los pulsos a los servos.parallax. ¿Si la variable index es 4.Capítulo 8: Control de Robot con Detección de Distancia · Page 305 RESUMEN El concepto de Barrido de Frecuencia fue introducido como una manera de determinar distancias usando los IR LED y detectores del Boe-Bot. y 7? . tanto la salida del sistema como el punto de control estaban en términos de distancia.com! Puedes ver al Boe-Bot resolviendo el Proyecto 2 del Capítulo 8 y otros clips de video Robóticos en la “Robo Video Gallery” bajo el menú “Robotics Menu” en www. 2.parallax. FREQOUT fue usado para enviar señales IR a una frecuencia en el rango de 37. El Boe-Bot fue capaz de usar control proporcional para rastrear objetos y seguirlos. el lazo de control hizo que el Boe-Bot respondiera a los movimientos de objetos. ¿Cuál es la sensibilidad relativa del detector IR si usas FREQOUT para enviar una armónica de kHz? ¿Cuál es la sensibilidad relativa con una armónica de 36 kHz? 2. Los sistemas de Control fueron introducidos junto con control de lazo cerrado. El error es el resultado de la medida de la salida de sistema subtraída del punto de control. La distancia fue determinada determinando cuáles frecuencias causaban que el detector IR reportara que un objeto fue detectado y cuáles no. 1.com. Considera el pedazo de código abajo.5 kHz (menos sensible).

13. ¿En qué orden son evaluadas las expresiones matemáticas en PBASIC? Cómo puedes invalidar este orden? 4. a tres-vías. sin control proporcional. y otro que sólo incremente cuando el Boe-Bot proporcione un pulso hacia adelante. Las intersecciones pueden ser 90° izquierda. 2.Página 306 · Robótica con el Boe-Bot LOOKUP index. Usa una maniobra pre-programada para dar vuelta de 90°. Recuerda reiniciar ambos contadores cada vez que el contador de bucle llegue a 60. Si menos de 30 pulsos hacia adelante fueron aplicados. el Boe-Bot se quedará inmóvil en las intersecciones. 5. 3. El objetivo es hacer que el Boe-Bot se dé cuenta que no está haciendo nada y salga de su bucle de control proporcional. . Después de que el Boe-Bot reconozca que está en una intersección. 90° derecha. 11. Crea intersectiones de distinto tipo usando teipe eléctrico y programa al Boe-Bot para que navegue a través de ellas. ¿Qué directiva PBSAIC usas para declarar una constante? ¿Cómo puedes darle al número 100 el nombre “BoilingPoint”? Ejercicios 1. 17. [2. uno que se incremente en 1 con cada pasada por el DO…LOOP. 3. y a cuatro-vías. Cuando el Boe-Bot ejecute StripeFollowingBoeBot. Cuando el contador que incrementa con cada pasada por el DO…LOOP llegue a 60. 19]. el Boe-Bot está probablemente atascado. Proyectos P1.bs2. Haz una lista de sensibilidad del detector IR para cada frecuencia en kHz mostrada en la Figura 8-1. Para intersecciones a tres-vías y cuatrovías el Boe-Bot puede dar vuelta a la izquierda o a la derecha. Pistas: Puedes hacer esto creando dos contadores. y luego retroceder para determinar si observa teipe eléctrico o fondo blanco a la izquierda y a la derecha. necesita moverse al borde superior de la intersección. prime 3. entonces deberá hacer la maniobra de 90° correcta. 7. Haz una lista de chequeo para las pruebas qeu debes realizar para asegurarte de un fiel seguimiento de la banda. usa IF…THEN para chequear cuantos pulsos hacia adelante fueron aplicados. Esto requerirá que el Boe-Bot reconozca que es una intersección. Escribe un segmento de código que haga el barrido de frecuencia para sólo cuatro frecuencias en vez de cinco.

y luego programa el Boe-Bot para que lo resuelva! .Capítulo 8: Control de Robot con Detección de Distancia · Page 307 P2.Diseña un concurso de resuloción de laberinto por tí mismo. Proyecto Avanzado.

bs2". coloca sólo cuatro frecuencias en la lista LOOKUP. • Ejecuta Display BothDistances. 40500]. irFrequency irDetect = IN9 … commands not shown NEXT E3. 39500. Una variable de tamaño bit llamada isStuck es usada como aviso para hacerle saber al programa Principal si se ha alcanzado una intersección. El servo izquierdo fue escogido arbitrariamente para contar los pulsos hacia adelante. Las expresiones son evaluadas de izquierda a derecha. Frecuencia (kHz): 34 35 36 37 38 39 40 41 42 Sensibilidad : 14% 30% 50% 76% 100% 80% 55% 35% 16% E2. Para resolver este problema. prime = 5 index = 7. 38750. usando . [37500. prime = 19 Q3.bs2. irFrequency FREQOUT 8. La sensibilidad relativa a 35 kHz es 30%. usa paréntesis para cambiar el orden. En la subrutina Navigate_Intersection.Página 308 · Robótica con el Boe-Bot Preguntas Q1. el sensor sobre la línea debería medir 4-5. prime = 2 index = 1. Usa la directiva CON. • Mueve el Boe-Bot para atrás y adelante sobre la línea. 1. En la solución abajo. el Boe-Bot adelanta pasando la intersección y luego retrocede. • A ambos lados de la línea. chequeando los sensores. prime = 3 index = 2. Q4. • Husmea interferencia IR con "IrInterferenceSniffer. FOR freqSelect = 0 TO 3 LOOKUP freqSelect. la subrutina Check_For_Intersection implementa el algoritmo descrito. • Medidas negras deberían ser 4-5 en ambos sensores. Para 36 kHz. prime = 11 index = 0. P1. ambos sensores deberían mostrar medir 0-1. • Medidas blancas deberían ser 0-1 en ambos sensores. y disminuye en uno el índice del bucle FOR…NEXT. BoilingPoint CON 100 E1. es 50% Q2. Para invalidar. Cuando index = 4.

' Directiva de PBASIC. Una constante. así como también añadiendo un poco de personalidad y diversión.bs2 ' Directiva del Stamp. Turn90Degree. ' ' ' ' -----[ Title ]------------------------------------------------------Robotica con el Boe-Bot . 2000. Si la intersección es a 3-vías o 4-vías. and 4-way intersections. el Boe-Bot arbitrariamente volteará en la dirección en la que el primer negro fue detectado. Entonces hace una vuelta de 90 grados preprogramada en la dirección correcta.is bot stuck? ' -----[ Initialization ]---------------------------------------------FREQOUT 4.bs2 Navigate 90 degree left/right.IntersectionsBoeBot.5} DEBUG "Program Running!" ' -----[ Constants ]--------------------------------------------------Kpl Kpr SetPoint CenterPulse Turn90Degree RightLED LeftLED CON CON CON CON CON PIN PIN 35 -35 3 750 30 1 10 ' Left proportional constant ' Right proportional constant ' 0-1 is White. es proveída para entonar la vuelta de 90 grados. lo cual ayuda en la resolución de problemas y entendiendo lo que el Boe-Bot está viendo y decidiendo. 3000 ' -----[ Main Routine ]------------------------------------------------ . 4-5 is Negro ' Pulses needed for 90 turn ' LED Indicators ' -----[ Variables ]--------------------------------------------------freqSelect irFrequency irDetectLeft irDetectRight distanceLeft distanceRight pulseLeft pulseRight numPulses fwdPulses counter isStuck VAR VAR VAR VAR VAR VAR VAR VAR VAR VAR VAR VAR Nib Word Bit Bit Nib Nib Word Word Byte Byte Byte Bit ' Sweep through 5 frequencies ' Freq sent to IR emitter ' Store results from detectors ' Calculate distance zones ' Servo pulseWidths ' Count total pulses ' Count forward pulses ' Boolean variable. 3-way. Based on StripeFollowingBoeBot. Indicadores visuales y audibles están incluídos.Capítulo 8: Control de Robot con Detección de Distancia · Page 309 DO…LOOP…UNTIL. ' {$STAMP BS2} ' {$PBASIC 2.

750 ' without proportional control PULSOUT 12.3. turn toward ' whichever the bot sees first (random).distanceRight * Kpr + CenterPulse GOSUB Send_Pulse GOSUB Check_For_Intersection IF (isStuck = 1) THEN GOSUB Make_Noise GOSUB Navigate_Intersection ENDIF LOOP ' -----[ Subroutines ]------------------------------------------------Navigate_Intersection: ' Go forward until both sensors read white. DO pulseLeft = 850: pulseRight = 650 ' Forward GOSUB Send_Pulse GOSUB Get_Ir_Distances GOSUB Update_LEDs LOOP UNTIL (distanceLeft <=2) AND (distanceRight <=2) GOSUB Stop_Quickly ' Don't coast forward ' Are we stuck at intersection? ' Audible indication ' Navigate through it ' Now back up until one detector sees the negro. DO pulseLeft = 650: pulseRight = 850 ' Backward GOSUB Send_Pulse GOSUB Get_Ir_Distances GOSUB Update_LEDs LOOP UNTIL (distanceLeft >=4) OR (distanceRight >=4) GOSUB Stop_Quickly ' Don't coast backward ' Make 90 degree turn in direction of the detector which sees negro IF (distanceLeft >=4) THEN ' Left detector reads negro FOR counter = 1 TO Turn90Degree ' Turn 90 degrees left PULSOUT 13.distanceLeft * Kpl + CenterPulse pulseRight = SetPoint . pulseLeft = SetPoint . 650 PAUSE 20 ' so use PAUSE 20 NEXT ELSEIF (distanceRight >=4) THEN ' Right detector reads negro .L & R turn will see ' negro on one detector.Página 310 · Robótica con el Boe-Bot DO GOSUB Get_Ir_Distances GOSUB Update_LEDs ' Read IR sensors ' Indicate white/negro line ' Calculate proportional output and move accordingly.or 4-way will see both negro. through the intersection.

Capítulo 8: Control de Robot con Detección de Distancia · Page 311 FOR counter = 1 TO Turn90Degree PULSOUT 13. IF (distanceLeft >= 4) THEN HIGH LeftLED ELSE LOW LeftLED IF (distanceRight >= 4) THEN HIGH RightLED ELSE LOW RightLED RETURN . Continue following the negro line. 3800 + (counter * 10) NEXT RETURN Update_LEDs: ' Use LEDs to indicate whether detectors are seeing negro or white. If there are less ' than 30 forward pulses per total of 60 pulses. robot is stuck ' Reset counters back to zero ' (Could reset in =60 case but ' it spoils cool Make_Noise) Make_Noise: ' Makes an increasing tone. of pulses vs the forward pulses. At this point the Boe-Bot should have turned 90 degrees ' to follow the intersection. robot is likely stuck ' at an intersection. isStuck = 0 numPulses = numPulses + 1 ' Initialze Boolean variable ' Count total pulses sent SELECT numPulses CASE < 60 IF (pulseLeft > CenterPulse) THEN fwdPulses = fwdPulses + 1 ' Count foward pulses ENDIF ' (forward is any pulse > 750) CASE = 60 IF (fwdPulses < 30) THEN isStuck = 1 ENDIF CASE > 60 numPulses = 0 fwdPulses = 0 ENDSELECT RETURN ' If we have sent 60 pulses ' how many were forward? ' If < 30. 850 PULSOUT 12. RETURN Check_For_Intersection: ' Keep track of no. Negro is a distance reading > or = 4 . 100. Negro = On. ' White = Off. proportional to number of forward pulses FOR counter = 1 TO fwdPulses STEP 3 FREQOUT 4. 750 PAUSE 20 NEXT ENDIF ' Turn 90 degrees right ' That's it.

O.pulseRight PAUSE 5 ' PAUSE reduced due to IR readings RETURN P2. White surface give 0-1 reading. Negro line gives 4-5 ' reading. listado en la parte de atrás de la página de título de Robótica con el BoeBot.com.irFrequency irDetectLeft = IN9 distanceLeft = distanceLeft + irDetectLeft FREQOUT 2. distanceLeft = 0 distanceRight = 0 FOR freqSelect = 0 TO 4 LOOKUP freqSelect.Página 312 · Robótica con el Boe-Bot Stop_Quickly: ' This stops the wheels so the Boe-Bot does not "coast" forward.41500]. PULSOUT 13.1. . 750 PAUSE 20 RETURN Get_Ir_Distances: ' Read both IR pairs and calculate the distance.[37500.39500. PULSOUT 13.40500. 750 PULSOUT 12. Si creas un proyecto de laberinto interesante para el Boe-Bot y quieres compartirlo con otros. puedes registrarte en el Grupo Yahoo! StampsInClass (en inglés).1.38250.pulseLeft PULSOUT 12. irFrequency FREQOUT 8. puedes mandar un correo electrónico al Equipo Educacional de parallax a la dirección stampsinclass@parallax.irFrequency irDetectRight = IN0 distanceRight = distanceRight + irDetectRight NEXT RETURN Send_Pulse: ' Send a single pulse to the servos in between IR readings.

Deshabilita cualquier software de comunicación con una palmtop. Si tú estás usando una fuente de alimentción DC que se conecta a la pared. Descarta baterías muertas y funcionamiento incorrecto o inadecuado de las fuentes de alimentación usando una batería nueva de 9 V o cuatro nuevas baterías alcalinas AA de 1. √ √ Si tu ventana de Identificación se ve similar a la Figura A-1. √ Si estás usando un BASIC Stamp y una Board of Education. Asegúrate que el BASIC Stamp esté firmemente insertado en su enchufe. La mayoría de los cables nulos de módem están etiquetados NULL o Null Modem. inspecciona visualmente el cable para ver si encuentras dicha etiqueta. también chequea lo siguiente: √ √ Asegúrate que el BASIC Stamp sea introducido en su enchufe con el lado correcto hacia arriba como se muestra en la Figura 1-24 en la página 18. Asegúrate que tu cable serial sea normal (straight-through). asegúrate que la el interruptor de alimentación esté colocado en la posición-1.Apéndice A: Resolución de Problemas de Comunicación · Page 313 Apéndice A: Resolución de Problemas de Comunicación entre la PC y el BASIC Stamp Aquí está una lista de cosas para intentar arreglar de manera rápida alguna dificultad que se presente en la comunicación entre el BASIC Stamp Editor y tu BASIC Stamp: √ √ √ √ Si estás usando la Board of Education Rev C. revisa que esté conectada tanto a la pared como a la Board of Education.5 V en el paquete de baterías. quiere decir que el BASIC Stamp Editor no puede encontrar tu BASIC Stamp en ningún puerto COM. Asegúrate que el cable serial esté firmemente conectado tanto al puerto COM de la computadora como al conector DB9 en la Board of Education o BASIC Stamp HomeWork Board. NO USES UN CABLE NULO DE MODEM. Verifica que la luz verde Pwr en la Board of Education emita luz cuando la fuente de alimentación DC está enchufada. Si tienes este problema trata lo siguiente: . Inspecciona visualmente el módulo BASIC Stamp para asegurarte que ninguno de sus pines está doblado bajo el módulo en vez de hundidos en su enchufe en la Board of Education.

Si no estás seguro a cuál puerto COM está conectado tu BASIC Stamp. haz clic en el botón Refresh para encontrar si el BASIC Stamp 2 es detectado ahora. Cierra la ventana de Identificación. Panel de control → Impresoras y otro hardware. Cuando regreses a la ventana de Identificación.Página 314 · Robótica con el Boe-Bot Figura A-1 Ventana de Identificación Ejemplo: el BASIC Stamp 2 no ha sido encontrado en ningún puerto COM. Trata con la prueba Run → Identify nuevamente. Haz clic en la pestaña Editor Operation. Configuración → Panel de control → Sistema → Hardware → Administrador de dispositivos → Puertos (COM & LPT). haz clic en Edit y selecciona Preferences. En el BASIC Stamp Editor. y establece Default COM Port como AUTO. puede ser que necesites buscar en tu para encontrar el puerto COM en uso. o si estás usando un adaptador de puerto USB a serial. haz las selcciones listadas de acuerdo a tu sistema operativoTo view the list of COM ports in use. Seleccione Hardware → Administrador de dispositivos → Puertos Configuración → Panel de control → Sistema → Hardware → Administrador de dispositivos → Puertos (COM & LPT). pero no aparece en la ventana de Identificación: √ √ √ √ Usa el botón Edit Port List para agregar el puerto COM. Para ver una lista de puertos COM en uso. Windows® XP Pro: . √ √ Haz clic en el botón de Inicio en el escritorio de tu computadora. Si conoces el número de puerto COM. en el recuadro Ver también seleccione Sistema. make the selections listed next to your operating system : Windows® 98: Windows® 2000: Windows® XP: Panel de control → Sistema → Hardware → Administrador de dispositivos → Puertos (COM & LPT1).

toma nota de los puertos COM listados Si uno o más de estos puertos COM no aparecen en la lista de tu BASIC Stamp Editor. Toma nota del puerto COM con los mensajes “Yes” y prueba lo siguiente: Windows® 98: √ √ √ √ √ √ √ Haz clic en el botón Inicio en tu escritorio. puede ser que necesites cambiar los parámetros de tus Búferes FIFO. Haz clic en OK cada vez que lo necesites para cerrar cada ventana y vuelve al BASIC Stamp Editor.” busca el puerto COM que diga FTDI USB to Serial COM… Repite la prueba Run → Identify. Si estás usando un adaptador “FTDI USB to Serial. Si tienes un mensaje de error “No BASIC Stamp Found” pero la prueba Run → Identify muestra “Yes” en ambas columnas para uno de los puertos COM. Haz clic en el botón Edit Ports List y agrega los números de puerto COM faltantes. ¿Todavía no se detecta tu BASIC Stamp? √ √ Si tienes más de un puerto COM. Esto ocurre ocasionalmente con los usuarios de Microsoft Windows® 98 y XP. trata de conectar tu Board of Education o BASIC Stamp HomeWork Board a un puerto COM diferente y observa si la prueba Run → Identify funciona. toma nota de los números para cada puerto COM que no aparece en la lista ahora. Intenta descargar el programa una vez más. Selecciona el puerto COM que se usó en la prueba Run → Identify. la ventana de Identificación debería "encontrar" tu BASIC Stamp 2. Selecciona Configuración→ Panel de control → Sistema → Administrador de dispositivos → Puertos (COM & LPT). Repite la prueba Run → Identify nuevamente. esta vez. Desmarca la casilla llamada “Usar búferes FIFO” y haz clic en OK. trata en la computadora distinta.Apéndice A: Resolución de Problemas de Comunicación · Page 315 √ √ √ √ √ Si estás usando un puerto serial (no un adaptador USB a serial). Windows® 2000: . Selecciona Propiedades → Configuración de puerto → Opciones avanzadas. Si tienes una segunda computadora.

Selecciona Configuración de puerto → Opciones avanzadas. Windows® XP Pro: √ √ √ √ √ √ √ Haz clic en el botón Inicio en tu escritorio. puedes ir al sitio web www. Selecciona Configuración de puerto → Opciones avanzadas. Intenta descargar el programa una vez más. O.Página 316 · Robótica con el Boe-Bot √ √ √ √ √ √ √ Haz clic en el botón Inicio en tu escritorio. Intenta descargar el programa una vez más. Selecciona Hardware → Administrador de dispositivos → Puertos. Selecciona Panel de control → Sistema → Hardware → Administrador de dispositivos → Puertos (COM & LPT). Desmarca la casilla llamada “Usar búferes FIFO” y haz clic en OK. Selecciona el puerto COM que se usó en la prueba Run → Identify.com y hacer clic en el link de “Support” (en inglés). Windows® XP: √ √ √ √ √ √ √ √ √ Haz clic en el botón Inicio en tu escritorio. Selecciona Configuración→ Panel de control → Sistema → Hardware → Administrador de dispositivos → Puertos (COM & LPT). Desmarca la casilla llamada “Usar búferes FIFO” y haz clic en OK. Haz clic en OK cada vez que lo necesites para cerrar cada ventana y vuelve al BASIC Stamp Editor. Introduce el número del puerto COM que se usó en la prueba Run → Identify. mandar un correo a . Desmarca la casilla llamada “Usar búferes FIFO” y haz clic en OK. Selecciona Propiedades → Configuración de puerto → Opciones avanzadas.parallax. Haz clic en OK cada vez que lo necesites para cerrar cada ventana y vuelve al BASIC Stamp Editor. Selecciona el número del puerto COM que se usó en la prueba Run → Identify. Si ninguna de estas soluciones te funciona. En el recuadro Ver también selecciona Sistema. Selecciona Panel de control → Impresoras y otro hardware. Haz clic en OK cada vez que lo necesites para cerrar cada ventana y vuelve al BASIC Stamp Editor. Intenta descargar el programa una vez más.

com/group/ParallaxenEspanol/ . Para ayuda en español únete a la lista de discusión en Yahoo! Parallax en Español.groups.com (en inglés) o llamar al Soporte Técnico (en inglés) de manera gratuita dentro de los EE. Javelin Stamp y sensores y aplicaciones que comercializa Parallax. http://espanol. al 1-888-99-STAMP.yahoo. Esta lista de discusión está orientada a usuarios de productos Parallax.Apéndice A: Resolución de Problemas de Comunicación · Page 317 support@parallax. Se intercambian ideas y consultas sobre productos como los microcontroladores BASIC Stamp.UU.

.

Apéndice B: Componentes y Características del BASIC Stamp · Page 319 Apéndice B: Componentes y Características del BASIC Stamp y la Plaqueta de Soporte El Módulo Microcontrolador BASIC STAMP® 2 La Figura B-1 muestra de cerca el módulo microcontrolador BASIC Stamp® 2 microcontroller module. . Sus componentes más importantes y sus funciones están respectivamente denotadas.

Figura B-2: Plaqueta de Soporte Board of Education® Rev C . Sus componentes más importantes y sus funciones entán respectivamente denotadas.Página 320 · Robótica con el Boe-Bot Figura B-1: Módulo Microcontrolador BASIC Stamp® 2 Componentes y sus Funciones La Plaqueta de Soporte Board of Education® Rev C La plaqueta de soporte Board of Education® Rev C para los módulos microcontroladores de 24-pines BASIC Stamp® es mostrada en la Figura B-2.

Sus componentes más importantes y sus funciones están respectivamente denotadas.Apéndice B: Componentes y Características del BASIC Stamp · Page 321 La Plataforma de Proyecto BASIC Stamp® HomeWork Board™ La plataforma de proyecto BASIC Stamp® HomeWork Board™ es mostrada en la Figura B-3. Figura B-3: Plataforma de Proyecto BASIC Stamp® HomeWork Board™ .

Página 322 · Robótica con el Boe-Bot La Plaqueta de Soporte Board of Education® Rev B La plaqueta de soporte Board of Education® Rev B para los módulos microcontroladores de 24-pines BASIC Stamp® es mostrada en la Figura B-2. Sus componentes más importantes y sus funciones entán respectivamente denotadas. Figure B-4: Plaqueta de Soporte Board of Education® Rev B .

Tabla C-1: Código de Color para Valores de Resistor Código de Tolerancia Dígito 0 1 2 3 4 5 6 7 8 9 Color Negro Marrón Rojo Naranja Amarillo Verde Azul Violeta Gris Blanco Primer Dígito Número de Ceros Segundo Dígito Figura C-1 Códigos de Colores de Resistor . Para las actividades en este libra la tolerancia del resistor no importa. La Figura C-1 muestra el uso de cada color con la tabla para determinar el valor del resistor. pero su valor sí. Por ejemplo. Existe una combinación de colores diferentes para cada valor de resistencia. Cada barra de color te dice el valor de resistor en correspondencia a un dígito. y estos colores/dígitos aparence listados en la Tabla C-1. plateada (10%).Apéndice C: Código de Colores de un Resistor · Page 323 Apéndice C: Código de Colores de un Resistor Resistores como los que estamos usando en esta guía para el estudiante tienen bandas de colores que te indican cuál es el valor de su resistencia. La tolerancia es medida en porcentaje. Puede existir una cuarta banda que indica la tolerancia del resitor. o sin ninguna banda (20%). el código de color para el resistor de 470 Ω es amarillo-violeta-marrón. y te indica cuand lejos se puede encontrar del valor real de resistencia del resitor. La cuarta banda puede ser dorada (5%).

La segunda banda es violeta. Ya que marrón es 1. La tercera banda es marrón. significa agrega un cero a la derecha de los dos primeros dígitos. Amarillo-Violeta-Marrón = 4-7-0.Página 324 · Robótica con el Boe-Bot Aquí está un ejemplo que muestra como la Tabla C-1 y la Figura C-1 pueden ser usadas para determinar el valor de un resistor demostrando que amarillo-violeta-marrón es en realidad 470 Ω: • • La primera banda es amarilla. . lo que significa que el dígito de más a la izquierda es un 4. lo que significa que el próximo dígito es un 7.

y protoboard presoldada (enchufes blancos) La protoboard tiene 17 filas de enchufes separadas en dos columnas por medio de una hendidura. Esta protoboard. Estos símbolos de . Los enchufes negros en la izquierda están denotados P0. P1. es conocida como área de prototipos (como se muestra en Figura D-1). es conocido como una protoboard presoldada. Estos enchufes te permiten conectar tu circuito a los pins de entrada/salida del BASIC Stamp. o enchufes en ella. y Vss. Cada fila de cinco enchufes está conectada eléctricamente dentro de la protoboard. Los componentes están conectados entre sí con los enchufes de la protoboard. Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss Figura D-1 Area de prototipos Terminales de alimentación (enchufes negros en la parte de arriba). Vin. hasta P15. Puedes usar estas filas de enchufes para conectar componentes como lo determina el diagrama de un circuito. que son los enchufes negros en la parte superior denotados Vdd.Apéndice D: Reglas para Uso de la Protoboard · Page 325 Apéndice D: Reglas para Uso de la Protoboard Mira tu Plaqueta de Educación o Plaqueta de Tareas. acceso a pines I/O (enchufes negros en la parte lateral). La hendidura separa cada una de las filas de enchufes en dos filas de a cinco. entonces se encuentran eléctricamente conectados entre sí. El cuadrado blanco con muchos huecos. Los circuitos de ejemplo en este texto son construidos enchufando los componentes en estos pequeños enchufes. en combinación con las filas negras de enchufes en dos de sus lados. Un diagrama de circuito es un mapa que muestra como conectar los componentes entre sí. Tu suministrarás electricidad a tu circuito proveniente de los terminales de alimentación. Este usa símbolos únicos para representar cada componente. Si insertas dos cables en cualquier par de enchufes en la misma fila de 5 enchufes.

Para cada una de estas partes. esto se consigue conectando el otro terminal del resistor en la misma fila de 5 enchufes que el terminal + del LED. el otro terminal del símbolo del resistor está conectado por medio de una línea al terminal + del símbolo del LED. la línea indica que se ha hecho una conexión eléctrica. El otro terminal del LED está mostrado conectado al símbolo de Vss en el . Examinemos un ejemplo que use un diagrama para conectar las partes mostradas en la Figura D-2. En el diagrama. uno de los dos terminales del símbolo del resistor está enchufado en uno de los enchufes marcados Vdd. Oro Plata o nada Amarillo Marrón Violeta Figura D-2 Dibujos de parte y símbolos de diagrama LED(izquierda) y resistor de 470 Ω (derecha) + 470 Ω LED La Figura D-3 muestra un ejemplo de un diagrama de circuito en la izquierda y en la derecha un dibujo de circuito que puede ser construido usando este diagrama. y Vss tienen sus símbolos respectivos. Las líneas también pueden ser usadas para conectar componentes a fuentes de alimentación. Toma en cuenta como el diagrama muestra que un lado de la línea zig-zag que denota un resistor está conectada al símbolo de Vdd. Vin es el terminal positivo de la fuente de alimentación (batería). Cuando dos símbolos en el circuito están conectados por medio de líneas en el diagrama. el dibujo de la parte es mostrado por encima del símbolo de diagrama respectivo.Página 326 · Robótica con el Boe-Bot componentes están conectados por medio de líneas para indicar una conexión eléctrica. Vdd. Vin. Esto conecta eléctricamente los dos terminales. y Vdd está regulado a +5 voltios. Recuerda. Vss corresponde al terminal negativo de la fuente de alimentación (batería) de la Plaqueta de Educación o de la Plaqueta de Tareas BASIC Stamp. En el dibujo. la línea indica que dos partes están eléctricamente conectadas/ En es dibujo.

P14 en vez de Vdd. principalmente porque el resistor se muestra dibujado horizontalmente en vez de verticalmente. En el dibujo. El diagrama podría verse más distinto que como está.Apéndice D: Reglas para Uso de la Protoboard · Page 327 diagrana. . Vdd Vin Vss Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 + 470 Ω Figura D-3 Diagrama de ejemplo y Diagrama de conexión Diagrama (izquierda) y diagrama de conexión (derecha) LED Vss La Figura D-3 muestra un segundo ejemplo de un diagrama y un diagrama de conexión. El diagrama sólo difiere por una conexión. el otro terminal del LED está enchufado en uno de los enchufes marcados Vss. El diagrama de conexión muestra como esta diferencia es manejada con el terminal del resistor que antes estaba conectado en Vdd. Pero en término de conexiones. El terminal del resistor que antes estaba conectado a Vdd está ahora conetado al pin I/O 14 del BASIC Stamp. ahora conectado en P14. solo difiere en una. y el terminal – del LED conectado a Vss. Este diagrama muestra P14 conectado a un terminal de un resistor. con el otro terminal conectado al terminal + de un LED.

01 µF Ya que este dibujo esquemático en la Figura D-5 requiere un resistor de 220 Ω. el primer paso es consultar el Apéndice C: Código de Colores de un Resistor para determinar el código de color para un resistor de 220 Ω. Los símbolos esquemáticos y dibujos de partes para estos dos componentes aparecen en la Figura D-4. Este resistor está conectado a P6 en el dibujo esquemático. Rojo. Figura D-4 Dibujos de Partes y Símbolos Esquemáticos Fotoresistor (arriba) y capacitor no polarizado (abajo) 0. El código de color es Rojo. Marrón.Página 328 · Robótica con el Boe-Bot Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss + P14 470 Ω LED Figura D-4 Diagrama de ejemplo y Diagrama de conexión Diagrama (izquierda) y diagrama de conexión (derecha) Vss Aquí esta un ejemplo más complejo que requiere dos partes adicionales. el cual corresponde a la pata . un fotoresistor y un capacitor.

En el dibujo esquemático.1 µF Figura D-5 Dibujo esquemático de Resistor. En la protoboard. En este caso. completando el circuito. P6 220 Ω 0. un cable fue usado para conectar Vss a una fila en la protoboard. En el dibujo esquemático. Entonces. Puedes usar un cable para conectar una fila entera en la protoboard a otra fila. Aquí está un truco para estar pendiente al construir circuitos en una protoboard. Esta fila también tiene patas del capacitor y fotoresistor conectadas a Vss. las patas para el capacitor y fotoresistor fueron enchufadas en la misma fila. la otra pata del resistor está conectada en una de las filas de 5 enchufes. los otros terminales del fotoresistor y capacitor están conectados a Vss.Apéndice D: Reglas para Uso de la Protoboard · Page 329 del resistor conectada en el enchufe denotado P6 en el área de prototipo (Figure D-6). sino dos terminales de otros componentes. y Capacitor Vss . o incluso a pines I/O o terminales de alimentación como Vdd o Vss. Un terminal del fotoresistor y uno del capacitor comparten esta conexión. la otra pata del resistor está conectada a no uno. Fotoresistor.

y Capacitor Observa la localización alternativa de las partes. y Capacitor Ten en cuenta que los diagramas de cableado presentados aquí como soluciones a los dibujos esquemáticos no son las UNICAS soluciones para dichos dibujos.Página 330 · Robótica con el Boe-Bot Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss Figure D-6 Diagrama de conexión de Resistor. Sigue las conexiones y convéncete que de hecho satisface el dibujo esquemático. la Figura D-7 muestra otra solución para el dibujo esquemático recientemente discutido. . Fotoresistor. Vdd X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vin Vss Figura D-7 Diagrama de conexión de Resistor. Fotoresistor. Por ejemplo.

Toda la información en este apéndice era vigente al momento de la impresión en inglés.parallax.parallax. al número 1-888-512-1024 u ordenar en línea en el sitio www.UU.com. Puedes contactar al equipo de ventas Parallax Sales Team de manera gratuita dentro de EE. basado en necesidad o para actualizar la calidad de sus productos.com. el BoeBot Robot Kit contiene todas las partes y la documentación (en inglés) necesaria para completer los experimentos en este texto. Hay varias opciones para ordernar estos ítems de Parallax. Tabla E-1: Boe-Bot Robot (Full) Kit (#28132) Partes y cantidades sujetos a cabio sin previo aviso Código de Stock Parallax BS2-IC 27000 28124 28125 28150 700-00064 800-00003 Descripción Módulo microcontrolador BASIC Stamp 2 CD Parallax con software y documentación (en inglés) Robotics with the Boe-Bot Parts Kit Robotics with the Boe-Bot Student Guide Board of Education Rev C Destornillador Parallax Cable serial Cantidad 1 1 1 1 1 1 1 Todos estos ítems también pueden ser ordenados por separado. .Apéndice E: Lista de Partes del Boe-Bot · Page 331 Apéndice E: Lista de Partes del Boe-Bot Para completar las actividades en este texto. los cuales están descritos en las páginas siguientes. revisa periódicamente las páginas individuales de los productos en el sitio www. Para preguntas técnicas o asistencia llama al equipo de soporte técnico Technical Support Team al 1-888-99-STAMP. Parallax puede hacer substituciones de partes a su discresión. usando los números de parte individuales. vas a necesitar un Boe-Bot completo y los componentes necesarios para construir los circuitos de ejemplo. Boe-Bot Robot Kit (también conocido como Boe-Bot Full Kit) Además de una PC con un puerto serial y unas herramientas comunes del hogar. Para la información más actualizada y descargas gratis acerca de tu Boe-Bot y Robótica con el Boe-Bot Guía para el Estudiante.

con o sin el texto impreso Robotics with the Boe-Bot Student Guide. #28154 Robotics with the Boe-Bot Parts only. #4 redondo Cable para conexiones (bolsa de 10) Bocina piezoeléctrica Paquete de Hardware para el Boe-Bot Cantidad 2 2 2 8 4 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 .Página 332 · Robótica con el Boe-Bot Kit de Partes Robótica con el BOE-BOT Si ya tienes una Board of Education y BASIC Stamp. estría ½” Espaciador. aluminio. #28124 Partes y cantidades sujetas a cambio sin previo aviso Código de Stock Parallax 150-01020 150-01030 150-02020 150-02210 150-04710 150-04720 200-01031 200-01040 350-00003 350-00006 350-00009 350-00014 350-90000 350-00001 451-00303 700-00056 700-00015 710-00007 713-00007 800-00016 900-00001 28133 Descripción Resistor de 1 kΩ Resistor de 10 kΩ Resistor de 2 kΩ Resistor de 220 Ω Resistor de 470 Ω Resistor de 4. puedes comprar el paquete Robotics with the Boe-Bot Parts kit.01 μF Capacitor de 0.1 μF LED IR LED Rojo Fotoresistores (EG&G Vactec VT935G group B) Recibidor IR (Panasonic PNA4602M or equivalent) Base para LED IR Cobertor de luz para LED IR Cabezal de 3-pines Cable de bigote Arandela de nylon tamaño #4 de tornillo Tornillo cabeza-plana 7/8” 4-40. Table E-2: Robotics with the Boe-Bot Parts & Text.7 kΩ Capacitor de 0.

Por favor nota que el Hardware Pack no es vendido como una unidad separada del Boe-Bot Robot (Full) Kit o el Boe-Bot Parts Kit. redonda 4-40 Rueda de plástico Parallax Caucho de goma Servo de Rotación Contínua Parallax Cantidad 8 10 1 2 1 1 2 8 1 4 2 4 2 Kits de la Board of Education Casi todos los títulos en el currículo Stamps in Class utilizan hardware distinto y paquetes de componente que dependen del BASIC Stamp y la Board of Education como núcleo. . estría Sostenedor de batería con cable y conector de barril Base. aluminio enroscado. #753-00001 Paquete de Hardware para el Boe-Bot Todos las partes de hardware del Boe-Bot pueden ser compradas individualmente. necesitarás el paquete Robotics with the Boe-Bot Parts kit y estos ítems adicionales: (2) Cabezales de 3-pines macho/macho. estría Chasis de aluminio Boe-Bot Pin largo de metal 1/16" x 1. 4-40 zinc platificada Bola de rueda posterior Tornillos de máquina 4-40 x 3/8” de cabeza plana. estría Tuerca Hex. Table E-3: Boe-Bot Hardware Pack (#28133) Partes y cantidades sujetas a cambio sin previo aviso Código de Stock Parallax 700-00002 700-00003 700-00009 700-00016 700-00022 700-00023 700-00025 700-00028 700-00038 700-00060 721-00001 721-00002 900-00008 Descripción Tornillos de máquina 4-40 x 3/8”.5” Gromilla de goma 13/32" Tornillo de máquina 4-40 x 1/ 4”. como se encuentran en nuestra tienda en-línea Robot Component Shop si requieres de alguna parte para reemplazo.Apéndice E: Lista de Partes del Boe-Bot · Page 333 Construyendo un Boe-Bot con una HomeWork Board Si ya tienes una BASIC Stamp HomeWork Board que desees usar con un Boe-Bot. #451-00303 (1) Paquete de Patería de plomo y estaño.

como lo enlista la Tabla E-4 abajo.Página 334 · Robótica con el Boe-Bot La Board of Education puede ser comprada por separado o en su propio kit. Table E-4: Board of Education – Full Kit (#28102) Partes y cantidades sujetas a cambio sin previo aviso Código de Stock Parallax 28150 800-00016 BS2-IC 750-00008 800-00003 Descripción Board of Education Rev C Cables para conexión – paquete de 10 Módulo micrcontrolador BASIC Stamp 2 Fuente de alimentación de 300 mA 9 VDC Cable serial Cantidad 1 1 1 1 1 .

Cierra las persianas para eliminat las fuentes de luz solar directa. Esta técnica puede en sí asistir al Boe-Bot en salir de localidades obscuras. El valor nominal de los capacitores es de 0. Haz una sombra sobre los fotoresistores del Boe-Bot con una hoja blanca de papel. Example Program: TestPhotoresistors.bs2. Si las medidas que reportan son distintas para niveles de incidencia de luz similares. Facilita la verificación de las diferencias entre las dos medidas para niveles de luminosidad similares. . puedes modificar tus programas para ajustar a escala los valores reportados por tus fotoresistores. elimina fuentes de luz solar directa: En general. Circuitos RC con fotoresistores pueden reportar diferentes valores para el mismo nivel de luminosidad por muchas razones . Muchos capacitores comunes de cerámica son clasificados con una tolerancia de +80/-20%.bs2 √ √ √ Escribe. verificarás que los fotoresistores respondan similarmente a los mismos niveles de incidencia de luz.01 μF. Verificando Circuitos Fotoresistivos Semejantes Este próximo ejemplo muestra el tiempo de decaimiento de ambos fotoresistores en el Debug Terminal.Apéndice F: Balanceando Fotoresistores · Página 335 Apéndice F: Balanceando Fotoresistores En este apéndice. lo que significa que el valor actual puede ser hasta 80% mayor o 20% menor que 0. Cuartos con fuentes de luz distribuida. y ejecuta TestPhotoresistors. guarda.01 μF. condiciones de luz uniformes mejoran el desempeño del Boe-Bot’ con los fotoresistores. pero el valor actual de los mismos puede variar bastante. Encuentra un nivel de sombra que proporcione medidas entre 20 y 100. lo cual puede ayudar a que tu Boe-Bot reconozca diferentes niveles de luminosidad con mayor rigurosidad. inclusive con circuitos de fotoresistores disparejos. Apunta los valores de ambas medidas de tiempo en la primera fila de la Tabla F1. similares para los mismos niveles de incidencia de luz. Los fortoresistores mismos también pueden comportarse de manera distinta si provienen de diferentes paquetes de manufactura o si han sido deteriorados o si su superficie recolectora de luz ha sido astillada. Para mejores resultados. tales como luces fluorescentes o lámparas de techo funcionan bien. Los valores serán entonces. Esto conlleva a que tus medidas del tiempo de decaimiento podría ser también 80% mayor y 20% menor.

' Initialization. ' Variable declarations.bs2 ' Test Boe-Bot fotoresistor circuits. ' {$STAMP BS2} ' {$PBASIC 2. CR. 0. DEBUG "PHOTORESISTOR VALUES". CR.Página 336 · Robótica con el Boe-Bot √ √ Coloca tu mano a manera de cúpula sobre los fotoresistores. Tabla F-1: Mediciones del Tiempo-RC en Luz Baja y de Ambiente Valores de Duración timeLeft timeRight Descripción Fotoresistores en luz uniforme de ambiente Fotoresistores en luz uniforme baja ' Robotica con el Boe-Bot .TestPhotoresistors. Para mejores resultados. DEC5 timeLeft. ' Directiva de PBASIC. "timeLeft timeRight".timeLeft HIGH 3 PAUSE 3 RCTIME 3. . ' Left RC time measurement. ' Display measurements.timeRight DEBUG CRSRXY. ' Right RC time measurement. " ". 3. asegurándote que estés proporcionando sombras similares sobre ambos.5} timeLeft timeRight VAR VAR Word Word ' Directiva del Stamp. las medidas deberán encontrarse en el rango de 200 a 400.1. Apunta los valores de ambas medidas de tiempo en la segunda fila de la Tabla F1. "-------.1.---------" DO HIGH 6 PAUSE 3 RCTIME 6. DEC5 timeRight PAUSE 200 LOOP ' Main routine.

y sumar una constante (b) para obtener un valor en el mismo rango que otro sensor reportaría (y). el sensor puede ser considerado como un dispositivo linear. (llamaremos x a éste). una en términos de X1 . Tabla F-1: Mediciones del Tiempo-RC en Luz Baja y de Ambiente Valores de Duración timeLeft X1 = 36 X2 = 152 timeRight Y1 = 56 Y2 = 215 Descripción Fotoresistores en luz uniforme de ambiente Fotoresistores en luz uniforme baja Ahora. De cualquier manera. resuelve para m y b usando dos ecuaciones y dos incógnitas. Esta técnica se llama aproximación linear. Uno de los procedimientos más simples es escribir dos ecuaciones y = mx + b. Por cada medida de un sensor. puedes usar una aproximación linear para hacer que los sensores retornen aproxumadamente los mismos valores para los mismos niveles de iluminación. no quiere decir que el valor retornado será cinco veces mayor cuando la intesidad de luz sea cinco veces más luminosa. En otras palabras. asigna X1 y X2 a los valores del fotoresistor izquierdo y Y1 y Y2 a los valores del fotoresistor derecho. puedes multiplicar por una factor de escala (m). Puedes tomar un par de medidas. Otra cosa que puedes hacer con dispositivos lineares es asumir que las diferencias entre las dos líneas también pueden ser graficadas como una línea. Primero. La matemática es más complicada y requiere el uso de logaritmos.Apéndice F: Balanceando Fotoresistores · Página 337 Calibrando con el Uso de una Aproximación Linear Frecuentemente el fotoresistor es considerado un dispositivo no-linear. y = mx + b Aquí está un ejemplo de cómo hacer que los valores m y b del sensor izquierdo correspondan a los del derecho. y luego determinar cómo el dispositivo reaccionará si otras medidas en su rango pueden ser graficadas en una línea recta. Tus valores serán distintos. si retorna un valor a una intensidad. (Tabla F-1) muestra algunos ejemplos de valores no correspondientes de los fotoresistores. en casos en que las medidas están restringidas a un rango de valores de la habilidad de detección de los sensores un tanto estrecho. si tienes un dispositivo linear que tiene mediciones mayores que otros para luz baja y de ambiente. De hecho.

Página 338 · Robótica con el Boe-Bot y Y1 y la otra en términos de X2 y Y2. puedes incorporar m en cualquiera de las dos ecuaciones y = mx + con las que empezaste para obtener b. Primero. y2.37 116 Luego usa m. y 2 = mx2 + b b = y 2 − mx2 Así que las dos ecuaciones para resolver para m y b resultan ser: m= ( y 2 − y1 ) ( x2 − x1 ) b = y 2 − mx2 y Incorporemos nuestros valores de ensayo de la Tabla F-1 en las ecuaciones para ver cuál es el factor de escala (m) y la constante de compensación (b) para el fotoresistor izquierdo. sustrae una de la otra para eliminar b. Luego. y2 = mx2 + b − ( y1 = mx1 + b ) −−−−−−−−−−−−− ( y2 − y1 ) = m( x2 − x1 ) m= ( y2 − y1 ) ( x2 − x1 ) Una vez que hayas resuelto para m. y x2 para calcular b: . resuelve para m. Entonces. calcula m: m= m= ( y 2 − y1 ) ( x2 − x1 ) ( 215 − 56 ) ( 152 − 36 ) 159 m= = 1.

Usa estas ecuaciones y tus valores X1. el valor 351 es colocado a la derecha del operador */. es 1. Escribe */ en el espacio denotado “Type in keyword to find”.37 × 152 ) b = 6. el código PBASIC para ajustar la variable timeLeft puede ser escrito así: timeLeft = (timeLeft */ 351) + 7 El valor ajustado de timeLeft luego de que esta línea de código es ejecutada. y colocándolo a la derecha del operador */. Y1. esta ecuación podría ser implementada como es.37 X 256 = 350. sabemos cómo corregir la variable timeLeft de manera que reporte sus valores similares a los de la variable timeRight en un rango estrechho de niveles de luz: y = mx + b y = 1. Puedes encontrar más información acerca del operador */ en el Editor del BASIC Stamp Editor haciendo click en Help y seleccionando Index.37 x + 7 timeLeft( adjusted ) = 1. denota la primera aparición timeLeft como X1 y la segunda aparición de timeLeft como X2. Por qué 1. toma un paso extra para multiplicar por un valor fraccional. Por ello. Tienes que usar el operador /* (llamado operador “star-slash”).37 por el valor anterior de timeLeft. Marca la primera aparición de timeRight como Y1 y la segunda aparición timeRight como Y2. Tu Turno – Balancea tus Fotoresistores con m y b √ √ √ En la Tabla F-1.37 × timeLeft + 7 Una Ecuación Linear en PBASIC En la mayoría de los lenguajes de programación para PCs. .76 b ≈7 Ahora. Puedes también buscar */ en la sección operadores Binarios en el BASIC Stamp Manual.37 se convirtió en 351? La manera en que el operador */ trabaja es multiplicando tu valor fraccional por 256. Para la ecuación timeLeft.72 ≈ 351. X2. Ya que 1.Apéndice F: Balanceando Fotoresistores · Página 339 b = 215 − ( 1. El BASIC Stamp es un procesador miniatura en comparación con el de una PC. y Y2 para resolver para m y b. más 7.

' {$STAMP BS2} ' {$PBASIC 2. ' Robotica con el Boe-Bot .bs2: timeLeft = (timeLeft */ 351) + 7 √ √ √ √ √ √ Introduce. ' Left RC time measurement. "timeLeft timeRight".Página 340 · Robótica con el Boe-Bot √ m= ( y 2 − y1 ) ( x2 − x1 ) y b = y 2 − mx2 √ √ Calcula los valores de m. Sustituye tu valor de m y b en esta línea de código en BalancePhtoresistors. CR. usarás el operador */ al multiplicar m por 256.bs2 quitando los comentarios de la ecuación entre GOSUB Test_Photoresistors y GOSUB Average_And_Difference. CR. "-------. Cuando hayas determinado tus valores de m y b.” Elige un nivel de luz distinto y nuevamente. Verifica que los valores “after” sean similares y corrijan las diferencias en los valores “before. DEBUG "PHOTORESISTOR VALUES".BalancePhotoresistors.5} timeLeft timeRight VAR VAR Word Word ' Directiva del Stamp. ' Initialization.timeLeft HIGH 3 PAUSE 3 RCTIME 3.1. puedes modificar RoamingTowardTheLight. ' Right RC time measurement. Tu valor de m reemplazará 351 y tu valor de b reemplazará 7. ' Variable declarations. ' Directiva de PBASIC. Verifica los valores “after” por similitud.bs2. expón ambos fotoresistor a él. Expone ambos fotoresistores al mismo nivel de luz.---------" DO HIGH 6 PAUSE 3 RCTIME 6.timeRight ' Main routine. y ejecuta tu versión ajustada de BalancePhotoresistors. .bs2 ' Test adjustments to Boe-Bot fotoresistor circuits.1. guarda.

0. " After" PAUSE 200 LOOP ' Display measurements. " ". DEC5 timeLeft. DEC5 timeRight. ' Display measurements. DEC5 timeLeft. 3. . " Before" timeLeft = (timeLeft */ 351) + 7 DEBUG CRSRXY.Apéndice F: Balanceando Fotoresistores · Página 341 DEBUG CRSRXY. " ". 5. 0. DEC5 timeRight.

.

Asegúrate de que el frente del Boe-Bot esté viendo hacia el blanco de papel. ' {$STAMP BS2} ' {$PBASIC 2.bs2 ' Test IR LED/detector response to frequency sweep. ' Directiva de PBASIC. A pesar de que las técnicas son similares a otros programas. Coloca el Boe-Bot de manera que sus IR LEDs estén a 2. . Ambos IR LEDs y detectores deberían ser apuntados directamente hacia el papel. pero no desconectes el Boe-Bot del cable serial. Coloca el Boe-Bot en frente de una pared con una hoja de papel como el blanco de los IR. éste tiene una característica única. Nota: Este apéndice resalta un método para determinar las mejores frecuencias para determinar las distancias dadas usando hojas de cálculo.5} ' Directiva del Stamp. El BASIC Stamp está programado para esperar que presiones la tecla Enter.5 cm de distancia del blanco de papel. Programa de Entonación de IR FrequencySweep. Requiere la recolección de la data correspondiente a barridas de frecuencia y el uso de las mismas para determinar los valores más rigurosos para las distancias particulares.FrequencySweep. √ √ √ Apunta ambos IR IR LEDs y detectores hacia adelante en línea recta. ' -----[ Title ]-------------------------------------------------------------' Robotica con el Boe-Bot .bs2.bs2 realiza una barrida de frecuencia en el detector de IR y muestra la data en pantalla.Apéndice G: Afinando la Detección de Distancia con IR· Page 343 Apéndice G: Entonando la Detección de Distancia con IR Encontrando los Valores Adecuados del barrido de Frecuencia Entonar la detección de distancia de tu Boe-Bot requiere determinar cuál frecuencia es la más rigurosa para cada par de IR por cada zona. √ Entra y ejecuta FrequencySweep. y sólo es recomendada si tu medición de distancia está considerablemente fuera de calibración. Esta actividad toma tiempo y paciencia.

"then press enter to begin". . 4. "Click transmit windowpane.. DETECTED".".". CR. " "FREQUENCY "--------OBJECT". La data de respuesta a la frecuencia aparecerá como lo muestra la figura. CR. 11. crsrPosRow IF (irDetect = 0) THEN DEBUG "Yes" ELSE DEBUG "No " PAUSE 100 NEXT LOOP √ √ Haz click en la parte superior de los dos páneles mostrados en la Figura G-1. DEC5 irFrequency DEBUG CRSRXY. "frequency sweep. CR. CR. CR ' -----[ Main Routine ]------------------------------------------------------DO DEBUGIN dummy crsrPosRow = 6 FOR irFrequency = 30500 TO 46500 STEP 1000 crsrPosRow = crsrPosRow + 1 FREQOUT 8.. crsrPosRow. CR. Presiona la tecla Enter. irFrequency irDetect = IN9 DEBUG CRSRXY. CR.1. --------".Página 344 · Robótica con el Boe-Bot ' -----[ Variables ]---------------------------------------------------------crsrPosRow irFrequency irDetect distance dummy VAR VAR VAR VAR VAR Byte Word Bit Nib crsrPosRow ' -----[ Initialization ]----------------------------------------------------DEBUG CLS.

Apéndice G: Afinando la Detección de Distancia con IR· Page 345 Figura G-1 Depuración de la data de Frequencia El BASIC Stamp ha sido programado para hacer que el Debug Terminal muestre “Yes” si un objecto ha sido detectado y “No” si el objecto no ha sido detectado. La Figura G-1 .

Este ejemplo asume que estás buscando seis zonas (de cero a cinco). Retrocede el Boe-Bot 2. Presiona la tecla Enter nuevamente y apunta el próximo set de valores. Por medio de un escrutinio cuidadoso de las hojas de cálculo y del proceso de eliminación. Ten presente que tendrás que repetir este proceso para el sensor derecho. Basado en la data del ejemplo mostrado en la Figura G-1.5 cm.NEXT en el Listado de Programa FrequencySweep.. los valores de start. A continuación se discute cómo determinar las mejores frecuencias para el sensor izquierdo. Esto no cabrá debidamente entre los pulsos del servo. podrás determinar la frecuencia óptima para cada par de IR por cada zona. Modificando el proceso para un total de ocho zonas puede ser realizado sin ninguna reestructuración de las rutinas de navegación del Boe-Bot. esto exigiría 30 comandos FREQOUT de un milisegundo. Apunta la data del lado izquierdo y derecho en hojas de cálculo distintas. Al finalizar. y presiona Enter otra vez. Una solución sería tomar a 15 medidas cada otro pulso.5 cm a la vez y apuntando los cinco valores del barrido de frecuencia entre cada ajuste de distancia.. √ Modifica el bucle FOR. Ahora los detectores de IR estarán a 5 cm del blanco de papel. Si modificaras para 15 zonas.bs2 de manera que los incrementos sean de 250 y también incluya un límite superior e inferior para ambos detectores. Apunta cinco sets de data con esta distancia. . tendrás cinco sets de valores por cada sensor en hojas de cálculo distintas para esta frecuencia particular. Mantente retrociendo el Boe-Bot 2. end.. el barrido de frecuencia mostrará la mayoría.” significa que ningún objecto ha sido detectado en ninguna de las frequencias del barrido.Página 346 · Robótica con el Boe-Bot muestra que la región de buena respuesta de señal para el sensor izquierdo es entre 36500 y 42500. Repite este proceso tres veces más. y step para el bucle FOR. Cuando el Boe-Bot haya sido retrocedido 20 cm.. sino todas las regiones como “No.NEXT serían modificados de la siguiente manera: FOR irFrequency = 36500 to 42500 STEP 250 √ √ √ √ √ √ √ √ Ejecuta de nuevo tu FrequencySweep.bs2 modificado.” Cuando el barrido de frecuencia sea todo “No.

5 cm. pero sí a los 15 cm como tu frequencia más rigurosa para esta distancia. Revisa los próximos valores de data que se encuentran avanzando 2.5 cm. Repite este proceso para las divisiones de zona restantes. este ejemplo ha determinado que las frequencias que pueden ser usadas para separar Zonas 5 y 4 y Zonas 4 y 3. Guarda tu data para ambos métodos. encuentra una frequencia para la cual los valores de la salida comienzan a ser estables. pero la otra no. √ En cada una de las cinco distancias restantes.5 cm. √ lectura a una frecuencia particular. Toma la frequencia que no era estable a los 17. tres frequencias distintas puedes mostrar medidas “Sí. verás un set the cuatro o cinco valores “Yes” para una sola frecuencia. Por ejemplo. En cada una de las cinco distancias restantes. encuentra una frequencia para la cual los valores del output comienzan a ser estables. Repite este proceso para las divisiones de zona restantes. pero la otra no. Probablemente. Toma la frequencia que no era estable a los 17. . dos de estas frequencias eran estables.Apéndice G: Afinando la Detección de Distancia con IR· Page 347 √ √ Comienza examinando los valores de data tomados cuando el Boe-Bot estaba más apartado del blanco de papel. Ahora. este ejemplo ha determinado que las frequencias que pueden ser usadas para separar Zonas 5 y 4 y Zonas 4 y 3. pero sí a los 15 cm como tu frequencia más rigurosa para esta distancia. Por ejemplo.” Si miras atrás a la marca de 17. Nota esta frequencia como una medida rigurosa para la línea divisoria entre Zona 0 y Zona 1. tres frequencias distintas puedes mostrar medidas “Yes.” Si miras atrás a la marca de 17. a 15 cm. a 15 cm. Probablemente no habrá ningún set de data en el que todas las medidas correspondan a un “Yes” en una sola frecuencia. dos de estas frequencias eran estables.5 cm.5 cm en la dirección del blanco de papel. Tu Turno √ Si conseguiste con éxito ajustar con precisión las 5 medidas y el tiempo lo permite. Apunta esta frequencia como una medida rigurosa para la línea divisoria entre Zona 0 y Zona 1. prueba incrementar la resolución a ocho medidas. Ahora.

.

CONCURSO #1: EJERCICIO DE PISO PARA EL ROBOT Propósito El concurso ejercicio de piso tiene como propósito darle la oportunidad a los creadores de los robots de demostrar las habilidades de sus robots u otras contrapciones técnicas. y luego regrese al Area “A” (en la posición “F”). El concursante dueño del robot podrá relatar cada habilidad y característica del robot. estas reglas han sido provistas cortesía de la sociedad robótica de Seattle (Seattle Robotics Society). pero es recomendado que sí lo sean. El robot que haga esto en el menor tiempo (incluyendo los bonos) gana. Cada concursante contará con un máximo de 5 minutos en esta área para demostrar lo que su robot puede hacer. . pero contará con las tres áreas previamente descritas. La puntuación será determinada por la audiencia. Como siempre.Apéndice H: Concursos de Navegación para el Boe-Bot· Page 349 Apéndice H: Concursos de Navegación para el Boe-Bot Si estás planificando una competencia para robots autónomos. ya sea por la cantidad de aplausos (el concursante más aplaudido será determinado por el juez). Un área de 10-pies-por-10-pies es identificada. La organización del curso no se dará a conocer hasta el día del concurso. Reglas Las reglas para esta competencia son bastante simples. Los robots no necesitan ser autónomos. preferiblemente con algún tipo de borde físico. y luego navegue hasta el Area “C” (completamente sobre la línea). o por cualquier otro mecanismo de votos. CONCURSO #2: SEGUIMIENTO DE LINEA Objetivo Construir un robot autónomo que comience en el Area “A” (en la posición “S”). no será permitido cualquier robot que ocasione algún tipo de daños al área o represente un peligro para el público. El robot debe entrar a las áreas “B” y “C” para calificar. navegue hasta el Area “B” (completamente sobre la línea).

” Areas “A.25 pulgadas de ancho y con dos pies de espacio de las paredes. Tiempo Máximo para Completar el Curso Cuatro minutos. Tyvek es un plástico fuerte usado en sobres de correo y construcción de casas.” “B” y “C” no están coloreadas en el curso en sí.” Esto indica donde el curso termina. de aproximadamente 2. Las paredes son de 3 1/2 pulgadas de alto y rodean el curso completo. Las posiciones “S” y “F” son meramente para ilustración y no localidades precisas. La línea es negra. Ejemplo del Curso Todas las medidas en el ejemplo son aproximadas. Existe una línea sólida dividiendo el Area Area “A” y el Area “T” en la posición “F. El piso es blanco y está hecho de papel o Dupont Tyvek®. Un competidor podrá colocar su robot en cualquier parte del Area “A.Página 350 · Robótica con el Boe-Bot Habilidades Examinadas La habilidad de reconocer un ayudante de navegación (la línea) y usarla para llegar a la meta. El robot deberá estar completamente dentro del Area “A.” mirando en cualquier dirección al momento de comenzar. Todas las curvas tienen un radio de al menos un pie pero no mayor a tres pies. .

Esto podría ser. por ejemplo.Apéndice H: Concursos de Navegación para el Boe-Bot· Page 351 Figura H-1 Ejemplo del Curso para el Concurso Puntuación La puntuación de cada participante es calculada tomando el tiempo requerido para completar el curso (en segundos) menos 10% por cada “meta conseguida. una señal de luz o sonido). . Tabla H-1: Puntación del Seguidor de Línea Meta conseguida Se detiene en area A luego de llegar a B y C No toca ninguna pared Comienza al indicarse Percent Deducted 10% 10% 10% (“Comienza al indicarse” significa que el robot comienza su operación con una señal externa. no-táctil.” El concursante con el menor puntaje será el ganador.

El laberinto podrá ser bajo algún tipo de cubierta. Obviamente el robot necesita ser lo suficientemente pequeño para poder navegar dentro del laberinto. el robot podrá estar expuesto a varias temperaturas. el cual es colocado en la entrada del laberinto. El objetivo es que un robot. El laberinto podrá medir hasta 20pies cuadrados. así como tampoco el . y relámapagos. Características Físicas El laberinto está construido de madera “shop-grade plywood” de 3/4" de ancho. Podrá tocar las paredes pero no podrá moverlas para su beneficio –no se permiten “tractores.” Los jueces podrán descalificar a cualquier robot que mueva las paredes excesivamente.” Las paredes son colocadas en una cuadrícula de 24pulgadas de separación. o quede atrapado sin ningún tipo de escape. de manera que los robots no requieran protección contra la lluvia. pero podrá ser más pequeño. El robot no deberá dañar las paredes del laberinto. dependiendo del espacio disponible para el evento.Página 352 · Robótica con el Boe-Bot CONCURSO#3: SEGUIMIENTO DE LABERINTO Propósito El gran laberinto tiene como motivo presentar una prueba de habilidades de navegación para un robot autónomo. Estas paredes son de aproximadamente 24 pulgadas de alto. no será permitido ningún tipo de interaccion con el robot hasta que éste llegue a la salida. y no existen islas en el mismo. de cualquier manera. El laberinto está cuidadosamente diseñado para que no haya ningún tipo de ventaja si se sigue la pared izquierda o derecha. El laberinto será ensamblado en alfombra de tipo industrial o suelo duro (dependiendo donde sea realizado el evento). encuentre la manera de llegar a la salida del laberinto en el menor tiempo posible. Este tipo de laberintos puede ser resuelto siguiendo cualquiera de las paredes. izquierda o derecha. Limitaciones del Robot La principal limitación en el robot es que debe ser autónomo: una vez que el dueño u operador lo ponga en marcha. Debido al grosor de la madera y las limitaciones de la precisión. Ambas entrada y salida están localizadas en las paredes externas. y están pintadas en colores primarios con pintura “glossy. El laberinto es un clásico laberinto bi-dimensional: existe un único pasadizo desde el comiento hasta el fin. los pasillos podrán medir hasta 22 pulgadas de ancho. La puntuación se realiza en una forma que favoriza a aquellos robots que son brutalmente rápidos o que pueden aprender el laberinto luego de una carrera. viento.

Logística Cada robot realizará una carrera. El robot con el menor tiempo será el ganador. Cada robot hará entonces una segunda carrera a través del laberinto. Puntuación Cada robot realizará tres carreras por el laberinto. El juez permitirá cierta flexibilidad si alguno de los participantes retrasa su carrera por alguna dificultad técnica. seguidamente. el juez del concurso determinará como ganandor a aquél que haya llegado más lejos. .Apéndice H: Concursos de Navegación para el Boe-Bot· Page 353 piso. Si ninguno de los robots consigue con éxito llegar a la salida del laberinto. Cualquier forma de poder es permitida siempre y cuando las leyes locales no requieran protección auditiva en su presencia o algún otro tipo de limitación para con la misma. Si un robot no puede terminar la carrera en ese período. No está permitido “configurar” manualmente ningún aspecto del laberinto en el robot a través del hardware o el programa. El máximo tiempo permitido por cada carrera es de 10 minutos. y podrá usar esta información en carreras subsiguientes siempre y cuando el robot haga esto por sí mismo. todos los robots harán una tercera carrera. de tal manera que todos los robots hayan atentado resolver el laberinto. Un robot podrá recordar lo que encontró en previas carreras para tratar de mejorar su tiempo (elaborando un mapa del laberinto en la primera carrera). la carrera es detenida y el robot recibe un tiempo de 10 minutos.

.

en inglés) de Parallax mostrados. La traducción literal de este término es Estampilla Basic. La traducción literal de esta palabra es básico(a). algunos términos se han dejado en el idioma original. Por ejemplo: “Los Continuous Rotation servos (servo de Rotación Contínua.e. Dicha plaqueta se encuentra conectada internamente (i.2” por Andy Lindsay (en inglés). dicho programa se llama PBASIC.” Términos en Inglés: Robotics with the Boe-Bot: se refiere a la versión en inglés de este texto. Basic: esta palabra hace referencia al programa que usado para programar el Basic Stamp. . Este texto ha sido traducido al español (¿Qué es un Microcontrolador?). Board of Education o HomeWork Board: son dos versiones similares de las plaquetas que Parallax ofrece para el desarrollo de circuitos eléctricos y/o mecánicos como es el caso del Boe-Bot. Protoboard: plaqueta que consiste en varios enchufes para conectar componentes electrónicos.e. version 2. Dichas plaquetas incluyen distintos componentes.. en estos casos las palabras son traducidos solamente la primera vez que aparecen en el libro entre paréntesis “( )” que siguen inmediatamente al término en inglés.Apéndice I: Glosario· Page 355 Apéndice I: Glosario En este apéndice.. Basic Stamp: es el cerebro (i. interconectada). Inclusive... por lo que facilita la conexión de dos componentes sin la necesidad de un cable. What's a Microcontroller?: se refiere a la versión en inglés del texto que precede a Robotics with the Boe-Bot. entre los que resalta una protoboard para conectar distintos componentes electrónicos. Stamps in Class: currículum o pénsum para el aula basado en los productos y textos Parallax. módulo microcontrolador) presente en tu Board of Education o HomeWork Board. hemos incluido cierto términos utilizados por el traductor para describir plabras correspondientes en el texto original de la guía para el estudiante “Robotics with the Boe-Bot.

Conocido en español como codificador de giro. Otros términos usados son. Continuous Rotation Servo: se refiere a un servomotor de rotación continua. Dead reckoning: se refiere a un tipo de navegación por estimación empírica del recorrido o trayectoria. cálculo a ojo. Hemos dejado el término en Inglés. PBASIC: lenguaje usado en el BASIC Stamp Editor para escribir los programas. ya que el nombre del boton que ejecuta la función de reiniciar. . Receive windowpane: se refiere al panel-ventana dentro del Debug Terminal utilizado para recepción de mensajes provenientes del BASIC Stamp. Transmit windowpane: se refiere al panel-ventana dentro del Debug Terminal utilizado para transmisión de mensajes al BASIC Stamp.Página 356 · Robótica con el Boe-Bot BASIC Stamp Editor: programa en tu PC o Laptop donde escribes y descargas los programas que ejecuta el microcontrolador BASIC Stamp. Encoders: dispositivo electrónico usado para medir la rotación de una rueda. linear. Debug Terminal: ventana en tu PC o Laptop en donde se muestran los mensajes de comunicacion entre el BASIC Stamp y tu PC o Laptop. está etiquetado como “reset”. Ramping: término utilizado para referirse (en este contexto) a una aceleración gradual. Término utilizado en inglés para facilitar la adquisición de partes adicionales de acuerdo a su nombre en inglés. o en rampa. Reset: este término se traduce como “Reinicio”. y navegación a estima.

Energía: esta es una traducción del término “power”. Escogimos el término Energía. o en otras palabras.También representado como CNR. estañado(s): esta es la traducción del término “tin” o “tinned”. es la cantidad de trabajo que realiza una corriente eléctrica. la tasa de transmisión de energía eléctrica. o sistema. Contrareloj (CTR): término de abreviación usado para indicar el sentido contrario a la rotación de las manecillas (agujas) de un reloj. Estañada(s). Fuente de Alimentación: esta es la traducción del término “power supply”. usado para referirse a la fuente que emite la energía a un componente o circuito eléctrico. usado para referirse al producto que resulta como consecuencia de una entrada. Entrada: esta es la traducción del término “input”. refiriéndose a la conexión (cable) bañado con anterioridad en dicho elemento. circuito.Apéndice I: Glosario· Page 357 Términos en Castellano: Salida: esta es la traducción del término “output”. usado para referirse a las conexiones cubiertas por el elemento químico Estaño. La definición de Poder Eléctrico. Un sinónimo es el término “pre-soldadas”. Conreloj (CNR): término de abreviación usado para indicar el sentido de rotación de las manecillas (agujas) de un reloj. También representado como CTR. porque resulta intuitivo para muchas personas quiénes se encuentran comenzando en este campo. . usado para referirse a cualquier sistema o componente que permita el ingreso de informacion. usado para referirnos al Poder (o Potencia) Eléctrico(a) de un componente.

.

211 dibujo de parte. 314. 52 -A- Aceleración gradual (ramping). 26 Byte. 10 Resolución de Problemas. 16 desconectando la energía. 313 Cálculo de distancia. 157 -B- BASIC Stamp Manual. 4 Botón Reset. 133 American Standard Code for Information Interchange. 59 Board of Education Rev C conetando la energía. 54. 108 bocina piezoeléctrica dibujo de parte. 109 BASIC Stamp Editor Identify. 157 ánodo. 56 BASIC Stamp inserción. 59 Board of Education Rev A or B desconectando la energía. 3 Board of Education Rev A.Indice · Page 359 Indice -<- BASIC Stamp HomeWork Board conectando la energía. 36 Board of Education Rev B. 36 bocina piezoeléctrica símbolo esquemático. 137 capacitor. 32 baterías. 72 Board of Education. 212 BASIC Stamp HomeWork Board. 72 -C- cable nulo de módem. 17 modo de baja energía. 28 previniendo daños. 133 Ajuste de software. 315 instalación. 20 <>. 109 bocina piezoeléctrica. 112 Argumento Index. 60 BIN1. 4 . 281 ASCII. 46 Argumento Duration. 14 Ajuste de hardware. 3 BASIC Stamp HomeWork Board. 5. 280 Basic Analog and Digital. 142 Adaptador USB a Serial. 313 Software. 178 Bit. 36 …. 35 barrido de frequencia. 192 -…- BASIC Stamp HomeWork Board desconectando la energía.

184 FOR…NEXT. 212 -D- caracter de retorno. 184 ELSEIF. 28 Directiva del Stamp. 28 cátodo. 35 destornillador. 28 Stamp. 93 detector infrarrojo. 28 Directivas PBASIC DATA. 42 PULSOUT. 54 RCTIME. 203 divisor de voltaje con fotoresistor resolución de problemas..Page 360 · Robótica con el Boe-Bot símbolo esquemático. 215 READ. 46 Directiva DATA. 245 diagrama de control de tiempo. 158 Directiva de PBASIC. 46 diodo emisor de luz ánodo. 184 ENDIF.ENDSELECT. 154 RETURN. 26 DEBUGIN. 52 dibujo de parte bocina piezoeléctrica. 67 Comandos PBASIC DEBUG. 220 PBASIC. 50 PAUSE. 212 fotoresistor.. 45 CR. 28 CRSRXY. 115 DO WHILE. 67. 74 FREQOUT. 205 . 109 capacitor. 115 DEC. 146 HIGH. 46 terminales. 28 declaración.CASE. 154 DEBUG. 220 corriente (eléctrica). 184 LOOKUP. 154 Directivas PBSIC CON. 28 DEBUGIN. 179 divisor de voltaje. 72 Desconectando la energía. 281 LOW. 155 STOP. 46 CdS. 200 Centrando los servos.. 28 CON. 199 LED. 256 DATA. 154 ELSE.. 146 SELECT. 111 GOSUB. 46 cátodo. 28 Debug Terminal. 50 IF…THEN.

75 STEP StepValue. 184 ELSEIF. 146 -G- Giros de 90°. 146 -F- hertz. 74 cuenta regresiva. 200 dibujo de parte. 26. 200 LED. 199. 287 inicialización. 112 -L- fotoresistor. 314. 145 LOOKUP. 199 símbolo esquemático. 75 etiqueta subrutina. 184 END. 27 -H- etiqueta para subrutina. 76 -I- Identify. 72 Interruptores Táctiles.Indice · Page 361 DO WHILE. 112 hexadecimal. 151 ELSE. 200 FOR…NEXT. 315 IF…THEN. 111 Argumento Duration. 171 -K- Formateadores DEBUG ?.. 245 linterna. 109 . 199 LDR. 28 kilohertz. 75 StartValue. 108 Industrial Control. 178 DEC. 146 guardando programas. 73 BIN.LOOP. 112 EEPROM. 281 frecuencia. 136 Giros de 90°. 50 argumento PIN. 136 GOSUB. 50 F. 184 anidando sentencias. 76 EndValue. 248 FREQOUT. 211 foot-candle. 154 DO. 281 Argumento Index. 44 -E- frecuencia armónica.. 184 EndValue. 211 faradio. 46 led infrarrojo. 188 indicador start/reset. 157 HIGH. 217 llamada a subrutina. 28 ENDIF. 76 decreciendo.

5 resistor divisor de voltaje. 152 memoria de acceso aleatorio. 203 patas. 202 Mapa de Memoria (Memory Map). 64 Parallax Continuous Rotation servos. 49 Moción en retroceso.Page 362 · Robótica con el Boe-Bot Argumento Variable. 99 Pines de I/O como entradas o salidas. 215 Argumento Pin. 54 Argumento Duration. 215 Argumento Duration. 192 READ. 199 resolución de problemas . 26 puente (eléctrico). 281 PBASIC variables. 200 lux. 50 luminosidad. 50 argumento PIN. 203 orden matemático de operaciones. 72 nodos. 152 RCTIME. 291 -P- paquete de baterias con conexiones estañadas. 72 LOW. 178 Requerimientos del sistema. 151 microfaradio. 60 Puerto COM. 14 PULSOUT. 137 Nib. 42 resistor dependiente de luz. 212 miliamperios. 154 registro de entrada. 212 Navegación a estima. 27 guardar. 212 piezobocina. 215 Números negativos. 199. 46 resistor dependiente de luz. 281 ValueN argument. 200 -M- picofaradio. 215 omega. 54 nanofaradio. 199 resistores en serie. 3 programas guardando. 215 Argumento State. 74 -O- -R- RAM. 41 PAUSE. 46 operador. 108 pin metálico. 152 memoria programable de sólo lectura eléctricamente borrable. 131 -N- plaqueta portadora. 200 luz incidente. 72 Operadores PBASIC <>.

214 tokens. 14 -V- SELECT.. 280 separadores. 212 fotoresistor. 7/8".. 205 -T- resolución de problemas Comunicación BASIC Stamp a PC.Indice · Page 363 divisor de voltaje con fotoresistor. 105. 313 Resolución de problemas servos. 75 STEP StepValue. 61 VAR. 72 símbolo esquemático bocina piezoeléctrica. 199 resistor. 72 -Μ- μF. 72 variable. 118 -S- umbral lógico. 49 voltaje umbral.. 146 RPM.. 155 sensibilidad de filtro. 96 evitando daños. 151 tornillos. 72 declaración.CASE. 212 . 72 valor por defecto. 203 US232B. 76 stepValue. 65 Vdd. 203 -W- StartValue.ENDSELECT. 173 servos etiquetando. 114 Tyvek. 76 STOP. 109 capacitor. 72 VAR. 256 subrutinas. 46 Vbp. 200 Word. 72 inicialización. 173 Transmit windowpane. 350 -U- RETURN. 106. 145 Sulfuro de Cadmio. 107 Tiempo de descarga RC.

.

Las partes pueden diferir de lo que muestran las imágenes.com (en inglés) si tienes alguna pregunta. . Por favor contáctanos a la dirección stampsinclsss@parallax.Las partes y cantidades en los distintos kits robóticos Boe-Bot® están sujetos a cualquier cambio sin previo aviso.

Sign up to vote on this title
UsefulNot useful