Robotica Con El Boe Bot Espanol v3.0 PDF
Robotica Con El Boe Bot Espanol v3.0 PDF
Robotica Con El Boe Bot Espanol v3.0 PDF
VERSION 3.0
GARANTA
Parallax garantiza sus productos contra defectos en sus materiales o debidos a la fabricacin por un perodo de 90
das a partir de la recepcin de los mismos. Si usted descubre un defecto, Parallax segn corresponda, reparar,
reemplazar o regresar el valor de la compra. Antes de regresar el producto a Parallax, simplemente pida un nmero
de autorizacin de regreso de mercanca (Return Merchandise Authorization, RMA), escriba el nmero en el
exterior de la caja y envela a Parallax. Por favor incluya su nombre, nmero telefnico, direccin y una descripcin
del problema. Parallax le regresar su producto o el reemplazo, usando el mismo mtodo de correo que usted us para
enviar el producto a Parallax.
ERRATA
Si bien se realiza un gran esfuerzo para asegurar la precisin de nuestros textos, an puede haber errores.
Ocasionalmente se publica en nuestro sitio www.parallax.com una hoja de fe de errata con una lista de los errores y
correcciones conocidos para un texto determinado. Si encuentra un error, por favor enve un email a
[email protected].
Tabla de Contenido
Prefacio........................................................................................................................5
Acerca de la Version 3.0.................................................................................................6
Audiencia ........................................................................................................................6
Foros de apoyo ...............................................................................................................7
Recursos para Educadores ............................................................................................8
Traducciones ..................................................................................................................9
acerca del autor ..............................................................................................................9
Contribuciones eSpeciales .............................................................................................9
Captulo 1 : El Cerebro de su Boe-Bot ...................................................................11
Hardware y Software ....................................................................................................12
Actividad #1 : Obteniendo el Software..........................................................................12
Actividad #2 : Uso de Help para Parametrizar el Hardware .........................................17
Resumen ......................................................................................................................19
Captulo 2 : Los Servomotores de su Boe-Bot......................................................23
Presentado el Servo de Rotacion Continua..................................................................23
Actividad #1 : Construyendo y Probando el Circuito LED ............................................24
Actividad #2 : Rastreando Tiempo y Repitiendo Acciones con un Circuito ..................27
Actividad #3 : Conectando los Servomotores ...............................................................40
Actividad #4 : Centrando los Servos.............................................................................49
Actividad #5 : Como Guardar Valores y Cuentas .........................................................53
Actividad #6 : Probando los Servos ..............................................................................58
Resumen ......................................................................................................................67
Captulo 3 : Ensamble y Pruebe su Boe-Bot .........................................................73
Actividad #1 : Ensamblando el robot Boe-Bot ..............................................................73
Actividad #2 : Vuelva a probar los Servos ....................................................................82
Actividad #3 : Programa y circuito Indicador inicio/Reset .............................................86
Actividad #4 : Probando el Control de Velocidad con la Terminal de Depuracin.......92
Resumen ......................................................................................................................98
Captulo 4 : Navegacin del Boe-Bot ...................................................................103
Actividad #1 : Maniobras Bsicas del Boe-Bot ...........................................................103
Actividad #2 : Ajustando las maniobras bsicas.........................................................109
Actividad #3 : Calculando Distancias..........................................................................112
Actividad #4 : ManiobrasRampeo ...........................................................................117
Actividad #5 : Simplifique la Navegacin con Subrutinas ...........................................120
Actividad #6 : Tema AvanzadoHaciendo Maniobras Complejas en EEPROM .......126
Resumen ....................................................................................................................136
Captulo 5 : Navegacin Tctil con Filamentos .................................................. 143
Navegacin Tctil .......................................................................................................143
Actividad #1 : Construyendo y Probando los Filamentos ...........................................144
Actividad #2 : Probando en Campo los Filamentos....................................................152
Actividad #3 : Navegacin con Filamentos.................................................................155
Actividad #4 : inteligencia Artificial y Decidiendo Cuando Est atorado.....................160
Resumen ....................................................................................................................165
Captulo 6 : Navegacin Fotosensible con Fototransistores ............................ 169
Presentando al Fototransistor ....................................................................................169
Actividad #1 : Un Simple Sensor de Luz Binario ........................................................171
Actividad #2 : Midiendo Niveles de Luz con Fototransistores ....................................179
Actividad #3 : Ajuste de Sensibilidad a la Luz ............................................................189
Actividad #4 : Mediciones de Luz Para Navegacin ..................................................194
Actividad #5 : Rutina Para Viajar Hacia la Luz ...........................................................203
Actividad #6 : Rutina de Prueba de Navegacin con el Boe-Bot ...............................212
Resumen ....................................................................................................................216
Captulo 7 : Navegando con Luces Frontales Infrarrojas .................................. 221
Luz Infrarroja ..............................................................................................................221
Actividad #1 : Construyendo y Probando los Detectores IR de Objetos ....................223
Actividad #2 : Prueba de Campo de Deteccin de Objetos e Interferencia Infarroja .230
Actividad #3 : Ajustes de Rango de Deteccin Infrarroja ...........................................234
Actividad #4 : Deteccin de Objetos y Rodeo ............................................................237
Actividad #5 : Navegacin IR de Alto Rendimiento ....................................................239
Actividad #6 : El Detector de Cada............................................................................242
Resumen ....................................................................................................................248
Captulo 8 : Control de Robot con Deteccin de Distancia ............................... 255
Determinando Distancia con el Mismo Circuito Detector IR LED...............................255
Actividad #1 : Probando la Frecuencia de barrido......................................................255
Actividad #2 : Vehculo Sombra Boe-Bot ...................................................................262
Actividad #3 : Siguiendo una Tira ...............................................................................271
Actividad #4 : Mas Actividades Boe-Bot y Proyectos En Lnea..................................278
Resumen ....................................................................................................................280
Apndice A : Lista de Partes y Opciones del Kit................................................ 289
Apndice B : Cdigos de Color de Resistencia y Reglas de tableta................ 293
Apndice C : Concursos de Navegacin Boe-Bot.............................................. 299
Prefacio Pgina 5
Prefacio
Los Robots son usados en las industrias automotrz, mdica y de manufactura, en todas
las formas de vehculos de exploracin, y, claro, en muchos filmes de ciencia ficcin. La
palabra "robot" apareci primero en una obra satrica checoslovaca, los Robots
Universales de Rossum, de Karel Capek en 1920. Los robots en esta obra tendan a tener
semejanza humana. A partir de este punto, pareci que muchas historias de ciencia
ficcin involucraron a estos robots tratando de ajustarlo en la sociedad y que tuvieran
sentido ms all de las emociones humanas. Esto cambi cuando General Motors instal
los primeros robots en su planta de manufactura en 1961. Estas mquinas automatizadas
presentaron una imagen compltamente diferente de los robots semihumanos de la
ciencia ficcin.
La meta de este texto es que los estudiantes se interesen en y se emocionen acerca los
campos de la ingeniera, mecatrnica y desarrollo de software conforme disean,
construyen y programan un robot autnomo. Esta serie de actividades manos a la obra
y proyectos introducirn a los estudiantes a los conceptos bsicos de la robtica usando el
robot Boe-Bot Parallax, llamado "Boe-Bot." Su nombre viene de la tarjeta portadora
Board of Education que se monta en su its chasis sobre ruedas. Un ejemplo de un Boe-
Bot con un circuito infrarrojo de deteccin de obstculos construdo en el rea de
prototipo libre de soldadura del Board of Education se muestra en la Figura P-1.
Figura P-1
Robot Boe-Bot de
Parallax Inc.
Pgina 6 Robtica con el Boe-Bot
Las actividades y proyectos en este texto comienzan con una introduccin al cerebro de
su Boe-Bot, the microcontrolador Parallax BASIC Stamp 2, y luego prosiguen a la
construccin, prueba y calibracin del Boe-Bot. Despus programar el Boe-Bot para
hacer maniobras bsicas y luego proceder a agregar sensores y escribir programas que lo
hagan reaccionar a sus alrededores y ejecutar tareas autnomas.
AUDIENCIA
Este texto est diseado para ser un punto de entrada a la literatura tecnolgica y una
curva de aprendizaje fcil tanto de la programacin integrada como de la introduccin a
la robtica. El texto est organizado para que pueda ser usado por la variedad ms amplia
posible de estudiantes y de estudiantes independientes. Los estudiantes a mitad de sus
cursos pueden intentar los ejemplos en este texto a modo de tour guiado simplemente
siguiendo las instrucciones marcadas bajo la supervisin de su instructor. Al otro extremo
de este espectro, las habilidades de comprensin y solucin de problemas de los
estudiantes de pre-ingeniera pueden ser puestas a prueba con las preguntas, ejercicios y
Prefacio Pgina 7
FOROS DE APOYO
Parallax mantiene foros moderados gratuidos para nuestros clients que cubren una
variedad de temas:
Propeller Chip: para todas las discusiones relacionadas con el microcontrolador
de multincleos Propeller y el desarrollo de herramientas de esta lnea de
producto.
BASIC Stamp: ideas de proyectos, apoyo y temas relacionados para todos los
modelos del BASIC Stamp Parallax.
Sensores: Discusiones en relacin a la amplia variedad de sensors de Parallax y
su interfase con los microcontroladores Parallax.
Stamps in Class: Estudiantes, maestros y clientes discuten aqu materiales
educativos de Parallax y proyectos escolares.
Robtica: Para todos los robots Parallax y robots personalizados construdos con
procesadores y sensores Parallax.
Wireless: Temas incluyendo XBee, GSM/GPRS, telemetra y comunicacin de
datos sobre la banda de radio aficionado.
PropScope: Discusin y apoyo tcnico para este osciloscopio USB que contiene
un circuito integrado Propeller.
The Sandbox: Temas relacionados al uso de productos Parallax pero no
especificados en los otros foros.
Proyectos: Publique aqu sus proyectos en proceso y completos, hechos a partir
de productos Parallax.
Pgina 8 Robtica con el Boe-Bot
u hogar como sea necesario. Tanto nuestros textos Stamps in Class como nuestro Manual
BASIC Stamp estn disponibles como descargas PDF gratuitas y pueden ser duplicados
mientras que lo sean para fines educativos exclusivamente con products
microcontroladores Parallax y que el estudiante no pague mas que el costo de
duplicacin. Los archivos PDF no estn candadeados, habilitando la seleccin de texto e
imagenes para preparar notas, transparencias, o presentations PowerPoint.
TRADUCCIONES
Los textos educativos Parallax han sido traducidos a otros idiomas; estos textos son
descargas gratuitas y son sujetos a los mismos Permisos de Derecho de autor con fines
educativos como lo son nuestras versiones originales. Para ver la lista completa, haga
click en la liga de Tutoriales y Traducciones en www.parallax.com/Education. Estos
fueron preparados en coordinacin con el programa de Traductores Voluntarios de
Parallax. Si esta interesado en participar en nuestro programa de Taductores Voluntarios,
enve un email a [email protected].
CONTRIBUCIONES ESPECIALES
El equipo Parallax ensamblado para preparar esta edicin incluye: el excelente liderazgo
de departmento de Aristides Alvarez, diseo de lecciones y autora tcnica de Andy
Lindsay; arte en la portada de Jen Jacobs; ilustraciones grficas de Rich Allred y Andy
Lindsay; nitpicking, edicin y arreglo de Stephanie Lindsay. Un agradecimiento especial
a Ken Gracey, fundador del programa Stamps in Class y a Tracy Allen y Phil Pilgrim por
su consultora en la seleccin del sensor de luz usado en esta versin para reemplazar el
fotorresistor de sulfato de cadmio. Stephanie esta particularmente agradecida a John
Kauffman por su revision de ltimo minuto del Captulo 6 revisado.
Pgina 10 Robtica con el Boe-Bot
El Cerebro de su Boe-Bot Pgina 11
Figura 1-1
Modulo BASIC
Stamp en un
Robot Boe-Bot
Las actividades en este texto le guiarn a travs de la escritura de programas simples que
hacen que el BASIC Stamp y su Boe-Bot hagan 4 tareas robticas esenciales:
El lenguaje de programacin que usar para completar estas tareas se llama PBASIC, que
es un acrnimo que significa:
ParallaxLa compaa que invent y manufactura los microcontroladores BASIC Stamp
Beginners Hecho para principiantes para aprender cmo programar computadoras
All-purpose - Poderoso y til para resolver muy diferentes tipos de problemas
Symbolic - Usando smbolos (trminos que semejan frases y palabras en Ingls)
Instruction Para indicarle a la computadora qu hacer
Code - en trminos que la computadora (y usted) puedan entender
Page 12 Robtica con el Boe-Bot
HARDWARE Y SOFTWARE
Iniciar con los mdulos del microcontrolador BASIC Stamp es similar similar a inicar
con una PC o una laptop nueva. Lo primero que mucha gente tiene que hacer es sacarla
de la caja, conectarla, instalarla y probar algn software, y quiz escribir algn software
propio usando un lenguaje de programacin. Si esta es su primera vez usando un modulo
BASIC Stamp, estar haciendo estas mismas actividades. Si est un una clase, su
hardware puede estar ya configurado para uested. Si este es el caso, su maestro puede
tener otras instrucciones. Si no, este Captulo le llevar a travs de los pasos para poner a
punto y funcionando su nuevo microcontrolador BASIC Stamp.
Use el botn Click Here to Download para obtener la ltima versin del software.
Page 14 Robtica con el Boe-Bot
Haga click en Click Here to Download para bajar la ltima versin del software
Editor BASIC Stamp Windows.
Figura 1-3
Ventana de descarga
del archivo
Siga los avisos que aparezcan. Cuando la descarga est complete, haga click en
Run. Ver mensajes de su sistema operative pidindole que verifique que desea
continuar con la instalacin. Siempre confirme que desea continuar.
Figura 1-4
Mensaje de descarga
completa
Si se le pide, siempre
confirme que desea
continuar.
El Cerebro de su Boe-Bot Pgina 15
La ventana de instalacin del Editor BASIC Stamp se abrir (Figura 1-5). Haga
click en Next y siga los avisos, aceptando los valores predeterminados.
Figura 1-5
Ventana de Instalacin
del Editor BASIC
Stamp
Figura 1-6
Mensaje de Instalacin
del Driver USB
En este punto, una ventana adicional aparecer detrs de la ventana activa mientras que
los drivers USB se actualizan. Esta ventana eventualmente se cerrar cuando la
instalacin del driver se complete. Si no ve esta ventana, esto no indica un problema.
Acerca de los drivers USB. Los drivers USB que se instalan por defecto con el instalador
del Editor BASIC Stamp Windows son necesarios para usar cualquier hardware Parallax
conectado al puerto USB de su computadra. Las siglas VCP quieren decir Virtual COM Port
(Puerto COM virtual), y le permitir al Puerto USB de su computadora ser visto y tratado
como un puerto serial RS232 estandar serial port por el hardware Parallax.
Drivers USB para otros sistemas operativos. Los drivers USB VCP includos en el
software Editor BASIC Stamp Windows son solo para ciertos sistemas operativos Windows.
Para ms informacin visite www.parallax.com/usbdrivers.
Figura 1-7
Instalacin del
Editor BASIC
Stamp Completa
Haga Click en
Finish.
El Cerebro de su Boe-Bot Pgina 17
Figura 1-8
cono de escritorio del
Editor BASIC Stamp
Figura 1-9
Abriendo el Menu Help
Haga click en la liga Getting Started con Stamps en Class al final de la pgina de
bienvenida, como se muestra en la esquina inferior derecha de la Figura 1-10. El
archivo de ayuda est en Ingls.
O bien, siga las instrucciones en Espaol de Empezando con Stamps in Class
archivo pdf.
El Cerebro de su Boe-Bot Pgina 19
Cuando haya completado las actividades en el archivo Help (o Empezando con Stamps in
Class archivo pdf), regrese a este libro y continue con el Resumen siguiente antes de
continuar con el Captulo 2.
RESUMEN
Este Captulo le gui a travs de los siguientes temas:
Una introduccin al mdulo BASIC Stamp
Dnde conseguir el software del Editor BASIC Stamp gratuito que usar en casi
todos los experimentos en este texto
Cmo instalar el software del Editor BASIC Stamp
Cmo usar la Ayuda del Editor BASIC Stamp y el Manual del BASIC Stamp
Una introduccin al modulo BASIC Stamp, Board of Education, y HomeWork
Board
Cmo parametrizar su hardware BASIC Stamp
Cmo probar su software y su hardware
Cmo escribir y correr un programa PBASIC
Page 20 Robtica con el Boe-Bot
Preguntas
1. Qu dispositivo sera el cerebro de su Boe-Bot?
2. Cuando el BASIC Stamp enva un caracter a su PC/laptop, qu tipo de nmeros
se usan para enviar el mensaje a travs del cable de programacin?
3. Cul es el nombre de la ventana que despliegua mensajes enviados desde el
BASIC Stamp a su PC/laptop?
4. Qu tipo de comandos PBASIC aprendi en este Captulo?
Ejercicios
1. explique lo que hace el asterisco en este comando: DEBUG DEC 7 * 11
3. Hay un problema con estos dos comandos. Cuando corra este cdigo, los
nmeros que se desplegarn estarn pegados uno al otro como si fueran un
nmero grande en vez de dos nmeros pequeos. Modifique estos dos comandos
para que las respuestas aparezcan en diferentes lneas en la terminal de
depuracin.
DEBUG DEC 7 * 11
DEBUG DEC 7 + 11
Proyectos
1. Use DEBUG para desplegar la solucin del problema problema: 1 + 2 + 3 + 4.
2. Salve FirstProgramYourTurn.bs2 con otro nombre. Si tuviera que colocar el
comando DEBUG mostrado a continuacin en la lnea justo antes del comando
END en el programa, que otras lneas podra eliminar y aun hacer que trabaje
igual? Modifique la copia del programa para probar su hiptesis (su prediccin
de lo que pasar).
DEBUG "What's 7 X 11?", CR, "The answer is: ", DEC 7 * 11
El Cerebro de su Boe-Bot Pgina 21
Soluciones
Q1. Un mdulo microcontrolador BASIC Stamp 2.
Q2. Nmeros binarios, esto es, 0s y 1s.
Q3. La Terminal de Depuracin.
Q4. DEBUG y END
E1. Multiplica los dos operadores 7 y 11, resultando en un producto de 77. El
asterisco es el operador multiplicacin.
E2. La Terminal de Depuracin desplegara: 18
E3. Para corregir el problema, agregue un retorno de carro usando el caracter de
control CR y una coma.
DEBUG DEC 7 * 11
DEBUG CR, DEC 7 * 11
END
P2. Las ltimas tres lneas DEBUG pueden ser eliminadas. Se necesita un CR adicional
despus del mensaje Hola.
' Qu s un microcontrolador? - Ch01Prj02_ FirstProgramYourTurn.bs2
' BASIC Stamp enva un mensaje a la Terminal de Depuracin.
END
Esta salida es la misma que con los cdigos anteriores. Este es un ejemplo del
uso de comas para emitir mucha informacin usando slo un comando DEBUG
con multiples elementos en el.
Los Servo Motores de su Boe-Bot pgina 23
Cruz Placa de
de montaje
Control
Punto de
Tornillo
acceso al
Phillips
potenciometro
de ajuste
anode
La etiqueta lead
debe decir
Continuous
Rotation
Nota: Puede serle til hacer una marca en esta pgina para que pueda regresar aqu ms tarde.
Page 24 Robtica con el Boe-Bot
Servos Estandar vs. Servos de rotacin continua: los servos estndar estn diseados
para recibir seales electrnicas que les digan qu posicin mantener. Estos servos
controlan las posiciones de los flaps en aviones de radio control y el volante de los autos.
Los servos de rotacin continua reciben las mismas seales electrnicas, pero en vez de
mantener cierta posicin, giran a ciertas velocidades y direcciones. Los servos de rotacin
continua son ideales para controlar ruedas y poleas.
Cruz de control del Servo Estrella de 4 puntos vs. rueda: no hay ninguna diferencia.
Mientras que este marcado como continuous rotation es el servo para su Boe-Bot. Estar
reemplazando la Cruz de control con una rueda.
El nmero que pone a la derecha del comando PAUSE es llamado argumento Duracin y
su valor le dice que tanto debe esperar antes de moverse al siguiente comando. Las
unidades del argumento son milsimas de segundo (ms). Entonces, si quiere esperar por
un segundo, debe usar un valor de 1000. He aqu cmo se ve el comando:
PAUSE 1000
PAUSE 1000
DEBUG CR, "One second elapsed..."
PAUSE 2000
DEBUG CR, "Three seconds elapsed..."
END
De aqu en adelante, las tres instrucciones que vienen despus de este programa
sern descritas como sigue:
Introduzca, salve y corra TimedMessages.bs2.
Page 26 Robtica con el Boe-Bot
PAUSE 5000
DEBUG CR, "Five seconds elapsed..."
PAUSE 10000
DEBUG CR, "Fifteen seconds elapsed..."
DO
DEBUG "Hello!", CR
PAUSE 1000
LOOP
DO
DEBUG "Hello!", CR
PAUSE 1000
LOOP
En la segunda mitad de esta Actividad, examinar las seales que controlan sus acervos y
los diagramas de tiempo en una perspectiva diferente de la que fueron presentados en
qu es un microcontrolador?
Bono! Los componentes en su kit Boe-Bot pueden ser usados para completar muchas de
las actividades en qu es un microcontrolador? Vaya a www.paralllax.com/go/WAM para
una lista completa y baje el texto.
Page 28 Robtica con el Boe-Bot
Las tiras de colores indican los valores de resistencia. Vea el Apndice B: Cdigos de
Color de Resistencia y Reglas de tableta en la pgina 293 para informacin de cmo
determinar el valor de una resistencia a partir de sus tiras de colores en el encapsulado
cermico.
Un diodo es una vlvula de corriente de un solo camino, y un diodo emisor de luz (LED)
emite luz cuando pasa la corriente a travs de el. A diferencia de los cdigos de color en
una resistencia, el color del LED usualmente slo le dice de qu color brillar cuando la
corriente pase por el. Las marcas importantes en un LED son las contenidas en su forma.
Puesto que un LED es una vlvula de corriente de un solo camino, tiene que asegurarse
de conectarlo en la forma correcta, o no trabajara.
La Figura 2-3 muestra el smbolo esquemtico y dibujo de parte. Un LED tiene dos
terminales. Una es llamada nodo y la otra es llamada ctodo. En esta Actividad tendr
que usar l le en un circuito y tendr que poner atencin y asegurarse que el nodo y el
ctodo estn conectados al circuito adecuadamente. En el dibujo de parte, la punta de
nodo est etiquetada con el signo ms (+). En el smbolo esquemtico, el nodo es la
parte ancha del tringulo. En este dibujo de parte, la punta a todo es el pin etiquetado con
Los Servo Motores de su Boe-Bot pgina 29
Figura 2-3
dibujo de parte del LED y smbolo
esquemtico
LED
Siempre revise el encapsulado plstico del LED. Usualmente, la punta ms larga est
conectada al nodo del LED y la punta ms corta est conectada a su cargo. Pero algunas
veces las puntas han sido recortadas a la misma longitud, o un fabricante no sigue esta
convencin. Entonces, es mejor siempre buscar el punto plano en el encapsulado. Si
conecta un LED al revs, no lo daar, pero no se encender.
Qu es un pin I/O? I/O indica input/output. El BASIC Stamp 2 tiene 24 pines, 16 de los
cuales son pines I/O. En este texto, programar el BASIC Stamp para usar pines I/O como
salidas para hacer que los LED enciendan y apaguen, controlan la velocidad y direccin de
giro de los servos de rotacin continua Parallax, hacer tonos con un parlante, y preparar
sensores para detectar luz y objetos. Tambin programar el BASIC Stamp para usar los
pines I/O para monitorear sensores que indiquen un contacto mecnico, nivel de luz,
objetos en la ruta del Boe-Bot, e incluso su distancia.
Nuevo construyendo circuitos? Vea el Apndice B: Cdigos de Color de Resistencia y
Reglas de tableta en la pgina 293.
Los Servo Motores de su Boe-Bot pgina 31
La Figura 2-5 muestra lo que le programar al BASIC Stamp hacer al circuito LED.
Imagine que tiene una batera de 5 volt (5 V). Aun cuando una batera de 5 V no es
comn, el Board of Education tiene un dispositivo llamado regulador de voltaje que suple
al BASIC Stamp con el equivalente de una batera de 5 V. Cuando conecta un circuito a
Vss, es como si conectara el circuito a la terminal negativa de la batera de 5 V. cuando
conecta la otra terminal del circuito a Vdd, es como si conectara la terminal positiva de la
batera de 5 V.
-
- -
Vdd + - Vdd +
N
- - N N N
N N
+++ + + - +++
+++ - +++ Figura 2-5
5V
+++
= N - 5V
+++
- corriente y flujo de
--- - ---
- - -N - - - -N electrones
-N - N -N - N
Vss _ - Vss _ -
- -
- - - - -
Volts se abrevia V. Esto decir que 5 volts se abrevia 5 V. cuando aplica voltaje a un
circuito, es como aplicar presin elctrica.
Corriente se refiere al grado en el que los electrones pasan a travs de un circuito.
Frecuentemente ver mediciones de corrientes expresadas en amps, que se abrevia A. la
cantidad de corriente que un motor maneja es frecuentemente medida en amps, por
ejemplo 2 A, 5 A, etc. sin embargo, las corrientes que usar en el Board of Education
establecidas en milsimas de un amp, o milliamps. Por ejemplo, 10.3 mA pasa por el
circuito en la Figura 2-5.
...le dice al BASIC Stamp conectar el pin I/O P13 a Vdd, lo que enciende al LED.
... le dice al BASIC Stamp conectar el pin I/O P13 a Vss, lo que apaga al LED.
Intentmoslo.
DO
HIGH 13
PAUSE 500
LOW 13
PAUSE 500
LOOP
Los Servo Motores de su Boe-Bot pgina 33
SOUT
SIN
1
2
24
23
VIN
VSS
SOUT
SIN
1
2
24
23
VIN
VSS
Figura 2-6
BS2 BS2
ATN 3 22 RES ATN 3 22 RES Switcheo del BASIC
VSS VDD (+5V) VSS VDD (+5V)
Stamp
4 21 4 21
P0 5 20 P15 P0 5 20 P15
P1 6 Vdd 19 P14 P1 6 Vdd 19 P14
P2 7 18 P13 P2 7 18 P13
P3 8 Vss 17 P12 P3 8 Vss 17 P12
El BASIC Stamp
P4 9 16 P11 P4 9 16 P11 puede ser
P5 P10 P5 P10
P6
10
11
15
14 P9 P6
10
11
15
14 P9
programado para
P7 12 13 P8 P7 12 13 P8 internamente conectar
BS2-IC BS2-IC la entrada del circuito
LED a Vdd or Vss.
Abra HighLowLed.bs2.
Borre la instruccin completa DEBUG.
Correr programas modificados mientras que observa su LED.
Si el LED parpadear continuamente, tal como lo hizo cuando corri el programa original
con el comando DEBUG, su computadora no tendr este problema.
Page 34 Robtica con el Boe-Bot
Si el LED parpadea una sola vez y se detiene, tiene una computadora con un diseo de
puerto serial no estandar. Si desconecta el cable de programacin de su tarjeta y presiona
el botn Reset, BASIC Stamp correr el programa adecuadamente sin congelarse. En sus
programas, deber agregar un solo comando:
DEBUG "Program Running!"
... justo despus de las directivas de compilacin. Esto abrir la terminal de depuracin y
mantendr el puerto COM abierto. Esto prevendr que sus programas se congelen
despus de la primera pasada por el ciclo DOLOOP, o cualquiera otro de los comandos de
cicleo que estar aprendiendo en captulos posteriores. Ver este comando en algunos de
los programas ejemplo que de otra forma no necesitaran la instruccin DEBUG. Entonces,
debe ser capaz de correr todos los dems programas en este libro an cuando su
computadora haya fallado la prueba diagnstico.
Figura 2-7
diagrama de tiempo para
HighLowLed.bs2
500 ms
Vdd (5 V) Los estados de
encendido/apartado del
LED se muestran arriba
del diagrama de tiempo.
Vss (0 V)
500 ms
1000 ms
Los Servo Motores de su Boe-Bot pgina 35
Intntelo!
Page 36 Robtica con el Boe-Bot
Puede enviar una seal HIGH que encienda LED en P13 por 2 s (2 millonsimas de
Segundo) usando este comando:
PULSOUT 13, 1
Que tanto tiempo el circuito LED conectado a P13 se mantiene encendido cuando enva
este pulso? Averigmoslo. El tiempo que est encendido es 65000 por 2 s:
Duration 65000 2 s
65000 0.000002 s
0 .13 s
... que an es muy rpido, 13 centsimas de segundo.
Los Servo Motores de su Boe-Bot pgina 37
0.13 s 0.13 s
Vdd (5 V)
Figura 2-8
diagrama de tiempo
para PulseP13Led.bs2
Vss (0 V)
2.0 s
DO
LOOP
Page 38 Robtica con el Boe-Bot
0.13 s 0.13 s
2.26 s
Los voltajes (Vdd y Vss) en este diagrama de tiempo no estn etiquetados. Con el
BASIC Stamp, se entiende que la seal en alto es 5 V (Vdd) y la seal en bajo es 0 V (Vss).
Es una prctica comn en documentos que explican el tiempo de seales alto y bajo. Hay
uno o ms de estos documentos para cada componente dentro del circuito que un ingeniero
est diseando. Los ingenieros que crearon el BASIC Stamp tuvieron que revisar muchos
de estos documentos buscando informacin necesaria para tomar decisiones mientras que
se dise el producto.
A veces los tiempos tambin se dejan fuera, o slo se muestran con una etiqueta como thigh
y tlow. Entonces, los valores de tiempo deseados para thigh y tlow se enlistan en una tabla en
algn lugar despus del diagrama de tiempo. Este concepto se discutir con ms detalle en
Basic Analog y Digital, otra gua del estudiante Parallax Stamps in Class.
DO
PULSOUT 13, 65000
PULSOUT 12, 65000
PAUSE 2000
LOOP
Ahora, intentemos correr 100 veces ms rpido (una milsima de duracin). En vez de
aparentar parpadeo, l LED aparecer no ser tan brillante de como lo era cuando envi
una simple seal en alto. Esto es porque l LED est parpadeando tan rpido y por
perodos de tiempo tan cortos que el ojo humano no puede detectar el parpadeo actual ,
slo ve un cambio en el brillo.
Corra el programa modificado y verifique que haga que ambos LEDs se vean
aproximadamente del mismo brillo.
Intente sustituir 850 en el argumento Duration del comando PULSOUT de P13.
DO
PULSOUT 13, 850
PULSOUT 12, 650
PAUSE 20
LOOP
Las instrucciones en este libro fueron escritas para apoyar las tarjetas actualizadas en el
momento de escribir este texto y revisiones compatibles anteriores:
Si su tarjeta es una del tipo y revisiones listadas anteriormente, vaya a una de las
pginas que siguen:
Reset
Figura 2-11
Desenrgizando
0 1 2
La Figura 2-12 muestra el cabezal servo header en el Board of Education. Esta tarjeta
incluye un conector que puede usar para conectar la fuente de energa de los servos ya sea
a Vin o a Vdd. Para moverlo, tendr que jalar lo hacia arriba y afuera de los pines donde
se encuentre, y empujarlo a los pines en donde desea que est.
Si est usando una fuente de CD a 7.5 V, 1000 mA con centro positivo, coloque
el conector a Vdd como se muestra en el lado derecho de la Figura 2-12.
PRECAUCIONel mal uso de fuente CD alimentadas por CA pueden daar sus servos.
Si no tiene experiencia con fuentes CD, considere apegarse al paquete de bateras de 6 V
que vienen con el Boe-Bot.
Slo use fuentes con voltajes de salida CD entre 6 y 7.5 V y salida de corriente en el rango
de 800 mA o ms.
Slo use una fuente de CD QUE est equipada con la misma clase de plug que el paquete
de bateras del Boe-Bot (2.1 mm, centro positivo).
Los Servo Motores de su Boe-Bot pgina 43
Todos los ejemplos e instrucciones en este libro usarn el paquete de bateras. La Figura
2-13 muestra el esquemtico del circuito que construir en el Board of Education. El
conector est colocado en Vin.
Vin
White
P13 Red
Black
White White
Red Red Figura 2-13
Vss Black Black
Servo Conexiones
15 14 Vdd 13 12 para el Board of
Vin
Education
White Red
P12 Red Black
Black X4 X5
Vss
Cmo indic que servo est conectado a P13 y qu servo a P12? Acaba de conectar
sus servos en los cabezales con nmeros sobre ellos. Si el nmero sobre el cabezal donde
el servo est conectado es 13, quiere decir que el servo est conectado a P13. Si el nmero
es 12, quiere decir que est conectado a P12.
Figura 2-14
Board of Education con Servos y
paquetes de batera conectados
Lista de Partes:
(1) paquete de bateras con puntas estaadas (no includas, vea el Apndice A)
(2) Servos de rotacin continua Parallax
(2) conector macho-macho de 3 pines (no includo, vea el Apndice A)
(4) cables conectores
(4) bateras alcalinas AA 1.5 V
(2) circuitos LED construidos y probados de la actividad previa
Figura 2-16
partes para centrado del Servo para
l HomeWork Board
Vbp
White
P13 Red
Black
Figura 2-17
esquemtico de Conexin Servo
Vss para l BASIC Stamp HomeWork
Board
Vbp
Nota: Vbp indica voltaje del paquete
White
P12 Red
de bateras. Vea el recuadro de
Black informacin abajo.
Vss
Vbp indica voltaje battery pack. Se refiere a los 6 VDC suministrados por las cuatro
bateras 1.5 V. esto es trado directamente a la tableta para energizar los servos para Boe-
Bots con el HomeWork Board. Su BASIC Stamp an est energizado por la batera de 9 V.
Figura 2-18: Diagrama de conexiones de los servos (BASIC Stamp HomeWork Board)
Cable
Cable negro con complete-
tira blanca (916) 624-8333 menteRev
negro (916) 624-8333 Rev B
B www.parallaxinc.com
www.parallaxinc.com
www.stampsinclass.com www.stampsinclass.com
Vdd Vin Vss Vdd Vin Vss
X3 X3
P15 P15
P14 P13 P14 Blanco
P13 Vbp
P13 Rojo
P12 P12 Negro
Vss
P11 P11 Rojo
Vbp
P10 P10 Blanco
P12
P9 P9
P8 P8
Conexiones del puerto Servo conexiones por color de cables
Figura 2-19
Alimentacin doble y Servos
conectados
Page 48 Robtica con el Boe-Bot
(916) 624-8333
Rev B
www.parallaxinc.com
www.stampsinclass.com
Vdd Vin Vss
Vss
X3 +
P13 +
470 P15
P14
P12 P13
Figura 2-20
470 P12 Circuito
P11
P10 LED de
LED LED
P9 Monitoreo
P8
P7
de la seal
Vss Vss P6 Servo
P5
P4
P3
P2
P1
P0
X2
2002
HomeWork Board
Cuando todas sus conexiones estn hechas y revisadas, para el paquete de
bateras con bateras y vuelva conectar la batera de 9 V a su clip en el
HomeWork Board.
Figura 2-21
Desarmador
Parallax
El programa para esta seal ser un comando PULSOUT y un comando PAUSE DENTRO
de un ciclo DOLOOP. Imaginar el comando PAUSE a partir del diagrama de tiempo es
fcil; ser PAUSE 20 para las 20 ms entre pulsos.
Imaginar el argumento Pin en el comando PULSOUT tampoco es difcil; ser 12, para el
pin I/O P12. Despus, pensemos que el argumento Duration del comando PULSOUT
Page 50 Robtica con el Boe-Bot
tendra que ser para pulsos de 1.5 ms. 1.5 ms es 1.5 milsimas de segundo, o 0.0015 s.
Recuerde que cualquier nmero que ste en el argumento Duration del comando PULSOUT
multiplica ese nmero por 2 s (2 millonsimas de un segundo = 0.000002 s), y sabr que
tanto durar el pulso. Tambin podr imaginar cul debe ser el argumento Duration del
comando PULSOUT si sabe cunto desea que dure el pulso. Slo divida entre 2 s el
nmero que desea que dure el pulso:
... ahora sabemos que l comando para un pulso de 1.5 ms pulse en P12 ser PULSOUT
12, 750.
Es mejor centrar un servo a la vez porque de esa manera podr escuchar cuando el motor
se detenta mientras que lo est ajustando. Este programa slo enviar la seal de centrado
al servo conectado a P12, y las siguientes instrucciones le guiarn a travs del ajuste.
Cuando complete el proceso con el servo P12, lo repetir con el servo conectado a P13.
Figura 2-23
Coloque el Switch de 3-Posiciones
0 1 2 a la Posicion-2
DO
PULSOUT 12, 750
PAUSE 20
LOOP
Precaucion: no empuje muy fuerte con el desarmador! El potenci metro dentro del
servo es bastante delicado, tenga cuidado de no aplicar ms presin que la necesaria.
Figura 2-24
ajuste del centro
del Servo
2) suavemente gire el
1) Inserte la punta de un desarmador
desarmador para ajustar el
Phillips dentro del hoyo de acceso al
potencimetro hasta que el
potenciometro.
servo deje de moverse.
Si el servo no gira, vaya a la seccin Su Turno para que pueda probar y centrar el
otro servo que est conectado a P13.
DO
PULSOUT 13, 750
PAUSE 20
LOOP
Despus de haber declarado una variable como un tambin puede inicializar la, lo que
significa darle un valor inicial.
value = 500
anotherValue = 2000
Page 54 Robtica con el Boe-Bot
Antes del correr el programa, prediga lo que desplegar cada comando DEBUG.
Introduzca, salve y corra VariablesAndSimpleMath.bs2.
Compare los resultados con sus predicciones y explique las diferencias.
END
Estos comandos DEBUG le ayudan a ver lo que cada variable guarda despus de
inicializada. Puesto que a valor le fue asignado 500 y a anotherValue le fue asignado
2000, stos comandos DEBUG enviarn los mensajes value = 500 y anotherValue =
2000 a la terminal de depuracin.
DEBUG ? valor ' Despliega valores
DEBUG ? anotherValue
El formateador del comando DEBUG ? Puede ser usado antes de una variable para
hacer que la terminal de depuracin despliegue su nombre, el valor decimal que est
guardando, y un retorno de carro es muy til para ver el contenido de una variable.
DEBUG "value = ", SDEC value, CR ' Despliega valores otra vez
Los 3 puntos ... indican que puede poner uno o mas commandos entre las palabras FOR
y NEXT. Asegrese de declarar una variable para usarla en el argumento Counter. Los
argumentos StartValue y EndValue pueden ser numerous o variables (o incluso alguna
expresin). Cuando vea algo entre llaves { } en una descripcin de sintxis quiere decir
que es un argumento opcional. En otras palabras, el ciclo FORNEXT trabajar sin ello,
pero puede usarlo para algn propsito especial.
No tiene que nombre a la variable counter. Por ejemplo, puede llamarla myCounter.
myCounter VAR Word
He aqu un ejemplo de un ciclo FORNEXT que usa la variable myCounter para contar.
Tambin despliega el valor de la variable myCounter cada vez que se ejecuta el ciclo.
FOR myCounter = 1 TO 10
DEBUG ? myCounter
PAUSE 500
NEXT
FOR myCounter = 1 TO 10
DEBUG ? myCounter
PAUSE 500
NEXT
END
Corra el programa modificado. Not que BASIC Stamp cont hacia abajo en
vez de hacia arriba? Har esto siempre que el argumento StartValue sea mayor
que el argumento EndValue.
Recuerda el argumento opcional {STEP StepValue}? Puede usarlo para hacer que
myCounter cuente en pasos. En vez de 9, 10, 11, puede hacer que cuente en pares (9,
11, 13) o en pasos de 5 (10, 15, 20), o cualquier StepValue que desee, hacia adelante
o hacia atrs. He aqu un ejemplo que lo usa para contar hacia abajo en pasos de 3:
En la seccin Su Turno de la Actividad #2, program el BASIC Stamp para enviar una
serie de pulsos de 1.3 ms a un LED. Veamos ms de cerca a la serie de pulsos y
averigemos cmo puede usarse para controlar un servo. La Figura 2-25 muestra como
un servo de Rotacin Continua Parallax gira a velocidad plena hacia la derecha cuando le
enva pulsos de 1.3 ms. La velocidad plena vara entre 50 a 60 RPM.
Servo a la derecha a
velocidad plena
Vss (0 V)
20 ms
Los Servo Motores de su Boe-Bot pgina 59
Qu es RPM? Revoluciones Por Minuto. Es el nmero de vueltas completas que algo gira
en un minute.
Qu es un tren de pulso? As como un ferrocarril es una serie de carros, un tren de
pulsos es una serie de pulsos.
DO
PULSOUT 13, 650
PAUSE 20
LOOP
Note que un pulso de 1.3 ms requiere un argumento Duration del comando PULSOUT de
650, que es menor a 750. Todos los anchos de pulso menores a 1.5 ms, y por lo tanto los
argumentos Duration de PULSOUT menores a 750, causarn que el servo gire a la derecha.
DO
PULSOUT 12, 650
PAUSE 20
LOOP
DO
PULSOUT 12, 850
PAUSE 20
LOOP
Los Servo Motores de su Boe-Bot pgina 61
Modulacin del ancho de Pulso. Un voltaje que se mantiene cierta cantidad de tiempo en
2 estados distintos puede ser considerado como una serie de estados en descanso y
pulsos. Una lista de seales de pulso que controlan la velocidad y direccin de su servo es:
Figura 2-22, pg. 49: 1.5 ms en nivel alto hace que el servo se quede quieto.
Figura 2-25, pg. 58: 1.3 ms en nivel alto hace que el servo gire a la derecha.
Figura 2-26, pg. 60: 1.7 ms en nivel alto hace que el servo gire a la izquierda.
Estas seales se mantienen en cortos perodos de tiempo en niveles altos (pulsos) que
estn separados por seales en nivel bajo (estados en descanso). Un programa puede
ajustar la duracin del pulso, que es el tiempo que la seal est en nivel alto. Esta duracin
es comunmente llamada ancho de pulso porque el tiempo que la seal est en nivel alto se
ve ms ancho o estrecho en un diagrama de tiempo o en un dispositivo como un
osciloscopio que traza el voltaje contra el tiempo.
Modulacin es el proceso de ajustar una propiedad de una seal que est siendo
transmitida para hacerla transmitir cierta informacin. Con un servo, la propiedad que es
modulada es el ancho de pulso, el tiempo que la seal est en nivel alto. La informacin
que transmite es la velocidad y direccin del servo.
Las seales de servo control son ejemplos de pulsos positivos con estados de descanso en
nivel bajo y estados activos en nivel alto. Los pulsos negativos seran la versin inversa con
estados de descanso en nivel alto y estados activos en nivel bajo.
Su Turno P13Clockwise.bs2
Modifique el argumento Pin del comando PULSOUT para que haga que el servo
conectado a P13 gire hacia la izquierda.
DO
PULSOUT 13, 850
PULSOUT 12, 650
PAUSE 20
LOOP
Esto ser importante en breve. Pinselo: cuando los servos son montados a cada lado del
chasis, uno tendr que girar a la derecha mientras que el otro gire a la izquierda para
hacer que el Boe-Bot gire sobre su eje. Parece extrao? Si puede visualizarlo, intente
esto:
650 850
850 850
650 650
750 850
650 750
760 740
770 730
850 700
800 650
Page 64 Robtica con el Boe-Bot
He aqu un ejemplo de ciclo FORNEXT que har que el servo gire por unos pocos
segundos:
FOR counter = 1 TO 100
PULSOUT 13, 850
PAUSE 20
NEXT
comando
Veamos la cantidad exacta de tiempo que este cdigo har que corra el servo. Cada vez
en el ciclo el comando PULSOUT dura 1.7 ms, PAUSE dura 20 ms, y le toma alrededor de
1.3 ms para ejecutar el ciclo.
Puesto que el ciclo se ejecuta 100 veces, el tiempo es 23.0 ms por 100.
time 100 23 .0 ms
100 0 .0230 s
2.30 s
Digamos que quiere que el servo corra por 4.6 segundos. Su ciclo FORNEXT tendr que
ejecutarse el doble de veces:
FOR counter = 1 TO 200
PULSOUT 13, 850
PAUSE 20
NEXT
END
Digamos que quiere correr ambos servos, el servo P13 a un ancho de pulso de 850 y el
servo P12 a un ancho de pulso de 650. Ahora, cada vez que pase por el ciclo, tomar:
Si quiere corer los servos por una cierta cantidad de tiempo, puede calcularlo as:
Digamos que queremos corer los servos por 3 segundos. Esto es:
Ahora, puede usar el valor 122 en EndValue del ciclo FORNEXT, y se ver as:
FOR counter = 1 TO 122
PULSOUT 13, 850
PULSOUT 12, 650
PAUSE 20
NEXT
END
Verifique que cada servo gir en una direccin por tres segundos, luego
cambiaron de direccin y giraron por tres segundos ms. Not que mientras que
los servos cambiaron de direccin al mismo tiempo siempre estuvieron girando
en direcciones opuestas? Cmo podra ser esto til?
Los Servo Motores de su Boe-Bot pgina 67
TIP para medir el tiempo de giro, mantenga presionado el botn Reset en su Board of
Education (o BASIC Stamp HomeWork Board). Cuando est listo para empezar a medir el
tiempo, libere el botn Reset.
RESUMEN
Este Captulo le gui a travs de la conexin, ajuste y prueba de los servos de rotacin
contina Parallax. Al hacerlo, se presentaron una variedad de comandos PBASIC. El
comando PAUSE hace que el programa se detenga por un breve o por largos perodos de
tiempo, dependiendo del argumento Duration que utilice. DOLOOP hace repetir uno solo o
un grupo de comandos PBASIC una y otra vez. HIGH y LOW fueron presentados como una
forma de hacer que el BASIC Stamp conecte un pin I/O a Vdd or Vss. Seales de alto y
bajo nivel fueron vistas con ayuda de un circuito LED. Estas seales fueron usadas para
presentar los diagramas de tiempo.
El comando PULSOUT fue presentado como una forma ms precisa de entregar una seal
de alto o bajo nivel, y un circuito LED tambin fue usado para ver las seales enviadas
por el comando PULSOUT. Luego, se usaron DOLOOP, PULSOUT, y PAUSE para enviar una
seal para mantener quietos a los servos de rotacin contina Parallax, que es un tren de
pulsos de 1.5 ms cada 20 ms. El servos ajust con un desarmador mientras que reciba los
pulsos de 1.5 ms hasta que se mantuvieron quietos. Este proceso es llamado "centrado"
del servo.
Luego de que los servos fueron centrados, las variables fueron presentadas como una
forma de guardar valores. Las variables pueden ser usadas en operaciones matemticas y
para conteo. Se presentaron los ciclos FORNEXT como una forma de contar. Los ciclos
FORNEXT controlan el nmero de veces que se ejecutan las lneas de cdigo que se
encuentran entre los comandos FOR y NEXT. Entonces los ciclos FORNEXT fueron usados
Page 68 Robtica con el Boe-Bot
Preguntas
1. En qu difieren los servos de rotacin contina Parallax de los servos estndar?
2. Cuanto dura un milisegundo? Como lo abrevia?
3. Qu comandos PBASIC puede usar para hacer que otros comandos PBASIC se
ejecuten una y otra vez?
4. Qu comando causa que l BASIC Stamp internamente conecte uno de sus
pines I/O a Vdd? Qu comando causa la misma conexin, pero a Vss?
5. Cuales son los nombres de los diferentes tamaos de variables que pueden ser
declarados en un programa PBASIC? Cual es el tamao de los valores que
cada tamao de variable puede guardar?
6. Cual es la clave para controlar la direccin y velocidad de un servo de rotacin
contina Parallax? Cmo se relaciona esto con los diagramas de tiempo? Qu
comando y argumento puede ajustar para controlar la direccin y velocidad de
un servo de rotacin contina?
Ejercicios
1. Escriba un comando PAUSE t que haga que el BASIC Stamp no haga nada por 10
segundos.
2. Modifique este ciclo FORNEXT PARA que cuente del 6 al 24 en pasos de 3.
Tambin, escriba la declaracin de variable que necesitar para hacer que este
programa funcione.
FOR counter = 9 TO 21
DEBUG ? counter
PAUSE 500
NEXT
Proyecto
1. escriba un programa que cause que un LED conectado a P14 se encienda
atenuado (encendido/apagado con cada pulso) mientras que el servo P12 este
girando.
2. Escriba un programa que haga funcionar los servos durante tres segundos en
cada una de las cuatro diferentes combinaciones de rotacin. Dato: necesitar
cuatro ciclos diferentes FORNEXT. Primero, ambos servos deben rotar a la
izquierda, luego del en ambos rotar a la derecha. Luego, el servo P12 debe girar
Los Servo Motores de su Boe-Bot pgina 69
Soluciones
Q1. en vez de mantener una cierta posicin como un servo estndar, los servos de
rotacin contina Parallax giran en una cierta direccin y a una cierta velocidad.
Q2. Un milisegundo dura una milsima de segundo, y se abrevia "ms".
Q3. El comando DOLOOP se usa para hacer que otros comandos PBASIC se ejecuten
una y otra vez.
Q4. HIGH conecta un pin I/O a Vdd, LOW conecta un pin I/O a Vss.
Q5. Los tamaos de variables son bit, nib, byte, y word.
Bit guarda 0 a 1
Nib guarda 0 a 15
Byte guarda 0 a 255
Word guarda 0 a 65535 o -32768 a +32767
Q6. el ancho de pulso controlan la direccin y velocidad del servo. Como se puede
ver en un diagrama de tiempo, el ancho de pulso es el tiempo en nivel alto. En
PBASIC, el pulso puede ser generado con el comando PULSOUT. El argumento
Duration del comando PULSOUT ajusta la velocidad y direccin.
P1. La clave para resolver este problema es enviar un tren de pulsos al LED as como
tambin al servo.
DO
PULSOUT 12, 650 ' P12 servo a la derecha
PULSOUT 14, 650 ' P14 LED prende atenuado
PAUSE 20
LOOP
P2. Primero, calcule el nmero de ciclos necesarios para hacer que los servos corren
por tres segundos, para cada combinacin de rotacin. Segn lo indicado en la
pgina 65, el tiempo propio del cdigo es 1.6 ms.
'{$STAMP BS2}
'{$PBASIC 2.5}
END
Page 72 Robtica con el Boe-Bot
Ensamble y Pruebe Su Boe-Bot pgina 73
Actividad Resumen
1 Construir el Boe-Bot.
2 Volver a probar los servos para asegurarse que estn bien conectados.
3 Conectar y probar un parlante para saber cundo estn bajas las bateras del
Boe-Bot.
4 Controlar y probar la velocidad del servo con la Terminal de Depuracin.
Herraminetas
(1) desarmador Parallax
(Phillips #1, includo) Figura 3-1
(1) llame mixta de 1/4 herramientas
(Opcional pero til) para
(1) pinzas de punta (opcionales) ensamble
del Boe-Bot
Page 74 Robtica con el Boe-Bot
Partes del Boe-Bot - las partes para el Boe-Bot estn ya sea incluidas en el kit completo
del Boe-Bot o en una combinacin del Kit completo Board of Education y del Kit de Partes
de Robtica. Si esta usando un HomeWork Board, necesitar un paquete de bateras con
puntas estaadas y dos conectores de tres pines adicionales. Vea el Apndice A: Lista de
Partes y Opciones en la pgina 289 para ms informacin.
Figura 3-2
Chasis y
elementos
fsicos
superiores
Partes (izq.);
ensamble
(derecha)
Ensamble y Pruebe Su Boe-Bot pgina 75
Figura 3-3
Chasis y elementos
fsicos superiores
Eje de
salida
Partes (izquierda);
Tornillo Cruz ensamble (derecha)
Phillips de
control
Alto!
Antes del siguiente paso, debe haber completado las siguientes actividades del
Captulo 2: Los Servomotores de su Boe-Bot
Figura 3-4
montando los
Servos en el
Chasis
Partes
(izquierda);
ensamble
(derecha)
Ensamble y Pruebe Su Boe-Bot pgina 77
Lista de partes para Boe-Bot con un Lista de partes para Boe-Bot con un
Board of Education: HomeWork Board:
(1) Chasis Boe-Bot (semi armado) (1) Chasis Boe-Bot (semi armado)
(2) tornillos Phillips cabeza plana,3/84-40 (2) tornillos Phillips cabeza plana,3/84-40
(2) tuercas, 4-40 (2) tuercas, 4-40
(1) Paquete de bateras con plug centro + (1) Paquete de bateras, puntas estaadas
Figura 3-5
elementos
fsicos para
montaje del
Paquete de
bateras
Instrucciones:
Use los tornillos de cabeza plana y tuercas para unir el paquete de bateras a la
cara inferior del chasis del Boe-Bot (lado izquierdo de la Figura 3-6).
Asegrese de insertar los tornillos a travs del paquete de bateras y luego apriete
las tuercas en la parte superior del chasis.
Page 78 Robtica con el Boe-Bot
Pase el cable de energa del paquete de bateras a travs del barreno cubierto con
la goma en el centro del chasis (lado derecho de la Figura 3-6).
A las las lneas del servo a travs del mismo barreno.
Acomode las lneas del servo y el cable de alimentacin como se muestra.
Figura 3-6
Paquete de
bateras
instalado
Lista de partes:
(1) Boe-Bot semi armado (no se
muestra)
Figura 3-7
(1) horquilla 1/16
elementos
(1) llanta posterior tipo esfera fsicos de la
(2) llantas tipo liga rueda
(2) ruedas plsticas maquinadas
(2) tornillos guardados al
remover las cruces de
control de los servos
Instrucciones:
El lado izquierdo de la Figura 3-8 muestra la rueda posterior del Boe-Bot montada en el
chasis. La rueda posterior es solamente una bola de plstico con un barreno a travs de su
centro. Una horquilla la sostiene al chasis y funciona como eje de la rueda.
Ensamble y Pruebe Su Boe-Bot pgina 79
La Figura 3-8 (der.) muestra las ruedas de traccin del Boe-Bot montadas en los servos.
Estire cada llanta tipo liga y colquela sobre el permetro de cada rueda.
Cada rueda de plstico tiene un saque o caja que embona en el eje de salida del
servo. Presione cada rueda de plstico sobre el eje de salida del servo
asegurndose que le sea en lnea y se hunde en el saque.
Use los tornillos que guard cuando removi la Cruz de los servos para unir las
fuerzas a los ejes de salida de los servos.
Figura 3-8
montando las
ruedas
Rueda posterior
(izquierda);
ruedas de
traccin
(derecha)
Page 80 Robtica con el Boe-Bot
Lista de partes para Boe-Bot con un Lista de partes para Boe-Bot con un
Board of Education: HomeWork Board:
Va el lado izquierdo de la Figura 3-9. Va el lado derecho de la Figura 3-9.
(1) Chasis Boe-Bot (semi ensamblado) (1) Chasis Boe-Bot (semi ensamblado)
(4) tornillos cabeza de gota, 1/4 4-40 (4) tornillos cabeza de gota, 1/4 4-40
(1) Board of Education con BASIC Stamp (1) BASIC Stamp HomeWork Board
2
Figura 3-9
Chasis Boe-Bot
y tarjetas
Board of
Education
(izquierda);
HomeWork
Board (derecha)
La Figura 3-10 muestra los servo puertos reconectados tanto para el Board of Education
(lado izquierdo) y el HomeWork Board (lado derecho).
White White
Red Red White
Black Black Stripe
(916) 624-8333 Rev
SolidB
www.parallaxinc.com
www.stampsinclass.com
Black
15 14 Vdd 13 12 Figura 3-10
Vdd Vin Vss
X3
servo
Red
Black
puertos
P15
P14
reconectados
X4 X5
P13 P13 - White
P12 Vbp - Red
P11 Vss - Black
P10 Vbp - Red
P9 P12 - White
P8
En el Board of Education En el HomeWork Board
La Figura 3-11 muestra el Chasis del Boe-Bot con sus respectivas tarjetas unidas.
Coloque la tarjeta en las cuatro extensiones para que se alineen con los 4
barrenos de las 4 esquinas de la tarjeta.
La tableta debe quedar cerca de las ruedas de traccin, no a la rueda posterior.
Una la tarjeta a las extensiones con los tornillos de cabeza de gota.
Figura 3-11
tarjetas
unidas al
chasis del
Boe-Bot
La Figura 3-12 muestra los robots Boe-Bot ensamblados, el izquierdo construido con un
Board of Education (Serial Rev C) y el derecho construido con un HomeWork Board.
Page 82 Robtica con el Boe-Bot
Desde la parte inferior del chasis, jale cualquier exceso de cable de batera o de
servos a travs del barreno cubierto con la goma.
Pliegue la longitud del cable excedente entre los servos y el chasis.
Figura 3-12
Robots Boe-
Bot
ensamblados
Left
Figura 3-13
lados frontal,
Back Front trasero, izquierdo y
derecho de su robot
Boe-Bot
Right
Ensamble y Pruebe Su Boe-Bot pgina 83
3 segundos a la derecha
Figura 3-14
probando la rueda
Alto 1 segundo
derecha
3 segundos a la izquierda
END
Todo lo que tiene que hacer es cambiar los 3 comandos PULSOUT para que se lean
PULSOUT 13 en vez de PULSOUT 12.
Solucin de Problemas de los Servos : he aqu una lista de los sntomas ms comunes.
El servo simplemente no gira.
Si esta usando un Board of Education, asegrese de que el switch de 3
posiciones esta colocado en la posicin 2. Luego puede volver a correr programa
presionando y liberando el botn Reset.
Si esta usando un BASIC Stamp HomeWork Board, asegrese de que el Paquete
de bateras tiene bateras nuevas, todas orientadas adecuadamente.
Vuelva a revisar las conexiones de su servo use la Figura 3-10 en la pgina 81
como gua. Si esta usando un HomeWork Board, quiz quiera volver a ver la
Figura 2-18 en la pgina 47.
Revise y asegrese de haber cargado al programa correctamente.
El servo derecho no gira, pero el izquierdo si.
Los servos estn intercambiados. El servo que esta conectado a P12 debera estar
conectado a P13, y el servo que esta conectado a P13 debera estar conectado a P12.
Desconecte la energa.
Desconecte ambos servos.
Conecte el servo que fue conectado a P12 a P13.
Conecte el otro servo (que fue conectado a P13) a P12.
Reconecte la energa.
Vuelva a correr RightServoTest.bs2.
La rueda no se detiene completamente; gira lentamente.
El servo pudiera no estar exactamente centrado. Hay dos formas de arreglarlo:
Ajuste en hardware: regrese y repita la Actividad #4 Captulo 2: Centrando los
Servos en la pgina 49. Si los servos no estn montados para dar fcil acceso a
los puertos de los potencimetros, considere reorientarlos para re-ensamblar.
Ajuste en software: si la rueda gira lentamente a la izquierda, use un valor
ligeramente ms pequeo que 750. Si est girando a la derecha, use un valor
ligeramente mayor que 750. Este nuevo valor ser usado en lugar de 750 para
todos los comandos PULSOUT para esa rueda en los experimentos en este libro.
La rueda no se detiene por un segundo entre las votaciones derecha e izquierda.
La rueda puede girar rpidamente por 3 segundos en una direccin y 4 en la otra. Tambin
puede girar rpidamente por 3 segundos, luego ligeramente ms lento por 1 segundo, y
luego rpidamente de nuevo por 3 segundos. O, puede girar rpidamente en la misma
direccin por 7 segundos. No importa, todo esto significa que el potencimetro est fuera
de ajuste.
Remuevan las ruedas, desmonte los servos y repita el ejercicio en la Actividad #4:
Centrando los Servos en la pgina 49.
Page 86 Robtica con el Boe-Bot
Cuando la fuente de voltaje regresa por arriba de 5.2 V, el BASIC Stamp empieza a
correr otra vez, pero no en el mismo lugar en el programa. Empieza desde el principio del
programa. Esto es exactamente lo mismo que pasa cuando desconecta la energa y la
vuelva conectar, y es lo mismo que pasa si presiona y suelta el botn Reset en su tarjeta.
Cuando las bateras de su Boe-Bot corren con bajo voltaje, los requerimientos pueden
causar que el programa reinicie cuando no lo espera. Esto puede llevarlo a verdaderas
confusiones del comportamiento del Boe-Bot. En algunos casos, el Boe-Bot estar
corriendo el curso que se le haya programado a navegar y sbitamente, pareciera perderse
el ir en una direccin inesperada. Si las bateras bajas son la causa, pudiera ser el hecho
de que el programa del Boe-Bot regresar al inicio y empezar a otra vez. En otros casos,
el Boe-Bot puede terminar haciendo una danza confusa porque cada vez que los servos
empiezan a girar, sobrecargan las ya de por s bajas bateras. El programa intenta hacer
que los servos giren por una fraccin de segundo, entonces reinicia una y otra vez.
Figura 3-16
Piezoparlante
Partes requeridas
(1) Boe-Bot ensamblado y probado
(1) Piezoparlante
(Diversos) cables conectores
Si su piezoparlante tiene una etiqueta que diga Remove seal after washing qutela y
proceda. Su piezoparlante no debe ser lavado!
Page 88 Robtica con el Boe-Bot
Los circuitos de piezoparlante y servo por el resto de las actividades en este texto.
Todos los esquemticos de circuito a partir de este punto mostrarn circuitos que
deben ser agregados a los circuitos existentes servo y piezoparlante.
Todos los diagramas de conexiones mostrarn el circuito del esquemtico que viene
justo antes de el junto con las conexiones de circuito servo y piezoparlante.
P4
Figura 3-17
esquemtico del circuito
indicador Inicio/Reset del
programa
Vss
Ensamble y Pruebe Su Boe-Bot pgina 89
To Servos To Servos
15 14 Vdd 13 12
(916) 624-8333
Red
www.parallax.com Rev B
Black www.stampsinclass.com Figura 3-18
X4 X5
Vdd Vin Vss diagrama de
Vdd Vin Vss
X3 conexiones para
X3
P15
el circuito
P15 P14 indicador de
P14 P13
P13 P12
inicio/Reset del
P12 P11 programa
P11 P10
P10 P9
P9 P8 Board of
P8 P7
P7
Education
P6
P6 P5 (izquierda) y
P5 P4 HomeWork Board
P4 P3
P3 + (derecha)
P2
+ P2
P1
P1 P0
P0 X2
X2
Board of Education
Rev C 2000-2003 HomeWork Board
Programando el indicador inicio/Reset
El siguiente programa ejemplo prueba el piezoparlante. Usa el comando FREQOUT para
enviar seales precisas en tiempo de nivel alto/bajo al parlante. La sintaxis FREQOUT es:
FREQOUT Pin, Duration, Freq1 {,Freq2}
El argumento Pin es 4, significa que las seales en alto/bajo sern enviadas al pin I/O P4.
El argumento Duration, que es qu tanto durarn las seales en alto/bajo, es 2000, que es
2000 ms o 2 s. El argument Freq1 es la frecuencia de las seales de nivel alto/bajo. En
este ejemplo, las seales de nivel alto/bajo harn un tono de 3000 hertz, o 3 kHz.
Page 90 Robtica con el Boe-Bot
La Frecuencia puede ser medida en hertz (Hz). Los hertz es una medicin de frecuencia
de cuntas veces por Segundo algo pasa. Un Hertz es smplemente una vez por Segundo,
y se abrevia 1 Hz. Un kilohertz es mil veces por segundo y se abrevia 1 kHz.
FREQOUT sintetiza tonos digintalmente. El comando FREQOUT aplica pulsos alto/bajo de
varias duraciones que hace que la vibracin del piezoparlante se semeje ms
cercanamente a las vibraciones naturales de las cuerdas musicales.
DO ' DO...LOOP
DEBUG CR, "Waiting for reset" ' Despliega mensaje
PAUSE 500 ' cada 0.5 segundos
LOOP ' hasta un reset de hardware.
Una rutina de inicializacin esta conformada por todos los commandos necesarios para
que un dispositivo o programa est a punto y corra. Frecuentemente incluye la
parametrizacin de ciertos valores variables, sonidos indicadores y, para dispositivos ms
complejos, autopruebas y calibracin.
Abra HelloOnceEverySecond.bs2.
Copie el comando FREQOUT del programa StartResetIndicator.bs2 en el programa
HelloOnceEverySecond.bs2, arriba de la seccin DOLOOP.
Corra el programa modificado y verifique que responde con un tono de aviso
cada vez que al BASIC Stamp se le aplica reset (ya sea presionando o liberando
el botn Reset en la tarjeta o desconectando y reconectando la batera).
Page 92 Robtica con el Boe-Bot
Ventana de
transmisin Figura 3-19
Ventanas de
Recepcin y
Transmisin de
Ventana de la Terminal de
recepcin Depuracin
El ancho de pulso es una forma comn de describir cunto dura un pulso. La razn
de que se le llame ancho de pulso es porque el tiempo que dura un pulso esta
relacionada a qu tan ancho es en un diagrama de tiempo. Los pulsos que duran ms
son ms anchos en los diagramas de tiempo y viceversa.
El comando DEBUGIN puede ser usado para capturar un valor decimal que introduzca en
la ventana de Transmisin de la Terminal de Depuracin y guardarlo en pulseWidth:
DEBUGIN DEC pulseWidth
Entonces puede programar el BASIC Stamp para usar este valor. Aqu es usado en el
argumento Duration del comando PULSOUT:
PULSOUT 12, pulseWidth
Contine esta actividad con el Boe-Bot apoyado en su parte frontal para que las
ruedas no se apoyen en el piso.
Introduzca, salve y corra TestServoSpeed.bs2.
Apunte a la ventana de transmision de la Terminal de Depuracin con su ratn y
haga click para activar el cursor en esa ventana para escribir.
Escriba 650 y presione la tecla Enter.
Verifique que el servo gira a velocidad plena a la derecha por 6 segundos.
Intente medir la velocidad rotacional de la rueda en RPM (revoluciones por minuto) para
un rango de anchos de pulso entre 650 y 850. He aqu como:
Haga una marca en la rueda para que pueda ver cunto gira en 6 segundos.
Page 94 Robtica con el Boe-Bot
Use la Terminal de Depuracin para probar cunto gira la rieda con cada uno de
los siguientes anchos de pulso: 650, 660, 670, 680, 690, 700, 700, 710, 720, 730,
740, 750, 760, 770, 780, 790, 800, 810, 820, 830, 840, 850
Para cada ancho de pulso, multiplique el nmero de vueltas por 10 para obtener
las RPM. Si la rueda hace 3.65 vueltas completas estaba girando a 36.5 RPM.
Explique en sus propias palabras como puede usar el ancho de pulso para
controlar la velocidad del servo de rotacin continua.
'{$STAMP BS2}
'{$PBASIC 2.5}
DO
LOOP
El resto del programa esta anidado en un ciclo DOLOOP, por lo que se ejecutar una y
otra vez. Al operador de la Terminal de Depuracin (usted) se le pide que introduzca un
ancho de pulso. El comando DEBUGIN guarda este valor en la variable pulseWidth.
DEBUG "Enter pulse width: "
Para hacer la medicin mas precisa, deben ser enviados dos comandos PULSOUT. Al hacer
a uno de los comandos PULSOUT del mismo valor bajo 750 como al otro arriba de 750, la
suma de los dos argumentos PULSOUT Duration siempre es 1500. Esto asegura que los dos
comandos PULSOUT combinados toman la misma cantidad de tiempo. El resultado es que
no importa la Duration de su commando PULSOUT, el ciclo FORNEXT tomar la misma
cantidad de tiempo para ejecutarse. Esto har ms precisas las mediciones de RPM que
tomar en la seccin Su Turno.
El siguiente comando toma el ancho de pulso que introdujo y calcula un ancho de pulso
que resulte en 1500 cuando los dos se suman juntos. Si introduce un ancho de pulso de
650, pulseWidthComp ser 850. Si introduce un ancho de pulso de 850,
pulseWidthComp ser 650. Si introduce un ancho de pulso de 700, pulseWidthComp
ser 800. Intente otros ejemplos. Todos sumarn 1500.
pulseWidthComp = 1500 - pulseWidth
Un ciclo FORNEXT que corre por 6 segundos manda pulsos al servo de la derecha (P12).
El valor de pulseWidthComp se enva al servo de la izquierda (P13), hacindolo girar en
direccin opuesta.
FOR counter = 1 TO 244
PULSOUT 12, pulseWidth
PULSOUT 13, pulseWidthComp
PAUSE 20
NEXT
60
40
Rotational Velocity, RPM
20
Figura 3-20
0 Ejemplo de Curva de
Transferencia para un
-20
Servo de Rotacin
-40
Continua Parallax
-60
1.300 1.350 1.400 1.450 1.500 1.550 1.600 1.650 1.700
Pulse Width, m s
Right Servo
Puede usar la Tabla 3-1 para grabar los datos para su propia curva de transferencia.
Mantenga en mente que el programa ejemplo esta controlando la rueda derecha con los
valores que introduzca. La rueda izquierda gira en direccin opuesta.
Marque su rueda dercha para que tenga un punto de referencia para contar las
revoluciones.
Corra TestServoSpeed.bs2.
Ensamble y Pruebe Su Boe-Bot pgina 97
Tabla 3-1: Ancho de Pulso y RPM para Servo de Rotacin Continua Parallax
Ancho Ancho Ancho Ancho
Velocidad Velocidad Velocidad Velocidad
de de de de
Rotacional Rotacional Rotacional Rotacional
Pulso Pulso Pulso Pulso
(RPM) (RPM) (RPM) (RPM)
(ms) (ms) (ms) (ms)
1.300 1.400 1.500 1.600
1.700
Puesto que el servo gira por 6 segundos, puede multiplicar este valor por 10 para obtener
revoluciones por minuto (RPM).
Multiplique este valor por 10 e introduzca el resultado cerca al dato 1.3 ms.
Introduzca el valor 655, y cuente cuantas vueltas dio la rueda.
Multiplique este valor por 10 e introduzca el resultado cerca al dato 1.31 ms.
Mantenga incrementando las duraciones por 5 (0.01 ms) hasta que llegue a 850
(1.7 ms).
Use una hoja de clculo, calculadora o papel graficador para graficar los datos.
Repita este proceso para su otro servo.
Para repetir estas mediciones para la rueda izquierda, modifique el comando PULSOUT
para que los pulsos con una Duration de pulseWidth sean enviados a P13 y los pulsos
con una Duration de pulseWidthComp sean enviados a P12.
Page 98 Robtica con el Boe-Bot
RESUMEN
Este Captulo cubri el ensambe y prueba del Boe-Bot. Esto involucr un ensamble
mecnico, como conectar las diversas partes mviles al chasis del Boe-Bot. Tambin
involucr el ensamblado del circuito, conectando los servos y el piezoparlante. La prueba
involucr volver a probar los servos despus de que fueron desconectados para construir
el Boe-Bot.
El concepto de decaimiento fue presentado junto con lo que hace esta condicin a un
programa ejecutndose en el BASIC Stamp. El decaimiento causa que l BASIC Stamp
se apague, y luego reinicien programa desde el principio. Un piezoparlante fue agregado
para indicar el inicio de un programa. Si el piezoparlante suena a la mitad de un programa
corriendo cuando no se supone que lo haga, esto puede indicar una condicin de
decaimiento las condiciones de decaimiento pueden indicar bateras bajas. Para hacer que
el piezoparlante ejecute un tono para indicar un Reset, se present el comando FREQOUT.
Este comando es parte de una rutina de inicializacin que ser usada al principio de todos
los programas del Boe-Bot.
Hasta este Captulo, la Terminal de Depuracin ha sido usada para desplegar mensajes
enviados a la computadora por el BASIC Stamp. Estos mensajes fueron desplegados en la
ventana de recepcin. La Terminal de Depuracin tambin tiene una ventana de
transmisin que puede usar para enviar valores al BASIC Stamp. El BASIC Stamp puede
capturar estos valores ejecutando el comando DEBUGIN, el cual recibe un valor enviado
por la ventana de transmisin de la terminal de depuracin y lo guarda en una variable.
Entonces el valor puede ser usado por el programa PBASIC. Esta tcnica fue usada para
establecer el ancho de pulso para controlar y probar la direccin y velocidad del servo.
Tambin se us para colectar datos para graficar la curva de transferencia de un servo de
rotacin contina Parallax.
Ensamble y Pruebe Su Boe-Bot pgina 99
Preguntas
1. cuales son algunos de los sntomas del decaimiento en el Boe-Bot?
2. Como puede usarse un piezoparlante para detectar decaimiento?
3. Que es un reset?
4. Que es una rutina de inicializacin?
5. Cuales son tres (o ms) posibles errores que pueden ocurrir cuando se conectan
y re-conectan los servos?
6. Qu comando tiene que cambiar en RightServoTest.bs2 para probar la rueda
izquierda en vez de la rueda derecha?
Ejercicios
1. Escriba un comando FREQOUT eran un tono que suene diferente del tono de
deteccin de Reset para indicar el fin de un programa.
2. Escriba un comando FREQOUT que haga un tono (diferente al de inicio o fin) que
indique que un paso intermedio en un programa ha sido completado. Intente un
valor con una duracin de 100 ms a una frecuencia de 4 kHz.
Proyectos
1. Modifique RightServoTest.bs2 para que haga un tono que indique que la prueba
est completa.
2. Modifique TestServoSpeed.bs2 para que pueda usar DEBUGIN para introducir el
ancho de pulso para el servo izquierdo y derecho as como un nmero de pulsos
a entregar en un ciclo FORNEXT. Use este programa para controlar el
movimiento de su Boe-Bots a travs de la ventana de transmisin de la terminal
de depuracin.
Page 100 Robtica con el Boe-Bot
Soluciones
Q1. los sntomas incluyen comportamiento errtico confundir en direcciones
inesperadas o hacer una danza confusa.
Q2. Un comando FREQOUT al principio de todos los programas Boe-Bot causa que el
piezoparlante ejecute un tono. Este tono ocurrir entonces cada vez que un Reset
accidental ocurra debido a condiciones de decaimiento.
Q3. Un reset es cuando la energa es interrumpida y el programa BASIC Stamp
empieza a correr nuevamente desde el principio del programa.
Q4. Una rutina de inicializacin consiste de lneas de cdigo que son usadas al
principio del programa. Estas lneas de cdigo se ejecutan cada vez que
programa inicia desde el principio.
Q5. 1) Las lneas entre P12 y P13 son intercambiadas. 2) uno o ambos servos estn
conectados al revs, y entonces el cdigo de color blanco-rojo-negro es
incorrecto. 3) el switch de energa no est en posicin-2. 4) La batera de 9V o
las AA no estn instaladas. 5) el potencimetro de centrado del servo est fuera
de ajuste.
Q6. Los comandos PULSOUT deben ser cambiados para que digan PULSOUT 13 en
vez de PULSOUT 12.
E1. La clave es modificar el comando FREQOUT usado por el programa
StartResetIndicator.bs2, esto es, FREQOUT, 4, 2000, 3000. Por ejemplo:
FREQOUT, 4, 500, 3500 trabajara.
E2. FREQOUT 4, 100, 4000.
P1. La clave para resolver este programa es agregar la lnea del ejercicio 1 arriba del
comando END en el programa RightServoTest.bs2.
END
P2. Para resolver este problema, TestServoSpeed.bs2 debe ser expandido para recibir
3 datos: el ancho de pulso del servo izquierdo, ancho de pulso del servo derecho
y nmero de pulsos. Luego, un ciclo FORNEXT con 2 comandos PULSOUT deben
ser agregados para de hecho mover los servo motores. Ms an, todas las
variables deben ser declaradas al principio del programa. Un ejemplo de solucin
se muestra a continuacin. Nota: este proyecto se prueba mejor con las ruedas
del Boe-Bot levantadas.
DO
DEBUG "Enter left servo pulse width: " ' introduce valores en
DEBUGIN DEC ltPulseWidth ' la Terminal de Depuracion
LOOP
Page 102 Robtica con el Boe-Bot
Navegacin del Boe-Bot pgina 103
Este Captulo tambin presenta maneras de ajustar y calibrar la navegacin del Boe-Bot.
Se incluyen tcnicas para enderezar el manejo hacia el frente del Boe-Bots, dar vueltas
mas precisas y calcular distancias.
Actividad Resumen
1 Programa el Boe-Bot para ejecutar maniobras bsicas: adelante, atrs, gira a
la izquierda, gira a la derecha giros sobre un eje.
2 Afinar las maniobras de la Actividad #1 para que sean mas precisas.
3 Calcular matemticamente el nmero de pulsos a entregar para hacer que el
Boe-Bot viaje una distancia predeterminada.
4 En vez de programar al Boe-Bot para hacer paros y arranques abruptos,
escribir programas que hagan que el Boe-Bot acelere gradualmente y
desacelere despus una maniobra.
5 Escribir subrutinas para ejecutar maniobras bsicas y que cada subrutina
pueda ser usada una y otra vez en un programa.
6 Registrar maniobras complejas en el mdulo de memoria sin utilizar del
BASIC Stamp y escribir programas que vuelvan a ejecutar estas maniobras.
Vuelta izquierda
Figura 4-1
Backward Your Boe-Bot y
Al frente
Driving Directions
Vuelta derecha
Figura 4-2
rotacin de
las ruedas
A la izquierda A la derecha para
movimiento
al frente
Al frente Al frente
Recuerde del Captulo 2 que el argumento Duration del comando PULSOUT controla la
velocidad y direccin de los giros del servo. Los argumentos StartValue y EndValue de un
ciclo FORNEXT controlan el nmero de pulsos que son entregados. Puesto que cada pulso
Navegacin del Boe-Bot pgina 105
NEXT
END
Debiera reconocer este comando; genera un tono para indicar el inicio del programa. Ser
usado en todos los programas que corran los servos.
FREQOUT 4, 2000, 3000 ' seal de programa en inicio/reset.
Page 106 Robtica con el Boe-Bot
Este ciclo FORNEXT enva 122 juegos de pulsos a los servos, uno para cada uno de P13
y P12, pausa por 20 ms despus de cada juego y luego regresa al inicio del ciclo.
FOR counter = 1 TO 122
PULSOUT 13, 850
PULSOUT 12, 650
PAUSE 20
NEXT
PULSOUT 13, 850 causa que el servo izquierdo gire a la izquierda mientras que PULSOUT
12, 650 causa que el servo derecho gira a la derecha. Por lo tanto, ambas ruedas estarn
girando hacia el frente del Boe-Bot, causando que se mueva hacia el frente. Le toma
cerca del 3 segundos al ciclo FORNEXT ejecutarse 122 veces, asi es que el Boe-Bot
avanza por cerca de 3 segundos.
Los argumentos PULSOUT Duration de 650 y 850 causaron que los servos girasen a cerca
de su velocidad maxima. Al modificar cada argumento PULSOUT Duration a un valor
cercano al valor de paro de 750, puede reducir la velocidad de su Boe-Bot.
Estos dos comandos harn que su Boe-Bot gire en una vuelta izquierda (giro izquierdo al
verlo desde arriba):
PULSOUT 13, 650
PULSOUT 12, 650
Estos dos comandos harn que su Boe-Bot gire en una vuelta derecha (giro derecho al
verlo desde arriba):
PULSOUT 13, 850
PULSOUT 12, 850
Puede combinar todos estos comandos en un solo programa que haga que el Boe-Bot se
mueva al frente, gire izquierda, gire derecha y luego vaya en reversa.
TIP Para introducir este programa rpidamente, use las herramientas del men Edit del
editor del BASIC Stamp (Copy y Paste) para hacer cuatro copias del ciclo FORNEXT.
Luego, ajuste slo los valores de PULSOUT Duration y los EndValues de los ciclos
FORNEXT.
NEXT
PAUSE 200
NEXT
PAUSE 200
NEXT
PAUSE 200
NEXT
END
Si quiere fin de al frente y a la derecha, simplemente detenga la rueda derecha y haga que
la rueda izquierda gire en sentido izquierdo (al frente).
PULSOUT 13, 850
PULSOUT 12, 750
Estos son los commandos PULSOUT para pivotear hacia atrs y a la derecha.
PULSOUT 13, 650
PULSOUT 12, 750
Finalmente, estos son los commandos PULSOUT para pivotear hacia atrs y a la izquierda.
PULSOUT 13, 750
PULSOUT 12, 850
PULSOUT 13, 850 ' Servo izquierdo a velocidad plena, giro a la izq
PULSOUT 12, 650 ' Servo derecho a velocidad plena, giro a la der.
PAUSE 20
NEXT
END
Su Turno Ajustando la Velocidad del Servo para alinear el rumbo del Boe-Bot
Recuerde que la velocidad del servo es determinado por el argumento Duration del
comando PULSOUT. Entre ms cercano es Duration a 750 ms lento ser el servo. Esto
Navegacin del Boe-Bot pgina 111
significa que debe cambiar el 650 en el comando PULSOUT 12,650 a algo ms cercano a
750. Si el Boe-Bot est ligramente fuera de curso, quiz PULSOUT 12,663 resulte. Si los
servos estn severamente dispares, quiz necesite PULSOUT 12,690.
Quiz le tome varios intentos para obtener el valor correcto. Digamos que su primer
intent es PULSOUT 12,663, pero resulta no ser suficiente porque el Boe-Bot an gira
ligeramente a la izquierda. Entonces intenta PULSOUT 12,670. Quiz esto sobrecorrija y
resulte que PULSOUT 12,665 es exacto. Esto se llama proceso iterativo y se refiere al
proceso de intentos repetidos y ajuste sucesivo para conseguir el valor correcto.
Quiz encuentre que es una situacin enteramente diferente cuando programa su Boe-Bot
para avanzar en reversa.
NEXT
Digamos que l Boe-Bot gira un poco ms que 90 (1/4 de un crculo completo). Intente
FOR counter = 1 TO 23, o quiz FOR counter = 1 TO 22. Si no gira lo suficiente,
incremente el tiempo de operacin de la rotacin incrementando el argumento EndValue
del ciclo FORNEXT al valor necesario para completar el cuarto de vuelta.
Su Turno giros de 90
Modifique ForwardLeftRightBackward.bs2 para que haga giros precisos de 90.
Actualice ForwardLeftRightBackward.bs2 con los valores de PULSOUT que haya
determinado para la lnea recta y viaje en reversa.
Actualice la etiqueta en cada servo con una nota acerca del valor adecuado
EndValue para una vuelta de 90.
Y se recuerde preguntando a sus padres la siguiente pregunta, una y otra vez, mientras
que el camino a un destino de vacaciones o la casa de algn familiar:
Ya llegamos?
Quiz cuando creci un poco y aprendi dividir en la escuela, empez a observar los
letreros en el camino para ver qu tan lejos estaba de la ciudad destino. Luego, choc el
velocmetro en su cargo al dividir la velocidad entre la distancia, tuvo una buena
estimacin del tiempo que todava les tomara llegar. Quiz no haba pensado en estos
trminos exactos, pero he aqu la ecuacin estaba usando:
distance
time
speed
Puede hacer el mismo ejercicio con el Boe-Bot, excepto que tendr el control de qu tan
lejos esta el destino. He aqu la ecuacin que usar:
Tendr que probar la velocidad del Boe-Bot. La forma ms fcil de hacer esto es poner el
Boe-Bot junto a una regla y hacer que viaje al frente por un segundo. Midiendo qu tan
lejos lleg su Boe-Bot, sabr la velocidad de su Boe-Bot. Si su regla indica pulgadas, su
respuesta ser en pulgadas por segundo (in/s), si tienes centmetros su respuesta ser en
centmetros por segundo (cm/s).
Page 114 Robtica con el Boe-Bot
6-9VDC 15 14 Vdd 1 3 12
9 Vdc
Red
Battery
Black
X4 X5
Pwr
Vdd Vin Vss
Vss Vss X3
STAM P0 P1
in PS
CLA
SS P2 P3 P1 5
P4 P5 P1 4
P6 P7 P1 3
TM P1 2
P8 P9
1 P11 P11
P1 0
Sout Vin P1 2 P1 3 P1 0
Sin Vss P1 4 P1 5 P9
ATN Rst Vd d Vin P8
Vss Vdd X1 P7
P0 P15 P6
P1 P14 P5
U1
P2 P13 P4
P3 P12 P3
P4 P11 Reset P2
P5 P10 P1
P6 P9 P0
P7 P8 X2
0 1 2 Board of Education
www.stampsinclass.com Rev C 2000-2003
Measured Distance
inch
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
cm
FOR counter = 1 TO 41
END
Navegacin del Boe-Bot pgina 115
Tambin puede ver la distancia que acaba de registrar como la velocidad de su Boe-Bot,
en unidades por segundo. Digamos que su Boe-Bot viaj 9 in (23 cm). Puesto que el
tomo un segundo a su Boe-Bot para viajar esa distancia, significa que su Boe-Bot viaja
alrededor de 9 in/s (23 cm/s). Ahora puede calcular cuntos segundos le toma a su Boe-
Bot viajar una distancia en particular.
20 in 51 cm
time time
9 in/s 23 cm/s
1s 1s
20 in 51 cm
9 in 23 cm
2.22 s 2.22 s
En el Captulo 2, Actividad #6, aprendimos que toma 24.6 ms (0.024 s) cada vez que los
dos comandos PULSOUT y un comando PAUSE son ejecutados en un ciclo FORNEXT. El
recproco de este valor es el nmero de pulsos por segundo que el ciclo trasmite para cada
servo. Un recproco es cuando intercambia el numerador y el denominador de una
divisin. Otra forma de obtener un recproco es dividir el nmero uno entre un nmero o
una fraccin. En otras palabras, 1 0.024 s/pulso = 40.65 pulsos/s.
Puesto que conoce la cantidad de tiempo que quiere que su Boe-Bot avance (2.22 s) y el
nmero de pulsos que el BASIC Stamp enva a los servos cada segundo (40.65 pulsos/s),
puede usar estos valores para calcular cuntos pulsos enviar a Los servos. Este es el
nmero que tendr que usar para el argumento EndValue del ciclo FORNEXT.
Page 116 Robtica con el Boe-Bot
40 .65 pulses
pulses 2 .22 s
s
90.24 ... pulses
90 pulses
El clculo en este ejemplo tom dos pasos. Primero, descifrar que tanto tiempo los servos
tienen que correr para hacer que el Boe-Bot recorrauna cierta distancia, luego descifrar
cuntos pulsos le toma a los servos correr por ese tiempo. Al saber que se tiene que
multiplicar por 40.65 para pasar de tiempo a pulsos, se puede reducir esto a un solo paso.
Esta tcnica tiene fuentes de error. La Actividad que acaba de completar no toma en
cuenta que al Boe-Bot le toma un cierto nmero de pulsos llegar a velocidad plena. Ni tom
en cuenta la distancia que este pudo recorrer antes de llegar al paro total. Las velocidades
del servo tambin sern ms lentas a medida que las bateras pierdan su carga.
Puede incrementar la precisin de las distancias de su Boe-Bot con dispositivos
llamados encoders, los cuales contabilizan los hoyos en las ruedas del Boe-Bot a medida
que pasan. Kits de encoders y otros accesorios especficos del Boe-Bot estn disponibles
en www.parallax.com/go/Boe-Bot.
1, 2, 3, Figura 4-4
PULSOUT 13, 750 + pulseCount
PULSOUT 12, 750 - pulseCount 100 Ejemplo de rampeo
PAUSE 20
NEXT
Page 118 Robtica con el Boe-Bot
Retomando del Captulo 2, Actividad #5, los ciclos FORNEXT tambin pueden contar
hacia abajo, de un numero mayor a uno menor. Puede usar esto para rampear la velocidad
hacia abajo nuevamente con FOR pulseCount = 100 TO 1. He aqu un programa que
usa ciclos FORNEXT para rampear hacia arriba hasta velocidad plena y luego hacia abajo.
FOR pulseCount = 1 TO 100 ' Ciclo rampea arriba por 100 pulsos.
PULSOUT 13, 750 + pulseCount ' Pulso = 1.5 ms + pulseCount.
PULSOUT 12, 750 - pulseCount ' Pulso = 1.5 ms pulseCount.
PAUSE 20 ' Pausa por 20 ms.
NEXT
FOR pulseCount = 100 TO 1 ' Ciclo rampea abajo por 100 pulsos.
PULSOUT 13, 750 + pulseCount ' Pulso = 1.5 ms + pulseCount.
PULSOUT 12, 750 - pulseCount ' Pulso = 1.5 ms - pulseCount.
PAUSE 20 ' Pausa por 20 ms.
NEXT
Su Turno
Tambin puede crear rutinas para combiner rampeos arriba o abajo con las otras
maniobras. He aqu un ejemplo de como rampear arriba hasta velocidad plena yendo en
reversa en vez de hacia al frente. La nica diferencia entre esta rutina y la rutina de
rampeo hacia al frente es que el valor de pulseCount es restado de 750 en el comando
PULSOUT 13, donde antes fue sumado. Igualmente, pulseCount es sumado al valor de
750 en el commando PULSOUT 12, donde antes era restado.
' Rampeo hacia arriba hasta velocidad plena en reversa
NEXT
Tambin puede hacer una rutina para reampear en una vuelta agregando el valor de
pulseCount a 750 en ambos comandos PULSOUT. Restando pulseCount a 750 en ambos
comandos PULSOUT, puede rampear en una vuelta hacia otra direccin. He aqu un
ejemplo de un cuarto de vuelta con rampeo. Los servos no tienen oportunidad de llegar a
velocidad plena antes de que tengan que reducir su velocidad nuevamente.
FOR pulseCount = 0 TO 30
NEXT
Page 120 Robtica con el Boe-Bot
FOR pulseCount = 30 TO 0
NEXT
Dentro de la Subrutina
Hay dos partes de una subrutina PBASIC. Una parte es la llamada de la subrutina. Es el
comando en el programa que le indica brincar a la parte reutilizable del cdigo, luego
regresar cuando termine. La otra parte es la propia subrutina. Empieza con una etiqueta
que sirve como su nombre y termina con un comando RETURN. Los comandos entre la
etiqueta y el comando RETURN delimitan el bloque de cdigo que hace el trabajo que
quiere que haga la subrutina.
La Figura 4-5 muestra parte de un programa PBASIC que contiene una llamada de
subrutina y una subrutina. La llamada de subrutina es el comando GOSUB
My_Subroutine. La propia subrutina es todo desde la etiqueta My_Subroutine: hasta el
commando RETURN. He aqu como trabaja. Cuando el programa llega al commando
GOSUB My_Subroutine, busca la etiqueta My_Subroutine: . Como lo muestra la flecha
(1), el programa brinca a la etiqueta My_Subroutine: y empieza a ejecutar comandos. El
programa continua hacia abajo lnea por lnea desde la etiqueta, as es que ver el
Navegacin del Boe-Bot pgina 121
DO
DEBUG "Before subroutine",CR
PAUSE 1000
GOSUB My_Subroutine
DEBUG "After subroutine", CR 1
PAUSE 1000 Figura 4-5
LOOP Elementos Bsicos
de una subrutina
My_Subroutine:
DEBUG "Command en subroutine", CR
2
PAUSE 1000
RETURN
My_Subroutine:
DEBUG "Command in subroutine", CR
PAUSE 1000
RETURN
He aqu un programa ejemplo que tiene dos subrutinas. Una subrutina hace un tono
agudo mientras que el otro hace un tono grave. Los comandos entre DO y LOOP llaman
cada subrutina en turno. Intente este programa y note el efecto.
DO
GOSUB High_Pitch
DEBUG "Back en main", CR
PAUSE 1000
GOSUB Low_Pitch
DEBUG "Back en main again", CR
PAUSE 1000
DEBUG "Repeat...",CR,CR
LOOP
High_Pitch:
DEBUG "High pitch", CR
FREQOUT 4, 2000, 3500
RETURN
Low_Pitch:
DEBUG "Low pitch", CR
FREQOUT 4, 2000, 2000
RETURN
Intentemos poner las rutinas de navegacin hacia el frente, izquierda, derecha y atrs
dentro de subrutinas. He aqu un ejemplo:
GOSUB Forward
GOSUB Left
GOSUB Right
GOSUB Backward
END
Forward:
FOR counter = 1 TO 64
PULSOUT 13, 850
PULSOUT 12, 650
PAUSE 20
NEXT
PAUSE 200
RETURN
Left:
FOR counter = 1 TO 24
PULSOUT 13, 650
PULSOUT 12, 650
PAUSE 20
NEXT
PAUSE 200
RETURN
Right:
FOR counter = 1 TO 24
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
PAUSE 200
RETURN
Backward:
FOR counter = 1 TO 64
PULSOUT 13, 650
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
Page 124 Robtica con el Boe-Bot
Debera reconocer el patrn de movimientos que hace su Boe-Bot; ese mismo hecho por
ForwardLeftRightBackward.bs2. Claramente hay muchas formas diferentes de
estructurar un programa que resultarn en movimientos semejantes. Una tercera forma se
da en el ejemplo a continuacin.
Seguramente ha notado que, hasta este punto, cada maniobra del Boe-Bot ha sido lograda
con bloques de cdigos semejantes. Compare estos dos segmentos:
' Frente velocidad plena ' Rampeo abajo, de vel. plena en reversa
NEXT NEXT
Lo que hace que estos dos bloques de cdigo ejecuten maniobras diferentes son cambios
en los argumentos FOR StartValue y EndValue, y los argumentos PULSOUT Duration. Estos
argumentos pueden ser variables, y estas variables pueden ser cambiadas repetidamente
durante la ejecucin del programa para generar maniobras diferentes. En vez de usar
subrutinas separadas con argumentos especficos PULSOUT Duration para cada maniobra,
usa la misma subrutina una y otra vez. La clave para hacer maniobras diferentes es
establecer las variables en valores correctos para la maniobra que quiere ejecutar antes de
llamar a la subrutina.
' Forward
pulseLeft = 850: pulseRight = 650: pulseCount = 64: GOSUB Navigate
' Backward
pulseLeft = 650: pulseRight = 850: pulseCount = 64: GOSUB Navigate
END
Navigate:
FOR counter = 1 TO pulseCount
PULSOUT 13, pulseLeft
PULSOUT 12, pulseRight
PAUSE 20
NEXT
PAUSE 200
RETURN
Su Turno
Aqu est su concurso de "reconocimiento de punto muerto" mencionado antes.
Si los datos que guarde en EEPROM chocan con su programa, el programa PBASIC
no se ejecutar adecuadamente.
Puede ver el contenido de la EEPROM del BASIC Stamp en el Editor BASIC Stamp
haciendo click en Run y seleccionando Memory Map. La Figura 4-6 muestra el mapa de
memoria de MovementsWithSubrutinas.bs2. Note el mapa EEPROM condensado en el
lado izquierdo de la figura. Esta area asiurada en el recuadro pequeo en la parte inferior
muestra la cantidad de EEPROM que ocupa MovementsWithSubrutinas.bs2.
Las imagenes del mapa de memoria mostradas en esta Actividad fueron tomadas del Editor
BASIC Stamp v2.1. Si est usando una version diferente del Editor BASIC Stamp, su mapa
de memoria contendr la misma informacin, pero estar formateada diferente.
Navegacin del Boe-Bot pgina 127
Figura 4-6
Mapa de Memoria
del Editor BASIC
Stamp
Y ya que estamos aqu, note tambin que la variable counter que declaramos word esta
visible en el Registro 0 del Map RAM.
Este programa pudo parecerle largo al teclearlo, pero slo tom 136 de los 2048 bytes
disponibles de la memoria de programa. De hecho hay bastante espacio para una lista
bastante larga de instrucciones. Puesto que un carcter ocupa 1 byte en la memoria, hay
espacio para 1912 Instrucciones de direccin de un caracter.
Navegacin EEPROM
Hasta este punto hemos intentado 3 estrategias de programacin diferentes para hacer que
su Boe-Bot marche al frente, gire a la izquierda, a la derecha y marche en reversa
nuevamente. Cada tcnica tiene sus mritos, pero todas seran torpes si quisiera que su
Boe-Bot ejecutara un juego de maniobras ms largo y complejo. Los siguientes
programas ejemplo usarn los bloques de cdigo ahora familiares en subrutinas para cada
maniobra bsica. A cada maniobra se le da un cdigo de una letra como referencia. Listas
largas de estas letras cdigo puede ser guardadas en la EEPROM y luego ledas y de
codificadas durante la ejecucin del programa esto evita el tedio de repetir listas largas de
subrutinas, o tener que cambiar las variables antes de ir a cada comando GOSUB.
A cada una de las maniobras bsicas se le da un cdigo de letra nico que corresponde a
su subrutina: F para Forward (al frente), B para Backward (atrs), L para
Left_Turn (vuelta izquierda), y R for Right_Turn (vuelta derecha).
Movimientos complejos pueden ser rpidamente coreografiados haciendo una cadena de
estas letras cdigo. La ltima letra en esta cadena es una Q, que significa abandona
(quit) cuando los movimientos estn completos. La lista es guardada en la EEPROM
durante la descarga del programa con la directiva DATA, que se ve como sigue:
DATA "FLFFRBLBBQ"
La variable address es la localidad de cada byte en la EEPROM que est reteniendo una
letra cdigo. La variable instruction retendr el valor real de cada byte, nuestra letra
cdigo. Note que con cada pasada por el ciclo el valor de la variable address es
incrementado en uno. Esto permitir a cada letra ser leda de bytes consecutivos en la
EEPROM, empezando la direccin 0.
El comando DOLOOP tiene condiciones opcionales que son tiles para diferentes
circunstancias. DO UNTIL (condition)...LOOP permite que el ciclo se repita hasta que
cierta condicin ocurra. DO WHILE (condition)...LOOP permite que el ciclo se repita
slo mientras que cierta condicin exista. Nuestro programa ejemplo usar DOLOOP
UNTIL (condition). En este caso, esto causa que DOLOOP se mantenga repitindose
hasta que el caracter Q sea ledo de la EEPROM.
LOOP
Su Boe-Bot viaja en un rectngulo, yendo al frente los primeros 2 lados y hacia atrs en
los otros 2? Si parece ms un trapezoide, quiz deba ajustar los argumentos EndValue del
ciclo FOR...NEXT en las subrutinas de vueltas para hacer vueltas precisas de 90 grados.
Navegacin del Boe-Bot pgina 131
Su Turno
Con EepromNavigation.bs2 activo en el Editor BASIC Stamp, haga click en Run
y seleccione Memory Map.
Figura 4-7
Mapa de Memoria
con Instrucciones
Guardadas Visibles
en el Mapa
EEPROM
Figura 4-8
Seccin del Mapa
EEPROM detallado
luego de marcar el
recuado Display
ASCII Box
Page 132 Robtica con el Boe-Bot
Puede modificar la cadena de datos existente por un nuevo juego de direcciones. Tambin
puede agregar instrucciones DATA adicionales. Como los datos son guardados
secuencialmente el primer caracter en la segunda cadena de datos se guardar
inmediatamente despus del ltimo caracter en la primera cadena de datos.
Por defecto, la directiva DATA guarda bytes de informacin en la EEPROM. Para guardar
elementos de datos de tamao word, puede agregar el modificador Word a la directiva
DATA, antes de cada dato en su cadena. Cada elemento de tamao word usar 2 bytes de
almacenaje EEPROM, asi que los datos debern ser accesados en posiciones o
direcciones salteadas. Cuando use ms de una directiva DATA, es ms conveniente
asignar una etiqueta a cada uno. De esta forma sus comandos READ podrn referirse a la
etiqueta para recuperar elementos de dstos sin tener que preocuparse en qu direccin
EEPROM empieza cada cadena de elementos de datos. Eche un vistazo a este extracto de
cdigo:
Navegacin del Boe-Bot pgina 133
' addressOffset 0 2 4 6 8
Pulses_Count DATA Word 64, Word 24, Word 24, Word 64, Word 0
Pulses_Left DATA Word 850, Word 650, Word 850, Word 650
Pulses_Right DATA Word 650, Word 650, Word 850, Word 850
Cada una de las 3 lineas DATA comienza con su propia etiqueta. El modificador Word va
antes de cada elemento de datos y los elementos estn separados por comas. Estas
cadenas de datos sern guardadas en la EEPROM una despus de otra. No tendremos que
hacer cuentas para saber el nmero de direccin de un elemento de datos ya que lo harn
las etiquetas y la variable addressOffset. El comando READ usa cada etiqueta para
determiner la direccin EEPROM en donde inicia esa cadena y luego suma el valor de la
addressOffset para saber cuntos nmeros de direcciones hay que recorrerse para
encontrar el elemento de datos DataItem correcto. El DataItem encontrado en la direccin
resultante Address ser guardado en el argumento Variable del comando READ. Note que
Word tambin va antes de la variable que guarda el valor obtenido en la EEPROM.
DO
READ Pulses_Count + addressOffset, Word pulseCount
READ Pulses_Left + addressOffset, Word pulseLeft
READ Pulses_Right + addressOffset, Word pulseRight
addressOffset = addressOffset + 2
Vea las otras columnas del extracto de cdigo de la pgina 133 y anticipe cmo
se ver el ciclo FORNEXT en su segunda, tercera y cuarta pasadas.
Vea la declaracin LOOP UNTIL (pulseCount = 0) en el siguiente programa.
El operador <> significa no es igual a. Qu pasar en la quinta pasada por el
ciclo?
Introduzca, salve y corra EepromNavigationWithWordValues.bs2.
' addressOffset 0 2 4 6 8
Pulses_Count DATA Word 64, Word 24, Word 24, Word 64, Word 0
Pulses_Left DATA Word 850, Word 650, Word 850, Word 650
Pulses_Right DATA Word 650, Word 650, Word 850, Word 850
DO
addressOffset = addressOffset + 2
Haga una table con 3 renglones, uno para cada directiva DATA, y una columna
para cada maniobra que quiera que haga su Boe-Bot, mas una para el elemento
Word 0 en el rengln Pulses_Count.
Use la tabla para planear la coreografa de su Boe-Bot, completando los
argumentos EndValue y PULSOUT Duration del ciclo FOR...NEXT que necesitar
para cada bloque de cdigo de cada manibra.
Modifique su programa con recin trazadas directivas DATA.
Introduzca, salve y corra su programa personalizado. Hizo su Boe-Bot lo que
quera que hiciera? Insista hasta que lo haga.
Page 136 Robtica con el Boe-Bot
RESUMEN
Este Captulo present las maniobras bsicas del Boe-Bot: al frente, atrs, girando sobre su
eje para dar vuelta a la derecha o izquierda y pivotear. El tipo de maniobra es
determinado por los argumentos Duration del comando PULSOUT. La duracin de la
maniobra es determinada por los argumentos StartValue y EndValue del ciclo FORNEXT.
El Captulo 2 incluy un ajuste de hardware, fsicamente centrando los servos del Boe-
Bot con un desarmador. Este Captulo se enfoc en ajustes finos hechos al manipular el
software. Especficamente, una diferencia en la velocidad de rotacin entre ambos servos
fue compensada cambiando el argumento Duration del comando PULSOUT en el servo ms
velz. Esto cambia la ruta del Boe-Bot de una curva a una linea recta si los servos no
estn perfectamente empatados. Para refinar las vueltas a un ngulo deseado pueden
ajustarse los argumentos StartValue y EndValue en un ciclo FORNEXT.
La EEPROM del BASIC Stamp guarda al programa que corre, pero puede tomar ventaja
cualquier porcin no utilizar del programa para guardar valores. Esta es una excelente
Navegacin del Boe-Bot pgina 137
Preguntas
1. En qu direccin debe girar la rueda izquierda para hacer que el Boe-Bot vaya
al frente? En qu direccin debe girar la rueda derecha?
2. Cuando el Boe-Bot pivotea a la izquierda, qu hacen las ruedas izquierda y
derecha? Qu commandos PBASIC necesita para hacer que el Boe-Bot pivotee
a la izquierda?
3. Si su Boe-Bot gira ligeramente a la izquierda cuando esta corriendo un programa
para hacer que vaya de frente, cmo corrige esto? Qu comando necesita ser
ajustado y qu clase de ajuste hara?
4. Si su Boe-Bot viaja a 11 in/s, cuntos pulsos necesitar para hacer que viaje 36
pulgadas?
5. Cul es la relacin entre el argumento Counter de un ciclo FORNEXT y el
argumento Duration de un commando PULSOUT que hace posible el rampeo?
6. Qu directiva puede usar para pre-guardar valores en la EEPROM del BASIC
Stamp antes de correr un programa?
7. Qu comando puede usar para recuperar un valor guardado en la EEPROM y
copiarlo a una variable?
8. Qu bloque de cdigo puede usar para seleccionar una variable en particular y
evaluarla caso por caso y ejecutar un bloque diferente para cada caso?
9. Cules son las diferentes condiciones que pueden ser usados con DOLOOP?
Ejercicios
1. Escriba una rutina que haga retroceder al Boe-Bot por 350 pulsos.
2. Digamos que prob sus servos y descubri que les toma 48 pulsos hacer una
vuelta de 180 con vuelta a la derecha. Con esta informacin, escriba unas
rutinas que hagan que el Boe-Bot ejecute vueltas de 30, 45, y 60 grados.
Page 138 Robtica con el Boe-Bot
3. Escriba una rutina que haga que el Boe-Bot vaya de frente, luego rampee para
iniciar y terminar una vuelta con pivoteo y luego contine en lnea recta.
Proyectos
1. Es hora de llenar la columna 3 de la Tabla 2-1 en la pgina 63. Para hacer esto,
modifique los argumentos PULSOUT Duration en el programa
BoeBotForwardThreeSeconds.bs2 usando cada par de valores de la columna 1.
Registre el comportamiento resultante de su Boe-Bot para cada par for each pair
en la columna 3. Una vez completada, esta tabla servir como una gua de
referencia cuando disee sus propias maniobras personalizadas del Boe-Bot.
2. La Figura 4-9 muestra 2 cursos simples. Escriba un programa que haga que su
Boe-Bot navegue sobre cada figura. Asuma que las distancias en lnea recta
(incluyendo el dimetro del crculo) son ya sea 1 yd o 1 m.
Figura 4-9
Cursos Simple
Soluciones
Q1. La rueda izquierda en sentido izquierdo, la derecha en sentido derecho.
Q2. La rueda derecha gira a la derecha (al frente) y la izquierda no se mueve.
PULSOUT 13, 750
PULSOUT 12, 650
Q3. Puede desacelerar la rueda derecha para corregir una desviacin a la izquierda.
El comando PULSOUT para la rueda derecha necesita ser ajustado.
PULSOUT 12, 650
Q4. Dados los siguientes datos, debera tomar 133 pulsos para avanzar 36 pulgadas:
Velocidad del Boe-Bot = 11 in/s
distancia Boe-Bot = 36 in/s
Navegacin del Boe-Bot pgina 139
FOR counter = 30 TO 0
PULSOUT 13, 750 + counter
PULSOUT 12, 750
PAUSE 20
NEXT
P1.
P13 P12 Descripcin Comportamiento
850 650 Velocidad plena: P13 CCW, P12 CW Al frente
650 850 Velocidad plena: P13 CW, P12 CCW Atrs
850 850 Velocidad plena: P13 CCW, P12 CCW Rotacin a la derecha
650 650 Velocidad plena: P13 CW, P12 CW Rotacin a la izq.
750 850 P13 Detenido, P12 CCW Velocidad plena Pivotea atras izq
650 750 P13 CW Velocidad plena, P12 Detenido Pivotea atras der
750 750 P13 Detenido, P12 Detenido Detenido
760 740 P13 CCW Lento, P12 CW Lento Al frente lento
770 730 P13 CCW Med, P12 CW Med Al frente media vel
850 700 P13 CCW Velocidad plena, P12 CW Medio Vuelta a la der.
800 650 P13 CCW Medio, P12 CW Velocidad plena Vuelta a la izq.
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Program running!"
Para hacer el tringulo, primero calcule el nmero de puslso requeridos para una
lnea recta de 1 metro o 1 yarda, como en la pregunta 4. Luego afine sus
distancias para empatar su Boe-Bot y la superficie particular. Para el patrn de
tringulo, el Boe-Bot debe viajar 1 metro/yarda al frente y luego hacer un giro de
120 grados. Esto debe ser repetido 3 veces para los 3 lados del tringulo. Quiz
tenga que ajustar EndValue de pulseCount en la subrutina Right_Rotate120
para obtener un giro preciso de 120 grados.
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Program running!"
Main:
FOR counter = 1 TO 3 ' repite 3 veces para el triangulo
GOSUB Forward
GOSUB Right_Rotate120
NEXT
END
Forward:
FOR pulseCount = 1 TO 163 ' Al frente 1 yarda
PULSOUT 13, 850
Page 142 Robtica con el Boe-Bot
Right_Rotate120:
FOR pulseCount = 1 TO 21 ' Gira a la derecha 120 grados
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
Navegacin tctil con Filamentos pgina 143
NAVEGACIN TCTIL
Los filamentos o bigotes (whiskers) son as llamados porque es lo que estos
interruptores de choque parecen, aunque algunos argumentan que parecen ms antenas.
Estos filamentos estn mostrados en el Boe-Bot en la Figura 5-1. Los filamentos le dan al
Boe-Bot la habilidad de sensar el mundo a su alrededor palpando, muy parecido a las
antenas de una hormiga o los bigotes de un gato. Las actividades en este Captulo usan
los filamentos en s mismos, pero pueden ser combinados con otros sensores de los que
aprendern en siguientes Captulos para incrementar la funcionalidad de su Boe-Bot.
Page 144 Robtica con el Boe-Bot
Figura 5-1
Boe-Bot con Filamentos
Lista de partes
(2) Alambres filamentos
(2) Tornillos Phillips 7/8
cabeza plana 4-40 Figura 5-2
(2) Espaciadores de Hardware
(2) Rondanas de Nylon #4 de los
(2) Conectores de 3 pines filamentos
(2) Resistencias de 220
(rojo-rojo-cafe)
(2) Resistencias de 10 k
(cafe-negro-naranja)
Filamento Filamento
bajo la sobre la
rondana rondana Figura 5-3
Montando los filaments
Board of Education / HomeWork Board
Page 146 Robtica con el Boe-Bot
El siguiente paso es agregar el circuito para filamentos mostrado en la Figura 5-4 a los
circuitos de piezoparlante y servo que construy y prob en el Captulo 2 y Captulo 3.
Vdd Vdd
10 k 10 k
P7
220 Figura 5-4
P5
Esquemtico para
220 filamentos
Right Left
Whisker Whisker
Vss Vss
Navegacin tctil con Filamentos pgina 147
Left
Whisker
To Servos
15 14 Vdd 13 12
Red
Black
X4 X5
Vdd Vin Vss
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
+
P1
P0
X2
Board of Education
Rev C 2000-2003
Right
Whisker
Left
Whisker
To Servos
(916) 624-8333
www.parallax.com Rev B
www.stampsinclass.com
HomeWork Board
Right
Whisker
Vdd Vdd
10 k 10 k
P7
220 Figura 5-7
P5 Un Segundo vistazo al
220 esquemtico para
Right Left filamentos.
Whisker Whisker
Vss Vss
El BASIC Stamp puede ser programado para detectar cuando se presiona un filamento.
Los pines de I/O conectados a cada circuito-interruptor monitorean el voltaje en la
Resistencia de 10 k. La Figura 5-8 ilustra esto. Cuando un determinado filament no es
presionado, el voltaje en el pin I/O conectado a ese filamento es 5 V. Cuando un filament
es presionado, la lnea de I/O es puesta a tierra (Vss), y entonces la lnea I/O v 0 V.
Todos los pines I/O toman como valor por defecto input cada vez que inicia un
programa PBASIC. Esto significa que los pines I/O conectados a los filamentos
funcionan como entradas automticamente. Como entrada, un pin I/O conectado a un
circuito de filamento causar que su registro de entrada guarde un 1 si el voltaje es 5 V
(filamento no presionado) o un 0 si el voltaje es 0 V (filamento presionado). La Terminal
de Depuracin puede usarse para desplegar estos valores.
Page 150 Robtica con el Boe-Bot
Figura 5-8
Detectando
Contactos
Elctricos
DO
DEBUG CRSRXY, 0, 3,
"P5 = ", BIN1 IN5,
" P7 = ", BIN1 IN7
PAUSE 50
LOOP
Qu es un Cursor? Qu es CRSRXY?
Segn eldiccionario Merriam-Webster, un cursor es: Un elemento mvil usado para marcar
una posicin como una pista visual en un display de video que indica posicin. Al mover
su ratn, el apuntador que mueve en su pantalla es un cursor. El de la Terminal de
Depuracin es algo diferente porque no parpadea ni hace algo para indicar su posicin.
Pero dondequiera que se encuentre este, es all donde se imprimir el siguiente caracter.
CRSRXY es un formateador que le permite arreglar la informacin que su programa manda a
la Terminal de Depuracin. El formateador CRSRXY 0, 3, en el comando:
DEBUG CRSRXY, 0, 3,
"P5 = ", BIN1 IN5,
" P7 = ", BIN1 IN7
...coloca el cursor en la columna 0, rengln 3 en la Terminal de Depuracin. Esto hace que
se despliegue debajo del encabezado Whisker States. Cada vez que pasa por el ciclo, los
nuevos valores se sobreescriben a los viejos porque el cursor regresa al mismo lugar.
Page 152 Robtica con el Boe-Bot
Lista de partes:
(2) Resistencias, 220 (rojo-rojo-cafe)
(2) LEDs, rojos
P10
220 Figura 5-9
P1 Esquemtico LED de
220 prueba de Filamentos
Figura 5-10 Diagrama de conexiones para Filamentos mas LEDs para el Board of Education
Left
Whisker
To Servos
15 14 Vdd 13 12
Esta
Red
pata La cara plana en
Black
es el el encapsulado
X4 X5 plstico indica el
nodo
Vdd Vin Vss ctodo.
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
+
P1
P0
X2
Board of Education
Rev C 2000-2003 Esta pata es
el nodo.
Right
Whisker
Page 154 Robtica con el Boe-Bot
Figura 5-11 Diagrama de conexiones para Filamentos mas LEDs para el HomeWork Board
Left
Whisker
To Servos
(916) 624-8333
www.parallax.com Rev B
www.stampsinclass.com
Conecte P15
P14
el P13
nodo P12
a la P11
P10
resis- P9
tencia deP8
220 . P7
P6
P5
La cara plana en
P4 el encapsulado
P3
+ plstico indica el
P2
P1 ctodo.
P0
X2
El nodo se
HomeWork Board conecta a la
resistencia
de 220 .
Right
Whisker
IF (IN5 = 0) THEN
HIGH 10
ELSE
LOW 10
ENDIF
Corra TestWhiskersWithLeds.bs2.
Prubelo presionando suavemente los filamentos. Los LEDs rojos deben
encender cuando cada filamento haga contacto con cada conector de 3 pines.
Para hacer esto, el Boe-Bot necesita ser programado para tomar decisiones. PBASIC
tiene un comando llamado declaracin IFTHEN que toma decisiones. La sintxis de la
declaracin IFTHEN es:
IF (condition) THEN{ELSEIF (condition)}{ELSE}ENDIF
Page 156 Robtica con el Boe-Bot
Los significan que puede colocar un bloque de cdigo (uno o ms comandos) entre
las palabras clave. El siguiente programa ejemplo toma decisiones basado en las entradas
de los filamentos y luego llama subrutinas para hacer que el Boe-Bot tome accin. Las
subrutinas son similares a las desarroll en el Captulo 4. H aqu cmo se usa IFTHEN.
IF (IN5 = 0) y (IN7 = 0) THEN
GOSUB Back_Up ' Ambos filamentos detectan obstaculo,
GOSUB Turn_Left ' Retrocede y vuelta U(2 izquierdas)
GOSUB Turn_Left
ELSEIF (IN5 = 0) THEN ' El filamento izquierdo hace contacto
GOSUB Back_Up ' Retrocede y gira a la derecha
GOSUB Turn_Right
ELSEIF (IN7 = 0) THEN ' El filamento derecho hace contacto
GOSUB Back_Up ' Retrocede y gira a la izquierda
GOSUB Turn_Left
ELSE ' Ambos filamentos en 1, no contactos
GOSUB Forward_Pulse ' Aplica un pulso al frente y
ENDIF ' checa otra vez
DO
IF (IN5 = 0) y (IN7 = 0) THEN ' Ambos filamentos detectan obstaculo
GOSUB Back_Up ' Retrocede y vuelta en U(2 izqs.)
GOSUB Turn_Left
GOSUB Turn_Left
ELSEIF (IN5 = 0) THEN ' El filamento izquierdo contacta
GOSUB Back_Up ' Retrocede y vuelta a la derecha
GOSUB Turn_Right
ELSEIF (IN7 = 0) THEN ' El filamento derecho contacta
GOSUB Back_Up ' Retrocede y vuelta a la izquierda
GOSUB Turn_Left
ELSE ' Ambos filamentos en 1, no contacto
GOSUB Forward_Pulse ' Aplica un pulso al frente
ENDIF ' y checa otra vez
LOOP
Turn_Right:
FOR pulseCount = 0 TO 20 ' Vuelta a la der, aprox 90-grados.
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
Puesto que cada pulso al frente a velocidad plena hace que el Boe-Bot avance
aproximadamente medio centmetro, es en verdad una buena idea enviar solo un pulso,
luego regresar y revisar los filamentos nuevamente. Puesto que la declaracin IFTHEN
esta dentro de un DOLOOP, cada vez que el programa regresa de un Forward_Pulse,
Navegacin tctil con Filamentos pgina 159
llega a LOOP, que enva el programa de regreso hasta DO. Qu pasa entonces? La
declaracin IFTHEN checa nuevamente los filamentos otra vez desde el inicio.
Su Turno
Los argumentos EndValue del ciclo FOR...NEXT en las rutinas Back_Right y Back_Left
pueden ser ajustados para mayor o menor giro y la rutina Back_Up puede tener su
EndValue ajustado para regresar menos en caso de navegacin en espacios ms pequeos.
Experimente con los argumentos EndValue del ciclo FOR...NEXT en las rutinas
de navegacin en RoamingWithWhiskers.bs2.
Tambin puede modicar sus declaraciones IFTHEN para hacer que los indicadores LED
de la Actividad previa indiquen la maniobra en la que se encuentra el Boe-Bot agregando
unos comandos HIGH y LOW para control los circuitos LED. He aqu un ejemplo.
IF (IN5 = 0) y (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
GOSUB Back_Up
GOSUB Turn_Left
ELSE
LOW 10
LOW 1
GOSUB Forward_Pulse
ENDIF
El siguiente programa tambin recae en el hecho de que puede anidar las declaraciones
IFTHEN. En otras palabras, el programa checa una condicin y si esa condicin se
cumple, checa otra condicin dentro de la primera. He aqu un ejemplo de pseudocdigo
de cmo puede ser esto usado.
IF condition1 THEN
Comandos for condition1
IF condition2 THEN
Comandos for both condition2 y condition1
ELSE
Comandos for condition1 but not condition2
ENDIF
ELSE
Comandos for not condition1
ENDIF
DO
LOOP
Turn_Right:
FOR pulseCount = 0 TO 20 ' Vuelta a la der, aprox 90-grados.
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
Se crean 3 variables extra para detectar una esquina. La variable nibble counter puede
guarder un valor entre 0 y 15. Puesto que nuestro valor objetivo para detector una
esquina es 4, el tamao de la variable es razonable. Recuerde que una variable bit puede
guarder un solo bit, sea 1 o 0. Las siguientes 2 variables (old7 y old5) son ambas
variables bit. Tambin son del tamao correcto para este trabajo puesto que se usan para
guardar valores anteriores de IN7 y IN5, que tambin son variables bit.
counter VAR Nib
old7 VAR Bit
old5 VAR Bit
Estas variables tienen que ser inicializadas (darles valores iniciales). Para facilidad de
lectura del programa, counter is puesto en 1, y cuando llega a 4 por el hecho de que el
Boe-Bot esta atorado en una esquina, se reestablece a 1. Las variables old7 y old5 tienen
que ser establecidad para que parezca como que uno de los 2 filamentos fue presionado
en un momento antes de que el programa iniciara. Esto tiene que ser hecho porque la
rutina para detector esquinas alternas compara un patrn alternante, ya sea (IN5 = 1 y IN7
= 0) o (IN5 = 0 y IN7 = 1). De manera semejante, old5 y old7 tienen que ser diferentes
entre s.
counter = 1
old7 = 0
old5 = 1
Esta declaracin ELSE esta conectada a la declaracin IF (old7 <> IN7) y (old5 <>
IN5) THEN. La declaracin ELSE cubre lo que pasa si la declaracin IF no es cierta. En
otras palabras, no debe ser un filamento alternado lo que fu presionado, asi es que se
reinicia counter porque el Boe-Bot no est atorado en una esquina.
ELSE
counter = 1
ENDIF
ENDIF
Su Turno
Una de las declaraciones IF...THEN en EscapingCorners.bs2 ve si counter ha llegado
a 4.
RESUMEN
En este Captulo, en vez de navegar a partir de una lista pre-programada, el Boe-Bot fue
programado para navegar basado en entradas de sensores. Las entradas de sensores
usadas en este Captulo fueron filamentos, que operaron como interruptores de contactos
normalmente abiertos. Al ser adecudamente alambrados, estos interruptores pueden
mostrar un voltaje (5 V) en el punto de contacto del interruptor cuando est abierto y un
voltaje diferente (0 V) cuando est cerrado. Los registros de entrada de los pines I/O del
BASIC Stamp guardan 1 si detectan Vdd (5 V) y 0 si detectan Vss (0 V).
El BASIC Stamp fue programado para probrar los sensors de filamento y desplegar los
resultados de la prueba usando 2 medios distintos, la Terminal de Depuracin y los
LEDs. Se desarrollaron programas PBASIC para hacer que el BASIC Stamp cheque el
estado de los filamentos entre cada pulso de servo. En base al estado de los filamentos,
declaraciones IFTHEN en la seccin principal del programa llamaron a subrutinas de
navegacin similares a las desarrolladas en el Captulo anterior para guiar al Boe-Bot
lejos de los obstculos. Como un ejemplo simple de inteligencia artificial, se desarroll
una rutina adicional que habilita al Boe-Bot para detectar cuando se ha quedado atorado
en una esquina. Esta rutina involucr guardar estados anteriores de los filamentos,
compararlos contra el estado actual y contra el nmero de detecciones alternadas de un
objeto.
Este Captulo introdujo la navegacin del Boe-Bot basada en sensores. Los siguientes 3
Captulos se enfocarn en usar distintos tipos de sensores para dar al Boe-Bot una visin.
Ambos, visin y contacto, abren muchas oportunidades para que el Boe-Bot navegue en
ambientes cada vez ms complejos.
Preguntas
1. qu tipo de conexin elctrica es un filamento?
2. Cuando se presiona un filamento, qu voltaje ocurre en el pin I/O que lo
monitorea? Qu valor binario ocurrir en el registro de entrada? Si se usa el pin
P8 de I/O para monitorear el pin de entrada, qu valor tendr IN8 cuando se
presione un filamento y qu valor tendr cuando un filamento no sea presionado?
3. Si IN7 = 1, qu significa? Qu significa si IN7 = 0? Y si IN5 = 1 y IN5 = 0?
4. Qu comando se usa para brincar a diferentes subrutinas dependiendo del valor
de una variable? Qu comando se usa para decidir a qu subrutina brincar?
En qu se basan estas decisiones?
5. Cul es el propsito de tener declaraciones IFTHEN anidadas?
Page 166 Robtica con el Boe-Bot
Ejercicios
1. Escriba un comando DEBUG para TestWhiskers.bs2 que actualize el estado de
cada filamento en una nueva lnea. Ajuste PAUSE para que sea 250 en vez de 50.
2. Usando RoamingWithWhiskers.bs2 como referencia, escriba una subrutina
Turn_Away que llame a la subrutina Back_Up una vez y a la subrutina
Turn_Left dos veces. Escriba las modificaciones que tendr que hacer a la
seccin de la Rutina Principal de RoamingWithWhiskers.bs2
Proyectos
1. Modifique RoamingWithWhiskers.bs2 para que el Boe-Bot haga un sonido de 4
kHz y 100 ms antes de ejecutar la maniobra evasiva. Haga que suene 2 veces si
ambos contactos de filamentos son detectados durante el mismo muestreo.
2. Modifique RoamingWithWhiskers.bs2 para que el Boe-Bot avance en un crculo
de 1 yarda (o metro) de dimetro. Cuando toque un filamento, causar que viaje
en un crculo ms cerrado (de menor dimetro). Cuando toque el otro filamento,
causara que el Boe-Bot navegue en un crculo de mayor dimetro.
Soluciones
Q1. Un interruptor tctil.
Q2. Cero (0) volts, resultando en un cero binario (0) en el registro de entrada.
IN8 = 0 cuando el filamento est presionado.
IN8 = 1 cuando el filamento no est presionado.
Q3. IN7 = 1 significa que el filamento derecho no est presionado.
IN7 = 0 significa que el filamento derecho est presionado.
IN5 = 1 significa que el filamento izquierdo no est presionado.
IN5 = 0 significa que el filamento izquierdo est presionado.
Q4. El comando GOSUB ejecuta el brinco presente. El comando IF...THEN se usa
para decidir a qu subrutina brincar. Esa decisin est basada en condiciones,
que son declaraciones lgicas que se evalan como cierto o falso.
Q5. El programa puede checar una condicin, y si esa condicin es cierta, puede
checar otra condicin dentro de la primera.
E1. La clave para resolver este problema es usar un segundo comando CRSRXY que
coloque el estado del filamento derecho en el lugar adecuado en la pantalla. Para
alinearse con los encabezados, el texto debe empezar en la columna 9 del
rengln 3.
Navegacin tctil con Filamentos pgina 167
E2. Subrutina:
Turn_Away:
GOSUB Back_Up
GOSUB Turn_Left
GOSUB Turn_Left
RETURN
P1. La clave para resolver este problema es escribir una declaracin que haga un
sonido con los parmeteros requeridos:
FREQOUT 4, 100, 4000 ' 4kHz beep for 100ms
DO
IF (IN5 = 0) y (IN7 = 0) THEN ' Ambos filamentos detectan
FREQOUT 4, 100, 4000 ' 4 kHz beep por 100 ms
FREQOUT 4, 100, 4000 ' Repite 2 veces
GOSUB Back_Up ' Retrocede & vuelta en U
GOSUB Turn_Left
GOSUB Turn_Left
ELSEIF (IN5 = 0) THEN ' Filamento izq contacta
FREQOUT 4, 100, 4000 ' 4 kHz beep por 100 ms
GOSUB Back_Up ' Retrocede y gira der
GOSUB Turn_Right
Page 168 Robtica con el Boe-Bot
P2. Del Captulo 4 encontramos proyectos que logran crculos de 1 yarda con
PULSOUT 13, 850 y PULSOUT 12, 716. Usando estos valores, el radio puede
ser ajustado incrementando o disminuyendo lgeramente el ancho de pulso a
partir del valor inicial de 716. Cada vez que un filamento es presionado el
programa sumar o restar un poco del ancho de pulso correcto.
' Robotica con el Boe-Bot - CirclingWithWhiskerInput.bs2
' Mueve en circulo 1 yarda, incrementa/disminuye radio en respuesta a
' presion de filamentos, un filamento incrementa, el otro disminuye.
' {$STAMP BS2} ' Directiva Stamp.
' {$PBASIC 2.5} ' Directiva PBASIC.
DO
PULSOUT 13, 850 ' Pulso servos en ruta circular
PULSOUT 12, pulseWidth ' 12 mas lento que 13 y arquea
PAUSE 20
IF (IN5 = 0) THEN ' Filamento izq hace circulo
IF (pulseWidth <= 845) THEN ' mas pequeo hasta servo max
pulseWidth = pulseWidth + 5 ' pulseWidth de 850.
toneFreq = toneFreq + 100
FREQOUT 4, 100, toneFreq ' Toca tono como indicador.
ENDIF
ELSEIF (IN7 = 0) THEN ' Filamento der hace circulo
IF (pulseWidth >= 655) THEN ' mas grande, hasta servo min
pulseWidth = pulseWidth - 5 ' pulseWidth de 650.
toneFreq = toneFreq - 100
FREQOUT 4, 100, toneFreq ' Toca tono como indicador.
ENDIF
ENDIF
LOOP
Navegacin Fotosensible con Fototransistores pgina 169
Debera guardar este Captulo para despus? Muchas clases brincan a los Captulos 7
y 8, y luego regresan aqu si el tiempo lo permite. El Captulo 7 es el major siguiente paso
despus de la navegacin con filamentos porque presenta un sensor que el Boe-Bot puede
usar para detectar obstculos sin chocar con ellos. El Captulo 8 usa ese mismo sensor
para deteccin de distancia y seguir objetos. Eso completar su introduccin a la deteccin
de objetos y navegacin. Luego, regrese aqu para hacer que su Boe-Bot detecte y
responda a algo entramente diferente y de alguna ms retador luz ambiental.
Baje cdigo de ejemplo selectos: Algunos de los programas ejemplo ms largos en este
Captulo estn disponibles como descargas en www.parallax.com/go/Boe-Bot. Busque el
archivo LightSensorExamples.zip.
Hay muchos sensors de luz diferentes que atienden funciones uncas. Los sensors de luz
en su kit Boe-Bot responden a la luz visible junto con un tipo invisible de luz llamado
infrarrojo. Estos sensores pueden ser incorporados en algunos circuitos diversos y el
BASIC Stamp puede ser programado para interactuar con ellos para detectar variaciones
en el nivel de luz. Con esta informacin, su programa puede ser expandido para hacer que
el Boe-Bot reconozca areas con luz o permetros en penumbra, reportar niveles generales
de brillantez y oscuridad y buscar fuentes de luz como el haz de una lmpara y puertas
que permitan la entrada de luz en cuartos oscuros.
PRESENTANDO AL FOTOTRANSISTOR
Un transistor es como una vlvula que regula la cantidad de corriente elctrica que pasa a
travs de 2 de sus terminales. La tercera terminal de un transistor controla cuanta
coriente pasa a travs de las otras dos. Dependiendo del tipo de transistor, el flujo de
corriente puede ser controlado por voltaje, corriente o, en el caso del fototransistor, por
luz.
Page 170 Robtica con el Boe-Bot
B
Colector
C
Figura 6-1
La cara plana y la pata
B
ms corta indican la Smbolo Esquemtico
Base
terminal emisor (E) del Fototransistor y
Corriente
E Dibujo de Parte
Emisor
E
C
Revise la Figura 6-1 y encuentre la cara plana y pata ms corta del emitsor.
En el oceano puede medir la distancia entre los picos de dos olas adyacentes en pies o
metros. Para la luz, que tambin viaja en ondas, la distancia entre picos adyacentes es
medida en nanmetros (nm) que son billonsimas de metro. La Figura 6-2 muestra la
longitud de onda para colores de luz con las que estamos familiarizados junto con algunas
que el ojo humano no puede detectar, como el infrarrojo y el ultravioleta.
El fototransistor en el Kit de Partes del Boe-Bot tiene su sensibilidad maxima a 850 nm,
que segn la Figura 6-2, est en el rango infrarrojo. La luz infrarroja no es visible al ojo
humano, pero muchas fuentes de luz diversas emiten cantidades considerables de ella,
incluyendo las lmparas halgenas e incandescentes, y especialmente el sol. El
fototransistor tambin responde a la luz visible, aunque es menos sensible a esta,
especialmente a longitudes de onda menores a 450 nm, que estn a la izquierda del azul
en la figura.
Navegacin Fotosensible con Fototransistores pgina 171
El diseo de circuitos que usan fototransistores para deteccin de luz puede ser ajustado
para comportarse mejor en ciertos niveles de luz y los circuitos de fototransistor en este
captulo estn diseados para uso en interiores. Luego, si su rea para el robot tiene
iluminacin interior fluorescente, incandescente o halgena indirecta debe trabajar muy
bien. Evite los rayos de luz de sol que entre por ventanas cercanas porque sobrecargarn
al fototransistor con demasiada luz infrarroja. Si su area esta cercana a ventanas que
dejan pasar la esta luz, es buena idea cerrar las persianas antes de empezar. Las lmparas
de halgeno apuntando directamente al curso podran tambin causar problemas. Deben
dar solo luz indirecta, idealmente dirigida hacia arriba para que la luz sea reflejada por el
techo. Para mejor resultado, establezca su curso en un rea con luz fluorescente brillante.
bsqueda de luz de su Boe-Bot, hay un circuito simple que puede usar y que permite al
BASIC Stamp detectar luz brillante con un 1 binario o luz ambiental con un 0 binario.
Lista de partes
(1) Fototransistor Mas plano
arriba
(2) Cables de conexin USE
ESTE!
Fototransistor
El circuito en la Figura 6-4 es similar a los que encontrar en las luces que se encienden
automticamente en la noche y algunos detectores en transportadeores de banda.
Figura 6-4
Circuito de Voltaje de Salida del
Fototransistor
Diagramas de conexin:
Board of Education (Izq);
HomeWork Board (der)
Flat Spot,
Flat Spot, Shorter Pin
Shorter Pin
Page 174 Robtica con el Boe-Bot
PAUSE 1000
DEBUG CLS
DO
LOOP
DO UNTIL IN6 = 1
LOOP
Page 176 Robtica con el Boe-Bot
Figura 6-6
Circuito de
volltaje de
salida del
To P6 fototransistor y
Respuesta de
IN6 a VP6
Conectado en Serie. Cuando 2 o mas elementos son conectados punta a punta, estn
conectados en serie. El fototransistor y la resistencia (Figura 6-6) estn en serie.
Un umbral lgico es un voltaje que establece una distincin entre un 1 y un 0 binarios.
Para un pin I/O BASIC Stamp establecido como entrada, ese umbra les 1.4 V.
Navegacin Fotosensible con Fototransistores pgina 177
La razn por la que el voltaje en P6 cambia con la luz es porque el fototransistor deja
pasar ms corriente con ms luz o menos corriente con menos luz. Esa corriente I (Figura
6-6), tambin tiene que pasar a travs de la resistencia. Cuando pasa ms corriente a
travs de una resistencia, el voltaje a travs de ella ser mayor y viceversa.. Puesto que
una de las terminals de la resistencia est unida a Vss = 0 V, el voltaje en la Terminal VP6
sube con mas corriente y baja con menos corriente.
Si cambia la resistencia de 2 k por una de 1 k, VP6 ser menor para las mismas
corrientes. De hecho, ser necesaria el doble de corriente para hacer que VP6 cruce el
umbral lgico de 1.4 V del pin I/O de BASIC Stamp; es decir, la luz tendr que ser el
doble de brillante para que IN6 guarde un 1. Asi pues, una resistencia menor en serie con
el fototransistor har al circuito menos sensible a la luz. Si ahora reemplaza la resistencia
de 2 k con una de 10 k, VP6 ser 5 veces mayor con la misma corriente y solo tomar
1/5 de luz para generar 1/5 de corriente e incrementar VP6 por encima de 1.4 V y hacer
que IN6 guarde un 1. Asi, una resistencia mayor hara al circuito ms sensible a la luz.
V=IR
Usemos la ley de Ohm para calcular VP6 permitiendo con the fototransistor fluir dos
cantidades de corriente diferentes a travs del circuito: 1.75 mA, que podra pasar como
resultado de una luz bastante brillante, y 0.25 mA, que podra ocurrir con luz menos
brillante. La Figura 6-8 muestra las condiciones y sus soluciones. Cuando intente estos
calculus, recuerde que milli (m) es milsimas y kilo (k) es miles cuando sustituya los
nmeros en la Ley de Ohm.
Figura 6-7: VP6 Clculos para 2 corrientes Diferentes del arreglo Fototransistor-Resistencia
VP6 I R
1.75 mA 2 k
1.75
A 2000
1000
1.75 A 2
3.5 A
3.5V
VP6 I R
0.25 mA 2 k
0.25
A 2000
1000
0.25 A 2
0.5 A
0.5V
Navegacin Fotosensible con Fototransistores pgina 179
Pregunta: Qu podra hacer para regresar la respuesta del circuito a 3.5 V para
luz brillante y 0.5 V para atenuada?
Vuelva a repetir los clculos con la Ley de Ohm para R = 1 k, y corriente brillante I =
3.5 mA y corriente atenuada I = 0.5 mA. Regresa Vo a 3.5 V para luz brillante y 0.5 V
para luz tenue con el doble de corriente? (debiera, si no es as, revise sus clculos.)
Lista de partes
En esta actividad, necesitar 2 fototransistores y 2 capacitores de 0.1 F. La Figura 6-8
muestra dibujos de ambos.
Rena las partes listadas a continuacin usando la Figura 6-8 como gua para
encontrar los fototransistores y capacitores de 0.1 F en su kit de partes.
(2) Fototransistores
(2) Capacitores, 0.1 F (104)
(2) Resistencias, 1 k (cafe-negro-rojo)
(2) Cables de conexin
Presentando al Capacitor
Un capacitor es un dispositivo que guarda carga y es un bloque de construccin
fundamental para muchos circuitos. Las bateras tambin son dispositivos que guardan
carga y, para los fines de estas actividades, ser conveniente pensar en capacitares como
bateras muy pequeas que pueden ser cargados, descargados y recargados.
La cantidad de carga que un capacitor tiende a guardar se mide en farads (F). Un farad es
un valor muy grande e imprctico con estos circuitos del Boe-Bot. Los capacitores que
usar en esta Actividad guardan fracciones de millonsimas de farads. Una millonsima
de un farad es llamada microfarad, y se abrevia F. El capacitor que usar en este
ejercicio guarda la dcima de una millonsima de un farad. Esto es, 0.1 F.
Navegacin Fotosensible con Fototransistores pgina 181
Caras
Caras planas,
planas, Patas cortas
Patas cortas
Los ejemplos de ubicacin en este Captulo dependern de que los fototransistores sean
apuntados hacia arriba y afuera para detectar las diferencias en los niveles de luz
incidentes en diferentes direcciones.
Circuito QT: Una abreviacin comn para transferencia de carga es QT. La letra Q se
refiere a la carga elctrica (una acumulacin de electrones), y T abrevia transferencia.
Conectado en Paralelo
El fototransistor y el capacitor mostrados en la Figura 6-11 estn conectados en paralelo.
Para que 2 componentes estn conectados en paralelo, cada una de sus terminales debe
estar conectada a terminales comunes (tambin llamados nodos). El fototransistor y el
capacitor tienen cada uno una pata conectada a Vss. Tambin tiene cada uno conectada
una pata a la misma pata de la resistencia. Entonces, estn conectados en paralelo.
Figura 6-11
Circuito QT Conectado al Pin
I/O P6
El BASIC Stamp ejecuta los siguientes pasos para medir un nivel de luz con el circuito
fototransistor de transferencia de carga de la Figura 6-11:
El comando RCTIME cambia la direccin Pin de salida a entrada y luego espera que estado
del pin I/O cambie, lo que ocurre cuando el voltaje que el circuito aplica al pin alcanza el
umbral lgico de 1.4 V. El comando RCTIME guarda en Variable la medicin de tiempo
resultante. Con el BASIC Stamp 2, este resultado es un nmero mltiplo de 2 s.
Figura 6-12: Dos niveles de luz diferentes medidos por el sensor de luz izquierdo del Boe-Bot
tLeft VAR Word ' Guarda tiempo de disminuc del sensor izq
Tambin sera bueno tener un tercer programa que pruebe ambos circuitos
fototransistores. Como antes, salve uno de los programas que ya funciona y luego salve
una copia bajo un nuevo nombre, por ejemplo TestP6P3LightSense.bs2. Este programa
necesitar 2 declaraciones de variables, y 2 juegos de comandos HIGH-PAUSE-RCTIME en
su ciclo principal. Los comandos DEBUG pueden ser condensados en uno. Podra verse as:
DEBUG HOME, "tLeft = ", DEC5 tLeft, " ", "tRight = ", DEC5 tRight
PAUSE 1 tLeft
5V
1.4 V
0V
PAUSE 1 tRight
5V
HIGH 3 RCTIME 3, 1, tRight
1.4 V
0V
La traza inferior en la Figura 6-13 grafica el otro voltaje del capacitor del circuito QT
the sensor P3 en el lado derecho del Boe-Bot. Esta medicin empieza despus de la
medicin de P6 en el lado izquierdo ha sido completada. El voltaje vara de modo similar
a la traza superior, excepto que el tiempo de abatimiento es bastante ms largo,
aproximadamente 5 ms, y esperaramos ver que tRight guarde un valor en las cercanas
de 2500. Este valor ms grande corresponde a un abatimiento ms lento, lo que a su vez
corresponde a un nivel de luz ms bajo.
En esta Actividad, intentar una tcnica que puede ser usada para reducir las mediciones
del tiempo de abatimiento en cuartos ms oscuros. Tambin probar los efectos de la luz
reducida en el desempeo de los servos usando ambas tcnicas de medicin.
El comando PWM aplica una secuencia rpida de seales alto/bajo al Pin I/O por una cierta
duracin Duration medida en ms. El argumento Duty es el nmero de 256avos de tiempo
que la seal est en nivel alto y determina el nmero de 256avos de 5 V al que el
capacitor queda cargado. Por ejemplo, el comando PWM 6, 128, 1 manda una secuencia
rpida de seales alto/bajo por 1 ms. Estn en nivel alto por 128/256avos del tiempo
esto es, la mitad del tiempo. Entonces, carga al capacitor a 128/256avos de 5 V. Esto es la
mitad de 5 V, que es 2.5 V.
Page 190 Robtica con el Boe-Bot
Digamos que quiere saber qu valor Duty usar para un voltaje en particular. Solo divida
ambos lados de la ecuacin entre 5 V y multiplique ambos lados por 256. El resultado es:
Un valor til de Duty sera el necesario para que Vcap = 1.4 V. Valores menores que ese
no seran ltiles para los fines de medicin de tiempo de abatimiento de voltaje.
Empecemos por reducir los tiempos de abatimiento a la mitad de los valores que midi en
la actividad previa. En la prctica, su programa necesitar reducirlos ms para navegar en
niveles de luz ms bajos, pero aqu se muestra el primer paso. Para reducir el tiempo de
abatimiento a la mitad tendr que usar el comando PWM para cargar los capacitores al
valor intermedio entre 1.4 V y 5 V. Esto corresponde a un valor Duty de PWM que est a la
mitad entre 72 y 256, que es (72 + 256) 2 = 184. Luego, puede reemplazar HIGH 6 y
PAUSE 1 con PWM 6, 184, 1 para reducir los tiempos de abatimiento a la mitad de los
valores. Otra forma de visualizar esto es que est usando el comando PWM para hacer a los
sensores la mitad de sensibles a la luz porque las mediciones de tiempo de abatimiento
tomarn la mitad de tiempo para la mitad de los valores medidos.
tLeft VAR Word ' Guarda tiempo de abatimiento del sensor izq
tRight VAR Word ' Guarda tiempo de abatimiento del sensor der
DEBUG HOME, "tLeft = ", DEC5 tLeft, CR, ' Despliega resultados
"tRight = ", DEC5 tRight
PAUSE 100 ' Espera 0.1 segundos
tRight1 VAR Word ' Tiempo de abatimiento del 1er sensor der
tRight2 VAR Word ' Tiempo de abatimiento del 2do sensor der
2.5 V
1.4 V
0V
Corra TestMaxDarkWithHighPause.bs2.
Incremente gradualmente la sombra hasta que los servos empiecen a vibrar. (Una
caja de zapatos debe trabajar bien para esto.)
Repita con TestMaxDarkWithPwm.bs2. Los servos an deben vibrar en cierto
punto, pero debe ser ms oscuro que antes.
Figura 6-15 El programa a la derecha debe permitir que los Servos trabajen en luz ms baja
' TestMaxDarkWithHighPause.bs2 ' TestMaxDarkWithPwm.bs2
DO DO
LOOP
El Boe-Bot sera capaz de usar esta informacin para tareas como navegar hacia o lejos de
la luz.
Pruebe LightSensorValues.bs2
LightSensorValues.bs2 usa varias subrutinas que condensan las mediciones de luz en dos
valores: light, y ndShade. La variable luz guarda el nivel de luz ambiental detectado
por el Boe-Bot. La variable ndShade guarda una medicin de sombra normalizada y
diferencial. Normalizada significa que las mediciones fueron ajustadas a una escala
determinada, -500 a 500 en el caso de ndShade. Diferencial significa que el nmero
corresponde a una diferencia entre las dos mediciones de los sensores. En el caso de
ndShade, el valor indica la diferencia entre el nivel de sombra detectada por cada sensor.
La variable luz es til para detectar los niveles generales de luz. La escala de la variable
es 1 a 324, con 1 siendo la condicin ms oscura que el sistema puede medir y reportar y
324 la ms brillante. Esta medicin es til si una meta en un concurso incluye detectar
cuando el robot pasa bajo una luz brillante. Aqui, la variable luz puede guardar un valor
mas grande a cualquier otro valor en el curso del robot, y el programa puede usar una
declaracin IFTHEN para detectar esa condicin y tomar accin.
La variable ndShade del programa indica cunta mas sombra detecta un sensor de luz por
encima del otro. La escala de la variable es -500 (sombra ms oscura a la izquierda) a 500
(sombra ms oscura a la derecha). Si el valor de ndShade es 0, quiere decir que los
niveles de luz son parecidos en ambos fototransistores. La medicin puede ser til para
un cdigo que haga que el Boe-Bot viaje hacia o lejos de fuentes de luz. Por ejemplo,
para hacer que el Boe-Bot viaje hacia la luz, una rutina simplemente tiene que hacer que
el Boe-Bot gire si detecta sombra en un lado u otro.
una medicin con una sombra cubiendo el sensor de luz izquierdo. El valor de ndShade
es -279, lo cual indica sombra sobre el sensor izquierdo y que el valor de luz ha cado
porque una sombra cubriendo un sensor tambin reduce la medicin de luz total.
DO
' Ciclo Principal.
GOSUB Light_Shade_Info ' Obtiene luz & ndShade
DEBUG HOME, "light = ", DEC3 light, ' Despliega luz & ndShade
"/324", CLREOL, CR,
"ndShade = ", SDEC3 ndShade, CLREOL
Mas detalle de estas subrutinas: esta seccin solo se enfoca en lo que hacen las
subrutinas, no en cmo lo hacen. Algunas actividades ms avanzadas que narran el
desarrollo de las subrutinas estn disponibles como descarga en
www.parallax.com/go/Boe-Bot. Busque la seccin de sensado avanzado de luz.
tLeft
ndShade 500 1000
tLeft tRight
Esta ecuacin resuelve el problema de una sombra teniendo valores diferentes en cuartos
con diferentes niveles de luz. Simplemente divide una medicin entre la suma de ambas
mediciones con un resultado fraccional que va entre 0 a 1. Luego multiplica este por 1000
para un resultado que va entre 0 a 1000. Entonces lo resta a 500, para la variable
ndShade, que va entre -500 a 500.
Digamos que tLeft es 1500 y tRight es 500. Esto significa que hay sombra sobre el
sensor de luz izquierdo. Si pone los valores en la ecuacin, el resultado ser -250. Ahora,
en un cuarto ms oscuro, la misma condicin de sombra podra causar que tLeft fuera
3600 y tRight fuera 1200. Esos valores an resultarn en un valor ndShade de -250.
Las constantes pueden ser tiles para ayudar a que los comandos con nmeros en ellas
sean ms explcitos y tambin si tiene un nmero que se usa en varios puntos en un
programa. Al actualizar una directiva CON, todo el cdigo que usa el nombre de la constante
usar el valor actualizado. El Captulo 8 utiliza esto para calibrar un programa que hace que
el Boe-Bot siga objetos dentro de un cierto rango de sus sensores infrarrojos de objetos.
Todo lo que necesita para este display son algunas pequeas modificaciones a las
secciones de Inicializacin y Rutina Principal de LightSensorValues.bs2. Abajo sigue un
ejemplo. Hace uso de algunos nuevos formateadores DEBUG, com REP y CRSRX.
El formateador REP repite un character un cierto nmero de veces. Entonces DEBUG CLS,
REP CR\5 limpia la pantalla y luego escribre 5 retornos de carro, lo que manda el cursos
5 lneas abajo.
CLREOL es otro nuevo formateador que borra todo a la derecha del cursor en una linea
determinada. Esto puede ser til cuando no necesariamente sabe cuntos dgitos sern
desplegados. Si una medicin despliega menos dgitos que la anterior, el formateador
CLREOL borra cualesquiera dgitos fantsmas que pudiesen quedar a la derecha.
Despus, necesitamos cdigo para establecer esos valores de pulso. El cdigo que sigue
parametriza pulseLeft y pulseRight para mantener la rueda que este en sombra a
velocidad plena y reducir la velocidad o girar en reversa la otra. Cuando el contraste entre
las mediciones de luz y sombra es pequeo, la rueda que no est bajo sombra solo reduce
su velocidad para lograr una vuelta gradual. Cuando el contraste es mayor, la rueda al
otro lado del lado oscuro puede reducir su velocidad an ms, o incluso empezar a girar
en reversa para que el Boe-Bot ejecute una vuelta ms cerrada para alejarse de la sombra.
La rutina que establece los valores de pulseLeft y pulseRight empieza por decider
si la sombra esta sobre el sensor izquierdo o derecho, comparando (ndShade + 500)
contra 500. Los operadores > (mayor que), >= (mayor o igual que), < (menor que), y <=
(menor o igual que) solo compara dos nmeros positivos. Puesto que el menor valor
posible de ndShade es -500, el cdigo en la condicin IF agrega 500 a ndShade y luego
lo compara contra 500. Es el equivalente PBASIC a IF ndShade > 0.
Digamos que ndShade es 125, lo que significa que definitivamente hay sombra sobre el
sensor de luz derecho. IF ndShade + 500 > 500 THEN checa si 625 es mayor que
500, que lo es. La Figura 6-18 muestra lo que pasa despus cuando el cdigo reduce la
velocidad de la rueda izquierda con pulseLeft = 900 ndShade MIN 650 MAX 850,
y establece la rueda derecha a velocidad plena al frente con pulseRight = 650. Puesto
que ndShade es 125 en este ejemplo, 900 125 = 775, lo que causara un comando
PULSOUT para reducir la velocidad de la rueda izquierda.
Figura 6-18
Reaccin de
LightSeekingBoe-
Bot.bs2s a la
sombra a la
derecha
En este ejemplo,
una medicin
ndShade de 125
se sustrae de
900, y the 775
resultante reduce
la velocidad del
servo izquierdo.
Navegacin Fotosensible con Fototransistores pgina 205
Si ndShade es mayor, como por ejemplo 190, lo que significa que la sombra sobre el
sensor derecho es ms oscura, pulseLeft termina con un valor de 710, lo que har que
la rueda izquierda gire en reversa para una vuelta much ms cerrada. Para valores de
ndShade mayores que 250, la expresin 900 - ndShade puede resultar en valores
menores que 650. De modo semejante, para valores de ndShade entre 1 y 49, la
expresin puede resultar en valores por arriba de 850. Luego, el cdigo usa los
operadores MIN y MAX para mantener el resultado en el rango de 650 a 850 an cuando
900 - ndShade pueda tener resultados intermedios fuera del rango.
El operador MIN toma un resultado por debajo del valor especificado y lo incrementa a
ese valor, pero deja intactos resultados por encima del valor MIN. Entonces, si el resultado
de 600 - ndShade es cualquier cosa por debajo de 650, el operador MIN guarda 650 en
pulseLeft.
Por ejemplo, si ndShade fuese 350, el resultado intermedio de 900 - ndShade sera 550,
pero MIN 650 lo cambiara por 650. Similarmente, el operador MAX toma un resultado que
este por encima del valor especificado y lo decrement a ese valor, pero deja intactos
resultados inferiores al valor MAX. Asi pues, an cuando valores entre 0 a 49 entregaran
resultados intermedios 900 - ndShade en el rango de 900 a 851, MAX 850 establece en
850 cualquier resultado en dicho rango.
Para valores ndShade cero o menores, esto quiere decir que la sombra esta sobre el
sensor izquierdo y que la rueda derecha necesita reducir su velocidad. El cdigo en el
bloque ELSE lo hace al fijar la rueda izquierda a velocidad plena con pulseLeft = 850
para hacer que la rueda izquierda del Boe-Bot vaya a velocidad plena al frente y
pulseRight = 600 - ndShade MIN 650 MAX 850 para reducir la velocidad o incluso
revertir la direccin de la rueda derecha del Boe-Bot, dependiendo de que tan oscura es la
sombra sobre el sensor de luz izquierda.
Page 206 Robtica con el Boe-Bot
Estas pantallas demuestran cmo la rutina de navegacin ajusta las variables pulseLeft
y pulseRight en respuesta a valores ndShade diferentes. El programa hace que la
Terminal de Depuracin despliegue una vista superior del Boe-Bot con etiquetas
pulseLeft y pulseRight y sus valores cerca a cada rueda. El programa tambin
posiciona > a la izquierda y < a la derecha como indicadores de velocidad de las ruedas
para mostrar qu tan rpido y en qu direccin gira cada rueda.
En la inferior derecha, la variable luz es menor. Puesto que ndShade esta cercana a cero,
el nivel de sombra es aproximadamente el mismo y debe haber sombra sobre ambos
sensors. Puesto que el Boe-Bot solo responde a diferencias en sombras, la misma sombra
sobre ambos sensores mantendr girando ambas ruedas a velocidad plena al frente
nuevamente.
Navegacin Fotosensible con Fototransistores pgina 207
Right wheel
stopped
Dark shade over right left wheel full speed reverse Equal shade back to full speed forward
' ...
Navegacin Fotosensible con Fototransistores pgina 209
' 0123456789 +10 0123456789 +30 ' posiciones de cursor como guia
' +0 0123456789 +20 01234567' si teclea el codigo
'-----[ Rutina Principal ]----------------------------------------------------
DO ' Ciclo Principal.
DEBUG CRSRXY, 1, 10, DEC3 pulseLeft, ' Muestra valores de variable de pulso
CRSRX, 29, DEC3 pulseRight ' arriba de nombres de variables
DEBUG CRSRXY,6,15-((pulseLeft-650)/25),">"
De acuerdo con la ayuda de BASIC Stamp, un alias es un nombre alternativo para una
variable existente.
En el Editor BASIC Stamp, haga click en Help y seleccione BASIC Stamp Help.
Haga click en PBASIC Language referencia y luego en Variables para desplegar la
pgina de Variables. Encuentre la explicacin de alias, lala y examine el
ejemplo de declaracin de variable que usa alias.
tiempo que usa pulseLeft y pulseRight. Entonces tLeft puede ser declarada como un
alias de pulseLeft y tRight puede ser declarada como un alias de pulseRight. Ahora,
pulseLeft y tLeft usan el mismo espacio de memoria, lo mismo que pulseRight y
tRight, y su aplicacin recuper dos words de RAM.
Figura 6-20: La Asignacin de Alias a variables ahorra casi la mitad de la RAM del BASIC
Stamp
Correccin de Problemas
Si el Boe-Bot parece un poco menos sensible a la luz en un lado, intente corregirlo
siguiendo las Instrucciones en la siguiente seccin (Su Turno Ajustes de Sensibilidad de
Luz/Sombra ). Lo mismo aplica si quiere que el Boe-Bot sea mas o menos sensible a la
sombra.
Si el Boe-Bot no responde a las sombras alejndose de ellas, o si gira en su lugar en lugar
de viajar, siga los siguientes pasos:
Si tecle su cdigo, pruebe el cdigo ejemplo LightSeekingBoeBot.bs2 en
LightSensorExamples.zip, una descarga gratis en www.parallax.com/go/Boe-Bot.
Esto cancelar los errores de cdigo antes de examiner su circuito.
Si el cdigo del sitio web de Parallax no corrige el problema, tendr que revisar el
circuito. Comience por verificar cuidadosamente todas las conexiones de su
circuito segn el esquemtico y el diagrama de alambrado en la Actividad #2.
Vuelva a revisar el cdigo de color de la Resistencia (caf-negro-rojo), numerous
en el capacitor (104), la longitud de patas del fototransistor, y asegrese de que
todas las terminales estn conectadas como se muestra en el diagrama de
alambrado. Tambin asegrese de veriricar que seleccion los fototransistores y
no los LEDs infrarrojos con la ayuda de la Figura 6-8 en la pgina 180. Verifique
que los fototransistores apuntan arriba y afuera como en la Figura 6-10 en la
pgina 183. A veces, apuntarlos ligeramente hacia afuera mejora la respuesta a
la sombra. Al ajustar la direccin de sus fototransistores asegrese de que sus
patas no se toquen una a la otra. Repita las pruebas de la Terminal de
Depuracin y asegrese de hacerlo para ambos sensores. Cada uno debe
responder similarmente a la luz y a la sombra.
Despus, repita las pruebas en la Actividad #5. Use la Terminal de Depuracin
para verificar que los niveles de luz estn en el rango de 125 a 275. Tambin,
proyectar una sombra sobre un sensor dado deber desacelerar el servo en el
lado contrario. Una sombra similar sobre el otro sensor deber resultar en un
ajuste de velocidad de motor similar en la otra rueda. Tambin verifique que el
mismo nivel de sombra o luz sobre ambos sensores resulte en velociad al frente
plena.
Si la Terminal de Depuracin despliega un valor de ndShade muy lejano a cero,
an cuando los sensores vean aproximadamente el mismo nivel de luz, hay
algunas pruebas adicionales que puede probar en la Actividad de chequeo de
fototransistor. Es parte de las actividades avanzado de sensado de luz
disponibles en www.parallax.com/go/Boe-Bot. Si la Terminal de Depuracin indica
que los sensores y servos estn ambos respondiendo a la luz y sombra
correctamente, intente LightSeekingBoeBot.bs2 nuevamente. Si an no
responden correctamente a las sombras, es momento de revisar sus servo
motores. Repita la Actividad #6 del Captulo 2. Para mayor profundidad, haga las
grficas de la Actividad #4 Captulo 3, para ambos servos.
For mas ayuda en la correccin de problemas, pruebe los recursos en
www.parallax.com/support.
Navegacin Fotosensible con Fototransistores pgina 215
...y:
pulseRight= 600 - ndShade MIN 650 MAX 850
Intntelo.
Tambin puede ajustar uno de los valores para hacer uno u otro sensors izquierdo o
derecho mas sensible. Cambiando el 900 por otro valor cambiar la sensibilidad del Boe-
Bot a la sombra en la izquierda, mientras que cambiar el 600 a otro valor cambiar la
sensibilidad del Boe-Bot a la sombra en la derecha.
Intntelo tambin.
Otras cosas que puede hacer con ajustes mnimos a la Rutina Principal son:
RESUMEN
Un fototransistor es una vlvula de corriente controlada por la luz. Permite el paso de mas
corriente con incidencia de luz ms brillante y menos corriente con luz menos brillante.
Este Captulo utiliz 2 circuitos fototransistores diferentes para detectar luz: un circuito
de voltaje de salida y un circuito de transferencia de carga.
The circuito fototransistor de voltaje de salida en este Captulo fu conectado a un pin I/O
configurado como entrada para dar un valor binario que indicaba brillo o luz ambiental.
Cuando el fototransistor permite mayor paso de corriente, el voltaje a travs de la
resistencia es menor. Escogiendo la rsistencia adecuada para las condiciones de luz, el
circuito puede ser monitoreado por un pin I/O porque su voltaje ser superior a 1.4 V en
luz brillante y menor que 1.4 V en luz ambiente. El registro de entrada del pin I/O guarda
un 1 cuando el voltaje es mayor que 1.4 V y un 0 cuando es menor que 1.4 V.
Un comando HIGH seguido por una PAUSE pueden cargar el capacitor y luego el comando
RCTIME cambia el pin I/O a entrada y mide el tiempo que le toma al voltaje del capacitor
abatirse a 1.4 V al perder su carga a travs del fototransistor. La medicin de tiempo
puede ser reducida usando el comando PWM en lugar de HIGH y PAUSE. El comando PWM
puede cargar el capacitor a valores menores a 5 V antes que el comando RCTIME y
entonces el capacitor tiene menos volts que abatir antes de alcanzar 1.4 V, y esto toma
menos tiempo. La reduccion de tiempo ayuda a prevenir que el retraso entre comandos
PULSOUT se haga tan largo que haga a los servos vibrar en vez de girar.
Navegacin Fotosensible con Fototransistores pgina 217
Preguntas
1. Qu es lo que regula un transistor?
2. Cules son las terminales del fototransistor que tienen patas?
3. Cmo puede usar la cara plana del encapsulado plstico del fototransistor para
identificar sus terminales?
4. A qu color sera ms sensible el fototransistor: rojo o verde?
5. Cmo respond VP6 en la Figura 6-6 si la luz se hace ms brillante?
6. Qu es lo que hace el fototransistor en la Figura 6-6 que causa que VP6 se
incremente o decremente?
7. Cmo puede ser modificado el circuito en la Figura 6-6 para hacerlo ms
sensible a la luz?
8. Qu pasa cuando el voltaje aplicado a un pin I/O que ha sido configurado como
entrada esta arriba o abajo del voltaje de umbral?
9. Si la cantidad de carga que un capacitor guarda se decrementa, qu pasa con el
voltaje en sus terminales?
Ejercicios
1. Encuentre VP6 si I = 1 mA en la Figura 6-6.
2. Calcule la corriente en la Resistencia si VP6 es 4.5 V en la Figura 6-6.
3. Asuma que el umbral entre luz y sombra que necesita su aplicacin ocurre
cuando VP6 = 2.8 V. Calcule el valor de Resistencia que necesita para que el
BASIC Stamp detecte este umbral.
4. Calcule el valor de un capacitor marcado con 105.
5. Escriba un comando RCTIME que mida el tiempo de abatimiento con el pin I/O
P7 y que guarde el resultado en una variable llamada tDecay.
6. Escriba un comando PWM que carge el capacitor en la Figura 6-11 hasta
aproximadamente 1.625 V para preparar el circuito para una medicin de
abatimiento.
Page 218 Robtica con el Boe-Bot
Proyectos
1. En la Actividad #1, el circuito junto al cdigo ejemplo en la seccin Su Turno
hace que el Boe-Bot se detenga bajo una luz al final de la ruta. Qu pasara si
tuviera una cantidad limitada de tiempo para recorrer el tramo y no conociera las
condiciones de iluminacin con anterioridad? Quiz tendra que calibrar su Boe-
Bot all mismo. Un programa que haga que el piezoparlante suene repetdamente
cuando el Boe-Bot detecte luz brillante y se quede callado cuando detecte luz
ambiental podra ser til para esta tarea. Escriba y pruebe el programa que
trabajo con el circuito en la Figura 6-4 en la pgina 173.
2. Desarrolle una aplicacin que haga que el Boe-Bot navegue y busque oscuridad
en vez de luz. Esta aplicacin debe utilizar los circuitos de transferencia de carga
en la Figura 6-9 en la pgina 181.
3. Desarrolle una aplicacin que haga que el Boe-Bot navegue hacia una lmpara
de escritorio incandescente brillante en un cuarto donde las nicas otras fuentes
de luz son lmparas fluorescentes de techo. El Boe-Bot debe ser capaz de
navegar hacia la lmpara de escritorio y tocar un tono cuando est bajo ella. Esta
aplicacin debe utilizar los circuitos de transferencia de carga de la Figura 6-9 en
la pgina 181.
Soluciones
Q1. La cantidad de corriente que permite entrar en su colector y salir por su base.
Q2. Las terminales colectora y emisora del fototransistor estn conectadas a las patas.
Q3. La pata que est ms cerca a la cara plana es el emisor. La pata ms lejana a la
cara plana es el colector.
Q4. La longitude de onda del rojo est ms cercana a la longitude de onda del
infrarrojo, entonces debera ser ms sensible al rojo.
Q5. VP6 incrementa con ms luz.
Q6. Suministra ms o menos corriente a la resistencia.
Q7. Cambie la Resistencia de 2 k por una de mayor valor.
Navegacin Fotosensible con Fototransistores pgina 219
P1.
' Robotica con el Boe-Bot - CH6P1.bs2
' Suna periodicamente con luz brillante. De lo contrario, silencio.
' {$STAMP BS2}
' {$PBASIC 2.5}
PAUSE 1000
DEBUG "Program running..."
DO
IF IN6 = 1 THEN FREQOUT 4, 20, 4000
PAUSE 100
LOOP
TIP: Use LightSensorValues.bs2 para probar y encontrar un valor que este entre
la luz ambiental y el haz de la luz brillante.
DO
GOSUB Light_Shade_Info
Izq: Infrarrojo reflejado, obstculo detectado. Der: No refleja Infrarrojo, obstculo no detectado.
LUZ INFRARROJA
Infrarrojo se abrevia IR y puede visualizarlo como una forma de luz que el ojo humano
no puede detectar (revise la Figura 6-2 en la pgina 171). Los dispositivos como el LED
IR presentado en este Captulo emite luz infrarroja y los dispositivos como el
fototransistor del Captulo previo y el receptor infrarrojo de este Captulo detectan luz IR.
La Figura 7-2 muestra como el LED IR que el Boe-Bot usa como una pequea lmpara es
el mismo que puede encontrar en casi cualquier control remoto de TV. El control remoto
de TV manda mensajes IR a su TV y el microcontrolador en su TV los recibe con un
receptor IR como el que usar su Boe-Bot para detectar IR reflejado por objetos.
Page 222 Robtica con el Boe-Bot
Receptor IR
LED IR
Note que el control remoto de la TV enva mensajes que describen qu botn presiona al
hacer parpadear encendiendo/apagando su LED IR en las cercanas de 38 kHz (cerca de
38,000 veces por segundo). El receptor IR solo responde si est parpadeando en este
nivel. Esto previene que el infrarrojo de fuentes como el sol y luces incandescentes sea
malinterpetado como el remoto. Entonces, para enviar seales que el receptor IR pueda
detector, su BASIC Stamp tambin tendr que enviar seales en el rango de 38 kHz. El
lenguaje PBASIC lo logra con poco esfuerzo, con solo una lnea de cdigo para
transmitir la seal y una segunda lnea para checar el receptor IR.
Algunas luces fluorescentes generan seales detectables por los receptores IR.
Estas luces pueden causar problemas a las luces delanteras infrarrojas de su Boe-Bot. Una
de las cosas que har en este Captulo es desarrollar un olfateador de interferencia IR que
pueda usar para probar las luces fluorescentes cercanas a las rutas de su Boe-Bot.
Los sensores de color de luz en la mayora de las cmaras digitales, celulares, telfonos y
cmaras web, todos pueden detectar luz infrarroja, lo que nos da una forma de verla
an cuando el ojo humano no lo haga. La Figura 7-3 muestra un ejemplo con una cmara
Navegando con Luces Frontales Infrarrojas pgina 223
Figura 7-3: LED IR en un Control Remoto de TV Visto con una Cmara Digital
Con un botn presionado, el LED IR no se A travs del display de una cmara digital, el
ve diferente. LED IR aparece parpadeando con luz
brillante blanca.
Los sensors de pixeles dentro de la cmara digital detectan niveles de luz roja, verde y el
procesador suma esos nieles para determinar el color y brillo de cada pixel. Sin importer
si un senxor de pixel detecta rojo, verde o azul, detecta infrarrojo. Puesto que los 3
sensores de color de piexeles detectan infrarrojo, la cmara mezcla los colores juntos, lo
que resulta en blanco.
Infra significa abajo, luego infrarrojo significa abajo del rojo. El nombre se refiere a que
la frecuencia de las ondas de luz infrarroja es menor que la de las ondas de luz roja.
Longitudes de ondaIR y sus usos: La longitud de onda que transmite nuestro LED IR es
980 nm, y es la misma que detecta nuestro receptor. Esta longitud de onda esta en el rango
del infrarrojo cercano, que es de 2000 a 10,000 nm, y algunas longitudes de onda en este
rango se usan para los visores de visin noctura y sensado de temperatura por IR.
Rena las partes en la Lista de partes usando la Figura 7-4 para ayudarle a
identificar los receptores infrarrojos, LEDs y las partes de ensamble del escudo.
Page 224 Robtica con el Boe-Bot
Lista de partes:
Figura 7-4
(2) receptores IR
Partes Nuevas
(2) LEDs IR (transparentes) Usadas en
(2) Ensambles de escudos este Captulo
para LEDs IR
(2) Resistencias, 220 Receptor IR
(rojo-rojo-cafe) (arriba)
(2) Resistencias, 1 k
(cafe-negro-rojo) LED IR
(enmedio)
Ensamble de
escudo IR
LED (abajo)
Revise la Figura 7-5 para asegurarse que ha seleccionado los LEDs infrarrojos y
no los fototransistores. El LED infrarrojo tiene un domo plastic ms alto y mas
redondeado y se muestra a la derecha de la Figura 7-5.
Vdd P2
1 k
IR
P9 LED
220
Vss Vss
Page 226 Robtica con el Boe-Bot
15 14 Vdd 13 12
(916) 624-8333
Red www.parallax.com Rev B
Black www.stampsinclass.com
X4 X5
Vdd Vin Vss
Vdd Vin Vss X3
X3 Left Left
P15
P15 P14
P14 P13
P13 P12
P12 P11
P11 P10
P10 P9 anode
P9 anode P8 leads
P8 leads P7
P7 P6
P6 P5
P5 P4
P4 P3
P3 P2
+
P2
+ P1
P1 P0
P0 X2
X2
Board of Education Right Right
Rev C 2000-2003 HomeWork Board
Solo toma 2 lneas de cdigo para probar la presencia o ausencia de un objeto usando un
circuto de deteccin IR de objetos. He aqu un ejemplo para averiguar si un objeto est en
frente del circuito de deteccin IR izquierdo del robot Boe-Bot.
FREQOUT 8, 1, 38500
irDetectLeft = IN9
El comando FREQOUT 8, 1, 38500 hace que vare la brillantez del LED IR, hacindose
ms brillante y atenundose 38500 veces por segundo. Lo hace durante 1 ms; luego,
irDetectLeft = IN9 guarda la salida de los receptores IR en una variable. La salida del
detector sera alta si no detecta IR de 38.5 kHz reflejado por un objeto, o bajo si lo
detecta. Entonces el valor de IN9 que se copia en la variable irDetectLeft sera 1 si no
se detecta objeto, 0 si se detecta.
DO
FREQOUT 8, 1, 38500
irDetectLeft = IN9
Correccin de Problemas
Si la Terminal de Depuracin no despliega los valores esperados, ntente esta lista:
Una seal FREQOUT contiene dos componentes de onda senoida con dos frecuencias
diferentes. Una componente de la frecuencia es Freq1. La segunda componente de la
frecuencia es 65536 Freq1.
Cuando el comando FREQOUT se usa para tocar tonos audibles, la segunda recuencia de la
seal esta siempre muy por arriba de los 20 kHz, que es tpicamente la ms alta que el odo
humano puede detectar.
Ejemplo 1: FREQOUT 4, 2000, 3000 toca un tono de onda senoidal de 3 kHz en el
piezoparlante porque Freq1 es 3000. La seal contiene una segundo componente con una
frecuencia de 65536 3000 = 62536 Hz, pero el odo humano no puede detectarla. Puesto
que 65536 62536 = 3000, podra tocar el mismo tono con FREQOUT 4, 2000, 62536.
An cuando Freq1 est ahora muy afuera del rango del odo humano, la segunda seal es
3 kHz, entonces obtendr el mismo tono en su piezoparlante.
Ejemplo 2: FREQOUT 8, 1, 38500 hace que la brillantez del LED vare a una tasa de
38500 Hz de tal forma que el receptor IR puede detectarla. La seal creada tambin
contiene una segunda onda senoidal con una frecuencia de 65536 38500 = 27036 Hz,
pero esa seal no tiene efecto en el receptor IR.
Page 230 Robtica con el Boe-Bot
Lista de partes:
(2) LEDs Rojos
(2) Resistencias, 220 (rojo-rojo-caf)
P10 P1
220 220
Figura 7-9
Red Red
LED LED LEDs Indicadores
izquierdo y derecho
Vss Vss
Navegando con Luces Frontales Infrarrojas pgina 231
To Servos To Servos
15 14 Vdd 13 12
anode
lead Red
(916) 624-8333
www.parallax.com Rev B
Black www.stampsinclass.com
Vdd X4 Vin X5 Vss Vdd Vin Vss
X3 X3
P15 P15
P14
anode P14
P13 P13
lead
P12 P12
anode
P11 P11
lead anode
P10 P10 lead
P9 P9
P8 P8
P7 P7
P6 + P6 +
P5 P5
P4 P4
P3 P3
P2 Board of Education P2
P1 P1
P0 P0
X2
HomeWork Board
X2
Rev C 2000-2003
Probando el Sistema
Hay muy pocos componentes involucrados en este sistema, y esto incrementa la
posibilidad de un error de conexiones. Por eso es importante tener un programa de
prueba que le indique lo que los detectores infrarrojos estn sensando. Puede usar este
programa para verificar que todos los circuitos estn trabajando antes de desconectar el
Boe-Bot de su cable de programacin y probar otros objetos.
Verifique que el LED cercano a cada detector emite luz cuando el detector
detecta un objeto. Si uno o ambos LEDs parecen no trabajar, revise su cableado
y su programa.
DEBUG CLS,
"IR DETECTORS", CR,
"Left Right", CR,
"----- -----"
DO
FREQOUT 8, 1, 38500
irDetectLeft = IN9
FREQOUT 2, 1, 38500
irDetectRight = IN0
IF (irDetectLeft = 0) THEN
HIGH 10
ELSE
LOW 10
ENDIF
IF (irDetectRight = 0) THEN
HIGH 1
ELSE
LOW 1
ENDIF
PAUSE 100
LOOP
Navegando con Luces Frontales Infrarrojas pgina 233
Olfateando Interferencia IR
Si ha notado que su Boe-Bot le hace saber que detect algo an cuando nada estaba en el
rango, puede significar que una luz cercana est generando alguna luz IR a una
frecuencia cercana a 38.5 kHz. Si intenta tener un concurso o demostracin del Boe-Bot
bajo una de estas luces, sus sistemas infrarrojos podran tener una ejecucin muy pobre.
Lo ultimo que cualquiera quiere es que su robot no se desempee como se anunci en una
demostracin pblica, asi es que asegrese revisar cualquier prospecto de area de
demostracin con este programa olfateador de interferencia IR con antelacin.
Puede usar un control remoto para generar interferencia IR sobre casi cualquier equipo.
TVs, VCRs, CD/DVD y proyectores, todos usan el mismo tipo de detectores IR que tiene en
su Boe-Bot ahora. Igualmente, los remotes que usa para controlar estos dispositivos todos
usan la misma clase de LED IR que est en su Boe-Bot para transmitir mensajes al
detector IR en su TV, VCR, CD/DVD, etc.
DO
LOOP
Siempre use este IrInterferenceSniffer.bs2 para asegurarse que cualquier area donde
est usando el Boe-Bot esta libre de interferencia infrarroja.
Lista de partes:
Necesitar algunas partes extra para esta Actividad.
HIGH 1
STOP
El comando STOP se usa aqu en vez de END, puesto que END pondra al BASIC Stamp en
modo de baja energa.
FREQOUT 2, 1, 38500
irDetectRight = IN0
Las declaraciones IFTHEN fuerno modificadas para que vean las variables que guardan
las detecciones IR de objetos en vez de las entradas de los filamentos.
IF (irDetectLeft = 0) y (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
Page 238 Robtica con el Boe-Bot
DO
FREQOUT 8, 1, 38500 ' Guarda valores deteccion IR en
irDetectLeft = IN9 ' variables bit.
FREQOUT 2, 1, 38500
irDetectRight = IN0
Turn_Right:
FOR pulseCount = 0 TO 20 ' Vuelta a la der, aprox 90-grados.
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
Su Turno
Modifique RoamingWithIr.bs2 para que los detectores IR de objetos sean
checados en una subrutina.
Dentro del DOLOOP, los comandos FREQOUT son usados para enviar una seal IR de 38.5
kHz a cada LED IR. Inmediatamente despus de haberse enviado la seal IR de 1 ms, una
variable bit guarda el estado de la salida IR. Esto es necesario, porque si espera un tiempo
mayor al de un commando, el detector IR regresar a no detectado (estado de 1), sin
importar si detect un objeto.
FREQOUT 8, 1, 38500
irDetectLeft = IN9
FREQOUT 2, 1, 38500
irDetectRight = IN0
Antes de repetirse DOLOOP, la ltima cosa por hacer es entregar pulsos a los servos.
Note que el comando PAUSE ya no es 20. En vez de ello, es 15 puesto que alrededor de 5
ms se toman para checar los LEDs IR.
PULSOUT 13,pulseLeft ' Aplica el pulso.
PULSOUT 12,pulseRight
PAUSE 15
Su Turno
Salve FastIrRoaming.bs2 como FastIrRoamingYourTurn.bs2.
Use los LEDs para indicar que el Boe-Bot ha detectado un objeto.
Intente modificar los valores a los que pulseLeft y pulseRight estn establecidos
para que el Boe-Bot haga todo a media velocidad.
To Servos
15 14 Vdd 13 12
Red
Figura 7-11
X4 X5
Black
Detectores IR
Vdd Vin Vss de objetos
X3
P15
dirigidos abajo
P14
P13
para buscar
P12
P11 una cada
P10
P9
P8
P7 Vista superior
P6
P5
P4
(izquierda);
P3
P2 + vista lateral
P1
P0
(derecha).
X2
Board of Education
Rev C 2000-2003
Navegando con Luces Frontales Infrarrojas pgina 243
Materiales Recomendados:
(1) Rollo de cinta elctrica de aislar plstica negra, (19 mm) de ancho.
(1) Hoja de cartulina 22 x 28 pulgadas (56 x 71 cm).
22 (56 cm)
Figura 7-12
22 (56 cm)
Orilla de cinta Elctrica
Simulando la orilla de la
mesa
Si intenta una mesa despus de tener xito con la ruta de cinta elctrica:
Recuerde seguir los mismos pasos que sigui antes de correr el Boe-Bot en la
ruta de cinta elctrica!
Asegrese de ser el guardian de su Boe-Bot. Est listo al navegar su Boe-Bot por la mesa:
Siempre est listo a recoger su Boe-Bot de arriba al acercarce a la orilla de la
mesa que navegue. Si el Boe-Bot intent continuar fuera de la orilla, recgalo
antes de que caiga. De lo contrario, su Boe-Bot podra ser un No-Bot!
Su Boe-Bot pudiera detectar si usted est en su linea de visin. Su programa
actual no tiene forma de diferenciarlo de la mesa abajo y quiz intente continuar
al frente y fuera de la orilla de la mesa. Entonces, mantngase fuera de la lnea
de vision de su detector.
chequeo de los detectores, pero tan pronto como una condicin de cada sea detectada,
quiz quiera que su Boe-Bot tome varios pulsos para girar antes de checar los detectores
de nuevo.
Solo porque est haciendo pulsos multiples en una maniobra evasiva, no significa que
tenga que regresar al estilo de navegacin con filamentos. En vez de ello, puede agregar
una variable pulseCount que puede usar para establecer el nmero de pulsos a entregar
para una maniobra. El comando PULSOUT puede ser colocado dentro de un ciclo
FORNEXT que ejecute FOR 1 TO pulseCount pulsos. Para 1 pulso al frente,
pulseCount puede ser 1, para diez pulsos a la izquierda, pulseCount puede ser fijado en
10, etc.
LOOP
Puesto que este programa is una versin modificada de FastIrRoaming.bs2, solo los
cambios al programa son discutidos aqu.
Se agrega un ciclo FORNEXT al programa para controlar cuntos pulsos se entregan cada
vez a travs de la Rutina Perincipal (DOLOOP). Dos variables son agregadas, loopCount
funciona como un ndice para un ciclo FORNEXT y pulseCount es usado como el
argumento EndValue.
loopCount VAR Byte
pulseCount VAR Byte
Navegando con Luces Frontales Infrarrojas pgina 247
Su Turno
Puede experimentar estableciendo diferentes valores pulseLeft, pulseRight, y
pulseCount dentro de la declaracin IFTHEN. Por ejemplo, si el Boe-Bot no gira lo
Page 248 Robtica con el Boe-Bot
suficiente, puede de hecho seguir la orilla de la cinta elctrica. Pivotear hacia atrs en vez
de rotar en su sitio puede llevar a comportamientos interesantes.
Modifique AvoidTableEdge.bs2 para que siga la orilla del curso delimitado por
la cinta elctrica ajustando los valores pulseCount para que el Boe-Bot no gire
muy lejos de la orilla.
Experimente con el pivoteo como una manera de hacer que el Boe-Bot viaje
dentro del permetro en vez de seguir la orilla.
RESUMEN
Este Captulo cubri una tcnica nica para la deteccin infrarroja de objetos que usa el
LED infrarrojo encontrado en controles remotos comunes y el detector infrarrojo
encontrado en TVs, CD/DVD y otros dispositivos controlados por estos remotos. Al
incidir infrarrojo en el camino del Boe-Bot y buscando su reflejo, se puede lograr la
deteccin de objetos sin entrar en contacto fsico con el objeto. Se usan circuitos LED
infrarrojo para enviar una seal de 38.5 kHz con la ayuda de una propiedad del comando
FREQOUT llamada armnica, que es inherente a las seales sintetizadas digitalmente.
Un programa indicador de deteccin de infrarrojo fue presentado para prueba remota (no
conectada a la PC) de los pares IR LED/detector. Tambin se present un programa
olfateador de interferencia infrarroja para ayudar a detectar interferencia que puede ser
generada por algunas lmparas fluorescentes. Puesto que las seales enviadas por los
detectores IR son muy similares a las seales enviadas por los filamentos,
RoamingWithWhiskers.bs2 fue adaptado a los detectores infrarrojos. Se present un
programa que checa los detectores IR entre cada pulso de servo para demostrar una forma
de navegar de mayor desempeo sin colisionar con los objetos. Este programa fue
entonces modificado para evitar la orilla de un rea delimitada por cinta elctrica. Puesto
que la cinta elctrica absorbe IR, enmarcar una hoja grande de cartulina emula la
condicin de cada que es vista en la orilla de una mesa sin peligro para el Boe-Bot.
Preguntas
1. Cul es la frecuencia de la seal enviada por FREQOUT 2, 1, 38500? Cul
es el valor de la segunda frecuencia enviada por ese comando? Qu tanto
tiempo se envan estas seales? A qu pin I/O debe ser conectado el circuito
LED IR a fin de emitir esta seal?
Navegando con Luces Frontales Infrarrojas pgina 249
Ejercicios
1. Modifique una lnea de cdigo en en IrInterferenceSniffer.bs2 para que
monitoree solo uno de los detectores IR.
2. Explique la function de pulseCount en AvoidTableEdge.bs2.
Proyectos
1. Disee una aplicacin Boe-Bot para que se quede quieto hasta que agite su mano
enfrente de el, luego empiece a navegar.
2. Disee una aplicacin Boe-Bot para que gire lentamente en su lugar hasta que
detecte un objeto. Tan pronto lo detecte se fije a el y lo siga. Este es un clsico
comportamiento SumoBot.
3. Disee una aplicacin Boe-Bot para que navegue, pero si detecta interferencia
infrarroja, suene la alarma brevemente, y luego contine navegando. Esta alarma
debe ser diferente a la alarma de batera baja.
Soluciones
Q1. 38.5 kHz es la frecuencia de la seal. La segunda frecuencia = 65536 38500 =
27036 Hz. Las seales son enviadas por 1 milisegundo, y el LED IR debe ser
conectado al Pin I/O 2.
Q2. El comando que guarda la salida del detector en una variable. Por ejemplo,
irDetectLeft = IN9.
Q3. Una seal baja significa que fu detectado IR a 38.5 kHz, por lo tanto, un objeto
fue detectado. Una seal alta signidfica que no se detect IR a 38.5kHz,
entonces, no hay objeto.
Q4. Electrcamente hablando, para ambos LEDs rojo e infrarrojo, una resistencia ms
pequea causar que el LED brille ms intensamente. Una resistencia mayor
resulta en LEDs atenuados. En trminos de resultados, LEDs IR mas brillantes
hacen posible detectar objetos que estn ms lejos.
IF (IN0 = 0) THEN
E2. El programa establece esta variable en 1 cuando est tomando un pulso al frente.
De esa manera, al avanzar el Boe-Bot, checa si hay condicin de cada entre cada
pulso. Cuando la detecta, ejecuta una vuelta por un cierto nmero de pulsos, que
tambin estn determinados por el valor de la variable pulseCount.
Main:
' Ciclo hasta que algo es detectado
DO
GOSUB Check_IRs
LOOP UNTIL (irDetectLeft = 0) OR (irDetectRight = 0)
' Ahora empieza navegacion -- este codigo es de FastIrRoaming.bs2
DO
IF (irDetectLeft = 0) y (irDetectRight = 0) THEN
pulseLeft = 650 ' Ambos detectan
pulseRight = 850 ' Retrocede
ELSEIF (irDetectLeft = 0) THEN ' Izquierda detecta
pulseLeft = 850 ' Vuelta a la derecha
pulseRight = 850
ELSEIF (irDetectRight = 0) THEN ' Derecha detecta
pulseLeft = 650 ' Vuelta a la izquierda
pulseRight = 650
Navegando con Luces Frontales Infrarrojas pgina 251
Check_IRs:
FREQOUT 8, 1, 38500 ' Checa Detectores IR
irDetectLeft = IN9
FREQOUT 2, 1, 38500
IrDetectRight = IN0
RETURN
Main:
Check_IRs:
FREQOUT 8, 1, 38500 ' Checa Detectores IR
irDetectLeft = IN9
FREQOUT 2, 1, 38500
IrDetectRight = IN0
RETURN
Main:
DO
GOSUB Roam
GOSUB Sniff
LOOP
Figura 8-1
La sensibilidad del filtro
depende de la frecuencia de la
portadora
Otra forma de visualizarlo es que la frecuencia ms sensible detectar los objetos que
estn ms lejos, mientras que las frecuencias menos sensibles solo pueden ser usadas para
detectar objetos cercanos. Esto simplifica la deteccin de distancia. Escoja 5 frecuencias,
luego prubelas de la ms a la menos sensible. Intente primero a la frecuencia ms
sensible. Si un objeto es detectado, revise y va si la siguiente frecuencia ms sensible
hace deteccin. Dependiendo de la frecuencia que haga que el infrarrojo reflejado deje de
ser visible al detector IR, puede inferir la distancia.
Object
15 14 Vd d 13 12
Red
Black
X4 X5
Vdd Vin Vs s
X3
P15
P14
P13
P12
at any
Boar d of Education
20 00 -2 00 3
Frequency
Quiz se pregunte porqu el valor de la zona 4 es 37.5 kHz y no 38.5 kHz. La razn de
porqu no son los valores que esperara basado en la grfica de % de sensibilidad es
porque el comando FREQOUT transmite una seal lgeramente ms poderoas a 37.5 kHz de
lo que lo hace a 38.5 kHz. Las frecuencias listadas en la Figura 8-2 son frecuencias a las
programar el BASIC Stamp para determinar la distancia a un objeto.
A fin de probar el detector IR a cada frecuencia, necesitar usar FREQOUT para enviar 5
frecuencias diferentes y probar cada una para averiguar si el detector IR puede ver el
objeto. Los pasos entre cada frecuencia no son lo suficientemente parejos como para usar
la opcin STEP de un ciclo FORNEXT. Podra usar DATA y READ, pero sera poco
manejable. Puede usar 5 comandos FREQOUT diferentes, pero eso sera un desperdicio de
espacio de cdigo. En vez de esto, el major camino para guardar una lista de valores corta
que desee usar en secuencia es un comando llamado LOOKUP. La sintaxis del comando
LOOKUP es:
LOOKUP Index, [Value0, Value1, ValueN], Variable
Figura 8-3
Ejemplos
de salida al
probar la
deteccin
de
distancia
DEBUG CLS,
" OBJECT", CR,
"FREQUENCY DETECTED", CR,
"--------- --------"
Page 260 Robtica con el Boe-Bot
DO
distancia = 0
FOR freqSelect = 0 TO 4
PAUSE 100
NEXT
DEBUG CR,
"--------- --------", CR,
"Zone ", DEC1 distance
LOOP
DEBUG CLS,
"IR objeto ZONE", CR,
"Left Right", CR,
"----- -----"
DO
GOSUB Get_Distances
GOSUB Display_Distances
LOOP
Page 262 Robtica con el Boe-Bot
Get_Distances:
distanceLeft = 0
distanceRight = 0
FOR freqSelect = 0 TO 4
FREQOUT 8,1,irFrequency
irDetectLeft = IN9
distanceLeft = distanceLeft + irDetectLeft
FREQOUT 2,1,irFrequency
irDetectRight = IN0
distanceRight = distanceRight + irDetectRight
PAUSE 100
NEXT
RETURN
Display_Distances:
La distancia es solo una clase de valor de la que los robots y otra maquinaria autmata es
responsable. Cuando una mquina est diseada para mantener automticamente un
Control de Robot con Deteccin de Distancia pgina 263
Un control de ciclo cerrado es un mtodo comn de mantener niveles y trabaja muy bien
para ayudar al Boe-Bot a mantener su distancia a un objeto. Hay muchas clases diferentes
de controles de ciclo cerrado. Algunas de las ms comunes son control de histresis,
proporcional, integral, y derivativo. Todos estos tipos de control se presentan a detalle en
el texto de Control de Proceso de Stamps in Class, listado en el Prefacio.
La mayora de las tcnicas de control pueden implementarse con pocas lneas de cdigo
en PBASIC. De hecho, la mayora de los ciclos de control proporcional como el mostrado
en la Figura 8-4 se reducen a solo una lnea de cdigo PBASIC. Este diagram es llamado
diagram de bloques, y describe los pasos del proceso de control proporcional que el Boe-
Bot usar para medir distancia con su LED y detector IR derecho y ajustar su posicin
para mantener la distancia con su servo derecho.
Center pulse width
750
Output
Figura 8-4
Error = -2 adjust Diagrama de
-70 +
+ Kp X error +
Bloques de
- 35 X -2 Control
Proporcional
para Servo
Measured right Right servo Derecho y
distance = 4 output
680 Detector IR de
objetos
System
Echemos un vistazo a los nmeros en la Figura 8-4 para aprender cmo trabaja el control
proporcional. Este ejemplo particular es para el LED/detector IR derecho y servo
derecho. El valor de configuracin es 2, lo que quiere decir qu queremos que el Boe-Bot
mantenga una distancia de 2 entre s mismo y cualquier objeto que detecte. La distancia
medida es 4, lo cual est muy lejos. El error es el valor de configuracin menos la
Page 264 Robtica con el Boe-Bot
distancia medida, esto es 2 4 = -2. Esto se indica por los smbolos dentro del crculo a la
izquierda. Este crculo es llamado nodo de suma. Despus, el error alimenta a un bloque
operador. Este bloque muestra que el error ser multiplicado por un valor llmado
constante proporcional (Kp). El valor de Kp is 35. La salida del bloque muestra un
resultado de -2 35 = -70, que es llamado el ajuste de salida. Este ajuste de salida se
introduce a otro nodo de suma, y esta vez se suma al ancho de pulso central del servo de
750. El resultado es un ancho de pulso de 680 que har que el servo gire en sentido a la
derecha a aproximadamente de su velocidad. Esto hace que la rueda derecha del Boe-
Bot ruede al frente, hacia el objeto. Esta correccin se aplica al sistema en general, que
consiste en el Boe-Bot y el objeto, que estaba a una distancia medida de 4.
La siguiente vez a travs del ciclo la distancia medida puede cambiar, pero eso est bien
porque, sin importar la distancia medida, este ciclo de control calcular un valor que
causar que el servo se mueva para corregir cualquier error. La correccin siempre es
proporcional al error, que es la diferencia entre el valor de configuracin y las distancias
medidas.
Haciendo algunas sustituciones, last res ecuaciones de arrib pueden ser reducidas a la
siguiente, que le dar el mismo resultado.
Sustituyendo los valores del Ejemplo, podemos ver que la ecuacin an trabaja:
Salida al servo izq = (Valor de configuracin de distancia izq Distancia medida izq ) Kp
+ Ancho de pulso central
= ((2 4) 35) + 750
= 820
El resultado de este ciclo de control es un ancho de pulso que hace que el servo izquierdo
gire en sentido a la izquierda aproximadamente de su velocidad. Esto tambin es un
pulso al frente para la rueda izquierda. La idea de retroalimentar es que la salida del
sistema vuelva a ser muestreada por el Boe-Bot sombra tomando otra medicin de. Luego
el ciclo de control se repite una y otra vezaproximadamente 40 veces por segundo.
Center pulse width
750
Since the valores -35, 35, 2, y 750 all have names, its definitely a good place for some
constant declarations.
Kpl CON -35
Kpr CON 35
SetPoint CON 2
CenterPulse CON 750
Con estas declaraciones de constantes en el programa, puede usar el nombre Kpl en lugar
de -35, Kpr en lugar de 35, SetPoint en lugar de 2, y CenterPulse en lugar de 750.
Despus de estas declaraciones de constantes, los clculos del control proportional ahora
se ven as:
pulseLeft = SetPoint - distanceLeft * Kpl + CenterPulse
pulseRight = SetPoint - distanceRight * Kpr + CenterPulse
reflejarn dondequiera que estas constantes sean usadas. Por ejemplo, cambiando la
directive Kpl CON de -35 a -40, todas las instancias de Kpl en todo el programa cambian
de -35 a -40. Esto es extremdamente til para experimentar y ajustar los ciclos de
control proporcional izquierdo y derecho.
DO
GOSUB Get_Ir_Distances
GOSUB Send_Pulse
LOOP
Get_Ir_Distances:
distanceLeft = 0
distanceRight = 0
FOR freqSelect = 0 TO 4
LOOKUP freqSelect,[37500,38250,39500,40500,41500], irFrequency
FREQOUT 8,1,irFrequency
irDetectLeft = IN9
distanceLeft = distanceLeft + irDetectLeft
FREQOUT 2,1,irFrequency
irDetectRight = IN0
distanceRight = distanceRight + irDetectRight
NEXT
RETURN
Send_Pulse:
PULSOUT 13,pulseLeft
PULSOUT 12,pulseRight
PAUSE 5
RETURN
Control de Robot con Deteccin de Distancia pgina 269
GOSUB Get_Ir_Distances
Las siguientes dos lneas de cdigo implementan los clculos del control proporcional
para cada servo.
' Calcula salida proporcional.
GOSUB Send_Pulse
Su Turno
La Figura 8-6 muestra un Boe-Bot lder seguido por un Boe-Bot sombra. El Boe-Bot
lder est corriendo una version modificada de FastIrRoaming.bs2, y el Boe-Bot sombra
est corriendo FollowingBoeBot.bs2. El contro proportional hace del Boe-Bot sombra un
muy fiel seguidor. Un Boe-Bot lder puede encabezar una cadena de 6 o 7 Boe-Bots
sombra. Solo agregue los paneles laterales y compuerta posterior del Boe-Bot al resto de
los Boe-Bots sombra en la cadena.
Figura 8-6
Boe-Bot lder (izq) y Boe-
Bot sombra (der)
Si es parte de una clase, monte paneles de papel en la cola y ambos lados del
Boe-Bot lder como se muestra en la Figura 8-6.
Si no es parte de una clase (y solo tiene un Boe-Bot) el vehculo sombra seguir
a un pedazo de papel o su mano tan bien como sigue al Boe-Bot.
Remplace las resistencias de 1 k que conectan a P2 y P8 del Boe-Bot lder a
los LEDs IR con resistencias de 470 o 220 .
Programe al Boe-Bot lder para evitar objetos usando una version modificada de
FastIrRoaming.bs2, renombrado SlowerIrRoamingForLeadBoeBot.bs2.
Haga estas modificaciones a SlowerIrRoamingForLeadBoeBot.bs2:
o Incremente todos los argumentos Duration de PULSOUT que ahora son
650 a 710.
o Reduzca todos los argumentos Duration de PULSOUT que ahora son 850 a
790.
El Boe-Bot sombra debe corer FollowingBoeBot.bs2 sin modificaciones.
Control de Robot con Deteccin de Distancia pgina 271
6- 9VD C 15 1 4 V dd 13 1 2
9 V dc
R ed
B a t t ery
Bl ack
X4 X5
Pw r
V dd V ni VVssss
V ss V ss X3
S TA
n
i MPS
P0 P1
C
LAS
S
P2 P 3 P 15
P4 P 5 P 14
P6 P 7 P 13
TM
P8 P 9 P 12
1 P 10 P 11 P 11
S out Vn
i
P 12 P 13 P 10
Sn
i V ss
P 14 P 15 P 9
AT N R st
V dd V ni P 8
V ss V dd X1 P7
P0 P 15
P6
P1
U1 P 14 P5
P2 P 13 P4
P3 P 12 P3 +
P4
P 11 R eset P2
P5 P 10
P1
P6 P9 P0
P7 P8 X2
0 1 2 B o a rd o f E d uc a t i o n
w w w . st a mp si nc al ss .c om R ev C 2 000 -2 003
Start
+ P2
P2 R ese t P 11 P4
P3
P3 P 12 P3
P4
P4 P 13 P2
P5
P5 P 14
U1 P1
P6
P6 P 15 P0
P7
P7 X1 V dd V ss
Vin P P88 Vd d R st ATN
P 1 5 P9
P9 P1 4 V ss Sni
P 1 3 P1
P 100 P1 2 Vni S out
P 11 P1
P 111 P1 0
P 9 P1 P8 1
P 122 TM
P 7 P1P 133 P6
P 5 P1P 144 P4
SS
P 3 P1P 155 P2 in
C LA
S
P1 P0 ST
AMP
V ss X3
X3 Vs s
V ss V ni Vd d Pw r
X5 X4
lc k
Ba
B a t e ry
R ed
9 Vd c
1312 V dd 1514 6- 9V DC
Finish
28 (71 cm)
Page 272 Robtica con el Boe-Bot
Materiales Requeridos
(1) Hoja de cartulina, dimensiones aproximadas: 22 X 28 pulgadas (56 X 71 cm)
(1) Rollo de cinta elctrica de vinil negra, de ancho (19 mm)
Probando la Tira
Apunte sus detectores IR de objetos hacia abjo y afuera como se muestra en la
Figura 8-8 (Figura 7-11 de la pgina 242 repetida aqu por comodidad).
X4 X5
Vdd Vin Vss
Figura 8-8
detectores IR
de objetos
dirigidos hacia
abajo para
+
buscar la tira
Board of Education
Rev C 2000-2003
Asegrese de que su curso de cinta elctrica tape est libre de interferencia por
luz fluorescente. Va Olfateando Interferencia IR en la pgina 233.
Remplace las resistencias de 1 k en serie con los LEDs IR con resistencias de
2 k para recortar el alcance visual del Boe-Bot.
Corra DisplayBothDistances.bs2 de la pgina 275. Mantenga su Boe-Bot
conectado a su cable de programacin de tal forma que pueda ver las distancias
deplegadas.
Comience por colocar su Boe-Bot de tal forma que vea directamente a la
cartulina como se muestra en la Figura 8-9.
Control de Robot con Deteccin de Distancia pgina 273
Verifique que sus lecturas de zona indicant que un objeto es detectado en una
zona muy cercana. Ambos sensores deben darle una lectura de 1 o 0.
9 V dc
B a t t ery
6- 9VD C 15 1 4 V dd 13 1 2
R ed
Bl ack
Figura 8-9
X4 X5
superior
9 V dc
B a t t ery
6- 9VD C 15 1 4 V dd 13 1 2
R ed
Bl ack
Figura 8-10
X4 X5
Superior
Page 274 Robtica con el Boe-Bot
Figura 8-11
Prueba para nmero de
zona alta vista lateral
Electrical Tape
Ahora, coloque el Boe-Bot en el curso para que sus ruedas estn a ambos lados
de la lnea negra. Los detectores IR deben estar viendo ligramente hacia afuera
(va la Figura 8-12). Verifique que la distancia que leen ambos detectores IR es
0 o 1 de nuevo. Si las lecturas son mayores, quiere decir que necesitar ser
apuntados ligramente mas hacia afuera, lejos de la orilla de la cinta.
Cuando mueve el Boe-Bot en cualquier direccin indicada por la doble-flecha, uno u otro
detector IR de objetos se enfocar en la cinta elctrica. Cuando hace esto, las lecturas pra
el detector de objetos que ahora est sobre la cinta elctrica debe incrementar a 4 o 5.
Recuerde que si mueve el Boe-Bot hacia su izquierda, los detectores derechos deben
incrementar su valor y si mueve el Boe-Bot hacia su derechoa, los detectores izquierdos
deben mostrar el valor ms alto.
Control de Robot con Deteccin de Distancia pgina 275
Adjuste sus detectores IR de objetos hasta que el Boe-Bot pase esta ltima
prueba. Entonces estar listo para tratar seguir la tira.
15 1 4 13 1 2
X4 X5
6- 9VD C V dd
9 V dc
R ed
B a t t ery
Bl ack
X4 X5
Pw r
V dd V ni V ss
V ss V ss X3
S
n
i
TAMP
S
P0 P1
C P2 P 3 P 15
Board of Education
Rev C 2000-2003
Corra el programa.
Coloque su Boe-Bot en la posicin Start mostrada en la Figura 8-13. El Boe-
Bot debe esperar all hasta que coloque su mano en frente de sus detectores IR de
objetos. Entonces avanzar. Cuando pase la tira de inicio retire su mano y debe
empezar a seguir la tira. Cuando ve la tira Finish, debe detenerse y esperar all.
Asumiendo que puede obtener lecturas de distancia de 5 de la cinta elctrica y 0
de la cartulina, valores constantes SetPoint de 2, 3, y 4 deben trabajar. Intente
diferentes valores SetPoint y haga notas del desempeo de su Boe-Bot en el
camino.
6- 9VD C 15 1 4 V dd 13 1 2
9 V dc
R ed
B a t t ery
Bl ack
X4 X5
Pw r
V dd V ni VVssss
V ss V ss X3
S TA
n
i MPS
P0 P1
C
LAS
S
P2 P 3 P 15
P4 P 5 P 14
P6 P 7 P 13
TM P8 P 9 P 12
1 P 10 P 11 P 11
S out Vni P 12 P 13 P 10
Sni V ss P 14 P 15 P 9
AT N R st V dd V ni P 8
V ss V dd X1 P7
P0 P 15 P6
P1 U1 P 14 P5
P2 P 13 P4
P3 P 12 P3 +
P4
P 11 R eset P2
P5 P 10 P1
P6 P9 P0
P7 P8 X2
0 1 2 B o a rd o f E d uc a t i o n
w w w . st a mp si nc al ss .c om R ev C 2 000 -2 003
Start
22 (56 cm)
Figura 8-13
Curso de
seguimiento de la
Tira.
200 0- 200 3
R ev C w w w .s t am ps ni cl a ss. c om
B o a rd o f E d u ca t i o n 0 1 2
X2 P8 P7
P0
P0 P9 P6
P1
P1 P 10 P5
+ P2
P2 R ese t P 11 P4
P3
P3 P 12 P3
P4
P4 P 13 P2
P5
P5 P 14
U1 P1
P6
P6 P 15 P0
P7
P7 X1 V dd V ss
V i n P8
P8 Vd d R st ATN
P1 5 PP99 P1 4 V ss Sni
P 1 3 P1
P 100 P1 2 Vni S out
P 11 P1
P 111 P1 0
P 9 P1 P8 1
P 122 TM
P 7 P1P 133 P6
P 5 P1P 144 P4
SS
P 3 P1P 155 P2 in
C LA
S
P1 P0 ST
AMP
V ss X3
X3 Vs s
V ss V ni Vd d Pw r
X5 X4
lc k
Ba
B a t e ry
R ed
9 Vd c
1312 V dd 1514 6- 9V DC
Finish
28 (71 cm)
DO
GOSUB Get_Ir_Distances
GOSUB Send_Pulse
LOOP
Get_Ir_Distances:
distanceLeft = 0
distanceRight = 0
FOR freqSelect = 0 TO 4
LOOKUP freqSelect,[37500,38250,39500,40500,41500], irFrequency
FREQOUT 8,1,irFrequency
irDetectLeft = IN9
distanceLeft = distanceLeft + irDetectLeft
FREQOUT 2,1,irFrequency
irDetectRight = IN0
distanceRight = distanceRight + irDetectRight
NEXT
RETURN
Page 278 Robtica con el Boe-Bot
Send_Pulse:
PULSOUT 13,pulseLeft
PULSOUT 12,pulseRight
PAUSE 5
RETURN
Todos los recursos discutidos en esta Actividad pueden accesarse a travs de la pgina
www.parallax.com/go/Boe-Bot.
Concursos y Retos
Interesado en un concurso? La pgina www.parallax.com/go/Boe-Bot pgina tambin
tien ligas a reglas de concursos que van de simples a complejos y muy retadores.
El nico element adicional que requiere es un control remoto universal para TV, que es
un objeto comn en muchos hogares y puede comprarse a buen precio a travs de muchas
tiendas as como a travs de www.parallax.com (#020-00001).
RESUMEN
El barrido de frequencia fue presentado como una manera de determinar la distancia
usando el LED y el detector IR del Boe-Bot. FREQOUT fue usado para enviar seales IR a
frequencias en el rango de 37.5 kHz (sensibilidad mxima) a 41.5 kHz (sensibilidad
mnima). La distancia fu determinada siguiendo cul frecuencia caus que el detector IR
reportara que un objeto fue detectado y cul no. Puesto que no todas las frecuencias
fueron separadas por el mismo valor, el comando LOOKUP fue presentado como una forma
simple de usar la secuencia de conteo entregada por un ciclo FORNEXT para indexar
listas secuenciales de nmeros.
Se presentaron sistemas de control junto con un control de ciclo cerrado. El control
proporcional en un sistema de ciclo cerrado es un algortmo donde el error es
Control de Robot con Deteccin de Distancia pgina 281
multiplicado por una constante de proporcionalidad para determinar la salida del sistema.
El error es la salida medida del sistema restada del valor de configuracin. Para el Boe-
Bot, ambos salida del sistema y valor de configuracin se expresaron en trminos de
distancia. El BASIC stamp fue programado en PBASIC para operar ciclos de control para
ambos servos izquierdo y derecho y los detectores de distancia. Al volver a muestrear la
distancia y ajustar la salida al servo antes de enviar pulsos a los servos, el ciclo de control
hizo que el Boe-Bot respondiera al movimiento de objetos. El Boe-Bot fue capaz de usar
un control proporcional para fijar y seguir objetos, y tambin lo us para fijar y seguir
una tira de cinta elctrica negra.
Preguntas
1. Cul sera la sensibilidad relative del detector IR si usa FREQOUT para enviar
una seal de 35 kHz? Cul es la sensibilidad relativa con una seal de 36 kHz?
2. Considere el extracto de cdigo que sigue. Si la variable index es 4, qu
nmero ser colocado en la variable prime en este comando LOOKUP? Qu
valores guardar prime cuando index es 0, 1, 2, y 7?
LOOKUP index, [2, 3, 5, 7, 11, 13, 17, 19], prime
Ejercicios
1. Liste la sensibilidad del detector IR para cada frecuencia en kHz mostrada en la
Figura 8-1.
2. Escriba un segmento de cdigo que haga el barrido de frecuencia solo para 4
frecuencias en vez de 5.
3. Haga una lista de verificacin condensada para las pruebas que deben ser
ejecutadas para asegurar un seguimiento fiel a una tira.
Proyectos
1. Cree tipos diferentes de intersecciones de cinta elctrica y programe el Boe-Bot
para navegar a travs de ellas. Las intersecciones pueden ser de 90 a la
izquierda, 90 a la derecha, de 3 y 4 vas. Este involucrar hacer que el Boe-Bot
las reconozca como intersecciones. Cuando el Boe-Bot ejecute
StripeFollowingBoeBot.bs2, el Boe-Bot se quedar quieto en las intersecciones.
La meta es hacer que el Boe-Bot se percate de que no est haciendo nada y salga
de su ciclo de control proporcional.
Pistas: Puede hacer esto creando dos contadores, uno con incrementos de 1 cada
vez que pase a travs del DOLOOP, y el otro que solo incremente cuando el Boe-
Bot entregue un pulso alo frente. Cuando el contador que incremente cada vez a
travs del DOLOOP llegue a 60, use IFTHEN para revisar cuntos pulsos al
frente fueron aplicados. Si se aplicaron menos de 30 pulsos al frente, el Boe-Bot
probablemente est atorado. Recuerde reiniciar ambos contadores a cero cada
vez que el contador de ciclo llegue a 60. Luego de que el Boe-Bot reconozca que
est en una interseccin, necesita moverse a la parte superior de la interseccin,
luego retroceder y distinguir si ve cinta elctrica o fondo blanco a la izquierda y
derecha, luego hacer la vuelta de 90 correcta. Use un movimiento pre-
programado para girar 90, sin control proporcional. Para intersecciones de 3 y 4
vas, el Boe-Bot puede dar vuelta a izquierda o derecha.
2. Proyecto avanzado Opcional - Disee su propio concurso para solucionar
laberintos y programe el Boe-Bot para resolverlo!
Control de Robot con Deteccin de Distancia pgina 283
Soluciones
Q1. La sensibilidad relativa a 35 kHz es 30%. Para 36 kHz, es 50%.
Q2. Cuando index = 4, prime = 11.
index = 0, prime = 2
index = 1, prime = 3
index = 2, prime = 5
index = 7, prime = 19
Q3. Las expresiones son evaluadas de izquierda a derecha. Para cambiar esto, use
parentesis para cambiar el orden.
Q4. Use la directiva CON.
BoilingPoint CON 100
DO
GOSUB Get_Ir_Distances ' Lee sensores IR
GOSUB Update_LEDs ' Indica linea blanca/negra
LOOP
Navigate_Intersection:
' Al frente hasta que ambos sensores vean blanco en la intersection.
DO
pulseLeft = 850: pulseRight = 650 ' Al frente
GOSUB Send_Pulse
GOSUB Get_Ir_Distances
GOSUB Update_LEDs
LOOP UNTIL (distanceLeft <=2) y (distanceRight <=2)
' Ahora retrocede hasta que un detector vea negro. Vuelta izq y der
' veran negro en 1 detector. 3 o 4 vas veran negro ambos,giraran
' hacia cualquiera que el Boe-Bot vea primero (aleatorio).
DO
pulseLeft = 650: pulseRight = 850 ' Retrocede
GOSUB Send_Pulse
GOSUB Get_Ir_Distances
GOSUB Update_LEDs
LOOP UNTIL (distanceLeft >=4) OR (distanceRight >=4)
RETURN
Check_For_Intersection:
' Mantiene chequeo del # de pulsos vs pulsos al frente. Si hay menos
' de 30 pulsos al frente por un total de 60 pulses, es muy probable
' que el robot esta trabado en una interseccion.
SELECT numPulses
CASE < 60
IF (pulseLeft > CenterPulse) THEN
fwdPulses = fwdPulses + 1 ' Cuenta pulsos al frente
ENDIF '(frente es cualquier pulse > 750)
CASE > 60
numPulses = 0 ' Reestablece contadores a cero
fwdPulses = 0 ' (Puede hacerlo en caso =60 pero
ENDSELECT ' no dejaria disfrutar Make_Noise)
RETURN
Make_Noise:
' Hace un tono incremental, proporcional al numero de pulsos al frente
FOR counter = 1 TO fwdPulses STEP 3
FREQOUT 4, 100, 3800 + (counter * 10)
NEXT
RETURN
Control de Robot con Deteccin de Distancia pgina 287
Update_LEDs:
' Usa LEDs para indicar si los detectores estan viendo blanco o negro.
' Blanco = Off, Negro = On. Negro es una lectura de distancia > o = 4.
IF (distanceLeft >= 4) THEN HIGH LeftLED ELSE LOW LeftLED
IF (distanceRight >= 4) THEN HIGH RightLED ELSE LOW RightLED
RETURN
Stop_Quickly:
' esto detiene las ruedas para que el Boe-Bot no pase de largo.
PULSOUT 13, 750
PULSOUT 12, 750
PAUSE 20
RETURN
Get_Ir_Distances:
' Lee ambos detectores IR de objetos y calcula la distancia.
' Linea negra da lecturas de 4-5. Superficie blanca da lecturas 0-1.
distanceLeft = 0
distanceRight = 0
FOR freqSelect = 0 TO 4
LOOKUP freqSelect,[37500,38250,39500,40500,41500], irFrequency
FREQOUT 8,1,irFrequency
irDetectLeft = IN9
distanceLeft = distanceLeft + irDetectLeft
FREQOUT 2,1,irFrequency
irDetectRight = IN0
distanceRight = distanceRight + irDetectRight
NEXT
RETURN
Send_Pulse:
' Manda un solo pulso a los servos entre las lecturas IR.
PULSOUT 13,pulseLeft
PULSOUT 12,pulseRight
PAUSE 5 ' PAUSE reducida por las lecturas IR
RETURN
el Paquete de Hardware no se vende como una unidad separada de los Kits (completos)
del Robot Boe-Bot o del Kit de Partes del Boe-Bot.
Una nota para los Educadores: Hay disponibles por cantidad para todas los kits antes
listados; vea la pgina de producto de cada kit en www.parallax.com para detalles.
Adems, la tarjeta BASIC Stamp HomeWork Board est disponible por separado en
paquetes de 10 como una solucin econmica para el uso en clase, a un costo
Page 292 Robtica con el Boe-Bot
Las resistencias que usamos en esta gua tienen tiras coloreadas que dicen el valor de
resistencia que tiene. Hay una diferente combinacin de color para cada valor de
resistencia.
Puede haber una cuarta tira que indica la tolerancia de la resistencia. La tolerancia se
mide en por ciento, indica qu tan lejos est el valor real de la resistencia respecto al
valor etiquetado. Esta tira puede ser dorada (5%), plateada (10%) o sin tira (20%). Para
las actividades en este libro, la tolerancia de una resistencia no es relevante, no as su
valor.
Dgito Color
0 Black
1 Brown Tolerance
Code
2 Red
Figura B-1
3 Orange
Cdigos de
4 Yellow Color de
5 Green First Digit Number of Zeros Resistencia
6 Blue Second Digit
7 Violet
8 Gray
9 White
La primera tira es amarilla, el dgito ms a la izquierda es un 4.
La segunda tira es violeta, el segundo dgito es un 7.
La tercera tira es caf o uno. Quiere decir que se agrega un cero a la derecha de
los primeros dos dgitos.
Los circuitos ejemplo en este texto son construdos conectando componentes como
resistencias, LEDs, bocinas y sensores en estos pequeos sockets. Los componentes son
conectados uno al otro con los sockets de la tableta. Suministrar energa a su circuito
con electricidad desde las terminales de energa que estn en los sockes negros a lo largo
de la parte superior, marcados Vdd, Vin, y Vss. Los sockets negros a la izquierda estn
marcados P0, P1, hasta P15. Estos sockets le permiten conectar su circuito a los pines de
entrada/salida del BASIC Stamp.
Vdd Vin Vss
X3
P15
P14
P13 Figura B-2
P12 Area de Prototipos
P11
P10
P9 Las terminales de energa
P8
P7 (sockets negros arriba), pines
P6 de acceso E/S (sockets negros
P5
P4
laterales), y tableta (sockets
P3 blancos).
P2
P1
P0
X2
se hace una conexin elctrica. Las lneas tambin pueden usarse para conectar los
componentes a fuentes de tensin. Vdd, Vin, y Vss tienen todos smbolos. Vss
corresponde a la terminal negative de la fuente o batera para la tarjeta Board of
Education o tarjeta BASIC Stamp HomeWork Board. Vin es la terminal positive de la
bacteria y Vdd est regulada a +5 volts.
Veamos un ejemplo que usa un esquemtico para conectar las partes mostras en la Figura
B-3. Para cada una de estas partes se muestra el dibujo de la parte arriba del smbolo
esquemtico.
Gold
Silver
or Figura B-3
Blank
Dibujos de Parte y Smbolo
Yellow Brown esquemtico
Violet
+ LED(izquierda) y resistencia de
470 (right)
470
LED
La Figura B-4 muestra un ejemplo del esquemtico de un circuito a la izquierda y a la
derecha el dibujo del circuito que puede ser construido usando este esquemtico. Note
como el esquemtico muestra que una terminal de la lnea de sierra que denota una
resistencia est conectado al smbolo para Vdd. En el dibujo, una de las dos terminales de
la resistencia est conectada en uno de los sockets etiquetados Vdd. En el esquemtico, la
otra terminal del smbolo de resistencia est conectado por una lnea a la terminal + del
smbolo LED. Recuerde, la lnea indica que 2 partes estn elctricamente contectadas. En
el dibujo, esto se consigue conectando la otra parte de la resistencia dentro de los sockets
de la misma lnea de 5 en donde se tambin se conecta la terminal + del LED. Esto
conecta elctricamente las dos terminales. La otra terminal de LED se muestra conectada
al smbolo Vss en el esquemtico. En el dibujo, la otra terminal del LED est conectada
dentro de los socketa marcados Vss.
Page 296 Robtica con el Boe-Bot
He aqu un ejemplo ms complejo que involucra dos partes adicionales, una resistencia
de 1 k, un fototransistor y un capacitor. Los smbolos esquemticos y dibujos de los
componentes con los que no est familiarizado se muestran en la Figura B-6. Las
terminales de fotoransistor estn etiquetadas C, B, y E. La terminal B es ptica y por eso
no tiene conexiones elctricas. La terminal C es el pin ms largo y la terminal E es el pin
ms corto que salen del encapsulado plstico por la cara plana en uno de sus lados.
Luz
B
Colector
C
Smbolo Esquemtico de
Capacitor 0.1 F y dibujo de
Parte
Figura B-7
Esquemticos de
Resistencia,
fototransistor y
Capacitor
Figura B-8
Diagrama de cableado
de Resistencia,
fototransistor, y
Capacitor
Cara plana y
pin corto
Tenga en mente que los diagramas de conexiones aqu presentados como Soluciones a los
esquemticos no son las Soluciones UNICAS de estos esquemticos. Por ejemplo, la
Figura B-9 muestra otra solucin al esquemtico recin discutido. Siga las conexiones y
convnzase de que satisface el esquemtico.
Figura B-9
Diagrama de cableado
Control de Resistencia,
Horn fototransistor y
Flat Spot, Capacitor
Shorter Pin
Note la colocacin
alternativa de las partes.
Concursos de Navegacin Boe-Bot pgina 299
Propsito
El propsito de la competencia de ejercicio de piso es dar a los inventores de un robot la
oportunidad de mostrar sus robots u otros aparatos tcnicos.
Reglas
Las reglas de esta competencia son muy simples. Se identifica un rea plana de 10 pies
por 10 pies, preferentemente con algunos lmites fsicos. A cada concursante le sern
dados un mximo de 5 minutos en esta rea para demostrar lo que puede hacer su robot.
Como siempre, cualquier robot que pueda daar el rea o presentar un dao al pblico no
ser permitido. Los robos no necesitan ser autnomos, pero se recomienda ampliamente.
La votacin es determinada por la audiencia, ya sea aplaudiendo (el aplauso ms alto
determinado por un jurado), o algn mecanismo de votacin.
Objetivo
Construir un robot autnomo que inicie en el rea A (en la posicin S), viaja al rea
B (completamente por una lnea), luego viaja al rea C (completamente por la lnea),
luego regresa al rea A (a la posicin F). El robot que hag esto en la menor cantidad
de tiempo (incluyendo bonos) gana. El robot debe entrar a las reas B y C para
calificar. El curso exacto del viaje no se conocer hasta el da de la competencia, pero
tendr las 3 a previamente descritas.
Habilidades probadas
La habilidad de reconocer una ayuda navegacional (la lnea) y usarla para llegar a una
meta.
Curso Ejemplo
Todas las mediciones en el curso de ejemplo son aproximadas. Hay una lnea slida
dividiendo el rea A del rea T en la posicin F. Esto indica dnde termina el
curso. La lnea es negra, aproximadamente de 2.25 pulgadas de ancho y espaciada
aproximadamente a 2 pies de las paredes. Todas las curvas tienen un radio de al menos
un pie y a lo ms tres pies. Las paredes son de 3 pulgadas de alto y rodean el curso. El
piso es blanco y est hecho ya sea de papel o Tyvek de Dupont. Tyvek es un fuerte
plastic usado en sobres de correo y construccin de casas.
Figura D-1
Curso ejemplo de competicin
Puntaje
El marcador de cada concursante es calculado tomando el tiempo necesario para
completar el curso (en segundos) menos el 10% por cada cumplimiento. El concursante
con el menor puntaje ganara.
Concursos de Navegacin Boe-Bot pgina 301
("Comando de inicio" significa que el robot inicia por un comando no tctil externo, ste
podra ser, por ejemplo, un sonido o un comando de luz.)
Propsito
El gran laberinto pretende presentar una prueba de habilidades navegacionales para un
robot autnomo. La puntuacin es hecha de tal forma que favorece al robot que sea
brutalmente rpido o que pueda apreender el laberinto despus de una pasada. El objetivo
para un robot que es colocado a la entrada del laberinto es encontrar su camino a travs
del laberinto y llegar a la salida en la menor cantidad de tiempo.
Caractersticas fsicas
El laberinto est construdo de madera triplay de . Las paredes son de
aproximadamente 24 pulgadas de alto y estn pintadas en colores primarios brillantes.
Las paredes estn dispuestas en una cuadrcula con espaciamiento de 24 pulgadas.
Debido al espesor de la madera y las limitaciones en la precisin, los corredores pueden
ser tan estrechos como 22 pulgadas. El laberinto puede ser de hasta 20 pies cuadrados,
pero puede ser menor, dependiendo del espacio disponible para el evento.
El laberinto ser puesto ya sea sobre alfombra de tipo industrial o sobre el piso slido
(dependiendo de donde se lleve a cabo el evento). El laberinto estar cubierto y su robot
no tendr que ser a prueba de lluvia; sin embargo, puede ser expuesto a diferentes
temperaturas, viento y condiciones de luz. El laberinto tiene una forma clsica de 2
dimensiones: hay una ruta desde el inicio hasta el final y no hay islas en el mismo. A la
entrada como la salida estn localizadas sobre paredes exteriores. Los laberintos pueden
ser solucionados siguiendo ya sea la pared izquierda o la pared derecha. El laberinto es
cuidadosamente diseado para que no haya ventajas y se sigue la pared derecha o la
pared izquierda.
Page 302 Robtica con el Boe-Bot
Puntuacin
Cada robot debe hacer 3 carreras por el laberinto. El robot con el menor tiempo es el
ganador. El mayor tiempo permitido por carrera es 10 minutos. Si un robot no puede
terminar en ese tiempo, la carrera se detiene y el robot recibe un tiempo de 10 minutos.
Sin ningn robot encuentra la salida del laberinto, el que haya llegado ms lejos ser el
ganador, determinado as por el jurado.
Logstica
Cada robot har una carrera, prosediendo hasta que todos hayan intentado cruzar el
laberinto. Cada robot entonces hace una segunda carrera a travs del laberinto y luego los
robot hacen todos la tercera carrera. El jurado decidir a discrecin si un contendiente
deber retrasar su carrera debido a dificultades tcnicas. Un robot puede recordar lo que
encontr en una carrera previa para tratar de mejorar su tiempo (mapear el laberinto de la
carrera) y puede usar esta informacin mientras que el robot lo haga por s mismo. No se
permite configurar manualmente al robot a travs de hardware o softwer para mapear el
laberinto.
Las partes y sus cantidades son sujetas a cambio sin aviso previo. Las partes pueden diferir de com se
muestran en esta imagen. Si tiene preguntas respecto a su kit, enve por favor un email a
[email protected].