Você está na página 1de 358

Qu es un Microcontrolador?

Gua del Estudiante

VERSION 3.0

Pgina 2 Qu es un Microcontrolador?

GARANTA
Parallax garantiza sus productos contra cualquier defecto en materiales y manufactura por un periodo de 90 das partir de la fecha de recepcin del producto. Si usted descubre un defecto Parallax podr reparar o reemplazar la mercanca o regresarle el costo de su compra. Antes de regresar el producto a Parallax, llame un nmero de Regreso Autorizado de Mercanca (RMA). Escriba este nmero en la parte externa de la caja para regresar la mercanca a Parallax. Por favor incluya lo siguiente con la mercanca que regresa: Su nombre, su nmero telefnico, direccin y descripcin del problema. Parallax le regresar su producto o su reemplazo utilizando el mismo mtodo utilizado para mandar el producto a Parallax.

GARANTIA DE REGRESO DE SU DINERO EN EL PERIODO DE 14 DIAS


Si dentro de los 14 das a partir de la fecha de recepcin del producto usted encuentra que el producto no cumple sus necesidades usted lo puede regresar y le regresaremos ntegramente su dinero. Parallax le regresar el precio de compra del producto, se excluyen los gastos de embarque y empaque. Esta garanta no es vlida si se ha alterado o daado el producto. Vea la seccin arriba mencionada de la garanta para conocer las instrucciones para regresar el producto a Parallax.

DERECHOS DE AUTOR Y PATENTE DE MARCAS


Esta documentacin tiene Derechos de Autor de Parallax de 2003 a 2009. Al obtener o descargar una copia impresa de este documento o de software est de acuerdo en usarla solamente para productos Parallax. No se permiten cualquier otros usos y pudieran representar una violacin a los Derechos de Autos de Parallax, legalmente castigables de acuerdo con los Derechos de Autos Federales o por las Leyes de Propiedad Intelectual. Cualquier duplicado de este documento para fines comerciales est expresamente prohibido por Parallax. En cambio se permite total o parcialmente el duplicado para usos educativos y se condiciona a que el material se use solamente con productos Parallax., el estudiante slo tiene que pagar el costo del duplicado..Verifique con Parallax su aprobacin antes de hacer el duplicado total o parcial de cualquier documentacin. BASIC Stamp, Board of Education, Boe-Bot, Stamp in Class y SumoBor son marcas registradas de Parallax Inc. tambin lo son HomeWork Board, PING, Parallax, el logotipo de Parallax, Propeller y Spin. Si decide usar cualquiera de estas palabras en su material electrnico o impreso, necesita especificar que este registro pertenece a Parallax. Otros nombres de marcas o productos tienen los derechos de autos de sus respectivos dueos.

ISBN 9781928982524 3.0.0-09.12.09-HKTP RECLAMO DE RESPONSABILIDADES.


Parallax Inc no es responsable de daos especiales, incidentales o de consecuencia que resulten de cualquier violacin de la garanta, o bajo cualquier teora legal , incluyendo perdidas de beneficios, caducidad, intangibles o reemplazo del equipo o propiedad, o cualquier costo de recuperacin, reprogramacin o reproduccin de cualquier tipo de datos almacenados o usados con productos Parallax. Parallax tampoco es responsable de cualquier dao personal incluyendo la vida o la salud que resulten del uso de cualquier de nuestros productos. Usted es 100% responsable de su aplicacin BASIC Stamp, sin importar cuanta amenaza represente para la vida.

ERRATAS
Hemos realizado un gran esfuerzo para garantizar la exactitud de nuestros textos, sin embargo estos pueden tener errores. Ocasionalmente, una fe de erratas con un lista de errores y correcciones conocidas de un texto se enviar con la pagina del producto relacionado en la liga WWW.PARALLAX.COM. Si usted encuentra un error por favor mndelo al correo EDITOR@PARALLAX.COM

ndice
Prefacio ....................................................................................................................... 7
Caractersticas de la version 3.0 ....................................................................................7 Usuarios..........................................................................................................................8 Foros de ayuda...............................................................................................................8 Recursos para educadores.............................................................................................9 Traducciones en otros idiomas.....................................................................................10 Datos del autor .............................................................................................................10 Contribuidores especiales ............................................................................................10

Captulo 1 : Inicio...................................................................................................... 11
Actualmente cuntos microcontroladores utilizamos? ...............................................11 El BASIC Stamp2 es un modulo nuevo con microcontrolador .....................................11 Inventos maravillosos realizados con los microcontroladores BASIC Stamp...............12 Hardware y software.....................................................................................................15 Actividad #1 : Instalacin del software..........................................................................15 Actividad #2 : Uso del archivo ayuda para ajustes del hardware...............................21 Resumen ......................................................................................................................23

Captulo 2 : Encendiendo y Apagando Luces ....................................................... 27


Luces Indicadoras.........................................................................................................27 Energizando un diodo emisor de luz (LED) ..................................................................27 Actividad #1 : Construccion y verificacion de un circuito con LED ...............................28 Actividad #2 : Control de apag/enc con el BASIC Stamp .............................................36 Actividad #3 : Conteo y repeticin ................................................................................42 Actividad #4 : Construyendo y verificando un segundo circuito con LED.....................46 Actividad #5 : Control de un LED bicolor usando la direccin de la corriente ..............50 Resumen ......................................................................................................................56

Captulo 3 : Entrada Digital Botones Push ......................................................... 61


Los encuentras en calculadoras, juegos de mano y aparatos......................................61 Recibiendo versus mandando seales high y low........................................................61 Actividad #1 : Verificando un botn push con un circuito LED .....................................61 Actividad #2 : Leyendo un botn push con el BASIC Stamp........................................65 Actividad #3 : Control con botn push de un circuito LED............................................70 Actividad #4 : Dos botones push controlando dos circuitos LEDs................................73 Actividad #5 : Prueba del tiempo de reaccin de un temporizador ..............................78 Resumen ......................................................................................................................87

Captulo 4 : Controlando el Movimiento ................................................................ 93


Microcontrol del movimiento .........................................................................................93 Seales encendido/apagado y movimiento del motor ..................................................93 Presentando al servomotor...........................................................................................93 Actividad #1 : Conectando y verificando el servo .........................................................95 Actividad #2 : Programa de prueba del control del servo ...........................................101 Actividad #3 : Control del tiempo de retencin del servo............................................112

Pgina 4 Qu es un Microcontrolador?

Actividad #4 : Controlando la posicin con su computadora ......................................119 Actividad #5 : Convirtiendo posicin a movimiento ....................................................127 Actividad #6 : Botnes push Para controlar el servo ...............................................130 Resumen ....................................................................................................................134

Captulo 5 : Midiendo Rotacin............................................................................. 141


Ajustando perillas y monitoreando mquinas .............................................................141 El resistor variable atrs de la perilla - el potenciometro ............................................141 Actividad #1 : Midiendo y verificando el circuito potenciometro .................................143 Actividad #2 : Midiendo la resistencia al medir el tiempo ...........................................145 Actividad #3 : Leyendo la perilla con el BASIC Stamp ...............................................152 Actividad #4 : Controlando un servo con un potenciometro .......................................158 Resumen ....................................................................................................................166

Captulo 6 : Indicadores Digitales......................................................................... 171


El indicador digital de todos los dias...........................................................................171 Qu es un indicador de 7 segmentos?.....................................................................171 Actividad #1 : Construyendo y verificando el indicador LED de 7 segmentos............173 Actividad #2 : Controlando el indicador LED de 7 segmentos....................................177 Actividad #3 : Mostrando digitos.................................................................................180 Actividad #4 : Mostrando la posicin de un dial..........................................................187 Resumen ....................................................................................................................192

Captulo 7 : Midiendo Luz...................................................................................... 196


Dispositivos que contienen sensores de luz...............................................................196 Conociendo el fototransistor .......................................................................................199 Actividad #1 : Construyendo y verificando el medidor de luz .....................................200 Actividad #2 : Ajustando los eventos de luz ...............................................................204 Actividad #3 : Graficando mediciones de luz (opcional) .............................................213 Actividad #4 : Medidor sencillo de luz.........................................................................215 Actividad #5 : Salida conmutada (ON/OFF) del fototransistor....................................227 Actividad #6 : Por diversion Mida luz exterior con un LED ......................................237 Resumen ....................................................................................................................241

Captulo 8 : Frecuencia y Sonido.......................................................................... 248


Su da y los beeps electrnicos ..................................................................................248 MIcrocontroladores, bocinas y seales apagado/ encendido.....................................248 Actividad #1 : Construyendo y verificando la bocina ..................................................249 Actividad #2 : Sonidos en accin................................................................................251 Actividad #3 : Notas musicales y canciones sencillas ................................................256 Actividad #4 : Msica con microcontrolador ...............................................................261 Actividad #5 : Tonos telefnicos con RTTTL ..............................................................274 Resumen ....................................................................................................................286

Captulo 9 : Bloques de Construccin Electrnicos .......................................... 291


Los pequeos chips negros........................................................................................291

Expanda sus proyectos con circuitos integrados perifericos ......................................292 Actividad #1 : Control del flujo de corriente con un transistor.....................................293 Actividad #2 : Presentando el potenciometro digital...................................................296 Resumen ....................................................................................................................305

Captulo 10 : Realizando sus Propios Inventos .................................................. 311


Aplique lo que usted ya conoce en otras partes y componentes ...............................311 Haciendo el prototipo de un sistema de micro seguridad...........................................312 Actividad #1 : De la idea a la demonstracin del concepto ........................................312 Actividad #2 : Construya y verifique individualmente cada circuito ............................316 Actividad #3 : Organice las tareas de sus cdigos en piezas pequeas....................317 Actividad #4 : Documente su cdigo! ........................................................................321 Actividad #5 : Dele a su aplicacin maravillosa nuevas funciones.............................323 Actividad #6 : Como resolver diseos dificiles............................................................324 Actividad #7 : Qu sigue?.........................................................................................332 Resumen ....................................................................................................................335

Anexo A : Lista de Partes y Opciones de Kits .................................................... 337


Opciones completas de kits........................................................................................338

Anexo B : Ms sobre Electricidad ........................................................................ 339


Actividad adicional: Ley de ohm, voltaje y corriente ...................................................340

Anexo C : Resumen del Formato RTTTL ............................................................. 347 ndice Alfabetico..................................................................................................... 349

Pgina 6 Qu es un Microcontrolador?

Prefacio Pgina 7

Prefacio
Este libro responde la pregunta Que es un Microcontrolador? y ensea a los estudiantes la manera de disear sus propios trabajos e inteligente inventos utilizando el modulo del microcontrolador Basic Stamp de Parallax. Las actividades de este texto son varios experimentos agradables e interesantes diseados para despertar la imaginacin de los estudiantes en movimiento, luz, sonido y retroalimentacin del tacto para explorar nuevos conceptos. Estas actividades sumergen a los estudiantes a una diversidad de principios bsicos en los campos de programacin de computadoras, electricidad y electrnica, matemticas y fsica. Muchas de estas actividades facilitan la coordinacin de mente y manos al disear prcticas como las que utilizan los ingenieros y tcnicos en la creacin y aplicacin de mquinas modernas utilizando partes comunes y baratas. Qu es un Microcontrolador? es el texto de iniciacin en los Programas de Clases de esta compaa. Para ver la serie completa, que incluye titulo de Robtica con el con el robot Boe.Bot, de sensores inteligentes y sus aplicaciones, Control de Procesos, y ms, visiste la pgina www.parallax.com/Education.

CARACTERSTICAS DE LA VERSION 3.0


Esta es la primera revisin del libro desde 2004. Los cambios ms importantes son: Cambio de los fotoresistores de sulfuro de cadmio por sensores de luz que cumplen la norma RoHS que sern ms utilizados en los futuros diseos. Esto implic reescribir los captulos 7 y 10, y algunos ajustes en otros captulos. Mejoras en las actividades e ilustraciones de Control de Servos del Captulo 4. Mover la seccin de Ajustes y Pruebas del Captulo 1, y los anexos de Hardware y Busqueda de Fallas del Archivo Ayuda. Esto se hizo para reforzar las conexiones de Hardware del puerto Serial y USB, y otras conexiones de programacin ya que nuestros productos y tecnologas siguen creciendo. Esto permite la actualizacin dinmica del material del Hardware y Bsqueda de Fallas. Eliminacin del CD de Parallax, que ya no se incluyen en nuestros kits, reduciendo desperdicios y asegurandonos que los clientes descargan el software de Basic Stamp ms reciente as como los drivers USB disponible para el funcionamiento de sus sistemas. Ademas, se han corregido la fe de erratas de la versin 2.2. El material conserva los mismos objetivos, los mismos conceptos e instrucciones de programacin y se incluyen los nuevos conceptos. Finalmente, para facilidad en su uso, ha cambiado los nmeros de pginas para que la pgina del PDF y los nmeros de pgina fsicos sean los mismos.

Pgina 8 Qu es un Microcontrolador?

USUARIOS
Este texto est diseado como puerta de entrada a la tecnologa y el diseo con una curva de fcil aprendizaje para programacin de dispositivos incrustados. El libro est organizado y lo pueden usar varios tipos de estudiantes y autodidactas. Muchos estudiantes de bachillerato pueden realizar los ejemplos de este libro guiados por las instrucciones indicadas de un istructor supervisor. En el otro lado del espectro, los estudiantes de los primeros semestres de ingeniera pueden verificar su comprensin y habilidad de resolver problemas con preguntas, ejercicios y proyectos (con solucin) en el resumen de cada captulo. Los estudiantes autodidactas pueden trabajar a su propio ritmo y obtener ayuda a travs de los foros de Stamps in Class abajo mencionados.

FOROS DE AYUDA
Parallax mantiene foros gratuitos moderados por nuestros clientes, los cuales cubren una variendad de temas: El Propeller Chip analiza temas relacionados con el Microcontrolador Propeller multincleo y una lnea de productos de Herramientas de Desarrollo. El Basic Stamp. Estudia las ideas de los proyectos, el soporte y temas relacionados para todos los modelos del Basic Stamp. El Microcontroller SX. Proporciona asistencia tcnica para todos los productos del chip SX incluyendo al Compilador SX/B y la Herramienta SX-Key. Sensores. Estudia la gran variedad de sensores de Parallax y sus interfaces con el microcontrolador de Parallax. Stamps en Clase. Aqu se localizan los materiales educativos de estudiantes, maestros y clientes as como sus proyectos escolares. Robotics. Aque se encuentran los Robots de Parallax y de clientes contruidos con procesadores y sensores de Parallax. El Sandbox. Contiene temas relacionados con el uso de productos Parallax que no se tratan en otros forums. Proyectos Terminados. Aqu puedes mandar tu proyecto terminado que realizaste con productos Parallax. Desarrollo de Juegos Propeller y Sistema Hydra. Aqu encuentras el anlisis y la asistencia tcnica para el Kit de Desarrollo de Juegos HYDRA relacionados con la programaci del microcontrolador Propeller.

Prefacio Pgina 9

RECURSOS PARA EDUCADORES


Tenemos una gran variedad de recursos para ayudar a los educadores.
Stamps in Class Mini Projects

Como complemento a nuestros libros, tenemos un banco de proyectos para el saln de clases. Cada Mini Proyecto tiene todos los Cdigos Fuente. diseados para involucrar a los estudiantes, explicaciones Como Trabaja, esquemticos y diagramas de alambrado o fotos del dispositivo para que los use el estudiante. Algunos proyectos tienen un video demostrativo, para promover el auto estudio de estudiantes que deseen profundizar la electrnica y la programacin. Adems incluimos la liga de internet Stamps in Class de Mini Proyectos en www.parallax.com/Education.
Cursos para educadores.

Son cursos prcticos, intensivos de 1 o 3 das para instructores impartidos por Ingenieros de Parallax, o maestros con experiencia que estn usando los materiales educativos de Parallax en sus salones de clases. Para detalles de Cursos para educadores visite: www.parallax.com/Education
Forum Parallax para Educadores

En este foro gratuito y privado los educadores pueden hacer preguntas y compartir sus experiencias al usar los productos Parallax en sus salones de clases. Aqu tambin encuentra Materiales de Educacion Complementarios. Las instrucciones para inscribirse estn en education@parallax. Com. Se requiere que muestre que usted es educador.
Materiales de Educacin Complementarios

Estos libros educacionales continen un conjunto de preguntas no publicadas y las soluciones que han mandado a nuesto Forun Parallax para Educadores. Aqu invitamos a los educadores a que copien y modifiquen este material y lo usen como una preparacin rpida de tareas, acertijos y pruebas. Las presentaciones en Power Point y los materiales de prueba preparados por otros educadores aqu nos la pueden mandar.
Permisos de Derechos de Autor para uso en Educacin

No se requiere permiso para bajar, duplicar e instalar el software de Parallax para uso en educacin de Productos Parallax y lo pueden usar en computadoras de escuelas o la de su hogar. Nuestros textos de Clase Stamp y los Manuales Stamp en Basic estn disponibles y gratuitos en descargas de PDF, y pueden duplicarse, y el nico costo para sus estudiantes

Pgina 10 Qu es un Microcontrolador?

son las copias fotostticas. Los archivos PDF no estan encriptados y puede seleccionar los textos o imgenes para preparar en Power Point sus propias presentaciones.

TRADUCCIONES EN OTROS IDIOMAS


Algunos de nuestros textos de clases se han traducido a otros idiomas; estos textos se pueden descargar libremente y estn sujetos a las mismas reglas de derecho de autor de los textos originanales. Para ver la lista completa vaya a la liga Tutoriales y Traducciones de www.parallax.com/education. Estos fueron preparados en coordinacin con el programa Traductores Voluntarios. Si usted est interesado en participar en el programa de Traductores Voluntarios, escriba a translation@parallax.com.

DATOS DEL AUTOR


Andy Lindsay trabaja en Parallax desde 1999, y ha escrito para la compaia ocho libros y varios artculos e informacin de productos. Las ltimas 3 versiones de Qu es un Microcontrolador? se dise y actualiz con las observaciones y retroalimentacin al educator que Andy recolect cuando viajaba por el pas y la capacitacin de Cursos y eventos Parallax para Educadores que imparti en el extranjero. Andy se gradu como ingeniero en Electricidad y Electrnica en la Universidad del Estado de California en Sacramento y es un autor activo que escribe ponencias en el rea de microcontroladores de la curricula de los primeros semestres de ingeniera. Cuando no escribe material educativo, Andy elabora documentos de productos y aplicaciones de Ingeniera en Parallax.

CONTRIBUIDORES ESPECIALES
El equipo de Parallax que prepar esta edicin, es Arstides Alvarez excelente lider del departamento, el diseo de lecciones y escritura tcnica lo hace Andy Lindsay; el diseo del arte lo hace Jen Jabobs, las ilustraciones grficas son de Rich Allred y Andy Lindsay; la revisn tecnica la hizo Jessica Uelmen; la tipografa y el layout lo realiz Stephanie Lindsay. Damos un agradecimiento especial a Ken Gracey, fundador del programa Stamps in Class, y a Tracy Allen y Phil Pilgrim por su contribucin en la seleccin del sensor de luz utilizado en esta versin que reemplaza al fotoresistor de sulfuro de cadmio. Muchas personas contribuyeron al desarrollo de Qu es un Microcontrolador? , a estas personas les estamos agradecidos. Nuevamente Parallax desea agradecer a Robert Ang por la revisin total minuciosa y detallada del original. Tambin agradecemos a los autores de Stamp in Class, Tracy Allen (Aplicacin de sensores) y a Martin Hebel (Control de Procesos) por su revisin y recomendaciones. Andy Lindsay desea agradecer a su pap Marshal y a su cuado Kubilay por sus valiosos consejos musicales y sugerencias.

Inicio Pgina 11

Captulo 1: Inicio
ACTUALMENTE CUNTOS MICROCONTROLADORES UTILIZAMOS?
Un microcontrolador es un tipo de computadora en miniatura que se encuentra en muchos aparatos. Algunos ejemplos de productos comunes de uso cotidiano que contienen microcontroladores se muestran en la figura 1-1. Si estos tienen botones y pantallas digitales lo ms seguro es que tengan como cerebro un microcontrolador programable.

Figura 1-1 Ejemplos cotidianos de aparatos que tienen microcontroladores.

Trat de hacer un lista y cuente cuantos aparatos utiliza en un da normal. Estos son algunos ejemplos, si su radio reloj se apaga, y presiona varias veces en la maana la perilla de su aparato, la primera accin de ese da es interactuar con un microcontrolador. Cuando calienta alimentos en el horno de microondas y hace una llamada con su telfono celular tambin est interactuando con un microcontrolador. Esto solo es el comienzo. Veamos otros ejemplos. Cuando enciende el TV con el control remoto, cuando juega con su Nintendo y cuando usa una calculadora, estos aparatos tienen internamente un microcontrolador que interacta con usted.

EL BASIC STAMP2 ES UN MODULO NUEVO CON MICROCONTROLADOR


El mdulo BASIC Stamp 2 de Parallax que muestra la figura 1-2 tiene un microcontrolador incrustado, es el chip negro ms grande. El resto de los componentes del mdulo BASIC Stamp tambin los encuentra en los aparatos de consumo de uso diario. Todos juntos reciben, correctamente, el nombre de sistema de cmputo incrustado, que se llama en forma abreviada sistema incrustado. Con frecuencia, a estos mdulos se les llama ms comnmente microcontroladores Las actividades de este texto lo guiarn a travs de circuitos construidos similares a los que tienen los aparatos de consumo y los dispositivos de alta tecnologa. Tambin escribir programas de computo que el mdulo BASIC Stamp ejecutar. Estos programas harn que el modulo BASIC Stamp monitoree y controle para que realice funciones tiles.

Pgina 12 Qu es un Microcontrolador?

Figura 1-2 Mdulo del Microcontrolador BASIC Stamp 2.

En este libro BASIC Stamp se refiere al mdulo del microcontrolador BASIC Stamp 2.
El nombre de este mdulo diseado y fabricado por Parallax Incorporated se abrevia como BS2, y es el primero de una serie de mdulos que muestra la figura 1-3. Cada uno de los otros mdulos es ligeramente diferente, e incluyen mayor velocidad, ms memoria, ms funciones o una combinacin de estas caractersticas. Para saber ms de estas caractersticas vaya a la liga de Comparacin de Mdulos BASIC Stamp en www.parallax.com/basicstamp

Figura 1-3 Modelos del BASIC Stamp 2, de izquierda a derecha BS2, BS2e, BS2sx, BS2p24, BS2p40, BS2pe, BS2px

INVENTOS MARAVILLOSOS REALIZADOS CON LOS MICROCONTROLADORES BASIC STAMP


No solamente los aparatos de consumo contienen microcontroladores. Los Robots, la maquinaria, los diseos aeroespaciales y otros dispositivos de alta tecnologa contienen microcontroladores. Veamos algunos ejemplos se fueron creados con mdulos BASIC Stamp. Los robots se han diseado para diversas actividades desde ayudar a los estudiantes a mejorar su aprendizaje de microcontroladores hasta resolver problemas complicados de mecnica. La figura 1-4 muestra 2 ejemplos de robots. En cada uno de estos robots los estudiantes utilizan el BASIC Stamp 2 para leer sensores, controlar motores, y comunicarse con otras computadoras. El robot de la izquierda es el robot de Parallax BoeBot. Los proyectos del libro Robtica con el Boe-Bot los puede realizar usando el Boe-Bot despus de haber trabajado con las actividades de este libro. El de la derecha, llamado

Inicio Pgina 13

ROV submarino (vehculo operado a control remoto) se construy y verific en un programa MATE ((Educacin Marina con Tecnologa Avanzada). El Instituto de Cursos de Verano para profesores. Los operadores ven una pantalla de TV que observa el ROV a travs de una videocmara y la controla con brazos y una laptop. El BASIC Stamp mide profundidad y temperatura, controla el desplazamiento vertical de un motor e intercambia informacin con la laptop. El MATE coordina las competencias ROV regionales e internacionales con estudiantes de niveles medio a superior.
Figura 1-4 Robots educativos. Imagen dell robot de la izquierda ROV Boe-Bot del Instituto de Cursos de Verano para profesores. A la derecha otra imagen y la liga al instituto www.marinetech.org

Otros robots resuelven problemas complicados, como el robot autnomo de vuelos remotos y que se muestra a la izquierda de la figura 1-5. Este robot lo construyeron y verificaron estudiantes de Ingeniera Mecnica de la Universidad de California en Irvine. Utilizaron un mdulo BASIC Stamp para lograr la comunicacin con un Sistema de Posicionamiento Global por Satlite (GPS) para que robot pudiera conocer su posicin y altitud. El BASIC Stamp lee los datos de niveles de los sensores y controla los ajustes del motor para que el robot se mantenga volando correctamente. El robot mecnico multipies de la derecha de la Figura 1-5 lo desarrollaron profesores de la Universidad de Nanyang en Singapure. La tablilla tiene ms de 50 mdulos BASIC Stamp y todos se comunican entre si por medio de una red elaborada que ayuda a controlar y coordinar el movimiento de caja conjunto de piernas. Los robots de este tipo no solamente nos ayudan a comprender mejor los diseos de la naturaleza sino que adems se usan para explorar lugares remotos e incluso en otros planetas.

Pgina 14 Qu es un Microcontrolador?

Figura 1-5 Robots de Investigacin que contienen microcontroladores. A la izquierda se muestra el Robot de Vuelo Autnomo de la Universidad de California en Irvin y a la derecha se muestra el Robot ciempis Proyecto Multipies de la Universidad de Nanyang.

Con ayuda de los microcontroladores, los robots tambin pueden realizar tareas cotidianas, por ejemplo limpiar el pasto. El mdulo BASIC Stamp dentro del robot cortador de pasto que muestra la figura 1-6 le indica cuales son los lmites de esa superficie, y tambin lee los sensores que detectan los obstculos adems de controlar los motores que lo mueven.

Figur 1-6 Mdulo del Microcontrolador de BASIC Stamp 2.

Los microcontroladores tambin se utilizan en proyectos, cientficos, de alta tecnologa y areo espaciales. La Estacin del Tiempo que se muestra a la izquierda de la figura 1-7 se usa para colectar datos ambintales relacionados con el envejecimiento de los arrecifes de coral. El mdulo interno BASIC Stamp colecta estos datos usando una variedad de sensores y almacena la informacin para que los cientficos la procesen posteriormente. El submarino, del centro, es un vehculo de exploracin submarino, y sus propulsores cmaras y luces todos estn controlados por el microcontrolador de BASIC Stamp.. El Cohete mostrado a la derecha fue parte de un concurso para lanzar un cohete privado al espacio. Nadie gano el concurso, pero este cohete casi lo logra! El BASIC Stamp control todos los aspectos de la secuencia de lanzamiento.

Inicio Pgina 15

Figura 1-7 Ejemplos de Microcontroladores en la Industria Ambiental y Areo espacial. A la izquierda tenemos un Sistema Colector de Datos Ecolgicos EME, en el centro una Investigacin Submarina del Instituto Harbor Branch y a la derecha se muestra el lanzamiento de un cohete JP.

Desde aplicaciones caseras comunes hasta aplicaciones cientficas y areo espaciales usted comenzar a aprender los fundamentos de los microcontroladores con proyectos que aqu desarrollaremos. Al trabajar con las actividades de este libro usted experimentar. Y aprender como usar una variedad de bloques de construccin en los cuales se cimientan todos estos inventos de alta tecnologa. Usted construir circuitos para pantallas, sensores y controles de movimiento. Aprender como conectar estos circuitos al mdulo BASIC Stamp 2, y luego escribir programas que haga que controlen pantallas, que colecten los datos de los sensores, y que controlen el movimiento. Con estas actividades aprender conceptos y tcnicas de electrnica y programacin de microcontroladores. A su debido tiempo encontrar el camino para inventar aparatos de sus propios diseos.

HARDWARE Y SOFTWARE
Iniciamos con mdulos microcontroladores de BASIC Stamp similares a los de su PC o laptop. La primer actividad que las personas hacen es desempacar, conectar e instalar y verificar algn software y quiz pueden escribir con algn software de su propiedad usando un lenguaje de programacin. Si esta es la primera vez que usa un mdulo BASIC Stamp usted har actividades semejantes a la arriba mencionadas. Si est usted en clases, es posible que el hardware ya est instalado listo para usarse. Si este esta es su situacin puede que su maestro le de otras indicaciones. Si no es su caso, en este captulo le guiaremos paso a paso para iniciar y poner en marcha el microcontrolador BASIC Stamp.

ACTIVIDAD #1: INSTALACIN DEL SOFTWARE


El Editor BASIC Stamp (versin 2.5 o superior) es el software que usar en la mayora de la actividades y proyectos de este libro. Utilizar este software para escribir programas que el mdulo BASIC Stamp ejecutar. Tambin usar este software para visualizar mensajes que el BASIC Stamp genera y le ayudan a comprender lo que est pensando.

Pgina 16 Qu es un Microcontrolador?

Requerimientos de su PC o laptop

Necesita una PC para ejecutar el software del editor del BASIC Stamp. Los requerimientos de las PC son los siguientes: Microsoft Windwos 2000 o superior. Puerto Serie o USB. Conexin y Explorador de Internet.

Descarga del Software desde Internet

Es muy importante, que siempre que sea posible, use la ltima versin del software editor de BASIC Stamp. El primer paso es ir al sitio web de Parallax y descargue el software. Uso del Buscador web para ir a www.parallax.com/basicstampsoftware (Figura 18)

Figura 1-8 Pgina del sotware del Editor BASIC Stamp en www.parallax.com/basicsta mpsoftware Este es el lugar para descargar la ltima versin de software.

Haga click en el botn Click Here to Download para descargar la ltima versin de software Editor de Windows de BASIC Stamp. (Figura 1-9).

Inicio Pgina 17

Figura 1-9 Pgina del Botn de descarga del editor BASIC Stamp. Haga click en el botn para empezar la descarga.

Se abrir la ventana File Download (descargar archivo) y le preguntar si desea ejecutar o guardar este archivo (Figura 1-10) . Haga click en el botn Save (guardar).

Figura 1-10 Ventana de Descargar Archivo. Haga click en Save y guarde el archivo en su computadora.

Use SAVE IN para escoger el lugar en donde su computadora guardar el archivo de instalacin, finalmente haga click en SAVE (Figura 1-11).

Pgina 18 Qu es un Microcontrolador?

Figura 1-11 Ventana de como.

Guardar

Escoga un lugar para guardar el Instalador de Software en su computadora, luego haga click en Guardar.

Cuando vea Descarga Completa, haga click en el boton Run (Ejecutar). Figura 1-12). Siga los Indicadores que aparecen. Puede ver mensajes del Sistema Operativo que le preguntan que verifique si desea continuar con la instalacin. Diga que Si Desea continuar.

Figura 1-12 Mensaje de Descarga Completa. Haga click en Run (ejecutar) Confirme que s desea continuar.

Se abrir la ventana del Instalador del Editor BASIC Stamp (Figura 1-13). En seguida haga click y siga las indicaciones, aceptando todas por Default.

Inicio Pgina 19

Figura 1-13 Ventana de Instalador del Editor BASIC Stamp. Haga click en Siguiente.

IMPORTANTE: Cuando aparezca el mensaje Instalar Driver USB (Figura 114). Marque la ventanita de Instalacin/Actualizacin Automtica del Driver y de un click en SIGUIENTE.

Figura 1-14 Mensaje del Instalacin del Driver USB. Marque la ventanita de Instalacion Automtica y de click en SIGUIENTE.

Pgina 20 Qu es un Microcontrolador?

Cuando aparezca el mensaje Listo para Instalar el Programa (Figura 1-15), de un clik en el botn Instalar. Puede aparecer un barra de progreso, esto puede durar unos minutos.

Figura 1-15 Listo para Instalar el Programa. Para continuar de un click en Instalar.

En este punto, pudiera aparecer una ventana adicional detrs de la ventana actual mientras se estn actualizando los drivers USB. Esta ventana se cerrar eventualmente cuando termine la instalacion de los drivers. Si usted no ve esta ventana, esto no indica que hay problemas.
Nota sobre los drivers USB ( Drivers USB XE). Los drivers USB que instala por default el Instalador Editor Windows se requiren para usar el hardware de Parallax que se conecta al puerto USB de su PC. Las iniciales VCP significan Puerto de Comunicacin Virtual (Puerto COM Virtual XE) y le permitir que los puertos USB de su computadora vea e intrerprete el hardware de Parallax como un Puerto Serie RS232. Drivers USB para otros Sistemas Operativos. Los drivers USB VCP que se incluyen el el Software del Editor de Windows de BASIC Stamp slo son vlidos para el Sistema Operativo de Windows. En la liga www.parallax.com/usbdrivers encuentra usted mayor informacin.

Cuando la ventana le indica que la instalacin se ha realizado con xito de un click en Terminar (Figura 1-16)

Inicio Pgina 21

Figura 1-16 Instalacin completa del Editor BASIC Stamp. De un click Terminar en

ACTIVIDAD #2: USO DEL ARCHIVO AYUDA PARA AJUSTES DEL HARDWARE
En esta seccin usted utilizar el Archivo de AYUDA del Editor BASIC Stamp. Dentro del Archivo AYUDA usted reconocer las diferencias de las tablillas programables BASIC Stamp disponibles en el programa de Clases, e identificar la que est utilizando. Luego, seguir paso a paso la AYUDA para conectar su hardware a su computadora y verificar los sistemas de programacin del BASIC Stamp.
Ejecucin, por primera vez, del Editor 2.5 BASIC Stamp

Si usted ve el cono del Editor BASIC Stamp en su PC, de doble clik en este cono (Figura 1-17). O de un click en el Menu de Inicio de su PC, en seguida escoga: Todos los programas <Parallax Inc > Editor 2.5 BASIC Stamp > Editor 2.5 BASIC Stamp.

Figura 1-17 Icono del Editor BASIC Stamp D doble click para iniciar el programa.

Pgina 22 Qu es un Microcontrolador?

En la Barra de Herramientas del Editor BASIC Stamp de un click en AYUDA (Figura 1-18), en seguida seleccione Ayuda del BASIC Stamp en el cuadro del menu.

Figura 1-18 Icono del Editor BASIC Stamp D doble click para iniciar el programa. Figura 1-19 Ayuda del Editor BASIC Stamp.

Inicio Pgina 23

De un click en la leyenda de la esquina inferior derecha INICIO DE STAMPS EN CLASE que muestra la figura 1-19. De la Pgina Bienvenido(esquina superior izquierda).
Siguiendo las indicaciones del Archivo AYUDA

Desde aqu, seguir usted las indicaciones del Archivo AYUDA hasta completar las siguientes tareas. Identifique que Tablilla de Desarrollo BASIC Stamp est utilizando. Conecte su Tablilla de Desarrollo a su computadora. Verifique su conexin de programacin. Si es necesario, revise si tiene problemas en su conexin. Escriba su primer programa PBASIC para su BASIC Stamp. Desenergice su hardware cuando todo est hecho.

Cuando haya terminado las actividades del Archivo Ayuda, regrese a este libro y continue con el siguiente resumen ante de pasar al captulo 2.
Que hacer si tengo problemas? Si tiene problemas mientras sigue las indicaciones de este libro o con el Archivo Ayuda, usted tiene las siguientes opciones para obtener Soporte Tcnico. En los forums. Mande un mensaje a nuestro foro gratuito Stamps en Clase en la liga forums.parallax.com Por email. Mande un email a support@parallax.com Por telfono. En Estados Unidos llame sin cobrar al 888-99-STAMP (888-997-8267). Desde otros lugares llame a (916)524-8333. Ms recursos: Vaya a la liga www.parallax.com/support

RESUMEN
Este capitulo lo gui en las siguientes actividades: Una introduccin a algunos aparatos que utilizan microcontroladores. Una introduccin al mdulo BASIC Stamp. Un paseo por algunos inventos interesantes fabricados con mdulos BASIC Stamp. Donde obtener el sofware Editor del mdulo BASIC Stamp que usar precisamente en los experimentos de este libro Como instalar el sofware Editor del mdulo BASIC Stamp. Como usar la ayuda del Editor y el Manual del BASIC Stamp.

Pgina 24 Qu es un Microcontrolador?

Una introduccin a los mdulos BASIC Stamp, a la Plataforma de Eduacacin y la plataforma de Trabajo en Casa. Como ajustar el hardware del BASIC Stamp. Como verificar su software y hardware. Como escribir y ejecutar un programa en PBASIC. Utilizar las instrucciones DEBUG Y END. Usar el carcter de control CR y el formato decimal DE. Una breve introduccin del cdigo ASCII. Como desconectar la energa de su Tablilla de Experimentos cuando todo termin.

Preguntas

1. Qu es un Microcontrolador? 2. El mdulo BASIC Stamp es un microcontrolador o contiene un microcontrolador? 3. Qu detalles debe usted ver o imaginar para saber si un aparato como un radio o un telfono celular contiene un Microcontrolador? 4. Qu significa un apostrofe en el principio de una lnea de cdigo de programa PBASIC? 5. Qu instrucciones en PBASIC aprendi usted en este captulo? 6. Pensemos que desea hacer una pausa en su proyecto BASIC Stamp para tomar un caf, o quiza tardarse un poco ms y luego regresar a su proyecto despus de un par de das. Qu debe hacer antes de tomarse un descanso?
Ejercicios

1. En esta instruccin, explique la operacin del asterisco.


DEBUG DEC 7 * 11

2. Adivine lo que mostrar la Terminal Debug cuando ejecuta esta intruccin


DEBUG DEC 7 + 11

3. Hay un problema con estas dos instrucciones. Cuando ejecuta el cdigo, los nmeros que se muestran estan muy juntos de tal forma que parece un nmero grande en lugar de dos nmeros pequeos. Modifique estas dos instrucciones para que las respuestas aperezcan en dos lneas diferentes en la Terminal Debug.
DEBUG DEC 7 * 11 DEBUG DEC 7 + 11

Inicio Pgina 25

Proyectos

1. Use la Terminal DEBUG para mostrar la solucin del problema matemtico 1+2+3+42. Guarde su primer programa Turn.bs2 con otro nombre. Si fuera a colocar la instruccin DEBUG mostrada justamente debajo de la instruccin END, del programa, cuales otras lneas debera usted borrar para que hiciera el mismo trabajo? 3. Modifique la copia del programa para verificar su hiptesis (su prediccin del lo que ocurrir)
DEBUG Cuanto es 7x11, CR, El resultado es, DEC 7 * 11

Soluciones

Q1. Un microcontrolador es un tipo de computadora en miniatura que contienen los productos electrnicos. Q2. El mdulo BASIC Stamp contiene un chip microcontrolador. Q3. Si el aparato tiene botones y pantalla digital, estos detalles indican que dentro hay un microcontrolador. Q4. Un comentario. Q5. Desconecte de la alimentacin al proyecto de su BASIC Stamp. E1. Multiplica los dos operandos 7 y 11, y el resultado del producto es 77. El asterisco es el operador de multiplicacin. E2. La Terminal Debug mostrar: 18 E3. Para resolver el problema agrerue un retorno (carriage retur) usando CR control carcter y coma.
DEBUG DEC 7 * 11 DEBUG CR, DEC 7 + 11

P1. Este es un programa para mostrar la solucin al problema matemtico 1+2+3+4


' Qu es un Microcontrador? - Ch01Prj01_Add1234.bs2 '{$STAMP BS2} '{$PBASIC 2.5} DEBUG "Qu es 1+2+3+4?" DEBUG CR, "La respuesta es: " DEBUG DEC 1+2+3+4 END

Pgina 26 Qu es un Microcontrolador?

P2. Se pueden quitar las 3 ltimas lnes DEBUG. Se necesita otro CR depues del Mensaje Hello
' Qu es un Microcontrolador? - Ch01Prj02_ FirstProgramYourTurn.bs2 ' BASIC Stamp manda mensajes a la Terminal Debug . ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Hello, it's me, your BASIC Stamp!", CR DEBUG "What's 7 X 11?", CR, "The answer is: ", DEC 7 * 11 END

La salida de la Terminal Debug es:


Hola soy yo tu BASIC Stamp! Cuanto es? 7*11 La respuesta es: 77.

El resultado es el mismo que genera el cdigo anterior. Este es un ejmplo del uso de comas en la salida para sacar mucha informacin usando solamente una instruccin DEBUG con sus mltiples elementos.

Encendiendo y Apagando Luces Pgina 27

Captulo 2: Encendiendo y Apagando Luces


LUCES INDICADORAS
Las luces indicadoras son tan comunes que la mayora de las personas no les da importancia. La figura 2-1 muestra tres luces indicadoras de un impresora laser. En funcin de que luz est encendida, la persona que usa la impresora sabe si est trabajando bien o necesita atencin. Estos son algunos ejemplos de aparatos con luces indicadoras: autoestereos, televisores, Reproductores DVD, lectores de discos, impresoras, y tableros de control de sistemas de alarmas.

Figura 2-1 Luces indicadoras. Las luces indicadoras se utilizan mucho en aparatos cotidianos.

La tarea de encender y apagar una luz indicadora consiste en conectarla y desconectarla de la fuente de alimentacin. En algunos casos, la luz indicadora se conecta directamente a la bateria o fuente de alimentacin como la hace la luz de tu Tablilla de Experimentos. Otras luces indicadoras las conmuta un microcontrolador interno del aparato. Estas son generalmente luces indicadoras de estado que indican si el aparato est encendido.

ENERGIZANDO UN DIODO EMISOR DE LUZ (LED)


La mayora de las luces indicadoras que usted ve en los aparatos se llaman Diodos Emisores de Luz. Usted frecuentemente ver en los libros y diagramas de circuitos que a los diodos emisores de luz se le identifica con las LED. En este libro generalmente es pronuncida como tres letras L-E-D.Usted construir un circuito con LED y lo conectar a la alimentacin y el LED se iluminar. Usted desconectar el LED de la fuente y el LED dejar de emitir luz.

Pgina 28 Qu es un Microcontrolador?

Se puede conectar un circuito con LED a la BASIC Stamp, y sta se puede programar para que conecte y desconecte el LED de la fuente. Esto es mucho ms fcil que manualmente cambiar el alambrado del circuito para conectar y desconectar la bateria. La BASIC Stamp tambin puede programarse para que haga lo siguiente: Encender y Apagar un LED con tiempos diferentes. Encender y Apagar un LED un numro especfico de veces. Controlar un circuito con varios LEDs. Controlar el color de un LED Bicolor (dos colores).

ACTIVIDAD #1: CONSTRUCCION Y VERIFICACION DE UN CIRCUITO CON LED


Es importante que verifique uno por uno los componentes antes de construir con ellos un sistema mas grande. Esta actividad se concentra en construir y verificar dos circuitos diferentes con LED. El primer circuito hace que el LED emita luz. El segundo circuito hace que el LED no emita luz. En la siguiente actividad, usted contruir un circuito ms grande con LED y lo conectar a la BASIC Stamp. Luego escribir un programa que haga que la BASIC Stamp ilumine los LEDs y luego los apague. Al verificar el estado de cada LED usted se asegura que este circuito funcione, y esto le dar seguridad al conectarlos a la tablilla de experimentos.
Conociendo el Resistor

Un resistor es un componente que limita el flujo de electricidad. Al flujo de electricidad se le llama corriente. Los resistores tienen un valor que indica que tanto se opone al flujo de la corriente. El valor de su resistencia se mide en ohms y se identifica con la letra griega Omega: . Ms adelante en este libro ver que K significa k, -o mil ohms. El resistor con el que usted trabajaren esta actividad es de 470 y lo muestra la figura 2-2. El resistor tiene dos alambres (llamadas terminales) una a cada lado. Entre las dos terminales est la cermica que se opone al flujo de corriente. La mayora de los diagramas de circuitos muestra el resistor como una linea quebrada de la izquierda y esto identifica un resistor de 470 . A esta lnea quebrada se le llama smbolo esquemtico. El dibujo de la derecha le indica a los principiantes del BASIC Stamp, que usan este libro, la manera de identificar al resistor que contiene el Kit, y dnde se debe colocar al contruir su circuito.

Encendiendo y Apagando Luces Pgina 29

Gold Silver or Blank

470

Yellow

Violet

Brown

Figura 2-2 Siimbolo esquemtico del resistor de 470 . Simbolo esquemtico del resistor (izquierda), Dibujo del resistor (derecha)

Los resistores utilizados en esta actividad tienen franjas de colores. Hay una combinacin diferente de colores que le indican el valor del resistor. Por ejemplo, el cdigo de colores para el resistor de 470 es amarillo-violeta-caf. Hay una cuarta franja que indica la tolerancia del resistor. Tolerancia es la medida en porcentaje que indica cuanto se aleja del valor verdadero. Esta cuarta franja puede ser dorada (5%), plateada (10%) o sin franja (20%). En las actividades de este libro solamente es importante su valor, la tolerancia no lo es. Cada barra de color le dice el valor que corresponde a un dgito. Estos colores/dgitos los muestra la Tabla 2-1. La figura 2-3 como interpretar las barras de colores con la tabla para obtener el valor del resistor.
Tabla 2-1
Cdigo de Colores del Resistor Digito Color
Tolerance Code

0 1 2 3 4 5 6 7 8 9

Negro Caf Rojo Naranja Amarillo Verde Azl Violeta Gris Blanco

Figura 2-3 Cdigo de Colores de los resistores Primer Dgito; Segundo dgito; Nmero de ceros.

First Digit Second Digit

Number of Zeros

Pgina 30 Qu es un Microcontrolador?

Este es un ejemplo que muestra la Tabla 2-1 y la Figura 2-3 y en combinacin se usan para encontrar el valor de un resistor con amarillo-violeta-caf y vale 470 : La primer franja es amarillo, es el dgito de las centenas y vale 4. La segunda franja es violeta , es el dgito de la decenas y vale 7. La tercer franja es Caf. El caf vale uno, esto significa que en la unidades colocamos uno y solamente un cero. Amarillo-Violeta-Caf = 470 .
Conociendo el LED

Un diodo es una vlvula unidireccional, y un diodo emisor de luz (LED) emite luz cuando una corriente pasa por l. A diferencia del cdigo de colores de los resistores, el color de un LED generalmente indica el color de luz que emitir cuando lo atravieza una corriente. Las marcas importantes del LED se encuentran en su estructura. Como el LED es un elemento unidireccional asegrese de conectarlo correctamente en su circuito si no lo hace, ste no funcionar. La Figura 2-4 muestra el smbolo esquematico de un LED y su dibujo. Un LED tiene dos terminales. Una terminal se llama ANODO y la otra se llama CATODO. En esta actividad, contruir un circuito con LED poniendo atencin para asegurarse que el nodo y el ctodo estn conectados correctamente. En el dibujo la terminal del nodo se asocia con el signo positivo (+). En el smbolo esquemtico, el nodo es la parte ancha del tringulo. En el dibujo la terminal del ctodo no tiene indicacin pero en el esquemtico es la raya vertical frente al tringulo.

Figura 2-4 Dibujo de un esquemtico

LED

smbolo

Arriba vemos el Dibujo, abajo vemos el smbolo esquemtico.

LED

En imgenes posteriores del dibujo del LED un + estar cerca de la terminal del nodo.

Encendiendo y Apagando Luces Pgina 31

Cuando empiece armar su circuito verifique el smbolo esquematico y el dibujo. En el dibujo, observe que las terminales del LED tiene diferentes longitudes. La terminal ms larga corresponde al nodo, y la ms corta al ctodo. Tambin, si mira cuidadosamente la envolvente de plstico del LED, casi todo es una circunferencia, pero hay una pequea parte plana cerca de la terminal ms corta y esta es otra forma de identifcar el ctodo. Esta caracterstica es muy importante si ambas terminales se han cortado a la misma longitud.
Componentes del Circuito de Prueba del LED

(1) LED verde. (1) Resistor de 470 (amarillo-violeta-caf)


Identificacin de Partes. Adems de los dibujos de la figura 2-2 y figura 2-4 usted puede usar la foto de la ltima pgina del libro para ayudarse a identificar los componentes del kit utilizados en esta y otras actividades.

Construccin del Circuito de Prueba del LED

Construya el circuito metiendo las terminales del LED y del Resistor en los pequeos huecos llamados conectores en el rea de su Tablilla Prototipo como lo muestra la figura 25. Esta rea de su tablilla tiene conectores negros en la parte alta e izquierda. Los conectores negros de la parte superior tienen la siguientes etiquetas: Vdd(+5V), Vin (es un voltaje no regulado de su bateria o fuente), y Vss(0 V), tambin llamado tierra. A estas se les llama terminales de la fuente y se usan para suministrar energa a los circuitos. Los conectores negros de la izquierda tienen etiquetas como P0, P1, hasta llegar a P15. En estos conectores usted puede conectar sus circuitos a las terminales de entrada/salida de su mdulo BASIC Stamp.
Vdd X3
P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2

Vin

Vss

Figura 2-5 Area de Prototipo Las terminales de la fuente estn a lo ancho de la parte superior, las terminales de acceso de entrada/salida estn a la izquierda y en todo lo largo junto a las terminales sin soldadura de su tablilla prototipo (de color blanco)

Pgina 32 Qu es un Microcontrolador?

Las terminales de Entrada/Salida generalmente se llaman terminales E/S y despus de conectar su circuito a uno o ms de estas terminales usted puede programar su BASIC Stamp para monitorear que el circuito (meta) seales al circuito de salida. Usted har esto en la siguiente actividad.

La tablilla blanca con muchos huecos se llama tablilla sin soldadura. En esta area usted conectar componentes para construir circuitos. Esta area tiene tiene 17 filas de terminales. Cada fila tiene dos conjuntos de 5 componentes separados por una canal en medio de ellas. Los cinco terminales o conectores estn conectados estre s mismos. Si usted conecta dos alambres en el mismo grupo de 5 terminales, ellos harn contacto elctrico. Dos alambres en la misma fila pero de lados separados por la canal no hacen contacto entre ellos. Muchos dispositivos est diseados para colocarse en esta forma, por ejemplo los botones push que usaremosen el captulo 3.
Ms acerca de la tablilla prototipo. Para aprender, la historia, como se construyen y como se usan vea el video en la liga: www.parallax.com/go/WAM

La figura 2-6 muestra un circuito esquemtico y una imagen de un circuito contruido en la Tablilla Prototipo. Cada grupo de 5 conectores puede conectar 5 terminales o alambres. En este circuito, el resistor y el LED estn conectados porque cada uno tiene una terminal metida en el mismo grupo de 5 conectores. Observe que una terminal del resistor se conecta a Vdd (+5V) para alimentar el circuito. La otra terminal del resistor est conectada al nodo del LED. Para cerrar el circuito del ctodo del LED se conecta a Vss (0 V, tierra). Ahora est listo para armar el circuito que muestra la figura de abajo 2-6 conectando las terminales del LED y resistor en las terminales de su tablilla prototipo. Siga estos pasos: Desconecte la alimentacin de su Tablilla. Use la Figura 2-4 para decidir en donde conectar el ctodo del LED. Observe la terminal ms corta o la parte plana del plstico del LED. Conecte la terminal del ctodo del LED en uno de los conectores negros identificados con Vss de la parte superior. Conecte el nodo del LED en el conector mostrado en el rea de la Tablilla de Experimentos. Conecte una de las terminales del resistor en el mismo grupo de conectores donde conect el nodo del LED. Coloque la otra terminal del resistor en uno los conectores identificados como Vdd.

Encendiendo y Apagando Luces Pgina 33

Direccin. Para el Resistor no es importante, s es muy importante para el LED. Si usted conecta el LED en forma inversa, ste no se iluminar cuando conecte la energa. El resistor si hace su trabajo. El resistor no tiene direccin para conectarse.

Reconecte la alimentacin a su Tablilla de Experimentos. Verifique el que LED verde se ilumina. Ser luz verde.

Vdd

Vin

Vss

Vdd

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

Figura 2-6 Led Iluminado, conectado directamente a la alimentacin. En la izquierda est el esquemtico, en la derecha el diagrama de alambrado. Observe que una terminal del resistor y la del nodo del LED verde estn conectadas en el mismo grupo de 5 conectores. As se conectan electricamente los dos componentes.

470

LED

Vss

Si el LED verde no se ilumina cuando energiza la tablilla de experimentos: Algunos LEDs brillan ms cuando se miran desde arriba. Trate de ver lu luz desde arriba. Si su cuarto est muy iluminado apague algunas lmparas o trate de ver el haz sobre sus manos. Si an as no puede ver la luz verde del LED, haga lo siguiente: Verifique nuevamente que el nodo y el ctodo estn correctamente conectados. Si no lo estn, retire el LED dle media vuelta y vuelva a insertarlo. Esta actividad no daa al LED simplemente no emite luz. Verifique nuevamente que construy usted el circuito exactamente como lo muestra la figura 2-6. Si el kit del microcontrolador que est usando lo utiliz alguien antes que usted, probablemente el LED est daado, utilice otro LED. Si est usted en clase pida ayuda a su profesor.

Pgina 34 Qu es un Microcontrolador?

An tiene problemas? Intente con estos recursos en lnea. Visite los forums Stamps in Class. Si usted no tiene un instructor o amigo que le pueda ayudar usted puede visitar los forurms de Parallax en la liga http://forums.parallax.com Si no encuentra respuesta a sus preguntas contacte el Departamento de Soporte en la siguiente liga: www.parallax.com

Funcionamiento del Circuito de Prueba del LED

Las terminales de la fuente Vdd y Vss proporcionan energa elctrica de la misma forma como lo hace una bateria. Las terminales Vdd es como la terminal positiva de la batera, y las terminales Vss son como la terminal negativa de la bateria. La figura 2-7 muestra como una bateria aplica energa elctrica a un circuito originando un flujo de electrones en l. A este flujo de electrones se le llama Corriente Elctrica, o solamente Corriente. El resistor limita la corriente elctrica. Est corriente hace que el diodo emita luz.

+++ +++ +++

+ =

N N

Figura 2-7 Flujo de electrones iluminando el LED { XEElectron} El signo menos encerrado en el crculo se usa para mostrar electrones circulando desde el negativo de la batera hasta la terminal positiva.

------N N -N -

Reacciones Quimicas. Internamente la bateria proporciona corriente al circuito. La terminal negativa de la bateria contiene un compuesto que tienen molculas con exceso de electrones (en la Figura 2-7 se muestra con el signo menos). La terminal positiva de la bateria tiene un compuesto qumico con molculas que tienen carencia de electrones. (mostrados con el signo ms). Cuando un electrn abandona una molcula de la terminal negativa y viaja a travs del alambre a ste se le llama electron libre (se muestra con el mismo signo menos). La molcula que pierde este electrn y como consecuencia ya no tiene carga negativa. Est neutra (se muestra con una N). Cuando un electrn llega a la terminal positiva, se une a una molcula que tiene carencia de electrones y ahora, tambien se convierte en molcula neutra.

Encendiendo y Apagando Luces Pgina 35

La figura 2-8 muestra como se usa la notacin esquemtica para describir el flujo de electricidad en el circuito del LED. Se llama VOLTAJE a la presin electrica del circuito. Los signos positivo y negativo se usan para mostrar el voltaje aplicado al circuito. La flecha muestra el sentido de la corriente a travs del circuito. Esta flecha casi siempre apunta en el sentido opuesto de la direccin de corriente de electrones. Fue Benjamin Franklin quien defini el sentido de corriente de la terminal positiva a la terminal negativa de un circuito. Con el paso del tiempo los cientficos descubrieron el sentido verdadero del flujo de electrones, pero ya estaba establecido el punto de vista de B. Franklin.
Voltage

Vdd

Resistance Current LED

Figura 2-8 Sentido convencional de corriente del circuito LED. Los signos + y aplicados al circuito y la flecha de corriente muestran el flujo de corriente a travs del circuito.

Voltage

Vss

Dibujo del esquemtico (como figura2-8) es una imagen que explica como se conectan uno o ms circuitos. Los esquematicos son utilizados por estudiantes, hobistas, electricistas, ingenieros y todos los que saben trabajar con circuitos elctricos. Anexo B. Otros Conceptos de Electricidad, es un anexo que contiene un glosario de trminos y actividades para familiarizarse ms con mediciones de voltaje, corriente y resistencia.

Su turno- Modificacin del circuito de prueba del LED.

En la siguiente actividad, usted programar el BASIC Stamp para que el LED se ilumine y luego se apague continuamente. El BASIC Stamp har esto conmutando el LED entre dos conexiones diferentes Vdd y Vss. Recuerde: cuando el resistor se conecta a Vdd el LED se ilumina. Ahora realice los cambios que muestra la figura 2-9 para verificar que el LED se apaga. Esto sucede cuando la terminal del resistor se cambia de Vdd a Vss. Desenergice su Tablilla de Experimentos. Saque la terminal del resistor que est conectada en Vdd y conctela en Vss como lo muestra la figura 2-9. Energice su Tablilla de Experimentos. Verifique el LED verde no emite luz. No se ilumina en verde.

Pgina 36 Qu es un Microcontrolador?

Por qu no se ilumina el LED? Como las dos terminales del circuito estn conectadas al mismo voltaje (Vss), no hay diferencia de potencial en el circuito. Entonces no fluye corriente en el circuito y el LED est apagado.

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

Vin

Vss

Figura 2-9 El LED est apagado. En la izquierda est el esquemtico y a la derecha est el diagrama del alambrado.

470

LED

Vss

Vss

ACTIVIDAD #2: CONTROL DE APAG/ENC CON EL BASIC STAMP


En la actividad #1, se construyeron y verificaron dos circuitos diferentes. El primer circuito ilumin un LED, el segundo lo apago. La figura 2-10 muestra la forma en que BASIC Stamp puede hacer la misma actividad si usted conecta un circuito LED a una de sus terminalesde E/S. En esta actividad, usted conectar el circuito LED al BASIC Stamp y lo programar para que haga parpadear un LED. Usted tambin experimentar con programas que hagan que el BASIC Stamp haga parpadear el LED a diferentes velocidades.

Encendiendo y Apagando Luces Pgina 37

SOUT SIN ATN VSS P0 P1 P2 P3 P4 P5 P6 P7

24

VIN VSS RES VDD (+5V) P15 P14 P13 P12 P11 P10 P9 P8

SOUT SIN ATN VSS P0 P1 P2 P3 P4 P5 P6 P7

24

VIN VSS RES VDD (+5V) P15 P14 P13 P12 P11 P10 P9 P8

2
3 4 5 6 7

BS2
Vdd Vss

23
22 21 20 19 18

2
3 4 5 6 7

BS2
Vdd Vss

23
22 21 20 19 18

Figura 2-10 BASIC Stamp Conmutando El BASIC Stamp puede programarse internamene para conectar un LED a Vdd o Vss.

8
9

17
16

8
9

17
16

10
11

15
14

10
11

15
14

12

13

12

13

BS2-IC

BS2-IC

Hay dos grandes diferencias entre cambiar la conexin manualmente y hacerlo con el BASIC Stamp. Primero, el BASIC Stamp no tiene que cortar la alimentacin del rea de experimentos cuando se hace el cambio fsico de Vdd a Vss. Segundo, en tanto que una persona puede hacer estos cambios varias veces en un minuto, el BASIC Stamp lo puede hacer miles de veces por segundo.
Partes del Circuito de Prueba del LED.

Las mismas de la Actividad # 1.


Coneccin del circuito del LED a la BASIC Stamp

El circuito LED que muestra la figura 2-11 se alambra casi igual que el circuito del ejercicio anterior. La diferencia es que la terminal del resistor manualmente se conmut del Vdd al Vss y ahora se conecta a un pin de E/S del BASIC Stamp. Desenergice la Tablilla de Experimentos. Modifique el circuito de la Actividad # 1 y conecte como muestra la figura 2-11.

Pgina 38 Qu es un Microcontrolador?

P14 470 LED

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

Vin

Vss

Figura 2-11 Circuito LED controlado con el BASIC Stamp. La entrada del circuito LED ahora se conecta al pin de E/S del BASIC Stamp.

Vss

Los resistores son necesarios. Recuerde siempre usar un resistor. Sin el resistor circula mucha corriente a travs del circuito y puede daar a los elementos del circuito, al BASIC Stamp y a la Tablilla de Experimentos.

Parpadeo de un LED con un programa

El programa ejemplo hace que un LED parpadee, se ilumine y se apage una vez por segundo. Esto se hace introduciendo varias tcnicas de programacin a la vez. Despus de ejecutarlo, usted experimentar con diferentes partes del programa para comprender mejor como trabaja.
Programa Ejemplo: LedOnOff.bs2

Meta el cdigo LedOnOff.bs2 en el Editor del BASIC Stamp. Energize su Tablilla de Experimentos. Ejecute el programa. Verifique que el LED parpadea una vez por segundo. Desenergice la Tablilla despus de haber comprobado que el programa funciona correctamente.

Encendiendo y Apagando Luces Pgina 39

'Qu es Microcontrolador? - LedOnOff.bs2 'Enciende y Apaga un LED. Se repite 1 vez por segundo en forma contnua. '{$STAMP BS2} '{$PBASIC 2.5} DEBUG "The LED connected to P14 is blinking!" DO HIGH 14 PAUSE 500 LOW 14 PAUSE 500 LOOP

Funcionamiento de LedOnOff.bs2

La instruccin DEBUG The LED connecto to p14 is blinking! hace que esta frase aparezca en la Terminal DEBUG. La insruccin HIGH 14 hace que internamente la BASIC Stamp conecte la terminal 14 a Vdd. Y esto hace que el LED se ilumine. La instruccin PAUSE 500 hace que el BASIC Stamp no haga nada durante segundo mientras el LED est iluminado. El nmero 500 hace que la instruccin PAUSE espere 500/1000 de segundo. El nmero que sigue de PAUSE se le llama argumento, Los argumentos le dan a las instrucciones PBASIC la informacin necesaria para ejecutarse. Si usted ve PAUSE en el manual BASIC Stamp descubrira que a este nmero se le llama Duration del Argumento. El nombre Duration se escogi para este argumento para mostrar que la instruccin PAUSE se detiene cierta duracin de tiempo y se expresa en milisegundos.
Qu es un milisegundo? Un milisegundo es 1/1000 de un segundo. Y se abrevia: ms. 1 segundo dura 1000 milisegundos.

La insruccin LOW 14 hace que internamente el BASIC Stamp conecte la terminal 14 a VSS. Y esto hace que el LED se apague. Como a LOW 14 le sigue otra PAUSE 500 el LED se mantiene apagado segundo. La razn por la que el cdigo se repite a si mismo en forma siempre contnua es porque est anidado entre las palabras clave PBASIC DO y LOOP. La figura 2-12 muestra como trabaja el conjunto DO...LOOP. Al colocar el segmento de cdigo que enciende y apaga el LED con pausas en DO y LOOP, le informa al BASIC Stamp que ejecute estas cuatro

Pgina 40 Qu es un Microcontrolador?

instrucciones en forma continua. Y el resultado es que el LED parpadea repetidamente. Y seguir parpadeando hasta que desconectes la energa o presiones el botn de RESET, o hasta que se agote la bateria. Al cdigo que repite un conjunto de instrucciones indefinidamente se le llama: Bucle Infinito.
DO HIGH 14 PAUSE 250 LOW 14 PAUSE 250 LOOP

Figura 2-12 DO...LOOP El cdigo colocado entre las palabras DO y LOOP se ejecuta en forma continua.

Una Prueba de Diagnstico para su Computadora

Aunque no es comn, hay algunos sistemas de cmputo como ciertas Laptops y Estaciones, que detienen el programa PBASIC despus de la primera vez que se ejecuta DO...LOOP. Estas computadoras tienen un diseo de puerto serie no normalizado. Y al colocar una instruccin DEBUG en el programa LedOnOff.bs2 la Terminal DEBUG se autoprotege. Usted volver a ejecutar este programa sin la instruccin DEBUG para ver si su computadora tiene ese problema en su puerto serie no normalizado. Quiz no es su caso, pero es muy importante que usted lo conozca. Abra el archivo LedOnOff.bs2 Borre toda la instruccin DEBUG. Corra el programa modificado y observe su LED. Si el LED parpadea en forma contnua, como lo haca con el programa original cuando tena la instruccin DEBUG, su computadora no tiene este problema. Si el LED parpadea solamente una vez y despus se detiene, su computadora tiene un puerto serie no normalizado. Si usted desconecta el cable del puerto serie de su Tablilla de Trabajo y presiona el botn RESET, el BASIC Stamp ejecutar el programa correctamente sin detener el LED. En los programas que escriba usted mismo, siempre necesitar agregar una sola instruccin DEBUG, como la siguiente:
DEBUG Program Running

Encendiendo y Apagando Luces Pgina 41

Justamente despus de las directivas del compilador. Esto abrir la Terminal Debug y mantendra el puerto COM abierto. Esto asegurar que sus programas no se detengan despus que pasen por DO...LOOP o cualquier otras instrucciones de Bucle que aprender en los ltimos captulos. Usted ver estas instrucciones en algunos de los programas ejemplo que no utilizaran una instruccin DEBUG. De esta forma estar capacitado para ejecutar los programas restantes de este libro incluso si su computadora tiene un puerto serie no normalizado, si este es su caso acuerdese de agregar la pequea instruccin DEBUG cuando empiece a escribir sus propios programas.
Su Turno Tiempo y Repeticiones

Al cambiar el argumento Duration de la instruccin PAUSE usted modifica la cantidad de tiempo que el LED se ilumina y se apaga. Por ejemplo, al cambiar el argumento Duration a 250, har que el LED parpadee dos veces por segundo. Las instrucciones DO...LOOP en su programa as quedaran:
DO HIGH 14 PAUSE 250 LOW 14 PAUSE 250 LOOP

Abra el archivo LedOnOff.bs2 y guarde una copia como LedOnOff.YourTurnbs2 Cambie el argumento de Duration de la instruccin PAUSE de 500 a 250 y ejecute el programa. Si usted desea que el LED parpadee una vez cada tres segundos, con tiempo LOW 2veces mayor que el tiempo HIGH, usted debe programar PAUSE despus de HIGH 14 con 1 segundo usando PAUSE 1000. La PAUSe despus de LOW 14 debe ser PAUSE 2000.
DO HIGH 14 PAUSE 1000 LOW 14 PAUSE 2000 LOOP

Haga estas modificaciones y corra el programa el cdigo arriba mostrado.

Pgina 42 Qu es un Microcontrolador?

Un experimento agradable es ver que tan cortas pueden ser las pausas y todava ver parpadear al LED. Cuando el LED parpadea muy rpido pero el ojo percibe que no parpadea, a esto se le llama Persistencia de la Visin. As se verifica cual es el umbral de su persistencia de visin: Modifique el argumento Duration de la instruccin Pause al valor 100. Corra el programa y verifique el parpadeo del LED. Reduzca 5 unidades el argumento Duration y vuelva a verificar. Contine reduciendo el argumento Duration hasta que no vea parpadeo en el LED. Su brillo ser el mismo pero sin parpadeo. Un ltimo experimento es crear solamente un parpadeo. Cuando corra el programa el LED solamente parpadea una vez. Esto nos permite verificar el funcionamiento de DO...LOOP Usted puede quitar temporalmente DO...LOOP del programa colocando un apostrofe a la izquierda de DO y LOOP en seguida lo mostramos:
' DO HIGH 14 PAUSE 1000 LOW 14 PAUSE 2000 ' LOOP

Modifique y corra el programa arriba mostrado Explique que sucedi, porqu el LED solamente parpadeo una vez.
Comentario de una lnea del cdigo. Al colocar un apostrofe a la izquierda de una instruccin sta se convierte en COMENTARIO. Esta es una herramienta til porque usted no necesita borrar la instruccin para ver que sucede si la quita del programa. Es ms sencillo agregar o quitar un apostrofe que borrar y re-escibir la instruccin.

ACTIVIDAD #3: CONTEO Y REPETICIN


En la actividad anterior, el LED parpadeaba en forma contnua, o parpade una vez y luego se detuvo. Qu hacer si desea que parpadee el LED diez veces? Las computadoras (incluyendo a BASIC Stamp) son grandes para hacer una tarea continuamente o un nmero de veces. Las computadoras se pueden programar para que tomen decisiones en funcin de

Encendiendo y Apagando Luces Pgina 43

varias condiciones. En esta actividad, usted programara al BASIC Stamp para que el LED parpadee 10 veces.
Partes para el Conteo y Circuito de prueba.

Use el circuito del ejemplo que muestra la figura 2-11.


Cuntas veces?

Hay varias formas para hacer que el LED parpadee 10 veces. La forma ms simple es usando el par de instrucciones de bucle: FOR...NEXT. El bucle FORNEXT es similar al bucle DOLOOP. Cualquiera de los dos bucles se pueden usar para repetir instrucciones un nmero determinado de veces. Es ms sencillo usar el bucle FORNEXT. A este proceso a veces se le llama Conteo o Bucle Finito. El bucle FOR...NEXT depende de una variable para ajustar el nmero de veces que el LED parpadea. Una variable es una palabra de su eleccin que se usa para almacenar un valor. El siguiente programa ejemplo eligi la palabra counter para contar las veces que el LED parpadea.
La Eleccin de Palabras para nombres de Variables tiene las siguientes reglas: 1. El nombre no puede ser una palabra que use el PBASIC. Las palabras de PBASIC se llaman Palabras Reservadas y algunas con las que usted ya se ha familiarizado son DEBUG, PAUSE, HIGH, LOW, DO y LOOP. Usted puede ver la lista completa de palabras reservadas en el Manual BASIC Stamp. El nombre no puede tener un espacio. Aunque el nombre puede tener letras, nmeros o guines, este debe comenzar con una letra. El nombre debe tener menos de 33 caracteres.

2. 3. 4.

Programa Ejemplo: LedOnOffTenTimes.bs2

El programa LedOnOffTenTimes.bs2 demuestra como usar el bucle FOR..NEXT para que el LED parpadee diez veces. Debe construir el Circuito de la Actividad #2 y estr listo para usarse. Meta el cdigo LedOnOffTenTimes.bs2 en el Editor de BASIC Stamp. Energice su Tablilla de Experimentos. Ejecute el Programa Verifique que el LED parpadea diez veces.

Pgina 44 Qu es un Microcontrolador?

Ejecute por segunda vez el programa y verifique el el valor de COUNTER mostrado en la Terminal DEBUG coincide precisamente con el nmero de veces que el LED parpades. Sugerencia: En lugar de hacer click en RUN por segunda vez, usted puede presionar y liberar el boton de RESET de su Tablilla de Expimentos.
' Qu es un Microcontrolador? - LedOnOffTenTimes.bs2 ' Apagado y Encendido de LED Repite 10 veces. ' {$STAMP BS2} ' {$PBASIC 2.5} counter VAR Byte FOR counter = 1 TO 10 DEBUG ? counter HIGH 14 PAUSE 500 LOW 14 PAUSE 500 NEXT DEBUG "All done!" END

Cmo funciona el programa LedOnOffTenTimes.bs2?

Esta lnea de PBASIC:


Counter VAR Byte

Le indica al Editor BASIC Stamp que su programa usar la palabra counter como una variable de puede almacer un byte de informacin

Encendiendo y Apagando Luces Pgina 45

Qu es un Byte? Un Byte es un espacio de memoria para almacenar un nmero entre 0 y 255 The BASIC Stamp tiene 4 diferentes tipos de variables, y pueden almacenar diferentes rangos de nmeros:

Table 2-2: Tipos de Variable y Valores


Tipos de Variables Rango de Valores

Bit Nib Byte Word

0a1 0 a 15 0 a 255 0 a 65535

Una instruccin DEBUG puede incluir formatos que determinan cuanta informacin deber mostrar la Teminal Debug. Colocando el signo de interrogacin ? antes de una variable en un instruccin DEBUG le indica a la Terminal Debug que muestre el nombre de la variable y su valor. De la siguiente forma:
DEBUG ? counter

Muestra el nombre y el valor de la variable counter en la Terminal Debug. El bucle FOR...NEXT y todas sus instrucciones se muestra ms abajo. La frase FOR counter = 1 to 10, le indica al BASIC Stamp que tiene que poner la variable counter al valor 1, y que ejecute las siguientes instrucciones hasta que llegue al siguiente NEXT. Cuando el BASIC Stamp obtiene el siguiente NEXT, regresa a FOR. La instruccin FOR agrega un uno al valor de counter. En seguida, verifica para ver si counter es mayor que diez. Si no es diez repite el proceso. Cuando el valor de counter finalmente alcanza el valor once, el programa brinca las instrucciones que estn entre FOR y NEXT y se mueve a la instruccin que est depus de NEXT.
FOR counter = 1 to 10 DEBUG ? counter HIGH 14 PAUSE 500 LOW 14 PAUSE 500 NEXT

Pgina 46 Qu es un Microcontrolador?

La instruccin que sigue despus de NEXT es


DEBUG All done!

Esta instruccin se incluye justamente para mostrar lo que hace el programa despus de 10 veces del bucle FOR...NEXT. Se mueve a la instruccin que sigue a NEXT.
Su turno Otras formas de Contar

En el programa LedOnOffTenTimes.bs2, sustituya la frase:


FOR counter = 1 to 10 por la frase FOR counter = 1 to 20

Ejecute el programa. Qu hizo el programa en forma diferente, usted esperaba sta accin? Realice una segunda modificacin a la instruccin siguiente cambio:
FOR counter = 20 to 120 STEP 10

FOR. Esta vez haga el

Cuntas veces parpadeo el LED? Qu valores mostr la Terminal Debug?

ACTIVIDAD #4: CONSTRUYENDO Y VERIFICANDO UN SEGUNDO CIRCUITO CON LED


Los LED indicadores se pueden usar para decirle al usuario de una mquina muchas cosas. Muchos aparatos necesitan, dos, tres o ms LEDs para indicarle al usuario si la mquina est lista o no lo est, si hay un problema, si ya se termino la tarea, etctera. En esta actividad usted repetir el circuito LED de la Actividad #1 para un segundo circuito LED. En seguida ajustar el programa ejemplo de la Actividad #2 para asegurarse que est correctamente conectado el circuito LED a la BASIC Stamp. Despus de eso, usted modificar el programa ejemplo de la Actividad #2 para hacer que los LEDs trabajen en paralelo.
Partes adicionales requeridas

Adems de las partes utilizadas en las Actividades #1 y #2 usted necesitar las siguientes partes: Un LED amarillo Un resistor de 470 (amarillo-violeta-caf).

Encendiendo y Apagando Luces Pgina 47

Construyendo y verificando un segundo circuito LED.

En la actividad #1, usted verific manualmente el primer circuito LED para asegurarse que funcionara y despus lo conecto a la BASIC Stamp. Antes de conectar el segundo circuito LED a la BASIC Stamp es importante que tambin lo verifique. Desenergice su Tablilla de Experimentos. Construya el segundo circuito LED que muestra la figura 2-13. Energice su Tablilla de Experimentos. Se ilumin el circuito LED que usted agreg? Si se ilumin, continue. Si no se ilumin en la Actividad #1 hay sugerencias de bsqueda de fallas que puede utilizar para este circuito.

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

Vin

Vss

Vdd

Figura 2-13 Circuito Manual de Prueba para el segundo LED.

470 P14 470 LED Vss Vss LED

Desenergice su Tablilla de Experimentos. Modifique el segundo circuito LED que acaba justamente de verificar conectando el resistor del circuito LED a la terminal P15 como lo muestra la figura 2-14.

Pgina 48 Qu es un Microcontrolador?

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

Vin

Vss

P15 470 P14 470 LED Vss Vss LED

Figura 2-14 Conexin del segundo LED al BASIC Stamp En la parte izquierda el esquemtico y en la parte derecha el diagrama de cableado.

Uso de un Programa para verificar el segundo circuito LED

En la actividad #2, usted uso el programa ejemplo y las instrucciones HIGH y LOW para controlar el circuito LED conectado a la terminal P14. Estas instrucciones tendran que modificarse para controlar el circuito LED controlado a la terminal P15. El lugar de usar HIGH 14 y LOW14 usted usar HIGH 15 y LOW 15.
Programa Ejemplo: TestSecondLed.bs2

Meta el programa TestSecondLed.bs2 al Editor de BASIC Stamp. Energice su Tablilla de Experimentos. Corra el programa TestSecondLed.bs2 Asegurese que el circuito LED conectado a la terminal 15 est parpadeando. Si el LED est parpadeando vaya al siguiente ejemplo (Controlando ambos LEDs). Si el LED conectado a la terminal 15 no parpadea verifique que no tenga errores de alambrado y el programa errores de escritura e intentelo nuevamente.
Qu es un Microcontrolador- TestSecondLed.bs2 ' Encienda y Apague el LED conectado a P15 . ' Repitalo 1 vez por segundo en forma contnua. ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Program Running!" DO

Encendiendo y Apagando Luces Pgina 49

HIGH 15 PAUSE 500 LOW 15 PAUSE 500 LOOP

Control de ambos LEDs

Claro que usted puede controlar ambos LEDs al mismo tiempo. Una forma de hacer esto es usando dos instrucciones HIGH antes de la instruccin PAUSE. Una instruccin HIGH coloca el pin P14 en HIGH y la siguiente instruccin HIGH coloca el pin 15 en HIGH. Tambin necesitar usted dos instrucciones LOW para apagar los LEDs. Es verdad que ambos LEDs no se iluminarn y apagarn EXACTAMENTE al mismo tiempo porque primero se ilumina o apaga uno y luego el otro. Sin embargo solo hay un milisegundo de diferencia entre los dos cambios y el ojo humano no podr detectarlo.
Programa Ejemplo: FlashBothLeds.bs2

Mete el cdigo FlashBothLeds.bs2 en el Editor de BASIC Stamp. Ejecute el programa. Observe que ambos LEDs parecen parpadear al mismo tiempo.
' Qu esMicrocontrolador? - FlashBothLeds.bs2 ' Encienda y Apague los LEDs conectados en P14 y P15 . ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Program Running!" DO HIGH 14 HIGH 15 PAUSE 500 LOW 14 LOW 15 PAUSE 500 LOOP

Su turno: LEDs Alternados

Ustede puede hacer que los LEDs alternen combinando las instrucciones HIGH y LOW que controlan los terminales de Entrada/Salida. Esto significa que cuando un LED esta iluminado, el otro est apagado.

Pgina 50 Qu es un Microcontrolador?

Modifique el programa: FlashBothLeds.bs2 de forma que entre las instrucciones DO y LOOP quede de la siguiente forma:
HIGH 14 LOW 15 PAUSE 500 LOW 14 HIGH 15 PAUSE 500

Ejecute la versin modifica del programa FlashBothLeds.bs2 y verifique que los LEDs parpadean en forma alternada: uno iluminado y el otro encendido.

ACTIVIDAD #5: CONTROL DE UN LED BICOLOR USANDO LA DIRECCIN DE LA CORRIENTE


El aparato que muestra la figura 2-15 es un monitor de seguridad para llaves electrnicas. Cuando se usa una llave electrnica con el cdigo correcto, el LED cambia de color y abre la puerta. A este tipo de LED se le llama LED BICOLOR. Esta actividad responde a dos preguntas: 1-Cmo cambia el LED de Color? 2-Cmo puede usted hacerlo con el BASIC Stamp?

Figura 2-15 LED Bicolor en un Aparato de Seguridad. Cuando la puerta esta asegurada el LED bicolor se iluma en rojo. Cuando la puerta se libera con el cdigo correcto de un una llave electrnica el LED se ilumina en verde.

Encendiendo y Apagando Luces Pgina 51

Conociendo el LED Bicolor

La figura 2-16 muestra el smbolo y el dibujo de un LED Bicolor.

Figura 2-16 LED Bicolor. A la izquierda est su smbolo y a la derecha el dibujo.

En realidad un LED Bicolor son justamente dos LEDs en un solo empaque. La figura 2-17 muestra como se polariza el LED para que se ilumine verde. Al invetir las terminales del LED ahora se ilumina rojo. Igual que los otros LEDs cuando conecta ambas terminales del circuito a Vss el LED se apaga.

Figura 2-17 Voltaje aplicado al LED Bicolor. A la izquierda verde, en el centro rojo y a la derecha apagado.

Partes del Circuito LED Bicolor

Un LED Bicolor Un Resistor de 470 s (amarillo-violeta-caf). Un trozo de alambre.

Pgina 52 Qu es un Microcontrolador?

Construyendo y verificando el Circuito LED Bicolor

La figura 2-18 muestra el manual de prueba para un LED Bicolor. Desenergice su Tablilla de Experimentos. Construya el circuito que muestra el lado izquierdo de la Figura 2-18. Energice su Tablilla de Experimentos y verifique que el LED Bicolor se ilumina verde. Desenergice nuevamente su Tablilla de Experimentos. Modifique su circuito como se muestra en el lado derecho de la Figura 2-18. Energice su Tablilla de Experimentos. Verifique que el LED Bicolor se ilumina rojo. Desenergice su Tablilla de Experimentos
Qu sucede si invierto el LED Bicolor? Los LEDs Bicolor se fabrican como el que muestra la figura 2-16 y tambin con los colores invertidos. Si su LED Bicolor se ilumina rojo cuando se conecta en el circuito y debera brillar verde y viceversa, los colores de su LED estn invertidos. Si este es su situacin, conecte siempre el pin 1 en donde el diagrama dice pin 2 y el pin 2 donde el diagrama muestra el pin 1.

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

1 Vin 2

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

Vdd

2 Vin 1

Vss

Figura 2-18 Prueba manual del LED Bicolor. En la izquierda est el LED Bicolor verde y en la derecha el rojo.

Para controlar un LED Bicolor con el BASIC Stamp se requieren dos pines E/S. Despus que usted ha verificado manualmente que el LED Bicolor funciona usando la prueba

Encendiendo y Apagando Luces Pgina 53

manual, usted puede conectar el circuito LEDs en el BASIC Stamp como se muestra en la figura 2-19.

Figura 2-19 LED Bicolor conectado en el BASIC Stamp. En la izquierda est el esquemtico y a la derecha el alambrado.

Control del LED Bicolor en el BASIC Stamp

La figura 2-20 muestra como se usan los pines P14 y P15 para controlar el flujo de corriente en el circuito LED Bicolor. El esquemtico superior muestra el flujo de corriente en el LED verde cuando P15 est en Vdd con HIGH, y P14 est en Vss con LOW. Esto hace que el LED verde permita que circule corrientea travs de l cuando se aplica el voltaje como se muestra, en cambio el LED rojo actua como una vlvula abierta y no hay flujo de corriente en l. El LED Bicolor se ilumina verde. El esquemtico inferior muestra lo que sucede cuando P15 est en Vs y P14 est en Vdd. Ahora est invertido el voltaje. El LED verde est apagado y no circula por l corriente. En tanto que el LED rojo est iluminado y la corriente circula por circuito en direccin contraria.

Pgina 54 Qu es un Microcontrolador?

HIGH = Vdd P15 Current

LOW = Vss P14 470

Figura 2-20 Circuito de Prueba del LED Bicolor. Arriba la corriente circula en el LED verde y abajo en el LED rojo.
Current

LOW = Vss P15

HIGH = Vdd P14 470

La figura 2-20 la clave para programar el BASIC Stamp y hacer que el LED Bicolor emita dos colores. El esquemtico superior muestra el LED Bicolor en verde usando HIGH 15 y LOW 14. El esquemtico inferior muestra el LED Bicolor en rojo usando LOW 15 y HIGH 14. Para apagar el LED se manda LOW a los pines P14 y P15. En otras palabras use LOW en ambos pines.
El LED Bicolor Apagado. Si usted manda HIGH a los pines P14 y P15 es LED se apaga.Por qu? Porque la diferencia de potencial (voltaje) entre los pines P14 y P15 es la misma ya sea que mande HIGH o LOW a los pines P14 y P16.

Programa Ejemplo. TestBiColorLED.bs2

Energice su Tabllilla de Experimentos. Meta el cdigo TestBiColorLED.bs2 al Editor del BASIC Stamo. Verique que el LED cambia a los estados rojo, verde y apagado.
' Qu es un Microcontrolador - TestBiColorLed.bs2 ' Parpadea el LED bicolor rojo y verde en forma contnua. ' {$STAMP BS2} {$PBASIC 2.5} PAUSE 1000 DEBUG "Program Running!", CR

Encendiendo y Apagando Luces Pgina 55

DO DEBUG "Green..." HIGH 15 LOW 14 PAUSE 1500 DEBUG "Red..." LOW 15 HIGH 14 PAUSE 1500 DEBUG "Off...", CR LOW 15 LOW 14 PAUSE 1500 LOOP

Su Turno Mostrando Colores

En la actividad #3, una variable de nombre counter se us para controla el nmero de veces que parpadea un LED. Qu sucede si usted usa el counter para controlar el argumento de Duration de la instruccin PAUSE para cambiar repetidamente el color del LED Bicolor. Renombre y guarde TestBiColorLED.bs2 ahora con TestBiColorLEDYourTurn.bs2 Agrege una declaracin de variable counter antes de la instruccin DO
counter VAR BYTE

el

nombre

Reemplace el bucle DOLOOP con el bucle FORNEXT.


FOR counter = 1 to 50 HIGH 15 LOW 14 PAUSE counter LOW 15 HIGH 14 PAUSE counter NEXT

Cuando lo haya hecho, el cdigo sera como esto:

Pgina 56 Qu es un Microcontrolador?

counter VAR BYTE DO FOR counter = 1 to 50 HIGH 15 LOW 14 PAUSE counter LOW 15 HIGH 14 PAUSE counter NEXT LOOP

En el principio de cada vuelta del bucle FORNEXT, el valor de Pausa (valor de Duration) vale solamente un milisegundo. Cada vez que se ejecuta el bucle FOR..NEXT, la pausa se incrementa un milisegundo hasta llegar a 50 milisegundo. El bucle DO...LOOP hace que el bucle FOR...NEXT una y otra vez y otra vez. Ejecute el programa modificado y observe su funcionamiento.

RESUMEN
El BASIC Stamp se puede programar para conmutar un circuito con un LED que se ilumine y se apague. Los LEDs indicadores son tiles en una variedad de lugares como monitores de computadoras, lectores de discos, y otros aparatos. Estudiamos una forma para identificar las terminales ctodo y nodo del LED. Un circuito LED debe tener un resistor para limitar la que corriente que circula por l. Estudiamos los Resistores junto con uno de sus cdigos ms comunes para conocer el valor del resistor. El BASIC Stamp ilumina y apaga un circuito LED conectando internamente un pin de Entrada/Salida: E/S, ya sea a Vdd o Vss. La instruccin HIGH se utiliza para que el BASIC Stamp internamente cone uno de sus pines a Vdd, y la instruccin LOW se usa para conectar internamente un pin a Vss. La instruccin PAUSE se usa para que el BASIC Stamp no ejecute instrucciones en un tiempo determinado. Esta se utiliz para que el LED se mantenga apagado o encendido cierta cantidad de tiempo. La cantidad de tiempo la determina el nmero usado en el valor de Duration de la instruccin PAUSE.

Encendiendo y Apagando Luces Pgina 57

El bucle DO...LOOP se puede usar para crear un bucle infinito. Las instruccin localizadas entre DO y LOOP son palabras clave que se ejecutarn una y otra y otra vez. Aunque esta accin se llama bucle infinito, el programa puede reiniciarse conectactando y desconectando la alimentacin o presionando y liberando el boton RESET. Tambin puede cargarse un nuevo programa en el BASIC Stamp y este borrar el programa con bucle infinito. Los bucles de CONTEO pueden hacerse con FOR...NEXT, una variable para ajustar el nmero de repeticiones que el bucle tiene que hacer y nmeros para especificar donde comenzar y terminar el CONTEO: Estudiamos la Direccin de Corriente y la Polaridad del Voltaje para usar un LED Bicolor. Si el voltaje se aplica al circuito LED, la corriente pasar por el en una direccin, y este se iluminar de un color particular. Si se invierte la polaridad del Voltaje, la corriente lo atravieza en direccin inversa y ste se ilumina con un color diferente.
Preguntas

1. Cal es el nombre de la letra Griega: , y que unidades tiene ? 2. Que resistor deja pasar ms corriente en un circuito, uno de 470 o uno de 1000 ? 3. Cmo conecta dos alambres usando una tablilla? Puede usted usar una tablilla para conectar cuatro alambres juntos? 4. Qu necesita usted hacer siempre antes de modificar un circuito construido en su tablilla? 5. Cunto dura la instruccin PAUSE 10000? 6. Cmo hace usted que el BASIC Stamp no haga nada durante un minuto? 7. Cules son los diferentes tipos de variables? 8. Cabe el valor 500 en un Byte? 9. Qu hace la instruccin HIGH?
Ejercicios

1. Dibuje el diagrama de un circuito LED semejante al que realiz en la Actividad #2, pero conecte el circuito al pin P13 en lugar del P14. Explique como modificara el programa LedOnOff.bs2 para que haga que parpadee su circuito LED cuatro veces por segundo. 2. Explique como modificara el programa LedOnOffTenTimes.bs2 para hacer que parpade el circuito LED 500 veces antes de detenerse. Sugerencia: Solamente necesita modificar dos lneas del cdigo.

Pgina 58 Qu es un Microcontrolador?

Proyectos

1. Haga un contador descendente de 10 segundos, usando un LED amarillo y un LED Bicolor. Haga que el inicie el LED Bicolor en rojo durante 3 segundos. Despus de 3 segundo el LED Bicolor cambie a verde. Cuando cambie el LED Bicolor a verde, haga que el LED amarillo parpadee una vez por segundos durante diez segundos. Cuando termine de parpadear el LED amarillo el LED Bicolor debe regresar a rojo y mantenerse en ese color.
Soluciones

Q1. Omega se refiere a OHM, es la unidad que indica la oposicin al flujo de corriente. Q2. Un resistor de 470 : a mayor valor ohmico mayor oposicin, en consecuencia valores ohmicos menores permiten mayor flujo de corriente. Q3. Para conectar dos alambres insertelos en el mismo grupo de 5 terminales. Usted puede conectar 4 alambres insertandolos en el mismo grupo de 5 terminales. Q4. Desconecte la Alimentacin. Q5. 10 segundos. Q6. PAUSE 60000. Q7. Bit, Nib, Byte y Word. Q8. No. El valor mayor que cabe en un Byte es 255. El valor 500 esta fuera de escala de un Byte. Q9. HIGH 7 har que BASIC Stamp conecte internamente el pin P7 a Vdd. E1. La Duracin de PAUSE se debe reducir a 500 ms/4 = 125 ms. Para usar el pin P13, HIGH 14 Y LOW 14 deben cambiarse por HIGH 13 Y LOW 13.
P13 470 LED

Vss

DO HIGH 13 PAUSE 125 LOW 13 PAUSE 125 LOOP

E2. La variable counter debe cambiarse de tamao de Byte a Word, y la instruccin FOR debe modificarse para que cuente de 1 a 5000.
counter VAR Word FOR counter = 1 to 5000

Encendiendo y Apagando Luces Pgina 59

DEBUG ? counter, CR HIGH 14 PAUSE 500 LOW 14 PAUSE 500 NEXT

P1. El diagrama del LED Bicolor de la izquierda permanece sin cambios de la Figura 2-19. El diagrama del LED amarillo est copiado de la Figura 2-11. Para este proyecto el pin P14 se cambi por P13 y se us un LED amarillo en lugar del verde. Nota: Cuando BASIC Stamp ejecuta las instrucciones se va un modo de bajo consumo y hace que el LED Bicolor parpadee brevemente cada 2.3 segundos. Esto mismo se aplica despus que el programa ejecuta una instruccin END. Hay otra instruccin llamada STOP que usted puede agregar al final de los programas para hacer que mantenga las seales HIGH/LOW sin ir al modo de bajo consumo, evitando as el parpadeo.
P13 470 Yellow LED Vss

'Qu es im Microcontrolador? - Ch02Prj01_Countdown.bs2 ' Contador Descendente de 10 s con LEDs, Rojo, Amarillo, Verde ' LED Bicolor en P15, LED Amarillo en P13 ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Program Running!" counter VAR Byte ' Rojo durante 3 segundos LOW 15 HIGH 14 PAUSE 3000 ' Verde 10 segundoss... HIGH 15 LOW 14 ' el LED amarilla est parpadeando ' LED Bicolor rojo

' LED Bicolor verde

Pgina 60 Qu es un Microcontrolador?

FOR counter = 1 TO 10 HIGH 13 PAUSE 500 LOW 13 PAUSE 500 NEXT ' LED Rojo encendido LOW 15 HIGH 14

' LED Amarillo Encendido ' LED Amarillo Apagado

' LED BiColor Rojo

Entrada Digital Botn Push Pgina 61

Captulo 3: Entrada Digital Botones Push


LOS ENCUENTRAS EN CALCULADORAS, JUEGOS DE MANO Y APARATOS
En un da cuntos aparatos con Botones Push utilizas? Estos son algunos ejemplos que pueden estar en tu lista: computadoras, ratones, calculadoras, hornos de microondas, controles remotos, juegos de mano, y telfonos celulares. En cada aparato hay un microcontrolador que escanea los botones push y esperando que el circuito haga cambios. Cuando cambia el circuito el microcontrolador detecta el cambio y toma alguna accin. Al finalizar este captulo, tendrs la experiencia para disear circuitos con botones push y programars el BASIC Stamp para monitorear y tomar acciones cuando ocurran los cambios.

RECIBIENDO VERSUS MANDANDO SEALES HIGH Y LOW


En el captulo #2, t programaste el BASIC Stamp para mandar seales high y low y utilizaste los circuitos LED para mostrar estas seales. Mandar seales high y low significa que utilizaste un pin de BASIC Stamp como salida. En este captulo usaras un pin de BASIC Stamp como entrada. Cuando un pin est como entrada, ste escucha seales high/low en lugar de mandarlas. T meters estas seales al BASIC Stamp usando un circuito botn push y pogramars el BASIC Stamp para reconocer si el botn push est presionado o libre.
Otras palabras que significan mandar, high/low y recibir: Mandar seales high/low son descritas de diferentes formas. T puedes mandar seales cuando ests Transmitiendo, Controlando o Conmutando. En lugar de high/low decimos binario, o niveles de lgica TTL, o niveles de lgica CMOS o seales Booleanas. Otra palabra para recibir es sensar.

ACTIVIDAD #1: VERIFICANDO UN BOTN PUSH CON UN CIRCUITO LED


Puedo usar un botn push para manda un seal high o low al BASIC Stamp y controlar un LED con el botn push? La respuesta es s, en esta actividad lo usar para verificar un botn push.
Conociendo el botn push

La figura 3-1 muestra el smbolo y el dibujo de un botn push normalmente abierto. Dos de las terminales del botn push se conectan en cada terminal. Esto significa que al conectar un alambre al pin 1 del botn push tambin queda conectado al pin 4.

Pgina 62 Qu es un Microcontrolador?

La misma regla se aplica para las terminales 2 y 3. La razn por la cual el botn push no tiene solamente dos terminales es poque necesita estabilidad. Si el botn push slo tuviera dos terminales es porque stas podrian eventualmente doblarse y romperse por la presin que recibe cuando los usuarios lo presionan.
Figura 3-1 Botn Push Normalmente Abierto En la izquierda est el smbolo y a la derecha un dibujo.

1, 4 2, 3

1 2

4 3

El lado izquierdo de la figura 3-2 muestra como se ve un botn push normalmente abierto cuando no est presionado. Cuando el botn no se presiona hay un espacio entre las terminales 1,4 y 2,3. Este espacio hace que la terminal 1,4 no conduzca corriente a las terminales 2,3. A esto se le llama Circuito Abierto. El nombre normalmente abierto significa que el estado normal (sin presionar) forma un circuito abierto. Cuando se presiona el botn, el espacio entre las terminales 1,4 y 2,3 se cierra con un metal conductor. A esto se le llama Circuito Cerrado y la corriente fluye a travs del botn push.
Figura 3-2 Botn Push Normalmente Abierto A la izquierda est sin presionar, a la derecha est presionado.

1, 4 2, 3

1, 4 2, 3

Parte de Prueba para el Botn Push.

Un Led escoga un color. Un Resistor de 470 (amarillo-violeta-caf). Un alambre.


Construccin del Circuito de Prueba del Botn push

La figura 3-3 muestra el circuito a construir para verificar manualmente el botn push.

Entrada Digital Botn Push Pgina 63

Siempre desconecte la alimentacin de su Tablilla de Experimentos antes de hacer cambios en su circuito de prueba. De aqu en adelante las instrucciones ya no le dirn: Desconecte la Alimentacin...entre cada modificacin de circuito. A usted le corresponde recordar esta instruccin. Siempre conecte la alimentacin en su Tablilla de Experimentos antes de descargar un programa a la BASIC Stamp.

Construya el circuito que muestra la Figura 3-3


Vdd
Vdd Vin Vss

1, 4 2, 3

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

Figura 3-3 Circuito de prueba del botn push.

470

LED

Vss

Verificando el botn push

Cuando no est presionado el botn push no se iluminar el LED. Si est bien construdo, cuando el botn push est presionado el LED se iluminar.
Seales de Alarma. Si el LED de Pwr de su Tablilla de Experimentos parpadea, brilla poco o no brilla cuando reconecta la alimentacin, esto significa que hay un corto circuito de Vdd a Vss o de Vin a Vss. Si esto sucede, desconecte inmediatamente la alimentacin y encuentre y corriga el error de su circuito. El LED construido en la Tablilla de Experimentos es diferente. Si el LED solo brilla cuando est ejecutandose un programa esto puede estar asociado con la Fuente o con la Ejecucin. Cuando termina un programa porque ejecuta una instruccin END o porque se ejecuta fuera de las instruciones el LED se apagar.

Verifique que est apagado el LED de su circuuito de prueba. Mantenga presionado el Botn Push y verifique que se ilumina el LED mientras mantiene presionado el botn push.

Pgina 64 Qu es un Microcontrolador?

Funcionamiento del Circuito Botn Push

El lado izquierdo de la Figura 3-4 muestra que sucede cuando el botn push no est presionado. El circuito LED no est conectado a Vdd. Es un circuito abierto que no puede conducir corriente. Al presionar el botn push, como lo muestra el lado derecho de la figura, usted cierra la conexin entre la terminales con un metal conductor. Esto forma una trayectoria para que los electrones fluyan a travs del circuito y como consecuencia el LED se ilumina.
Vdd Vdd

1, 4 2, 3 No Current

1, 4 2, 3

Figura 3-4 El botn push est No presionado y presionado. En la izquierda el botn push sin presionar es un circuito abierto y no hay luz. En la derecha el botn esta presionado y es un circuito cerrado y emite luz.

470

Current

470

LED

LED

Vss

Vss

Su turno - Apague el LED con un botn push

La figura 3-5 muestra un circuito que hace que el LED se comporte diferente. Cuando el botn no est presionado, se ilumina el LED, cuando se presiona el botn el LED se apaga. Como este botn push conecta un conductor entre las terminales 1,,4 y 2,3 cuando se presiona, esto significa que la electricidad puede tomar la trayectoria de menor resistencia a travs del botn push en lugar de a travs del Led. A diferencia de los corto circuitos estudiados en el Recuadro de Seales de Alarma, el corto circuito del botn presionado y se refleja en las terminales del LED no daan el circuito y realizan un propsito til. Construya el circuito que muestra la Figura 3-5. Repita las pruebas que realiz en el primer circuito de botn push ahora en este nuevo circuito.

Entrada Digital Botn Push Pgina 65

Vdd 1, 4 LED 2, 3 470

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

Vin

Vss

Figura 3-5 El LED refleja el corto circuito del botn push.

Vss

Se puede conectar de esta forma el LED? Hasta ahora, el ctodo del LED se ha conectado siempre a Vss. Ahora el LED est en un lugar diferente en el circuito, y su nodo conectado a Vdd. Las personas preguntas si esta conexin no rompe las leyes del circuito y la respuesta es no. La presin elctrica que proporciona Vdd y Vss es 5 volts. El LED rojo solo necesita 1.7 volts y el resistor usar los 3.3 volts restantes sin importar el orden en que estn conectados.

ACTIVIDAD #2: LEYENDO UN BOTN PUSH CON EL BASIC STAMP


En esta actividad usted conectar un circuito botn push a el BASIC Stamp y mostrar si el botn est o no est presionado. Usted har esto escribiendo un programa PBSIC que verifique el estado del botn y lo muestre en la Terminal Debug.
Partes del Circuito Botn Push

Un botn push normalmente abierto. Un resistor de 220 (rojo-rojo-caf). Un resistor de 10 K (caf-negro-naranja). Dos alambres.
Construyendo el Circuito Botn Push para el BASIC Stamp

La figura 3-6 muestra el circuito botn push que se conecta al pin P3, E/S, del BASIC Stamp. Construya el circuito que muestra la Figura 3-6.

Pgina 66 Qu es un Microcontrolador?

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

Vin

Vss

Figura 3-6 Circuito Botn Push conectado al pin P3. En el diagrama de alambrado el resistor de 220 del lado izquierdo conecta el botn push a P3 mientras que el resistor de 10 K de la derecha conecta al botn push a Vss.

Vdd

P3 220 10 k

Vss

La figura 3-7 muestra como el BASIC Stamp ve cuando el botn push est presionado y cuando no est presionado. Cuando el botn push est presiondado, el BASIC Stamp sensa que Vdd se conecta a P3. Internamente el BASIC Stamp coloca un 1 lgico en un parte de su memoria que almacena la informacin de los pines de Entrada/Salida. Cuando el botn push no est presionado, no sensa Vdd, senda Vss a travs del los resistores de 10 y 220 . Y ahora se almacena un 0 lgico en la misma localidad de memoria que almacen el 1 cuando el botn push estaba presionado.

Entrada Digital Botn Push Pgina 67

Vdd

SOUT SIN ATN VSS P0 P1 P2 P3 P4 P5 P6 P7

24

VIN VSS RES VDD (+5V) P15 P14 P13 P12 P11 P10 P9 P8

2
3 4 5 6 7

BS2

23
22 21 20 19

1 0

18

8
9

17
16

10 k

220

10
11

15
14

12

13

BS2-IC

Figura 3-7 BASIC Stamp leyendo un botn push. Arriba, cuando est presionado el botn el BASIC Stamp lee un 1 Abajo, cuando no est presionado el botn el BASIC Stamp lee un 0

Vss Vdd
SOUT SIN ATN VSS P0 P1 P2 P3 P4 P5 P6 P7 VIN VSS RES VDD (+5V) P15 P14 P13 P12 P11 P10 P9 P8

24

2
3 4 5 6 7

BS2

23
22 21 20 19

1 0

18

8
9

17
16

10 k

220

10
11

15
14

12

13

BS2-IC

Vss

Binario y Circuitos. Para formar nmeros el sistema de base-2 nmeros usa solamente dos digitos 1 y 0 y estos valores binarios pueden transmitirse de un dispositivo a otro. El BASIC Stamp interpreta Vdd como un 1 binario y el Vss como un 0 binario. En forma semejante, cuando el BASIC Stamp fija un pin de entrada/salida a Vdd usuando un HIGH manda un 1. Cuando fija un pin de entrada/salida a Vss usando un LOW manda un 0. Esta es un forma muy comn de comunicacin de nmeros binarios usada por muchos chips de computadoras y otros dispositivos.

Programando el BASIC Stamp para Monitorear el Botn Push.

El BASIC Stamp almacena un 1 o un 0 sensando el pin P3 en una localidad de memoria llamada IN3. Este es un Programa Ejemplo que muestra como se realiza este trabajo:
Programa Ejemplo: ReadPushbuttonState.bs2

El siguiente programa hace que el BASIC Stamp verifique al botn push cada de segundo y mande el valor de IN3 a la Terminal Debug.

Pgina 68 Qu es un Microcontrolador?

La Figura 3-8 muestra la Terminal Debug mientras se ejecuta el programa. Cuando se presiona el botn push, la Terminal Debug muestra el nmero 1, y cuando el botn push no se presiona, la Terminal Debug muestra el nmero 0.

Figura 3-8 La Terminal Debug muestra los Estados del botn push. La Terminal Debug muestra un 1 cuando el botn push est presionado y un 0 cuando con est presionado.

Meta el programa ReadPushbuttonState.bs2 en el Editor de BASIC Stamp. Ejecute el programa. Verifique que la Terminal Debug muestre el valor 0 cuando el botn push no est presionado. Verifique que la Terminal Debug muestre el valor 1 cuando el botn push se mantiene presionado.
'Qu es un Microcontrolador? - ReadPushbuttonState.bs2 ' Verifica y manda el estado de botn push a Terminal Debug cada 1/4 segundo. ' {$STAMP BS2} ' {$PBASIC 2.5} DO DEBUG ? IN3 PAUSE 250 LOOP

Funcionamiento de ReadPushbuttonState.bs2

El bucle DO...LOOP en el programa se repite cada de segundo por la instruccin PAUSE 250. Cada vez que se ejecuta DO...LOOP, la instruccin DEBUG ? IN3 manda el valor que hay en IN3 a la Terminal Debug. El valor de IN3 es el Estado que el pin P3 sensa en el instante que se ejecuta la instruccin DEBUG.

Entrada Digital Botn Push Pgina 69

Su turno Un Botn Push con un Resistor en Pull-up

El circuito que acaba de trabajar tiene un resistor conectado a Vss. Este resistor se llama resistor de pull-down porque jala el voltaje de P3 hacia abajo: Vss (0 volts) cuando el botn no est presionado. La Figura 3-9 muestra un circuito botn push que usa un resistor pull-up. Este resistor jala el voltaja hacia arriba: Vdd (5 volts) cuando el botn no est presionado. Ahora se han invertido las reglas. Cuando el botn no esta presionado, IN3 almacena un 1, y cuando el botn esta presionado, IN3 almacena un 0.
El resistor de 220 se usa en este ejemplo para proteger el pin E/S del BASIC Stamp. Esta es una buena tcnica que se usa en los prototipos, en los productos este resistor se reemplaza con un alambre (ya que un alambre cuesta menos que un resistor)

Modifique su circuito como se muestra en la Figura 2-9. Vuelva a ejecutar el programa: ReadPushbuttonState.bs2 Usando la Terminal Debug, verifique que IN3 est en 2 cuando no se presiona el botn y un 0 cuando el botn est presionado.
Vdd Vin Vss X3
P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2

Vdd 10 k P3 220

Figura 3-9 Circuito Botn push modificado.

Vss

Low Activo vs High Activo. El circuito botn push de la Figura 3-9 se llama Low activo poque manda a el BASIC Stamp una seal baja (Vss) cuando el botn est presionado. El circuito botn push de la Figura 3-6 se llama High activo poque manda una seal alta (Vdd) cuando el botn est presionado.

Pgina 70 Qu es un Microcontrolador?

ACTIVIDAD #3: CONTROL CON BOTN PUSH DE UN CIRCUITO LED


La figura 3-10 muestra una vista amplificada de un botn push y un LED que se usan para ajustar los parmetros de un monitor de computadora. Este es uno de muchos aparatos que tienen un botn push que usted puede presionar para ajustar el aparato y un LED que le muestra cual es el estado del aparato.

Figura 3-10 Botn y LED de un Monitor de Computadora

El BASIC Stamp se puede programar para que tome decisiones basadas en lo que sensa. Por ejemplo, se puede programar para que parpadee el LED 10 veces por segundo cuando se presiona el botn.
Botn y partes del Circuito LED

Un botn push normalmente abierto. Un resistor de 20 K (caf-negro-naranja). Un LED de cualquier color. Un resistor de 220 (rojo-rojo-caf). Un resistor de 470 (amarillo-violeta-caf). Varios alambres.
Construyendo los circuito del Botn Push y el LED

La Figura 3-11 muestra el circuito del botn push usado en la actividad que acaba de terminar junto con el circuito LED del Captulo 2, Actividad #2. Construya el circuito que muestra la Figura 3-11.

Entrada Digital Botn Push Pgina 71

P14 470 LED


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

Vin

Vss

Vss Vdd

Figura 3-11 Botn push y circuito LED.

P3 220 10 k

Vss

Programando el control del botn push

El BASIC Stamp se puede programar para que tome decisiones usando las instrucciones IF..THEN...ELSE. El Programa Ejemplo que usted ejecutar har parpadear el LED cuando se presione el botn push. Cada vez que se ejecuta el bucle DO...LOOP, la instruccin IF...THE...ELSE verifica el estado del botn push y decide si parpadea o no parpadea el LED.
Programa Ejemplo: PushbuttonControlledLed.bs2

Meta el programa PushbuttonControlledLed.bs2 en el Editor del BASIC Stamp y ejectelo. Verifique que el LED parpadea mientras mantiene presionado el botn push. Verifique que el LED no parpadea cuando no presiona el botn push.

Pgina 72 Qu es un Microcontrolador?

' Qu es un Microcontrolador - PushbuttonControlledLed.bs2 ' Verifique el estado del botn 10 veces por segundo y cuando se presiona parpadea el LED. ' {$STAMP BS2} ' {$PBASIC 2.5} DO DEBUG ? IN3 IF (IN3 = 1) THEN HIGH 14 PAUSE 50 LOW 14 PAUSE 50 ELSE PAUSE 100 ENDIF LOOP

Funcionamiento del programa: PushbuttonControlledLed.bs2

Este programa es una versin modificada de ReadPushbuttonState.bs2 estudiado en la actividad anterior. Las instrucciones DO...LOOP y DEBUG ? IN3 son las mismas. La instruccin PAUSE 250 se reemplaz con las instrucciones IF...THEN...ELSE. Cuando es verdadera la condicin despus de IF (IN3=1) se ejecutarn las istruccines que estn despus de THEN. Ellas se ejecutarn hasta llegar a ELSE, en este punto el programa brinca hasta ENDIF y avanza. Cuando la condicin posterior de IF no es verdadera (IN3=1), las instrucciones despus de la instruccin ELSE se ejecutarn hasta llegar a ENDIF. Ustede puede hacer una lista detallada de lo que debe hacer, para que le ayude a planear el programa o para describir lo que hace . Esta clase de lista se llama Pseudo Cdigo [XEPseudo Cdigo} y el ejemplo de abajo utiliza el pseudo cdigo para describir el funcionamiento de PushbuttonControlledLed.bs2. Haga varias veces las instrucciones que estn entre Aqu y la instruccin Loop. o Muestre el valor de IN3 en la Terminal Debug o Si el valor de IN3 es 1, Entonces El LED se ilumina Espere un 1/20 de segundo El LED se apaga

Entrada Digital Botn Push Pgina 73

o Loop

Espere un 1/20 de segundo Else (si el valor de IN2 es 0) no haga nada solo espere la misma cantidad de tiempo que hubiera tomado el parpadeo del LED (1/10 de segundo

Su turno Ms rpido/Ms lento

Guarde el programa ejemplo con un nombre diferente. Modifique el programa de tal forma que el LED parpadee dos veces ms rpido cuando mantiene usted presionado el botn push. Modifique el prograga de tal forma que el LED parpadee la mitad de rpido cuando mantiene presionado el botn push.

ACTIVIDAD #4: DOS BOTONES PUSH CONTROLANDO DOS CIRCUITOS LEDS


Vamos agregar al proyecto un segundo botn push y analizar como funciona. Para hacer esta actividad ms interesante, agregaremos un segundo circuito LED para usar el segundo botn push para que lo controle.
Partes del botn push y el circuito LED

Dos botones push normalmente abiertos. Dos resistores de 10 K (caf-negro-naranja). Dos resistores de 470 (amarillo-violeta-caf). Dos resistores de 220 (rojo-rojo-caf). Dos Led de cualquier color. Alambres para puentes.
Agregando un botn push y un circuito Led.

La Figura 3-12 muestra un segundo circuit LED y botn push que se agrega al circuito que usted verific en la actividad anterior. Construya el circuito que muestra la Figura 3-12. Si necesita ayuda para el circuito mostrado en el diagrama, use como gua el diagrama de alambrado que muestra la Figura 3-13. Modifique el programa ReadPushbuttonState.bs2 para que ahora lea IN4 en lugar de IN3, y selo para verificar su segundo circuito botn push.

Pgina 74 Qu es un Microcontrolador?

P15 470 P14 470 LED Vss Vss Vdd P4 220 P3 220 10 k 10 k Vdd LED

Figura 3-12 Diagrama Esquemtico de los Botones push y LEDs.

Vss

Vss

Los Puntos indican conexiones. Hay 3 lugares donde se intersectan las lneas en la Figura 3-12, pero solamente dos de estas intersecciones tienen puntos. Cuando dos lneas se insersectan con un punto, esto significa que estn conectadas electricamente. Por ejemplo, el resistor de 10 K en la parte inferior derecha de la Figura 3-12 tiene una de sus terminales P3 conectadas al botn push y la otra a la terminal del resistorde 220. Cuando dos lines se intersectan pero no hay punto, esto significa que estos dos alambres NO ESTN conectadas elctricamente. Por ejemplo, la lnea que conecta a P4 de botn push y el resistor de 10 K no est conectado con P3 del botn push porque no hay punto en esa interseccin.

Entrada Digital Botn Push Pgina 75

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

Vin

Vss

++

Figura 3-13 Diagrama de alambrado de dos Botones push y dos LEDs.

Programacin de Control del Botn push

En la actividad anterior usted experiment tomar decisiones usando la intruccin: IF...THEN...ELSE. Existe la instruccin IF...ELSEIF...ELSE. Esto es grandioso para decidir cual LED va a parpadear. El siguiente Programa Ejemplo mostra como funciona.
Programa Ejemplo: PushbuttonControlOfTwoLeds.bs2

Meta y ejecute PushbuttonControlOfTwoLeds.bs2 en el Editor BASIC Stamp. Verifique que parpadea el LED conectado en P14 mientras mantiene presionado el botn push conecta en P3. Tambin verifique que parpadea el LED conectado en P15mientras mantiene presionado el botn push conecta en P4.
' Qu es un Microcontrolador - PushbuttonControlOfTwoLeds.bs2 ' Si P3 est presionado parpadea el LED de P14, si P4 est presionado parpadea el LED de P15. ' P4 est presionado. ' {$STAMP BS2} ' {$PBASIC 2.5} PAUSE 1000 DO

Pgina 76 Qu es un Microcontrolador?

DEBUG HOME DEBUG ? IN4 DEBUG ? IN3 IF (IN3 = 1) THEN HIGH 14 PAUSE 50 ELSEIF (IN4 = 1) THEN HIGH 15 PAUSE 50 ELSE PAUSE 50 ENDIF LOW 14 LOW 15 PAUSE 50 LOOP

Funcionamiento del programa PushbuttonControlOfTwoLeds.bs2

Si la Terminal Debug muestra a IN3 y IN4 rotando es muy difcil leer lo que se est mostrando. Una forma de detener la rotacin es mandando siempte el cursor a la posicin izquierda superior de la Terminal Debug utilizando el Control de Caracteres HOME:
DEBUG HOME

Al mandar el curso a la posicin izquierda superior cada vez a travs del bucle DO...LOOP, las instrucciones
DEBUG ? IN4 DEBUG ? IN3

Se muestran otra vez los valores de IN3 y IN4 en la misma parte de la Terminal Debug La palabra clave DO inicia el bucle de este programa
DO

Estas instrucciones de la frase IF son las mismas del Programa Ejemplo de la actividad anterior.
IF (IN3 = 1) THEN HIGH 14 PAUSE 50

Entrada Digital Botn Push Pgina 77

Aqu es donde est la ayuda de ELSEIF. Si IN3 no es 1 pero IN4 es 1, hacemos que conecte el LED de P15 en lugar del LED conectado en P14.
ELSEIF (IN4 = 1) THEN HIGH 15 PAUSE 50

Si no es verdadera ninguna frase , deseamos que se espere 50 ms sin cambiar el estado de cualquier circuito LED.
ELSE PAUSE 50

Cuando hayas teminado con todas las necisiones, no olvides ENDIF.


ENDIF

Es hora de apagar el LED y hacer pausa otra vez. Tu podras tratar de decidir que LED quieres que parpadee. Las instrucciones de PBASIC lo ejecutan bonito y rpido, entonces podemos apagarlos y olvidarnos de tomar decisiones?
LOW 14 LOW 15 PAUSE 50

La instruccin LOOP regresa el programa a la instruccin DO al proceso de verificar los botones push y cambiar los estados de los LED y empezar una y otra y otra vez.
LOOP

Su turno - Podemos presionar los dos Botones Push?

El Programa Ejemplo tiene una falla. Trate de presionar ambos botones al mismo tiempo y observe la falla. Usted podra espererar que ambos LEDs parpadeen, pero no lo hacen porque solamente se est ejecutando un bloque de cdigos IF...ELSEIF...ELSE antes de que brinque al siguiente ENDIF. De esta forma puede usted resolver este problema o falla. Guarde en programa PushbuttonControlOfTwoLeds.bs2 con un nombre diferente. Reemplace la instruccin IF y el siguiente bloque:
IF ( IN3 = 1) THEN HIGH 14 PAUSE 50

Con el siguiente bloque

Pgina 78 Qu es un Microcontrolador?

IF ( IN3 = 1) AND (IN4 = 1) THEN HIGH 14 HIGH 15 PAUSE 50


Un Bloque de Cdigos es un grupo de instrucciones. Si la frase IF de arriba tiene un bloque de cdigos con tres instrucciones (HIGH, HIGH y PAUSE). Entonces la frase de ELSEIF tiene un bloque de cdigoscon dos instrucciones (HIGH, pause)

Ejecute su programa modificado y vea si maneja los dos botones push y los circuitos LED como usted esperara.
La palabra clave AND se puede usar en una instruccin IF...THEN para verificar si es verdadera ms de una condicin. Todas las condiciones con AND deben ser verdaderas para que la frase IF sea verdadera. La palabra clave OR se puede usar para verificar si por lo menos una de la condiciones es verdadera.

Tambin puede usted modificar el programa para que el LED que parpadea lo haga con diferentes cantidades de tiempo. Por ejemplo, usted puede reducir Duration de la Instruccin PAUSE a 10 en ambos botones push, e incrementar PAUSE para el LED en P14 hasta 100, e incrementar PASE para el LED P15 hasta 200. Modifique las instrucciones PAUSE en el IF y en las dos frases de ELSEIF como se coment. Ejecute el programa modificado. Observe la diferencia en el comportamiento de cada LED.

ACTIVIDAD #5: PRUEBA DEL TIEMPO DE REACCIN DE UN TEMPORIZADOR


Usted es el Ingeniero de Sistemas Incrustados en una compaa de Videojuegos. El Departamento de Mercadotecnia recomienda que se debe agregar un circuito para verificar el tiempo de reaccin para el siguiente Controlador de Juego Porttil. Su siguiente tarea es desarrollar una prueba para verifica el tiempo de reaccin. La solucin que usted construir y verificar en esta actividad es un ejemplo de cmo resolver este problema, pero sta no la nica solucin. Antes de continuar, detengase un momento para pensar como diseara esta prueba de reaccin.

Entrada Digital Botn Push Pgina 79

Partes del Juego Tiempo de Reaccin de un Temporizador

Un LED Bicolor. Un Resistor de 470 (amarillo-violeta-caf). Un Botn push normalmente abierto. Un Resistor de 10 K (caf-negro-naranja). Un Resistor de 220 (rojo-rojo-caf). Alambres para puentes.
Construccin del Circuito Tiempo de Reaccin de un Temporizador

La Figura 3-14 muestra los diagramas esquemtico y alambrado de un circuito que puede usarse con el BASIC Stampo para hace un juego de Tiempo de Reaccin. Construya el circuito que muestra la Figura 3-14. Ejecute el programa TestBiColorLED.bs2 del captulo 2, actividad #5 para verificar el circuito LED Bicolor y asegurese que est bien alambrado. Si usted reconstruye el circuito botn push para esta actividad, ejecute el programa ReadPushbuttonState.bs2 de la Acitivad #2 de este captulo para asegurarse que el botn push est trabajando correctamente.
P15 1 1 2 470 Vdd
X3
P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2

2
Vdd Vin Vss

P14

Figura 3-14 Circuito del Juego Tiempo de Reaccin

P3 220 10 k

Vss

Pgina 80 Qu es un Microcontrolador?

Programacin del Tiempo de Reaccin

El siguiente Programa Ejemplo apagar el LED Bicolor hasta que el Jugador mantenga presionado el botn push. Cuando el botn push se mantiene presionado, el LED se iluminar rojo por un corto perodo de tiempo. Cuando se ilumina verde, el jugador tiene que soltar el botn push tan pronto como l o ella puedan. As el programa mide el tiempo de reaccin que emplea el jugador en soltar el botn push para iluminarse verde. El programa ejemplo tambin muestra como funcionan los conceptos polling y conteo. Polling es el proceso de verificar algo una vez y otra vez muy rpidamente para ver si este proceso ha cambiado. Conteo es el proceso de agregar un nmero a una variable cada vez que se hace (o no se hace) algo. En este programa, el BASIC Stamp verificar el cambio Polling cuando el LED Bicolor cambia a verde hasta que se libera el botn push. Este esperar 1/1000 de segundo usando la instruccin PAUSE 1. Cada vez que verifica y el botn no se ha liberado, agregar un 1 a la variable de Conteo llamada timeCounter. Cuando el botn push se ha liberado, el programa deja de verificar Polling y manda un mensaje a la Terminal DEBUG y sta muestra el valor de la variable timeCounter.
Programa Ejemplo. ReactionTimer.bs2

Meta y ejecute el programa ReactionTimer.bs2 Siga las indicaciones de la Terminal Debug (vea la Figura 3-15)

Figura 3-15 Instrucciones de Tiempo de Reaccin en la Terminal Debug.

Entrada Digital Botn Push Pgina 81

' Qu es un Microcontrolador? - ReactionTimer.bs2 ' Prueba del tiempo de reaccin del botn y un LED bicolor. ' {$STAMP BS2} ' {$PBASIC 2.5} PAUSE 1000 timeCounter VAR Word ' Espera 1 s antes 1er mensaje. ' Declara variable para almacenar tiempo.

DEBUG "Press and hold pushbutton", CR, ' Muestra instrucciones tiempo reac. "to make light turn red.", CR, CR, "When light turns green, let", CR, "go as fast as you can.", CR, CR DO DO LOOP UNTIL IN3 = 1 HIGH 14 LOW 15 PAUSE 1000 LOW 14 HIGH 15 timeCounter = 0 DO PAUSE 1 timeCounter = timeCounter + 1 LOOP UNTIL IN3 = 0 LOW 15 'hasta liberar el botn. ' LED Bicolor Apagado. ' Comienza bucle principal. ' Se repite el bucle anidado... ' hasta que se presiona botn. ' LED Bicolor en rojo.

' Retardo 1 segundo. ' LED Bicolor en verde.

' Carga Counter con cero. ' Bucle anidado, cuenta tiempo.

DEBUG "Your time was ", DEC timeCounter, ' Muestra medicin de tiempo. " ms.", CR, CR, "To play again, hold the ", CR, ' Instrucciones para jugar otra vez. "button down again.", CR, CR LOOP ' Regresa para comenzar bucle principal".

Pgina 82 Qu es un Microcontrolador?

Funcionamiento del Programa ReactionTimer.bs2

Como el programa tendr que mantener identificado el nmero de veces que se verific (Polling) el botn de push, declararemos una variable que se llama timeCounter.
Variables Inicializando en Cero: Cuando declaramos una variable en PBASIC, automticamente su valor es CERO hasta que una instruccin la ajusta a su nuevo valor.

La instruccin DEBUG contiene instrucciones para el jugador del juego.


DEBUG Mantenga presionado el botn push, CR para iliminar el LED rojo. , CR, CR, cuando el LED se haga verde , CR, hgalo tan rpido como pueda. . CR, CR

Las instrucciones DO...LOOP se pueden anidar. En otras palabras, usted puede color un bucle DO...LOOP dentro de otro bucle DO...LOOP.
DO Comienza el bucle principal. DO Se repite el bucle anidado... LOOP UNTIL IN3 = 1 hasta presiona el botn push. Aqu esta esl resto del programa. LOOP

Merece nuestra atencin el bucle interno DO...LOOP. Un bucle DO...LOOP puede usar una condicin para decidir si se sale o no se sale del bucle y se mueve a las siguientes instrucciones. El bucle DO...LOOP se repite as mismo todo el tiempo que el botn push no est presionado (IN3 = 0). El bucle DO...LOOP se ejecutar una vez y otra vez hasta que IN3 = 1. Entonces, el progama se mover a la siguiente instruccin despus de la frase LOOP UNTIL. Este es un ejemplo de Polling. El bucle DO...LOOP UNTIL verifica hasta que se presiona el botn push.
DO LOOP UNTIL IN3 = 1 Se repite el bucle anidado... hasta que se presiona el botn push

Las instrucciones que siguen inmediatamente despues de la frase LOOP UNTIL cambian el LED Bicolor rojo, se mantiene as un segundo y luego se ilumina verde.
HIGH LOW PAUSE LOW 14 15 100 14 LED Bicolor en rojo Retardo de 1 segundo LED Bicolor en verde

Entrada Digital Botn Push Pgina 83

HIGH 15

Tan pronto como el LED Bicolor se ilumina verde, es momento de empezar a contar para saber cuanto tiempo utiliza el jugador en liberar el botn push. La variable timeCount se ajusta en cero, y entonces otro bucle DO...LOOP con la condicin UNTIL empieza a repetirse a si mismo. Y se repite as mismo hasta que el jugador liber el botn push (IN3=0). Cada vez que pasa por el bucle, el BASIC stamp lo retarda 1 milisegundo usando PAUSE 1, y tambin agrega un 1 al valor de la variable timeCounter.
TimeCounter = 0 Fija el timeCounter en cero DO Bucle anidado, cuenta el tiempo PAUSE = 1 timeCounter = timeCounter + 1 LOOP UNTIL IN3 = 0 hasta que se libera el botn push

Despus de liberar el botn push, el LED Bicolor se apaga.


LOW 15

Los resultados se muestran en la Terminal Debug.


DEBUG "Su tiempo fue ", DEC timeCounter, " ms.", CR, CR, "Para volver a jugar, mantenga presionado ", CR, "nuevamente el botn.", CR, CR

La ltima frase del programa es LOOP, que regresa al programa al primer DO.
Su turno Revisin del Diseo (Topicos Avanzados)

El departamento de Mercadotecnia di su prototipo a algunos jugadores. Cuando los jugadores lo analizaron, el departamento de Mercadotecnia regres a usted una lista de tres problemas que tiene que corregir antes de construir su nuevo prototipo con su controlador. Guarde el programa Reaction Timer-bs2 con un nuevo nombre (por ejemplo: ReactionTimerYourTurn.bs2) En seguida se analiza la lista de los problemas y sus soluciones. Problema 1: Cuando el jugador mantiene presionado el botn push durante 30 segundos, su scores es realmente alrededor de 14,000 ms o 14 segundos. Esto se tiene que corregir!

Pgina 84 Qu es un Microcontrolador?

Se requiere 1 ms para la ejecucin del mismo bucle y agregar un 1 a la variable timeCounter sin incluir la instruccin PAUSE 1. A esto se le llama Cdigo sobrepasado, y es la cantidad de tiempo que le toma a BASIC Stamp para ejecutar las instrucciones. Una solucin rpida que mejorar la exactitud es volver comentario la instruccin PAUSE 1, agregandole un apstrofe a su izquierda.
PAUSE 1

Haga que PAUSE 1 sea un comentario y verifique para ver la exactitud del programa. En lugar de cambiar delay a comentario, otra forma para solucionar el programa es multiplicar su resultado por dos. Por ejemplo, justamente antes de la instruccin DEBUG que muestra el nmero de milisegundo, usted puede insertar una unstruccin que multiplique el resultado por dos:
timeCounter = timeCounter * 2 <- Agregue este DEBUG Su tiempo fue, DEC timeCounter, ms., CR, CR

Quite el comentario de la instruccin PAUSE borrando el apstrofe e intente la solucin de la multiplicacin por dos.
Para mayor Precisin usted puede usar el operador */ para multiplicar un valor con una fraccin. No es dificil usar el operador */ as se hace: 1. 2. 3. 4. Coloque el valor o variable que desea multiplica por un valor fraccional antes del operador */. Tome el valor fraccional que usted desea usar y multiplquelo por 256. Redondee el valor a la derecha del punto decimal. Coloque el valor redondeado despus del operador */.

Ejemplo: Deseamos multiplicar la variable timeCounter por 3. 1. Coloque timeCounte a la izquierda del operador */ timeCounter = timeCounter */ 2. 3. 4. Multiplique el valor fraccional por 256: 3.69x256 = 944.64 Redondee 944.64 a 945 Coloque el valor a la derecha del operador */ timeCounter = timeCounter */ 945 multiplique por 3.69

Entrada Digital Botn Push Pgina 85

La multiplicacin de 14,000 por 2 da, un escalamiento a 28,000 este valor no es 30,000 30,000 entre 14,000 = 2.14. Multiplique por 2.14 con el operador */ para aumentar la precisin necesitamos saber cuntos 256 hay en 2.14. Entonces 2.14x256 = 547.84 = 548. Usted puede usar este valor y el operador */.
timeCounter = timeCounter * 2

Reemplace timeCounter = timeCounter * 2 con timeCounter */ 548 y vuelva a verificar su programa. Su prueba de 30-segundos con el original, el programa sin modificar genera un valor que es ligeramente diferente de 14,000. Entonces, usted puede usar el mismo procedimiento con sus resultados de prueba para calcular el valor para que el operador */ haga ms precisos sus resultados. Intntelo. Problema 2. Los jugadores rapidamente calcularon que el retardo de rojo a verde es de 1 segundo. Despus de jugar varias veces, estaban preparados para predecir cuando ir y su score no reflej su tiempo verdadero de reaccin. El BASIC Stamp tiene la instruccin RANDOM. As se modifica su cdigo para un nmero al azar. En el principio de su cdigo agregue una declaracin para una nueva variable llamada value, y pngala en 23. El valor 23 se llama semilla porque comienza la secuencia de un pseudo nmero al azar.
timeCounter VAR Word value VAR Byte value = 23 ' <- Agregue esto ' <- Agregue esto

Justo antes de la instruccin PAUSE 1000 dentro del bucle DO...LOOP, use la instruccin RANDOM para darle a value un nuevo valor random de la secuencia de un pseudo random que empieza con 23.
RANDOM value DEBUG "Delay time ", ? 1000 + value, CR ' <- Agregue esto ' <- Agregue esto

Modifique la instruccin PAUSE 1000 para que se agregue el value random al argumento de Duration.

Pgina 86 Qu es un Microcontrolador?

PAUSE 1000 + value LOW 14 HIGH 15

' <- Modifique esto

Como el valor ms grande que puede almacenar un Byte es 255, la instruccin PAUSE solamente vara de segundo. Usted puede multiplicar la variable value por 4 para hacer que el retardo de luz roja vare desde 1 hasta justamente 2 segundos.
DEBUG "Delay time ", ? 1000 + (value*4), CR ' <- Modifique PAUSE 1000 + (value * 4) ' <- Modifique esto nuevamente
Qu es un Algoritmo? Un Algoritmo es una secuencia de operaciones matemticas. Qu es Pseudo random? Pseudo random significa aquello que parece random pero que realmente no lo es. Cada vez que usted empieza el programa una vez y otra vez, usted obtendr la misma secuencia de valores. Qu es una semilla? Una semilla es un valor que se usa para iniciar la secuencia pseudo random. Si usted usa un valor diferente para la semilla (cambie el valor 23 por otro nmero), se obtendr una diferente secuencia pseudo random.

Problema 3. Un jugador que presiona el botn antes que cambie a luz verde obtiene un muy buen irrasonable score (1 ms) Su microcontrolador necesita calcular si el jugador est haciendo trampa. El pseudo cdigo se introdujo cerca del final de la Actividad #3 en este captulo. Aqu estn algunos pseudo cdigos que le ayudan a aplicar la frase IF...THEN...ELSE para resolver el problema. Considere que ha hecho los cambios de los problemas 1 y3, si el jugador libera el botn antes que la luz sea verde el timeCounter ser ahora 2 en lugar de 1. Los cambios abajo mostrados harn que funcione el timeCounter ya sea valga 1 o 2. Si el valor de timeCounter es menor o igual a 2 (timeCounter<=2) o Muestre un mensaje que le diga al jugador que l o ella tiene que esperar hasta que la luz sea verde para que pueda presionar el botn. Else, (si el valor de timeCounter es mayor que 1) o Muestre el valor de timeCounter (como lo hace el programa ReactionTimer.bs2) en milisegundos. End If Muestre el mensaje Jugar nuevamente

Entrada Digital Botn Push Pgina 87

Modifique su programas para crear este pseudo cdigo en PBASIC para as resolver el problema de hacer trampa.

RESUMEN
Este captulo introdujo el botn push y algunos circuitos comunes con botn push. Tambin introdujo como construir y verificar un circuito botn push y como usar el BASIC Stamp para leer el estado de uno o ms botones push. Se program el BASIC Stamp para tomar decisiones basado en el estado (s) de los botones push y sta informacin se utiliz para controlar LEDs. Se construy un juego de reaccin de tiempo usando estos conceptos. Adems se program a el BASIC Stamp para controlar los LEDs y verificar un botn push y tomar mediciones de tiempo. Se introdujeron varios conceptos de programacin, que incluyen conteo, pseudo cdigos para planeacin de flujo de programas, exceso de cdigo en aplicaciones sensibles al tiempo y valores de semillas para eventos pseudo random. Se construyeron circuitos de lectura individuales de botn push usando variables especiales de e/s (IN3, IN4, etc) usando el BASIC Stamp, y se hicieron decisiones basados en estos valores usando las instrucciones IF...THEN...ELSE, y se introdujeron las instrucciones de bloque IF...ELSEIF...ELSE. Para evaluar ms de una condicin, se introdujeron los operadores AND y OR. Se agreg una condicicin a un bucle DO...LOOP usando la palabra clave UNTIL, adems se introdujo el anidado de bucles DO...LOOP. Para agregar un elemento no predecible se introdujo la instruccin RANDOM a una aplicacin del Tiempo de Reaccin.
Preguntas

1. Cul es la diferencia entre mandar y recibir seales HIGH y LOW usando el BASIC Stamp? 2. Respecto a un botn push, que significa normalmente abierto? 3. Qu sucede entre las terminales de un botn normalmente abierto cuando se presiona? 4. Cul es el valor de IN3 cuando se conecta un botn push a Vdd? Cul es el valor de IN3 cuando se conecta un botn push a Vss? 5. Qu hace la instruccin DEBUG ? IN3?

Pgina 88 Qu es un Microcontrolador?

6. Qu clase de bloques de cdigo se pueden usar para tomar decisiones basadas en el valor de uno o ms botones push? 7. Qu hace el control de caracteres HOME en la frase DEBUG HOME?
Ejercicios

1. Explique como se modifica en programa ReadPushbuttonState.bs2 para que lea el botn push cada segundo en lugar de cada de segundo. 2. Explique como se modifica el programa ReadPushbuttonState.bs2 para que lea un circuito de un botn push normalmente abierto con un resistor de pull-up conectado al pin E/S P6.
Proyecto

1. Mofique el programa ReactionTimer.bs2 para que jueguen dos jugadores. Agregue un segundo botn conectado al pin P4 para el segundo jugador.
Soluciones

Q1. Al mandar el BASIC Stamp usa un pin E/S como salida, en tanto que al recibir usa el pin E/S como entrada. Q2. Normalmente abierto significa que el estado normal del botn push (sin presionar) forma un circuito abierto. Q3. Cuando se presiona, la distancia entre la terminales se unen con un metal conductor. La corriente puede circular a travs del botn push. Q4. IN3 = 1cuando el botn se conecta a Vdd. IN3 = 0 cuando el botn push se conecta a Vss. Q5. DEBUG ? IN3 muestra el texto IN3 = seguido por el valor almacenado en IN3 (el valor puede ser un 1 o un 0 dependiendo del pin P3), y le sigue un regreso. Q6. Los bucles IFTHENELSE y IFELSEIFELSE. Q7. El control de caracteres HOME manda al cursor a la posicin izquierda superior de la Terminal Debub. E1. En el programa el bucle DO...LOOP se repite cada segundo por la instruccin PAUSE 250. Para repetirlo cada segundo cambie PAUSE 250 (250 ms = 0.25s =1/4 s) por PAUSE 1000 (1000 mse = 1s)
DO DEBUG ? IN3 PAUSE 1000 LOOP

Entrada Digital Botn Push Pgina 89

E2. Para leer el pin P6 reemplace IN3 con IN6. El programa slo muestra el estado del botn push, y no usa el valor para tomar decisiones, por eso no importa si el resistor es pull-up o pull-down. La instruccin DEBUG mostrar cualquier estado del botn.
DO DEBUG ? IN6 PAUSE 250 LOOP

P1. Primero se agreg un botn push para el segundo jugador y se conect al BASIC Stamp en el pin P4. El esquemtico es el de la Figura 3-13.
P15
Vdd Vdd

1
P4 220 P3 220 10 k 10 k

P14 470

2
Vss

Vss

Abajo se incluyen secciones del programa solucin, pero recuerde que las soluciones pueden codificarse de diferentes maneras. Sin embargo, la mayora de las soluciones inclurn las siguentes modificaciones: Use dos variables para controlar los tiempos de dos jugadores.
timeCounterA VAR timeCounterB VAR Word Word ' Tiempo del jugador A ' Tiempo del jugador B

Cambie las instrucciones para mostrar los dos botones push


DEBUG Mantenga presionados los botones push, CR, DEBUG Otra vez abajo los botones push, CR, CR

Espere que los dos botones estn presionados antes que el LED sea rojo, usando el operado AND.
LOOP UNTIL {IN3 = 1} AND {IN4 = 1}

Pgina 90 Qu es un Microcontrolador?

Espere que los dos botenes se liberen para el tiempo final, y use nuevamente el operador AND.
LOOP UNTIL {IN3 = 0} AND {IN4 = 0}

Sume lgicamente para decidir que tiempo del jugadors se incrementa:


IF (IN3 = 1) THEN timeCounterA = timeCounterA + 1 ENDIF IF (IN4 = 1) THEN timeCounterB = timeCounterB + 1 ENDIF

Cambie el tiempo de la pantalla para mostrar los tiempos de ambos jugadores.


DEBUG "Tiempo del Jugador A : DEBUG "Tiempo del Jugador B : ", DEC timeCounterA, " ms. ", CR ", DEC timeCounterA, " ms. ", CR

Sume lgicamente para mostrar que jugador tiene el tiempo de reaccin ms rpido.
IF (Tiempo del ContadorA < Tiempo del ContadorB) THEN DEBUG "El jugador A es el ganador!", CR ELSEIF (Tiempo del ContadorB < Tiempo del ContadorA) THEN DEBUG "El jugador B es el ganador!", CR ELSE DEBUG "Es un empate!", CR ENDIF

Abajo se muestra la solucin completa.


' Que es un Microcontrolador - Ch03Prj01_TwoPlayerReactionTimer.bs2 ' Verifique el tiempo de reaccin con un boton y un LED bicolor. ' Agregue un segundo jugador y un segundo botn. Ambos jugadores ' juegan al mismo tiempo usando el mismo LED.Gana quien libera ms rapido el boton. ' Pin P3: Jugador A Pushbutton, Active High ' Pin P4: Jugador B Pushbutton, Active High ' {$STAMP BS2} ' {$PBASIC 2.5} timeCounterA VAR timeCounterB VAR Word Word ' Tiempo del jugador A ' Tiempo del jugador B

Entrada Digital Botn Push Pgina 91

PAUSE 1000 mensaje

' 1 s antes del primer

DEBUG "Mantenga presionados los botones", CR, ' Muestra el t de reaccin "para que se ilumine el LED rojo.", CR, CR, ' instrucciones. "Cuando cambie a verde, let", CR, "juege tan rapido como pueda.", CR, CR DO ' Comienza el bucle principal. DO ' El bucle hasta que ambos presionan ' Nada LOOP UNTIL (IN3 = 1) AND (IN4 = 1) HIGH 14 LOW 15 PAUSE 1000 LOW 14 HIGH 15 timeCounterA = 0 timeCounterB = 0 DO PAUSE 1 IF (IN3 = 1) THEN ' Si el botn todava est presionado, timeCounterA = timeCounterA + 1 ' incremente el contador ENDIF IF (IN4 = 1) THEN timeCounterB = timeCounterB + 1 ENDIF LOOP UNTIL (IN3 = 0) AND (IN4 = 0) LOW 15 ' Esta en bucle hasta que ambos ' botones se liberen. ' LED Bicolor apagado. ' LED Bicolor rojo.

' Retardo de 1 segundo. ' LED Bicolor verde

' Fija el timeCounters a cero

DEBUG "Tiempo del jugador A: ", DEC timeCounterA, " ms. ", CR DEBUG "Tiempo del jugador B: ", DEC timeCounterB, " ms. ", CR, CR IF (timeCounterA < timeCounterB) THEN DEBUG "El jugador A es el ganador!", CR ELSEIF (Tiempo del jugador B < timeCounterA) THEN DEBUG "El jugador B es el ganador!", CR ELSE ' Son iguales los tiempos A & B DEBUG "Es un empate!", CR ENDIF DEBUG CR DEBUG "Para jugar otra vez ", CR ' Instrucciones para jugar otra vez. DEBUG "presionen los botones.", CR, CR LOOP ' Regresa a iniciar el bucle principal.

Pgina 92 Qu es un Microcontrolador?

Controlando el Movimiento Pgina 93

Captulo 4: Controlando el Movimiento


MICROCONTROL DEL MOVIMIENTO
Los microcontroladores cada da hacen que se muevan las cosas de su alrededor con seguridad al lugar correcto. Si tiene usted una impresora de inyeccin de tinta, la cabeza impresora que se mueve sobre la hoja al imprimir la mueve un motor paso a paso que controla un microcontrolador. La puerta de la tienda de abarrotes que usted atraviesa est controlada por un microcontrolador, y la charola que deposita el CD en su DVD tambin est controlada por un microcontrolador.

SEALES ENCENDIDO/APAGADO Y MOVIMIENTO DEL MOTOR


Los motores microcontrolados reciben secuencias de seales high y low similares a las que usted ha estado enviando a los LEDs. La diferencia es que el microcontrolador tiene que mandar estas seales a velocidades que son generalmente ms rpidas que los ejemplos de parpadeo de LEDs del captulo 2. Si usted fuera a utilizar un circuito LED para monitorear seales de control, algunas haran que el LED parpadeara tan rpido que el ojo humano no podra detectar sus cambios. Paracera que el LED brilla atenuado. Otros mostrarian un parpadeo muy rpido y algunos podran ser ms discernibles. Algunos motores requieren mucha circuitera para ayudarle al microcontrolador que haga que trabajen, otros motores requieren parte mecnicas extras para hacer que trabajen correctamente en las mquinas. Para empezar, de todos los diferentes tipos de motores el motor servo con el que usted experimentar en este captulo es el ms sencillo. Como pronto usted lo ver el BASIC Stamp lo controla facilmente y requiere pocos o ningn circuito adicional, y tiene una salida mecnica que es fcil de conectar a las cosas que usted quiere mover.

PRESENTANDO AL SERVOMOTOR
Un motor servo para hoby es un dispositivo que controla la posicin, usted los encuentra en carros de radiocontrol RC, barcos o aviones. En carros RC, el servo mantiene el volante para controlar que tan brusco gira el carro. En un barco RC, mantiene el timn en posicin para dar vueltas. Los aviones RC tpicamente tienen varios servos para la posicin de los diferentes alerones para controlar el movimiento del avin. En vehculos impulsados por mquinas de gas, otro servo mueve la leva de la mquina para controlar su velocidad. Un ejemplo de un avin RC y su radio control lo muestra la Figura 4-1. El hobista vuela el avin manipulando la palanca del joystic del radio control, y ste hace que los servos del avin controlen las posiciones de los alerones y el timn del avin.

Pgina 94 Qu es un Microcontrolador?

Figura 4-1 Modelo de Avin y su Radio control.

Entonces, cmo mantiene el joystich del radio control una cierta posicin que hace que el alern del avin mantenga cierta posicin? El radio control convierte la posicin del joystick en pulsos de radio que duran cierta cantidad de tiempo. El tiempo que dura cada pulso indica la posicin de uno de los joysticks. En el avin RC, un radio-receptor convierte estos pulsos de radio en pulsos digitales. (seales high/low) y las manda a los servos del avin. Cada servo tiene un circuito interno que convierte estos pulsos digitales a una posicin que conserva el servo. La cantidad de tiempo que duran cada pulso es lo que le indica a los servos la posicin que deben mantener. Estos pulsos de control slo duran unas pocas milsimas de segundo, y se repiten cada 40 a 50 veces por segundo para hacer que el servo mantenga la posicin indicada. La Figura 4-2 muestra un dibujo del Servo Normalizado de Parallax. El conector se usa para conectar el servo a la alimentacin (Vdd y Vss) y a la Fuente de Seal (un pin E/S del BASIC Stamp). El cable (2) tiene tres alambres que van a Vdd, Vss y a la lnea de seal del conector al servo. La flecha es la parte del servco que se parece a la estrella (3) de cuatro picos. Cuando est girando el servo, la estrella es la parte mvil que el servo mantiene en diferentes posiciones. El tornillo de cruz (4) une la estrella con la flecha de salida del servo. La caja (5) contiene los sensores, el circuito de control, un motor de DC y engranes. Estas partes trabajan en conjunto para recibir las seales high/low del BASIC Stamp y las convierte en posiciones que mantiene la estrella del servo.

Controlando el Movimiento Pgina 95

Figura 4-2 3 1 Servo Normalizado de Parallax (1)Conector (2)Cable (3)Estrella (4)Tornillo de sujecin del la estrella a la flecha del servo (5)Caja 5

En este captulo, usted programar el BASIC Stamp para mandar seales a un servo que controla la posicin de la estrella del servo. Al hacer que BASIC Stamp mande seales que le indiquen al servo que mantenga diferentes posiciones, sus programas tambin pueden organizar el movimiento del servo. Sus pogramas, incluso, pueden monitorear botnes push y usar la informacin para conocer que botones push estn presionados y ajustar la posicin que el servo mantiene (control de posicin servo de botones push). El BASIC Stamp tambin puede programarse para recibir mensajes que usted teclea en la Terminal Debug y usar esos mensajes para controlar la posicin del servo (control de posicin servo de la terminal).

ACTIVIDAD #1: CONECTANDO Y VERIFICANDO EL SERVO


En esta actividad , usted seguir las instrucciones para conectar un servo a la fuente de su tablilla y a el BASIC Stamp.

Pgina 96 Qu es un Microcontrolador?

Partes del Servo y el circuito LED

Un Servo Normalizado Parallax Un Resistor 470 (amarillo-violeta-caf). Un LED de cualquier color. El circuito LED se usar para monitorear las seales que manda el BASIC Stamp al servo. Recuerde que el circuito LED no se necesita para que el servo funcione. Slo se usa para que le ayude a ver las seales de control
Precaucin. Para las acitivades de este libro use solamente un Servo Normalizado de Parallax Otros servos pueden tener diferentes especificaciones que pudieran no ser compatibles con estas actividades.

Construyendo los Circuitos Servo y LED

En el captulo 1, usted identific la Tablilla y versin de software usando la Ayuda del BASIC Stamp Help.Usted necesitar conocer que tablilla y versin usted tiene para encontrar la instruccin de construccin del circuito servo para su tablilla. Si todava no sabe que tablilla y revisin tiene, abra BASIC Stamp Editor Help y haga click en la liga: Getting Started with Stamps in Class de la Pgina Principal. Ahora, siga las indicaciones para determinar que Tablilla tiene. Si usted tiene una Tablilla con puerto USB (cualquier revisin) o Serie (Revisin C o ms nueva) vaya a la seccin de abajo de Stamp HomeWorkBoard Servo Circuit Si usted tiene una Tablilla (Revisin C o ms recientes va a Stamp HomeWorkBoard Servo Circuit de la pgina 99. Si su Tablilla no est en la lista arriba mencionada, vaya a www.parallax.com/Go/WAM Servo Circuit Connection para encontrar las instrucciones de su tablilla. Cuando haya seguido la instrucciones de su circuito servo de su Tablilla, vaya a la Actividad #2: Programa de Prueba del Control Servo en la pgina 101.
Circuito Servo de la Tablilla Board of Education

Estas instrucciones se usan en todas las revisiones de puerto USB as como tambin en la revisiones C o ms recientes de puerto Serie. Apague la fuente como lo muestra la Figura 4-3

Controlando el Movimiento Pgina 97

Reset

Figura 4-3 Desconecte la fuente. Ponga en 0 el interruptor de 3 posiciones.

La Figura 4-4 muestra el conector del servo en la Tablilla. Aqu es donde usted conecta el servo. Esta Tablilla tiene un jumper que usted puede usar para conectar la fuente de alimentacin del servo ya sea Vin o Vdd. El jumper es una pieza rectangular egra removible que indica la flecha entre los dos conectores del servo. Verifique el jumper se conecta a Vdd como lo muestra la Figura 4-4. Si ste se fija en Vin, jale el jumper rectangular de los pines donde est colocado y entonces presionelo sobre los dos pines ms cercanos a la etiqueta Vdd.
Figura 4-4 Jumper del Conector Servo conectado a Vdd

15 14 Vdd 13 12
Red Black

X4

X5

Vin

El jumper le permite escoger la fuente de alimentacin (Vin o Vdd) del Servo Normalizado de Parallax. Si est usted utilizando una batera de 9 V, fjelo a Vdd. No use eliminadores de batera de Pared de 9 V. Si esta usted utilizando 4 baterias AA, un paquete baterias 6V con ambas funciona correctamente. Si est usando una Fuente de Alimentacin use solamente Vdd. Antes de conectar la fuente de alimentacin a la Tablilla, asegrese de verificar las especificaciones si son compatibles con las caractersticas que indica el BASIC Stamp Editor Help.

La Figura 4-5 muestra el esquemtico del circuito que contruir en su Tablilla. Construya el circuito mostrado en la Figura 4-5 y Figura 4-6 Asegrese que est bien conectado el servo. Los alambres, blanco, rojo y negro deben estr alineados como lo muestra la Figura 4-6.

Pgina 98 Qu es un Microcontrolador?

P14 470 LED

Vss Vdd

Figura 4-5 Esquemtico del Servo y LED indicador de la Tablilla. Se utiliza en Tablillas con puerto serie revisin C o ms recientes, o con cualquier versin de Tablilla con puerto USB.

P14

White Red Black

Servo

Vss

15 14 Vdd 13 12

White Red Black


X4 X5

Red Black

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

Vin

Vss

Figura 4-6 Servo e indicador LED de la Tablilla de Educacin

standard servo www.parallax.com

Hasta ahora, usted ha colocado en la posicin 1 el interruptor de 3 posiciones. Ahora muvalo a la posicin 2 para alimentar el conector del servo.

Controlando el Movimiento Pgina 99

Suministre alimentacin al conector del servo ajustando el interruptor de 3 posiciones como lo muestra la Figura 4-7. Su servo puede girar un poquito cuando lo conecta a la alimentacin.

Reset

Figura 4-7 Alimentacin a la Tablilla del Conector del Servo.


2

En este captulo cuando vea las instruccin Energic su Tablilla mueva a la posicion 2 el interruptor de 3 posiciones. De igual forma cuando vea las instruccines Desconecte la Alimentacin de su Tablilla mueva a la posicin 0 el interruptor de 3 posiciones. Desconecte la Alimentacin de su Tablilla. Vaya a la Actividad #2 en la pgina 101.
Circuito Servo de la Tablilla BASIC Stamp

Si est conectando su servo a la Tablilla BASIC Stamp (Rev C o ms reciente) usted necesitar ests partes adicionales de su kit: Un conector de 3 terminales macho/macho (lo muestra la Figura 4-8) Cuatro alambres para conexin.

Figura 4-8 Parte extra de 3 pines macho/macho de la tablilla BASIC Stamp.

La Figura 4-9 muestra el esquemtico de los circuitos servo y LED en su Tablilla BASIC Stamp. Las instruccines que siguen despus de la figura le mostrarn como construir con seguridad este circuito. Desconecte la batera de 9 V de su Tablilla. Construya el indicador LED y el circuito conector del servo mostrado por el esquemtico de la Figura 4-9 y el diagrama de alambrado de la Figura 4-10.

Pgina 100 Qu es un Microcontrolador?

P14 470 LED

Vss Vdd

P14

White Red Black

Figura 4-9 Esquemtico del servo y LED indicador en la Tablilla.

Servo

Vss

Figura 4-10 Circuitos del LED indicador y conector servo en la Tablilla.

Conecte el servo al conector servo como lo muestra la Figura 4-11. Asegurese que los colores del cable del servo estn correctamente alineados con los colores identificados en la imagen. Verifique dos veces sus conexiones.

Controlando el Movimiento Pgina 101

Cuidado Solamente use una batera de 9V cuando el Servo Normalizado de Parallax est conectado a la Tablilla BASIC Stamp. No use ningn tipo de Fuente de Alimentacin o Eliminador de Baterias que se alimente al contacto de AC. Para mejores resultados, asegurese que su bateria est nueva. Si est usando una batera recargable asegurese que est bien cargada. Debe tener una capacidad de energa de 100mAh (miliamperes por hora) o mayor.

Reconecte la batera de 9 V a su Tablilla. El servo puede girar ligeramente cuando hace la conexin.

Figura 4-11 El servo conectado a la Tablilla.

ACTIVIDAD #2: PROGRAMA DE PRUEBA DEL CONTROL DEL SERVO


A Un gradodo es la medida de un ngulo y se indica con el smbolo o. La Figura 4-12 muestra diferentes mediciones de ngulos que incluye 30, 45, 90, 135 y 180 grados. Cada grado de la medicin de un ngulo representa 1/360 parte de un crculo, as 90 grados representan una medicin de de un crculo ya que 90/360 = . En forma semejante un ngulo de 180 grados es crculo ya que 180/360 = y usted puede calcular fracciones semejantes diferentes a las mediciones que muestra la figura.

Pgina 102 Qu es un Microcontrolador?

Figura 4-12 Ejemplo de mediciones de variosngulos.

El Servo Normalizado de Parallax puede hacer que la estrella fije posiciones dentro de un rango de 180 grados, as la medida de un grado puede ser til para describir las posiciones que mantiene el servo. La Figura 4-13 muestra ejemplos de un servo con un trozo de alambre que est sujeto con dos hoyos de su estrella y un doblez. La direccin del alambre muestra el ngulo de la estrella del servo y la figura muestra ejemplos de 0, 45, 90, 135 y 180 grados.
Figura 4-13 Ejemplos de posiciones de la estrella del servo.

Your servo horns range of motion and mechanical limits will probably be different from whats shown here. Instructions on how to adjust it to match this figure come after the first example program.

En la fbrica, el montaje de la estrella del servo se hace al azar, entonces las posiciones de su servo probablemente sean diferentes a las que muestra la Figura 4-13. En la prctica, la estrella de su servo pudiera estr montada en un rango de +/- 45 grados. El servo de la Figura 4-14 muestra un ejemplode un servo cuya estrella se mont 20 grados en sentido de la manecillas del reloj respecto a la Figura 4-13. Despus de que usted encuentre el centro el rango de movimiento de la estrella de su servo usted puede usarlo como una referencia de 90 grados o ajustar la estrella mecnicamente para que coincida con el de la Figura 4-13 siguiente las instrucciones posteriores de esta actividad.

Controlando el Movimiento Pgina 103

Figura 4-14 Ejemplos de posicin de la estrella del servo antes de los ajustes mecnicos.

Este es un ejemplo de una estrella montada en la flecha de salida del servo cerca de 20 grados en sentido invervso de las manecillas del reloj con referencia a la Figura 4-13.

Usted puede encontrar el centro del rango de movimiento del servo girando con precaucin la estrella para encontrar sus lmites mecnicos en sentido directo e inverso de las manecillas del reloj. La posicin media entre estos dos lmites es el centro o posicin de 90 grados. La posicin del centro del servo pudiera estar en cualquier lugar de la regin mostrada en la figura 4-15.
El centro del rango de movimiento de la estrella de su servo pudiera estar en esta regin.

Figura 4-15 Rango de posiciones posibles del centro.

Pgina 104 Qu es un Microcontrolador?

En los siguientes pasos gire la estrella del servo lentamente no la fuerce! El servo tiene lmites mecnicos interconstruidos para prevenir que la estrella gire fuera del rango de movimiento de 180 grados. Gire suavemente la estrella y tenga la sensibilidad de sentir cuando llega a unos de sus lmites mecnicos. No trate de forzarla ms all de esos lmites porque podra daar los engranes internos del servo.

Verifique que est desconectada la alimentacin de su Tablilla. Suavemente gire la estrella del servo para encontrar los lmites mecnicos en sentido directo e inverso a las manecillas del reloj. La estrella del servo gira con poca fuerza hasta que alcanza los lmites. NO TRATE DE GIRAR LA ESTRELLA MS ALL DE SUS LMITES, slo girela lo suficiente para alcanzar los lmites. Gire la estrella del servo hasta la mitad de los dos lmites. Esta es aproximadamente la posicn del centro del servo. Con la estrella en la posicin central, sujete un trozo de alambre en la estrella y orientele hacia la parte superior de la regin que muestra la Figura 4-15. Recuerde que la direccin en que apunta el alambre en la figura es solamente un ejemplo, su direccin puede apuntar en cualquier parte de esta regin. Adonde quiera que apunte cuando est en el centro de su regin de movimiento deber estar muy cerca de la posicin de 90 grados. Nuevamente, esta posicin puede variar de un servo a otro debido a la forma en que la estrella se sujeta al servo.
Programando las Posiciones del Servo

La grfica en la Figura 4-16 se llama Diagrama de Tiempos y muestra ejemplos de seales high/low que el BASIC Stamp tiene que mandar al servo para que est en la posicin de 90 grados.
Figura 4-16 Diagrama de Tiempos de la Seal Servo Pulsos de 1.5 ms hacen que el servo mantenga una posicin central de 90 grados.

Controlando el Movimiento Pgina 105

El diagrama de tiempos muestra que las seales high duran 1.5 ms separadas por seales low que duran 20 ms. Los puntos ...a la derecha de las seales es una forma de indicar que las seales high de 1.5 ms y las seales low de 20 ms una y otra y otra vez para mantener la posicin del servo. El smbolo 20ms indican que el tiempo low puede tener un valor aproximado, y que realmente puede variar unos pocos milisegundos arriba y abajo del valor de 20 ms con el siguiente para no afectar la posicin de la estrella del servo. Esto se debe a que la cantidad de tiempo de la seal high dura hasta que le dice al servo que posicin conservar, y esto tiene que ser preciso. Hay una instruccin especial llamada PULSOUT que da un control preciso a su programa sobre la duracin de las seales high muy breves, a las que se les llama comunmente pulsos. Esta es la sintaxis de la instruccin PULSOUT: PULSOUT Pin Duration. Con la instruccin PULSOUT usted puede escribir el cdigo en PBASIC para hacer que BASIC Stamp fije la posicin del servo en 90 grados usando como gua el diagrama de tiempos. El argumento Pin de la instruccin PULSOUT tiene que ser un nmero que le indica al BASIC Stamp que pin de E/S deber transmitir el pulso. El argumento Duration de la instruccin PULSOUT que vale 2 millonsimas de segundo representa los incrementos de tiempo del pulso. 2 millonsimas de segundo es igual a 2 microsegundos y se abrevia 2us.
Una millonsima de segundo se llama microsegundo. La letra Griega se usa en lugar de la palabra micro y la letra s se usa en lugar de segundo. Esto facilita escribir y tomar notas, porque en lugar de escribir 2 microsegundos, usted puede escribir 2 s. Recordatorio: Una milsima de segundo se llama milisengundo y se abrevia ms. Equivalencias: 1ms = 1000 s. En otras palabras, usted puede meter mil millonesimas de segundo dentro de una milsima de segundo.

Ahora que sabe como usar la instruccin PULSOUT, el programa ServoCenter.bs2 manda pulsos de contro repetidamente para hace que el servo mantenga la posicin de 90 grados. La instruccin PULSE 14, 750 mandar un pulso de 1.5 ms al servo. Hace esto porque el argumento Duration de la instruccin PULSOUT especifica el nmero de 2us de duracin del pulso. Como el argumento Duration vale 720, la instruccin PULSOUT har que el pulso dure 750x2us = 1500 us = 1.5 ms ya que hay 1000 us en 1 ms. Despus que termina el pulso high la instruccin PULSOUT hace que el pin E/S ahora mande seales bajas.

Pgina 106 Qu es un Microcontrolador?

Entonces, la instruccin PAUSE 20 que sigue del PULSOUT hace que el BASIC Stamp mande seales low durante 20 ms. Con las dos instrucciones dentro del bucle DO...LOOP el high de1.5 ms seguido por el low de 20 ms se repetiran una y otra y otra vez haciendo que el servo mantenga su posicin
Programa Ejemplo; ServoCenter.bs2
' Que es un Microcontrolador? - ServoCenter.bs2 ' Mantiene el Servo en su posicion central de 90 grados. ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Program Running!", CR DO PULSOUT 14, 750 PAUSE 20 LOOP

Prueba de la Posicin Central del Servo en 90 grados

La posicin del Servo en 90 grados se llama posicin central porque el punto de 90 grados est en el centro del rango de movimiento de 180 grados. Los pulsos de 1.5 ms hacen que el servo mantenga la estrella en su posicin central, la cual deber estar cerca del punto medio que usted determin al fijar los lmites mecnicos del servo. Usted puede usar la posicin del centro para mantener al servo como la referencia de 90 grados, o usar un desarmador para quitar y reposicionar la estrella para que el alambre sujeto a la estrella apunte hacia arriba. Las instrucciones de ajuste estn en la seccin titulada: Opcional: Ajuste Central de 90 grados de la estrella del servo. Si usted usa la posicin del centro, sin ajustarlo, como una referencia cualquier otra posicin del servo est respecto a la posicin de 90 grados. Por ejemplo, la posicin de 45 grados debera ser 1/8 de una vuelta en sentido de las manecillas del reloj, y la posicin de 135 grados debera ser 1/8 de vuelta en sentido inverso de la manecillas del reloj. Estos ejemplos se mostraron en la Figura 4-14. Vamos a encontrar cual es la verdadera posicin central de la estrella de su servo: Gire suavemente la estrella del servo a uno de sus lmites mecnicos. Aplique alimentacin a su Tablilla. Si tiene una Tablilla Board of Education, asegurese que el interruptor de 3 posiciones est en la posicin 2. Corra el programa ServoCenter.bs2.

Controlando el Movimiento Pgina 107

Tan pronto como est el programa cargado la estrella del servo deber girar a su posicin central y ah permanecer. El servo mantiene esta posicin porque los servos normalizados estn diseados para resistir fuerzas externas que los empujen. Es por esto que el servo mantiene en esa poscin el volante de los carros RC, el timn de los barcos o los alerones del avin. Anote la posicin central de su servo. Suavemente aplique un giro a la estrella como cuando lo hizo para encontra sus lmites mecnicos. El servo debe reaccionar y mantener la estrella en la posicin central. Si desconecta la energa, usted puede girar el servo afuera de su posicin central. Cuando usted conecta la energa, el programa se reinicia y el servo mover inmediatamente la estrella a la posicin central y ah la mantendr. Intntelo!
Opcional Ajuste de la estrella del servo en el centro de 90 grados

Como opcin usted puede ajustar la estrella del servo para hacer que el alambre de la estrella apunte hacia arriba cuando se est ejecutando el programa ServoCenter.bs2 como lo muestra el lado derecho del Figura 4-17. Si usted hace este ajuste mecnico, esto simplificar los ajustes de los ngulos del servo porque cada ngulo se parecer a los de la Figura 4-13.
Usted necesitar un Desarmador de Cruz # 2 para este ajuste opcional.

Pgina 108 Qu es un Microcontrolador?

Output shaft

Phillips Screw

Figura 4-17 Centrado mecnico del Servo Usted puede remover y reposicionar la estrella de la flecha de salida del servo con un pequeo desarmador.

Horn

Desconecte la alimentacin de su Tablilla. Quite el tornillo que fija la estrella del servo con la flecha de salida, y luego suavemente jale hacia fuera la estrella de la caja para liberarla. Las partes se parecern a el lado izquierdo de la Figura 4-17. Conecte la alimentacin a su Tablilla. El programa deber hacer que el servo mantenga la flecha de salida en la posicin central. Regrese la estrella a la flecha de salida del servo y haga que el alambre sujeto en ella apunte hacia arriba como lo muestra el lado derecho de la Figura 4-17.
Ajuste fino. Pudiera ser que no sea posible tener un alineamiento perfecto debido al ajuste de la estrella con la flecha sin embargo ser muy cercano. Entonces usted puede ajustar el alambre sujeto a la estrella y as compensar esta pequea desviacin y hacer que el alambre apunte hacia arriba.

Desconecte la alimentacis de su Tablilla. Apriete el tornillo de cruz. Conecte la alimentacin a su Tablilla para que el programa haga que el servo mantenga nuevamente su posicin central. El alambre sujeto a la estrella ahora deber apuntar hacia arriba (o casi hacia arriba) indicando la posicin de 90 grados.

Controlando el Movimiento Pgina 109

Su Turno Programas para que el Servo Apunte en Direcciones Diferentes

La Figura 4-18 muestra unas pocas instrucciones PULSOUT que le indican al servo mantener ciertas posiciones importantes como 0, 45, 90, 135 y 180 grados. Las instrucciones PULSOUT son aproximadas. Y usted podra tener que ajustar los valores ligeramente para obtener posiciones angulares ms precisas. Usted puede modificar el argumento Duration de las instrucciones PULSOUT para mantener cualquier posicin de este rango. Por ejemplo, si usted desea mantener la posicin de 30 grados, el argumento Duration de las instrucciones PULSOUT deber ser 417, este valor es 2/3 del valor de los argumentos Duration entre 250 ( 0 grados) y 500 (45 grados).
Los tiempos de los pulsos de la Figura 4-18 posicionarn la estrella del servo muy cerca de los ngulos mostrados pero estas no son necesariamente exactas. Usted puede experimentar con diferentes valores de Duration de PULSOUT para tener posiciones ms precisas.

Haga una copia de ServoCenter.bs2 con el nombre TestServoPositions.bs2 Cambie el argumento Duration de PULSOUT de 750 a 500 y ejecute el programa moficado para verificar que el servo se mantiene en la posicin de 45 grados. Repita esta prueba con argumentos Duration de 1000 (135 grados) y 417 (30grados). Trate de predecir el argumento Duration que necesita para una posicin que no est escrita en la Figura 4-18, y verifique que servo gira la estrella y la mantiene en la posicin que desea. Por ejemplo pueden ser las posiciones 60, 120 grados etc.
Mantenga su programa con argumentos Duration de PULSOUT en rango de 350 a 1150. El rango de 250 a 1250 es en Teora pero en la prctica el servo podra tratar de empujar contra sus lmites mecnicos. Eso puede reducir la vida til del servo. Su usted desea maximixar el movimiento del rango de su servo, cuidadosamente verifique que gradualmente se acerquen a la posicin de su servo justamente dentro de sus lmites mecnicos, su desgaste ser normal en lugar de ser excesivo.

Pgina 110 Qu es un Microcontrolador?

Figura 4-18: Posiciones de Estrella del Servo, Instrucciones PULSOUT y Duracin del Pulso en ms.

Resolviendo la Ecuacin

Asociada a la instruccin PULSOUT de la Figura 4-18 hay un nmero que corresponde a los milisegundos que dura cada pulso. Por ejemplo, el PULSOUT 14, 417 manda 0.834 ms de duracin, y para PULSOUT 14, 500 manda 1.0 ms. Si usted tiene el BASIC Stamp 2 y desea convertir el tiempo en milisegundos al argumento Duration de la instruccin PULSOUT, use esta ecuacin: Duracin = nmero de milisegundos x 500 Por ejemplo, si usted no conoca que el argumento Duration para 1.5 es 750, as es como usted deba calcularlo:

Controlando el Movimiento Pgina 111

Duration = 1.5 x 500 = 750

La razn por la que tenemos que multiplicar el nmero de milisegundos de un pulso por 500 se obtiene del argumento PULSOUT Duration poque Duration est en trminos de unidades de 2 us en la BS2. Cuntas unidades de 2 hay e1 ms? Para saberlo solamente divida 2 millonsimas en 1 milsimas.
1 2 = 500 1,000 1,000 ,000

Si la instruccin es PULSOUT 14, 500, el pulso durar 500 x 2us = 1000 us = 1.0 ms. (Recuerde: 1000 us = 1 ms) Usted puede calcular Duration de una instruccin PULSOUT desconocida usando esta ecuacin: Nmero de ms = Duracin / 500 ms Por ejemplo, si usted ve la instrucion PULSOUT 14, 850, cunto dura verdaderamente ese pulso? Nmero de ms = 850 / 500 ms = 1.7 ms
Escriba el Cdigo a partir de los Diagramas de Tiempo

La Figura 4-19 muestra los diagramas de la seal que el BASIC Stamp manda al Servo para que su estrella mantenga una posicin de 135 grados. Como el diagrama de tiempo muestra pulsos repetidos separados por seales low de 20 ms, el bucle DO...LOOP del programa ServoCenter.bs2 proporciona un buen punto de inicio y todo lo que se necesita es ajustar la duracin de los pulsos high. Para calcular el argumento Duration de la instruccin PULSOUT para los pulsos de 2 ms en el diagrama de tiempos, usted puede usar la ecuacion Duration de la Seccin Resolviendo la Ecuacin.
Duracin = nmero de milisegundos x 500 = 2 x 500 = 1000

Cuando sustituimos 1000 en el argumento Duration de la instruccin PULSOUT , el bucle de control del servo se parecer a esto:
DO

Pgina 112 Qu es un Microcontrolador?

PULSOUT 14, 1000 PAUSE 20 LOOP

Verifique este bucle en una copia de ServoCenter.bs2 y verifique que la estrella del servo se coloca aproximadamente en 135 grados. Repita este ejercicio para los diagramas de tiempo en la Figura 4-20
Figura 4-19 Diagramas de Tiempo para la posicin de 135 grados Son pulsos de 2 ms separados por 20 ms

Figura 4-20 Diagramas Tiempo para posicin de grados

de la 45

Son pulsos de 1 ms separados por 20 ms

ACTIVIDAD #3: CONTROL DEL TIEMPO DE RETENCIN DEL SERVO


La Animatrnica usa la electrnica para animar props y efectos especiales, y los servos son la herramienta comn en este campo. La Figura 4-21 muestra un ejemplo de una mano robtica de un proyecto de Animatrnica, que usa servos para controlar los dedos. El programa PBASIC que controla los movimientos de la mano hace que los servos mantengan las posiciones durante cierta cantidad de tiempo. En la actividad anterior, nuestros programas hicieron que el servo mantenga en forma contnua ciertas. Posiciones indefinidamente. Esta actividad lo introduce en la forma de escribir cdigos que hacen que el servo mantenga ciertas posiciones durante ciertas cantidades de tiempo.

Controlando el Movimiento Pgina 113

Figura 4-21 Mano Animatrnica Hay cinco servos en la parte inferior derecha de la imagen que jalan los cables de frenado y se comunican con los dedos para hacerlos flexibles. El BASIC Stamp proporciona el control de cada dedo.

Bucles FOR...NEXT para controlar el Tiempo del Servo que Mantiene una Posicin

Si usted escribe el cdigo para hace que un LED parpadee una vez por segundo, usted puede anidar el cdigo en un bulce FOR...NEXT para que repita tres veces el parpadeo por tres segundo. Si su LED parpadea cinco veces por segundo, usted tiene que hacer que bucle FOR...NEXT se repita quince veces para obtener el parpadeo del LED por tres segundos. Como las instrucciones PULSOUT y PULSE que controlan su servo son responsables de mandar seales high/low estas tambin hacen que el LED parpadee. Las seales que mandamos a los servos en la actividad anterior hacen que el LED se ilumine poco, quiz con un aparente parpadeo, esto se debe porque las seales high/low son muy rpidas y los tiempos en high son muy breves. Reduzcamos la velocidad de las seales en 1/10 y veremos que el LED parpadea.
Programa Ejemplo. SlowServoSignalForLed.bs2

Comparado con el servo de seal centrada, este programa ejemplo incrementa la duracin de PULSOUT y PAUSE por un factor de 10 para que puedamos ver la seal con un LED indicador que parpadea. El bucle FORNEXT del programa se repite casi 5 veces por segundo, haciendo que 15 repeticiones hacen que el LED parpadee por tres segundos. Desconecte la alimentacin de su servo:

Pgina 114 Qu es un Microcontrolador?

Si tiene una Tablilla Board of Education coloque el interruptor de 3 posiciones en la posicin 1, para desconectar la alimentacin del servo. La posicin 1 mantiene la alimentacin del resto del sistema. o Si tiene usted una Tablilla de BASIC Stamp Homework, temporalmente desconecte el alambre que se conecta a Vdd. Esto desconecta la alimentacin del servo. Meta y ejecute el programa SlowServoSignalsFor Led.bs2 Verifique que el LED parpadea rapidamente durante 3 segundos. Cambie el valor EndValue del bucle FOR...NEXT de 15 a 30 y vuelva a ejecutar el programa. Como el bucle se repite dos veces, el LED deber parpadear ahora durante 6 segundos. Conecte la alimentacin de su servo: o Si tiene una Tablilla Board of Education coloque el interruptor de 3 posiciones en la posicin 2, para conectar la alimentacin del servo. o Si tiene usted una Tablilla de BASIC Stamp Homework, conecte el alambre que se conecta a Vdd. o
' Que es un Microcontrolador SlowServoSignalsForLed.bs2 ' Haga un 1/10 ms lentas las seales de su servo para ver que parapadea el LED indicador. ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Programa Ejecutandose!", CR counter VAR Word

FOR counter = 1 to 15 PULSOUT 14, 7500 PAUSE 200 NEXT

Programa Ejemplo ThreeServoPositions.bs2

Si usted cambia PULSOUT 14, 7500 a PULSOUT 14, 750 y PAUSE 200 a PAUSE 20, tendr usted un bucle FOR...NEXT que manda brevemente la seal de posicin central al servo. Como ahora la seales durarn 1/10 de las duraciones del programa SlowServoSignalsForLed.bs2 todo el bucle FOR...NEXT tomar 1/10 de tiempo en ejecutarse. Si el objetivo es hacer que el servo mantenga una posicin particular durante tres segundos simplemente proporciona diez veces ms pulso al incrementarse el argumento de 15 a 50 EndValue del bucle FOR...NEXT.

Controlando el Movimiento Pgina 115

FOR counter = 1 to 150 PULSOUT 14, 750 PAUSE 20 LOOP

' Se Centra durante 3 segundos.

El programa ejemplo ThreeServoPositions.bs2 hace que el servo mantenga tres posiciones diferentes como lo muestra la Figura 4-22, cada una durante 3 segundos.
Figura 4-22 ThreeServoPositions.bs2 El programa hace que el servo mantenga cada posicin durante tres segundos..

Meta y ejecute el programa ThreeServoPositions.bs2. Verifique que el servo mantiene cada posicin en la secuencia de la Figura 4-22 durante tres segundos. La ltima posicin que el servo mantendr por 3 segundos es 135 grados y luego el programa se detiene. La estrella del servo estar en la misma posicin incluso si el BASIC Stamp deja de mandar pulsos de control. La diferencia es que durante los tres segundos que el BASIC Stamp mantiene la posicin de 135 grados, el servo resiste cualquier fuerza que trate de mover la estrella de esta posicin. Al terminar los 3 segundos se puede girar con la mano la estrella del servo. Una forma para saber si el servo est recibiendo seales de control es observando el LED indicador que est conectado al pin P14. Cuando est iluminado el LED esta indicando que el servo est recibiendo seales de control y manteniendo su posicin. Cuando se detienen las seales el LED estar apagado. Vuelva a ejecutar el programa (o presione y libere el botn de Reset). Tan pronto que el servo va a la posicin de 135 grados, mire el LED indicador de seal mientras aplica fuerza de rotacin a la estrella. Usted debe ser capz de sentir la reaccin del servo mientras que el LED brilla muy poco indicando que el servo todava est recibiendo seales de control. En el momento en que se

Pgina 116 Qu es un Microcontrolador?

apaga el LED sabemos que ya no se envian seales de control, el servo deja de mantener su posicin y ahora usted puede girar la estrella. Cuando se detiene la seal de 135 grados, verifique que el LED muestra que las seales estn detenidas y que el servo le permite girar la estrella afuera de la posicin de 135 grados.
' Que es un Microcontolador ThreeServoPositions.bs2 ' El Servo mantiene las posiciones 45, 90, and 135 degree durante 3 seconds cada una. ' {$STAMP BS2} ' {$PBASIC 2.5} counter PAUSE 1000 DEBUG "Posicion = 45 grados...", CR FOR counter = 1 TO 150 PULSOUT 14, 500 PAUSE 20 NEXT DEBUG "Posicion = 90 grados...", CR FOR counter = 1 TO 150 PULSOUT 14, 750 PAUSE 20 NEXT DEBUG "Posicion = 135 grados...", CR FOR counter = 1 TO 150 PULSOUT 14, 1000 PAUSE 20 NEXT DEBUG "Todo hecho.", CR, CR END '135 grados durante 3 segundos. '90 grados durante 3 segundos. ' 45 grados durante 3 segundos. VAR Word

Su Turno Ajustando la Posicin vs Ajustando el Tiempo de Retencin.

El programa ThreServoPositions.bs2 supone que la ejecucin de 50 pulsos del servo del bucle FOR...NEXT le toma 1 segundo. Tambin esto puede usarse para ajustar el tiempo de retencin del argumenteo EndValue del bucle FOR...NEXT. Por ejemplo si usted desea

Controlando el Movimiento Pgina 117

que el servo slo mantenga su posicin durante dos segundos, cambie el argumento EndValue de 150 a 100. Para cinco segundos cambielo de 150 a 250, y as sucesivamente... Haga una copia del programa ThreServoPositions.bs2 Modifique el argumenteo EndValue del bucle FOR...NEXT y experimente con diferentes valores para diferentes tiempos de retencin. Opcional: Particularice las posiciones de retencin ajustando el argumento Duration de la instruccin PULSOUT.
Tiempo de Repeticin del Bucle FOR...NEXT Verdaderamente es 1/44 de segundo no un 1/50

Un 1/50 de segundo es una aproximacin de repeticin del bucle. Un 1/44 de segundo es una aproximacin mas cercana. Considere cuanto tiempo requiere ejecutar cada elemento del bucle FOR...NEXT . La instruccin PULSOUT 14, 750 est en la midad del rango de las posibles duraciones del pulso, de tal forma que se puede tomar como promedio de la duracin del pulso. Manda un pulso que dura 750 x 2us = 1500 us = 1.5 ms. La instruccin PAUSE 20 provoca un retardo en el programa de 20 ms. Un bucle FOR...NEXT con una instruccin PULSOUT y una PAUSE requiere 1.3 ms para procesar todos los nmeros e instrucciones. Aunque esto significa que la seal low entre los pulsos dura verdaderamente 21.3 ms en lugar de 20 ms, esto no afecta el funcionamiento del servo. Los tiempos low pueden estar apagados unos pocos milisegundo, pero los pulsos high tienen que tener duraciones muy precisas por eso la instruccin PULSOUT es muy precisa. Entonces, el tiempo total del bucle FOR...NEXT que requiere para repetirse es 1.5 ms + 20 ms + 1.3 ms = 22.8 ms, esto ses 22.8 milsimas de segundo. Cuntas 22.8 milsimas de segundo caben en 1 segundo? Dividamos 0.028 entre 1 y obtenemos: 1 segundo/0.028 segundos/repeticin = 43.86 repeticiones = 44 repeticiones Esta es la razn por la que el bucle se repite a razn de 44 repeticiones por segundo. El nmero total de repeticiones en 1 segundo se llama Hertz y se abrevia Hz. As, podemos decir que la seal del servo se repite o tiene una Frecuencia cercana a 44 Hz.
Ciclos y hertz (Hz): Cuando una seal se repite a si misma un cierto nmero de veces, cada repeticin se llama ciclo. El nmero de ciclos es un segundo se mide en Hertz. Hertz se abrevia Hz.

Los valores largos o cortos de PULSOUT Duration hacen que el bucle FOR...NEXT tome un poco ms o menos tiempo para repetirse. El PULSOUT Duration de 750 est en la

Pgina 118 Qu es un Microcontrolador?

mitad del rango de duracin de los pulsos de control del servo que muestra la Figura 4-18. Entonces usted puede usar 44 en su cdigo como referencia para el nmero de los pulsos del servo en un segundo. Si usted necesita mayor precisin repita las ecuaciones de la instruccin PULSOUT que est utilizando. Por ejemplo, si el bucle tiene una instruccin PULSOUT con Duration de 1000 en lugar de 750, al pulso dura 2ms en lugar de 1.5 ms. El bucle todava tiene una pausa de 20 ms y 1.3 ms de tiempo de proceso. Entonces la suma es 2 + 20 + 1.3 = 23.3 ms. Dividimos 1 s entre este nmero para encontra la razn del bucle FOR...NEXT y obtenemos 1/0,023 = 42.9 = 43 Hz.
Resumen de Contro del Bucle FOR...NEXT del Servo

La Figura 4-23 detalla la funcin de cada nmero del bucle FOR...NEXT del control del servo. El EndValue del bucle FOR...NEXT determina el nmero de 1/44 de segundo en que el servo mantiene una posicin. El valor 750 manda un pulso de 1.5 ms que instruye al servo que mantenga una posicin de 90 grados de acuerdo con la Figura 4-18. El argumento pin de la instruccin PULSOUT escoge el pin de E/S para mandar las seales de control al servo. Entonces, 14 hace que la instruccin PULSOUT mande una seal high breve (pulso) al servo conectado en la terminal pin P14. Cuando se termina el pulso ahora el pin manda una seal low. Entonces, la instruccin PAUSE 20 asegur quela seal low dure aproximadamente 20 ms antes del siguiente pulso.
Number of 44ths of a second to hold the position Figura 4-23 Control del Servo Del Bucle For...Next

Servo I/O pin

FOR counter = 1 TO 132 PULSOUT 14, 750 PAUSE 20 NEXT Position to hold Required 20 ms between each pulse

En promedio un bucle FOR...NEXT que manda una sola instruccin PULSOUT al servo seguida por una PAUSE 20, se repite 44 veces por segundo. Y como el bucle se repite 132 veces, hace que el servo mantenga la posicin 135 grados durante 3 segundos. Esto se debe a que: 132 repeticiones entre 44 repeticiones/segundo = 3 segundos

Controlando el Movimiento Pgina 119

Si su aplicacin o proyecto necesita que el BASIC Stamp manda una seal servo para determinado nmero de segundo, solamente multiplique el nmero de segundo por 44 y use el resultado en el argumento EndValue del bucle FOR...NEXT. Por ejemplo, si su seal necesita que dure cinco segundos: 5 segundo x 44 repeticiones/segundo = 220 repeticiones

ACTIVIDAD #4: CONTROLANDO LA POSICIN CON SU COMPUTADORA


La Automatizacin de las Fbricas frecuentemente incluyen comunicacin de microcontroladores con grandes computadoras. Los microcontroladores leen los sensores y transmiten los datos a la computadora principal. La computadora principal interpreta y analiza los datos de los sensores y regresa informacin de posiciones a los microcontroladores. Los microcontroladores pueden actualizar la velocidad de una banda rotatoria , o una posicin especfica, o un mecanismo o la tarea que controla un motor. Usted puede usar la Terminal Debug para mandar mensajes de su computadora a el BASIC Stamp como lo muestra la figura 4.22. El BASIC Stamp tiene que programarse para que escuche los mensajes que manda usted con la Terminal Debug, y tambin tiene que almacenar los datos que usted manda de una o ms variables.

Figura 4-24 Mandando Mensajes a el BASIC Stamp Haga click en el cuadro de la esquina superior izquierda y escriba su mensaje. Una copia del mensaje que escribi aparece en la ventana inferior. A esta copia se le llama ECO.

Pgina 120 Qu es un Microcontrolador?

En esta actividad, usted programar el BASIC Stamp para recibir dos valores de la Terminal Debug, y usar estos valores para controlar el servo. 1. El nmero de pulsos a enviar al servo. 2. El valor de Duration que usa la instruccin PULSOUT. Tambin programar el BASIC Stamp usando estos valor para controlar el servo.
Partes y Circuito

Los mismos de la Actividad #2


Programando el BASIC Stamp para Recibir Mensajes de la Terminal Debug

La programacin del BASIC Stamp para que mande mensajes a la Terminal Debug se usando la Instruccin DEBUG. La programacin del BASIC Stamp para que reciba mensajes de la Terminal Debug se hace usando la Instruccin DEBUGIN. Al usar DEBUGIN, tambin puede declarar una o ms variables para que el BASIC Stamp almacene la informacin que recibe. Este es un ejemplo de una variable que usted puede declarar para que el BASIC Stamp almacene un valor
Pulses VAR Word

Posteriormente en el programa, usted usar esta variable para almacenar un nmero que recibe de la instruccin DEBUGIN.
DEBUGIN DEC pulses

Cuando el BASIC Stamp recibe un valor numrico de la Terminal Debug, lo almacena en la variable pulses El formadto DEC le dice a la instruccin DEBUGIN que los caracteres que usted enva sern digitos que forman un nmero decimal. Tan pronto como usted pisa la tecla Enter el BASIC Stamp almacenar, como un nmero decimal, los dgitos que recibe en la variable pulses. Y luego avanzar. Aunque no est incluido en el Programa Ejemplo, usted puede agregar una lnea para verificar que BASIC Stamp proces el mensaje.
DEBUG CR, "Usted mand el valor: ", DEC pulses

Controlando el Movimiento Pgina 121

Programa Ejemplo: ServoControlWithDebug.bs2

La Figura 4-25 muestra la localizacin de las ventanas de la Terminal Debug junto con la Ventana de Recepcin. La Ventana de Recepcin es la que hemos estado usando para mostrar los Mensajes que recibe la Terminal Debug del BASIC Stamp. La Ventana de Transmisin le permite a usted escribir los caracteres y nmeros y transmitirlos a el BASIC Stamp.

Figura 4-25 Ventanas de la Terminal Debug Ventana de Transmisin

En la Figura 4-25, se escribin el nmero 264 en la Ventana de Transmisin de la Terminal Debug. Abajo, en la Ventana de Recepcin se muestra una copia del valor 264 cerca del mensaje Meta Tiempo de Ejecucin. A esta copia se le llama eco y solamente se muestra en la Ventana de Recepcin si el rectngulo, de la esquina inferior derecha, Echo Off est sin verificar.
Eco es cuando usted manda un mensaje a traves de la ventana Transmitir de la Terminal Debug, y aparece una copoa en la ventana Recibir de la Terminal Debug. Hay una ventanita para checar en la esquina inferior derecha de la Terminal Debug, y usted puede hacer click para ver que ya chec. En esta actividad, como deseamos mostrar los ecos en la ventana de Recepcin, la ventanita EchoOff quedar vacia, sin checar.

Meta el programa ServoControlWithDebug.bs2 en el Editor de BASIC Stamp y ejectelo. Si la ventana de Transmisin es muy pequea, agrandela usando el ratn haciendo clik en el Separador y arrastrelo hacia abajo. El Separador est justamente abajo del mensaje de texto Enter run time as a en la Figura 4-25. Asegurese que la ventanita Echo Off de la esquina inferior derecha esta vacia.

Pgina 122 Qu es un Microcontrolador?

Haga click en la ventana Transmit de arriba, para colocar ah su cursor y escribir los mensajes. Cuando la Terminal Debug le indique Enter run time as a number of pulses escriba el nmero 132, y luego presione la tecla Enter de su computadora Cuando la Terminal Debug le indique Enter position as a PULSOUT duration escriba el nmero 100 y luego presione Enter.
La duracin de PULSOUT Duration debe ser un nmero entre 350 y 1150. Si usted mete nmeros fuera de este rango el programa los cambiar a losn nmeros ms cercanos de 350 o 1150. Si el programa no tiene esta caracterstica de seguridad, se pueden meter ciertos nmeros que pudiern hacer que el servo trate de girar a un posicin ms all de sus propios lmites mecnicos. Aunque esto no daa al servo, puede disminuir su vida til.

El BASIC Stamp mostrar el mensaje Servo en Ejecucin mientras manda pulsos al servo. Cuando ha terminado el envi de pulsos, mostrar el mensaje Hecho durante 1 segundo. Entonces, le indicar que meta nuevamente el nmero de pulsos. De buen humor asegurese de seguir la indicacin de meter valores entre 350 y 1150 para el valor de PULSOUT. Experimente metiendo otros valores del rango 350 a 1150 para valores de
PULSOUT Duration y valores para el nmero de pulsos entre la entre 1 a 65534.
Se requieren cerca de 44 pulsos para hacer que el servo mantenga una posicin por 1 segundo. Para hacer que el servo mantenga una posicin durante 5 minutos usted deber meter 13200 en el indicador nmero de pulsos. Esto es: 44 pulsos/segundo x 60 segundos/minuto x 5 minutos = 13200 pulsos Por qu se usan los valores de 1 a 64434? Si usted verdaderamente desea saberlo, lea toda la seccin FOR...NEXT del Manual BASIC Stamp para aprender acerca de error del rango de la variable, 16-bit rollover. Se hace un error cuando est haciendo sus programas.

' Que es un Microcontrolador? - ServoControlWithDebug.bs2 ' Manda Mensajes a BASIC Stamp para controlar el servo usando ' la Terminal Debug. ' {$STAMP BS2} ' {$PBASIC 2.5} counter pulses duration VAR VAR VAR Word Word Word

PAUSE 1000 DEBUG CLS, "Tiempo de ejecucin del Servo: ", CR, " ~44 pulsos en 1 segundo", CR,

Controlando el Movimiento Pgina 123

"Posicin del Servo ", CR, " 350 <= PULSOUT Duration <= 1150", CR, CR DO DEBUG "Meta el tiempo de ejecucin ", CR, "como numero de pulsos: " DEBUGIN DEC pulses DEBUG "Meta la posicin como", CR, "Duracin de PULSOUT: " DEBUGIN DEC duration duration = duration MIN 350 MAX 1150 DEBUG "Servo en ejecucin...", CR FOR counter = 1 TO pulses PULSOUT 14, duration PAUSE 20 NEXT DEBUG "Hecho", CR, CR PAUSE 1000 LOOP

Funcionamiento del programa ServoControlWithDebug.bs2

En este programa se declaran tres variables tamao Word


counter pulses duration Var Var Var WORD WORD WORD

Se declara la variable counter porque la usa el bucle FORNEXT. (Para detalles, vea Captulo 2, Actividad 3). Las variables pulses y duration se usan para un par de actividades. Ambas se usan para recibir y almacenar valores que manda la Terminal Debug. La variable pulses tambin se usa para fijar el nmero de repeticiones en el bucle FOR...NEXT que proporciona pulsos al servo, y la variables duration se usa para fijar la duracin de cada pulso de la instruccin PULSOUT. La instruccin DEBUG proporciona un recordatorio que hay cerca de 44 pulos en 1 segundo en el bucle FOR...NEXT, y el argumento de PULSOUT Duration que controla la posicin del servo puede valer entre 350 y 1150.
DEBUG CLS, "Tiempo de Ejecucin del Servo :", CR,

Pgina 124 Qu es un Microcontrolador?

" ~44 pulsos en 1 segundo", CR, "Posicion del Servo :", CR, " 350 <= Duracin de PULSOUT <= 1150", CR, CR

El resto de el programa se anida dentro de un bucle DO...LOOP sin un WHILE o sin el argumento Condition de la instruccin UNTIL de tal manera que las instrucciones se ejecutan una vez y otra y otra vez.
DO No se muestra el resto del programa. LOOP

La instruccin DEBUG se usa para mandar su (el usuario del software) mensaje para meter el nmero de pulso. Entonces, la instruccin DEBUGIN espera que usted meta los dgitos que forman el nmero y que presione la tecla Enter de su teclado. Los digitos que usted metin se convierten en un valor que almacena la variable pulses. El proceso se repite con unas segundas instrucciones DEBUG y DEBUGIN que cargan otro valor que usted tambin mete en la variable duration.
DEBUG "Meta el tiempo de ejecucin como ", CR, "nmero de pulsos: " DEBUGIN DEC pulses DEBUG "Meta la posicin como", CR, "Duracin de PULSOUT: " DEBUGIN DEC duration

Despues que ha metido el segundo valor, es til mostrar un mensaje mientras se est ejecutando el servo para que no intente meter el segundo valor durante este tiempo:
DEBUG El servo est ejecutandose... , CR

Mientras el servo est ejecutandose intente suavemente mover la estrella del servo fuera de su posicin de retencin. El servo se resiste a esta ligera presin aplicada a la estrella.
For Counter = StartValue hasta EndValue {STEP StepValor} NEXT Esta es la sintaxis del bucle FORNEXT del Manual BASIC Stamp. Y muestra que usted necesita un Counter, StartValue y un EndValue para controlar cuantas veces en si mismo se repite el bucle. Si usted desea agregar un nmero diferente a uno al valor Counter, tambien hay un StepValue opcional para cada bucle.

Controlando el Movimiento Pgina 125

Como en los ejemplos anteriores, la variable counter se us para mantener el ajuste de las repeticiones del bucle FOR...NEXT. La variable counter afuera del bucle FOR...NEXT introduce algunas nuevas tcnicas usando variables para definir como se comporta el programa (y el servo). Hasta este ejemplo, los bucles FOR...NEXT han usado constantes como 10 o 132 en el argumento EndValue. En este bucle FOR...NEXT el valor de la variable pulsos se usa para controlar el EndValue del bucle FOR...NEXT. Entonces, usted fija el valor de pulses metiendo un nmero en la Terminal Debug, y ste controla el nmero de repeticiones que ejecuta el bucle FOR...NEXT, y este a su vez controla el tiempo que el servo mantiene una posicin dada.
FOR counter = 1 to pulsos PULSOUT 14, duration PAUSE 20 NEXT

Tambin, en los ejemplos anteriores, valores constantes tales como 500, 750 y 1000 se usaron para el argumento duration de la instruccin PULSOUT. En este bucle, una variable llamada duration que usted determina metiendo valor en Ventana de Transmisin de la Terminal Debug, ahora define la duracin del pulso de la instruccin PULSOUT, y esta a su vez controla la posicin que el servo mantiene.
Tmese su tiempo para ServoControlWithDebug.bs2. entender el bucle FOR...NEXT del programa

Este es uno de los primeros ejemplos de las cosas maravillosas que usted puede hacer con argumentos y variables de las instrucciones de PBASIC. Destaca la utilidad de funcionamiento que un mdulo con microcontrolador programable como el BASIC Stamp puede realizar.

Su Turno Ajuste de lmites con Software

Imaginemos que este sistemade control servo computarizado se ha desarrollado para que trabaje a control remoto. Quiz un guardia de seguridad lo usar para abrir una puerta que l o ella observa con una cmara remota. Quiz un colega estudiante lo usar para controlar puertas de una red de pasajes confusos de ratones que buscan alimento. Quiz un caonero militar lo us para apuntar el can a un objetivo particular. Si usted est diseando el producto para alguien ms lo use, la ltima cosa que usted desea darle al usuario (guardia de seguridad, colega estudiante, caonero militar) es la posibilidad que meta nmeros erroneos que puedan daar el equipo. Mientras ejecuta el programa ServoControlWithDebug.bs2, es posible hacer un error mientras escribe el valor de duration en la Terminal Debug. Digamos que accidentalmente

Pgina 126 Qu es un Microcontrolador?

usted escribe 100 en lugar de 1000 y presiona Enter. El valor 100 provocara que el servo trate de girar a una posicin ms all de sus lmites mecnicos. Aunque esto no daa instantneamente el servo, esto no beneficia la vida til del servo. Entonces el programa tiene una lnea que previene este error que puede causar dao:
duration = duration MIN 350 MAX 1150

Esta instruccin corregira el 100 que accidentalme escribi y cambiara la variable duration a 350. Si usted accidentalmente escribe 10000 esto reducira la variable duration a 1150. Usted puede hacer algo equivalente con un par de instrucciones IF...THEN:
IF duration < 350 THEN duration = 350 IF duration > 1150 THEN duration = 1150

Hay algunas mquinas que incluso corrigen automticamente al valor ms cercano y se tuvieran resultados indeseable. Por ejemplo, una mquina de control nmerico que corta algna clase de material costoso, usted no deseara que la mquina suponga 350 cuando usted escribi 1000, pero accidentalmente escribi 100 Si no corta el material al ajuste de 350 esto generara un error costoso. Entonces, podemos tomar otra aproximacin a su programa e indicarle que sus valores estn fuera de rango y volver a intentar. Este es un ejemplo de cmo puede moficar el cdigo para que haga esto: Guarde el programa ejemplo ServoControlWithDebug.bs2 con un nuevo nombre ServoControlWithDebugYourTurn.bs2 Reemplace estas dos instrucciones:
DEBUG "Meta la posicion como", CR, "Duracin de PULSOUT: " DEBUGIN DEC duration

Con este bloque de instrucciones :


DO DEBUG " Meta la posicion como ", CR, " Duracin de PULSOUT: " DEBUGIN DEC duration IF duration < 350 THEN DEBUG "El Valor de Duracion como mnimo debe ser 350", CR PAUSE 1000 ENDIF

Controlando el Movimiento Pgina 127

IF duration > 1150 THEN DEBUG "El Valor de Duracion no puede ser mayor que 1150", CR PAUSE 1000 ENDIF LOOP UNTIL duracion >= 350 AND duracion <= 1150

Guarde el programa Ejecute el programa y verifique que se repite hasta que usted mete un valor correcto en el rango 350 a 1150.

ACTIVIDAD #5: CONVIRTIENDO POSICIN A MOVIMIENTO


En esta actividad, usted programar el servo para cambiar la posicin a diferentes velocidades. Al cambiar la posicin a diferentes velocidades, usted har que la estrella del servo gire a diferentes velocidades. Usted puede usar esta tcnica para hacer que el servo controle el movimiento en lugar de la posicin.
Programacin la Razn de Cambio por Posicin

Usted puede usar un bucle FOR...NEXT para hacer que el servo haga un barrido a travs de un rango de movimiento como esto:
FOR counter = 500 TO 1000 PULSOUT 14, counter PAUSE 20 NEXT

El bucle FOR...NEXT hace que la estrella del servo empiece en 45 grados y luego gire lentamente en sentido inverso de las manecillas del reloj hasta que llegue a 135 grados. Debido a que counter es el ndice del bucle FOR...NEXT el counter se incrementa una unidad cada vez que se ejecuta el bucle. El valor de counter tambin se usa en el argumento duration de la instruccin PULSOUT, lo que significa que la duracin de cada pulso se hace un poquito ms grande cada vez que se ejecuta el bucle. Como cambia la variable counter tambin lo hace la posicin de la estrella del servo. Los bucles FOR...NEXT tienen un argumento opcional: StepValue de STEP. El argumento StepValue puede usarse para que el servo gire ms rpido. Por ejemplo, usted puede usar el argumento StepValue para agragar 8 cada vez que el bucle se ejecuta (en lugar de 1) modificando la frase FOR de la siguiene manera:
FOR counter = 500 to 1000 STEP 8

Pgina 128 Qu es un Microcontrolador?

Usted tambin puede hacer que el servo gire en la direccin contraria contando en forma descendente en lugar de ascendente. En PBASIC, los bucles FOR...NEXT contarn en forma inversa si el argumento StarValue es mayor que el argumento EndValue. Este es un ejemplo para hacer que el bucle FOR...NEXT cuente de 1000 hacia 500.
FOR counter = 1000 to 500

Usted puede combinar el conteo descendente con un argumento StepValue para hacer que el servo gire ms rpidamente en la direccin de las manecillas del reloj de la siguiente manera:
FOR counter = 1000 TO 500 STEP 20

El truco para hacer que el servo gire a diferentes velocidades es haciendo que los bucles FORNEXT cuenten en forma ascendente y descendente con diferentes tamaos de escaln. El siguiente programa usa estas tcnicas para hacer que la estrella del servo gire hacia delante y atrs a diferentes velocidades.
Programa Ejemplo: ServoVelocities.bs2

Meta y ejecute el programa: ServoVelocities.bs2 Conforme se ejecuta el programa, observe como camba el valor de counter en la Terminal Debug. Tambin observe como el servo se comporta diferente cuando se ejecutan dos bucles distintos FOR...NEXT Hay cambios de direccin y velocidad en la estrella del servo.
' Que es un Microcontrolador? - ServoVelocities.bs2 ' El servo gira lentamente en direccion contraria a manecillas del reloj, . luego rapidamente en direccion de manecillas del reloj ' {$STAMP BS2} ' {$PBASIC 2.5} counter PAUSE 1000 DO DEBUG "El ancho del Pulso se incrementa por 8", CR FOR counter = 500 TO 1000 STEP 8 PULSOUT 14, counter PAUSE 7 DEBUG DEC5 counter, CR, CRSRUP NEXT VAR Word

Controlando el Movimiento Pgina 129

DEBUG CR, "El ancho del Pulso disminuye por 20", CR FOR counter = 1000 TO 500 STEP 20 PULSOUT 14, counter PAUSE 7 DEBUG DEC5 counter, CR, CRSRUP NEXT LOOP

Funcionamiento del programa ServoVelocities.bs2

El primer bucle FOR...NEXT cuenta en forma ascendente de 500 a 1000 en pasos de 8. Como la variable counter se usa como argumento duration de la instruccin PULSOUT, la estrella del servo gira en sentido inverso a las manecillas del reloj en pasos que son ocho veces ms pequeos que el menor paso posible.
FOR counter = 500 TO 1000 STEP 8 PULSOUT 14, counter PAUSE 7 DEBUG DEC5 counter, CR, CRSRUP NEXT
Por qu PAUSE 7 en lugar de PAUSE 20? La instruccin DEBUG DEC 5 counter, CR, CRSRUP toma alrededor de 8 ms para ejecutarse. Esto significa que PAUSE 12 podra mantener el retardo de 20 ms entre pulso. Unos pocos experimentos de ensayo y error mostraron que PAUSE 7, dio al servo el movimiento ms suave. Ya que el tiempo low de 20 ms entre los pulsos del servo no necesitan ser precisos, estos son correctos para sintonizarlo y ajustarlo. Ms Formatos de DEBUG y caracteres de control son caracteristicas de la instruccin DEBUG que muestra el valor de la variable counter. Este valor se imprime usando el formato decimal de 5 dgitos (DEC5). Despues que se impimer el valor, hay un retorno de carro (CR). Despus de eso, el carcter de control CRSRUP (cursor arriba). Manda al cursor de regreso a la lnea anterior- Esto genera el valor nuevo del counter para que se imprima sobre el valor viejo cada vez que se ejecuta el bucle.

El segundo bucle FOR...NEXT cuenta en forma descendente de 1000 a 500 en pasos de 20. La variable counter tambin se usa en este ejemplo como un argumento para la instruccin PULSOUT, entonces la estrella del servo gira en sentido de las manecillas del reloj.
FOR counter = 1000 TO 500 STEP 20 PULSOUT 14, counter PAUSE 7 DEBUG DEC5 counter, CR, CRSRUP NEXT

Pgina 130 Qu es un Microcontrolador?

Su Turno Ajustando las Velocidades

Use diferentes valores STEP para hacer que el servo gire a diferentes velocidades. Y ejecute el programa despues de cada modificacin. Observe el efecto de cada nuevo valor de StepValue y vea que tan rpido gira la estrella del servo Experimente con diferentes valores (entre 3 y12) de Duration de la instruccin PAUSE para encontrar el valor que de al servo el movimiento ms suave para cada nuevo valor de StepValue.

ACTIVIDAD #6: BOTNES PUSH PARA CONTROLAR EL SERVO


En este captulo usted ha escrito programas que hacen que el servo realice una serie de movimientos predeterminados, y tambin ha controlado al servo usando la Terminal Debug. Uste trambien puede programar el BASIC Stamp para que controle al servo usando entradas con botones push. En esta actividad usted: Construir un circuito para controlar el servo con entradas de botones push. Programar el BASIC Stamp para controlar el servo con entradas de botones

Cuando lo haya hecho, usted ser capaz de mantener presionado un botn push para hacer que el BASIC Stamp gire el servo en una direccin, y mantener presionado el otro botn para que el servo gire en direccin contraria. Cuando los botones push no estn presionados el servo mantendr la ltima posicin en que se movi.
Partes extra para los botones push que controlan el servo

En esta actividad usar las mismas partes de las actividades anteriores. Adems usted necesitara juntar las siguientes partes para el circuito de los botones push: Dos Botones push normalmente abiertos Dos Resistores de 10 K (caf-negor-naranja) Dos Resistor de 220 (rojo-rojo-caf) Tres alambres para puentes.
Juntando los Botones push del Circuito de Control

La Figura 4-26 muestra el circuito de los botones push que usar para controlar el servo. Agregue este circuito a los circuitos servo y LED que ha estado usando hasta este punto. Cuando lo haya hecho su circuito: se parecer a:

Controlando el Movimiento Pgina 131

Ser semejante a la Figura 4-27 si usted est usando la Tablilla Board of Eduacin con puerto USB (cualquier revisin) o puerto Serie (revisin C o ms reciente) o Ser semejante a la Figura 4-28 si usted esta usando la Tablilla BASIC Stamp Home Work Board (revisin C o ms reciente) Si su tablilla no esta en la lista arriba mencionada, busque la seccin Servo Circuits Connections dowload en la liga www.parallax.com/Go/WAM para encontrar las instrucciones de su tablilla. o
Vdd P4 220 P3 220 10 k 10 k Vdd

Figura 4-26 Circuitos Botones push para Control del Servo

Vss

Vss

15 14 Vdd 13 12

White Red Black


X4 X5

Red Black

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

Vin

Vss

Figura 4-27 Circuitos Servo y Botones push agregrados a la Tablilla Board of Education Tablilla Board of Education puerto Serie Rev C o ms reciente o puerto USB cualquier revisin.

standard servo www.parallax.com

Pgina 132 Qu es un Microcontrolador?

Figura 4-28 Circuitos Servo y Botones push agregrados a la Tablilla. HomeWorkBoard. Tablilla HomeWork Rev C o ms reciente.

Verifique los botones push conectados al pin P3 usando la versin original del programa ReadPushbuttonState.bs2. La seccin que tiene este programa y las instrucciones de su uso comienzan en la pagina 67. Modifique el programa para que ahora lea por el pin P4. Ejecute el programa modificado para verificar que el botn push est conectado en el pin P4.
Programando el Control del servo con botones push

Se pueden usar los bloques de cdigo de IF...THEN para verificar los estados de los botoes push para sumarlos o restarlos de una variable de nombre duration. Esta variable se usa en el argumento duration de la instruccin PULSOUT. Si se presiona uno de los botones push, se incrementa el valor de duration. Si se presiona el otro botn push, disminuye el valor de duration. Se usa un bucle anidado de IF...THEN para decidir si la variable duration es muy grande (mayor que 1000) o es muy pequea (menor que 500).
Programa Ejemplo: ServoControlWithPushbuttons.bs2

Este programa ejemplo hace que la estrella del servo gire en sentido inverso a las manecillas del reloj cuando se presiona el botn push conectado al pin P4. La estrella del

Controlando el Movimiento Pgina 133

servo seguir girando hasta que se libere el botn push y el valor de duracin sea menor que 100. Cuando se presiona el botn push conectado al pin P3, la estrella del servo gira en sentido de las manecillas del reloj. El servo tambin est limitado en su movimiento en sentido de la manecillas del reloj porque a la variable duration no le est permitido ir ms debajo de 500. La Terminal Debug muestra el valor de duration cuando se est ejecutando el programa. Meta el programa: ServoControlWithPushbuttons.bs2 en el Editor de BASIC Stamp y ejectelo. Verifique que el servo gira en sentido inverso a las manecillas del reloj cuando mantiene presionado el botn push conectado al pin P4. Verifique que el servo gira en sentido de las manecillas del reloj cuando mantiene presionado el botn push conectado al pin P3. Verifique que tan pronto se alcanza el lmite de duration<500 o lo excede el servo deja de girar en la direccin de la manecillas del reloj.
' ' ' ' ' ' Que es un Microcontrolador - ServoControlWithPushbuttons.bs2 Mantenga presionado el botn push de P4 para que el servo gire en sentido inverso de las, manecillas del reloj o presione el botn push P3 para qgire en sentido directo {$STAMP BS2} {$PBASIC 2.5} Word

duration VAR duration = 750 PAUSE 1000 DO

IF IN3 = 1 THEN IF duration > 500 THEN duration = duration - 25 ENDIF ENDIF IF IN4 = 1 THEN IF duration < 1000 THEN duration = duration + 25 ENDIF ENDIF PULSOUT 14, duration PAUSE 10 DEBUG HOME, DEC4 duration, " = duration" LOOP

Pgina 134 Qu es un Microcontrolador?

Su Turno Lmites Mecnicos vs. Lmites por Software

Los limitadores mecnicos previenen que el servo gire ms all de 0 y 180 grados, que corresponde a argumentos de PULSOUT Duration en la vecindad de 250 y 1250. El programa ServoControlWithPushbuttons.bs2 tambin tiene lmites por software, definidos por las instrucciones IF...THEN que previenen que usted use un botn push para que el servo gire ms all de cierto punto. En contraste con los limitadores mecnicos, los lmites del software son muy fcil de ajustar. Por ejemplo, usted puede hacer que el botn push controle el servo en un rango muy amplio de movimiento simplemente reemplazando cada ejemplo de 500 por 350 y los 1000 por 1150. Tambin puede usted darle al servo un rango de movimiento ms angosto reemplazando los ejemplos de 500 con 650 y los de 1000 con 850. Los lmites por software incluso, no necesitan ser simtricos. Por ejemplo, usted podra cambiar los limites por software del rango 500-1000 por el rango de 350 a 750. Experimente con diferentes limites de servo por software, incluyendo 350 a 1150, 650 a 850 y 350 a 750. Verifique cada conjunto de limites por software para asegurarse que se comportan como usted lo espera. Tambin usted puede cambiar la velocidad de giro del servo mientras mantiene presionado un botn push. Por ejemplo, si usted cambia los dos valores de 25 del programa por 50, el servo responder dos veces m rpido. Alternadamente, usted podra cambiarlos a 30 para hacer que el servo responde un poquito ms rpido, o a 20 para que responda lentamente o a 10 para que responda muy lentamente. Intntelo!

RESUMEN
Este captulo introdujo el movimiento microcontrolado usando un Servo Normalizado de Parallax. Un servo es un dispositivo que se mueve para mantener una posicin particular basado en las seales electrnicas que recibe. Estas seales toman la forma de pulos que duran entre 0.5 y 2.5 ms, y que se mandan aproximadamente cada 20 ms al servo para mantener su posicin. El programador puede usar la instruccin PULSOUT para hacer que el BASIC Stamp mande estas seales . Como los pulsos tienen que mandarse cada 20 ms para que el servo mantenga su posicin las instrucciones PULSOUT y PAUSE generalmente se colocan en alguna parte del bucle. Las variables o constantes pueden usarse para determinar tanto el

Controlando el Movimiento Pgina 135

nmero de repeticiones del bucle como el argumento Duration de la instruccin PULSOUT. En este captulo presentamos varias formas para obtener los valores en la variables. La variable puede recibir el valor desde la Terminal Debug usando la instruccin DEBUGIN. El valor de la variable puede pasar a travs de una secuencia de valores cuando se usa como argumento de Counter del bucle FOR..NEXT. Esta tcnica puede usarse para hacer que el servo haga movimientos de barrido. Si las instrucciones IF...THEN se usan para monitorear los botones push y se pueden usar par sumar o restar la variable utilizada en el argumento Duration de la instruccin PULSOUT cuando se presiona cierto botn push. Esto permite el control de la posicin y los movimientos de barrido dependiendo de la construccin del programa y como se activen los botones push.
Preguntas

1. Cules son las cinco partes externas de un servo? Para que se usan? 2. Se requiere un circuito LED para un servo funcione? 3. Qu instruccin control el tiempo low de la seal que se manda al servo? Qu instruccin controla el tiempo high? 4. Qu elemento de programacin puede usted usar para controlar la cantidad de tiempo que el servo usa par manteer una posicin particular? 5. Cmo usa usted la Terminal Debug para mandar mensajes a el BASIC Stamp? 6. Qu tipo de bloque de Cdigos puede usted escribir para limitar el rango de movimiento del servo?
Ejercicios

1. Escriba un bloque de Cdigos que barra el valor de PULSOUT para controlar un servo desde una duration de 700 a 800, y luego regrese a 700 en incrementos de (a) 1 y (b) 4. 2. Agregue un bucle anidado FOR...NEXT a la respuesta del ejercicio 1b para que proporcione diez pulsos anted de incrementar por 4 el argumento Duration de PULSOUT.
Proyecto

1. Modifique el programa ServoControlWithDebug.bs2 para que monitoree un interruptor Supresor. Si se presiona el interruptor Supresor (el botn push est conectado en el pin P3), la Terminal Debug no deber aceptar ningna instruccin, y deber mostrar Presione el Interruptor de Inicio para arrancar la maquinaria. Cuando est presionado el Interruptor de Inicio ( el botn push est conectado en

Pgina 136 Qu es un Microcontrolador?

el pin P3) el programa deber funcionar normalmente. Si se desconecta y luego se reconecta la energa, el programa deber comportarse como si se hubiera presionado el Interruptor Supresor.
Soluciones

Q1. Conector Conecta al servo a la fuente de alimentacin y a la fuente de seal; 2) Cable lleva la alimentacin y la seal del conector al servo; 3) Estrella Es la parte movil del servo; 4) Tornillo Sujeta la estrella del servo a la flecha de salida; 5) Caja Contiene el motor de DC, engranes y circuitos de control. Q2. No, el LED solamente nos ayuda a ver como se comportan las seales de control. Q3. El tiempo low lo controla la instruccin PAUSE. El tiempo high lo controla la instruccin PULSOUT. Q4. Un bucle FOR...NEXT Q5. Escriba mensajes en la Ventana de Transmisin de la Terminal Debug. Use la instruccin DEBUGIN y una variable para hacer que BASIC Stamp reciba los caracteres. Q6. Ya sea anidando la instruccin IF...THEN or una instruccin que use los operadores MAX y MIN para mantener la variable en ciertos rangos. E1. b) Agrege STEP 4 a los bucles a) Incrementos de 1 FOR...NEXT .
FOR counter = PULSOUT 14, PAUSE 20 NEXT FOR counter = PULSOUT 14, PAUSE 20 NEXT 700 TO 800 counter FOR counter = 700 TO 800 STEP 4 PULSOUT 14, counter PAUSE 20 NEXT FOR counter = 800 TO 700 STEP 4 PULSOUT 14, counter PAUSE 20 NEXT

800 TO 700 counter

E2. Considere que ha declarado una variable de nombre pulses:


FOR counter = 700 TO 800 STEP 4 FOR pulses = 1 TO 10 PULSOUT 14, counter PAUSE 20 NEXT NEXT FOR counter = 800 TO 700 STEP 4

Controlando el Movimiento Pgina 137

FOR pulses = 1 TO 10 PULSOUT 14, counter PAUSE 20 NEXT NEXT

P1. Existen varias soluciones; aqu presentamos dos.


'Qu es un Microcontrolador - Ch04Prj01Soln1__KillSwitch.bs2 ' Manda mensajes a BASIC Stamp para controlar el servo usando ' la Terminal Debug mientras no se presione el Interruptor Supresor. ' Contribucion del: Professor Clark J. Radcliffe, Departmento ' of Ingenira Mecanica, Michigan State University ' {$STAMP BS2} ' {$PBASIC 2.5} counter VAR Word pulses VAR Word duration VAR Word DO PAUSE 2000 IF (IN3 = 1) AND (IN4 = 0) THEN DEBUG "Press Start switch to start machinery. ELSEIF (IN3 = 0) AND (IN4 = 1) THEN DEBUG CLS, "Meta el numero de pulsos:", CR DEBUGIN DEC pulses DEBUG "Meta la duracin de PULSOUT:", CR DEBUGIN DEC duration DEBUG "Servo en ejecucin...", CR FOR counter = 1 TO pulses PULSOUT 14, duration PAUSE 20 NEXT DEBUG "DONE" PAUSE 2000 ENDIF LOOP

", CR ,CRSRUP

Abajo presentamos una versin que incluso puede detectar un botn presionado y que manda seales al servo. Esto es importante en maquinaria que se necesitan

Pgina 138 Qu es un Microcontrolador?

DETENER INMEDIATAMENTE cuando se presiona el Interruptor Supresor. El programa usa la tcnica de espera que estudiamos en el Juego de Reaccin de Tiempo en la captulo 3, Actividad #5, en tres lugares diferentes del programa. Usted puede verificar que el programa se detiene mandando una seal de contro al servo observando la seal del indicador LED conectado al pin P14.
' ' ' ' ' Que es un Microcontrolador? - Ch04Prj01Soln2__KillSwitch.bs2 Manda mensajes a BASIC Stamp para controlar el servo usando la Terminal Debug mientras no se presione el Interruptor Supresor {$STAMP BS2} {$PBASIC 2.5} VAR VAR VAR Word Word Word

counter pulses duration PAUSE 1000

DEBUG "Presione el Interruptor de Inicio P4)para arrancar maquinaria." DEBUG CR DO:LOOP UNTIL IN4 = 1 DEBUG "Presione el Interruptor Supresor (P3) para detener maquinaria." DEBUG CR DEBUG CR, CR, "Tiempo de Ejecucin del Servo:", CR, " ~44 pulsos en 1 segundo", CR, "Posicin del Servo:", CR, " 350 <= PULSOUT Duration <= 1150", CR, CR DO IF IN3 = 1 THEN DEBUG "Presione el Interruptor de Inicio (P4) .", CR DO:LOOP UNTIL IN4 = 1 DEBUG "Presione el Interruptor Supresor (P3) para detener " DEBUG "maquinaria.", CR ENDIF DEBUG "Meta el tiempo de Ejecucion como", CR, "numero de pulsos: " DEBUGIN DEC pulses DEBUG "Meta la posicin como", CR, "Duracin del PULSOUT : " DEBUGIN DEC duration duration = duration MIN 350 MAX 1150 DEBUG "Servo se est ejecutando...", CR FOR counter = 1 TO pulses

Controlando el Movimiento Pgina 139

PULSOUT 14, duration PAUSE 20 IF IN3 = 1 THEN DEBUG "Presione el Interruptor de Inicio (P4) para arrancar " DEBUG " maquinaria.", CR DO:LOOP UNTIL IN4 = 1 DEBUG "Presione el Interruptor Supresor (P3) para detener " DEBUG " maquinaria.", CR ENDIF NEXT DEBUG "HECHO", CR, CR PAUSE 1000 LOOP

Pgina 140 Qu es un Microcontrolador?

Midiendo Rotacin Pgina 141

Captulo 5: Midiendo Rotacin


AJUSTANDO PERILLAS Y MONITOREANDO MQUINAS
Muchos dueos de casa tienen perillas para controlar las luces de un cuarto. Gire la perilla en una direccin y las luces brillan ms, gire la perilla en la direccin inversa y las luces se atenuan. Los trenes usan perillas para controlar la velocidad y direccin del motor. Muchas mquinas tienes perillas o cranks que se usan para afinar la posicin de navajas y superficies guias. Las perillas tambin se encuentran en los equipos de audio, y se usan para ajustar el volumen de los sonidos. La Figura 5-1 muestra un ejemplo simple de un interruptor y una perilla que se gira para para ajustar el volumen de la bocina. Al girar la perilla, un circuito dentro de la bocina cambia, y el volumen de la msica de la bocina cambia. Circuitos similares se pueden encontrar dentro de los joysticks, e incluso dentro del servo usado en el Captulo 4: Controlando el Movimiento.

Figura 5-1 Ajuste de Volumen de una Bocina.

EL RESISTOR VARIABLE ATRS DE LA PERILLA - EL POTENCIOMETRO


El dispositivo dentro de muchos sistemas de sonido, perillas, joysticks y servos se llama potenciometro y se abrevia frecuentemente pot La Figura 5-2 muestra la imagen de algunos potenciometros comunes. Observe que todos ellos tienen tres pines:

Pgina 142 Qu es un Microcontrolador?

Figura 5-2 Ejemplo de Potenciometros.

La Figura 5-3 muestra el smbolo esquemtico y dibujo de un potenciometro que usted usar en este captulo. Las terminales A y B estn conectadas a un elemento resistivo d e 10 K . A la terminal W se le llama Terminal Central y se conecta a un alambre que toca el elemento resistivo desde cero hasta el valor total.

Figura 5-3 Smbolo esquemtico y dibujo de un Potenciometro.

La Figura 5-4 muestra como trabaja la terminal central. Conforme usted gira la perilla superior del potenciometro la terminal central hace contacto con el elemento resistivo en diferentes lugares. Conforme gira la perilla en sentido de las manecillas del reloj, la terminal central se acerca a la terminal A, y cuando usted gira la perilla en sentido inverso a las manecillas del reloj, la terminal central se acerca a la terminal B.

Figura 5-4 Ajustando la terminal central del potenciometro.

Midiendo Rotacin Pgina 143

ACTIVIDAD #1: MIDIENDO Y VERIFICANDO EL CIRCUITO POTENCIOMETRO


Al colocar resistores de diferente valor en serie con un LED se tienen diferentes cantidades de corriente fluyendo a travs del circuito. Resistores con valores grandes en el circuito LED provocan pequeas cantidades de corriente que fluyen a travs del circuito y el Led se ilumina con poco brillo. Resistores con valores pequeos en el circuito LED provocan mas corriente que fluyen a travs del circuito y el Led se ilumina con ms brillo. Al conectar las terminales W y A del potenciometro en serie con un LED, usted puede usarlo para ajustar la resistencia del circuito. Esto a su vez ajustra el brillo del LED. En esta actividad usted usar el potenciometro como resistor variable y lo usar para cambiar el brillo del LED.
Partes del Circuito Potenciometro

Un potenciometro de 10 K Un resistor de 220 (rojo-rojo-caf) Un LED rojo Un alambre para puente


Construyendo el Circuito de Prueba del Potenciometro.

La Figura 5-5 muestra el circuito que usar para ajustar el brillo del LED con un potenciometro Construya el circuito que muestra la Figura 5-5..
Sugerencia; Si usted tiene problemas al colocar el potenciometro en los conectores de la Tablilla, observe sus terminales. Si cada una tiene un pequeo doblez, use unas pinzas de punta para enderezarlas y luego vuelva a meterlas en la Tablilla. Cuando las terminales del potenciometro estan derechas pueden mantener mejor contacto con los conectores de la Tablilla.

Pgina 144 Qu es un Microcontrolador?

Figura 5-5 Circuito de Prueba Potenciometro-LED

Verificando el Circuito del Potenciometro

Gire el potenciometro en sentido de las manecillas del reloj hasta que llegue a su lmite mecnico como lo muestra la Figura 5-6(a)
Presione un poco el potenciometro contra la Tablilla mientra gira la perilla. Para estas actividades el potenciometro necesita estr firmemente colocado en los conectores de la Tablilla. Si no tiene precaucin cuando gira la perilla el potenciometro se puede desconectar de los conectores de la tablilla y esto generar mediciones incorrectas. Entonces, aplique un poco de presin hacia abajo mientras gira la perilla del potenciometro para que este firmemente colocado en la Tablilla. Trtelo con cuidado. Si su potenciometro no gira totalmente, no trate de forzarlo. Solo girelo hasta que alcance su lmite mecanico, sino lo hacer se podra romper.

Gradualmente gire el potenciometro en sentido inverso de las manecillas del reloj a las posiciones que muestras las Figura 5-6 (b), (c), (d), (e) y (f) observando cuanto brilla el LED en cada posicin.

Midiendo Rotacin Pgina 145

(a) (b)

(c) (d)

(e) (f)

Figura 5-6 Perilla del Potenciometro. Desde (a) hasta (f) se muestra la terminal deslizante del potenciometro ajustada a diferentes posiciones.

Funcionamiento del Circuito del Potenciometro

La resistencia total de su circuito de prueba es 220 ms la resistencia de las terminales Ay W del potenciometro. La resistencia entre las terminales A y W aumenta conforme se ajusta la perilla en el sentido de las manecillas del reloj, y este ajuste a su vez reduce la corriente a travs del LED haciendo que se atenue.

ACTIVIDAD #2: MIDIENDO LA RESISTENCIA AL MEDIR EL TIEMPO


Esta actividad introduce una nueva parte llamada capacitor . Un capacitor se comporta como una bateria recargable que solamente retiene su carga para duraciones cortas de tiempo. Esta actividad tambin introduce La Constante de Tiempo RC, que es una abreviatura de tiempo resistor-capacitor. La constante de tiempo es una medida cuanto tiempo le toma a un capacitor perder cierta cantidad de su carga almacenada cuando le proporciona corriente al resistor. Midiendo la constante de tiempo que le toma al capacitor para descargarse con diferentes valores de resistores y capacitores usted se familiarizar ms con la constante de tiempo RC. En esta actividad, usted programar el BASIC Stamp para que cargue un capacitor y luego mida el tiempo que le toma al capacitor descargarse a travs de un resistor.
Conociendo al Capacitor

La Figura 5-7 muestra el smbolo esquemtico y el dibujo del tipo de capacitor usado en esta actividad. El valor de la Capacitancia se mide en microfarads (F) y su valor se imprime tipicamente en el capacitor. La forma cilindrica de este capacitor particular se llama pequea caja. Este tipo capacitor se llama electrolitico capacitor y se debe manejar con cuidado. Lea el recuadro de PRECAUCIN EN LA SIGUENTE PGINA.

Pgina 146 Qu es un Microcontrolador?

Precaucin: El capacitor tiene una terminal positiva (+) y una negativa (-). La terminal negativa es la que est fija en el cuerpo del capacitor y esta cerca de una raya con un signo negativo (-). Siempre asegurese que conecta las terminales como lo muestra el diagrama del circuito. Si conecta este capacitor incorrectamente lo puede daar. En algunos circuitos, al conectar incorrectamente este tipo de capacitor y luego conectarle la alimentacin hace que se caliente e incluso explote. Precaucin: No aplique m voltaje a un capacitor electroltico que el que tiene especificado. El voltaje que soporta esta impreso en el cuerpo del capacitor. Precaucin: Se recomienda usar gogles cuando trabaje con este capacitor.

3300 F

3300 F

Figura 5-7 Smbolo esquemtico y dibujo de un capacitor de 3300 F

Ponga mucha atencin a las terminales y a la conexin de las terminales Positiva y Negativa.

Resistores y partes del Circuito de Tiempo

Un Capacitor de 3300 F Un Capacitor de 1000 F Un Resistor de 220 (rojo-rojo-caf) Un Resistor de 470 (amarillo-violeta-cafe) Un Resistor de 1 K (caf-negro-rojo) Un Resistor de 2 K (rojo-negro-rojo) Un Resistor de 10 (caf-rojo-naranja)
Construyendo y Verificando el Circuito de Tiempo Resistor-Capacitor

La Figura 5-8 muestra el circuito esquemtico, y la Figura 5-9 muestra el diagrama del alambrad para esta actividad. Tomaremos mediciones de tiempo usando diferentes valores del resistor en donde est colocado el resistor de nombre Ri.

Midiendo Rotacin Pgina 147

Lea cuidadosamente el siguiente recuadro de SEGURIDAD.


SEGURIDAD Siempre observe la polaridad cuando conecte el capacitor de 3300 o 1000 F. Recuerde, la terminal negativa es la terminal que est conectada en el cuerpo del capacitor y esta cercano a la raya con un signo negativo (-). Use la Figur 5-7 para indentificar las terminales (+) y (-) Su capacitor de 3300 F trabajar correctamente en este experimento si se asegura que las terminales positiva (+) y negativa (-) estn conectadas exactamente como lo muestra la Figura 5-8 y la Figura 5-9. Nunca invierta las terminales de la fuente de alimentacin en el capacitor de 3300 F o cualquier otro capacitor con polaridad. El voltaje en la terminal positiva (+) debe siempre ser mayor que el voltaje en la terminal negativa (-). Vss es el voltaje menor (0 V) en la Tablilla Board of Education y BASIC Stamp Homework Board. Al conectar la terminal negativa del capacitor en VSS usted se asegura que siempre es correcta la polaridad en las terminales del capacitor. Nunca aplique voltaje al capacitor que exceda el voltaje impreso en el cuerpo del capacitro. Use gogles durante esta actividad. Antes de construir o modificar su circito siempre desconecte la alimentacin. Mantenga alejados sus manos y cara del capacitorcuando conecte la alimentacin.

Con la alimentacin desconectada, construya el circuito mostrado empezando con un resistor de 470 colocandolo donde est marcado Ri.
P7 220 3300 F Ri R1 = 470 R2 = 1 k R3 = 2 k R4 = 10 k

Figura 5-8 Esquemtico para verificar la descarga del voltaje del circuito RC. Se usarn cuatro diferentes resistores en donde est marcado Rin

Vss

Se usarn cuatro diferentes resistores en donde est marcado Rin. Primero, el esquemtico se construir y verificar con Ri = 470 , luego se usar Ri = 1 K.

Pgina 148 Qu es un Microcontrolador?

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

R3
Vdd

R2

R1
Vin Vss

0 33

Figura 5-9 Diagrama de Alambrado para ver el tiempo de descarga de un circuito de tiempo RC. Asegurese que el lado negativo del capacitor lo conecta en su Tablilla de la misma forma que lo muestra esta figura, cn la terminal negativa conectada a Vss.

Asegurese que el lado negativo del capacitor lo conecta en su Tablilla de la misma forma que lo muestra esta figura, cn la terminal negativa conectada a Vss.
Midiendo el circuito de tiempo RC con el BASIC Stamp

Aunque se puede usar un reloj para registrar que la carga del capacitor alcance cierto nivel, el BASIC Stamp se puede programar para monitorear el circuito y darle usted mediciones de tiempo ms consistentes.
Programa Ejemplo: PolledRcTimer.bs2

Meta y ejecute el programa PolledRcTimer.bs2. Observe como el BASIC Stamp carga el capacitor y luego mide el tiempo de descarga. Registre la Medicin de Tiempo (el tiempo de descarga del capacitor) en la fila del resistor de 470 de la Tabla 5-1. Desconecte la Alimentacin de su Tablilla Board of Education o BASIC Stamp Home Work. Quite el resistor de 470 del lugar marcado Ri de la Figura 5-8 y Figura 5-9 de y reemplacelo por un resistor de 1 kilo ohm. Reconecte la alimentacin a su Tablilla. Registe su siguiente Medicipon de Tiempo (para el resistor de 1 K) Repita estos pasos para cada valor de resistor de la Tabla 5-1

Midiendo Rotacin Pgina 149

Tabla 5-1: Resistencia RC-tiempo para C = 3300 F


Resistencia () Tiempo Medido (s)

470 1k 2k 10 k

' Que es un Microcontrolador? - PolledRcTimer.bs2 ' Programa de Tiempo de descarga modificado para seguir voltaje de descarga de RC. ' {$STAMP BS2} ' {$PBASIC 2.5} timeCounter counter PAUSE 1000 DEBUG CLS HIGH 7 DEBUG "Capacitor en carga...", CR FOR counter = 5 TO 0 PAUSE 1000 DEBUG DEC2 counter, CR, CRSRUP NEXT DEBUG CR, CR, "Ahora Mida el tiempo de Descarga!", CR, CR INPUT 7 DO PAUSE 100 timeCounter = timeCounter + 1 DEBUG ? IN7 DEBUG DEC5 timeCounter, CR, CRSRUP, CRSRUP LOOP UNTIL IN7 = 0 DEBUG CR, CR, CR, "The RC decay time was ", DEC timeCounter, CR, "Decimas de segundo.", CR, CR END VAR VAR Word Nib

Pgina 150 Qu es un Microcontrolador?

Funcionamiento del programa PolledRcTimer.bs2

Se declaran dos variables. La variable timeCounter se utiliza para conocer cuanto tiempo toma el capacitor en descargarse a travs de Ri. La variable counter se usa para un conteo descendente mientras el capacitor se esta cargando.
timeCounter counter VAR VAR Word Nib

La instruccin DEBUG CLS limpia la Terminal Debug para que no se amontonen las mediciones sucesivas. High 7 pone en alto P7 e inicia la carga del capacitor, y entonces se muestra el mensaje Capacitor Cargando. Despus de eso, el bucle FOR...NEXT hace un conteo descendente mientras el capacitor se est cargando. Cuando el capacitor se carga, se incrementa el voltaje a travs de sus terminales desde 3.4 y 4.9 V (depende del valor de Ri)
DEBUG CLS HIGH 7 DEBUG "Capacitor Cargando...", CR FOR counter = 5 TO 0 PAUSE 1000 DEBUG DEC2 counter, CR, CRSRUP NEXT

Un mensaje muestra el inicio de la descarga.


DEBUG CR, Ahora mide el tiempo de descarga!, CR, CR

Para permitir que el capacitor se descargue a travs del resistor Ri, el pin de E/S cambia de HIGH a INPUT. Cuando est como entrada el pin E/S no afecta al circuito, pero pueden sensar seales high o low. Tan pronto como el pin E/S libera el circuito, el capacitor se descarga y circuila corriente a travs del resistor. Cuando se ha descargado el capacitor el voltaje a travs de sus terminales se hace menor y menor (se descarga).
INPUT 7

En el captulo anterior del botn push, usted us el BASIC Stamp para detectar una seal high o low usando las variables IN3 y IN4. En esa ocasin, la seal high era Vdd y la seal low era Vss. Para el BASIC Stamp verdaderamente la seal high es cualquier voltaje mayor de 1.4 V. Claro que tambin puede ser 5V. En forma semejante, la seal low el cualquier voltaje entre 1.4 V y 0V.

Midiendo Rotacin Pgina 151

El bucle DO...LOOP verifica el pin P7 cada 100 ms hasta que el valor de IN7 cambia de 1 a 0, y esto indica que el voltaje de descarga del capacitor es 1.4 V.
DO PAUSE 100 timeCounter = timeCounter + 1 DEBUG ? IN7 DEBUG DEC5 timeCounter, CR, CRSRUP, CRSRUP LOOP UNTIL IN7 = 0

Se muestra el resultado y se termina el programa.


DEBUG CR, CR, CR, "El tiempo de descarga de RC fue ", DEC timeCounter, CR, "decimas de segundo.", CR, CR END

Su turno Un circuito ms rpido

Usando un capacitor de aproximadamente 1/3 de 3300 F, la medicin del tiempo para el valor de cada resistor que se uso en el circuito se reducir por 1/3. Posteriormente en la siguiente actividad usted usar un capacitor con 1/33 000 de capacidad El BASIC Stamp tomara para usted la medicin de tiempo usando una instruccin llamada RCTIME. Desconecta la alimentacin de su Tablilla Board of Education o HomeWorkBoard. Reemplace el capacitor de 3300 F por uno de 1000 F. Confirme que la polaridad de su capacitor es correcta. La terminal negativa se conecta a Vss. Reconecte la alimentacin. Repita los pasos del Programa Ejemplo: PolledRcTimer.bs2 y registre sus mediciones de tiempo en la Tabla 5-2. Compare sus mediciones de tiempo a la que anot en la Tabla 5-1. Qu tan cercanas estn a 1/3 del valor de las mediciones tomadas con el capacitor de 3300 F?

Pgina 152 Qu es un Microcontrolador?

Tabla 5-2: Resistencia y tiempo RC-, C = 1000 F


Resistencia () Tiempo medido (s)

470 1k 2k 10 k

ACTIVIDAD #3: LEYENDO LA PERILLA CON EL BASIC STAMP


En la actividad #1, se us un potenciometro como resistor variable. La resistencia en el circuito vara dependiendo de la posicin de la perilla de ajuste. En la actividad #2 se us un circuito de tiempo RC para medir diferentes resistencias. En esta actividad, usted construir un circuito de tiempo RC para leer el potenciometro y usar el BASIC Stamp para tomar las mediciones de tiempo. El capacitor que usar ser muy pequeo y las mediciones de tiempo estarn en el rango de microsegundo. Incluso, aunque las mediciones son de duraciones muy cortas de tiempo, el BASIC Stamp le dar una excelente indicacin de la resistencia entre las terminales A y W que a su vez indican la posicin de la perilla. Partes para leer el circuito de tiempo RC con el BASIC Stamp Un Potenciometro de 10 K Un Resistor de 220 (rojo-rojo-caf) Cuatro alambres para puentes Un Capacitor de 0.1 F Un Capacitor de 0.01 f Dos puentes
Estos capacitores no tienen. Terminals + ni -. No tienen polaridad.. Pueden conectar estos capacitores sin preocuparse de las terminales positiva y negativa.

104

0.1 F

0.01 F

103

Figura 5-10 Capacitores de Cermica Esquemtico y dibujo del capacitor de 0.1F (izquierda) y el de 0.01 F (derecha)

Midiendo Rotacin Pgina 153

Contruyendo el circuito de Tiempo RC para el BASIC Stamp

La Figura 5-11 muestra el diagrama esquemtico y alambrado para el circuito RC de tiempo rpido. Este es el circuito que usted usar para monitorear la posicin de la perilla del potenciometro con ayuda del BASIC Stamp y un programa PBASIC.

Figura 5-11 Diagrama esquemtico y alambrado del circuito de Tiempo RC para el BASIC Stamp con potenciometro.

Programando las Mediciones de Tiempo de RC

El programa ejemplo en la actividad #2, midi el tiempo de descarga verificando IN7 = 0 cada 100 ms, y lo mantuvo varias veces para verificarlo. Cuando IN7 cambi de 1 a 0, esto indic que el voltaje del capacitor se descargo a 1.4 V. Cuando se ejecut el programa el resultado se almacen en la variable timeCounter como un nmero de dcimas de segundo que le tomo al capacitor descargarse hasta 1.4 V. Este siguiente Programa Ejemplo usa una instruccin PBASIC llamada RCTIME que hace que el BASIC Stamp mida la descarga RC en terminos de unidades de 2 us. Entonces, en lugar de dcimas de segundo, el resultado RCTIME 7, 1 almacena en la variable time el nmero de 2 millonesimas de unidades de segundo que le toma al voltaje del capacitor descargarse debajo de 1.4 V. Como la instruccin RCTIME tiene

Pgina 154 Qu es un Microcontrolador?

unidas muy finas de medicin, usted puede reducir el tamao del capacitor desde 3300 F hasta 0.1 e iincluso a 0.01 F, y todova obtener mediciones de tiempo que indican el valor del resistor. Como la resistencias entre las terminales del potenciometro cambina conforme gira la perilla, la medicin RCTIME le dan a usted mediciones de tiempo que corresponde a la posicin de la perilla del potenciometro.
Programa Ejemplo: ReadPotWithRcTime.bs2

Meta y ejecute el programa ReadPotWithRcTime.bs2 Gire la perilla del potenciometro mientras observa el valor de la variable time usando la Terminal Debug.
Recuerde aplicar un poco de presin para mantener el potenciometro bien fijo sobre la tablilla cuando gira la perilla. Si su servo comienza a oscilar adelante y atrs inesperadamente en lugar de mantener su posicin de retencin, puede ser que el potenciometro no est bien fijo.

' Que es un Microcontrolador - ReadPotWithRcTime.bs2 ' Lea el tiempo RC del potenciometro usando la instruccin RCTIME . ' {$STAMP BS2} ' {$PBASIC 2.5} time VAR Word PAUSE 1000 DO HIGH 7 PAUSE 100 RCTIME 7, 1, time DEBUG HOME, "tiempo = ", DEC5 time LOOP

Su Turno Cambiando el Tiempo al Cambiar el Capacitor

Reemplace el capacitor de 0.1F por uno de 0.01F Mantenga las mismas posiciones del Potenciometro como lo hizo en la actividad principal y compare los valores mostrados por la Terminal Debug con los valores obtenidos con el capacitor de 0.1F.Son las mediciones RCTIME cerca de un dcimo del valor para una posicin dada del potenciometro. Regrese el capacitor de 0.1F.

Midiendo Rotacin Pgina 155

Con el capacitor de 0.1F y el de 0.01 quitado gire la perilla del potenciometro a su lmite en ambas direcciones y anote los valores ms alto y ms bajo para la siguiente acitividad. El ms alto______ El ms bajo_______ .
Funcionamiento del Programa ReadPotWithRcTime.bs2

La Figura 5-12 como interactuan las intrucciones HIGH, PAUSE y RCTIME del programa ReadPotWithRcTime.bs2 con el circuito de la Figura 5-11.
Figura 5-12 Voltajes en P7 con HIGH, PAUSE y RCTIME

En la izquierda la instruccin HIGH 7 hace que el BASIC Stamp internamente conecte el pin E/S P7 a los 5 V (Vdd). La corriente circula desde la fuente a travs del resistor del potenciometro y tambin carga al capacitor. Conforme el capacitor se aproxima a su carga final (casi 5 V) menor es la corriente que fluye por l. La instruccin PAUSE 100 se usa primordialmente para que la Terminal Debug muestre actualizaciones cerca de 10 veces por segundo; PAUSE 1 es suficiente para cargar el capacitor. En la derecha la instruccin RCTIME 7,1, time cambia la direccin del pin E/S de salida a entrada y comienza el tiempo de conteo en incrementos de 2 us. Como entrada, el pin E/S ya no alimenta al circuito con 5 V. De hecho, como entrada, es casi invisible al circuito RC. Entontes, el capacitor empieza a perder su carga a travs del potenciometro. Conforme el

Pgina 156 Qu es un Microcontrolador?

capacitor piede su carga, su voltaje se descarga. La instruccin RCTIME mantiene el tiempo de conteo hasta que P7 sensa una seal low esto significa que el voltaje a travs del capacitor se ha descargado a 1.4 V, y en este punto almacena la medicin en la variable time. La Figura 5-12 tambin muestra una grfica del voltaje en la terminales del capacitor durante las instrucciones HIGH, PAUSE y RCTIME. En respuesta a la instruccin HIGH 7 que conecta el circuito a 5 V, el capacitor se carga rapidamente. Entonces mantiene su nivel a su voltaje final durante la ejecucin de la instruccin PAUSE 100. Cuando el programa llega a la instruccin RCTIME 7,1, time, cambia la direccin del pin E/S a entrada, entonces el capacitor empieza a descargase a travesl de potenciometro. Conforme el capacitor se descarga, el voltaje en P7 disminuye. Cuando el voltaje disminuye hasta 1.4 V (en este ejemplo en la marca de 150 us), la instruccin RCTIME deja de contar el tiempo y almacena el resultado de la medicin en la variable time. Como la instruccin RCTIME cuenta el tiempo en unidades de 2 us, para 150 us el nmero que se almacen en la variable time es 75.
Umbral Lgico del pin E/S: 1.4 V es el umbral lgico del pin E/S en el BASIC Stamp. Cuando el pin E/S se direcciona como entrada, almacena un 1 en su registro de entrada si el voltaje aplicado es superior a1.4 V, o almacena un 0 si el voltaje de entrada es menor a 1-4 V. El primer botn push del captulo 3 Activida #2 aplicaba 5 V o 0 V. Como 5 V est arriba de 1.4 V, IN3 almacen un 1 y como 0 V est debajo de 1.4 IN3 almacen un 0. Argumento State de RCTIME. En el programa ReadPotWithRcTime.bs2, el voltaje a travs del capacitor disminuye desde casi 5 V, y cuando alcanza 1.4 V, el valor en el registro IN7 cambia de 1 a 0. En este momento, la instruccin RCTIME almacena la medicin en Duration que es la variable time en el programa ejemplo. El argumento State de la instruccin RCTIME es 1 in RCTIME 7, 1, time, que le indica a la instruccin RCTIME que el registro IN7 almacenar un 1 cuando inicie la medicin. La instruccin RCTIME mide cuanto tiempo le toma al registro IN7 cambiar al estado opuesto, y esto sucede cuando el voltaje disminuye debajo del voltaje umbral a 1.4 V del pin de E/S. Para mayor informacin. Vea la instruccin RCTIME en el manual BASIC Stamp Manual o en la ayuda de BASIC Stamp Editors Help.

La figura 5-13 muestra la forma en que cambia la descarga con la resistencia del potenciometro para el circuito de la Figura 5-11. Cada posicin de la perilla del potenciometro determina una cierta resistencia. Girandolo en una direccin la resistencia aumenta y en la otra direccin la resistencia disminuye. Cuando la resistencia es mayor el tiempo de descarga es ms largo, y la instruccin RCTIME almacena un valor mayor en la variable time. La instruccin DEBUG del programa ReadPotWithRcTime.bs2 muestra esta medicin de tiempo en la Terminal Debug, y como el tiempo de descarga

Midiendo Rotacin Pgina 157

cambia con la resistencia del potenciometro, el nmero en la Terminal Debug indica la posicin de la perilla.

Figura 5-13 Forma en que la Resistencia del Potenciometro afecta el Tiempo de Descarga

Por qu el capacitor se carga a un menor voltaje cuando el potenciometro tiene menos resistencia? De una mirada en le esquemtico de la esquina superior izquierda de la Figura 5-12. Sin el resistor de 220 , el pin de E/S debe ser capaz de cargar el capacitor a 5 V, pero el resistor de 220 es necesario para prevenir un posible dao al pin E/S de un transitorio de corriente cuando empieza a cargar el capacitor. Tambin previee que el potenciometro se dae al drenar mucha corriente cuando se gira a 0 mientras el pin E/S est mandando una seal high de 5 V. Cuando se le aplican 5 V a las terminarles del resistor de 220 en serie con el potenciometro, el voltaje entre ellos tiende a se una fraccin de 5 V. Cuando dos resistores conduciendo corriente se conectan en serie, que generan un voltaje intermedio, al circuito se le llama Divisor de Voltaje. Entonces el resistor de 220 y el potenciometro forman un circuito divisor de voltaje, y para cualquier resistencia del potenciometro (Rpot) , usted puede usar esta ecuacin para calcular el voltaje en el potenciometro (Vpot): Vpot = (5 V x Rpot) /(Rpot + 220 ) El valor de Vpot define el valor superior del voltaje en el capacitor. En otras palabras, Cualquiera que sea el voltaje en el potenciometro ser si el capacitor no est conectado, esto es el voltaje al que el capacitor puede cargarse pero no mayor a este voltaje. El rango de la mayoria de las perillas del potenciometro los valores de la resistencia son en k y cuando usted calcula Vpot para valores de Rpot en K, los resultados son bastante cercanos a 5 V. El resistor de 220 no influye en el Vpor de cargarse arriba de 1.4 V hasta que el valor del potenciometro disminuye a 85.6 ,este valor es menor al 1% del rango del movimiento del potenciometro. Este 1% resultara de todas formas para las mediciones ms pequeas, entonces es dificil decir que mediciones de 1% en este rango estn fuera de los ordinario. Incluso con el resistor adicional de 220 contruido en su Tablilla BASIC Stamp las conexiones en el pin E/S solo se afectan cuando el rango del potenciometro llega a 1.7%, y este valor no es importante. Entonces el resistor de 220 protege el pin E/S con un impacto pequeo en la medicin de descarga de RC para decirle cuanto se ha desviado la posicin de la perilla del potenciometro.

Pgina 158 Qu es un Microcontrolador?

ACTIVIDAD #4: CONTROLANDO UN SERVO CON UN POTENCIOMETRO


Los joysticks como en de la Figura 5-14 se encuentran comunmente en controladores de video juegos. Cada joystick tiene tipicamente dos potenciometros que permiten que la electrnica interna en el controlador del juego reporta la posicin del joystick a la consola de video juego. Un potenciometro gira el movimiento horizotal del joystick (izquierda a derecha), y el otro gira el movimiento vertical del joystic (adelante/atrs)

Horizontal potentiometer

Figura 5-14 Potenciometros dentro del Mdulo Joystick de Parallax.

Vertical potentiometer

Otra aplicacin de joystick que usa potenciometros es el controlador de radio RC y el aeroplano en la Figura 4-1. El controlador tiene dos joysticks y cada uno tiene dos potenciometros. Cada posicin del potenciometro es responsable de controlar un servo diferente del RC del avin. En esta actividad, usted usar un potenciometro similar a los del joystick que controla la posicin del servo. Cuando usted gira la perilla del potenciometro, la estrella del servo reproducir este movimiento. Esta actividad utilizad dos circuitos, el circuito del potenciometro de la Actividad # 3 de este captulo, y el circuito servo del captulo 4, actividad # 1. El programa PBASIC desarrollado en este captulo mide repetidamente la posicin del potenciometro con una instruccin RCTIME, y luego usa la medicin y algo de matemticas para controlar el posicin del servo con una instruccin PULSOUT.
El BASIC Stamp puede medir la posicin del joystick. Como hay dos potenciometros en cada joystick, cada uno de ellos puede reemplazar el potenciometro nico de los circuitos de la Figura 5-11. Entonces una instruccin RCTIME puede medir el potenciometro vertical y el otro puede medir el potenciometro horizontal.

Midiendo Rotacin Pgina 159

Partes del Potenciometro Controlando el Servo

Potenciometro de 10 K Un Resistor de 220 (rojo-rojo-cafe) Un Resistor de 470 (amarillo-violeta-cafe) Un Capacitor de 0.1 F Un Servo Normalizado de Parallax Un LED de cualquier color Dos alambres para puentes Los usuarios de la Tablilla HomeWork Board tambin necesitarn: Un conector de 3 terminales hembra-hembra Cuatro alambres para puentes
Construyendo el Circuito de Perilla y Servo

Esta actividad usar dos circuitos que usted ya ha construido individualmente: el circuito del potenciometro de la actividad que acaba de terminar y el circuito servo del captulo anterior. Quite del rea de su tablilla el potenciometro del circuito RC de la actividad # 3. Si necesita reconstruirlo, use la Figura 5-11. Asegurese que usa el capacitor de 0.1 F y no el capacitor de 0.01 F. Agregue al proyecto el circuito servo del captulo 4, actividad 1. Recuerde que su circuito servo ser diferente dependiendo de la Tablilla que use. Abajo estn las pginas para esta seccin que necesita buscar en: o Vaya a la Pgina 96 si usa la Tablilla Board of Education o Vaya a la Pgina 99 si usa la Tablilla BASIC Stamp HomeWork
Programando Potenciometro Controlando el Servo

Usted necesitar los valores ms pequeo y ms grande de la variable tiempo que guard de su circuito RC de tiempo cuando us un capacitor de 0.1 F Si no ha completado la seccin Su Turno de la actividad anterior, regresese y completela ahora. Para este siguiente ejemplo, estos son los valores de tiempo que midieron los tcnicos de Parallax, sus valores son quiz ligeramente diferentes.

Pgina 160 Qu es un Microcontrolador?

En el lmite en sentido de la manecillas del reloj En el lmite en sentido contrario de la manecillas del reloj

1 691

Entonces, como pueden ajustarse estos valores de entrad para que cubran el rango de 500 1000 para controlar el servo con la instruccin PULSOUT? La respuesta es usando multiplicaciones y sumas. Primero, multiplique los valores de entrada por algo para hacer la diferencia de entre los valores en el sentido de las manecillas del reloj (mnimo) y en sentido inverso de las manecillas del reloj (mximo) 500 en lugar de casi 700. En seguida, agregue un valor constante al resultado para que el rango de 500 a 1000 en lugar de 1 a 500. En electrnica a estas operaciones se les llama Escalamiento y ajuste. As es como trabaja la matemtica para la multiplicacin (escalamiento).
500 = 691 0.724 = 500 691 500 time(minimum) = 1 = 0.724 691 time(maximum) = 691

Despues de haber escalado los valores, as se hace el paso de suma (offset)


time(maximum) = 500 + 500 = 1000 time(minimum) = 0.724 + 500 = 500

El operador */ se introdujo en la pgina 84 y es parte del PBASIC para escalamiento por valores fraccionales, como 0.724. Estos son nuevamente los pasos para usar */ aplicado a 0.74: 1. Coloque el valor o variable que usted desea multiplicar por un valor fraccional antes del operador */
tiempo = tiempo */

2. Tome el valor fraccional que usted desea usar y mutipliquelo por 256 nuevo valor fraccional = 0.724x256 = 185.344 3. Quite los decimales del nmero nuevo valor fraccional = 185

Midiendo Rotacin Pgina 161

4. Coloque el valor despues del operador */


tiempo = tiempo */ 185

Estos son los pasos del escalamiento ahora todo lo que necesitamos es agregar el offset de 500. Esto puede hacerse con una segunda instruccin que suma 500 a tiempo:
tiempo = tiempo */ 185 tiempo = tiempo + 500

Ahora, tiempo esta listo para reciclarce con el argumento Duration de la intruccin PULSOUT
time = time */ time = time + 500 PULSOUT 14, time Escalamiento por 0.724. Se aplica un offset de 500. Manda el pulso al servo.

Programa Ejemplo: ControlServoWithPot.bs2

Meta y ejecute este programa, luege gire la perilla del potenciometro y asegurese que a iguales movimientos del servo, corresponden al potenciometro.
' Que es un Microcontrolador - ControlServoWithPot.bs2 ' Lee el potentiometro del circuito de tiempo RC usando la instruccin RCTIME. ' Escale time por 0.724 y offset por 500 para el servo. ' {$STAMP BS2} ' {$PBASIC 2.5} PAUSE 1000 DEBUG "Programa ejecutandose!" time VAR Word

Pgina 162 Qu es un Microcontrolador?

DO HIGH 7 PAUSE 10 RCTIME 7, 1, time time = time */ 185 time = time + 500 PULSOUT 14, time LOOP

' Escalamiento por 0.724 (X 256 for */). ' Se aplica un Offset de 500. ' Manda pulsos al servo.

Su Turno Escalamiento de la Relacin Servo-Perilla.

Su potenciometro y capacitor probablemente le darn valores de tiempo que son diferentes de los que analizamos en esta actividad. Estos son valores que reuni en la seccin Su Turno de la actividad anterior. Repita la matemtica analizada en la seccin Programando Potenciometro Controlando el Servo de la pgina 159 usando los valores mximos y minimos. Sustituya sus valores de Escalamiento y Offset en el programa ControServoWithPot.bs2. Comente el DEBUG Programa en Ejecucin! que tiene un apostrofe al principio de la lnea. Agregue esta lnea de cdigo entre las instrucciones PULSOUT y LOOP para que usted pueda ver sus resultados:
DEBUG HOME, DEC5 time Muestra en ajuste de valor de tiempo

Ejecute el programa modificado y verifique su trabajo. Debido a que se redondearon los valores, los lmites puede que no sean exactamente 500 y 1000, pero deben ser muy cercanos.
Declarando Constantes y Pin con Directivas

En programas grandes, usted puede terminar usando el valor del factor de escalamiento (que fue 185) y el de offset (que fue 500) muchas veces en el programa. Nmeros como 185 y 500 en su programa se llaman constantes porque a diferencia de las variables su valores no cambian mientras se ejecuta el programa. En otras palabras, el valor permanece constante. Usted puede crear nombres para estas constantes con directivas CON.
Factor de escalamiento Ofsset delay CON CON CON 185 500 10

Midiendo Rotacin Pgina 163

Estas directivas CON siempre se declaran cerca del comienzo del programa, para que sean fciles de encontrar.

Una vez que sus valores constantes se le han dado nombres con las directivas CON, usted puede usar en su progrma ScaleFactor en lugar de 185 y Offset en lugar de 500. Por ejemplo:
time = time */ scale Factor time = time + offset Escalaminento de 0.724 Offset de 500

Con los valores que asignamos a las constantes con las directivas CON las instrucciones verdaderamente son:
time = time */ 185 time = time + 500 Escalaminento de 0.724 Offset de 500

Una ventaja importante al usar constantes es que usted puede cambiar una directiva con y esta se actualiza en cada instante del nombre de al constante en su programa. Por ejemplo, si usted escribe un programa grande que usa la constante ScaleFactor en 1 diferentes lugares, un cambio para Scale Factor Con... y todos los momentos su programa usara ScaleFactor que actualiza el valor para el siguiente prograda descargado. Entonces, Si usted cambia ScaleFactor CON 500 por ScaleFactorCON510, cada instruccin con ScaleFactor usar 510 en lugar de 500. Usted tambien puede darle nombres a los pines E/S usando la directiva PIN. Por ejemplo, usted puede declarar un directiva PIN para el pin E/S p/ de la siguiente manera:
RcPin PIN7

Hay dos lugares en el programa del ejemplo anterior donde se usa el nmero 7 para referirse al pin E/S P7. El primero ahora puede escribirse como:
HIGH RcPin

El segundo puede escribirse como:


RCTIME RcPin, 1, time

Si posteriormete cambia su circuito para usar diferentes pines E/S, todo lo que tiene que hacer es cambiar el valor de su directiva PIN y las dos instrucciones HIGH y RCTIME, se actualizarn automticamente.

Pgina 164 Qu es un Microcontrolador?

De igual forma, si usted tiene que recalibrar su factor de escalamiento o el offset, usted solamente necesita cambiar las directivas CON al principio del programa.
La directiva del PIN tiene una caracterstica adicional: El compilador PBASIC puede detectar si el nombre del pin se usa como entrada o salida, y substituur al nmero del pin E/S, o al bit del registro de la variable de entrada correspondiente. Por ejemplo, usted podra declarar dos directivas pin, como LedPin PIN 14 y ButtonPin PIN3. Entonces su cdigo puede tener una frase como IF buttonPin = 1 THEN HIGH LedPin. El compilador PBASIC convierto esto a IF IN3 = 1 THEN HIGH14. El IF ButtonPin = 1 hizo una comparacin, y el compilador PBASIC conoce que usted est usando Button Pin como una entrada. Entonces, usa el bit del registro de entrada IN3 en lugar de nmero 3. De igual manera, el compilador PBASIC sabe que HIGH LedPin usa el nombre pin LedPin como el valor constante 14 para una operacin de salida, y este lo sustituye por HIGH 14.

Programa Ejemplo: ControlServoWithPotUsingDirectives.bs2

Este programa funciona igual que el programa ControlServoWithPot.bs2 pero usa nombre de constantes como pines de E/S. Meta y ejecute el programa ControlServoWithPotUsingDirectives.bs2 Observe como el servo responde al potenciometro y verifique que se comporta de la misma manera que el programa ControlServoWithPot.bs2.
' Que es un Microcontrolador - ControlServoWithPotUsingDirectives.bs2 ' Lee el otentiometro en el circuit RC-time usando la instruccin RCTIME . ' Le aplica un factor de escala y offset, luego manda el valor al servo. ' {$STAMP BS2} ' {$PBASIC 2.5} rcPin servoPin scaleFactor offset delay time PAUSE 1000 PIN PIN CON CON CON VAR 7 14 185 500 10 Word ' Define pines E/S

' Declara Constantes

' Declara Variable time ' Initializacion

Midiendo Rotacin Pgina 165

DO HIGH rcPin PAUSE delay RCTIME rcPin, 1, time time = time */ scaleFactor time = time + offset PULSOUT servoPin, time DEBUG HOME, DEC5 time LOOP ' Routina Principal ' Mide tiempo de descarga RC

' Escala a scaleFactor. ' time ms Offset ' Manda pulso al servo. ' Muestra el ajuste del valor tiempo

Su Turno Actualizando la Directiva de PIN

Como se mencion anters, si usted conecta el circuito RC a un pin E/S diferente, usted puede simplemente cambiar el valor de la directiva RcPin PIN, y este cambio automticamente se refleja en las instrucciones HIGH RcPin y RCTIME RcPin, 1, time. Guarde el Programa Ejemplo con un nombre nuevo. Cambie scaleFactor y offser a los valores nicos para su circuito RC que usted determinado en la seccin anterior Su Turno. Ejecute el programa modificado y verifique que trabaja correctamente. Modifique su circuito moviendo la conexin del circuito RC de pin E/S 7 al pin de E/S 8. Modifique la declaracin rcPin que diga:
rcPin PIN 8

Ejecute nuevamente su programa y verifique que las instrucciones HIGH y RCTIME todava estn funcionando correctamente con el pin diferene que acaba de cambira con la directiva RcPin PIN.

Pgina 166 Qu es un Microcontrolador?

RESUMEN
Este captulo introdujo el potenciometro, una parte frecuentemente encontrada debajo de varios botones y perillas. El potenciometro tiene un elemento resistivo que tipicamente se conecta al exterior con dos terminales y una terminal deslizable que hace contacto en un punto variable sobre el elemento resistivo. El potenciometro se puede usar como un resistor variable si la terminal deslizable y una de las terminales exteriores se usan en un circuito. En este capitulo tambien se introdujo el capacitor. Un capacitor se puede usar para almacenar y liberar carga. La cantidad de carga que un capacitor puede almacenar se relaciona con su valor, que se mide en farads, (F). El smbolo es una notacin de ingeniera de micro y significa una millonsima. El capacitor utilizado en las actividades de este captulo fue de 0.01 a 3300 F. Un resistor y un capacitor se pueden conectar junto en un circuito que necesita cierta cantidad de tiempo para cargarse y descargarse. A este circuito se le llama comunmente circuito de tiempo RC. La R y C del circuito de tiempo RC se refieren al resistor y al capacitor. Cuando un valor (C en las actividades de este captulo) se mantiene constante, el cambio en el tiempo que le toma para que el circuito se descargue se relaciona con el valor de R. Cuando cambia el valor de R, el valor que el tiempo toma para que se cargue y descarge tambien cambia. El tiempo total que le toma al circuito RC para descargarse puede escalarse usando un capacitor de diferente tamao. Se uso el polling para monitorear el tiempo de descarga de un capacitor en un circuito RC en donde el valor de C era muy grande. Se usaron diferentes resistores para mostrar como cambia el tiempo de descarga cuando cambia el valor del resistor del circuito. Se us la instruccin RCTIME para monitorear un potenciometro (un resistor variable) en un circuuito de tiempo RC con un capacitor ms pequeo. Aunque estos capacitores hacen que el tiempo de descarga tenga un rango de 2 a 1500 us (millonesimas de segundo), el BASIC Stamp no tiene problemas para controlar estas mediciones de tiempo con la instruccin RCTIME. El pin E/S debe fijarse en HIGH y entonces al capacitor del circuito de tiempo RC se le permite descargarse usando PAUSE antes usar la instruccin RCTIME. La programacin en PBASIC puede usarse para medir un sensor resistivo como un potenciometro y escalar su valor para que sea de utilidad con otro dispositivo, por ejemplo un servo. Esto incluye realizar operaciones matemticas en el tiempo de descarga de RC medido, que la instruccin RCTIME almacena en una variable. Esta variable

Midiendo Rotacin Pgina 167

puede ajustarse sumandole un valor constante que nos permite controlar el servo. En la seccin Proyectos, usted puede por si mismo encontrarlo usando multiplicaciones y divisiones. La directiva CON puede usarse al principio de un programa para sustituir el nombre de un valor constante (un nmero). Despus de darle nombre a una constante, el nombre puede usarse en lugar del nmero en todo el programa. Todo da facilidad, especialmente si usted necesita usar el mismo nombre en 2, 3, o incluso 100 diferentes lugares en el programa. Usted puede cambiar el nmero en la directiva CON, y todos los 2, 3, o incluso 100 diferentes ejemplos de ese nmero se actualizarn automticamente la siguiente vez que usted ejecute el programa. Las directivas PIN le permiten que usted le asigne nombre a los pines de E/S. El nombre del pin de E/S es sensible en contexto, de tal manera que el compilador PBASIC sustituye el nmero del pin E/S correspondiente por el nombre del pin en instrucciones como HIGH, LOW y RCTIME. Si el nombre del pin se usa en una frase condicional, este lo sustituye en lugar del registro de entrada correspondiente como IN2, IN3, etc.
Preguntas

1. Cundo usted gira la perrilla o el botn de un sistema de sonido, que componente principal est ajustando? 2. En un potenciometro tpico, es ajustable la resistencia entre las dos terminales exteriores? 3. Por qu se parece un capacitor a una bateria recargable? 4. Qu puede usted hacer con un ciruito de tiempo RC para darle una indicacin del valor de un resistor variable? 5. Cmo actua la directiva CON? De su explicacin en trminos de un nombre y un nmero.
Ejercicio

1. Considere que tiene un capacitor de 0.5 F en un circuito de tiempo RC, y desea que la medicin sea 10 veces mayor? Calcule el valor del nuevo capacitor
Proyectos

1. Agregue un LED bicolor a la actividad #4. Modifique el programa ejemplo para que el LED bicolor sea rojo cuando gira el servo gira en sentido inverso de las manecillas del reloj, y verde cuando el servo gira en sentido de la s manecillas del reloj y no se ilumine cuando el servo mantenga su posicin.

Pgina 168 Qu es un Microcontrolador?

2. Use la instruccin IF...THEN para moficar el primer programa ejemplo de la actividad #4 de tal forma que el servo solamente gire entre valores de 650 a 800 de PULSOUT.
Soluciones

Q1. Un potenciometro Q2. No. Est fija. La resistencia variable est entre cualquiera de las terminales finales y la terminal central Q3. Q3. Un capacitor es como una pila recargable porque puede cargarse para que mantenga un voltaje. La diferencia es que solamente retiene la carga por una pequea cantidad de tiempo. Q4. Usted puede medir el tiempo que le toma al capacitor descargarse (o cargarse). Este tiempo se relaciona con la resistecia y la capacitancia. Si se conoce la capacitancia y la resistencia es variable, entonces el tiempo de descarga da una indicacin de la resistencia. Q5. La directiva CON sustituye un nombre por un nmero. E1. El nuevo capacitor = (10 veces el valor del capacitor viejo) = (10x0.5F) = 5 F. P1. Actividad #4 agregandole el LED Bicolor
P13

P12 470

Esquemtico del potenciometro de la Figura 5-11, el servo del captulo 4 actividad #1, y el LED bicolor de la Figura 2-19, muestra a P15 y P14 que se cambiaron a P13 Y P14.

' ' ' ' ' ' ' '

Que es un microcontrolador? - Ch5Prj01_ControlServoWithPot.bs2 Lee el potentiometro en el circuito de tiempo RC usando la instruccin RCTIME. El tiempo var esta en el rango de 126 a 713, y se nececita un offset de 330. LED Bicolor en P12, P13 indica la direccion de la rotacin del servo: verde para CW, rojo para CCW, apagado cuando el servo esta en posicin de reten.

' {$STAMP BS2} ' {$PBASIC 2.5}

Midiendo Rotacin Pgina 169

PAUSE 1000 DEBUG "Programa en Ejecucin!" time potenciometro prevTime DO prevTime = time HIGH 7 PAUSE 10 RCTIME 7, 1, time time = time + 350 ' Almacena la lectura del tiempo anterior ' Lee el pot usando RCTIME VAR VAR Word Word ' leyendo el tiempo del ' lectura previa

' Escala el pot, iguala el rango del servo

' al incrementarse, el pot giro CCW IF ( time > prevTime + 2) THEN HIGH 13 ' El Led Bicolor es rojo LOW 12 ' valor disminuye, el pot giro CW ELSEIF ( time < prevTime - 2) THEN LOW 13 HIGH 12 ELSE LOW 13 LOW 12 ENDIF PULSOUT 14, time LOOP

' LED Bicolor es verde ' El Servo mantiene su posicion ' LED apagado

1. La clave es agregar bloques IF...THEN. abajo mostramos un ejemplo. CLREOL es un til carcter de control DEBUG que significa limpiar al finalizar la lnea.'
' Que es un Microcontrolador - Ch5Prj02_ControlServoWithPot.bs2 ' Lee el potentiometro en el circuito de tiempo RC usando la instruccin RCTIME. ' Modificado con IFTHEN para que el servo slo gire de 650 a 850. ' El tiempo variable vara desde 1 a 691, se necesita un offset mnimo ' de 649 . ' {$STAMP BS2} ' {$PBASIC 2.5} PAUSE 1000 DEBUG "Programa en ejecucin!" time VAR Word DO

Pgina 170 Qu es un Microcontrolador?

HIGH 7 PAUSE 10 RCTIME 7, 1, time time = time + 649 IF (time < 650) THEN time = 650 ENDIF IF (time > 850) THEN time = 850 ENDIF

' Lee el pot con RCTIME

' Escala tiempo al rango del servo ' Limita el rango de 650 a 850

PULSOUT 14, time DEBUG HOME, "time = ", DEC4 time, CLREOL LOOP

Indicadores Digitales Pgina 171

Captulo 6: Indicadores Digitales


EL INDICADOR DIGITAL DE TODOS LOS DIAS
La Figura 6-1 muestra un indicador en el frente de la puerta de un horno. Cuando el horno no se usa, muestra la hora. Cuando se usa el horno, muestra el tiempo de cocimiento, y parpadea al mismo tiempoque una alarma suena para indicarle que el alimento est listo. Un microcontrolador dentro de la puerta del horno monitorea los botones push y actualiza el indicador. Tambien monitorea un sensor interno del horno y conmuta dispositivos que energizan y desenergizan el elemento de calentamiento.

Figura 6-1 Reloj Digital con Indicador de 7 segmentos en la puerta del horno.

Cada uno de los tres dgitos de la Figura 6-1 se llama indicador de 7 segmentos. En este captulo, usted programar el BASIC Stamp para mostrar nmeros y letras en un indicador de 7 segmentos.

QU ES UN INDICADOR DE 7 SEGMENTOS?
Un Indicador de 7 segmentos es un bloque rectangular de 7 lneas de igual longitud que puede iluminarse selectivamente con LEDs para mostrar digitos y algunas letras. La Figura 6-2 muestra un dibujo de un indicador de 7 segmentos que usted usar en las actividades de este captulo. Tambin tiene un punto que puede usarse como punto decimal. Cada uno de los segmentos (desde A hasta G) y el punto contienen un LED separado, que pueden controlarse individualmente. La mayora de los pines tiene un nmero junto con una etiqueta que corresponde a uno de los LEDs del segmento. El pin 5 tiene la etiqueta DP, que significa punto decimal. Los pines 3 y 8 tienen la etiqueta ctodo comn y estudiaremos su significado cuando veamos su diagrama.

Pgina 172 Qu es un Microcontrolador?

Common Cathode

10 9 8 7 6
G F A B

A F G E D
E D C DP

B C

Figura 6-2 Indicador de 7 segmentos Dibujo y mapa de pines.

1 2 3 4 5
Common Cathode

Mapa de pines La figura 6-2 es un ejemplo de un mapa de pines. Un mapa de pines contiene informacin til que le ayuda conectar una parte a otros circuitos. El mapa de pines usualmente muestra un nmero para cada pin, un nombre para cada pin y una referencia. Mire la Figura 6-2. Cada pin est numerado, y el nombre para cada pin es la letra del segmento cercano al pin. La referencia para esta parte es el punto decimal. Oriente la parte de tal forma que el punto decimal est abajo a la derecha. Entonces usted puede ver con el mapa de pines que el Pin 1 est abajo a la izquierda, y el nmero de los pines se incrementa en sentido inverso de las manecillas del reloj alrededor de la envolvente.

La Figura 6-3 muestra un esquemtico del LED dentro del indicador LED de 7 segmentos. Cada nodo del LED se conecta a un solo pin. Todos los ctodos se conectan juntos por alambres dentro de la parte. Debido a que los ctodos comparten una conexin comn, al indicador LED de 7 segmentos se le llama de ctodo comn. Se pueden conectar los pines 3 o 8 de la parte a Vss, usted conectar todos los ctodos del LED a Vss.

Indicadores Digitales Pgina 173

1 E

4 C

6 B

7 A

9 F

10 G

5 DP

LEDs

Figura 6-3 Esquemtico de un Indicador LED de 7 segmentos

ACTIVIDAD #1: CONSTRUYENDO Y VERIFICANDO EL INDICADOR LED DE 7 SEGMENTOS


En esta actividad, usted manualmente construir circuito para verificar cada segmento del indicador.
Partes para la prueba del Indicador LED de 7 segmentos

Un indicador LED de 7 segmentos 5 Resistores de 1 K (caf-negro-rojo) Un alambre para puente


Circuitos de Prueba para el indicador de 7 segmentos

Con la energa desconectada de su Tablilla Board of Education o HomeWork Board, construya el circuito mostrado en la Figura 6-4 y 6-5. Reconecte la alimentacin y verifique que el segmeto A se ilumina.
Qu significa x debajo de nc en el esquemtico? nc significa no hay conexin o no conectado. Esto indica que el pin particular del indicador LED de 7 segmentos no est conectado a ninguna parte. La x al final del pin tambin significa no conectado. Los esquemticos algunas veces usan x o nc.

Pgina 174 Qu es un Microcontrolador?

Vdd

1 k nc
X

nc
X

nc
X

nc
X

nc
X

nc
X

nc
X

1 E

4 C

6 B

7 A

9 F

10 G

5 DP

Figura 6-4 Esquemtico del circuito de prueba para el segmento A del indicador LED

LEDs

3 Vss nc
X

Desconecte la alimentacin y modifique el circuito para conectar el resistor a la entrada B del LED como lo muestran la Figura 6-6 y 6-7.

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

X3 Vdd

Figura 6-5 Diagrama de alambrado del circuito de prueba para el segmento A del indicador LED.

Vin Vss

Indicadores Digitales Pgina 175

Vdd

1 k nc
X

nc
X

nc
X

nc
X

nc
X

nc
X

nc
X

1 E

4 C

6 B

7 A

9 F

10 G

5 DP

Figura 6-6 Esquemtico del circuito de prueba para el segmento B del indicador LED

LEDs

3 Vss nc
X

Reconecte la alimentacin y verifique que se ilumina el segmento B. Usando el mapa de pines de la Figura 6-2 como gua, repita estos pasos para los segmentos C hasta G.

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

X3 Vdd Vin Vss

Figura 6-7 Diagrama de alambrado del circuito de prueba para el segmento B del indicador LED.

Pgina 176 Qu es un Microcontrolador?

Su Turno El nmero 3 y la letra H

La Figura 6-8 y 6-9 muestran el dgito 3 alambrado en el indicador LED de 7 segmentos.


Vdd Vdd Vdd Vdd Vdd

1 k (all) nc
X

nc
X

nc 9 F 10 G
X

1 E

4 C

6 B

7 A

5 DP

Figura 6-8 Alambrado del dgito 3

LEDs

3 Vss nc
X

Construya y verifique el circuito mostrado en la Figura 6-8 y Figura 6-9 y verifique que mustra el nmero 3. Dibuje un esquemtico que mostrar el nmero 2 en el LED de 7 segmentos. Contruya y verifique el circuito para asegurarse que funciona. Si tiene fallas solucionelas.

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

X3 Vdd

Figura 6-9 Diagrama de alambrado de la Figura 6-8

Vin Vss

Indicadores Digitales Pgina 177

Determine el circuito necesario para la letra H y despus construyalo y verifiquelo.

ACTIVIDAD #2: CONTROLANDO EL INDICADOR LED DE 7 SEGMENTOS


En esta actividad usted conectar el LED de 7 segmentos a el BASIC Stamp y ejecutar un programa simple para verificar y asegurarse que cada LED est conectado correctamente.
Partes para el Indicador LED de 7 segmentos

Un indicador LED de 7 segmentos 8 Resistores de 1 K (caf-negro-rojo) 5 Alambres para puentes


Conectando el Indicador LED de 7 segmentos a el BASIC Stamp

La Figura 6-11 muestra el esquemtico y la Figura 6-12 muestra el diagrama de alambrado para este ejemplo de BASIC Stamp controlando un indicador LED de 7 segmentos.
Esquematico y mapa de pines. Si usted est tratando de construir el circuito del esquemtico de la Figura 6-11 sin ayuda de la Figura 6-12, asegrese de consultar el mapa de pines del indicador LED de 7 segmentos, mostrado para su conveniencia en la Figura 610.
Common Cathode

10 9 8 7 6
G F A B

A F G E D
E D C DP

B C

Figura 6-10 Dibujo del Indicador LED de 7 segmentos y Mapa de pines

1 2 3 4 5
Common Cathode

Pgina 178 Qu es un Microcontrolador?

1 k (All) P15 P14 P13 P12 P11 P10 P9 P8 E LEDs C DP G F A B

Figura 6-11 Esquematico del BASIC Stamp controlando un Indicador LED de 7 segmentos.

common Vss

Sea cuidadoso con los resistores conectados a P13 Y P14. Observe cuidadosamente a los resistores conectados en P13 y P14 de la Figura 6-12. Hay una distancia entre estos dos resistores. El espacio se muestra porque el pin 8 del indicador LED de 7 segmentos est sin conectar. Un resistor conecta el pin E/S P13 con pin 9 del indicador LED de 7 segmentos. Otro resistor conecta a P14 con el pin 7 del indicador de 7 segmentos
DP EDC GFAB

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

Figura 6-12 Diagrama de alambrado para la Figrua 6-11. Use las letras de letras de arriba de los segmentos en este diagrama como referencia.

X3 Vdd Vin Vss

Indicadores Digitales Pgina 179

Dispositivo Paralelo El indicador LED de 7 segmentos se llama dispositivo paralelo porque el BASIC Stamp tiene que usar un grupo de lneas de E/S para mandar datos al dispositivo (informacin high y low). En el caso de este indicador LED de 7 segmentos toma 8 pines de E/S para decirle al dispositivo lo que tiene que mostrar. Bus Paralelo. Los alambres que transmiten las seales HIGH/LOW desde el BASIC Stamp al indicador LED de 7 segmentos se llaman BUS PARALELO. Observe que estos alambres se dibujan como lneas paralelas en la Figura 6-11. El termino paralelo hace referencia a la geometra del esquemtico.

Programando la Prueba del Indicador LED de 7 segmentos

Las instrucciones HIGH y LOW aceptarn una variable Pin como argumento. Para verificar cada segmento, uno a la vez, simplemente coloque las instrucciones HIGH y LOW en un bucle FOR...NEXT, y use el indice para fijar nuevamente los pines E/S en HIGH y LOW. Meta y ejecute el programa SegmentTestWithHighLow.bs2 Verifique que cada segmento en el indicador LED de 7 segmentos se ilumina brevemente girando nuevamente en apagado y encendido. Haga una lista de que segmento controla cada pin de E/S.
Programa Ejemplo: SegmentTestWithHighLow.bs2
' Que es un Microcontrolador- SegmentTestWithHighLow.bs2 ' Individualmente verifique cada segmento en un indicador LED de 7-Segment . '{$STAMP BS2} '{$PBASIC 2.5} pinCounter VAR Nib

PAUSE 1000 DEBUG "Pin de E/S", CR, "-------", CR FOR pinCounter = 8 TO 15 DEBUG DEC2 pinCounter, CR HIGH pinCounter PAUSE 1000 LOW pinCounter NEXT

Pgina 180 Qu es un Microcontrolador?

Su Turno Un Patrn Diferente

Quitando la instruccin LOW pinCounter tendr un efecto interesante. Haga que la instruccin LOW pinCounter sea un comentario, agreguele un apostrofe a su izquierda. Ejecute el programa modificado y observe el efecto.

ACTIVIDAD #3: MOSTRANDO DIGITOS


Incluyendo el punto decimal hay 8 diferentes seales high/low que los pines de E/S del BASIC Stamp manda al indicador LED de 7 segmentos. Esto es, ocho diferentes instrucciones HIGH o LOW para mostrar un nmero. Si usted desea contar de cero a nueve, requerira una gran cantidad de programacin. Afortunadamente hay variables especiales que puede usted usar para fijar los valores high y low para los grupos de pines de E/S. En esta actividad, usar 8 nmeros binarios en lugar de instrucciones HIGH y LOW para controlar las seales high/low que manda el BasicStamp a los pines: Al fijar variables especiales llamadas DIRH y OUTH iguales a los nmeros binarios usted ser capaz De controlar las seales high/low mandadas a los pines E/S conectados al circuito del indicador LED de 7 segmentos usando una sla instruccin PBASIC.
8 bits aquello que tiene 8 dgitos se dice que tiene 8 bits. : A binary number Cada bit es un lugar donde puede almacenar un 1 o un 0. Un Byte es una variable que contiene 8 bits. Hay 256 diferentes combinaciones de ceros y unos que usted puede usar para contar desde 0 a 255 con 8 bits. Esta es la razn por la cual una variable Byte puede almacenar un nmero entre 0 y 255.

Partes y Circuito para Mostrar Digitos

Las mismas de la actividad anterior.


Programando PATRONES On/Off usando nmeros binarios

En esta actividad, usted experimentar con las variables DIRH y OUTH. DIRH es una variable que controla la direccin (entrad o salida) de los pines de E/S desde P8 hasta P15. OUTH controla las seales high o low que cada unos de estos pines E/S manda. Como usted pronto ver, OUTH es especialmente til porque usted puede usarla para mandar al mismo tiempo las seales high/low para 8 diferentes pines con solamente una

Indicadores Digitales Pgina 181

instruccin. Este es un programa ejemplo que muestra como se pueden usar estas dos variables para contar desde 0 hasta 0 con el indicador LED de 7 segmentos sin usar las instrucciones HIGH y LOW.
Programa Ejemplo. DisplayDigits.bs2

Este Programa Ejemplo reciclara los digitos de 0 a 9 en el indicador LED de 7 segmentos. Meta y ejecute el programa DisplayDigits.bs2 Verifique que se muestran los dgitos de 0 hasta 9.
' Que es un Microcontrolador - DisplayDigits.bs2 ' Se muestran los digitos de 0 a 9 en el indicador LED de 7 segmentos. '{$STAMP BS2} '{$PBASIC 2.5} DEBUG "Program Running!" OUTH = %00000000 DIRH = %11111111 ' BAFG.CDE OUTH = %11100111 PAUSE 1000 OUTH = %10000100 PAUSE 1000 OUTH = %11010011 PAUSE 1000 OUTH = %11010110 PAUSE 1000 OUTH = %10110100 PAUSE 1000 OUTH = %01110110 PAUSE 1000 OUTH = %01110111 PAUSE 1000 OUTH = %11000100 PAUSE 1000 OUTH = %11110111 PAUSE 1000 OUTH = %11110110 PAUSE 1000 DIRH = %00000000 END ' OUTH se inicializa en low. ' Fiha P8-P15 todo en low. ' Digito: ' 0 ' 1 ' 2 ' 3 ' 4 ' 5 ' 6 ' 7 ' 8 ' 9

' Los pines E/S a entrada, ' de segmentos apagados.

Pgina 182 Qu es un Microcontrolador?

Funcionamiento de DisplayDigits.bs2

La Figura 6-13 le muestra como puede usar las variables DIRH y OUTH para controlar la direccin y estado (high/low) de los pines de E/S desde P8 hasta P15.

Vin

Vss

X3

Figura 6-13 Usando DIRH y OUTH para fijar todos los pines a Salida-Low
P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2

OUTH = %00000000 DIRH = %11111111


La primera instruccin:
OUTH = %00000000

Hace que todos los pines E/S (de P8 a P15) estn listos para mandar seales low. Si todos ellos mandan seales low, apagarn todos los LEDs del indicador LED de 7 segmentos. Si usted desea que todos los pines E/S manden una seal high usted podra usar OUTH = %11111111
Qu hace %? El simbolo % formato en Binario se usa para decirle al Editor BASIC Stamp que el nmero es un nmero binario. Por ejemplo, el nmero binario %00001100 es lo mismo que el nmero decimal 12. Como usted ver en esta actividad, los nmeros binarios pueden hacer ms fcil muchas tareas de programacion.

Las seales low verdaderamente no se manda por los pines E/S hasta que se usa la variable DIRH que cambia los pines E/S de entrada a salida. La instruccin:
DIRH = %11111111

Vdd

Indicadores Digitales Pgina 183

Fija los pines de E/S desde P8 hast P15 como salidad. Tan pronto como se ejecuta esta instruccin P8 hasta P15 empiezan a mandar seales low. Esto se debe a que la instruccin OUTH = 00000000 se ejecut justamente antes de la instruccin DIRH. Tan pronto como la instruccin DIRH fija todos los pines como salida, empiezan a mandar seales low. Usted tambien puede usar DIRH = %00000000 para cambiar todos los pines E/S en entradas.
Antes que los pines E/S se conviertan en salidas: Hasta que los pines de entrada cambian a salida, sensan las seales y actualizan la variable INH. Esta es la variable que contiene IN8, IN9 hasta IN15. Estas variables se pueden usar de la misma forma que se usaron IN3 y IN4 para leer los botones push en el Captulo 3 Entrada Digital Botones push. En el BASIC Stamp todos los pines de E/S se inicializan como entradas. A esto se le llama default. Usted tiene que decirle a el BASIC Stamp que un pin I/O cambie a salida antes de que empiece a mandar seales high o low. Las dos instrucciones HIGH y LOW cambian automticamente la direccin de los pines E/S del BASIC Stamp como salida. Colocando un 1 en la variable DIRH tambin se hacen uno los pines de E/S en salida. Siempre fije valores en un registro OUT antes de hacerlos salidas con valores en el registro DIR correspondiente. Esto previene que brevemente se manden seales no desadas. Por ejemplo, si a DIR5 = 1 le sigue OUT5 = 1 en el principio de un programa, el brevemente manda una seal low no deseada antes de cambiar a high porque OUT5 almacena cero cuando el programa comienza. (En BASIC Stamp todas las variables/registros se inicializan en 0.) Si OUT5 = 1 y le sigue DIR5 =1, el pin de E/S mandar una seal high tan pronto como se convierta en salida. Como los valores almacenados por default en todas las variables es 0 cuando el programa inicia, la instruccin OUTH = %00000000 en realidad es redundante.

La Figura 6-14 muestra como usar la variable OUTH para mandar selectivamente seales high y low a P8 hasta P15. Un 1 binario se usa para mandar una seal high, y un 0 binario se usa para mandar una seal low. Este ejemplo muestra el nmero tres en el indicador LED de 7 segmentos:
' BAFG.CDE OUTH = %11010110

Pgina 184 Qu es un Microcontrolador?

Vin

Vss

X3

BAFG.CDE OUTH = %11010110


La instruccin OUTH = %11010110 usa ceros binarios para fijar los pines E/S P8, P11 y P13 en low, y usa unos binarios para fijar P9, P10, P12, P14 y P15 en high. La linea debajo de la instruccin es un comentario que muestra las etiquetas del segmento con el valor binario que hace que el segmento se ilumine o se apague.
Dentro de HIGH and LOW commands: HIGH 15 Igualmente , la instruccin : LOW 15 ...es lo mismo que: OUT15 = 0 DIR15 = 1 ...es lo mismo que: OUT15 = 1 DIR15 = 1

Si desea cambiar P15 como entrada, use DIR15 = 0. Entonces, puede usar IN15 para detectar (en lugar de mandar) seales high/low .

Su Turno Mostrado A hasta F

Calcule que patrones binarios (combinaciones de ceros y unos) necesitar para mostrar las letras A, b, C, d, E y F. Modifique el programa DisplayDigits.bs2 para que muestre A, b, C, d, E y F.

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

Figura 6-14 Usando OUTH para controlar las seales High/Low desde P8 hasta P15

Vdd

Indicadores Digitales Pgina 185

Decimal vs Hexadecimal Los digitos basicos en el sistema de nmeros decimales son; 0,1,2,3,4,5,6,7,8,9 En el hexadecimal (base-16) en el nmero de dgitos del sistema de base son: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F La Base-16 se usa mucho en la programacin de computadoras y microcontroladores. Una vez que usted sepa calcular como mostrar los caracteres de A hasta F, usted podr modificar su programa para contar en hexadecimal de 0 hasta F.

Guardando las Listas de los Patrones On/Off

La instruccin LOOKUP facilita la escritura de los cdigos del Indicador LED de 7 segmentos. La instruccin LOOKUP le permite que vea elementos de una lista. Este es un ejemplo de cdigo que usa la instruccin LOOKUP:
LOOKUP index, [7, 85, 19, 167, 28], value

Hay dos variables que usa estra instruccin index y value. Si index es 0, value almacena 7, Si index es 1, value almacena 85. En el siguiente programa ejemplo, index vale 2, entonces la instruccin LOOKUP coloca 19 en value y eso es lo que muestra la Terminal Debug.
Programa Ejemplo: SimpleLookup.bs2

Meta y ejecute el programa SimpleLookup.bs2 Ejecute el programa con la variable index fiajdo en 2. Trate de ajustar la variable index igual a un nmero entre 0 y 4. Ejecute nuevamente el programa despues de cada cambio en la variable index y observe que valor de la lista se coloca en la variable value. Opcional: Modifique el programa colocando la instruccin LOOKUP en un bucle FOR...NEXT que cuente de 0 a 4.
' Que es un Microcontrolador - SimpleLookup.bs2 ' Muestra un valor usando un indice y una Tabla. ' {$STAMP BS2} ' {$PBASIC 2.5} value index VAR VAR Byte Nib

Pgina 186 Qu es un Microcontrolador?

index = 2 PAUSE 1000 DEBUG ? index LOOKUP index, [7, 85, 19, 167, 28], value DEBUG ? value, CR DEBUG "Cambie la variable indice de un ", CR, "numero diferente (entre 0 y 4).", CR, CR, "Ejecute el programa moficado y ", CR, "verifique que ve el nmero", CR, "que la instruccin LOOKUP coloca en el", CR, "variable valor." END

Programa Ejemplo: DisplayDigitsWithLookup.bs2

Este programa ejemplo muestra como la instruccin LOOKUP puede verdaderamente facilitar el almacenamiento de patrones de bits usados en la variable OUTH. Nuevamente, la variable index se usa para escoger que valor binario se coloca en la variable OUTH. Este Programa Ejemplo cuenta desde 0 a 9. La diferencia entre este programa y el programan DisplayDigits.bs2 es que este programa es mucho ms versatil. Es mucho ms rpido y facil de ajustar para diferenes secuencias de nmeros usando tablas lookup. Meta y el ejecute el programa DisplayDigitsWithLookup.bs2 Verifique que hace las mismas acciones que el programa anterior (con mucho menor trabajo) Vea la Terminal Debug mientras se ejecuta el programa. Esta muestra como el valor de index se usa con la instruccin LOOKUP para cargar el valor binario correcto desde la lista en OUTH.

Indicadores Digitales Pgina 187

' Que es un Microcontrolador - DisplayDigitsWithLookup.bs2 ' Use una tabla lookup para almacenar y mostrar digitos con un indicador LED 7-segment . '{$STAMP BS2} '{$PBASIC 2.5} index VAR Nib

OUTH = %00000000 DIRH = %11111111 PAUSE 1000 DEBUG "index "----OUTH ", CR, --------", CR

FOR index = 0 TO 9 LOOKUP index, [ %11100111, %10000100, %11010011, %11010110, %10110100, %01110110, %01110111, %11000100, %11110111, %11110110 ], OUTH DEBUG " ", DEC2 index, " PAUSE 1000 NEXT DIRH = %00000000 END ", BIN8 OUTH, CR

Su Turno Nuevamente mostrando de 0 a F

Modifique el programa DisplayDigitsWithLookup.bs2 para que cuente en hexadecimal de 0 a F. No olvide actualizar el argumento EndValue del bucle FOR...NEXT.

ACTIVIDAD #4: MOSTRANDO LA POSICIN DE UN DIAL


En el captulo 5, Actividad #4 usted us el potenciometro para controlar la posicin de un servo. En esta actividad, usted mostrara la posicin de un potenciometro usando un indicador LED de 7 segmentos.
Partes para el Dial y el Indicador

Un indicador LED de 7 segmentos 8 Resistores de 1 K (caf-negro-rojo) Un Potenciometro de 10 K Un Resistor de 220 (rojo-rojo-caf) Un capacitor de 0.1 F Siete alambres para puentes.

Pgina 188 Qu es un Microcontrolador?

Construyendo los circuitos Dial e Indicador

La Figura 6-15 muestra el esquemtico de un circuito potenciometro que debe ser agregado a proyecto. La Figrua 6-16 muestra el diagrama de alambrado del circuito de la Figura 6-15 combinada con el circuito de la Figura 6-11. Agregue el circuito del potenciometro al circuito del indicador LED de 7 segmentos como se muestra en la Figura 6-16.

Figura 6-15 Esquemtico del circuito del potenciometro agregado al proyecto.

Figura 6-16 Diagrama de alambrado para la Figura 6-15

Programando el Dial e Indicador

Hay una instruccin muy til llamadoa LOOKDOWN, y claro, es la instruccin inversa a LOOKUP.Entanto que la instruccin LOOKUP entregra un nmero basado en un ndice, la instruccin LOOKDOWN entrega un ndice basado en un nmero.
Programa Ejemplo: SimpleLookdown.bs2

Este Programa Ejemplo demuestra el funcionamiento de la instruccin LOOKDOWN

Indicadores Digitales Pgina 189

Meta y ejecute el programa SimpleLookdown.bs2. Ejecute el programa, como es, con la variable value fijada en 167, y use la Terminal Debug para observar el valor del index Trate de fijar la variable value con cada uno de los nmeros de la lista de la instruccin LOOKDOWN: 7,85,19,28 Ejecute otra vez el programa despus de cada cambio en la variable value y observe que valor la lista obtiene y lo coloca en la variable index
Cuestion interesante: Qu sucede si su valor es mayor que 187? Este pequeo giro en la instruccin LOOKDOWN puede causar problemas porque la instruccin LOOKDOWN no hace cambios en el index

' Que es un Microcontrolador - SimpleLookdown.bs2 ' Debug un indice usando un valor la tabla lookup . ' {$STAMP BS2} ' {$PBASIC 2.5} value index value = 167 PAUSE 1000 DEBUG ? value LOOKDOWN value, [7, 85, 19, 167, 28], index DEBUG ? index, CR DEBUG "Cambie el valor de la variable a un ", CR, "numero diferente en esta lista:", CR, "7, 85, 19, 167, or 28.", CR, CR, "Ejecute el programa modificado ", CR, "verifique que ve el nmero que ", CR, "que la instruccin LOOKDOWN coloca en la ", CR, "variable indice." END VAR VAR Byte Nib

A menos que le indique una diferente clase de comparacin la instruccin LOOKDOWN verifica para ver si un valor es igual a una entrada de la lista. Usted tambin puede verificar para ver si un valor es mayor que, menor que o igual a, etc. Por ejemplo, para buscar una entrada en el que el valor de la variable value es menor que o igual que, use el operador <= justamente antes del primer parenteis que empieza la lista. En otras

Pgina 190 Qu es un Microcontrolador?

palabras, el operador regresa el ndice del primer valor en la lista que hace la frase verdadera en la instruccin. Modifique SimpleLookdown.bs2. sustituyendo las frases value y LOOKDOWN en lugar de los que ya existen. Modifique las instruccin DEBUG para que muestre:
DEBUG "Cambie la variable value a un ", CR, "numero diferente en este rango:", CR, "0 a 170.", CR, CR, "Ejecute el programa modificado y ", CR, "verifque que se ver el nmero que ", CR, "la instruccin LOOKDOWN coloca en la ", CR, "variable indice."

Experimente con diferentes valores y vea si la variable index muestra lo que usted esperaba.
Programama Ejemplo: DialDisplay.bs2

Este Programa Ejemplo refleja la posicin de la perilla del potenciometro iluminando segmentos exteriores alrededor del indicador LED de 7 segmentos como se muestra en la Figura 6-17

Figura 6-17 Mostrando la posicin del potenciometro con el indicador LED de 7 segmentos

Meta y ejecute el programa DialDisplay.bs2 Gire la perilla del potenciometro y asegurese que funciona. Recuerde presionar al potenciometro en la tablilla para que asiente correctamente. Cuando ejecuta el Programa Ejemplo quiz no sea tan preciso como lo muestra la Figura 6-17 Ajuste los valores en la Tabla para que el Indicador Digital muestra con mayor precisin la posicin mostrada del potenciometro.
' Que es un Microcontrolador - DialDisplay.bs2 ' Muestre la posicin del POT usando un indicador LED de 7-segment .

Indicadores Digitales Pgina 191

'{$STAMP BS2} '{$PBASIC 2.5} PAUSE 1000 DEBUG "Programa en Ejecucin index time VAR VAR Nib Word

OUTH = %00000000 DIRH = %11111111 DO HIGH 5 PAUSE 100 RCTIME 5, 1, time LOOKDOWN time, <= [40, 150, 275, 400, 550, 800], index LOOKUP index, [ %11100101, %11100001, %01100001, %00100001, %00000001, %00000000 ], OUTH LOOP

Funcionamiento del programa DialDisplay.bs2

Este Programa Ejemplo toma mediciones con RCTIME del potenciometro y las almacena en una variable llamada time
HIGH 5 PAUSE 100 RCTIME 5, 1, time

La variable time se usa en una tabla LOOKDOWN. La tabla LOOKDOWN decide que nmero en la lista time es menor que, y luego carga el nmero (0 a 5 en este caso) en la variable indice
LOOKDOWN time, <= [40, 150, 275, 400, 550, 800], index

En seguida, la variable index se usa en una tabla LOOKUP para escoger el valor binario a cargar en la variable OUTH.
LOOKUP index, [ %11100101, %11100001, %01100001, %00100001, %00000001, %00000000 ], OUTH

Pgina 192 Qu es un Microcontrolador?

Su Turno Agregando un Segmento

El programa DialDisplay.bs2 solo gira cinco de los seis segmento cuando usted gira la perilla. La secuencia de giro de los LEDs del programa DialDisplay.bs2 es E, F, A, B, C, el segmento D no se ilumina. Guarde el programa DialDisplay.bs2 con el nombre DialDisplayYourTurn.bs2 Modifique DialDisplayYourTurn.bs2 para que haga que los seis LEDs exteriores se iluminen conforme gira el potenciometro. La secuencia deber ser: E,F,A,B,C, y D.
Sugerencia: Quite el circuito LED de su tablilla. Estaremos usando nuevamente el circuito indicador LED de 7 segmentos con otros circuitos del Captulo 7, Actividad 4.

RESUMEN
Este captulo introdujo el indicador LED de 7 segmentos, y la lectura de un mapa de pines. Este captulo tambin introdujo algunas tcnicas para dispositivos y circuitos que tienen entradas paralelas. Se introdujeron las variables DIRH y OUTH como un medio para controlar los valores de los pines E/S del BASIC Stamp de P8 hasta P15. Se introdujeron las instrucciones LOOKUP y LOOKDOWN como un medio de referencia de listas de valores usados para mostrar letras y nmeros.
Preguntas

1. En un indicador LED de 7 segmentos cual es el ingrediente activo que hace que un indicador muestre datos cuando un microcontrolador senda seales high y low? 2. Qu significa ctodo comn? Qu piensa que significa nodo comn? 3. Cmo se llama al grupo de alambres que conducen seales de y hacia un dispositivo paralelo? 4. Cules son los nombres de las instrucciones que en este captulo se usaron para manejar listas de valores?
Ejercicios

1. Escriba un comando OUTH para fijar en high P8, P10,P12. y P9, P11 Y P13 en low. Considere que todos los pines de E/S comienzan como entradas, escriba la instruccin DIRH que har que los pines de E/S de P8 a P13 manden seales high/low mientras que P14 y P125 se configuren como entradas.

Indicadores Digitales Pgina 193

2. Escriba los valores requeridos de OUTH para formar las letras: a, C, d, F, H, I, n, P, S.


Proyecto

1. Deletree FISH CHIPS And Dip en forma permanente con su indicador LED de 7 segmentos. Haga que cada letra dure 400 ms.
Soluciones

Q1. El ingrediente activo es un LED. Q2. Ctodo comn significa que todos los ctodos se conectan juntos, esto es, ellos comparten un punto de conexin comn. nodo comn podra significar que todos los nodos se conectan juntos. Q3. Un Bus en Paralelo. Q4. Las instrucciones LOOKUP y LOOKDOWN manejas listas de valores. E1. El primer paso para configurar OUTH es fijar en 1 cada posicin especificada del bit como HIGH. Entonces los bits 8,10 y 12 se fijan en 1. Luego poner 0 para cada LOW. Entonces los bists 9, 11 y 13 se fijan en 0. Para configurar DIRH, los pines especificados 8,10,12,11, y 13 deben ponerse como salidas mandandoles un bit en 1. 15 y 14 se configuran como entradas colocando ceros en los bits 15 y 14. El segundo paso es traducir esto a lenguage PBASIC.
Bit 15 14 13 12 11 10 OUTH 0 0 0 1 0 1 OUTH = %00010101 9 0 8 1 Bit 15 14 13 12 11 10 DIRH 0 0 1 1 1 1 DIRH = %00111111 9 1 8 1

E2. La clave para resolver este problema es dibujar cada letra y observar que segmentos deben iluminarse. Coloque un 1 en cada segmento que debe iluminarse. Translade eso valores binarios OUTH. La lista de segmentos BAFG.CDE para los bits de OUTH est en la Figura 5-14.

Pgina 194 Qu es un Microcontrolador?

Letra a C d F H I n P S

LED Segmentos e, f, a, b, c, g a, f, e, d b, c, d, e, g a, f, e, g f, e, b, c, g f, e e, g, c all but c and d a, f, g, c, d

B A F G.C D E 11110101 01100011 10010111 01110001 10110101 00100001 00010101 11110001 01110110

OUTH Valor = %11110101 %01100011 %10010111 %01110001 %10110101 %00100001 %00010101 %11110001 %01110110

Common Cathode

10 9 8 7 6
G F A B

A F G E D
E D C DP

B C

1 2 3 4 5
Common Cathode

From Figura on page 172.

P1. Use el esquemtico de la Figura 6-11. Para resolver este problema modifique el programa DisplayDigitsWithLookup.bs2, usando el patrn de letras que resolvi en el Ejercicio 2. En la solucin las letras tienen que arreglarse como constantes para hacer el programa ms intuitivo. Es correcto usar los valores binarios, pero est sujeto a mayores errores.
' Que es un Microcontrolador - Ch6Prj01_FishAndChips.bs2 ' Use la tabla lookup para almacenar y mostrar los digitos ' en un indicador 7-segment. Deletree el mensaje: FISH CHIPS And dIP '{$STAMP BS2} '{$PBASIC 2.5} ' Patrones del indicador 7-Segment para crear letras A CON %11110101 C CON %01100011 d CON %10010111 F CON %01110001 H CON %10110101 I CON %00100001 n CON %00010101 P CON %11110001 S CON %01110110 space CON %00000000 index VAR Byte ' 19 caracteres por mensaje ' Todos apagados al iniciar ' Todos los LEDs deben ser salidas ' 1 sec. Antes del 1er. mensaje

OUTH = %00000000 DIRH = %11111111 PAUSE 1000 DO DEBUG "indice OUTH ", CR,

Indicadores Digitales Pgina 195

"-----

--------", CR ' 19 Caracteres por mensaje

FOR index = 0 TO 18

LOOKUP index, [ F, I, S, H, space, C, H, I, P, S, space, A, n, d, space, d, I, P, space ], OUTH DEBUG " PAUSE 400 NEXT LOOP ", DEC2 index, " ", BIN8 OUTH, CR ' 400 ms entre letras

Pgina 196 Qu es un Microcontrolador?

Captulo 7: Midiendo Luz


DISPOSITIVOS QUE CONTIENEN SENSORES DE LUZ
En los capitulos anteriores introdujimos botones push como sensores de contacto/presin y potenciometros como sensores de rotacin/posicin. Estos dos sensores son comunes en los productos electrnicos, solamente piense cuantos aparatos con botones y perillas usa diariamente. Otro sensor que se encuentra comunmente en muchos productos es el sensor de luz. Estos son unos ejemplos de dispositivos que necesitan sensores de luz para funcionar correctamente. Luces de carros que automticamente se enciende cuando obscurece. Luces de calles que automticamente se enciende cuando obscurece Luces de seguridad de puertas externas que se encienden cuando alguien camina (pero solamente en la noche) Pantallas de Laptops que se hacen ms brillantes en reas bien iluminadas y menos brillantes en reas con poca iluminacin. Cmaras que automticamente dependiendo de la luz existente. El sensor interno de TVs, Reproductores DVD y otros sistemas de entretenimiento detecta la luz infraroja de control remoto.

Los tres primeros ejemplos de la lista de iluminacion automtica dependen de sensores ambientales de luz que distinguen el da de la noche. La electrnica dentro de estos dispositivos solamente necesita conocer si hay luz u obscuridad, entonces pueden considerarse sensores con salida binaria como los botones push. Las pantallas de las Laptops y los sistemas automticos de exposicin de las cmaras se ajustan las condiciones luminosas del rea obteniendo informacin de sus sensores de luz de la cantidad de brillo u obscuridad existentes. Estos tienen que tratar sus sensores de luz como salidas analgicas que suministran un nmero que indica la cantidad de brillo u obscuridad, parecido a los ejemplos del potenciometro del Captulo 5 donde los numeros indicaban la posicin de la perilla. Los sensores de luz dentro de TVs y otros sistemas de entretenimiento detectan el infrarojo (IR) que es una luz invisible al ojo humano, pero que pueden detectar muchos dispositivos electrnicos. Por ejemplo, si usted ve el frente de su control remoto que apunta al TV o otros dispositivos de entretenimiento, usted encontrar un LED claro infrarojo. Cuando usted presiona un boton del control, este manda seales codificadas al sistema de entretenimiento y el LED infrarojo parpadea. Como usted no puede ver la luz infraroja parece que el LED no hace nada cuando presiona el botn. Sin embargo, si hace

Midiendo Luz Pgina 197

esto a travs de la lente de una cmara digital, el LED parecera blanco. La luz blanca contiene todos los colores del espectro. Los sensores, rojo, verde y azul dentro del chip de la cmara reportan que detectan luz en respuesta a la luz blanca. Esto sucede porque los sensores rojo/verde/azul todos detectan la luz infraroja del LED IR del control. Entoces la cmara tambien interpreta la luz de un LED infrarojo como blanca.
Ms respecto a LEDs infrarojos y Detectores La Robtica con el Boe-Bot tiene ejemplos con el BASIC Stamp controlando el robot BoeBot e internamente tiene LEDs IR como los del control remoto del TV, y el Receptor IR dentro del TV para detectar objetos enfrente de l. El Boe-Bot usa LEDs IR como luz, y el receptor IR dentro de los TVs para detectar las reflexiones luz de objetos lejanos enfrente de l. El libro IR Remote for theBoe-Bot explica con los controles de TV remotos codifican el mensaje que al TV, tambin tiene ejemplos de cmo programar el microcontrolador del BASIC Stamp para decodificar mensajes del control remoto para que pueda mandar mensajes al Boe-Bot e incluso controlarlo alrededor, todo con un control remoto.

El tipo de luz, que un dispositivo sensa depende como fue diseado. Por ejemplo, los sensores de luz de dispositivos que se ajustan a las condiciones de luz ambiental necesitan sensar luz visible. Los sensores de pixeles rojo, verde y azul internos de las cmaras digitales estn sensando los niveles de los colores especficos de una imagen digital. El sensor IR dentro del TV est buscando luz infraroja que parpadee cerca de 40 kHz.Estos son solamente unos ejemplos de lo que requiere una aplicacin para diferentes clases de sensores de luz. La Figura 7-1 muestra unos ejemplos de sensores de luz disponible para varios requerimientos de sensores de luz. De izquierda a derecha, se muestra un fototransistor, un fotoresistor de sulfuro de cadmio, un sensor lineal de luz, un fotodiodo fortalecido para el color azul, un convertidor de luz a frecuencia, un fototransistor infrarojo y un receptor remotor infrarojo de TV.

Pgina 198 Qu es un Microcontrolador?

Figura 7-1: Ejemplo de Sensores de Luz

Datos de la Celda de Sulfuro de Cadmio o Fotoresistor La celda de sulfuro de cadmio o fotoresistor fue uno de los sensores de luz ambiente ms comunes de alumbrado automtico. Con la llegada de las restricciones de la Union Europea de la ley respecto al uso de ciertas sustancias peligrosas (RoH) los fotoresistores de sulfuro de cadmio ya no se integraron a los aparatos importados hacia o fabricados en Europa. Esto ha incrementado el uso de un nmero de productos que reemplazan el fotoresistor, incluyendo al fototransistor y el sensor lineal de luz. Como resultado de estos cambios, esta edicin ahora incluye un fototransistor para detectar niveles de luz lo que antes hacia el fotoresistor de sulfuro de cadmio.

Los documentos de cada sensor de luz describen el tipo de luz que detecta en trminos de la longitud de onda. La longitud de onda de la distancia entre las formas o ciclos repetidos. Por ejemplo, imagine una onda viajando en el oceano, subiendo y bajando, La longitud de tal onda deber ser la distancia entre cada pico (pico de espuma) del ciclo de la onda. La longitud de onda de la luz se puede medir en forma similar, en lugar de que midamos la distancia entre dos picos de las oscilaciones electromagnticas de luz. Cada color de luz tiene su propia longitud de onda y se considera que es luz visible, esto significa que el ojo humano puede detectarla. La Figura 7-2 muestra longitudes de onda de luz visible y tambin algunos tipos de luz que el ojo humano no puede detectar, incluyendo la ultravioleta y el infrarojo. Estas longitudes de onda se miden en nanometros, que se abrevia nm. Un nanometro es la billonsima parte de un metro.

Midiendo Luz Pgina 199

Figura 7-2 Longitudes de onda y sus Correspondientes Colores

Wavelength (nm) 10380 Color Ultraviolet Violet

450

495

570 590 620 Green Orange Yellow Red

750100,000 Infrared

Blue

Nota: Si usted esta viendo esta imagen en un libro impreso en escala de gris, usted puede bajarlo a todo color del PDF en www.parallax.com/go/WAM.

CONOCIENDO EL FOTOTRANSISTOR
Un transistor es como una vlvula que permite que pase cierta cantidad de corriente a travs de dos de sus terminales. La tercera terminal del transistor controla la cantidad de corriente que pasa a travs de las otras dos terminales. Dependiendo del tipo de transistor, el flujo de corriente puede controlarse por voltaje, corriente o en caso del fototransistor por luz. La Figura 7-3 muestra el esquemtico y el dibujo del fototransistor de su kit Qu es un Microcontrolador?. A mayor cantidad de luz que llega a la terminal de la base del fototransistor conduce mayor corriente la terminal del colector. la cual sale de la terminal del emisor. En forma inversa, si llega menor cantida de luz a la terminal de la base hay menor conduccin de corriente.
B

B E E C

Figura 7-3 Smbolo esquemtico y dibujo del Fototransistor

La sensibilidad pico de este fototransistor est en 850 nm, y de acuerdo con la Figura 7-2 en la escala infraroja. Tambin responde a la luz visible, aunque es menos sensitivo especialmente a longituedes de onda debajo de 450 nm, que estn a la izquierda del azul en la Figura 7-2. La luz de lmparas de halogeno e incandescentes, y especialmente la luz del sol, son fuentes muy fuertes de infrarojo comparado con las lmparas fluorescetes. El

Pgina 200 Qu es un Microcontrolador?

transistor infrarojo responde bien a todas estas fuentes de luz, pero es ms sensible a la luz del sol, un poco menos a lmparas de halogeno e incandescentes y mucho menor a lmparas fluorescentes. El diseo de circuito que usan el transistor puede ajustarse para que trabaje mejor en ciertos tipos de condiciones luminosas., y los circuitos de fototransistor de este captulo se disean para el interior. Hay una aplicacin sensor de luz externa, pero se usar un dispositivo diferente que al principio parecera que no es candidato a ser sensor de luz: el diodo emisor de luz.

ACTIVIDAD #1: CONSTRUYENDO Y VERIFICANDO EL MEDIDOR DE LUZ


El captulo 5 introdujo la medicin de del tiempo de descarga de RC con las instruccin RCTIME para medir el tiempo que le toma a un capacitor perder su carga a travs de un resistor variable dentro del potenciometro. Con mayor resistencia (a el flujo de la corrinete elctrica), el potenciometro disminuye la razn para perder su carga, y resistencias ms pequeas acelern esa razn. La medicin del tiempo de descarga dio una indicacin de la resistencia del potenciometro a cual a su vez hizo posible que el BASIC Stamp conozca la posicin de la perilla del potenciometro. Cuando se coloca en un circuito de descarga RC, un fototransistor, el cual conduce ms o menos corriente cuando incide ms o menos luz en l, se comporta como el potenciometro. Cuando ms luz incide en el fototransistor, conduce ms corriente y el capacitor pierde su carga ms rpidamente. Con menos luz, el fototransistor conduce menos corriente, y el capacitor pierde su carga menos rpido. Entonces la misma medicin que dio RCTIME nos da una indicacin de la posicin de la perilla de un potenciometro del captulo 5 y que ahora se usar para medir niveles de luz con un fototransistor. En esta actividad, usted construir y verificar un circuito de descarga RC que mide el tiempo que le toma la carga del capacitor para descargarse a travs de un fototransistor. La medicin de descarga de RC le dar a usted una idea de los niveles de luz sensados por la superficie colectora de luz de un fototransistor. Igual que como las pruebas con el potenciometro, los valores de tiempo medidos por la instruccin RCTIME se mostraran en la Terminal Debug.
Partes del Detector de Luz

Un Fototransistor Un Resistor de 220 (rojo-rojo-caf)

Midiendo Luz Pgina 201

Dos Capacitores de 0.01 F (identificados con 103) Un Capacitor de 0.1 F (identificado con 104) Un alambra para puente
Construyendo el Circuito de Tiempo RC con un Fototransistor

La Figura 7-4 el diagrama esquemtico y de alambrado del circuito de tiempo RC que usted usar en este captulo. Este circuito es diferente del circuito del potenciometro del Captulo 5 Actividad #3, en dos formas. Primero, el pin E/S usado para medir el tiempo de descarga es diferente (P2). Segundo, el potenciometro se ha reemplazado con el fototransistor.
Sugerencia Deje su circuito del LED 7 segementos y agregue el circuito del fototransistor en su tablilla. Usaremos el LED 7 segmentos con el fotoresistor en la Actividad #4.

Construya el circuito mostrado en la Figura 7-4. Asegrese que las que las terminales colector y emisor (C y E) estn conectadas como lo muestra el diagrama de alambrado.
Figura 7-4 Circuito Esquematico y diagrama de alambrado del Fototransistor y el RC

Empiece con el capacitor

Pgina 202 Qu es un Microcontrolador?

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

Vin

Vss

0.01 F marcado con 103. .

Longer pin (C) terminal

Flat spot (E) terminal

Programando el Circuito de Prueba del Fototransistor

El primer Programa Ejemplo (TestPhototransistor.bs2) es en verdad una ligera versin modificada del programa ReadPotWithRcTimebs.2 del Captulo 5, Actividad #3. El circuito del potenciometro del captulo 5 se conect al pin E/S P7. El circuito en esta actividad se conecta a P2. Debido a esta diferencia, el Programa Ejemplo ha actualizado dos instrucciones para hacerlo que trabaje. La instruccin HIGH 7 del programa ejemplo anterior es ahora HIGH 2 ya que el circuito del fototransistor se conect en P2 y no en P7. Por la misma razn, la instruccin RCTIME 7, 1, time cambia a RCTIME 2, 1, time.
Programa Ejemplo: TestPhototransistor.bs2

La luz que colecta la superficie del fototransistor en la parte superior de un domo de plstico transparente, es la terminal de la base (B) que muestra la Figura 7-3. Debe ser visible a travs del domo una pequea rea negrea. El rea negra es en realidad el fototransistor, una pequea pieza de silicio. El resto del dispositivo es el empaque, incluyendo el casco de plstico, el soporte de la terminales y las terminales. En lugar de girar la perilla del potenciometro como lo hizo en el Captulo 5, este circuito se verifica exponiendo la superficie colectora de luz del fototransistor a diferentes niveles de luz. Cuando se est ejecutando el Programa Ejemplo, la Terminal Debug deber mostrar valores pequeos para condiciones de luz brillantes y valores grandes para condiciones de poca luz.

Midiendo Luz Pgina 203

Evite luz solar directa. El circuito y programa que usted est diseando para detectar variaciones de luz en interiores y no trabaja para luz solar incidiendo directamente. Deje la luz interior pero cierre las cortinas si los rayos del sol atraviezan una ventana cercana.

Meta y ejecute el programa TestPhototransistor.bs2 Anote los valores de la variable time de la Terminal Debug bajo condiciones normales de iluminacin. Haga sombra con su mano sobre el circuito y verifque nuevamente la variable time. Deber mostrar un nmero mayor. Haga un sombrero con su mano y pngala sobre el circuito para hacer ms sombra, la Terminal Debug deber mostrar un valor significativamente mayor para time.
' Que es un Microcontrolador? - TestPhototransistor.bs2 ' Lee el fototransistor del circuito de tiempo RC usando la instruccin RCTIME. ' {$STAMP BS2} ' {$PBASIC 2.5} time PAUSE 1000 DO HIGH 2 PAUSE 100 RCTIME 2, 1, time DEBUG HOME, "time = LOOP VAR Word

", DEC5 time

Su Turno Usando un diferente capacitor para diferentes condiciones de luz

Las mediciones de tiempo con un capacitor de 0.1F sern diez veces mayores que un capacitor de 0.01F, esto significa que el valor de la variable time que muestre la Terminal Debug debern ser 10 veces ms grandes. Al reeplazar el capacitor de 0.01F por uno de 0.1F ser ms til en condiciones de luz ms brillantes, donde usted tpicamente vea mediciones pequeas usando el capacitor de 0.01F. Por ejemplo, digamos que las condiciones de luz son muy brillantes y las mediciones estn en el rango de 1 a 13 con el capacitor de 0.01 F. Al reemplazarlo con uno de 0.1F sus mediciones estarn en el rango de 10 a 130, y su aplicacin ser mas sensible a variaciones de luz dentro de la habitacin.

Pgina 204 Qu es un Microcontrolador?

Modifique el circuito reemplazando el capacitor de 0.01F por uno de 0.1 F (marcado como 104) Vuelva a ejecutar el programa TestPhototransistor.bs2 y verifique que las mediciones de tiempo de RC son aproximadamente diez veces su valor anterior. Los intervalosde tiempo ms grandes que la instruccin RCTIME puede medir es 65535 unidades de 2 us cada una que corresponde a un tiempo de descarga de 65535x2 us = 131 ms = 0.131 s. Si el tiempo de descarga excede 0.131 segundos, la instruccin RCTIME regresa a 0 indicando que se excedi la mxima medicin de tiempo. Puede puede hacer mucha sombra sobre el fototransistor para exceder la medicin mxima de 65535 y hacer que la instruccin RCTIME regrese a 0. La siguiente actividad se realiza con el menor de los dos capacitores. Antes de pasar a la siguiente actividad, regrese el circuito a la versin original que muestra la Figura 7-4 quitando el capacitor de 0.1F y reemplazandolo con el capacitor de 0.01F.

ACTIVIDAD #2: AJUSTANDO LOS EVENTOS DE LUZ


Una de las caractersticas ms tiles de la memoria de programa del BASIC Stamp es que usted puede desconectar la alimentacin de la Tablilla sin perder el programa. Tan pronto como se conecta la alimentacin el programa se ejecutar nuevamente desde el principio. Como el cdigo de su aplicacin tpicamente no llena la memoria del mdulo BASIC Stamp, cualquier porcin que no se use para el programase puede usar para almacenar datos. Esta memoria es especialmente adecuado para almacenar datos que usted no desea que el BASIC Stamp olvide. Mientras los valores almacenados por las variables se borran cuando se desconecta la energa, el BASIC Stamp recordara todos los valores almacenados en su memoria de programa cuando se vuelva a conectar la alimentacin.
Qu es Adquisicin de Datos? Datalogging es lo que un microcontrolador hace cuando registra y almacena mediciones perodicas de sensores durante cierta cantidad de tiempo. Los dispositivos de Adquisicin de Datos o dataloggers, son especialmente tiles en investigacin cientfica. Por ejemplo, en lugar de poner una persona en una localidad remota para que tome mediciones del ambiente, se puede colocar una estacin datalogging de ambiente. Esta registra mediciones perodicas y los cientficos visitan la estacin muy frecuentemente para colectar los datos, o en algunos caos, actualiza sus mediciones a una computadora por medio de telfono celular , radio o satlite.

Midiendo Luz Pgina 205

El chip del BASIC Stamp que almacena la memoria de programa y los datos se muestran en la Figura 7-5. Este chip se llama EEPROM que significa memoria de Solo Lectura Programable y Borrable Electricamente. Esto esta muy largo y pronunciar cada una de sus letras es todava un montn de trabajo. Entonces, cuando las personas hablan de una EEPROM, generalmente dicen E-E-Prom.
2 KB EEPROM stores your PBASIC source code.

Figura 7-5 Chip de EEPROM del mdulo BASIC Stamp Esta EEPROM almacena su cdigo de programa y cualquier otros datos que su programa coloca ah, incluso cuando la alimentacin se desconecta.

La Figura 7-6 la ventana del Mapa de Memoria del Editor del BASIC Stamp. Usted puede ver esta ventana haciendo click en el men RUN del Editor de BASIC Stamp y seleccionar Memory Map. El Mapa de Memoria usa diferentes colores para mostrar los mdulos RAM (variables en random access memory ) y EEPROM (program memory) que se utilizan. El cuadro rojo en la barra en la parte izquierda indica que porcin de la EEPROM es visible en el Mapa de EEPROM. Usted puede dar click y jalar este cuadro hacia arriba y abajo para ver varias porciones de la memoria EEPROM. Al jalar el cuadro rojo de arriba abajo, usted puede ver cuanto espacio de memoria EEPROM usa el programa TestPhototransistor.bs2 de la Actividad #1. Los bytes que contienen los Smbolos del programa estn resaltados en azul, y solamente 35 bytes fuera de la EEPROM de 2048 se usan para el programa. Los 2013 bytes restantes estn libres para almacenar datos.

Pgina 206 Qu es un Microcontrolador?

Figura 7-6 Mapa de Memoria Para ver esta ventana haga click en RUN y seleccione Memory Map

El mapa EEPROM muestra las direcciones en valores hexadecimales, que se discutieron brevemente en el recuadro Decimal vs Hexadecimal en la pgina 185, los valores a lo largo del lado izquierdo muestran las direcciones iniciales de cada fila de bytes. Los nmeros en la parte superior muestran el nmero de byte dentro de esa fila, desde 0 hasta F en Hexadecimal, que equivale 0 a 15 en decimal. Por ejemplo, en la Figura 7-6 el valor decimal C1 se almacen en la direccin 7E0. CC se almacen en la direccin 7E1, 6D se almacen en la direccin 7E2, y as sucesivamente hasta E8, que se almacen en la direccin 7EF. Si usted busca hacia arriba y abajo con la barra, usted ver que la direccin de memoria mayor est en la parte ms baja del Mapa EEPROM, y la direccin menor est hasta arriba, con la fila superior empezando en 000. En PBASIC los progamas siempre se almacenan en las direcciones mayores de la EEPROM, que estn abajo del Mapa EEPROM. Entonces, si su programa va a almacenar datos en EEPROM, deber empezar con la menor direccin , empezando con la direccin 0. Esto ayuda a asegurar que sus datos almacenados no se sobreescribiran en su programa PBASIC, lo que generara un programa defectuoso. En el caso del Mapa EEPROM mostrado en la Figura 7-6 el programa PBASIC reside en las direcciones 7FF hasta 7DD, empezando con la direccin mayor y construyendose hasta la menor direccin Entonces, su aplicacin puede almacenar datos desde la direccin 000 hasta 7DC, construyendose desde el menor hasta el mayor, en decimal la direccin es desde 0 hasta 2012. Si usted planea almacenar datos en EEPROM, es importante que sea capaz de convertir de hexadecimal a decimal para calcular la direccin de escritura ms grande. Abajo estn las matemticas para convertir el nmero 7DC hexadecimal a decimal. Hexadecimal es un sistema numrico con base 16, eso significa que usa 16 diferentes dgits para

Midiendo Luz Pgina 207

representar sus valores. Los dgitos 0 a 9 representan los primeros 10 valores, y las letras A a F representan los valores 10 a 15. Cuando se convierte de hexadecimal a decimal cada digito de la derecha la potencia mayor de dieciseis. El dgito ms a la derecha es el nmero de unos, el cual es el nmero 16. El siguiente digito de la derecha es el nmero de 16, el cual es el nmero 16. El tercer dgito es el nmero de 256s, el cual es el nmero 16. Hexadecimal 7DC = = = = = (7 162) + (D 161) + (C 160) (7 162) + (13 161) + (12 160) (7 256) + (13 16) + (12 1) 1792 + 208 + 12 2012 (valor decimal)

Esta aproximacin de conversin trabaja de igual manera con otras bases, incluyendo la base 10 de valores decimales. Por ejemplo: 2102 = (2 103) + (1 102) + (0 101) + (2 100) = (2 1000) + (1 100) + (0 10) + (2 1)
2048 Bytes = 2 KB Aunque la letra K y la letra k se llaman kilo son ligeramente diferentes. En electrnica y computacin la K se usa para indicar un kilobyte binario que es 1x2 = 1024. Cuando nos referimos con exactitud a 1000 bytes, usamos la letra k que se usa como kilo y es 1x10 = 1000 en el sistema mtrico Tambien, la letra B significa bytes, mientras que la letra b significa bits. Esto puede hacer una gran diferencia por 2Kb significa 2048 bits, que is 2048 numeros diferentes donde cada nmero est limitado a un valor de 0 o 1. En contraste 2KB significa 2048 bytes cada uno de los bytes puede almacenar un valor en el rango de 0 a 255.

Usando la EEPROM para almacenar datos puede ser muy til en aplicaciones remotas. Un ejemplo de una aplicacin remota podra ser un monitor de temperatura colocado en un camin que contiene comida refrigerada. El podra fijar la temperatura durante todo el viaje para ver si siempre est lo suficientemente fria para asegurar que ninguno de los embarques cambie de congelado a lquido. Un segundo ejemplo es una estacin de monitoreo del clima. Una de las piezas de la estacin de datos del clima podra almacenar para que despues obtener sus niveles de luz. Esto puede dar una indicacin de nubes que cubren los tiempos de un da. Y algunos estudios la usan para monitorear los efectos de contaminacin y condensacin de trails en aviones, con altos niveles que llegan a la superficie de la tierra.

Pgina 208 Qu es un Microcontrolador?

Teniendo en mente el el ajuste de niveles de luz, esta actividad introduce una tcnica para almacenar los niveles de luz medidos en la EEPROM y despus analizarlos. En esta actividad, usted ejecutar un Programa Ejemplo PBASIC que almacena una serie de mediciones de luz en el mdulo EEPROM del BASIC Stamp. Despus que se termine el programa, usted ejecutar un segundo programa que retira los valores de la EEPROM y los muestra en la Terminal Debug.
Programando Almacenamiento de Datos en Terminos Grandes

La instruccin WRITE se usa para almacenar valores en la EEPROM, y la instruccin READ se usa para extraer esos valores. La sintaxis para la instruccin WRITE es:
WRITE Location, {WORD} Value

Por ejemplo, si usted quiere escribir el valor 195 en la direccin 7 en la EEPROM, usted podra usar la instruccin
WRITE 7, 195

Los valores WORD pueden ser cualesquiera desde 0 hasta 65565, mientras que los valores byte solamente pueden contener nmeros de 0 a 255. Un valor word toma el espacio de dos bytes. Si usted quiere escribir un valor en EEPROM, usted tiene que usar el modificador opcional Word. Sea cuidadoso. Como word ocupa dos bytes usted tiene que brincar una de las direcciones tamao byte en la EEPROM antes de que usted pueda escribir otro word. Digamos que usted necesita guardar dos valores word en EEPROM: 659 y 50012. Si usted desea almacenar el primer valor en la direccin 8, usted tendr que escribir el segundo valor en la direccin 10WRITE 8, Word 659 WRITE 10, Word 50012

Midiendo Luz Pgina 209

Es posible escribir sobre su programa? S, y si usted lo hace, el programa se pararece a que empieza a comportarse extraamente o que deja de ejecutarse. Como los smbolos del programa PBASIC residen en las direcciones mayores de EEPROM, es mejor usar los valores ms pequeos de localidades Location para almacenar nmeros con la instruccin WRITE. Como puedo saber si la Location que estoy usando es muy grande? Usted puede usar el mapa de memoria para calcular el valor ms grande no usado por su programa PBASIC. La explicacin despus de la Figura 7-6 describe la manera de calcular cuantas direcciones de memoria estn disponibles. De manera sencilla usted puede convertir de hexadecimal a decimal usando el formato decimal DEC en la instruccin DEBUG y el formato hexadecimal $ hexadecimal formato de esta forma: DEBUG DEC $7BC Su programa mostrar el valor decimal del hexadecimal 7DC porque el signo $ de formato hexadecimal le indica a la instruccin DEBUG que el 7DC es un nmero hexadecimal. Entonces, el formato DEC (decimal) hace que la instruccin DEBUG muestre el valor en un formato decimal.

Programa Ejemplo: StoreLightMeasurementsinEeprom.bs2

Este Programa Ejemplo muestra con usar la instruccin WRITE tomando mediciones de luz cada 5 segundos durante 2 minutos y almacenandolos en la EEPROM. Como el Programa Ejemplo de la actividad anterior muestra las mediciones en la Terminal Debug, pero tambien las almacena en la EEPROM para su posterior retiro con un programa diferente que usa la instruccin READ. Meta y ejecute StoreLightMeasurementsinEeprom.bs2 Registre las mediciones mostradas por la Terminal Debug para que usted pueda verificar las mediciones de lectura cuando se obtengan de la EEPROM. Gradualmente incremente la sombra sobre el fototransistor durante 2 minutes de perodo de prueba para tener datos significativos. Especialmente si usted tiene una Tablilla USB, su reconexin en la computadora podra Resetear el BASIC Stamp y resetear el programa, en cuyo caso, podra empezar a tomar un nuevo conjunto de mediciones. Despus que el programa StoreLightMeasurementsinEeprom.bs2 haya concluido, desconecte la alimentacin y djela desconectada hasta que usted este listo para ejecutar el siguiente programa ejemplo: ReadLightMeasurementsFromEeprom.bs2.

Pgina 210 Qu es un Microcontrolador?

Usted puede cambiar las pausas en el bucle FOR...NEXT. Este Programa Ejemplo tiene pausas de 5 segundos, las cuales resaltan las mediciones perodicas que toman las tarjetas de adquisicin de datos. Esto podra parecer muy largo, entonces usted puede reducir PAUSE 5000 a PAUSE 500 para hacer que el programa ejecute diez veces ms rpidamente la prueba.

' Que es un Microcontrolador - StoreLightMeasurementsInEeprom.bs2 ' Escriba mediciones de luz a la EEPROM. ' {$STAMP BS2} ' {$PBASIC 2.5} time eepromAddress VAR VAR Word Byte

PAUSE 1000 DEBUG "Iniciando mediciones...", CR, CR "Medicion Valor", CR, "---------------", CR FOR eepromAddress = 0 TO 58 STEP 2 HIGH 2 PAUSE 5000 RCTIME 2, 1, time DEBUG DEC2 eepromAddress, " ", DEC time, CR WRITE eepromAddress, Word time NEXT DEBUG "Todo hecho. Ahora, ejecutelo:", CR, "ReadLightMeasurementsFromEeprom.bs2" END

Como funciona StoreLightMeasurementsinEeprom.bs2

El bucle FOR...NEXT que mide los valores de tiempo RC y los almacena en la EEPROM tiene que contar en pasos de 2 porque los valores word se escriben en la EEPROM.
FOR eepromAddress = 0 to 58 STEP 2

La instruccin RCTIME carga las mediciones de tiempo de descarga en la variable time que es de tamao word
RCTIME 2, 1, time

El valor que almacena la variable time se copia en la direccin de la EEPROM dada por el valor actual de la variable eepromAddress todas las veces a travs del bucle.

Midiendo Luz Pgina 211

Recuerde, que la direccin para la instruccin WRITE siempre est en trminos de bytes. Entonces, la variable eepromAddress se incrementa por dos cada vez en el bucle porque la variable Word toma dos bytes.
WRITE eepromAddress, Word time NEXT

Programando la Extraccin de Datos

Para extraer los valores que usted grab en la EEPROM, usted puede usar la instruccin READ. La sintaxis de la instruccin es:
READ Location, {WORD} Variable

Mientras que la instruccin WRITE puede copiar una de una constante o una variable a la EEPROM, la instruccin READ tiene que copiar el valor almacenado en una direccin de la EEPROM a una variable, entonces como su nombre lo sugiere , el argumento Variable tiene que ser una variable.
Recuerde que las variables se almacenan el mdula RAM de el BASIC Stamp. De manera diferente a la EEPROM, los valores RAM pueden borrarse cuando se desconecta la alimentacin y tambin cuando se presiona el botn RESET de su Tablilla. El BASIC Stamp 2 tiene 26 bytes de RAM, mostrados en el lado derecho del Mapa de Memoria en la Figura 7-6. Si usted declara una variable word usted est usando dos bytes. La declaracin de una variable byte usa un byte, un nible usa la mitad de un byte y un bit usa 1/8 de byte.

Digamos que eepromValueA u eepromValueB son variables Word, y littleEE es una variable Byte. Estas variables debern estar definidas en el inicio del programa con la declaracines de variables VAR. Estas son algunas instrucciones para extraer los valores que se almacenaron en ciertas direcciones de la EEPROM con anterioridad usando la instruccin WRITE, quiz incluso en un programa diferente.
READ 7, littleEE READ 8, Word eepromValueA READ 10, Word eepromValueB

La primera instruccin retira un valor byte de la direccin 7 de la EEPROM y lo copia en la variable llamada littleEE. La siguiente instruccin copia la word que ocupan las direcciones 8 y 9 de la EEPROM y la almacena en la variable word eepromValueA. La

Pgina 212 Qu es un Microcontrolador?

ltima de las tres instrucciones copia una word que ocupan las direccines 10 y 11de la EEPROM y la almacena en la variable eepromValueB.
Programa Ejemplo: ReadLighMeasurementsFromEeprom.bs2

Este Programa Ejemplo demuestra como usar la instruccin READ para extraer las mediciones de luz que fueron almacenadas en la EEPROM con el programa StoreLightMeasurementsInEeprom.bs2. Conecta la energa a su Tablilla. Meta el programa ReadLighMeasurementsFromEeprom.bs2 en el Editor de BASIC Stamp. Si usted tena desconectada la alimentacin de su tablilla, cuando la reconect, inmediatamente haga click en el botn Run del Editor del BASIC Stamp para bajar el programa en el BASIC Stamp.
No espere ms de 6 segundos entre reconectar la alimentacin y bajar el programa ReadLighMeasurementsFromEeprom.bs2 en el BASIC Stamp, porque el programaque todava est en la mememori de programa (StoreLightMeasurementsInEeprom.bs2.) empezar a grabar sobre la mediciones anteriores. Entonces, si usted reduce Duration de la instruccin PAUSE de 5000 a 500 usted solamente tendra 1.5 segundos.

Compare la Tabla de la Terminal Debug que muestra este programa con la Tabla que mostro el programa StoreLightMeasurementsInEeprom.bs2, y verifique que los valores son los mismos.
' Que es un Microcontrolador - ReadLightMeasurementsFromEeprom.bs2 ' Lectura de mediciones de luz de la EEPROM. ' {$STAMP BS2} ' {$PBASIC 2.5} time eepromAddress PAUSE 1000 DEBUG "Extrayendo mediciones", CR, CR, "Mediciones Valores", CR, "--------------", CR FOR eepromAddress = 0 TO 58 STEP 2 READ eepromAddress, Word time DEBUG DEC2 eepromAddress, " VAR VAR Word Byte

", DEC time, CR

Midiendo Luz Pgina 213

NEXT END

Funcionamiento del programa ReadLighMeasurementsFromEeprom.bs2

La instruccin WRITE y la instruccin READ dependen de direcciones byte. Y como deseamos leer valores word de la EEPROM, la variable eepromAddress tiene que tener 2 agregado a ella cada vez que se ejecuta el bucle FOR...NEXT.
FOR eepromAddress = 0 to 58 STEP 2

La instruccin READ obtiene el valor tamao word de eepromAddress, y obtiene el valor copiado en la variable time
READ eepromAddress, Word time

Los valores de la variables time y eepromAddress se muestran en columnas adyacentes en una tabla en la Terminal Debug.
DEBUG DEC2 eepromAddress, " NEXT ", DEC time, CR

Su Turno Ms Mediciones

Modifique el programa StoreLightMeasurementsInEeprom.bs2. para que tome y registre dos veces las muchas mediciones en la misma cantidad de tiempo. Modifique el programa ReadLighMeasurementsFromEeprom.bs2 para que muestre todas las mediciones del programa modificado StoreLightMeasurementsInEeprom.bs2.

ACTIVIDAD #3: GRAFICANDO MEDICIONES DE LUZ (OPCIONAL)


Las listas de mediciones como las de la Actividad #2 pueden ser tediosas para analizarse. Imagine que lee cientos de estos nmeros recolectados en la puesta del sol. O quiz buscando un evento particuar, como cuando su cubri brevemente el sensor de luz. Esta informacin podra ser til si el sensor de luz se coloca en un rea donde camina sobre l una persona o un animal, o un objeto pasando sobre una banda transportadora necesita registrarse y analizarse. Sin importar la apliacin, si usted tiene que trabajar con una larga lista de nmeros, para encontrar aquellos eventos y patrones que pueden ser tareas difciles y que consumen mucho tiempo.

Pgina 214 Qu es un Microcontrolador?

En cambio si usted hace una grfica de la lista de mediciones, encontrar eventos y patrones se hace mucho ms fcil. La persona, animal u objeto que pase por el sensor de luz mostrar un punto alto o pico en la mediciones. La Figura 7-7 muestra un ejemplo de una grfica que podra indicar la razn a la cual los objetos de una banda transportadora estn pasando sobre el sensor. Los picos en la grfica ocurren cuando los tiempo de las mediciones son grandes. En el caso de una banda transportadora, esto indicara que un objeto pasa sobre el sensor reflejando una sombra. Esta grfica facilita ver de un vistaso que un objeto pasa sobre el sensor aproximadamente cada 7 segundo, y qu el objeto que esperabamos en 28 segundo no estaba ah.
Grfica 7-7 Grfica de Mediciones de Luz con el Fototransistor
Decay Time Vs. Time for Phototransistor RC Circuit 9000 8000 7000 Decay Time (2 us) 6000 5000 4000 3000 2000 1000 0 0 "Decay Time" 10 20 30 Tim e (s) 40 50 60

La Grfica en la Figura 7-7 se gener copiando y pegando valores en la Terminal Debug a un archivo de texto y luego se importo a una hoja de trabajo Excel de Microsoft. Algunas utilerias de graficacin pueden tomar el lugar de la Terminal Debug y graficar los valores directamente en lugar de mostrarlos como un lista de nmeros. La Figura 7-8 muestra un ejemplo de una de estas utilerias, llamada StampPlot LITE.

Midiendo Luz Pgina 215

Figura 7-8 StampPlotLITE

En esta actividad opcional, usted puede ir a www.parallax.com/go/WAM y seguir la liga de Data Plotting y realizar un nmero de actividades que demuestran como graficar valores usando varias hojas de calculo y paquetes de software de utilerias de graficacin.

ACTIVIDAD #4: MEDIDOR SENCILLO DE LUZ


La informacin de los sensores de luz puede comunicarse de muchas formas. El medidor de luz con el que trabajar en esta actividad cambia la rapidez en que el indicador parpadea dependiendo de la intensidad de luz que detecta.
Partes del Medidor de Luz

Un Fototransistor Un Resistor de 220 (rojo-rojo-caf)

Pgina 216 Qu es un Microcontrolador?

Dos Capacitores de 0.01 F (marcados con 103) Un Capacitor de 0.1 F (marcado con 104) Un Indicador LED de 7 segmentos Ocho Resistores de 1 K (caf-negro-rojo) Seis alambres para puentes
Construyendo el Circuito Medidor de Luz

La Figura 7-9 muestra el esquemtico del indicador LED de 7 segmentos y el Fototransistor que se usar para construir el Medidor de Luz, y la Figura 7-10 muestra el diagrama de alambrado de los circuitos. El circuito fototransistor es el mismo que ha estado usando en las dos ltimas actividades y el circuito del indicador LED de 7 segmentos es el mismo de la Figura 6-11. Construya el circuito mostrado en la Figura 7-9 y la Figura 7-10. Verifique el indicador LED de 7 segmentos para asegurarse que est conectado correctamente usando el programa SegmentTestWithHighLow.bs2 del captulo 6 Actividad #2, que empieza en la pgina 179.

Midiendo Luz Pgina 217

Figura 7-9 Circuito esquemtico del Medidor de Luz

Figura 7-10 Diagrama de Alambrado para la Figura 7-9

Pgina 218 Qu es un Microcontrolador?

Usando Subrutinas

La mayora de los programas que usted ha escrito hasta ahora trabajan dentro de un bucle DO...LOOP. Como toda la actividad principal del programa sucede dentro de DO...LOOP, a esta usualmente se le llama rutina principal. Conforme usted agrega ms circuitos y ms funciones tiles a su programa, puede tener un poco de dificultad para tener el control de todo el cdigo en la rutina principal. Su programa trabajar con mayor facilidd si usted lo organiza en pequeos segmentos de cdigo que hagan ciertas tareas. PBASIC tiene algunas instrucciones que usted puede usar para hacer que el programa brinque de la rutina principal, haga una tarea, y luego regrese al mismo punto de la rutina principal. Esto le permitira que usted mantenga cada segmento de cdigo haciendo un trabajo particular sin estar en la rutina principal. Cada vez que usted necesite el programa para hacer uno de esos trabajos, usted puede escribir una instruccin dentro de la rutina principal que le diga al programa que brinque a tal trabajo, lo haga, y regrese cuando el trabajo est hecho. Los trabajos se llaman subrutinas y a este proceso se le llama llamado de subrutinas La Figura 7-11 muestra un ejemplo de una subrutina y como se usa. La instruccin GOSUB Subroutine_Name hace que el programa brinque a la etiqueta Subroutine_Name. Cuando el programa va a esa etiqueta, corriendo y ejecutando las instrucciones hasta que llega a la instruccin (retorna) RETURN. Y ahora el programa regresa a la instruccin que viene despues de la instruccion GOSUB. En el caso del ejemplo de la Figura 7-11, la siguiente instruccin es: DEBUG Next command
DO GOSUB Subroutine_Name DEBUG "Next command" LOOP

Figura 7-11
Subroutine_Name: DEBUG "This is a subroutine..." PAUSE 3000 RETURN

Funcionamiento Subrutina

de

la

Midiendo Luz Pgina 219

Qu es un Etiqueta? Una etiqueta es un nombre que puede usarse en un lugar de su programa. GOSUB es una de las instrucciones que usted puede usar para brincar a un etiqueta. Otras instrucciones son GOTO, ON GOTO y ON GOSUB. Una etiqueta debe termina con el signo dos puntos (:), y por la forma de estilo, separe palabras con el carcter de subrayado para que sean fciles de reconocer. Cuando escoga un nombre para una etiqueta, asegurese de no usar una palabra reservada o un nombre que est usando una variable o una constante. El resto de reglas para el nombre de una etiqueta son las mismas que las usadas para nombrar variables, que estn enumeradas en el recuadro de informacin de la pgina 43.

Programa Ejemplo: SimpleSubroutines.bs2

Este Programa Ejemplo muestran como funcionan las subrutinas mandando mensajes a la Terminal Debug. Examine el programa SimpleSubroutines.bs2 y trate de adivinar el orden en el cual se ejecutarn las instrucciones DEBUG. Meta y ejecute el programa. Compare el comportamiento del programa real con sus predicciones.
' Que es un Microcontrolador - SimpleSubroutines.bs2 ' Demostracin del funcionamiento de la subrutina. ' {$STAMP BS2} ' {$PBASIC 2.5} PAUSE 1000 DO DEBUG PAUSE GOSUB DEBUG PAUSE GOSUB DEBUG PAUSE LOOP First_Subroutine: DEBUG " Primera Ejecucin " DEBUG "subroutine.", CR PAUSE 3000 RETURN CLS, "Inicia la rutina principal.", CR 2000 First_Subroutine "Regresa a la principal.", CR 2000 Second_Subroutine "Repite la principal...", CR 2000

Pgina 220 Qu es un Microcontrolador?

Segunda_Subrutina: DEBUG " Executing second " DEBUG "subroutine.", CR PAUSE 3000 RETURN

Funcionamiento de SimpleSubroutines.bs2

La figura 7-12 muestra como funciona la llamada de First_Subroutine en la rutina principal (en bucle DO...LOOP). La instruccin GOSUB First:Subroutine manda el programa a la etiqueta First_Subroutine. Luego, se ejecutan las tres instrucciones dentro de esa subrutina. Cuando el programa llega a la instruccin RETURN, brinca de regreso al comando que viene inmediatamente despus de GOSUB First_Subroutine, y es DEBUG Back in Main., CR
Qu es una llamada a subrutina? Cuando usted usa la instruccin GOSUB para hacer que el programa brinque a una subrutina, a esto se llama llamada a subrutina.

PAUSE 2000 GOSUB First_Subroutine DEBUG "Back in main.", CR


Figura 7-12 Llamada a la Primera Subrutina.

First_Subroutine: DEBUG " Executing first "

DEBUG "subroutine.", CR PAUSE 3000 RETURN

La Figura 7-13 muestra un segundo ejemplo del mismo proceso con llamada a la segunda subrutina (GOSUB Second_Subrutine).

Midiendo Luz Pgina 221

PAUSE 2000 GOSUB Second_Subroutine DEBUG "Repeat main...", CR


Figura 7-13 Llamada a segunda subrutina

Second_Subroutine: DEBUG " Executing second "

DEBUG "subroutine", CR PAUSE 3000 RETURN

Su Turno Agregando y Anidando Subrutinas

Usted puede agregar subrutinas adems de las dos que estn en el programa y llamarlas de la rutina principal. Agregue la subrutina mostrada en la Figura 7-11 al programa SimpleSubroutines.bs2. Haga los ajustes necesarios a la instruccin DEBUG para que muestre correctamente las tres subrutinas. Usted tambin puede llamar una subrutina dentro de otra subrutina. A esto se le llama subrutinas anidadas. Intente mover la instruccin GOSUB para que llame a la subrutina Subroutine_Name hacia otra de las subrutinas, y vea como funciona.
Cuando anidar subroutines. La regla es no ms de cuatro profundidades. Vea el Manual BASIC Stamp o la Ayuda del BASIC Stamp Editor para ms informacin Vea GOSUB y RETURN

Medidor de Luz Usando Subrutinas

El siguiente programa LightMeter.bs2 usa subrutinas para controlar el indicador LED de 7 segmentos dependiendo del nivel de luz detectado por el fototransistor. El ciclo apagado y encendido de los segmentos del indicador LED en un patrn circular se hace ms rpido cuando el fototransistor recibe ms luz. Cuando la luz disminuye el patrn se hace ms lento.

Pgina 222 Qu es un Microcontrolador?

El Programa Ejemplo LightMeter.bs2 usa una subrutina llamada Update_Display para controlar el orden de avance de los segmentos del medidor de luz. El programa que ejecuta el medidor de luz trata con tres diferentes operaciones. 1. Leer el Fototransistor. 2. Calcular el tiempo de espera antes de actualizar el indicador LED de 7 segmentos. 3. Actualizar el indicador LED de 7 segmentos. Cada operacin est contenida dentro de su propia subrutina, y la rutina principal DO...LOOP llamar en secuencia a cada una de elllas una vez y otra y otra vez.
Programa Ejemplo: LightMeter.bs2
El Control de las condiciones de luz hace la gran diferencia. Para mejores resultados, realice esta prueba en una habitacin iluminada con luz fluorescente con poca o sin luz directa del sol. (cierre las cortinas). Para informacin de la calibracin de este medidor a otras condiciones de luz, vea la seccin Su Turno.

-Meta y corra el programa LightMeter.bs2 -Verifique de la velocidad de repeticin del patron circular mostrado por el indicador LED de 7 segmentos esta controlado por las condiciones de luz que el fototransistor est sensando. Haga esto haciendo sombre con su mano o un pedazo de papel y verifique que la rapidez de cambio del patron circula del indicador se mueve lentamente.
' Que es un Microcontrolador - LightMeter.bs2 ' Indica los niveles de luz usando un indicador LED de 7 segmentos. ' {$STAMP BS2} ' {$PBASIC 2.5} PAUSE 1000 DEBUG "Programa en Ejecucin !" index time VAR VAR Nib Word ' Declaracin de Variables .

OUTH = %00000000 DIRH = %11111111

' Inicializa el indicador de 7-segment.

Midiendo Luz Pgina 223

DO GOSUB Get_Rc_Time GOSUB Delay GOSUB Update_Display LOOP

' Rutine Principal.

' Subrutinas Get_Rc_Time: HIGH 2 PAUSE 3 RCTIME 2, 1, time RETURN Delay: PAUSE time / 3 RETURN Update_Display: IF index = 6 THEN index = 0 ' BAFG.CDE LOOKUP index, [ %01000000, %10000000, %00000100, %00000010, %00000001, %00100000 ], OUTH index = index + 1 RETURN ' Muestra actualizacin de subrutinas. ' Subrutina de Retardo. ' Subrutina de tiempo RC

Funcionamiento del programa LightMeter.bs2

Las primeras dos lneas del programa declaran variables. No importa donde se usen estan variables en la subrutinas o en la rutina principal, siempre es mejor declarar variables (y constantes) al principio de su programa. Como esto es prctica comn, esta seccin de cdigo tiene un nombre Variable declarations (Declaracin de Variables). Este nombre se muestra como comentario a la derecha la la primera declaracin de variable.
index time VAR Nib VAR Word Declaracin de Variables.

Algunos programas tambien tiene procedimientos que necesitan hacerse de una vez al inicio del programa. Por ejemplo: Ajustar todos los pines de los 7 segmentos en low y

Pgina 224 Qu es un Microcontrolador?

direccionarlos como salidas. Este seccin de programa PBASIC tambin tiene un nombre Inicializacin
OUTH = %00000000 DIRH = %11111111 ' Inicializa el indicador 7-segmentos.

El siguiente segmento de cdigo se llama rutina principal. La rutina principal primero llama a la subrutina Get-Rc-Time. Luego, esta llama a la subrutina Delay, y despus de esto esta llama al subrutina Update_Display. Recuerde que el programa va a travs de las tres subrutinas tan rpido como puede, una vez y otra y otra vez.
DO GOSUB Get_Rc_Time GOSUB Delay GOSUB Update_Display LOOP ' Rutina Principal.

Generalmente todas las subrutinas se colocan despus de la rutina principal. El nombre de la primera subrutina es Get_Rc_Time; y ella toma la medicin del tiempo RC con el circuito fototransistor. Esta subrutina tiene una instruccin PAUSE que permite que el capacitor se cargue. La Duracion de esta instruccin es pequea y solamente necesita una pausa con el tiempo suficiente para asegurarse que el capacitor se carge. Observe que la instruccin RCTIME fija el valor de la variable time. Esta variable la usar la segunda subrutina.
Get_Rc_Time: HIGH 2 PAUSE 3 RCTIME 2, 1, time RETURN ' Subrutina de tiempo RC

El nombre de la segunda subrutina es Delay, y todo lo que contiene es PAUSE time / 3. La instruccin PAUSE permite la medicin del tiempo de descarga (cuanto se ilumina el LED) para controlar el retardo entre el giro en cada segmento iluminado del indicador de 7 segmentos. El valor a la derecha del operador divisin / puede hacerse mayor para rotaciones ms rpidas en condiciones de poca iluminacin o puede hacerse pequeo para hacerlo menos rpido en condiciones de mucha iluminacin. Usted tambin podra usar * para multiplicar la variable time por un valor en lugar de dividirlo para hacer que el indicador vaya lento y para controlar con mayor precisin la velocidad, no olvide el operador */. Mayor informacin de este operador est en la seccin Su Turno.
Delay: PAUSE time / 3 RETURN

Midiendo Luz Pgina 225

La tercera subrutina se llama Update_Display. La instruccin LOOKUP en esta subrutina contiene una tabla con seis patrones de bits que se usan para crear el patron circular alrededor del exterior del indicador LED de 7 segementos. Agregando un 1 a la variable index cada vez que se llama la subrutina, esta genera el siguiente patrn de bits en la secuencia para obtener la colocacin en OUTH. Hay solamente seis entrada en la tabla LOOKUP para valores del index que van de 0 a 5. Qu sucede cuando el valor de index llega a seis? La instruccin LOOKUP no conoce automticamente como regresar a la primera entrada, pero usted puede usar una frase IF...THEN para resolver este problema. La instruccin IF indez = 6 THEN index = 0 resetea el valor de index a 0 cada vez que llega a 6. Tambin hace que la secuencia de los patrones de bits colocados en OUTH se repitan en si mismos una y otra y otra vez. Estos, a su vez, hace que el indicador LED de 7 segmentos repita su patrn circular una y otra y otra vez.
Update_Display: IF index = 6 THEN index = 0 ' BAFG.CDE LOOKUP index, [ %01000000, %10000000, %00000100, %00000010, %00000001, %00100000 ], OUTH index = index + 1 RETURN

Su Turno Ajustando el Medidor en Hardware y Software

Hay dos formas para cambiar la sensibilidad del medidor. Primero por software: el programa en PBASIC puede cambiarse para ajustar la velocidad. Anteriormente mencionamos que dividiendo la variable time de la subrutina Delay con la instrucin PAUSE time /3 con nmeros mayores que 3 acelerarn el indicador y con nmeros menores a 3 los desacelerarn. Para verdaderamente desacelararlo tambin puede multiplicarlo por valores con el operador de multiplicacin * , y para ajustes finos existe el operador */. Cuando usted conecta capacitores en paralelo, su valor aumenta. Entonces, colocando un segundo capacitor de 0.01 F en seguida del primero como lo muestra la Figura 7-14 y 715, la capacitancia sera 0.02 F. Al tener dos veces al capacitancia, las mediciones de descarga sern dos veces mayores para el mismo nivel de luz.

Pgina 226 Qu es un Microcontrolador?

Conecte el segundo capacitor a la derecha del primero en la porcin del sensor de luz del circuito medidor de luz de la Figura 7-14 y 7-15. Ejecute el programa LightMeter.bs2 y observe los resultados. Como las mediciones de tiempo sern dos veces mayores, el patrn circular de los LEDs del indicador de 7 segmentos deber girar a la mitad de velocidad.

Figura 7-14 Dos capacitores de 0.01 F en paralelo.

Figura 7-15 Circuitos del Medidor de Luz con dos capacitores de 0.01 F en paralelo.

En lugar de la mitad de velocidad de un capacitor de 0.01 F, por qu no un dcimo de velocidad? Usted puede reemplazar los dos capacitores de 0.01 F con un capacitor de 0.1 F. Este trabajar correctamente en habitaciones muy iluminadas, y bajar su velocidad en condiciones normales de iluminacin. Recuerde que cuando usted usa un capacitor que es diez veces mayor entonces la medicin de luz del tiempo RC requerir diez veces ms tiempo. Reemplace los capacitores de 0.01 F con un capacitor de 0.1 F. Ejecute el programa y vea si el efectro predicho ocurre.

Midiendo Luz Pgina 227

Antes de continuar restaure el circuito con un capacitor de 0.01 F en paralelo con el fototransistor como se muestra en la Figrua 7-9 y 7-10. Verifique su circuito restaurado y compruebe que funciona antes de continuar.
Qu es mejor ajustar el software o el hardware? Trate usted de usar siempre lo mejor de ambos mundos. Escoga un capacitor que le de a usted la mediciones ms exactas sobre el ramgo ms amplio de niveles de luz. Despus que su hardware es lo mejor que puede usarse, use el software para ajustar automticamente el medidor de luz de manera que trabaje bien para el usuario bajo el rango ms amplio de condiciones. Esto toma una cantidad considerable de pruebas y refinamiento pero todo esto es parte del proceso de diseo de productos.

ACTIVIDAD #5: SALIDA CONMUTADA (ON/OFF) DEL FOTOTRANSISTOR


Antes que los microcontroladores fueran comunes en los productos, los fotoresistores se usaban en circuitos que variaban en su salida de voltaje. Cuando el voltaje pasaba debajo de una valor umbral indicando tiempo de noche, otros circuitos en el dispositivo encendian las lmparas. Cuando el voltaja pasaba arriba del umbral, indicando tiempo de da, los circuitos del dispositivo apagaban las lmparas. El comportamiento binario de conmutacin de la luz puede ser emulado con el mismo BASIC Stamp y el circuito RC modificando simplemente el programa. Alternativamente, el circuito se puede modificar para que mande un 1 o un 0 a un pin E/S dependiendo de la cantidad de voltaje suministrado a el pin, en forma similar como lo hace un botn push. En esta actividad, ustes trabajar con estos dos enfoques.
Ajustando el Programa de Estados On/Off

El programa PhototransistorAnalogToBinary.bs2 toma el rango de mediciones del fototransistor y las compara en el punto medion entre las mediciones mayor y menor. Si la medicin est arriba del punto medio, muestra Enciende las Luces, si no lo est, muestra Apaga las Luces. El programa usa directivas de constantes para definir las mediciones mayor y menor que el programa espera del circuito fototransistor.
valMax valMin CON CON 4000 100

Pgina 228 Qu es un Microcontrolador?

El programa tambin usa los operadores MIN y MAX para asegurarse que los valores permanecen dentro de estos lmites antes de usarlos para tomar decisiones. Si time es mayor que valMax (4000 en este Programa Ejemplo), la frase fija time to valMax =4000 De forma semejante si time es menor que valMin (100 en el Programa Ejemplo), la frase fija time to valMin= 100
time = time MAX valMax MIN valMin

La instruccin IF...THEN...ELSE convierte el rango de valores analgicos digitalizados en una salida binaria que toma la forma de mensajes luz encendica o luz apagada.
IF time > (valMax - valMin) / 2 THEN DEBUG CR, "Enciende la luces " ELSE DEBUG CR, "Apaga las luces" ENDIF

Antes de que este programa trabaje correctamente, usted tiene que calibrar sus condiciones de luz como sigue: Verique su circuito fototransistor para asegurarse que solo tiene un capacitor de 0.01 F (marcado con 103) Meta el programa PhototransistorAnalogToBinary.bs2 en el Editor de BASIC Stamp. Asegurese de agregar un espacio extra despues de s in el mensaje Encienda la luces Cargue el programaen el BASIC Stamp. Observe al Terminal Debug cuando ustes aplica las condiciones de luz penunbra y brillo que usted desea verificar, y escriba los valores de tiempo resultantes de mximo y mnimo. Meta estos valores en el programa con las directivas valMax y valMIn. Ahora, su programa est listo para ejecutarse y verificarse. Cargue el programa modificado en el BASIC Stamp. Verifique para comprobar que las condiciones de luz en penumbra generan el mensaje Encienda las luces y en condiciones de brillo genera el mensaje Apague las luces.

Midiendo Luz Pgina 229

' Que es un Microcontrolador - PhototransistorAnalogToBinary.bs2 ' Cambia las mediciones analogicas del fototransistor en resultado binario. ' {$STAMP BS2} ' {$PBASIC 2.5} valMax valMin time PAUSE 1000 DO HIGH 2 PAUSE 100 RCTIME 2, 1, time time = time MAX valMax MIN valMin DEBUG HOME, "time = ", DEC5 time IF time > (valMax - valMin) / 2 THEN DEBUG CR, "Ecienda las luces " ELSE DEBUG CR, "Apague las luces" ENDIF LOOP CON CON VAR 4000 100 Word

Su Turno Diferentes umbrales para Brillo y Obscuridad

Si usted trata de incorporar el programa PhototransistorAnalogToBinary.bs2 en un sistema automtico de luz, tiene un defecto potencial. Digamos que hay suficiente obscuridad en el exterior que hace que la medicion de time sobrepase (valMax valMin) / 2, que hace que se enciendan las luces, y al encenderse las luces el sensor las detecta, entonces esto hara que se apagaan. Este ciclo, enciende las luces/apaga las luces poda repetirse rapidamente toda la noche! La Figura 7-16 muestra en una grfica como funciona el ciclo encendido apagado. Cuando el nivel de luz cae, se incrementa el valor de la variable time, y cuando este cruza el umbral, la lampara automticamente se enciende. Entonces, como el fototransitor sensa la lampara que se ha encendido disminuye la medicin de la variable time y entonces la lmpara se apaga. Entoces, se incrementa nuevamente el valor de la variable time y sobrepasa el umbral, y como consecuencia nuevamente la lmpara se enciende, y baja el valor de la variable time del nivel de umbral y etcetera, etcetera...

Pgina 230 Qu es un Microcontrolador?

valMax "Turn light on " (valMax - valMin) / 2

"Turn light off" valMin

Figura 7-16 Oscilaciones Arriba/Debajo del Umbral.

Un remedio para este problema es agregar un segundo umbral, como lo muestra la Figura 7-17. El umbral Enciende la lmpara solamente enciende la lmpara despus tener mucha obscuridad, y Apaga la lmpara despues que hay mucho brillo. Con este sistema, la lmpara se enciende despues que time pas del rango de Enciende la lmpara. La lampara encendida genera brilla, entonces time disminuy ligeramente, pero como no baj hasta el umbral de Apaga la lmpara nada ha cambiado y la lmpara sigue encendida. El trmino HISTERESIS se usa para describir este tipo de sistemas, que tiene dos umbrales de entrada diferentes que afectan su salida junto con una zona de notransicin entre ellas.
valMax "Turn light on " (valMax - valMin) / 4 * 3 No transition (valMax - valMin) / 4 "Turn light off" valMin

Figura 7-17 Usando Diferentes Umbrales Alto y Bajo para Prevenir Oscilaciones.

Usted puede realizar este sistema de dos umbrales en su cdigo PBASIC modificado la instruccin IF...THEN..ELSEIF del programa PhototransistorAnalogToBinary.bs2 . Este es un ejemplo:
IF time > (valMax - valMin) / 4 * 3 THEN DEBUG CR, "Enciende las lmparas " ELSEIF time < (valMax - valMin ) / 4 THEN DEBUG CR, "Apaga las lmparas" ENDIF

Midiendo Luz Pgina 231

El primer bloque IF...THEN muestra Enciende las lmparas cuando la variable time almacena un valor que es mayor a del valor del tiempo ms alto (el menor brillo). El bloque de cdigos ELSEIF slo muestra Apaga las lmparas cuando la variable tiempo almacena un valor que es menor a del menor valor de tiempo (mximo brillo). Guarde el programa PhototransistorAnalogToBinary.bs2 con el nombre PhototransistorHysteresis.bs2. Antes de modificar el programa PhototransistorHysteresis.bs2 verifiquelo para asegurarse que funciona el umbral. Si la iluminacin ha cambiado, repita los pasos de calibracin (del programa PhototransistorAnalogToBinary.bs2) de valMin y valMax. Reemplace la instruccin IF...ELSE...ENDIF del programa PhototransistorAnalogToBinary.bs2 que acaba,ps de analizar. Cargue el programa PhototransistorHysteresis.bs2 en el BASIC Stamp. Verifique y compruebe que es obscuro el umbral Enciende las lmparas2 y que es luminoso el umbral Apague las lmparas Si usted agrega un circuito LED y modifica el cdigo para que encienda y apague el LED, pueden suceder algunas situaciones interesantes. Especialmente si usted pone el LED cerca del fototransistor, usted podra todava ver el comportamiento enc/apag cuando hay obscuridad incluso con la histeresis programada. Qu tan lejos del fototransistor debe estr el LED para hacer que los dos umbrales prevengan el comportamiento enc/apag? Considerando que los valores de valMin y valMax son iguales en ambos programas, qu tan lejos debe estar el LED para que trabaje correctamente el programa PhototransistorAnalogToBinary.bs2 que no se ha modificado?

Pgina 232 Qu es un Microcontrolador?

TTL vs Disparador Schmitt Los pines de E/S de su BASIC Stamp mandan y reciben seales usando lgica de transistor- transistor o TTL ) Como salida, el pin de E/S manda una seal high igual a 5 V o una seal low igual a 0 V. El lado izquierdo de la Figura 7-18 muestra como el pin de E/S se comporta como entrada. El registo IN de los pines de E/S (IN0, IN1, IN2, etc) almacena un 1 si el voltaje aplicado esta arriba de 1.4 V, o un 0 si est debajo de 1.4 V. Esto se muestra 1 Lgico o 0 Lgico en la figura. Un disparados Schmitt es un circuito representado por el smbolo en el centro de la Figura 7-18. El lado derecho de la Figura 7-18 muestra como se comportara un pin de E/S direccionado como entrada si tuviera un circuito disparador Schmitt interconstruido. Semejante al cdigo PBASIC con dos umbrales el disparado Schmitt tiene histeresis. El valor de entrada almacenado por el registro IN del pin de E/S no cambia de 1 a 0 hasta que el voltaje de entrada pasa debajo de 0.75 V. El BASIC Stamp 2px tiene una instruccin PBASIC que permite que usted configura sus pines de entrada como Disparadores Schmitt. Figura 7-18 Umbrales y smbolos de TTL vs Disparador Schmitt. TTL Threshold 5V Logic 1 1.4 V Logic 0 0V 0.75 V 0V Logic 0 Schmitt Trigger Symbol 5V 4.25 V Schmitt Trigger Threshold Logic 1

No Change

Ajustando el Circuito para Estados Enc/Apag

En la Actividad #2 del Captulo 5 se mencion que el voltaje de umbran para un pin E/S del BASIC Stampa es 1.4 V. Cuando un pin de E/S se direcciona como entrada, los voltajes arriba de 1.4 V aplicados a un pin de E/S resulta en un 1 binario, y los voltajes debajo de 1.4 V resultan en un 0 binario. El nudo Vo en el circuito que muestra la Figura 7-19 cambia su voltaje en funcin de la luz. El circuito puede conectarse a el pin E/S del BASIC Stamp, y con poca iluminacin el voltaje pasar abajo del umbral de BASIC Stamp de 1.4 V, y el registro de entrada del pin de E/S almacenar un 0. En condiciones de mucha iluminacin, Vo sube arriba de 1.4 V, y el registro de entrada del pin de E/S almacenar un 1.

Midiendo Luz Pgina 233

+ V

Figura 7-19 Circuito del Voltaje de Salida en Funcin de la Luz.


=R I

La razn de los cambios del voltaje en Vo con niveles de luz lo explica la ley de Ohm . Que establece que el voltaje en los extremos de un resistor (V en la Figura 7-19) es iual a la corriente que pasa por el resistor (I), multiplicado por la resistencia del resistor (R). V=IxR Recuerde que un fototransistor permite que pase ms corriente a travs de l cuando recibe ms iluminacin, y menos corriente cuando recibe menos iluminacin. Pongamosle atencin al ejemplo del circuito de la Figura 7-19 y calculemos cuanta corriente podra pasar a travs del resistor para crear una cada de voltaje de 1.4 V. Primero, sabemos que el valor del resistor es 10 K , o 10000 . Tambien sabemos que la diferencia de potencial sea igual a 1.4 V, entonces necesitamos modificar la ley de Ohm para encontrar I. Para hacer esto, dividimos ambos miembros de la ecuacin V = I x R por R, y obtenemos I = V/R. Entonces sustituimos los valores conocidos (V = 1.4 V y R = 10 K ) y resolvemos para I. I = = = = = = VR 1.4 V 10 k 1.4 V 10,000 0.00014 V/ 0.00014 A 0.14 mA

Ahora, si por el transistor circula el doble de corriente, porque hay ms iluminacin, cual es la diferencia de potencial en el resistor? Con el doble de corriente, I = 0.28 mA, y la resistencia es 10 K , aplicando la ley de ohm tenemos:

Pgina 234 Qu es un Microcontrolador?

= = = = =

IR 0.28 mA 10 k 0.00028 A 10,000 2.8 A 2.8 V

Con 2.8 V aplicados a un pin E/S, su registro de entrada deber almacenar un 1 ya que 2.8 V est arriba del voltaje de umbral del pin E/S que es 1.4 V.
Su Turno Ms clculos

Qu sucede si el fototransistor solo permite la mitad del voltaje de umbral, la corriente que fluye en el circuito es (0.07 mA), cual sera el voltaje en los extremos del resistor? Qu almacenara el registro de entrada del pin E/S?
Verificando el Sensor Binario de Luz

Verificar el circuito del sensor binario de luz es parecido a verificar el circuito de los botones push del captulo 3. Cuando el circuito se conecta a un pin E/S, el voltaje puede estar arriba o debajo de voltaje de umbral de 1.4 V del BASIC Stamp, lo cual resulta en un 1 o 0 y este lo mostrar la Terminal Debug.
Partes para el Circuito Analgico y el Sensor Binario de Luz

Un fototransistor Un Resistor de 220 (rojo-rojo-caf) Un Resistor de 10 K (caf-negro-naranja) Un Resistor de 2 K (rojo-negro-rojo) Un Resistor de 4.7 K (amarillo-violeta-rojo) Un Resistor de 100 K (caf-negro-amarillo) Dos alambres para puentes
Circuito Analgico y Sensor Binario de Luz

El circuito que muestra la figura 7 se comporta como un botn push controlado por sombra. La obscuridad hace que in2 = 0, y la iluminacin hace que in2 = 1. Recuerde que un pin de E/S direccionado como entrada no afecta al circuito que monitorea porque no proporciona ni consume corriente. Esto hace al pin E/S y al resitor de 220 esencialmente invisible al circuito. Entonces, el voltaje resultante de los clculos de

Midiendo Luz Pgina 235

nuestro circuito de la seccin anterior ser el mismo con o sin el resistor de 220 y el pin E/S conectados. Construya el circuito que muestra la Figura 7-20
Figrua 7-20 Diagrama Esquemtico y de Alambrado del Circuito Analgico y Sensor Binario de Luz.

Cdigo de Prueba del Circuito Analgico y Sensor Binario de Luz

El Programa TestBinaryPhototransistor.bs2 es una versin modificada del programa ReadPushButtonState.bs2 del Captulo 3, Actividad # 2. Adems del ajustar los comentarios, un cambio al programa real es la lnea DEBUG ? IN2 que antes era DEBUG ? IN3 en el Programa Ejemplo porque el botn push estaba conectado al P3 en lugar de P2. Revise Captulo 3, Actividad #2 (pgina 65). Use el programa TestBinaryPhototransistor.bs2 de abajo para verificar que con iluminacin sobre el fototransistor genera un 1 con obscuridad y genera un 0. Usted podra necesitar mucha iluminacin. Si su habitacin est iluminada y genera un 0, intntelo con luz solar o con una lmpara cerca. Un remedio alternativo para poca iluminacin es reemplazar el resistor de 10 K por uno de 100 K .

Pgina 236 Qu es un Microcontrolador?

' Que es un Microcontrolador? - TestBinaryPhototransistor.bs2 ' Verifique cada de segundo el circuito fototransistor estados de salida binarios. ' {$STAMP BS2} ' {$PBASIC 2.5} DO DEBUG ? IN2 PAUSE 250 LOOP

Verificando la Resistencia en Serie

Vea los calculos de V = I x R al principio de esta actividad. Si el resistor en serie es1/5 del valor, el voltaje en el resistor ser 1/5 del valor para las mismas condiciones de luz. De igual manera, un resistor 10 veces mayor originar que el voltaje sea diez veces mayor. Qu hace esto en su circuito? Un resistor de 100 K en lugar de un resistor de 10 K significa que el fototransistor slo tiene que conducir un 1/10 de la corriente para que llegue al voltaje de umbral del pin E/S del BASIC Stamp que es de 1.4 V y esto significa que necesita menos luz para obtener un 1 binario en el registro de entrada del pin E/S. Esto trabajara como un sensor en un ambiente que se supone en obscuridad ya que ser ms sensitivo a pequeas cantidades de luz. En contraste, un resistor con 1/5 de su valor significa que el fototransistor tiene que conducir 6 veces ms corriente para obtener el voltaje en el resistor para que cruce el voltaje de umbras de 1.4 V y esto significa que requiere ms luz para obtener un 1 binario en el registro de entrada del pin E/S. Entonces, este circuito sera ms adecuado para detectar luz ms brillante. Experimente con resistores de 2 K , 4.7 K , 10 K y 100 K , y compare los cambios en sensitividad a la luz con cada resistor.
Su Turno Indicador de Nivel de Baja Iluminacin

Escoja un resistor con la mejor respuesta a los cambios 1/0 con niveles de baja iluminacin en su rea de trabajo. Agregue la caracterstica del LED del Captulo 3, Actividad #3 para el circuito de umbral del fototransistor. Ponga algo entre el LED y el fototransistor para que el fototransistor no pueda ver el LED. Esto elimina la posibilidad de cruce entre los dos dispositivos.

Midiendo Luz Pgina 237

Modifique el programa para que haga que la luz parpadee cuando una sombre se proyecta sobre el fototransistor.

ACTIVIDAD #6: POR DIVERSION MIDA LUZ EXTERIOR CON UN LED


Anteriormente dijimos, el circuito presentado en la Actividad #1 se dise para mediciones de luz en interiores. Qu sucede si su aplicacin necesita necesita tomar mediones del exterior? Una opcin pudiera ser encontrar un fototransistor que genere menos corriente para la misma cantidad de luz. Otra opcin pudiera ser encontrar uno de los otros sensores de luz en el kit de Qu es un Microcontrolador? son de forma diferente a los LED y se compartan particularmente bien para mediciones de luz brillante. Cuando una corriente elctrica circula por el LED, este emite luz, entonces, que piensas, que sucede cuando la luz incide sobre el LED? S, as es, puede hacer que la corriente elctrica fluya a travs de un circuito. La Figura 7-21, muestra un circuito LED para detectar niveles de luz del exterior, y en otras res muy brillantes. Mientras que el fototransistor permite que la corriente circule porque se le aplic una presin elctrica (voltaje), el LED se parece a un pequeo panel solar y crea su propio voltaje para suministrar la corriente. Respecto al circuito de descarga RC, el resultado con un LED es casi el mismo. El LED conduce ms corriente y drena la carga del capacitor ms rpidamente cuando hay ms luz, y conduce menos corriente y drena la carga del capacitor menos rpidamente cuando hay menos luz.

Yellow

Figura 7-21 Esquemtico del LED en un Circuito de tiempo RC Sensible a la Luz

Pgina 238 Qu es un Microcontrolador?

Por qu se conecta el LED en sentido inverso? En el Captulo 2, el nodo del LED se conecto al resistor de 220 y el ctodo se conect a tierra. El circuito hace que el LED emita luz como resultado de la corriente que circula en el LED cuando el voltaje se aplica al circuito. Cuando la luz incide sobre el LED, este crear un pequeo voltaje que genera una pequea corriente en la direccin opuesta. Entonces, el LED tiene que conectarse en sentido inverso para que la corriente que conduzca permita que el capacitor lo drene para las mediciones de descarga de RC.

Partes para el Sensor de Luz LED

Un LED amarilla Un LED verde Un LED rojo Un Resistor de 220 (rojo-rojo-caf) Un alambre para puente
Circuito del Sensor de Luz LED

Una diferencia muy grande entre el LED y el fototransistor es que el LED conduce mucho menos corriente para la misma cantidad de luz, esto hace que con luz muy brillante el LED conduce suficiente corriente para descargar el capacitor rpidamente pero lo suficiente para la medicn de RCTIME. Recuerde que el mximo tiempo de medicin que RCTIME puede medir es 65535 x 2 us = 131 ms. Entonces para mediciones buenas de descarga de RC con el BASIC Stamp se requiere un capacitor mucho muy pequeo. De hecho, el circuito trabaja mejor sin capacitor externo. El LED tiene una capacitancia interna muy pequea, llamada capacitancia de unin, y los clips de metal en los que coloca componentes en su tablilla tambin tienen capacitancia. Pensando, un capacitor son dos placas separadas por aislante llamado dielctrico. Entonces las placas de metal dentro de su tablilla separadas por plstico y aire forman un capacitor. La combinacin de la capacitancia de unin del LED, y la capacitancia de los clips de su tablilla hacen que usted pueda usar el LED sin ningn capacitor externo, como lo muestra la Figura 7-22. Construya el circuito mostrado en la Figura 7-22 y 7-23, usando el LED amarillo. Asegrese de observar la polaridad mostrada en la figuras!

Midiendo Luz Pgina 239

Figura 7-22
Esquemtico del Circuito LED RCTIME

Flat spot and shorter cathode pin

Figura 7-23 Diagrama de alambrado del Circuito LED RC TIME

Longer anode pin

Verificando el Sensor de Luz LED con Cdigo

El circuito LED que sensa la luz puede verificarse en una habitacin bien iluminada o en exteriores durante el da. En habitaciones con poca iluminacin los tiempos medidos no exceden a 65535 y en este caso RCTIME almacenar cero en la variable result. Para la mayora de situaciones, el cdigo es the mismo de la Actividad #1, del programa TestPhototransistor.bs2. Si est en una habitacin bien iluminada trate esto: Ejecute el programama TestPhototransistor.bs2 de la Actividad #1. Dirija el LED a la fuente de luz ms brillante volteando su tablilla hacia la luz. Gradualmente gire la tablilla de la fuente de luz ms brillante de la habitacin, el valor que muestra la Terminal Debug deber ser mayor conforme la luz disminuye.

Pgina 240 Qu es un Microcontrolador?

Si tiene una lmpara brillante trate esto: Ejecute el programa TestPhototransistor.bs2.de la Actividad #1. Elimine las fuentes de luz ms brillantes como la luz del sol de la ventana. Encienda la lmpara y apntela hacia la parte superior del LED a una distancia de 10 cm. Si es posible, apague algunas de las lmparas fluorescentes para disminuir los niveles de luz ambiente. Observe las mediciones que muestra la Terminal Debug conforme usted gradualmente incrementa la distancia de la lmpara de la parte superior del LED. Esto le permitir que usted determina la distancia de la lmpara del LED. Si usted est en una habitacin que tiene slo lmparas fluorescentes sin fuentes de luz brillantes: Ejecute el programa TestPhototransistor.bs2 de la Actividad #1. Elimina la mayora de las fuentes brillantes de luz como rayos que entran por la ventana. Si es posible, apague algunas de las lmparas fluorescentes para que los niveles de luz sean bajos. Apunte el LED hacia el monitor de su computadora hasta que casi toque el monitor y vea si la mediones le permiten distinguir entre varios colores del monitor. Pruebas en el Exterior Ejecute el programa StoreLightMeasurements InEeprom.bs2 de la Actividad #2. Desconecte el cable de programacin y lleve su tablilla al exterior. Dirija su tablilla para el LED apunte directamente al sol. Presione y suelte el botn de Reset para reiniciar el programa de Adquisicin de Datos. Gire gradualmente su tablilla respecto al sol durante 2 minutos. Regrese su tablilla al interior y reconectela a la PC. Ejecute el programa ReadLightMeasurementsFromEeprom.bs2 y examine las mediciones de luz. Como usted gir gradualmente el LED respecto al sol, las mediciones sucesivas debern ser mas grandes.
Su Turno - Puede el BASIC Stamp indicarle si la luz es Verde o Roja?

En la Figura 7-2, el verde esta en la mitad del espectro y el rojo a la derecha. Si usted baja la versin PDF a color de este libro de www.parallax.com usted puede colocar el verde y el rojo en su pantalla y registrar las mediciones de luz del espectro de colores. Entonces,

Midiendo Luz Pgina 241

al comparar las mediones ms pequeas de cada LED, y usted puede detectar si el LED est enfrente del color verde o rojo de la pantalla. Empiece con el circuito detector de luz con el LED verde de la Figura 7-22 y la Figura 7-23. Descargue la versin PDF de Qu es un Microcontrolador? de www.parallax.com/go/WAM. Coloque el espectro de colores de la Figura 7-2 en su monitor y agrande la imagen. Con el programa TestPhototransistor.bse muestre las mediciones en la Terminal Debug sostenga su tablilla para que el domo del LED verde apunte directamente en el monitor sobre el espectro de colores. Para mejores resultados el domo del LED casi debe tocar el monitor, y los niveles de luz de su habitacin deben ser mnimos. Dislice el LED verde lentamente a lo largo de la barra del espectro que muestra el monitor.y anote que color reporta las mediciones ms pequeas. Repite esto con el LED rojo. Reporto el LED rojo los valores de medicin ms bajos cuando estaba sobre el color rojo del monitor, y el LED verde report sus mediciones ms bajas cuando estaba sobre el color verde del monitor? Las mediciones ms bajas del LED rojo deben ocurrir cuando est sobre el color rojo del monitor, y las mediciones ms bajas del LED verde deben ocurrir cuando estn sobre el color verde del monitor.

RESUMEN
Este captulo introdujo los sensores de luz y describi como se usan en una variedad de productos. Diferentes sensores de luz detectan diferentes clases de luz, y sus hojas de datos describen su sensibilidad en trminos de longitud de onda. Este captulo se enfoc en el fototransistor, un dispositivo que controla la corriente de colector a emisor por la cantidad de luz que incide en su base. Un fototransistor conduce porque luz puede controlar la cantidad de corriente, la tcnica para medir la posicin de una perilla de un potenciometro del captulo 5 del circuito RC, tambin trabaja para medir la luz que incide sobre el fototransistor. El tiempo que requiere un capacitor para perder su carga a travs del fototransistor resulta en la medicin RCTIME que proporciona un nmero que corresponde a la brillantez de la luz incidente en el fototransistor. La Adquisicin de Datos por almacenamiento de mediciones de luz en el mdulo de la memoria de programa EEPROM del BASIC Stamp, se introdujo con las instrucciones WRITE y READ que se usaron para almacenar valores y retirar valores del mdulo

Pgina 242 Qu es un Microcontrolador?

EEPROM del BASIC Stamp. El volumen de nmeros involucrados en la Adquisicin de Datos puede ser dificil de analizar, pero al graficar los datos es ms fcil ver patrones, tendencias y eventos. Los datos adquiridos pueden transferirse a hojas de clculo y graficarse, y ciertas utilerias de graficacin puede mostrarlas la Terminal Debug y graficar los valores que el BASIC Stamp manda en vez de mostrarlos como texto. Tambin se desarrolln un ejemplo de aplicacin de un Medidor de Luz y ste demostr como se pueden usar las mediciones de luz para controlar otros procesos, en este caso, la velocidad de un patrn circular de un indicador LED de 7 segmentos. Esta aplicacin us subrutinas para realizar tres trabajos diferentes para la aplicacin del medidor de luz. El BASIC Stamp puede programarse para convertir la medicin del tiempo de descarga de un circuito RC a valores binarios usando instrucciones IF...THEN. Adicionalmente, el programa puede tomar un rango de mediciones del tiempo de descarga de RC y aplicarle histeresis al umbral luces encendidas en el rango de mediciones de obscuridad, y un luces apagadas en el rango con mayor luz. Esto puede ayudar a prevenir oscilaciones encendido/apagado que de otra forma podran ocurrir cuando el sensor reporta obscuridad y el dispositivo prede las luces en un rea con luminosidad. Sin histeresis, el dispositivo podra sensar la luz y apagar nuevamente las luces y repetir este ciclo en form indefinida. Una aproximacin de hardware para sensar los estados de luz encendido/apagado es aplicarle energa al fototransistor con un resistor en serie. Al estudiar la ley de Ohm vimos que la cantidad de corriente que el fototransistor conduce afecta el voltaje del resistor. Este voltaje variable puede conectarse a un pin E/S y generar un 1 binario si el voltaje est arriba de 1.4 V que es el umbral de un pin E/S, o un 0 binario si el voltaje est debajo del voltaje de umbral. El LED (diodo emisor de luz) que emite luz cuando circula por l una corriente tambin se comporta como un pequeo panel solar cuando le llega luz, y esto genera un pequeo voltaje que a su vez puede hacer circular corriente en los circuitos. Las corrientes que generan los LEDs son pequeas pero suficientes para una combinacin de la propia capacitancia del LED y la capacitanci propia de los clips de la tablilla de experimentos proporcionan suficiente capacitancia para la descarga de un circuito RC sin capacitor externo. Mientras que el fototransistor del kit Qu es un Microcontrolador? se comporta mejor en ambientes interiores, el LED es grandioso para los ambientes exteriores y con mediciones de luz brillante.

Midiendo Luz Pgina 243

Preguntas

1. Cules son algunos ejemplos de aplicaciones de alumbrado automtico que dependen de sensores de luz ambiente? 2. Cules son algunos ejemplos de productos que responden a cambios en la brillantes de luz ambiente? 3. Qu rango de longitud de ondas tiene el espectro de luz visible? 4. Cules son los nombres de las terminales del fototransistor, y cual de ellas controla la cantidad de corriente que puede circular por el dispositivo? 5. Qu significan las letras de EEPROM? 6. Cuntos bytes puede almacenar el mdulo EEPROM del BASIC Stamp? Cuntos bits puede almacenar? 7. Qu instruccin usa usted para almacenar un valor en EEPROM? Qu instruccin usar usted para retirar un valor de EEPROM? Cul de ellos requiere una variable? 8. Qu es una etiqueta? 9. Qu es una subrutina? 10. Qu instruccin se usa para llamar un subrutina? Qu instruccin se usa para terminar una subrutina?
Ejercicios

1. Dibuje el esquemtico de un circuito de tiempo RC con fototransistor conectadoa P5. 2. Modifique el programa TestPhototransistor.bs2 para que funciones en un circuito conectado a P5 en lugar de P2. 3. Explique como debera modifica el programa LightMeter.bs2 para que el patrn circular mostrado por el indicador LED de 7 segmentos giren en la direccin opuesta.
Proyectos

1. Haga un pequeo prototipo de un sistema que automticamente ciere las cortinas cuando haya mucha luz y nuevamente las abra cuando disminuya la luz. Use el servo como actuador mecnico. Sugerencia: Para el cdigo usted puede agregar dos instrucciones de control de servo al programa PhototransistorAnalogToBinary.bs2, y cambiar la instruccin PAUSE 100 a PAUSE 1. Asegres que sigue las instrucciones en el texto para calibrar el rea de condiciones de luz antes de hacer la prueba. 2. Para un crdito adicional, refuerce su solucin al Proyecto 1 incorporandole las modificaciones de histresis analizadas en la Actividad #5.

Pgina 244 Qu es un Microcontrolador?

Soluciones

Q1. Luces de carros, alumbrado de calles y luces de seguridad externa que automticamente se iluminan cuando hay obscuridad. Q2. Pantallas de Laptops y cmaras con autoenfoque. Q3. De 380 nm a 750 nm de acuerdo con la fgura 7-2. Q4. Colector, base y emisor. La base controla la cantidad de corriente de emisor a colector. Q5. Memoria de Solo Lectura Electricamente Programable y Borrable. Q6. 2048 bytes. 2048x8 = 16, 384 bits Q7. WRITE para almacenar un valor; READ para retirar un valor. La instruccin READ necesita una variable. Q8. Etiqueta es un nombre que puede usarse para referirese a un lugar en un programa con PBASIC. Q9. Una subrutina es un pequeo segmento de cdigo que hace cierto trabajo. Q10.Se llama con GOSUB y se termina con RETURN E1. Esquemtico de la Figura 7-4 con el cambio de P2 a P5.

E2. Los cambios requeridos son muy similares a los que explicamos en la pgina 202.
DO HIGH 5 PAUSE 100 RCTIME 5, 1, time DEBUG HOME, "time = LOOP

", DEC5 time

E3. Para ir en la direccin opuesta, los patrones deben mostrarse en orden inverso. Esto puede hacerse conmutando los patrones dentro de la instruccin LOOKUP, o invirtiendo el orden de obtenerlos de look up. Estas son dos soluciones hechas con subrutinas alternadas Update-Display.

Midiendo Luz Pgina 245

Solucion 1
Update_Display: IF index = 6 THEN index = 0 ' BAFG.CDE LOOKUP index, [ %01000000, %10000000, %00000100, %00000010, %00000001, %00100000 ], OUTH index = index + 1 RETURN

Solucion 2
Index = 5 '<<Add after Index variable Update_Display: ' BAFG.CDE LOOKUP index, [ %01000000, %10000000, %00000100, %00000010, %00000001, %00100000 ], OUTH IF (index = 0) THEN index = 5 ELSE index = index - 1 ENDIF RETURN

P1. El fototransistor de la Figura 7-4, el esquemtico del servo para su tablilla del Captulo 4, Actividad #1.
' Que es un Microcontrolador - Ch07Prj01_Blinds_Control.bs2 ' Control de la Posicion del servo con luz. ' {$STAMP BS2} ' {$PBASIC 2.5} valMax valMin time PAUSE 1000 DO HIGH 2 PAUSE 1 RCTIME 2, 1, time DEBUG HOME, "time = ' PAUSA 100 -> PAUSA 1 ", DEC5 time CON CON VAR 4000 100 Word

time = time MAX valMax MIN valMin IF time > (valMax - valMin) / 2 THEN DEBUG CR, "Abre las cortinas " PULSOUT 14, 500 ELSE DEBUG CR, "Cierra las cortinas" PULSOUT 14, 1000 ENDIF LOOP

' Modifica ' Agrega ' Modifica ' Agrega

Pgina 246 Qu es un Microcontrolador?

P2. Agregando la Funcion Histeresis para el crdito adicional:


' Que es un Microcontrolador? - Ch07Prj02_Blinds_Control_Extra.bs2 ' Control de posicin del servo con luz incluyendo histeresis. ' {$STAMP BS2} ' {$PBASIC 2.5} valMax valMin time PAUSE 1000 DO HIGH 2 PAUSE 1 RCTIME 2, 1, time DEBUG HOME, "time = CON CON VAR 4000 100 Word

' PAUSA 100 -> PAUSA 1 ", DEC5 time

time = time MAX valMax MIN valMin IF time > (valMax - valMin) / 4 * 3 THEN DEBUG CR, "Abre las cortinas " PULSOUT 14, 500 ELSEIF time < (valMax - valMin ) / 4 THEN DEBUG CR, "Cierra las cortinas" PULSOUT 14, 1000 ENDIF LOOP

' Modifica ' Agrega ' Modifica ' Agrega

Midiendo Luz Pgina 247

Pgina 248 Qu es un Microcontrolador?

Captulo 8: Frecuencia y Sonido


SU DA Y LOS BEEPS ELECTRNICOS
Estos son algunos ejemplos de beeps que usted puede oir durante un da normal: El beep del horno de microondas cuando termina de cocinar su comida. El telfono celular toca diferentes tonos de beeps de canciones para llamar su atencin que est recibiendo una llamada. El cajero automtico emite beeps para recordarle que no olvide su tarjeta. La caja registradora de la tienda emite beeps para decirle a la cajera que el cdigo de barras de los abarrotes que pas sobre el escaner ya lo registr. Algunas calculadoras emiten beeps cuando se presionan incorrectamente las teclas. Usted empez su da con los beeps de un reloj despertador.

MICROCONTROLADORES, BOCINAS Y SEALES APAGADO/ ENCENDIDO


Todos los beeps que usted oye durante su rutina diaria los generan microcontroladores conectados a bocinas. El microcontrolador crea estos beeps mandando seales rpidas de apag/enc a varios tipos de bocinas. La velocidad de estas seales se llama frecuencia y determina el tono del beep. Cada vez que una seal apag/enc se repite a s misma se llama ciclo. Usted ver frecuentemente que al nmero de ciclos por segundo se le llama hertz y se abrevia Hz. Por ejemplo, una de las frecuencias ms comunes de los beeps que ayudan a las mquinas a llamar su atencin es 2 kHz. Esto significa que las seales high/low se repiten 2000 veces por segundo.
Presentando a las Bocinas Piezoelctricas

En esta actividad usted experimentar mandando una variedad de seales a una comn, pequea y barata bocina lllamada bocina piezoelctrica. A una bocina piezoelctrica comunmente se le llama bocina piezo o zumbador piezo. Su smbolo esquemtico y su dibujo lo muestra la Figura 8-1.

Figura 8-1
Bocina Piezoelctrica. smbolo esquemtico. Dibujo y

Frequencia y Sonido Pgina 249

ACTIVIDAD #1: CONSTRUYENDO Y VERIFICANDO LA BOCINA


En esta actividad usted contruir y verificar el circuito de la bocina piezoelctrica.
Partes del Circuito de la Bocina

Una bocina piezoelctrica Dos cables para puentes.


Construyendo el Circuito de la Bocina Piezoelctrica.

La terminal negativa de la bocina piezoelctrica deber conectarse a Vss, y la terminal positiva deber conectarse a un pin E/S. El BASIC Stamp deber programarse para mandar seales high/low a la terminal positiva de la bocina piezoelctrica.

Si su bocina tiene un aislante quteselo (no necesita lavarlo) Construya el circuito que muestra la Figura 8-2
Vdd X3
P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2

Vin

Vss

P9

Figura 8-2 Circuito de la bocina piezoelctrica, Diagrama esquemtico y de alambrado.

Vss

Funcionamiento de la Bocina Piezoelctrica

Cuando la cuerda de una guitarra vibra, causa cambios en la presin del aire. Estos cambios en la presin del aire nuestro oido los detecta como un tono. Con cambios rpidos en la presin del aire es mayor el tono, y para cambios lentos en la presin del aire, menor es el tono. El elemento dentro de la caja de plstico de la bocina piezoelctrica se llama elemento piezoelctrico. Cuando las seales high/low se aplican a la terminal positiva de la bocina, el elemento piezoelctrico vibra, y genera cambios en la presin del aire como lo hace la cuerda de la bocina. Y como la cuerda de la bocina, su

Pgina 250 Qu es un Microcontrolador?

oido detecta los cambios en la presin del aire que genera la bocina piezoelctrica, y suena tpicamente como un beep o un tono.
Programando el Control de la Bocina

La instruccin FREQOUT es una forma conveniente de mandar seales high/low a la bocina para que haga un sonido. El Manual del BASIC Stamp muestra que la sintaxis de la instruccin es:
FREQOUT Pin, Duration, Freq1 {, Freq2}

Y como la mayora de las otras instrucciones usadas en este libro, Pin es un valor que usted puede usar para escoger que pin del BASIC Stamp usar. El argumento Duration es un valor que le dice a la instruccin FRECOUT que tan largo, en milisengundos, es el tono que deber tocar. El argumento Freq1, se usa para fijar en hertz la frecuencia del tono, , en hertz . Hay un argumento opcional Freq2 que puede usarse para tocar dos tonos diferentes al mismo tiempo. As se manda un tono al pin E/S P9 que dura 1.5 segundos y tiene una frecuencia de 2 kHz:
FREQOUT 9, 1500, 2000

Programa Ejemplo: TestPiezoWithFreqout.bs2

Este Programa Ejemplo manda un tono de 2 kHz a la bocina en el pin E/S P9 durante 1.5 segundos. Usted puede usar la Terminal Debug para ver cuando la bocina emite beeps y cuando se detiene. Meta y corra el programa TestPiezoWithFreqout.bs2 Verifique que la bocina hacer un tono claramente audible durante el tiempo que la Terminal Debug muestrael mensaje: Tone sending (Mandando Tono)
' Que es un Microcontroladirr - TestPiezoWithFreqout.bs2 ' Manda un tono a la bocina piezo usando la instruccin FREQOUT. '{$STAMP BS2} '{$PBASIC 2.5} PAUSE 1000 DEBUG "Mandando Tono...", CR FREQOUT 9, 1500, 2000 DEBUG "Hecho el Tono ."

Frequencia y Sonido Pgina 251

Su Turno Ajustando la Frecuencia y Duracin

Guarde el programa TestPiezoWithFreqout.bs2 con un nombre diferente. Trate algunos valores diferentes para los argumentos de Duration y Freq1. Despus de cada cambio, ejecute el programa y escriba el efecto. Conforme el argumento Freq1 se hace mayor sube o baja el tono? Trate valores de 1500, 2000, 2500 y 3000 para responder este pregunta.

ACTIVIDAD #2: SONIDOS EN ACCIN


Algunos juguetes contienen microcontroladores que se usan para hacer sonidos en accin. Sonidos en accin involucra cambiar rpidamente la frecuencia de la bocina. Usted puede tambien obtener algunos efectos interesantes jugando juntos dos tonos diferentes usando el argumento opcional Freq2 de la instruccin FREQOUT. Esta actividad presenta ambas tcnicas.
Programando Sonidos en Accin

La accin y aplicacin de sonidos tiene tres componentes diferentes: 1. Pausa 2. Duracin 3. Frecuencia La pausa es el tiempo entre tonos, y usted puede usar la instruccin PAUSE para crearla. La duracin es la cantidad de tiempo que dura un tono, usted puede fijarla usando el argumento Duration de la instruccin FREQOUT. La frecuencia determina la caracterstica del tono. A mayor frecuencia, mayor es el tono, a menor frecuencia menor es el tono. Esto lo determina, naturalmente, el argumento Freq1 de la instruccin FREQOUT.
Programa Ejemplo: ActionTones.bs2

El programa ActionTones.bs2 demuestra unas pocas combinaciones de pausa, duracin y frecuencia. Esta primer secuencia de tonos suena parecido a su reloj despertador electrnico. El segundo suena como hablara un robot de pelcula familiar de ciencia ficcin. El tercero es un tipo de efecto de sonido que usted podra oir en un video juego antiguo. Meta y ejecute el programa ActionTones.bs2

Pgina 252 Qu es un Microcontrolador?

' Que es un Microcontrolador - ActionTones.bs2 ' Demuestra diferentes combinaciones de pausa, duracion, frecuencia ' pueden usarse para efectos de sonico. '{$STAMP BS2} '{$PBASIC 2.5} duration frequency PAUSE 1000 DEBUG "Alarm...", CR PAUSE 100 FREQOUT 9, 500, 1500 PAUSE 500 FREQOUT 9, 500, 1500 PAUSE 500 FREQOUT 9, 500, 1500 PAUSE 500 FREQOUT 9, 500, 1500 PAUSE 500 DEBUG "Robot reply...", CR PAUSE 100 FREQOUT 9, 100, 2800 FREQOUT 9, 200, 2400 FREQOUT 9, 140, 4200 FREQOUT 9, 30, 2000 PAUSE 500 DEBUG "Hyperspace...", CR PAUSE 100 FOR duration = 15 TO 1 STEP 1 FOR frequency = 2000 TO 2500 STEP 20 FREQOUT 9, duration, frequency NEXT NEXT DEBUG "Done", CR END VAR VAR Word Word

Funcionamiento de ActionTones.bs2

La rutina Alarma suena como un reloj despertador. Esta rutina toca un tono con una frecuencia fija de 1.5 kHz que dura 1.5 segundos con retardos fijos entre tonos de 0.5 segundos. La rutina Robot reply usa varias frecuencia de duracin corta.

Frequencia y Sonido Pgina 253

La rutina Hyperspace no usa retardos, pero varia a la duracin y la frecuencia. Usando bucles FOR...NEXT para cambiar rapidamente las variables frecuencia y duracin, usted puede obtener algunos efectos interesantes de sonidos. Cuando uno de los bucles FOR...NEXT se ejecuta dentro de otro bucle, se le llama bucles anidados. As trabaja el bucle anidado FOR...NEXT. La variable duracin empieza en 15, entonces el bucle For frequency...lo toma y manda frecuencias a la bocina piezoelctrica de 2000, luego 2020, luego 2040, etc, hasta llegar a 2500. Cuando termina el bucle FOR frequency, el bucle For duration...solo se ha repetido una de sus 15 ves. Entonces resta un 1 al valor de duracin y repite el bucle For frequency una y otra vez.
FOR duration = 15 TO 1 FOR frequency = 2000 TO 2500 STEP 15 FREQOUT 9, duration, frequency NEXT NEXT

Programa Ejemplo: NestedLoops.bs2

Para comprender mejor como funciona el bucle anidado FOR...NEXT, el programa NestedLoops.bs2 usa la instruccin DEBUG para mostrar el valor de una versin menos complicada de bucles anidados que utizamos en el programa ActionTones.bs2. Meta y ejecute el programa NestedLoops.bs2. Examine la salida de la Terminal Debug, y verifique que cambian las variables duration y frequency cada vez que pasan por el bucle.
' Que es un Microcontrolador? - NestedLoops.bs2 ' Demonstracin del funcionamiento del bucle anidad del programa ActionTones.bs2. '{$STAMP BS2} '{$PBASIC 2.5} duration frequency PAUSE 1000 DEBUG "Duration "-------Frequency", CR, ---------", CR VAR VAR Word Word

Pgina 254 Qu es un Microcontrolador?

FOR duration = 4000 TO 1000 STEP 1000 FOR frequency = 1000 TO 3000 STEP 500 DEBUG " " , DEC5 duration, " ", DEC5 frecuencia, CR FREQOUT 9, duration, frecuencia NEXT DEBUG CR NEXT END

Su Turno Ms Efectos de Sonido

Hay muchas formas bonitas e ilimitadas que al modificar ActionTones.bs2 genere diferentes combinaciones de sonido. Esta es una modificacin a la rutine Hyperspace.
DEBUG "Hyperspace jump...", CR FOR duration = 15 TO 1 STEP 3 FOR frequency = 2000 TO 2500 STEP 15 FREQOUT 9, duration, frequency NEXT NEXT FOR duration = 1 TO 36 STEP 3 FOR frequency = 2500 TO 2000 STEP 15 FREQOUT 9, duration, frequency NEXT NEXT

Guarde su Programa Ejemplo con el nombre ActionTonesYourTurn.bs2. Algrese con esta y otras modificaciones de su propia creacin.
Dos Frecuencias al Mismo tiempo

Usted puede tocar dos frecuencias diferentes al mismo tiempo. Recuerde la sintaxis de la instruccin FREQOUT de la Actividad #1.
FREQOUT Pin, Duration, Freq1 {, Freq2}

Usted puede usar el argumento opcional Freq2 para tocar dos frecuencias con una sola instruccin FREQOUT. Por ejemplo, usted puede tocar 2 kHz y 3 kHz de la siguiente forma:
FREQOUT 9, 1000, 2000, 3000

Frequencia y Sonido Pgina 255

Cada tono de teclado es tambin un ejemplo de dos frecuencias juntas combinadas. En Telecomunicaciones a esto se le llama DTMF (Dual Tone Multi Frequency) Frecuencia Dual Muti Tono. En PBASIC tambin hay una instruccin llamada DTMFOUT que esta diseada justamente para mandar tonos de telfono. Para ejemplos vea esta instruccin en el Manual BASIC Stamp o en Ayuda.

Programa Ejemplo: PairsOfTones.bs2

Este Programa Ejemplo demuestra la diferencia en tono cuando toc juntas 2 kHz y 3 kHz. Tambin demuestra un fenomeno interesante que ocurre cuando usted suma dos ondas de sonida que estn muy cerca en frecuencia. Cuando usted toca 2000 Hz y 2001 Hz al mismo tiempo el tono entra y sale una vez cada segundo (a un frecuencia de 1 Hz). Si usted toca 2000 Hz y 2002 Hz, el tono entra y sale dos veces por segundo (2Hz) y as sucesivamente.
Batido es cuando dos tonos muy cercanos en frecuencia se tocan juntan originando que el tono que usted oye entra y salga. La frecuencia de ese desvanecimiento es la diferencia entre las dos frecuencias. Si la diferencia es 1 Hz, el tono entra y sale a 1 Hz. Si la diferencia es 2 Hz, el tono entra y sale a 2 Hz. Las variaciones en la presin del aire que hace la bocina piezoelctrica se llaman ondas de sonid Cuando el tono es ms grabe, las variaciones en la presin del aire causadas por las dos frecuencias se agregan una a otra (a esto se le llama superposicin). Cuando el tono esta en lo ms quieto , las variaciones en la presin del aire se cancelan unas a otras (a esto se se llama interferencia).

Meta y ejecute el programa PairsOfTones.bs2. De un vistaso a la Terminal Debug cuando estn tocando los tonos, y observe los efectos diferentes que se obtienen al mezclar los tonos diferentes.
' Que es un Microcontrolador - PairsOfTones.bs2 ' Demostacin de algunos de los efectos que ocurren cuando mezcla dos tonos. '{$STAMP BS2} '{$PBASIC 2.5} PAUSE 1000 DEBUG "Frequency = 2000", CR FREQOUT 9, 4000, 2000 DEBUG "Frequency = 3000", CR FREQOUT 9, 4000, 3000 DEBUG "Frequency = 2000 + 3000", CR FREQOUT 9, 4000, 2000, 3000

Pgina 256 Qu es un Microcontrolador?

DEBUG "Frequency = 2000 + 2001", CR FREQOUT 9, 4000, 2000, 2001 DEBUG "Frequency = 2000 + 2002", CR FREQOUT 9, 4000, 2000, 2002 DEBUG "Frequency = 2000 + 2003", CR FREQOUT 9, 4000, 2000, 2003 DEBUG "Frequency = 2000 + 2005", CR FREQOUT 9, 4000, 2000, 2005 DEBUG "Frequency = 2000 + 2010", CR FREQOUT 9, 4000, 2000, 2010 DEBUG "Hecho", CR END

Su Turno Optimizacin del Cdigo

El programa PairsOfTones.bs2 se escribi para demostrar fenmenos interesantes que suceden cuando usted toca al mismo tiempo dos frecuencias diferentes usando el argumento opcional Freq2 de la instruccin FREQOUT. Sin embargo, es muy ineficiente. Modifique el programa PairsOfTones.bs2 para que recicle el argumento Freq2 en el rango de 2001 a 2005 usando una variable tamao word y un bucle.

ACTIVIDAD #3: NOTAS MUSICALES Y CANCIONES SENCILLAS


La Figura 8-3 muestra las 25 teclas ms a la derecha del teclado de un piano. Tambien muestra las frecuencias a las cuales vibra cada alambre dentro del piano cuando usted la golpea.

Frequencia y Sonido Pgina 257

Figura 8-3 Teclas del Piano a la derecha y sus Frecuencias

Las teclas y sus notas correspondientes estn marcadas C6 hasta C8. Estas teclas estn separadas en dos grupos de 12, 7 son teclas blancas y 5 son teclas negras. La secuencia de notas se repite en si misma cada 12 teclas. Notas de la misma letra estn relacionadas con la frecuencia que se dobla cada octava mayor. Por ejemplo, C7 es dos veces la frecuencia de C6, y C8 es el doble de C7. De igual forma, si va una octava hacia abajo, la frecuencia ser la mitad del valor, por ejemplo, A6 es la mitad de frecuencia de A7. Si usted ha escucha a un cantante practicar sus notas cantando el Solfeo, Do Re Mi Fa Sol La Si Do, el cantante est intentando igualar la notas que usted obtiene de golpear las teclas blancas del teclado de un piado. Estas teclas blancas se llaman teclas naturales, y el nombre octava se relaciona al doblar la frecuencia con cada ocho teclas naturales. La tecla negra del piano se le llama Bemol o Sostenido. Por ejemplo la tecla negra entre C y D se llama C Bemol (C#)o D Sostenido El nombre x o y depende de la pieza particular que se est tocado, y las reglas de esto pertenecen a las lecciones de msica.
Programando Notas Musicales

La instruccin FREQOUT tambin es til para notas musicales. Programar el BASIC Stamp para tocar msica usando un bocina piezo involucra seguir una variedad de reglas

Pgina 258 Qu es un Microcontrolador?

usadas al tocar msica usando otro instrumento musical. Estas reglas se aplican a los mismos elementos que se usaron para hacer efectos de sonido: frecuencia, duracin y pausa. El siguiente Programa Ejemplo toca algunas de las frecuencias de las notas musicales en la bocina piezo cada una con una duracin de medio segundo.
Programa Ejemplo: DoReMiFaSolLaTiDo.bs2

Meta y ejecute el programa DoReMiFaSolLaTiDo.bs2


' Que es un Microcontrolador - DoReMiFaSolLaTiDo.bs2 ' Manda notas de una octava medio segundo usando una bocina piezo. '{$STAMP BS2} '{$PBASIC 2.5} PAUSE 1000 'Solfege DEBUG "Do...", CR: DEBUG "Re...", CR: DEBUG "Mi...", CR: DEBUG "Fa...", CR: DEBUG "Sol..", CR: DEBUG "La...", CR: DEBUG "Ti...", CR: DEBUG "Do...", CR: END Tone FREQOUT 9,500,1047 FREQOUT 9,500,1175 FREQOUT 9,500,1319 FREQOUT 9,500,1396 FREQOUT 9,500,1568 FREQOUT 9,500,1760 FREQOUT 9,500,1976 FREQOUT 9,500,2093 Note ' C6 ' D6 ' E6 ' F6 ' G6 ' A6 ' B6 ' C7

Su Turno Notas Bemol/Sostenido

Use las frecuencias mostradas en la Figura 8-3 para agregar las cinco notas bemol/sostenido al programa DoReMiFaSolLaTiDo.bs2. Modifique su programa para que toque la siguiente octava superior. Sugerencia: Haga sus operaciones y use la operacin * 2 depus de cada argumento Freq1. Por ejemplo, FREQOUT 9, 500, 1175 * 2 esto multiplicara D6 por 2 y le dar a usted D7, que es la nota D en la sptima octava.

Frequencia y Sonido Pgina 259

Almacenando y Retirando Secuencias de Notas Musicales

Una forma de guardar notas musicales es almacenandola en el mdulo EEPROM del BASIC Stamp. Aunque usted podra usar algunas instrucciones WRITE para hacer esto, una mejor forma es usar la directiva DATA. Esta es la sintaxis para la directiva DATA:
{Symbol} DATA {Word} DataItem {, {Word} DataItem, }

Este es un ejemplo para usar la directiva DATA para almacenar los caracteres que corresponden a las notas musicales.
Notes DATA "C","C","G","G","A","A","G"

Usted puede usar la instruccin READ para accesar estos caracteres. La letra C se localiza en la direccin Notes + 0, la segunda letra C se localiza en Notes + 1. Entonces, hay una letra G en Notas + 2, y as sucesivamente. Por ejemplo si usted desea cargar la ltima letra G en una variable byte llamada noteLetter, use la instruccin:
READ Notes + 6, noteLetter

Usted tambin puede almacenar listas de nmeros usando la directiva DATA. Los valores de Frecuencia y duracin que usa el BASIC Stamp para las notas musicales necesitan estar almacenadas en variables tamao word porque son generalmente mayores a 255. As es como se hace con la directiva DATA.
Frequencies DATA Word 2093, Word 2093, Word 3136, Word 3136, Word 3520, Word 3520, Word 3136

Como cada uno de estos valores ocupa dos bytes, para accesarlos con la instruccin READ es diferente a accesar caracteres. El primer 2093 est en Frequencies + 0, pero el segundo 2093 se localiza en Frequencies + 2. El primer 3136 se localiza en Frecuencies +4, y el segundo 3136 se localiza en Frequencies + 6.
Los valores en la directiva DATA Frequencies corresponde con notas musicales in la directiva Notes DATA directive.

Este es un bucle FOR...NEXT que coloca Notes DATA en una variable llamada noteLetter, luego coloca Frequencies DATA en una variable llamada noteFreq.
FOR index = 0 to 6

Pgina 260 Qu es un Microcontrolador?

READ Notes + index, noteLetter READ Frequencies + (index * 2), Word noteFreq DEBUG noteLetter, " ", DEC noteFreq, CR NEXT
Qu hace (index * 2)? Cada valor almacenado en la directiva Frequencies DATA toma un word (dos bytes), mientras cada carcter en la directiva Notes DATA solamente toma un byte. El valor de index se incrementa por 1 cada vez en el bucle FOR...NEXT. Esto est bien al accesar los caracteres de las notas usando la instruccn READ Notes + index, noteLetter. El problema es que para cada uno de los bytes en Notes, la variable index necesita apuntar dos veces hacia debajo de la lista Frequencies. La instruccin READ Frequencies + (index * 2), Word noteFreq, se encarga de esto.

El siguiente Programa Ejemplo almacena notas y duraciones usando DATA, y usa la instruccin FREQOUT para tocar cada frecuencia de nota en una duracin especfica. El resultado es las primeras pocas notas de la cancin de nios Twinkle Twinkle Little Star. {XW Twinkle Twinkle Little Star }
La cancin El Alfabeto la usan los nios para memorizar las letras ABCDsy usa las mismas notas de Twinkle Twinkle Little Star.

Programa Ejemplo: TwinkleTwinkle.bs2

Este programa ejemplo demuestra como usar la directiva DATA para almacenar listas y como usar la instruccin READ para accesar los valores de las listas. Meta y ejecute el programa TwinkleTwinkle.bs2 Verifique que el sonido de las notas se parecea la cancin Twinkle Twinkle Little Star. Use la Terminal Debug para verificar que trabaja como se espera.
' Que es un Microcontrolador? - TwinkleTwinkle.bs2 'Toca las primeras siete notas de la cancin Twinkle Twinkle Little Star. '{$STAMP BS2} '{$PBASIC 2.5} Notes Frequencies DATA DATA "C","C","G","G","A","A","G" Word 2093, Word 2093, Word 3136, Word 3136, Word 3520, Word 3520, Word 3136

Frequencia y Sonido Pgina 261

Durations

DATA

Word 500, Word 500, Word 500, Word 500, Word 500, Word 500, Word 1000 Nib Byte Word Word

index noteLetter noteFreq noteDuration PAUSE 1000 DEBUG "Note "----

VAR VAR VAR VAR

Duration --------

Frequency", CR, ---------", CR

FOR index = 0 TO 6 READ Notes + index, noteLetter DEBUG " ", noteLetter READ Durations + (index * 2), Word noteDuration DEBUG " ", DEC4 noteDuration READ Frequencies + (index * 2), Word noteFreq DEBUG " ", DEC4 noteFreq, CR FREQOUT 9, noteDuration, noteFreq NEXT END

Su Turno Agregando y Tocando Ms Notas

Este programa toc las primeras siete notas de Twinkle Twinkle Little Star. Las slabas son: Twin-kle twin-kle lit-tle star La siguiente frase de la cancin dice How I wond-er what yor are y sus notas son F, F, E, E, D, D, C. E igual que la primera frase, se sostine dos veces que las otras notas. Para agregar esta frase a la cancin del programa TwinkleTwinkle.bs2, usted necesita expander apropiadamente cada directiva DATA. No olvide cambiar el bucle FOR...NEXT para que vaya de 0 a 13 en lugar de 0 a 6. Modifique el programa TwinkleTwinkle.bs2 para que toque las dos primeras frases de la cancin en lugar de solamente la primera frase.

ACTIVIDAD #4: MSICA CON MICROCONTROLADOR


Las duraciones de las notas en una hoja de msica no se graba en terminos de milisegundos. En lugar de eso se decriben como notas: entero, mitad, cuarto, octavos, diecisesavos, y treinta y dosavos. Como su nombre lo sugiere, media nota dura la mitad de un entero, Un cuarto de nota dura la cuarta parte de tiempo de lo que dura una nota entera. Cunto dura una nota entera? Depende de la pieza de msica que se est tocando.

Pgina 262 Qu es un Microcontrolador?

Una pieza se puede tocar en un tempo que hace que una nota entera dure cuatro segundo, en otra pieza la nota entera dura dos segundos y otras pueden tener otra duracin. Descansos son los tiempos entre notas que no se tocan tonos. La duracin de los descansos tambien se miden en entero, mitad, cuarto, octavo, dieciseisavo y treinta y doseavos.
Ms de Musica con microcontrolador. Despus de completar esta actividad, usted estar listo para aprender como escribir cdigos musicales en PBASIC a partir de las hojas de msica. Vea el tutorial Tocando msica de partitura con la bocina piezo, y su primer video en www.parallax.com/go/WAM.

Un Sistema Mejorado para Almacenar y Retirar Msica

Usted puede escribir programas que almacenen dos veces ms msica en su BASIC Stamp usando bytes en lugar de words en sus directivas DATA. Usted puede tambin modificar su programa para hacer fcil de leer las notas musicales usando una de las convenciones ms comunes para las notas y su duracin. Esta actuvidad empezar presentado como almacenar informacin musical en una forma que relacione los conceptos de notas, duracin y descansos o silencios. Tambien se presentar el Tempo, y lo analizar en la siguiente actividad. Esta es una de las directivas DATA que almacena notas musicales y duraciones para el siguiente Programa Ejemplo. Cuando se toque se parecer a la cancin Martinillo. Solo se almacenarn los caracteres de las notas en la directiva Notes DATA porque las instrucciones LOOKUP y LOOKDOWN se usarn para acoplar letras con sus correspondientes frecuencias.
Notes DATA "C","D","E","C","C","D","E","C","E","F", "G","E","F","G","Q" 4, 2, 2000 4, 4, 4, 4, 4, 2 4, 4, 4, 4, 4, 4,

Durations

DATA

WholeNote

CON

El primer nmero en la directiva Durations DATA le indica al programa cuanto debe durar la primera nota de la directiva Notes Data. La segunda duracin es para la segunda nota, y as sucesivamente. Las duraciones no estn en terminos de milisegundos. En lugar de eso son nmeros mucho ms pequeos que pueden almacenarse en bytes, entonces no

Frequencia y Sonido Pgina 263

hay prefijo Word en la directiva DATA. Comparado con almacenar valores en terminos de milisegundos, estos nmeros se relacionan ms con la partitura. Esta es una lista de lo que significa cada duracin. 1 nota entera 2 media nota 4 cuarto de nota 8 octavo de nota 16 dieciseisavo de nota 32 treintaydosavo de nota Despus que se lee cada valor de la directiva Durations DATA, se divide entre el valor de WholeNote para obtener la Duration usada en la instruccin FREQOUT. La cantidad de tiempo que dura cada nota depende del tempo de la cancin. Un tempo rpido significa que cada nota dura menos tiempo, mientras que un tempo lento significa que cada nota dura ms tiempo. Como todas las duraciones de las notas son fracciones de una nota entera, usted puede usar la duracin de la nota entera para fijar el tempo.
Qu significa Q en Notes DATA? Q se usa para salir y DO UNTIL...LOOP verifica Q cada vez en el bucle y lo repetir hasta que lo encuentra. Cmo toco un silencio? Usted puede insertar un silencio entre notas insertando una p. La seccin Su Turno tiene las primeras pocas notas de la 5. Sinfona de Beethoven que tiene un silencio. Cmo toco notas bemol/sostenido? El programa NotesAndDurations.bs2 tiene valores en las tablas lookup para notas bemol/sostenido. Cuando usted usa con letra minscula, usted toca la nota bemol. Por ejemplo, si usted desea tocar B-sostenido, use b en lugar de B. Recuerde que esta tiene la misma frecuencia que A-bemol.

Programa Ejemplo: NotesAndDurations.bs2

Meta y ejecute el programa NotesAndDurations.bs2 Cmo se oye?

Pgina 264 Qu es un Microcontrolador?

' Que es un Microcontrolador - NotesAndDurations.bs2 ' Toca las primeras notas de Martinillo. '{$STAMP BS2} '{$PBASIC 2.5} DEBUG "Program Running!" Notes DATA "C","D","E","C","C","D","E","C","E","F", "G","E","F","G","Q" 4, 2, 2000 Byte Nib Byte Word Word 4, 4, 4, 4, 4, 2 4, 4, 4, 4, 4, 4,

Durations

DATA

WholeNote index offset noteLetter noteFreq noteDuration

CON VAR VAR VAR VAR VAR

DO UNTIL noteLetter = "Q" READ Notes + index, noteLetter LOOKDOWN noteLetter, [ "A", "D", "G", "b", "e", "a", "B", "E", "P", "C", "F", "Q" "d", "g", ], offset

LOOKUP offset,

[ 1760, 1865, 1976, 2093, 2217, 2349, 2489, 2637, 2794, 2960, 3136, 3322, 0, 0 ], noteFreq

READ Durations + index, noteDuration noteDuration = WholeNote / noteDuration FREQOUT 9, noteDuration, noteFreq index = index + 1 LOOP END

Funcionamiento de NotesAndDurations.bs2

Las directivas Notes y Durations DATA se analizaron antes del programa. Estas directivas combinadas con la constante WholeNote se usaron para almacenar todos los datos musicales usados por el programa.

Frequencia y Sonido Pgina 265

Abajo se muestran las declaraciones para las cinco variables usadas en el programa. Incluso aunque ya no usa el bucle FOR...NEXT para accesar los datos, ah todava tiene que estar una variable (index) que mantiene el ajuste por el cual entra DATA que est siendo leida por Notes y Durations. La variable offset se usa con las instrucciones LOOKUP y LOOKDOWN para seleccionar un valor particular. La variable noteLetter almacena un carcter que accesa la instruccin READ. Las instrucciones LOOKUP u LOOPDOWN se usan para convertir este carcter en un valor de frecuencia. Este valor se almacena en la variable noteFreq y se usa como argumento Freq1 de la instrucci FREQOUT. La variable noteDuration se usa en la instruccin READ para recibir un valor de Durations DATA. Y tambin se usa para calcular el argumento Duration para la instruccin FREQOUT.
index offset noteLetter noteFreq noteDuration VAR VAR VAR VAR VAR Byte Nib Byte Word Word

El bucle principal se mantiene en ejecucin hasta que la letra Q se lee de NotesDATA.


DO UNTIL noteLetter = Q

Una instruccin READ obtiene un caracter de NotesDATA, y lo almacena en la variable noteLetter. Entonces, la variable noteLetter se usa en la instruccin LOOKUP para fijar el valor de la variable offset. Recuerde que offset almacena un 2 si se detecta b, un 2 si se detecta B, un 3 si se detecta C y as sucesivamente. Entonces este valor de offset se usa en una instruccin LOOKUP to para calcular cual deber ser el valor de la variable noteFreq. Si offset es 1, noteFreq ser 1865, si offset es 2, noteFreq ser 1876, si offset es 3, noteFreq es 2093 y as sucesivamente.
READ Notes + index, noteLetter LOOKDOWN noteLetter, [ "A", "D", "G", "b", "e", "a", "B", "E", "P", "C", "d", "F", "g", "Q" ], offset

LOOKUP offset,

[ 1760, 1865, 1976, 2093, 2217, 2349, 2489, 2637, 2794, 2960, 3136, 3322, 0, 0 ], noteFreq

Pgina 266 Qu es un Microcontrolador?

La frecuencia de la nota se ha determinado, pero todava tiene que calcularse la duracin. La instruccin READ usa el valor de index para colocar un valor de Duration DATA a NoteDuration.
READ Duration + index, noteDuration

Entonces, noteDuration es iguala a la constante WholeNote dividida entre noteDuration. Si noteDuration empieza en 4 de la instruccin READ, se convierte en 2000/4 = 500. Si noteDuration es 8, se convierte en 2000/8 = 250.
noteDuration = WholeNote / noteDuration

Ahora que ya se han determinado los valores de noteDuration y noteFrequ, la instruccin FREQOUT toca la nota.
FREQOUT 9, noteDuration, noteFreq

Cada vez que pasa por el bucle principal, el valor de index se incrementa por uno. Cuando el bucle principal regresa al principio, la primer accin que el programa hace es leer la siguiente nota , usando la variable index.
index = index + 1 LOOP

Su Turno Experimentando con Tempo y una Cancin Diferente

La longitud de tiempo que cada nota pierde se relaciona con el tempo. Usted puede cambiar el tempo ajustando la constante WholeNote. Si usted la incrementa a 2250, el tempo decrecer, y la cancin se reproducir ms despacio. Si usted disminuye la constante a 1750, el tempo aumentar y la cancin se reproducir ms rpido. Guarde el programa NotesAndDurations.bs2 con el nombre NotesAndDurationsYourTurn.bs2 Modifique el tempo del programa NotesAndDurationsYourTurn.bs2 ajustando el valor de WholeNote. Pruebe valores de 1500, 1750, 2000 y 2250. Ejecute el programa despus de cada modificacin, y elija cual se escucha mejor. Meter los datos musicales es mucho ms fcil cuando todo lo que tiene que hacer es grabar notas y duraciones. Estas son las primeras ocho notas de la Quinta Sinfona de Beethoven.
Notes DATA "G","G","G","e","P","F","F","F","D","Q"

Frequencia y Sonido Pgina 267

Durations DATA WholeNote CON

8, 8, 2000

8,

2,

8,

8,

8,

8,

Guarde su programa modificado como Beethovens Fifth.bs2 Reemplace las directivas Notes y Durations DATA y la declaracin de la constante WholeNote con el cdigo de arriba. Ejecuteel programa. Le parece familiar?
Agregando Caractersticas Musicales

Al Programa Ejemplo le acaba de introducir notas, duraciones y silencios. Tambin usa la duracin de una nota entera para determinar el tiempo. Estas son tres caractersticas adicionales que podemos agregar a un programa que toca msica; Tocar notas punteadas Determinar la duracin de la nota entero a partir del tempo Tocar notas de ms de una octava.

The termino punteadas se refiere a un punto usado en la partitura para indicar que una nota deber tocarse 1 veces ms de su duracin normal. Por ejemplo, una nota de un cuarto punteada deber durar la duracin de una nota de un cuarto ms un octavo de nota. Una nota de un medio punteada dura una mitad mas un cuarto de duracin. Usted puede agregar una tabla de datos que almacene notas punteadas s sin puntear. En este ejemplo, un cero significa una nota sin puntear, y un uno una nota punteada.
Dots DATA 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 0, 1, 0, 0, 0, 0,

Los programas que reproducen msica tpicamente expresan el tempo de una cancin en batidos por minuto. Esto es lo mismo que decir notas de un cuarto por minuto.
BeatsPerMin CON 200

La Figura 8-4 es una repeticin de la Figura 8-3. Esta muestra las 6ta. Y 7ta. Octavas del teclado de un piano. Estas son dos octavas que suenan con claridad cuando las toca la bocinapiezo. Este es un ejemplo de la directiva DATA que usted usar en la seccin Su Turno para tocar ms de una octava usando la directiva NotesDATA.
Octaves DATA 6, 6, 7, 6, 6, 6 6, 6, 6, 6, 6, 6, 7, 6,

Pgina 268 Qu es un Microcontrolador?

Figura 8-4 Teclas del Piano ms a la derecha y Sus Frecuencias.

Programa Ejemplo: MusicWithMoreFeatures.bs2

Este Programa Ejemlo toca las primeras notas de For Hes a Jolly Good Fellow. Todas las notas pertenecen a la misma (7.) octava, pero algunas de las notas estn punteadas. En la seccin Su Turno, usted intentar un ejemplo que usa notas se usa notas de ms de una octava y notas punteadas. Meta y corra el programa MusicWithMoreFeatures.bs2 Cuente las notas y vea si usted puede oir las notas punteadas (con 1 duracin)Tambin escuche las notas de la 7. Octava. Trate de cambiar una de estas notas a la 6. Octava. El cambio en el sonido de la msica es hermosamente drstico.
' Que es un Microcontrolador - MusicWithMoreFeatures.bs2 ' Toca el comienzo de He's a Jolly Good Fellow. '{$STAMP BS2} '{$PBASIC 2.5} DEBUG "Program Running!"

Frequencia y Sonido Pgina 269

Notes Octaves Durations Dots

DATA DATA DATA DATA

"C","E","E","E","D","E","F","E","E","D","D", "D","C","D","E","C","Q" 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 4, 2, 4, 4, 4, 4, 2, 2, 4, 2, 4, 4, 4, 4, 2, 2 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 320 Byte Nib Byte Word Word Nib Bit

BeatsPerMin index offset noteLetter noteFreq noteDuration noteOctave noteDot

CON VAR VAR VAR VAR VAR VAR VAR

wholeNote VAR Word wholeNote = 60000 / BeatsPerMin * 4 DO UNTIL noteLetter = "Q" READ Notes + index, noteLetter LOOKDOWN noteLetter, [ "C", "F", "b", "d", "g", "B", "D", "G", "P", "e", "a", "Q" "E", "A", ], offset

LOOKUP offset,

[ 4186, 4435, 4699, 4978, 5274, 5588, 5920, 6272, 6645, 7040, 7459, 7902, 0, 0 ], noteFreq

READ Octaves + index, noteOctave noteOctave = 8 - noteOctave noteFreq = noteFreq / (DCD noteOctave) READ Durations + index, noteDuration noteDuration = WholeNote / noteDuration READ Dots + index, noteDot IF noteDot = 1 THEN noteDuration = noteDuration * 3 / 2 FREQOUT 9, noteDuration, noteFreq index = index + 1 LOOP END

Pgina 270 Qu es un Microcontrolador?

Funcionamiento de MusicWithMoreFeatures.bs2

Abajo estn los datos musicales de la cancin completa. Para cada nota en la directiva NotesData, le corresponde una entrada en Octaves, Durations, y la directiva Dost DATA. Por ejemplo, la primera nota es una nota C de la 7. Octava, es un cuarto de nota y no est punteada. Este es otro ejemplo, el segundo de la ltima nota (no incluye salida) es una nota E, de la 7. Octava. Es mitad de nota y no esta punteada. Tambin hay una constante BeatPerMin que fija el tempo de la cancin.
Notes Octaves Durations Dots DATA DATA DATA DATA "C","E","E","E","D","E","F","E","E","D","D", "D","C","D","E","C","Q" 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 4, 2, 4, 4, 4, 4, 2, 2, 4, 2, 4, 4, 4, 4, 2, 2 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 320

BeatsPerMin

CON

En el Programa Ejemplo anterior, WholeNote era una constante. Este tiempo, es una variable que no retiene la duracin de una nota completa en milisegundos. Despus de calcular este valor, WholeNote se usar para determinar todas las duraciones de las otras notas, como se hizo en el programa anterior. Las variables index, offset, noteLetter, y noteDuration tambin se usaron en la misma manera como se usaron en el programa anterior. La variable noteFreq se maneja un poquito diferente ya que ahora tiene que ajustarse dependiendo de la octava en que se toca la nota. Se han agrefado las variables noteOctave y noteDot para manejar la octava y las caractersticas punteadas.
wholeNote index offset noteLetter noteFreq noteDuration noteOctave noteDot VAR VAR VAR VAR VAR VAR VAR VAR Word Byte Nib Byte Word Word Nib Bit

Frequencia y Sonido Pgina 271

La variable wholeNote se calcula usando BeatsPerMin. El tempo de la cancin se define en batidos por minuto, y el programa tiene que dividir BeatsPerMin entre 60000 ms, y luego multiplicarse por 4. El resultado da el valor correcto de una nota completa.
WholeNote = 60000/ BeatsPerMin * 4
Las Matemticas se ejecutan de izquierda a derecha. En el clculo de wholeNote = 60000/ beatsPerMin * 4, el BASIC Stamp primero calcula 60000/beatsPerMin. Luego el resultado lo multiplica por 4. Los parentesis se pueden usar para agrupar operaciones. Si usted desea dividir entre 4 beatsPerMin primero usted puede hacer esto: wholeNote = 60000/(beatsPerMin*4).

Todo esto es lo mismo como el programa anterior:


DO UNTIL noteLetter = "Q" READ Notes + index, noteLetter LOOKDOWN noteLetter, [ "C", "F", "b", "d", "g", "B", "D", "G", "P", "e", "a", "Q" "E", "A", ], offset

Ahora que las octavas estn el el mix, ha cambiado la parte de el cdigo que calcul la frecuencia de la nota. La Tabla de Valores de la instruccin LOOKUP contiene frecuencias de las notas desde la 8. Octava. Estos valores pueden dividirse entre 1 si usted desea tocar notas de la 8. Octava, Por 2 si usted desea tocar notas en la 7. Octava, por 4 si usted desea tocar notas en la 6. Octava, y por 8 si usted desea tocar notas en la 5. Octava. La divisi se efectua en seguida. Todo lo que hace la instruccin LOOKUP es colocar una nota de la 8. Octava en la variable noteFreq.
LOOKUP offset, [ 4186, 4435, 4699, 4978, 5274, 5588, 5920, 6272, 6645, 7040, 7459, 7902, 0, 0 ], noteFreq

Esta es la forma en que la variable noteFreq se ajusta para la octava correcta. Primero, la instruccin READ dimensiona el valor almacenado de la octava en Octaves DATA. Este pudiera ser un valor entre 5 y 8.

Pgina 272 Qu es un Microcontrolador?

READ Octaves + index, noteOctave

Dependiendo de la octava, deseamos dividir noteFreq por 1, 2, 4, o 8. Esto significa que el objetivo es es realmente dividir por 20 = 1, 21 = 2, 22 = 4, or 23 = 8. La siguiente frase de abajo toma el valor de noteOctave, el cual puede ser un valor entre 5 y 8 y resta ese valor de 8. Si noteOctave fue 8, ahora es 0. Si noteOctave fue 7 ahora es 1. Si noteOctave fue 6, ahora es 2, y si noteOctave fue 5, ahora es 3.
noteOctave = 8 noteOctave

Ahora, noteOctava es un valor que puede usarse como un exponente de 2, pero como elevamos a la potencia 2 en PBASIC? Una solucin es usando el operador DCD. DCD 0 es 1, DCD1 es 2, DCD 2 es 4 y DCD 3 es 8. Al dividir noteFreq por DCDnoteOctava significa que usted est dividiendo por 1, 2, 4, y 8, el cual divide noteFreq bajandolo al valor correcto. El resultado final es que noteFreq se fija en la octava correcta. Usted usar la Terminal Debug en la seccin Su Turno para poner ms atencin en su funcionamiento.
NoteFreq = noteFreq / (DCD noteOctave)
Como puedo ser experto en usar el operador DCD? Manteniendose aprendiendo y practicando. Cada vez que usted vea una nueva: instruccin, operador, o palabra clave que se usa en un ejemplo consulte el Manual BASIC Stamp. Lalo y trate de usarlo en un programa de su propio diseo. Adquiera el hbito de de leer peridicamente el Manual BASIC Stamp y trate de reducir los Programas Ejemplo. Esta es la mejor forma de familiarizarse con las diferentes instrucciones y operadores y su funcionamiento. Haciendo estas actividades, usted desarrollara el hbito de siempre agregarlos a la lista de herramientas de programacin que usted puede usar para resolver problemas.

Las primeras dos lneas del cdigo para determinar la duracin de la nota son casi iguales a las del cdigo del Programa Ejemplo anterior. Ahora, sin embargo, una nota pudiera estar punteada y esto significa que la duracin tendra que multiplicarse por 1.5. Se usa un instruccin READ para accesar valores en la EEPROM con la directiv Dots DATE. La frase IF...THEN se usa para multiplicar por 3 y dividir por 2 siempre y cuando el valor de la variable noteDot es 1.
READ Durations + index, noteDuration noteDuration = WholeNote / noteDuration READ Dots + index, noteDot IF noteDot = 1 THEN noteDuration = noteDuration * 3 / 2

Frequencia y Sonido Pgina 273

Matemtica de Numeros Enteros El BASIC Stamp no procesa automticamente un nmero como 1.5. Cuando hace matemticas solamente trabaja con nmeros enteros..., -5, -4, -3, -2, -1, 0, 1, 2, 3,... La mejor solucin para multiplicar por 1.5 es multiplicar por 3/2. Primero multiplica por 3 y luego divide por 2. Hay algunas formas para programar el BASIC Stamp para que maneja valores fraccionales. Usted puede programar el BASIC Stamp que use enteros para calcular la parte fraccinal de un nmero. Esto se presenta en la Guia del Estudiante de Circuitos Bsicos Analgicos y Digitales. Hay tambin dos operadores que hacen que los valores fraccionales sean faciles de trabajar, y estos son Multiplicacin Alta y Multiplicacin Middle. Estos se explican con detalla en la Gua del Estudiante de Sensores Aplicados y en el Manual de BASIC Stamp.

Lo restante de este programa ejemlo funciona de la misma forma que lo hizo en el Programa Ejemplo anterior:
FREQOUT 9, noteDuration, noteFreq index = index + 1 LOOP END

Su Turno Tocando una Cancin con Ms de Una Octava

El programa MusicWithMoreFeatures.bs2 us silencios, pero se mantuvo en una octava. La cancin Take Me Out of the Ball Game abajo mostrada toca la mayora de las notas en la 6. Octava. Hay dos notas en la 7. Octava y esto hace una gran diferencia en sus sonidos. Guarde una copia del programa MusicWithMoreFeaturesYourTurn.bs2 Modifique el programa reemplazando las cuatro directivas data y una declaracin de constante con lo siguiente:
Notes Octaves Durations Dots DATA DATA DATA DATA "C","C","A","G","E","G","D","P","C","C","A", "G","E","G","Q" 6, 7, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6 2, 4, 4, 4, 4, 2, 2, 4, 2, 4, 4, 4, 4, 2 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1 240

BeatsPerMin

CON

Ejecute el programa y verifique que suene correctamente.

Pgina 274 Qu es un Microcontrolador?

Las dos notas de la 7. Octava son esenciales para hacer que la cancin suene correctamente. Es interesante escuchar que sucede si estos 7 valores se cambian a 6. Trate de cambiar los dos valores 7 en la directiva Octaves DATA, para que sean 6. Recuerde que este cambio har que Take Me out to the Ball suene feo. Ejecute el programa y escuche el efecto de las octavas incorrectas de la cancin. Cambie la directiva Octaves DATA a su estado original. Ejecute el programa otra vez y escuche para ver si el sonido suena otra vez correctamente.

ACTIVIDAD #5: TONOS TELEFNICOS CON RTTTL


Los viejos telfonos celulares usaban para tocar tonos telefonicos un bocina piezo. Los tonos se bajaban de la web a una computadora y se cargaban de la computadora al telfono celular. En ese tiempo, en ese tiempo una de las formas ms usadas de composicin, grabacin y traslado de tono eran cadenas de texto con caracteres que describen cada nota en la cancin. Este es un ejemplo de cmo eran las primeras notas de la 5. Sinfona de Beethoven.
Beethoven5:d=8,o=7,b=125:g,g,g,2d#,p,f,f,f,2d

Este formato para almacnar datos nusicales se llama RTTTL {} que es Ringing Tone Text Transfer Language {} Lenguaje de Transferencia de Texto de Tonos Telfonicos. La gran caracterstica de los archivos RTTTL fue que eran ampliamente compartidos a traves de WWW. Alguno sitios tenan archivos RTTL disponibles para descargarlos libremente. Estos eran tambin programas de software libre que se podan usar para componer y emular archivos y despus descargarlos en su telfono celular. Las especificaciones de RTTTL todava se publican en lnea. El anexo C resume como se almacenan notas, duraciones, pausas, tempo y notas punteadas con archivos RTTTL. Esta actividad presenta algunas tcnicas de programacin con PBASIC que puede usar para reconocer diferentes elementos de texto. La habilidad para reconocer diferentes caracteres o grupos de caracteres tomar acciones basadas en lo que contienen esos caracteres es extraordinariamente til. De hecho, es la clave para convertir formato RTTTL (como la Quinta de Beethoven arriba mostrada) en msica. Al final de esta actividad, hay un Programa de Aplicacin que usted puede usar para tocar tonos con formato RTTTL.

Frequencia y Sonido Pgina 275

Seleccionando que Bloque de Cdigo Ejecutarse en Funcin de Caso por Caso

La frase SELECT...CASE es probablemente la mejor herramienta de programacin para reconocer caracteres o valores. Recuerde que esta es una de las herramientas usadas para convertir tonos de telfonos en notas musicales. En general, SELECT...CASE se usa para: Seleccionar una variable o expresin. Evaluar la variable o expresin en funcin de caso por caso. Ejecutar diferentes bloques de cdigo dependiendo en que caso es adecuado el valor de esa variable.
SELECT expression CASE condition(s) statement(s) { CASE ELSE statement(s) } ENDSELECT

Here is the syntax for SELECT...CASE:

Usted puede intentar los dos siguiente Programas Ejemplo para ver como funciona SELECT...CASE. El pograma SelectCaseWithValues.bs2 toma valores numricos que usted mete en la Terminal Debug y le indica el tamao mnimo de la variable que usted necesitar para mantener ese valor. El programa SelectCaseWithCharacters.bs2 le dice a usted en la Terminal Debug si usted meti una letra mayscula, minscula, un dgito o un signo de puntuacin. Recuerde usar la ventana de Transmisin en la Terminal Debug para mandar los caracteres que usted escribe en el BASIC Stamp. La Figura 8-5 muestra la ventanas de Transmisin y Recepcin.
Windowpanes Transmit Figura 8-5 Mandando Mensajes al BASIC Stamp Haga click en la ventana Transmitir (arriba) para meter el valor o carcter que usted desea transmitir a el BASIC Stamp..

Receive

Pgina 276 Qu es un Microcontrolador?

Programa Ejemplo: SelectCaseWithValues.bs2

Meta y ejecute el programa SelectCaseWithValues.bs2. En la Terminal Debu, asegurese que en la ventanita no esta marcada Echo Off. Haga click en la ventana Transmitir de la Terminal. Meta un valor entre 0 y 65535, y presione la tecla Enter. Qu sucede si usted mete un nmero mayor que 65535? Si usted mete el nmere 65536, el BASIC Stamp almacenar el nmero 0. Si usted mete el nmero 65537, el BASIC Stamp almacenar el nmero 1, y as sucesivamente. Cuando un nmero es demasiado grande para la variable en la que cabe, hay un desbordamiento (overflow). Use la Tabla 8-1 para verificar que el Programa Ejemplo hace las decisiones correctas respecto al tamao de los nmeros que introdujo en la Terminal Debug.
Table 8-1: Variable Types and Values They Can Store
Tipo de Variables Rango de Valores

Bit Nib Byte Word

0a1 0 a 15 0 a 255 0 a 65535

' Que es un Microcontrolador? - SelectCaseWithValues.bs2 ' Meta un valor y vea el tamao mnimo requerido de la variable para retenerlo. '{$STAMP BS2} '{$PBASIC 2.5} value PAUSE 1000 VAR Word

DEBUG "Enter a value from", CR, "0 to 65535: " DO DEBUGIN DEC value SELECT value CASE 0, 1 DEBUG "Bit", CR PAUSE 100

Frequencia y Sonido Pgina 277

CASE 2 TO 15 DEBUG "Nib (Nibble)", CR PAUSE 200 CASE 16 TO 255 DEBUG "Byte", CR PAUSE 300 CASE 256 TO 65535 DEBUG "Word", CR PAUSE 400 ENDSELECT DEBUG CR, "Meta otro valor: " LOOP

Funcionamiento del programa SelectCaseWithValues.bs2

Se declar una variable tamao word para mantener los valores metidos en la Terminal Debug.
value VAR Word

La instruccin DEBUGIN toma el nmero que usted metin y lo coloca en la variable value.
DEBUGIN DEC value

La frase SELECT escoge la variable value como uno de los casos a evaluar.
SELECT value

El primer caso es si la variable es igual a 1 o a 0. Si el valor es igual a uno esos nmeros, se ejecutan las instrucciones DEBUG y PAUSE que le siguen.
CASE 0, 1 DEBUG BIT, CR PAUSE 100

El segundo caso es cuando su valor es igual a cualquier nmero que va de 2 a15. Si es igual a uno de esos nmeros, se ejecutan las instrucciones DEBUG y PAUSE debajo de ellas.
CASE 2 to 15 DEBUG NIB (Nibble), CR PAUSE 200

Pgina 278 Qu es un Microcontrolador?

Cuando se han hecho todos los casos, la palabra clave ENDSELECT se usa para completar la instruccin SELECT...CASE.
ENDSELECT

Programa Ejemplo: SelectCaseWithCharacters.bs2

Este Programa Ejemplo evalua cada caracterque usted mete en la ventana Transmisin de la Terminal Debug. El programa puede reconocer caracteres maysculas y minsculas, digitos y algunos signos de puntuacin. Si usted mete un carcter que el programa no reconoce, le dir que lo intente otra ez (meta un carcter diferente). Meta y ejecute el programa SelectCaseWithCharacters.bs2. Asegurese que no est marcada la ventanita Echo Off. Haga click en la ventana Transmit de la Terminal Degug para colocar ah el cursor. Meta los caracteres en la ventana Transmit y observe los resultados.
' Que es un Microcontrolador? - SelectCaseWithCharacters.bs2 ' Programa que puede identificar algunos caracteres: mayusc/minusc, digito, puntuacion. '{$STAMP BS2} '{$PBASIC 2.5} character PAUSE 1000 VAR Byte

DEBUG "Meta un caracter: ", CR DO DEBUGIN character SELECT character CASE "A" TO "Z" DEBUG CR, "Mayusculas", CR CASE "a" TO "z" DEBUG CR, "Minusculas", CR CASE "0" TO "9" DEBUG CR, "Digito", CR CASE "!", "?", ".", "," DEBUG CR, "Puntuacion", CR CASE ELSE

Frequencia y Sonido Pgina 279

DEBUG CR, "Caracter no conocido.", CR, "Pruebe otro diferente." ENDSELECT DEBUG CR, "Meta otro caracter", CR LOOP

Funcionamiento de SelectCaseWithCharacters.bs2.

Cuando lo comparamos con el programa SelectCaseWithValues.bs2, este Programa Ejemplo tiene unas pocas diferencias. Primero, el nombre de la variable value se cambi por character, y su tamao cambi de word a byte. Esto se hace porque todos los caracteres en PBASIC son tamao byte. La instruccin SELECT escoge la variabe character para la evaluacin de caso por caso.
SELECT character

Las comillas se usan para decirle al Editor de BASIC Stamp que usted se est refiriendo a caracteres. Podemos tratar los siguientes grupos de caracteres y signos de puntuacin de la misma forma como un rango de nmeros, ya que el BASIC Stamp los reconoce por sus equivalentes numricos en ASCII. {}. Vea la ayuda de BASIC Stamp Editor.
SELECT character CASE "A" TO "Z" DEBUG CR, "Upper case", CR CASE "a" TO "z" DEBUG CR, "Lower case", CR CASE "0" TO "9" DEBUG CR, "Digit", CR CASE "!", "?", ".", "," DEBUG CR, "Punctuation", CR

Tambin hay una instruccin diferente CASE que no se us en el ejemplo anterior:


CASE ELSE DEBUG CR, "Character not known.", CR, "Try a different one."

Esta instruccin CASE le indica al bloque de cdigo SELECT que hacer si ninguno de los otros casos es verdadero. Usted puede usar este caso para trabajar metiendo un carcter por ejemplo % y $.

Pgina 280 Qu es un Microcontrolador?

Su Turno Seleccionando Caracteres Especiales.

Modifique la frase SELECT...CASE en el programa SelectCaseWithCharacters.bs2 de tal forma que muestre Carcter Especial cuando usted meta uno de estos caracteres: @, #, %, %, &, (), _ , o +.
Programa de Aplicacin para Tocar Tonos de Telfono RTTTL

Abajo est un archivo que contiene la informaci musical usada en el siguiente Programa Ejemplo. Hay cinco directivas adiconales RTTTL_File_DATA que usted puede probar en la seccin Su Turno. Este programa toca una cancin llamada Reveille {} que es el primer toque de trompeta de la maana tocada en campos militares. Quiz usted la ha escuchado en pelculas y shows de tv.
RTTTL_File DATA "Reveille:d=4,o=7,b=140:8g6,8c,16e,16c,8g6,8e,", "8c,16e,16c,8g6,8e,8c,16e,16c,8a6,8c,e,8c,8g6,", "8c,16e,16c,8g6,8e,8c,16e,16c,8g6,8e,8c,16e,", "16c,8g6,8e,c,p,8e,8e,8e,8e,g,8e,8c,8e,8c,8e,8c,", "e,8c,8e,8e,8e,8e,8e,g,8e,8c,8e,8c,8g6,8g6,c."

Programa Ejemplo: MicroMusicWithRtttl.bs2

Este Programa de Aplicacin es muy largo, y es una buena idea descargar la ltima version de la pgina www.parallax.com/go/WAM. Al descargar el programa y abrirlo con el Editor BASIC Stamp usted ahorrar una cantidad significativa de tiempo. La alternativa, es naturalmente meterlo a mano y depurar cuatro pgina de cdigo. Con el Editor de BASIC Stamp abra el archivo del programa que descarg MicroMusicWithRtttl.bs2 o a mano meta cuidadosamente el ejemplo que est abajo. Ejecute el programa, y verifique que reconoce la pieza Reveille bugle call. Vaya a la seccin Su Turno e intente algunas piezas ms (con directivas RTTTL_File DATA)
' Que es un Microcontrolador? - MicroMusicWithRtttl.bs2 ' Play Nokia RTTTL format ringtones using DATA. '{$STAMP BS2} '{$PBASIC 2.5} DEBUG "Programa ejecutandose!" ' -----[ Definiciones de E/S ]----------------------------------------------

Frequencia y Sonido Pgina 281

SpeakerPin

PIN

' Bocinapiezo conecteda a P9.

' -----[ Variables ]------------------------------------------------------counter char index noteLetter noteFreq noteOctave duration tempo default_d default_o default_b VAR VAR VAR VAR VAR VAR VAR VAR VAR VAR VAR Word Byte Word Byte Word Word Word Word Byte Byte Word ' Contador de Propsito General. ' Variable almacena caracteres. ' Index para apuntar a los datos. ' Amacena caracter de la note . ' Almacena frecuencia de la nota. ' Almacena octava de la nota. ' Almacena duracion de la nota. ' Almacena tempo. ' Almacena duracin default . ' Almacena octava default. ' Almacena batidos/min default.

' -----[ EEPROM Data ]----------------------------------------------------RTTTL_File DATA "Reveille:d=4,o=7,b=140:8g6,8c,16e,16c,8g6,8e,", "8c,16e,16c,8g6,8e,8c,16e,16c,8a6,8c,e,8c,8g6,", "8c,16e,16c,8g6,8e,8c,16e,16c,8g6,8e,8c,16e,", "16c,8g6,8e,c,p,8e,8e,8e,8e,g,8e,8c,8e,8c,8e,8c,", "e,8c,8e,8e,8e,8e,8e,g,8e,8c,8e,8c,8g6,8g6,c." ",q," "p", "a", "#", "b", "c", "#", "d", "#", "e", "f", "#", "g", "#" Word 0, Word 3520, Word 3729, Word 3951, Word 4186, Word 4435, Word 4699, Word 4978, Word 5274, Word 5588, Word 5920, Word 6272, Word 6645

Done Notes

DATA DATA

Octave8

DATA

' -----[ Initialization ]-------------------------------------------------counter = 0 GOSUB GOSUB GOSUB GOSUB GOSUB GOSUB FindEquals ProcessDuration FindEquals ProcessOctave FindEquals GetTempo ' Inicializa counter. ' Primero encuentra '=' en archivo. ' Obtiene duration default duration. ' Encuentra siguiente '='. 'Obtien Octava default. ' Encuentra el ltimo '='. ' Obtiene tempo default.

' -----[ Cdigo del Programa]------------------------------------------DO UNTIL char = "q" 'Est en bucle en 'q' en DATA.

Pgina 282 Qu es un Microcontrolador?

GOSUB GOSUB GOSUB GOSUB GOSUB LOOP END

ProcessDuration ProcessNote CheckForDot ProcessOctave PlayNote

' ' ' ' ' '

Obtiene duracin de la nota. Obtiene el valor del ndice de la nota. Si es punteada, duracion es 3/2. Obtiene la octava. Obtiene la frecuencia de la siguiente nota,. Fin del bucle principal.

' Fin del programa.

' -----[ Subroutina Encuentra Caracteres iguales ]----------------------FindEquals: ' Va a caracteres en ' Busca Archivo RTTTL DO ' '='. Incremeta contador READ RTTTL_File + counter, char ' hasta que encuentra'=' , y luego counter = counter + 1 ' regresa. LOOP UNTIL char = "=" RETURN ' ' ' ' ' ' -----[ Subroutine - Read Tempo from RTTTL Header ]---------------------Cada caracter del teclado tiene un slo nmero llamado valor ASCII . Los caracteres 0, 1, 2,...9 tienen valores ASCII de 48, 49, 50,...57. Usted puede convertir los caracteres que representam un dgito a a si valr restamdpes 48 a la variable que almacena el dgito. Puede examinar esto comparando DEBUG DEC 49 y DEBUG 49. ' Describe archivo RTTTL de Tempo. ' Convierte caracters a ' digitos restandoles 48 ' ' ' ' ' ' ' ' ' ' ' ' ' de cada caracterASCII valor. Multiplica Iterativamente cada dgito por 10 y si hay otro dgito, entonces lo suma el dgito ms reciente con uno de la columna. Por ejemplo, la cadena "120" es (1 X 10 X 10) + (2 X 10) + 0. The '1' primero se convierte, y luego se multiplica por 10. El '2' es convertido/agregado. 0 es convertido/agregado, hecho.

GetTempo: default_b = 0 DO READ RTTTL_File + counter, char IF char = ":" THEN default_b = default_b / 10 counter = counter + 1 EXIT ENDIF default_b = default_b + char - 48 counter = counter + 1 default_b = default_b * 10 LOOP UNTIL char = ":" RETURN

' -----[ Subroutine Busca Octava ]-----------------------------------ProcessOctave: READ RTTTL_File + counter, char SELECT char CASE "5" TO "8" noteOctave = char - "0" ' ' ' ' ' ' Puede o no puede haber Octava incluida en una nota dada porque cualquier nota que se toca en la octava default no se specifica la octava. Si se usa un caracter

Frequencia y Sonido Pgina 283

counter = counter + 1 CASE ELSE noteOctave = default_o ENDSELECT IF default_o = 0 THEN default_o = noteOctave ENDIF RETURN

' ' ' ' ' ' ' ' '

'5' '8' entonces se usa sta, usa default_o. Los Characteres se convierten a dgitos restando '0', que es lo mismo que restar 48.La primera vez se llama esta subrutina default_o e 0. Si 0, entonces fija default_o.

' -----[ Subroutina - Encuentra Index de Notea ]----------------------------ProcessNote: ' Fija el valor de index value de lookup ' de la frecuencia de nota basada em READ RTTTL_File + counter, char ' el caracter de la nota. Si 'p', SELECT char ' el ndice es 0. Si 'a' a 'g', CASE "p" ' lee los valores de los caracteres en index = 0 ' la Tabla DATA y su equivalente. counter = counter + 1 ' Graba el valor del ndce cuando CASE "a" TO "g" ' encuentra su equivalente. Si el siguiente FOR index = 1 TO 12 ' caracter es bemo (#), suma READ Notes + index, noteLetter ' 1 al valor del ndice para IF noteLetter = char THEN EXIT ' incrementar el ndice (y NEXT ' frecuencia) by 1 . counter = counter + 1 ' Igual que en otras subroutinas, READ RTTTL_File + counter, char ' incrementa el contador para SELECT char ' cada caracter que se procesa. CASE "#" index = index + 1 counter = counter + 1 ENDSELECT ENDSELECT RETURN ' -----[ Subroutina - Determina Duracin de la Nota ProcessDuration: ]--------------------

' Checa para ver si hay caracters de la ' forma 1, 2, 4, 8, 16 o 32. READ RTTTL_File + counter, char ' Si hay, entonce los convierte de ' Caracteres ASCII a un valor SELECT char ' restandoles 48. En el CASE "1", "2", "3", "4", "8" ' caso de 16 o 32, los multiplica duration = char - 48 ' por 10 y suma al siguiente counter = counter + 1 ' digito o a la columna de unos. READ RTTTL_File + counter, char SELECT char CASE "6", "2" duration = duration * 10 + char - 48 counter = counter + 1 ENDSELECT CASE ELSE ' Si no usa duracin, duration = default_d ' use default.

Pgina 284 Qu es un Microcontrolador?

ENDSELECT IF default_d <> 0 THEN duration = 60000/default_b/duration*3 ELSE default_d = duration ENDIF ' Si no define default_d ' (si default_d = 0), entonces ' fije default_d = a la duracin 'con d=#.

RETURN ' -----[ Subroutine Cheque Para '.' Indicando Duraci+on 1.5 CheckForDot: READ RTTTL_File + counter, char SELECT char CASE "." duration = duration * 3 / 2 counter = counter + 1 ENDSELECT RETURN ' ' ' ' ' '

]-----------

Cheque para indicacin punteada multiplique duracin por 3/2. Si hay punteada, multiplique por 3/2 e incremente contador, sino, no haga nada y regrese.

' -----[ Subrutina - Encuentra Comma and Play Note/Duration ]----------------PlayNote: ' ' ' ' ' Encuentra la ltima comma en la note actual. Luego, manda la frecuencia de la nota de los datos, y la toca, o hay silencio si frecuencia = 0.

READ RTTTL_File + counter, char SELECT char CASE "," counter = counter + 1 READ Octave8 + (index * 2), Word noteFreq noteOctave = 8 - noteOctave noteFreq = noteFreq / (DCD noteOctave) IF noteFreq = 0 THEN PAUSE duration ELSE FREQOUT SpeakerPin, duration, noteFreq ENDIF ENDSELECT RETURN

Funcionamiento del programa de MusicWithRtttl.bs2

Este Programa Ejemplo es de uso divertido, y muestra la clase de cdigo que usted ser capz de escribir con alguna prctica. Sin embargo, se incluy en este texto ms por diversin que por los conceptos de codificacin que emplea. Si usted examina el cdigo brevemente, usted podra observar que ya ha usado todas las instrucciones y operadores del programa excepto uno!

Frequencia y Sonido Pgina 285

Esta es una lista de los elementos en este programa que por ahora le deberan ser conocidos: Comentarios que le ayudan en la explicacin de su cdigo Declaraciones de Constantes y Variables. Declaraciones DATA Instrucciones READ Bloques IF...ELSE...ENDIF Bucles DO...LOOP con o sin WHILE y UNTIL Subrutinas con GOSUB, etiquetas y RETURN Bucles FOR...NEXT Instrucciones LOOKUP y LOOKDOWN Instrucciones FREQOUT y PAUSE Instrucciones SELECT...CASE EXIT es nuevo, pero este simplemente permite que el programa pueda salir de un bucle antes que termine, y frecuentementese usa con las frases IF...THEN.
Su Turno Canciones Diferentes

Trate de reemplazar la directiva RTTTL_File DATA en el programa MicroMusicWithRTTTL.bs2 con cada uno del los cinco archivos musicales de abajo.
Solamente una directiva RTTTL_File DATA a la vez! Asegurese de reemplazar, no aada, su nueva directiva RTTTL_File DATA.

Ejecute el programa MicroMusicWithRTTTL.bs2 para verificar cada archivo RTTTL.


RTTTL_File DATA "TwinkleTwinkle:d=4,o=7,b=120:c,c,g,g,a,a,2g,f,", "f,e,e,d,d,2c,g,g,f,f,e,e,2d,g,g,f,f,e,e,2d,c,c,", "g,g,a,a,2g,f,f,e,e,d,d,1c" "FrereJacques:d=4,o=7,b=125:c,d,e,c,c,d,e,c,e,f", ",2g,e,f,2g,8g,8a,8g,8f,e,c,8g,8a,8g,8f,e,c,c,g6", ",2c,c,g6,2c" "Beethoven5:d=8,o=7,b=125:g,g,g,2d#,p,f,f,f,2d" "ForHe'sAJollyGoodFellow:d=4,o=7,b=320:c,2e,e,e,", "d,e,2f.,2e,e,2d,d,d,c,d,2e.,2c,d,2e,e,e,d,e,2f,", "g,2a,a,g,g,g,2f,d,2c"

RTTTL_File

DATA

RTTTL_File RTTTL_File

DATA DATA

Pgina 286 Qu es un Microcontrolador?

RTTTL_File

DATA

"TakeMeOutToTheBallgame:d=4,o=7,b=225:2c6,c,a6,", "g6,e6,2g.6,2d6,p,2c6,c,a6,g6,e6,2g.6,g6,p,p,a6", ",g#6,a6,e6,f6,g6,a6,p,f6,2d6,p,2a6,a6,a6,b6,c,", "d,b6,a6,g6"

Descargando Archivos RTTTL. Hay archivos disponibles RTTTL para bajarse de varios sitios de WWW. Estos archivos son contribuciones de entusiastas de ring tones, muchos de ellos no son expertos musicales. Algunos tonos de telfono son muy buenos, otros no se pueden reconocer. Si usted desea descargar y tocar algunos archivos RTTTL, asegurese de quitar los espacios entre caracteres, luego inserte el archivo de texto entre las comillas.

RESUMEN
Este captulo introdujo tcnicas para hacer sonidos y tonos musicales con el BASIC Stamp y una bocina piezo elctrica. La instruccin FREQOUT se puede usar para mandar a una bocina piezo elctrica seales high/low para que hagan efectos de sonido y/o notas musicales. La instruccin FREQOUT tiene argumentos que controlan los pines de E/S a donde se manda la seal, la Duration del Tono y la Frecuencia del Tono (Freq1). Hay un argumento opcional Freq2 que puede utilizarse para tocar dos tonos al mismo tiempo. Los efectos de sonido pueden hacerse ajustando la frecuencia y duracin de los tonos y las pausas entre ellos. El valor de la frecuencia tambin puede barrerse en un rango de valores para crear una variedad de efectos. Hacer notas musicales tambin depende de la frecuencia, duracin y pausas. El valor del argumento Duration de la instruccin FREQOUT lo determina tempo de la cancin y la duracin de la nota (nota entera, media nota, un cuarto de nota, etc). El valor Freq1 de la nota lo determina la letra de la nota y la octava. Los descansos o silencios entre notas se usan para fijar la duracin de la instruccin PAUSE. Tocar canciones simples usando el BASIC Stamp puede hacerse con una secuencia de instrucciones FREQOUT, pero hay formas mejores para almacenar y retirar los datos musicales. Las directivas DATA con su etiquetas opcionales SYMBOL se usaron para almacenar valores de bytes sin usar prefijos, y valores tamao word usando prefijos Word. La instruccn READ se us para retirar valores almacenados por las directivas DATA. En los ejemplos de este captulo, el argumento Location de la instruccin DATA siempre us la etiqueta de la directiva opcional Symbol para diferenciar los diferentes tipos de datos. Algunas de las etiquetas Symbol que se usaron fueron Notes, Durations, Dots, y Octaves (notas, duraciones, puntos y octavas).

Frequencia y Sonido Pgina 287

Los datos musicales pueden almacenarse en formatos que tienden en si mismos para convertirse en una partitura. El estilo de los datos de la partitura puede convertirse en frecuencias usando las instrucciones LOOKUP y LOOKDOWN. Tambin pueden realizarse las operaciones matemticas en valores de variables para cambiar la octava de una nota dividiendo su frecuencia por una potencia de dos. Las operaciones matemticas tambin son tiles para la duracin de las notas conociendo el tempo o la duracin de la nota entera. Se introdujo SELECT...CASE como una forma de evaluar una variable en funcin de caso por caso. SELECT...CASE es particularmente til para examinar caracteres o nmeros cuando hay diferentes elecciones lo que podra ser la variable y diferentes elecciones para fijar las acciones que necesitan tomarse en funcin del valor de la variable. Un programa que convierte cadenas de caracteres que describen los tonos musicales de los telfonos celulares viejos (se llama RTTTL) se us para introducir programas grandes que hacen uso de todas las tcnicas de programacin presentadas en este texto. SELECT...CASE juega un papel importante en este programa porque se usa para examinar caracteres seleccionados en un archivo RTTTL en funcin de caso-porcaso.
Preguntas

1. Que origina que un sonido suene con un timbre alto? 2. Qu hace FREQOUT 15, 1000, 3000? Qu provoca que un tono suene con un timbre bajo? 3. Cmo puede usted modificar la instruccin FREQOUT de la pregunta 2 para que mande dos frecuencias al mismo tiempo? 4. Si usted golpea la tecla B6 de un piano, Qu frecuencia emite? 5. Cmo modifica usted una directiva DATA o una instruccin READ si desea almacenar y retirar valores word? 6. Puede usted tener ms de una directiva DATA? Si si puede, como puede usted indicarle a una instruccin READ que obtenga los datos de una o mas directiva DATA? 7. Si usted conoce la frecuencia de una nota en una octava, que tiene usted que hacer para que esa frecuencia toco en la octava mayor siguiente? 8. Qu hace SELECT...CASE?
Ejercicios

1. Modifique el tono Alarm... del programa ActionTones.bs2 para que la frecuencia del tono que toca aumente en 500 cada vez que el tono se repite.

Pgina 288 Qu es un Microcontrolador?

2. Explique como modifica el programa MusicWithMoreFeatures.bs2 para que muestre un mensaje de alerta en la Terminal Debug cada vez que se toca una nota punteada.
Proyectos

1. Construya un Generador de Tonos controlado con botones push. Si se presiona un botn push, la bocina debe emitir un beep de 2 kHz durante un 1/5 de segundo. Si se presiona el segundo botn push la bocina debe emitir una beep de 3 kHz durante un 1/10 de segundo.
Soluciones

Q1. Nuestro oido detecta cambios en la presin del aire como tonos. Un tono con timbre alto genera cambios ms rpidos en la presin del aire, un tono con timbre bajo genera cambios lentos en la presin del aire. Q2. FRECOUT 15, 1000, 3000 manda una seal de 3000 Hz que sale del pin P15 durante un segundo (1000 ms). El efecto de cada nmro es: 15 es el pin E/S 15; 1000 es la duracin del tono en milisegundos, o un segundo; 3000 es la frecuencia del tono, en hertz, entonces manda un tono de 3000 Hz. Q3. Use el argumento opcional Freq2. Para tocar 3000 Hz y digamos 2000 Hz, simplemente agregamos la segunda frecuencia a la instruccin despus de una coma:
FREQOUT 15, 1000, 3000, 2000

Q4. 1975-5 Hz, vea la Figura 8-3. Q5. Use el modificador opcional Word antes de cada dato. Q6. Si. Cada directiva DATA puede tener un diferente parmetro opciona Symbol. Para especificar de que directiva DATA se obtienen los datos, incluya el parmetro Symbol despues de cada palabra clave READ. Por ejemplo: READ Notes, noteLetter. En este ejemplo, Notes es el parmetro Symbol. Q7. Para obtener una nota en la siguiente octava mayor, multiplique la frecuencia por dos. Q8. SELECT...CASE selecciona una variable o expresin la evaluacin en funcin de caso por caso, y ejecuta diferentes bloques de cdigo dependiendo en cual caso se adeca el valor de la variable.

Frequencia y Sonido Pgina 289

E1. Este problema puede resolverse ya sea manualmente incrementando el valor de cada tono por 500 o utilizando el bucle FOR...NEXT con un valor STEP (paso) de 500. Utilizing FOR...NEXT loop: Manually increasing tone:

DEBUG "Increasing Alarm...",CR DEBUG "Increasing alarm...", CR PAUSE 100 PAUSE 100 FREQOUT 9, 500, 1500 FOR frequency = 1500 TO 3000 STEP 500 PAUSE 500 FREQOUT 9, 500, frequency FREQOUT 9, 500, 2000 PAUSE 500 PAUSE 500 NEXT FREQOUT 9, 500, 2500 PAUSE 500 FREQOUT 9, 500, 3000 PAUSE 500

E2. Modifique las lneas que identifican la nota punteada.


READ Dots + index, noteDot IF noteDot = 1 THEN noteDuration = noteDuration * 3 / 2

Agregue una instruccin DEBUG al bucle IF...THEN. No olvide ENDIF. Add a DEBUG command to the IF...THEN. Don't forget the ENDIF.
READ Dots + index, noteDot IF noteDot = 1 THEN noteDuration = noteDuration * 3 / 2 DEBUG "Nota Punteada!", CR ENDIF

P1. Use el circuito de bocina piezoelctrica de la Figrua 8-2; y los circuitos del botn push de la Figura 4-26.
' Que es unMicrocontrolador? - Ch8Prj01_PushButtonToneGenerator.bs2 ' P4 Presionado: 2 kHz beep for 1/5 second. 2 kHz = 2000 Hz. ' 1/5 s = 1000 / 5 ms = 200 ms ' P3 Presionado: 3 kHz beep for 1/10 second. 3 kHz = 3000 Hz. ' 1/10 s = 1000 / 10 ms = 100 ms '{$STAMP BS2} '{$PBASIC 2.5} DEBUG "Programa Ejecutandose!" DO IF (IN4 = 1) THEN FREQOUT 9, 200, 2000 ELSEIF (IN3 = 1) THEN

' 2000 Hz para 200 ms

Pgina 290 Qu es un Microcontrolador?

FREQOUT 9, 100, 3000 ENDIF LOOP

' 3000 Hz para 100 ms

Bloques de Construccin Electrnicos Pgina 291

Captulo 9: Bloques de Construccin Electrnicos


LOS PEQUEOS CHIPS NEGROS
No necesitas ms que ver a tu BASIC Stamp (ver Figura 9-1) para encontrar ejemplos de esos pequeos chips negros. Cada uno de estos chips tiene una funcin especial. El chip de arriba a la derecha es el regulador de voltaje. Este chip recibe el voltaje de la bateria y lo convierte casi exactamente en 5 V, que es lo que necesita el resto de los componentes del BASIC Stamp para trabajar correctamente. El chip arriba a la izquierda es el mdulo EEPROM del BASIC Stamp. Los programas en PBASIC se convierten en nmeros llamados simbolos (tokens) que se descargan en el BASIC Stamp. Estos tokens se almacenan en la EEPROM y usted puede verlos al hacer click en Run y luego en el mapa de memoria del Editor BASIC Stamp. El chip ms grande es el Chip Interpreter. Este es un microcontrolador programado con el Interpreter PBASIC que manda los tokens desde la EEPROM y luego interpreta la instruccin PBASIC que el token representa. Luego ejecuta la instruccin y manda el siguiente token y as sucesivament. A este proceso se le llama Manda y Ejecuta.

2K EEPROM stores PBASIC code and logged data

5V Regulator converts input voltage to regulated 5 volts Figura 9-1 Circuitos Integrados del BASIC Stamp

PBASIC Interpreter chip (a pre-programmed microcontroller)

Pgina 292 Qu es un Microcontrolador?

Las personas usan el trmino Circuito Integrado (CI) cuando se refieren a los pequeos chips negros. Realmente el circuito integrado es un pequeo chip de silicio que est contenido dentro de un plstico negro o una cajita de cermica. Dependiendo del chip puede tener cientos, miles o millones de transistores. Un transistor es el bloque de construccin bsico de los circuitos integrados, y usted tendr la oportunidad de experimentar con el transistor en este captulo. Otro componentes familiares diseados dentro del chip de silicio son los diodos, resistores y capacitores. Reflexione un momento en las actividades que ha trabajado en este libro. La lista incluye LEDs parpadeando, lectura de botones push, control de servos, lectura de mediciones de luz con potenciometro, control de indicadores, y produciendo sonidos. Pero esto es solamente el comienzo, esto es impresionante, considerando que usted puede combinar estas actividades para hacer circuitos ms complicados. El ncleo del sistema que hizo posible todas estas actividades, lo compone justamente los tres circuitos integrados que muestra la figura 9-1, y otros pocos componentes adicionales. Es justamente lo que mostramos lo poderoso que son los circuitos integrados cuando se disean para trabajar en conjunto.

EXPANDA SUS PROYECTOS CON CIRCUITOS INTEGRADOS PERIFERICOS


Existen miles de circuitos integrados diseados para usarse con microcontroladores. Algunas veces diferentes fabricantes de circuitos integrados hacen chips que realizan la misma funcin. Algunas veces cada caracterstica del chip son muy diferentes y otras veces son casi identicos pero uno podra costar menos que el otro. Cada uno de los miles de circuitos integrados diferentes como bloques de construccin para una variedad de diseos. Las compaias publican informacin del funcionamiento de cada uno de sus circuitos integrados en documentos que se llaman hojas de datos y est disponibles en la web. Estos fabricantes tambin publican notas de aplicacin que muestra como se usan sus circuitos integrados en una o formas tiles que facilitan el diseo de productos. Los fabricantes de circuitos integrados dan esta informacin con el deseo de que los ingenieros los usen para costruir sus ultimos juguetes o aplicaciones con sus chips. Si se venden miles de juguetes significa que la compaa vende miles de sus circuitos integrados. En este captulo, usted experimentar con el transistor y un circuito integrado de propsito especial llamado Potenciometro Digital. Como mencionamos antes, el transistor es el bloque de construccin bsico de los circuitos integrados. Tambin es el bloque de construccin bsico de muchos otros circuitos. El potenciometro digital tambin tiene una variedad de usos. Recuerde que en cada actividad que usted haya

Bloques de Construccin Electrnicos Pgina 293

realizado, hay probablente cientos de formas diferentes que usted podra usar en cada uno de estos circuitos integrados.

ACTIVIDAD #1: CONTROL DEL FLUJO DE CORRIENTE CON UN TRANSISTOR


En esta actividad, usted usar un transistor como una forma para controlar la corriente que pasa a travs de un LED. Usted puede usar un LED para monitorear la corriente ya que brilla ms cuando pasa ms corriente por l, y brilla menos cuando pasa menos corriente por l.
Presentado el Transistor

La Figura 9-2 muestra el smbolo esquemtico y dibujo del transistor 2N3904. Hay diferentes tipos de transistores. Uno llamado NPN, esto se refiere al tipo de material usado para fabricar el transistor y la forma como esos materiales forman capas en el silicio. La mejor manera de empezar a pensar en un transistor es imaginarse una vlvula que se usa para controlar la corriente. Diferentes transistores controlan cuanta corriente pasa por diferentes medios. Este transistor controla la cantidad de corriente que pasa al colector y regresa al emisor. Usa la cantidad de corriente permitida por la terminal de la base para controlar la corriente de C a E. con una pequea cantidad de corriente que permite la base, circula una corriente 416 veces mayor a travs del transistor de C a E.

C C B E

B 2N3904

Figura 9-2 Transistor 2N3904 {} Smbolo esquemtico y dibujo del transistor


E

Hoja de Datos de 2N3904 Anteriormente mencionamos, que los fabricantes de semiconductores publican documentos llamados hoja de datos de los dispositivos que fabrican. Estas hojas de datos contienen informacin que los ingenieros usan para disear el dispositivo en un producto. Por ejemplo para ver la hoja de datos de 2N3904 vaya a www.fairchildsemi.com. Meta 2N3904 en el rectngulo Search de la pgina principal de Fairchild Semiconductors y de click en Go. Uno de los resultados de bsqueda puede ser una liga a informacin del producto 2N3904. Sigala y busque la liga Datasheet. La mayora de los buscadores web muestran la hoja de datos y la abren con Adobe Acrobat Reader.

Pgina 294 Qu es un Microcontrolador?

Partes Del Circuito Transistor

Un transistor 2N3904 Dos Resistores de 100 K (caf-negro-amarillo) Un LED de cualquier color Un potenciometro de 10 K Tres alambres para puentes
Construyendo y verificando el Circuito Transistor

La Figura 9-3 muestra un circuito que usted puede usar para controlar manualmente la cantidad de corriente que el transistor permite que pase por el LED. Girando la perilla del potenciometro, el circuito suministrar diferentes cantidades de corriente a la base del transistor. Esto originar un cambio en la cantidad de corriente que el transistor permita que pase de colector a emisor. El LED le dar una clara indicacin de estos cambios brillando ms o brillando menos. Construya el Circuito Mostrado en la Figura 9-3 o Asegurse que el nodo (la terminal ms larga) del LED est conectado a Vdd. o Verifique dos veces el circuito del Transistor. Observe que la parte plana del transistor apunta a la derecha en el diagrama de alambrado. Gire la perilla del transistor y verifique que cambia el brillo en el LED conforme cambia la posicin de la terminal central del potenciometro.

Vdd

Vdd

LED

POT 10 k

100 k

Figura 9-3 Circuito del Transistor Controlado Manualmente con el Potenciometro

100 k

Vss

Vss

Bloques de Construccin Electrnicos Pgina 295

Su Turno Conmutando el Transistor en Apag/Enc

Si todo lo que usted desea es conmutar un transistor en Enc/Apag, usted puede usar el circuito mostrado en la Figura 9-4. Cuando el BASIC Stamp manda una seal high a ste circuito, el har que el transistor conduzca mucha corriente como cuando ajust el potenciometro para mximo brillo. Cuando el BASIC Stamp manda una seal low a este circuito hace que el transistor deje de conducir corriente, y el LED no emite luz.
Cul es la diferencia entre conectar esto y conectar un circuito LED a un pin E/S? Los pines del BASIC Stamp tienen limitaciones en la cantidad de corriente que pueden entregar. Tambin los transistores tienen limitaciones, pero estas son mucho mayores. En La Guia del Estudiante de Control de Procesos, un transistor se usa para excitar un pequeo ventilador de DC. Tambin se usa para proporcionar cantidades grandes de corriente a un resistor pequeo que se usa como elemento calefactor. Cualquiera de estas dos aplicaciones podran drenar mucha corriente que daaran rpidamente a el BASIC Stamp, pero el transistor se encarga de que esto no suceda.

Construya el Circuito que muestra la Figura 9-4 Escriba un programa que mande seales high y low a P8 dos veces cada segundo. Sugerencia: El programa LedOnOff.bs2 del Captulo 2 solamente necesita modificarse para mandar seales high/low a P8 en lugar de P14. Ejecute el programa y verifique que le da el control de Enc/Apag del LED.

Vdd

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

Vin

Vss

LED

P8

100 k

100 k

Figura 9-4 Circuito del BASIC Stamp que controla el Enc/Apag entregando corriente al LED con transistor.

Vss

Pgina 296 Qu es un Microcontrolador?

ACTIVIDAD #2: PRESENTANDO EL POTENCIOMETRO DIGITAL


En esta actividad el ajuste manual del potenciometro con un circuito integrado que es un potenciometro que se ajusta digitalmente. Luego, programar el BASIC Stamp para ajustar el potenciometro digital, y este ajustar el brillo del LED en forma semejante como lo hizo manualmente con el potenciometro en la actividad anterior.
Presentando el Potenciometro Digital

La Figura 9-5 muestra el mapa de pines del potenciometro digital que usar en esta actividad. El chip tiene 8 pines, cuatro por lado que estn espaciadas para insertarlo con facilidad en su tablilla (tienen 1/10 de pulgada de separacin). El fabricante coloca un punto de referencia en el empaque de plstico que le indica la diferencia entre el pin 1 y el pin 5. El punto de referencia es una pequeo medio crculo en el empaque del chip. Usted puede usar este punto como una referencia para los nmeros de los pines del chip. Los nmeros de los pines en el chip se cuentan arriba, en sentido inverso a las manecillas del reloj.
Sustitucin de partes. Para Parallax a veces es necesario sustituir una parte. La parte funcionar igual, pero su etiqueta puede ser diferente. Usted puede encontrar que el potenciometro digital incluido en las partes de su Kit Que es un Microcontrolador no est marcado con AD5220 pero tenga la seguridad que trabajara correctamente en esta actividad.

Reference Notch Figura 9-5 AD5220 Pin Map


1 CLK 2 U/D 3 A1 4 GND

Vdd 8 CS 7 B1 6 W1 5

Use the reference notch to make sure you have the AD5220 right-sideup when building it into your circuit on the breadboard.

AD5220

Bloques de Construccin Electrnicos Pgina 297

Este es un resumen de cada uno de los pines y funciones del CI AD5220 1. CLK: Es el pin que recibe los pulsos de reloj (seales low-high) que mueven la terminal W central. 2. U/D: Es el pin que recibe la seal high para hacer que la terminal W central se mueva hacia A1, la terminal W verdaderamente no se mueve hasta que un pulso (seal low-high-low) se manda al pin CLK. 3. A1: Es la terminal A del potencimetro. 4. GND: Es la conexin de tierra. La tierra en la Tablilla Board of Education y BASIC Stamp Home Work es la terminal Vss. 5. W1: Es la terminal W del potenciometro 6. B1: Es la terminal B del potenciometro 7. CS: Es la terminal Seleccin de Chip. Al aplicarle una seal high a este pin, el chip ignora todas las seales de control que mandadas a CLK y U/D. Al aplicarle una seal low a este chip, actua con cualquier seal de control que recibe. 8. Vdd: Se conecta a +5 V, que es Vdd en la tablilla Board of Education y BASIC Stamp HomeWork.
Hoja de Datos de AD5220: Para ver la hoja de datos de AD5220: vaya a la liga www.analog.com Meta AD5220 en el cuadro Search de la pgina principal de Analog Devices y dle click en el botn Search. D click en Data Sheets. D click en la liga que dice AD5220: Increment/Decrement Digital Potentiometer Datasheet

Partes del circuito Transistor Controlado con Potenciometro Digital

Un Transistor 2N3904 Dos Resistores de 100 K (caf-negro-amarillo) Un LED de cualquier color Un Potenciometro Digital AD5220 Diez alambres para puentes
Construyendo el Circuito del Potenciometro Digital

La Figura 9-6 muestra el circuito esquemtico con el potenciometro digital usado en lugar de un potenciometro manual, y la Figura 9-7 muestra el diagrama de alambrado del circuito. El BASIC Stamp puede controla el potenciometro digital mandando seales de control a los pines P5 y P6. Construya el circuito mostrado en la Figura 9-6 y 9-7.

Pgina 298 Qu es un Microcontrolador?

Vdd

Vdd Vdd

AD5220
P6 P5
1 2 3

CLK U/D A1

Vdd 8 CS 7 B1 6 W1 5

GND 4

100 k 100 k

Figura 9-6 Circuito Esquemtico del Transistor Controlado por Potenciometro Digital

Vss

Vss

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

Vin

Vss

Figura 9-7 Diagrama de alambrado de la Figura 9-6


AD5220

Programando Control del Potenciometro Digital

Imagine que la perilla del potenciometro manual del ejercicio anterior tiene 128 posiciones. Tambien imagine que el potenciometro est en la mitad de su rango de movimiento. Esto significa que usted puede girar la perilla en una direccin con 63 pasos y en la otra direccin con 64 pasos. Digamos que usted gira la perilla del potenciometro un paso en sentido de las manecillas del reloj. El LED brillar muy poquito. Esto sera lo mismo que mandar una seal high al pin U/D del AD5220 y mandar un puls o (high-low-high) al pin CLK.
HIGH 5 PULSOUT 6, 1

Bloques de Construccin Electrnicos Pgina 299

Ahora imagine que gira su potenciometro manual 3 pasos en sentido inverso de las manecillas del reloj. El LED brillar ms poquito. Esto sera lo mismo que mandar una seal low al pin U/D del AD5220 y mandar tres pulsos al pin CLK.
LOW 5 FOR counter = 1 TO 3 PULSOUT 6, 1 PAUSE 1 NEXT

En seguida imagine que usted gira el potenciometro totalmente en sentido de las manecillas del reloj. Esto es lo mismo que mandar una seal high a pin U/D del AD5220 mandando 65 pulsos a la terminal CLK. Y ahora el LED estar en su mximo brillo.
HIGH 5 FOR counter = 1 TO 65 PULSOUT 6, 1 PAUSE 1 NEXT

Finalmente, imagine que usted gira el potenciometro totalmente en sentido inverso de las manecillas del reloj. El LED no emitir luz. Esto es lo mismo que mandar una seal low a pin U/D mandando 128 pulsos a la terminal CLK.
LOW 5 FOR counter = 0 TO 127 PULSOUT 6, 1 PAUSE 1 NEXT

Programa Ejemplo: DigitalPotUpDown.bs2

Este programa ejemplo ajusta el potenciometro hacia arriba y hacia abajo, de un extremo de su rango al otro extremo, haciendo que el LED brille gradualmente y luego gradualmente no emita luz. Meta y ejecute el programa DigitalPotUpDown.bs2

Pgina 300 Qu es un Microcontrolador?

' Que es un Microcontroador? - DigitalPotUpDown.bs2 ' Barrido de valores digitales del pot. ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Programa Ejecutandose!" counter DO LOW 5 FOR counter = 0 TO 127 PULSOUT 6, 1 PAUSE 10 NEXT HIGH 5 FOR counter = 0 TO 127 PULSOUT 6, 1 PAUSE 10 NEXT LOOP VAR Byte

Su Turno Cambiando la Velocidad y Reduccin del Cdigo

Usted puede incrementar o disminuir la velocidad con la que el LED brilla y se apaga, cambie el argumento Duration de la instruccin PAUSE Modifique y ejecute el programa usando PAUSE 20 y observe la diferencia en velocidad con que el LED brilla y se apaga. Repita usando PAUSE 5. Para simplificar el programa usted puede usar una instruccin llamada TOGGLE. TOGGLE cambia el estado de un pin E/S del BASIC Stamp, si el pin E/S estaba mandando una seal high, TOGGLE hace que mande una seal low. Si el pin E/S estaba mandando una seal low, TOGGLE hace que mande una seal high. Guarde el programa DigitalPotUpDown.bs2 con el nombre DigitalPotUpDownWithToggle .bs2 Modifique el programa para que sea como el que mostramos abajo. Ejecute el programa y verifique que funciona de la misma forma como el programa DigitalPotUpDown.bs2 Compare el nmero de lneas de cdigo que necesito para hacer el mismo trabajo

Bloques de Construccin Electrnicos Pgina 301

La Ejecucin Fuera de la Memoria de Programa es un problema que algunas personas encuentran cuando los proyectos del BASIC Stamp son muy grandes y complicados. Al usar TOGGLE en lugar de dos bucles FOR...NEXT es exctamente un ejemplo de algunas tcnicas que pueden usarse para hacer el mismo trabajo con la mitad de lneas de cdigo.

' Qu es un Microcontrolador? - DigitalPotUpDownWithToggle.bs2 ' Barrido de Valores Digitales del Pot. ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Programa en Ejecucin!" counter LOW 5 DO FOR counter = 0 TO 127 PULSOUT 6,5 PAUSE 10 NEXT TOGGLE 5 LOOP VAR Byte

Mirando el Interior del Potenciometro Digital

La Figura 9-8 muestra un diagrama del interior del potenciometro AD5220. El AD5220 tiene 128 elementos resistivos cada uno de 78.125 (valor nominal). Los 128 elementos suman 10 K .
3 A1 Ad5220 pos. 127 1 CLK 2 U/D 5 7 CS W1 40 pos. 126 pos. 125 pos. 1 pos. 0 6 78 B1 78 78 78 78

Figura 9-8 Interior del AD5220

Pgina 302 Qu es un Microcontrolador?

Un valor nominal significa un valor nombrado. Elementos como los resistores y capacitores tipicamente tienen un valor nominal y una tolerancia. Cada uno de los elementos resistivos del AD5220 tienen un valor nominal de 78.125 con una tolerancia del 30 % (23.438 ) arriba y debajo de su valor nominal.

Entre cada uno de estos elemtos resistivos hay un interruptor llamado derivacin (tap). En verdad cada interruptor es un grupo de transistores que se conmutan Enc/Apag para permintir o no permitir el paso de corriente. Solamente uno de estos interruptores puede cerrarse al mismo tiempo. Si se cierra uno de los interruptores superiores (por ejemplo la posicin 125, 126 o 127) es como tener la perilla del potenciometro manual casi al extremo en el sentido de las manecillas del reloj. Si se cierra la posicin 0 o 1 es como tener la perilla del potenciometro manual casi al extremo en el sentido inverso de las manecillas del reloj. Imagine que se cierra la posicin 126. Si usted desea mandar la derivacin a 125, (la posicin 126 abierta y la posicin 125 cerrada), fije U/D en low y luego aplique un pulso a CLK. Si usted desea fijar la derivacin en la posicin 127 , fije U/D en high y aplique dos pulsos. Si usted desea regresar la derivacin a 1, fije U/D en low y aplique 126 pulsos. El siguiente Programa Ejemplo usa la Terminal Debug para preguntarle que derivacin desea usted cerrar. Luego decide si el pin U/D se fija en high o low y aplica el nmero correcto de pulsos para mover la derivacin de su posicin vieja a su posicin nueva. Con excepcin de Data EEPROM, el siguiente Programa Ejemplo tiene casi todas las secciones que usted normalmente espera encontrar en un programa de aplicacin. Ttulo Son comentarios que incluyen el nombre del archivo de un programa su descripcin las directivas del PBASIC. Data EEPROM Son declaraciones DATA que almacenan listas predefinidas de valores en porciones de la memoria EEPROM que no se necesitan para almacenar programa Definiciones I/O Son directivas PIN que le dan nombre a los pines I/O Constantes Son declaraciones CON que le dan valores a los nombres en el programa. Variables Son declaraciones VAR que le asignan nombres a porciones de la memoria RAM del BASIC Stamp para almacenar valores. Initialization- Es una rutina que para iniciar el programa con el pie derecho (correctamente). En el siguiente programa, la derivacin del potenciometro necesita fijarse en cero.

Bloques de Construccin Electrnicos Pgina 303

Main Es la rutina que maneja los principales trabajos que el programa tiene que hacer. Subrutinas Son segmentos de cdigo que hacen trabajos especficos, unos con otros o en este caso para la rutina principal.

Programa Ejemplo: TerminalControlledDigitalPot.bs2

Usted puede usar este Programa Ejemplo y la Terminal Debug para fijar la derivacin del potenciometro digital. Cambiando el ajuste de la derivacin del potenciometro digital, usted puede cambiar el brillo del LED conectado al transistor que controla el potenciometro digital La Figura 9-9 muestra un ejemplo para meter el valor 120 en la ventana de Transmisin de la Terminal Debug mientras corre el programa.Como el ajuste anterior del tap era 65, el LED brillar al doble cuando se haga el ajuste a 120.

Windowpanes Transmit

Figura 9-9 Mandando mensajes al BASIC Stamp Haga click en la ventana (superior) y meta los nmeros para el nuevo ajuste de la derivacin

Receive

Meta y ejecute el programa TerminalControlledDigitalPot.bs2 Asegrese que la ventanita Echo Off est sin marcar. Haga click en la ventana Transmit de la Terminal Debug para colocar ah el cursor. Meta valores entre 0 y 127 en la Terminal Debug. Asegurese de presionar la tecla Enter despues de haber escrito los dgitos.
' -----[ Title ]----------------------------------------------------------' Que es un Microcontrolador? - TerminalControlledDigitalPot.bs2 ' Actualiza la derivacin del pot digita en funcin de lo que mete en Terminal Debug. ' {$STAMP BS2} ' {$PBASIC 2.5} ' -----[ Datos en EEPROM ]-------------------------------------------------

Pgina 304 Qu es un Microcontrolador?

' -----[ Define E/S ]------------------------------------------------UdPin ClkPin PIN PIN 5 6 ' Fija valores de los pines E/S ' conectados a CLK y U/D.

' -----[ Constants ]------------------------------------------------------DelayPulses DelayReader CON CON 10 2000 ' Retardo para observar iliminacin del LED.

' -----[ Variables ]------------------------------------------------------counter oldTapSetting newTapSetting VAR VAR VAR Byte Byte Byte ' Contador para FOR...NEXT. 'Ajuste de Derivacin previa. 'Ajuste Nuevo de Derivacin

' -----[ Initialization ]-------------------------------------------------oldTapSetting = 0 newTapSetting = 0 LOW UdPin FOR counter = 0 TO 127 PULSOUT 6,5 PAUSE 1 NEXT PAUSE 1000 ' Initializa el nuevo y viejo ' ajustes de Derivacin a cero 'Fija Pin de Arriba/Abajo pin para bajar. 'el ajuste de Derivacin a su mnimo nivel.

' Espera 1 s antes del 1er mensaje

' -----[ Main Routine ]---------------------------------------------------DO GOSUB Get_New_Tap_Setting GOSUB Set_Ud_Pin GOSUB Pulse_Clk_pin LOOP ' -----[ Subroutines ]----------------------------------------------------Get_New_Tap_Setting: ' Muestra instrucciones y ' obtiene entrada de user del nuevo ' valor de ajuste de Derivacin. ' Indicador de usuario y obtener entrada. ' Fija pin Arriba/Abajo para up/down. ' Manda pulsos.

DEBUG CLS, "Tap setting is: ", DEC newTapSetting, CR, CR DEBUG "Enter new tap", CR, "setting (0 TO 127): " DEBUGIN DEC newTapSetting RETURN Set_Ud_Pin:

' Examina los valores nuevos y viejos de Derivacin 'para decidir el valor del pin de Arriba/Abajo . IF newTapSetting > oldTapSetting THEN ' Notifica usuario si valore HIGH UdPin ' son iguales.

Bloques de Construccin Electrnicos Pgina 305

oldTapSetting = oldTapSetting + 1 ' Incrementa el pin Pulse_Clk_pin. ELSEIF newTapSetting < oldTapSetting THEN LOW UdPin oldTapSetting = oldTapSetting - 1 ' Decrementa el pn Pulse_Clk_pin. ELSE DEBUG CR, "New and old settings", CR, "are the same, try ", CR, "again...", CR PAUSE DelayReader ' Da tiempo lectura para ver ENDIF ' Mensaje. RETURN Pulse_Clk_pin: ' Manda pulsos de valores nuevos y viejos. Recuerde que Set_Ud_Pin ' ajustaron el valor de ajuste viejo a ajuste nuevo en una unidad. ' Esto mantiene el bucle FOR...NEXT loop ejecutandose de una a muchas vees. FOR counter = oldTapSetting TO newTapSetting PULSOUT ClkPin, 1 PAUSE DelayPulses NEXT oldTapSetting = newTapSetting RETURN ' Mantiene el ajuste de viejos y nuevos ' valores de ajuste.

RESUMEN
Este captulo present los circuitos integrados y la forma como pueden usarse con el BASIC Stamp. Se us un transistor como vlvula de corriente, y un potenciometro digital para controlar la cantidad de corriente que pasa a travs del transistor. Al examinar los potenciometros digitales presentamos el punto de referencia y el mapa de pins como elementos importantes de chips electrnicos. Se analiz la funcin de cada uno de los pines del potenciometro digital y tambin la estructura interna del dispositivo. Se present la instruccin TOGGLE del PBASIC como medio para ahorrar memoria de programa.
Preguntas

1. Cules son los nombres de las terminales del transistor que usted us en este captulo? 2. Qu terminal controla en paso de corriente a travs del transistor? 3. Cmo puede usted incrementar o decrementar la corriente que pasa a travs del transistor?

Pgina 306 Qu es un Microcontrolador?

Ejercicio

1. Escriba un programa que ajuste la derivacin del potenciometro digital en la posicin, sin importar su posicin actual.
Proyecto Desafio Avanzado

1. Agregue un fototransistor a su proyecto y haga que el brillo del LED se ajuste con la cantidad de luz que sensa el fototransistor. Nota: la solucin es importante ya que demuestra una aproximacin til para escalar una entrada a otra salida.
Soluciones

Q1. Emistor, Base y Colector. Q2. La base controla la corriente que pasa a travs del transistor. Q3. Incremente o decremente la corriente permitida en la base del transistor. E1. Para resolver este ejercicio, vea el programa TerminalControlledDigitalPot.bs2. La primer actividad por hacer en la seccin Inicializacin, es fijar la derivacin en su posicin ms baja. Este codigo es precisamente lo que usa la solucin de abajo.
' Qu es un Microcontrolador? - Ch9Ex01_SetTapToZero.bs2 ' Gira el Potenciometro Digital hasta cero ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Program Running!"

UdPin ClkPin counter

PIN PIN VAR

5 6 Byte

' Fija los valores de los pines E/S ' Conectado a CLK y U/D. ' Contador de FOR...NEXT. ' Ajusta el pin Arriba/Abajo en Abajo. ' Fija Derivacin en valor Mnimo.

LOW UdPin FOR counter = 0 TO 128 PULSOUT ClkPin,5 PAUSE 1 NEXT

P1. Use el circuito del potenciometro digital que muestra la Figura 9-6 y el circuito fototransistor de la Figura 7-4. Esta solucin se obtiene con el programa TerminalControlledDigitalPot.bs2, e incorpora elementos del programa PhototransistorAnalogToBinary.bs2 del Captulo 7, Actividad # 5.

Bloques de Construccin Electrnicos Pgina 307

Tambien aplica algo de Algebra para resolver el problema de escalamiento que hace el rango de los valores que usted podra obtener de las mediciones de tiempo RC del fototransistor se ajusten al rango de 0 a 128 para el potenciometro digital. Recuerde que esta es una solucin del ejemplo, y no significa que sea la nica solucin o aproximacin. La llamada a la subrutina GOSUB Get_New_Tap_Setting del programa TerminalControlledDigitalPot.bs2 se reemplaza por otras dos llamadas a subrutina GOSUB Read_Phototransitos y GOSUB Scale:Phototransitor. De igual manera la subrutina Get_New_Tap-Setting se reemplaza por Read_Phototransistor y Scale_Phototransistor. La subrutina Read_Phototransistor es una versin de subrutina de las instrucciones que toma las mediciones de RCTIME del fototransistor y limita su rango de entrada en el programa PhototransistorAnalogToBinary.bs2. El pin, se han ajustado los nombres constantes y variables, y ha cambiado PAUSE 100 a PAUSE 10 para que muestre 10 veces por segundo, estos cambios se necesitaron para cargar el capacitor antes de tomar la medicin de RCTIME. Despus esta subrutina almacena un valor en la variable lightReadin, este valor tiene que estar entre ValMin (100) y ValMax (4000). Asegurese de verificar y ajustar estos valores para su propias condiciones de iluminacin. El problema que ahora tenemos es que solamente hay 128 ajustes de derivacin, y 3900 mediciones posibles de RCTIME del fototransistor. Para resolver este problema necesitamos dividir las mediciones RCTIME del fototransistor por algn valor para hacer que ajuste en el rango 0 a 127. Entonces, sabemos que necesitamos dividir el rango de valores de entrada por algun valor para hacer que quede entre 128 valores. Usaremos esta ecuacion Rango de Mediciones posibles del Fototransistor = 128 valores posibles de derivacin / Divisor de Escala Para resolver esto, multiplicamos ambos lados de la ecuacin por Divisor de Escala, y luego dividimos ambos lados por 128 valores posibles de derivacin Divisor de Escala = Rango de Mediciones posibles del Fototransistor 128 valores posibles de derivacin

Pgina 308 Qu es un Microcontrolador?

En el cdigo, el Rango de Mediciones posibles del transistor es ValMax ValMin, y scaleDivisor es una variable, y 128 es una constante. Entonces, este cdigo de la seccin Declaraciones e Inicializacin calcula el valor de scaleDivisor como
ScaleDivisor = (valMax - valMin) / 128

Despus de cada medicin RCTIME del fototransistor, la subrutina Scale_Phototransistor resta valMin de lightReading y luego divide la medicin por scaleDivisor. El mapa resultante de mediciones de entrada del rango de 100 a 4000 cambia al rango de 0 a 127 ajustes de salida del derivador.
Escala_Fototransistor LightReading = (lightReading - valMin) / scaleDivisor RETURN

Considerando que ValMin es 100 y ValMax es 400, la variable lightReading podra almacenar 3900 valores posibles. Qu sucede si el rango de entrada fue ValMin = 10,000 a ValMax = 13900? Cuando usted resta ValMin = 10000 todava hay 3900 valores posibles, y dividiendolo por scaleDivisor mapear correctamente las mediciones a los ajustes correspondientes de derivacin del potenciometro digital. Si su cdigo no rest primero ValMin, el valor escalado resultante podra estar completamente fuera del rango 0 a 128 del potenciometro digital.
' ' ' ' Qu es un Microcontrolador? Ch9Prj01_PhotoControlledDigitalPot.bs2 Actualiza el pot digital basado en lectura del fototransistor {$STAMP BS2} {$PBASIC 2.5} e Inicializacin]-----------------------------5 ' Fija valores de pine E/S 6 ' Conectado a CLK y U/D. 2 ' Fototransistor en pin P2 10 ' Retardo pora observar brillo de LED. 2000 4000 'Valor Max del fototransistor 100 ' Valor Min del fototransistor

' -----[ Declaraciones UdPin PIN ClkPin PIN PhotoPin PIN DelayPulses CON DelayReader CON valMax CON valMin CON

counter oldTapSetting newTapSetting lightReading scaleDivisor

VAR VAR VAR VAR VAR

Byte Byte Byte Word Word

' ' ' ' '

Contadorr para FOR...NEXT. Ajuste Previo de Derivacin. Ajuste Nuevo de Derivacin. lectura del fototransistor Para Escalamiento de valores

Bloques de Construccin Electrnicos Pgina 309

' Fije un valor that que pueda dividirse en RCTIME del fototransistor ' para escalarlo a un valor en el range de 0 a 128 scaleDivisor = (valMax - valMin) / 128 oldTapSetting = 0 newTapSetting = 0 LOW UdPin FOR counter = 0 TO 127 PULSOUT ClkPin,5 PAUSE 1 NEXT PAUSE 1000 ' Initialicee el nuevo y viejo ' ajuste del Derivacin a cero. ' Ajuste el pin Arri/Abaj en Abajo. ' Ajuste Derivacin a mnima posicin.

' Espera 1 sec. Antes 1er mensaje

' -----[ Rutina Principal ]---------------------------------------DO GOSUB Read_Phototransistor GOSUB Scale_Phototransistor newTapSetting = lightReading MIN 1 MAX 127 DEBUG HOME, DEC5 lightReading GOSUB Set_Ud_Pin ' Fije el pin Arri/Abajo en Abajo. GOSUB Pulse_Clk_pin ' Manda pulsos. LOOP ' -----[ Subrutinas ]------------------------------------------------Set_Ud_Pin: ' Examina viejos y nuevos IF newTapSetting > oldTapSetting THEN ' valores para decidir HIGH UdPin ELSEIF newTapSetting < oldTapSetting THEN ' el valor pin. Y LOW UdPin ' notificar al usuario si ENDIF ' los valores son iguales. RETURN Pulse_Clk_pin: ' Manda pulsos FOR counter = oldTapSetting TO newTapSetting ' de viejos PULSOUT ClkPin, 1 ' a nuevos valoress. PAUSE DelayPulses NEXT oldTapSetting = newTapSetting ' Mantiene el ajuste de nuevos RETURN 'y viejos valores. Read_Phototransistor: HIGH PhotoPin PAUSE 1 RCTIME PhotoPin, 1, lightReading lightReading = lightReading MAX valMax MIN valMin RETURN Scale_Phototransistor: lightReading = (lightReading - valMin) / scaleDivisor RETURN

Pgina 310 Qu es un Microcontrolador?

Realizando sus Propios Inventos Pgina 311

Captulo 10: Realizando sus Propios Inventos


Este texto le present las bases de integrar computadora y Tablilla en proyectos e inventos. Ahora usted tiene experiencia de los ingredientes de circuitos comunes en los productos cotidianos que incluyen: luces indicadoras, botones, servos, perillas, indicadores digitales, sensores de luz, bocinas, transistores, y otros circuitos integrados. Usted tambin tiene experiencia en conectar esos circuitos al controlador BASIC Stamp y escribir cdigos para verificar cada uno de ellos as como integrarlos en pequeas aplicaciones. En este punto, usted puede estar interesado en usar sus nuevas habilidades para inventar algo o para aprender ms o quiza ambas actividades. Usted ha aprendido que en este libro puede obtener un buen mtodo para hacer prototipos de una variedad amplia de inventos. En este captulo usaremos un sistema micro alarma como ejemplo de prototipo de un dispositivo familiar. A lo largo del camino cubriremos algunas tcnicas importantes de prototipos y habitos, que incluyen: Sugerencias para el desarrollo inicial de sus ideas de diseo e inventos. Un ejemplo de cmo construir y verificar cada subsistema del prototipo. Ejemplos de cmo incorporar cdigos de prueba en el cdigo del proyecto. Buenas prcticas en los comentarios de los cdigos y versiones de archivos. Ejemplos de partes familiares como xxx para dispositivos con interfaces similares. Sugerencias y trucos para obtener diseos pasados xx En donde buscar ms sobre proyectos Stamps en Clase y dispositivos interesantes.

APLIQUE LO QUE USTED YA CONOCE EN OTRAS PARTES Y COMPONENTES


El circuito botn push del captulo 3 es un ejemplo de un dispositivo de entrada muy simple que convierte una condicin fsica (ya sea que haya o no haya presionado el botn) en una seal high o low que el BASIC Stamp puede detectar y procesar. Usted tambin ha usado botones push en aplicaciones que controlan luces parpadeantes, posiciones de servos y tonos de bocina. Hay muchos sensores que detectan condiciones fsicas adems de las de contacto que tambin mandan seales que el pin E/S del BASIC Stamp puede monitorear. Unos pocos ejemplos incluyen sensores de gas, movimiento y sonido, y hay muchos muchos ms. Como ahora usted ya tiene experiencia haciendo que

Pgina 312 Qu es un Microcontrolador?

BASIC Stamp monitoree un circuito botn push, monitorear un sensor de sonido o movimiento es muy similar, y ciertamente el siguiente paso razonable. Otra tcnica de este libro fue medir el tiempo de descarga de RC con la instruccin RCTIME para sensar la posicin de una perilla de potenciometro y niveles de luz con un fototransistor y un LED. Estos ejemplo son la punta del iceberg en trminos de sensores que usted puede usar con un circuito RC Otros ejemplos son sensores de humedad, temperatura y presin que son solamente el principio.El indicador de luz LED proporciona otro ejemplo de circuito que es representativo de una variedad de circuitos con funciones diferentes. El circuito LED es controlado por un pin de salida de seales high/low del BASIC Stamp. Con circuitos de soporte adicional, usted puede usar las seales para mover motores elctricos hacia delante y hacia atrs, apagar y encender luces, apagar y encender elementos de calentamiento y mucho ms. Ahora, piense en otros dispositivos con lo que usted ya ha experimentado en este libro. Cada uno de ellos es justamente un ejemplo en una lista de dispositivos con interfaces similares que usted puede usar para hacer prototipos de varios inventos.

HACIENDO EL PROTOTIPO DE UN SISTEMA DE MICRO SEGURIDAD


En este captulo usaremos partes del kit Qu es un Microcontrolador? para hacer un prototipo de un muy pequeo sistema de seguridad que usted podra usar en un escritorio, caja de herramienas o closet, xx. Con este prototipo tambin investigaremos otras partes y componentes que usted podra sustituir en su sistema de seguridad para que funcione con los mismos principios de las partes conocidas de su kit, y podra darle a su sistema una gran funcionalidad. A partir de esto, veremos como encontrar, comprender, verificar e incorporar otros componentes con las que quiz usted nunca ha trabajado anteriormente.

ACTIVIDAD #1: DE LA IDEA A LA DEMONSTRACIN DEL CONCEPTO


Muchos productos empiezan con una idea, y en algunos casos un invento puede ser xx en otros casos es algo que resuelve un problema. Esta idea puede desarrollarse en conceptos con dibujos y especificaciones, y a veces un trabajo anterior de diseo. El siguiente paso es tipicamente desarrollar un prototipo que funcione. Quiz no sea bonito pero debe ser fiable para demostrar que un dispositivo puede trabajar de acuerdo con el concepto y especificacin. En las compaias donde se desarrollan productos, tipicamente se requiere la demostracin del concepto para obtener la aprobacin de la direccin y fondos para continuar desarrollando el producto.

Realizando sus Propios Inventos Pgina 313

Idea, Concepto y Descripcin Funcional

Digamos que usted tiene un gabinete con una puerta en una bisagra y charola, y necesita un muy pequeo sistema de alarma. O quiz usted desea disear un gabinete especial con seguridad interconstruida. La Figura 10-1 muestra un bosquejo de cmo un potenciometro y un contacto elctrico similar a un botn push puede usarse para detectar cuando la puerta o la charola est abierta. Este bosquejo es similar al concepto diagrama, el cual se enfoca solamente en mostrar lo que el producto o invento puede hacer.

Figura 10-1 Bosquejo de un gabinete con Microsistema de Seguridad

Es importante la descripcin funcional. Cuando usted tiene una mejor idea de lo que supone que su dispositivo tiene que hacer al principio, esto previene problemas que puedan suceder si usted tiene que redisear el dispositivo para adecuarle algo que usted no haba pensado. Los diseadores y las compaias que crean aparatos para clientes tienen que ser muy cuidadosos al examinar sus clientes para comprender lo que ellos esperan. En especial los dispositivos diseados para clientes, sus rediseos pueden ser muy costosos y consumir mucho tiempo. Este es un ejemplo de una muy breve descripcin funcional que podemos usar para nuestro sistema. Desarrolle un prototipo del circuito y programa de un microsistema de

Pgina 314 Qu es un Microcontrolador?

alarma que pueda monitorear una pequea puerta que tenga una bisagra y una charola. Si se activa una alarma deber sonar si la puerta o la charola se abren. Un LED de estado deber iluminarse verde cuando la alarma no est preparada, y rojo cuando se active. El prototipo controlado por computadora debe activarse y desactivarse. Se deber incorporar un retardo de tiempo despus que el dispositivo se ha activado para permitirle al usuario que cierre el gabinete.
Especificaciones

Adems de la descripcin funcional, las especificaciones tipicamente toman en consideracin muchos aspectos que la propuesta debe incluir: costo, consumo de energa, voltaje de alimentacin, dimensiones, peso, volumen de la bocina, y algunos otros detalles.
Diseo Inicial

Frecuentemente, el diseo inicial incluye tormenta de ideas para que las aproximaciones puedan resolver el problema de diseo, y muchas de estas ideas tienen que verificarse para saber si son verdaderamente realizables. Otras porciones del diseo podran involucrar partes normalizadas o comunes y practicas de diseo. Nuestra micro alamarma cae en esta categora, al menos en el prototipo. Se deber colocar un botn push en el gabinete para que cuando la charola se cierre presione al botn push. El LED bicolor es un indicador familiar y tambin la bocina piezo elctrica es una bien conocida generadora de ruido de alarma. Entonces, ahora conocemos los circuitos que necesitamos para nuestro prototipo gabine de micro seguridad: LED bicolor, botn push, potenciometro y bocina piezo. La siguiente es una lista de los capitulos y actividades donde presentamos cada uno de estos circuitos: LED bicolor: Captulo 2, Actividad #5 Botn push: Captulo 3, Actividad #2 Potenciometro: Captulo 5, Actividad #3 Bocina piezo: Captulo 8, Actividad #1

Lista de Partes de la Alarma

Juntando el material de cada capitulo estas forman en conjunto la lista de partes: Tres Resistores de 220 (rojo-rojo-caf) Una Bocina piezo Un Resistor 10 K (caf-negro-naranja) Un Capacitor de 0.01F Un LED bicolor , Un potenciometro de 10 K Un Botn push normalmente abierto , Cuatro Alambres para puentes

Realizando sus Propios Inventos Pgina 315

Esquemtico de la Alarma del Gabinete

El esquemtico de la Figura 10-2 est arreglado para darle a todos los componentes plenitud de espacio en la tablilla, de tal forma de no todos las conexiones de los pines estn en la misma forma como estuvieron el los captulos anteriores. Recuerde esto cuando descargue los ejemplos de los cdigos de los captulos anteriores para verificar cada uno de los circuitos.
Figura 10-2 Esquematico del Prototipo del Sistema de Alarma.

Pgina 316 Qu es un Microcontrolador?

ACTIVIDAD #2: CONSTRUYA Y VERIFIQUE INDIVIDUALMENTE CADA CIRCUITO


Siempre que le sea posible, verifique individualmente cada subsistema antes de tratar hacerlos trabajar en conjunto. Si usted sigue esta regla, sus proyectos funcionaran mejor y le ahorraran mucho tiempo al buscar fallas. Por ejemplo, si todos los circuitos se construyen sin verificar, las personas tienen una tendencia natural de emplear mucho tiempo examinando el cdigo y olvidan verificar cada circuito Entonces, el ahorro ms importante de tiempo con este procedimiento es asegurarse que no hay errores en el circuito que traten de hacerle pensar que son errores de cdigo.
Construyendo y Verificando Cada Circuito

Esta actividad demuestra concentrarse en subsistemas individuales construyendo y verificando cada circuito. Depues que se ha construido y verificado el circuito botn push, construimos y verificamos el circuito de la bocina. Despus repetimos este proceso con el potenciometro y el LED bicolor, los circuitos estarn correctos y listos para aplicarles el programa Busque el cdigo del Captulo 3, Actividad #2 para adaptarlo a las pruebas que muestra la Figura 10-2 del circuito botn push. Cambie las referencias de los pines de E/S para que trabajen con el circuito de la Figura 10-2 Verifique el cdigo y corrija cualquier error de programa o alambrado antes de continuar. Repita el mismo proceso para: o El circuito de la bocina piezo del Captulo 8, Actividad #1. o El circuito del potenciometro del Captulo 5, Actividad # 3 o El circuito del LED bicolor del Captulo 2, Actividad # 5 Asegurese de guardar cada programa modificado bajo un nuevo nombre, de preferencia en una carpeta separada , puede ser de nombre WAM Captulo 10
Su Turno Prueba del Sistema

Ahora que todos los circuitos estn verificados y todos los programas de prueba guardados en su PC, es hora de construir una prueba del sistema que muestre mensajes del circuito que se est verificando y ejecute su cdigo de prueba. Este es un ejercicio til porque los sistemas de alarma tpicos tienen auto-prueba y modos de diagnstico que utilizan todas las caracteristicas en un rutina.

Realizando sus Propios Inventos Pgina 317

Combine elementos en sus programas de prueba en un slo programa que: o Comience mostrando el color del LED bicolor en la Terminal Debug y actualice el color... o Luego muestre un mensaje que indique el sonido de la bocina piezo mientras emite beeps.. o Finalmente meta un bucle que reporte repetidamente el sensor botn push de la charola y el sensor de la puerta del potenciometro con bisagra que sense su status en la Terminal Debug. Pruebe y corrija cualquier error que exista antes de continuar.

ACTIVIDAD #3: ORGANICE LAS TAREAS DE SUS CDIGOS EN PIEZAS PEQUEAS


As como cada circuito debe construirse y verificarse antes de hacer que trabajen en conjunto, cada carcteristica del cdigo tambin debe desarrollarse y verificarse individualmente antes de incorporarlos en una aplicacin grande. El programa MicroAlarmProto(Dec-009).bs2 es un ejemplo de un programa pensado en verificar un concepto. La interface del usuario de la Terminal Debug est siempre presente y el sistema de alarma se repite correctamente a travs de sus varios modos o estados, incluyendo no preparada, preparando, preparada y accionada. En este punto, la subrutina Alarm-Arming al final del programa est todava en construccin. Contiene el cdigo que activa la alarma si se libera el botn push, y esto indica que la charola se ha abierto, pero todava no monitorea la puerta bisagrada. Se requiere agregar el cdigo del potenciometro a la subrutina Check-Sensors que mide su posicin. Si su posicin est ms alla de cierto umbral, por ejemplo 15, la variable state deber cambiar a activado. Todava hay dos tareas adicionales para cambiar el color del LED bicolor en verde cuando la alarma no est preparada, y en rojo cuando se active. Estas tareas faltantes estn indicadas por comentarios en el cdigo semejante a esto:
Hacer: ... Hacer: ... Hacer: valor de El LED bicolor verde El LED bicolor rojo Verificar si el potenciometro est arriba del umbral. Si est, entonces, disparar la alarma.

Meta a mano el programa MicroAlarmProto(Dev-009) en el Editor de BASIC Stamp (recomendado) o descarguelo de www.parallax.com/go/WAM y bralo con el editor del BASIC Stamp..

Pgina 318 Qu es un Microcontrolador?

Examine el programa y observe que cada subrutina es modular, y hace un trabajo especfico. Esto es parte de organizar las tareas de los cdigos en piezas pequeas. Si no recuerda como usar las ventanas Transmitir y Recibir de la Terminal Debug, repase la Figura 9-9. Cargue el programa MicroAlarmProto(Dev-009) en el BASIC Stamp y use la ventana Transmitir de la Terminal Debug para escribir el caracter A para activar la alarma, y D para desactivar la alarma. El sistema hace una pequea cuenta descendente antes de activar la alarma. Asegurese de mantener presionado el botn push antes de activar la alarma. Cuando la alarma est preparada, libere el botn. Usted tendr una oportunidad de desactivar la alarma despues de unos pocos segundo del tono de alarma. Active nuevamente la alarma. Esta vez escriba D para desactivar la alarma antes de liberar el botn.
' -----[ Title ]----------------------------------------------------------'Qu es un Microcontrolador? - MicroAlarmProto(Dev-009).bs2 'Prueba del Sistema de Alarma. ' {$STAMP BS2} ' {$PBASIC 2.5} ' Target = BASIC Stamp 2 ' Language = PBASIC 2.5

' -----[ Constantes ]------------------------------------------------------NotArmed CON 0 ' Estados del Sistema de Alarma Arming CON 1 Armed CON 3 Triggered CON 4 ' -----[ Variables ]------------------------------------------------------seconds VAR Word ' El contador almacena segundos counter VAR Byte ' Para el conteo char VAR Byte ' Almacena Caracteres state VAR Nib ' Almacena los estados del sistema de alarma ' -----[ Initializacin ]-------------------------------------------------PAUSE 1000 ' Espera 1 segundo DEBUG "Program running..." ' Muestra mensaje Ejecutandose state = NotArmed ' Inicializa los estados de alarma ' -----[ Rutine Principal ]-----------------------------------------------DO ' Bucle Principal SELECT state ' Evalua los estados caso por caso CASE NotArmed ' Si estado = no preparada ' To-do: bicolor LED green GOSUB Prompt_to_Arm ' Llama a Prompt_to_Arm CASE Arming ' Si estado = Preparando GOSUB Alarm_Arming ' Llama a Alarm_Arming CASE Armed ' Si estado = Armed

Realizando sus Propios Inventos Pgina 319

' To-do: bicolor LED red GOSUB Check_Sensors GOSUB Prompt_to_Disarm CASE Triggered GOSUB Alarm_Triggered ENDSELECT LOOP

' ' ' ' ' '

Llama Check_Sensors Llama Prompt_to_Disarm Si estado = Triggered Llama a Alarm_Triggered Hecho evaluaando caracter Repite el Bucle Principal

' =====[ Subrutinas ]===================================================== ' -----[ Subrutina - Prompt_To_Arm ]-------------------------------------Prompt_to_Arm: DEBUG CLS, "Type A to arm", CR, ">" ' Muestra Mensaje GOSUB Get_User_Input ' Llama Get_User_Input RETURN ' Regresa desde Prompt_to_Arm ' -----[ Subrutina - Prompt_to_Disarm ]----------------------------------Prompt_to_Disarm: DEBUG CLS, "Type D to disarm", CR, ">" ' Muestra Mensaje GOSUB Get_User_Input ' Llama a Get_User_Input RETURN ' Regresa desde Prompt_to_Disarm ' -----[ Subrutina - Alarm_Arming ]--------------------------------------Alarm_Arming: DEBUG CLS, "Close the cabinet.", ' Alerta usuario a asegurar gabinete CR, "You have" FOR seconds = 8 TO 0 ' Cuenta descendente segundos restantes DEBUG CRSRX, 9, DEC seconds, CLREOL, 'Muestra tiempo restante " seconds left..." PAUSE 1000 ' Espera 1 segundo NEXT ' Repite conteo descendente state = Armed ' Fija estado de variable en Preparada RETURN ' Retorna desde Alarm_Arming ' -----[ Subrutina - Alarm_Armed ]---------------------------------------Alarm_Armed: DO ' Bucle Preparada GOSUB Prompt_To_disarm ' Checa entrada de usuario GOSUB Check_Sensors ' Checa sensores LOOP UNTIL state <> Armed ' Repite hasta estado no preparada RETURN ' Regresea desde Alarm_Armed ' -----[ Subrutina - Alarm_Triggered ]-----------------------------------Alarm_Triggered: DO ' Bucle Alarma activada DEBUG CLS, "Alarm triggered!!!" ' Muestra precauciones FOR counter = 1 TO 15 ' Suenan 15 tono de alarma FREQOUT 6, 100, 4500 PAUSE 100 NEXT FOR seconds = 1 TO 6 ' 3 segundo.para que usuario desprepare IF state <> triggered THEN EXIT GOSUB Prompt_to_Disarm

Pgina 320 Qu es un Microcontrolador?

NEXT LOOP UNTIL state <> triggered

' Repite hasta despreparar' -

-[ Subrutina - Get_User_Input ]------------------------------------Get_User_Input: char = 0 ' Limpia variable char SERIN 16, 84, 500, Timeout_Label, [char] ' Espera 0.5 s. para GOSUB Process_Char ' Presionar Tecla, si presiona, llama: Process_Char Timeout_Label: ' Si no presiona , brinca Llama RETURN ' Regresa desde Get_User_Input ' -----[ Subrutina - Process_Char ]--------------------------------------Process_Char: SELECT char ' Evalua caracter caso por caso CASE "A", "a" ' Si "A" o "a" state = Arming ' Cambia estado var a Preparando CASE "D", "d" ' Si no "D" o "d" state = NotArmed ' Canbia estado var a No Preparada CASE ELSE ' si no, no "A", "a", "D", "d" DEBUG "Wrong character, try again" ' Muestra mensaje error PAUSE 2000 ' Da a usuario 2 sec.para leer ENDSELECT ' Hecho con evaluando caracter RETURN ' Regresa desde Process_Char ' -----[ Subrutina - Check_Sensors ]-------------------------------------Check_Sensors: ' To-do: Checa so Potenciometro esta arriba del valor de umbral. ' Si s, entonces, alarama disparada IF IN0 = 0 THEN state = Triggered ' Boton suetp? Dispara alarma. RETURN ' Regresa desde Check_Sensors

Nuevas Tcnicas de Codificacin en el Cdigo Ejemplo

De una mirada al bucle FOR...NEXT en la subrutina Alarm-Triggered:


FOR seconds = 1 TO 6 IF state <> triggered THEN EXIT GOSUB Prompt_to_Disarm NEXT

Si una llamada a la subrutina the Prompt_to_Disarm genera un cambio en la variable state. La frase IF...THEN usa EXIT para salir del bucle FOR...NEXT antes que se hagan 6 repeticiones. Aparece una nueva instruccin llamada SERIN en la subrutina Get_User_Input. Las instrucciones DEBUG Y DEBUGIN son versiones especiales de las instrucciones ms generales SEROUT y SERIN. Para ver como trabajan trate de reemplazar la instruccin DEBUG Programa Ejecutandose... con SEROUT 16, 84, [Programa Ejecutandose...]. A diferencia de las instruccins DEBUG y DEBUGIN, SEROUT y SERIN pueden

Realizando sus Propios Inventos Pgina 321

comunicarse con cualquier pin de E/S, o con el pin 16 para comunicarse con la Terminal Debug. Ellas tambin tienen cdigos especiales que usted puede usar para seleccionar la velocidad de los bauds que se describen en la Tablas de Velocidad de Bauds en las instrucciones SERIN y SEROUT que estn en el Manual BASIC Stamp.
Get_User_Input: char = 0 SERIN 16, 84, 500, Timeout_Label, [char] GOSUB Process_Char Timeout_Label: RETURN

La subrutina Get_User_Input empieza fijando la variable char a 0 para limpiar los valores anteriores que char podra haber almacenado. Luego, ejecuta la instruccin SERIN, con el valor opcional Timeout con valor de 500 ms (medio segundo), y su etiqueta opcional timeout con su valor asociado a Timeout_Labe1, que est dos lneas abajo. Si la instruccin SERIN recibe un carcter dentro de los 500 ms, almacena el resultado en la variable char y se mueve a la siguiente lnea y esta llama a la subrutina Process_Char. Si no recibe un carcter dentro de los 500 ms brinca a Timeout_Label que hace que brinque sobre la llamada a subrutina.
Su Turno Pasos Siguientes hacia la Demostracin del Concepto

Es tiempo de hacer que este programa funcione como Demostracin del Concepto. Guarde una copia del programa MicroAlarmProto(Dev-009).bs2 con el nonmbre MicroAlarmProto(Dev010).bs2. Use segmentos de sus cdigos verificados de la Actividad #2 para completar los tres Todo Verifique su cdigo modificado, y cuando est trabajando correctamente, guarde una copia del programa con el nombre MicroAlarmProto(Dev-011),bs2.

ACTIVIDAD #4: DOCUMENTE SU CDIGO!


El programa MicroAlarmProto(Dev-011).bs2 no est completamente terminado porque todava necesita alguna documentacin y otros cambios que hagan que el programa sea fcil de modificar y mantener. Por ejemplo, en la subrutina Alarm_Triggered, la instruccin FREQOUT, 6, 100, 4500 tiene algunos codificadores llamados nmeros misteriosos Los nmeros misteriosos son valores que se usan en una forma que el observador casual podra no ser capz de reconocer facilmente. Usted podra reescribir esta instruccin como FREQOUT,

Pgina 322 Qu es un Microcontrolador?

SpeakerPin, BeepTime, AlarmTone. Entonces usted puede agregar directivas Pin en la seccin arriba de la seccin Constants y declarar SpeakerPin PIN 6. Tambin en la seccin Constants, declare BeepTime CON 100, y AlarmTone CON 4500. En un programa dado cada constante no tiene que tener nombre. Recuerde que los nmeros misteriosos son valores que se usan en una forma que el observador casual podra no ser capz de reconocer facilmente. Otro ejemplo de la subrutina Alarm:Triggered es:
FOR seconds = 1 TO 6 ' 3 sec. for user to disarm.

Los nmeros 1 y 6 no son nmeros misteriosos porque es muy claro que hacen que el bucle FOR...NEXT se repita seis veces, y el comentario a su derecha indica que seis repeticiones duran por tres segundos. No todos los supervisores pueden estar de acuerdo con esta interpretacin, y algunos podran proclamar que el 1 y el 6 son nmeros misteriosos. Si usted termina de codificar su trabajo y a su jefe le gusta nombrar todas las constantes, eso es probablemente una buena idea para adjuntar a su estilo de codificacin requerido. Vaya al programa MicroAlarmProto(Dev-011).bs2 y documente los nmeros misteriosos declarando las directivas pin y las constantes, y sustituya sus nombres por nmeros en el programa. Una excepcin en las directivan PIN es el argumento Pin de la instruccin SERIN, que debe declararse como una constante y no como un pin. Los argumentos Pin son para pines E/S y su rango esde P0 a P15. El argumento 16 en el Pin hace que la instruccin SERIN escuche al pin SIN del mdulo BASIC Stamp que est conectado en el puerto de programacin de su tablilla. Otra rea donde la documentacin de MicroAlarmProto(Dec011).bs2 que todava est debil es en los comentarios que explican cada rutina y subrutina. Cada subrutina deber tener comentarios que expliquen lo que hace, las variables de las que depende para hacer su trabajo, y cualquier variables que la subrutina use para almacenar resultados antes de que regrese (RETURN). Este es un ejemplo de una buena documentacin agregada al principio de la subrutina Process_Char.
' -----[ Subroutine - Process_Char ]--------------------------' ' Actualiza el estado de variable basedo en el contenido de la ' variable char. Si char contiene "A" o "a", la constante Armed ' se almacena en state. Si char contine "D" or "d",

Realizando sus Propios Inventos Pgina 323

' la constante NotArmed se almacena en state. ' Process_Char: '... aqui se omite el cdigo RETURN ' Regresa de...

Actualice las descripciones entre los ttulos de la subrutina y sus etiquetas, y tambin reptalo para la rutina principal. Cuando lo haya hecho, guarde una copia de su cdigo con el nombre MicroAlarmProofOfConcept(v1.0).bs2
Guarde Copias e Incremente el Nmero de Version despus de Cada Cambio Pequeo

Asegurese de continuar guardando copie de su cdigo con cada ajuste pequeo. Esto facilita tomar tomar pequeos pasos hacia atrs para trabar su cdigo si sus cambios le causan errores. Por ejemplo, antes de su siguiente modificacin, guarde el archivo como MicroAlarmProofOfConcept(v 1.01) o quiz v1.01. Cuando su prxima caracteristica quede completamente implementada escoja un paso razonable de su versin. Si es una revisin pequea , trate con v1.1; si es una revisin grande llevela a v2.0

ACTIVIDAD #5: DELE A SU APLICACIN MARAVILLOSA NUEVAS FUNCIONES


Como mencionamos anteriormente, cada circuito con el que usted ha trabajado en este texto es realmente un ejemplo de un grupo de componentes y mdulos con los que el BASIC Stamp puede interactuar en la misma forma. La Figura 10-3 muestra algunas substituciones de partes que usted podra hacer para convertir su actual minisistema de seguridad en uno que proteja un objeto localizado en la abertura. Este sistema modificado puede detectar movimientos en el cuarto, y tambien proteger si alguien levanta un objeto que usted desea proteger. El botn push que genera salidas high-low: reemplacelo por un Sensor de Movimiento PIR El potenciometro: Resistor Variable reemplacelo con un Sensor FlexiForce Sensor

El sensor PIR detecta cambios de patrones de luz pasiva infrarroja en el rea circundante y manda una seal high para indicar que ha detectado movimiento, o una seal low para indicar que no hay movimiento. La resistencia del sensor FlexiForce vara con la fuerza aplicada en en punto redondo que est en un extremo (por ejemplo un objeto arriba de l) y puede medirse el tiempo en un circuito RC utilizando la instruccin RCTIME.

Pgina 324 Qu es un Microcontrolador?

Figura 10-3 Sensores para actualizar nuestro Mini Sistema de Alarma

PIR Motion Sensor

FlexiForce Sensor

Vaya a www.parallax.com y escriba motion detection en el campo Search, y haga click en el botn Go Busque Sensor PIR en resultados de bsqueda y vaya a su pgina de productos. Descargue la documentacin (en PDF) del Sensor PIR y opcionalmente vea el video de Sensor PIR. El PDF estar en la pgina seccin de Descargas. Lea las explicaciones de la documentacin, el esquemtico y el cdigo ejemplo PIR_Simple.bs2. Podra usted sustituir este sensor por el botn push? Regrese a resultados de bsqueda (o regrese a la pgina principal de Parallax) y escriba pressure en el campo Search y siga la liga del sensor FlexiForce. Encuentre la documentacin de FlexiForce y el Cdigo Fuente (zip). En un archivo descomprimido, abra y lea la documentacin, esquemtico y el cdigo fuente de FlexiForceSimple.bs2. Podra usted sustituir este sensor por el potenciometro?
El ejemplo paso a paso que demuestra como mejorar tanto en esta como en la siguiente actividad que puede usted incorporar en la aplicacin de su Micro Alarma, est en Stamps in Class MiniProyectos en la liga www.parallax.com/Education

ACTIVIDAD #6: COMO RESOLVER DISEOS DIFICILES


Ahora que sabe con certeza que hacer con Qu es un Microcontrolador? uno de los pasos ms importantes siguientes que puede tomar es encontrar respuestas a tareas que no sabe como resolver con su microcontrolador. Estos son los pasos generales: Paso 1: Busque componentes o circuitos que podran resolver su problema.

Realizando sus Propios Inventos Pgina 325

Paso 2:

Paso 3:

Lea sobre los componentes o circuitos, y encuentre como funcionan. Ponga atencin especial en como necesitara el BASIC Stamp interactuar con los componentes/circuitos. Verifique para saber si el cdigo ejemplo es adecuado para el circuito o componente. Esto le permitir con facilidad incorporarloen su aplicacin.

Digamos que el siguiente paso en su proyecto es mostrar el status del sistema sin conexin a la computadora. Este es un ejemplo de cmo podra encontrar y evaluar un componente para su aplicacin. (Paso 1) Vaya a www.parallax.com y escriba display en el campo Search. Desde la pgina principal usted podra necesitar hacer click en el botn Go en lugar de solamente presionar Enter. Ve a las pginas de producto de los varios tipos de resultados en la bsqueda y mira si puedes encontrar uno que sea relativamente barato y capz de mostrar un par de lneas de texto. Si te decidiste por la LCD 2x16 Serial de Parallax como muestra la Figura 10-4 es una buena eleccin y ests en el camino correcto.

Figura 10-4 Parallax 2x16 Serial LCD

(Paso 2) Ve a pgina de productors LCD 2x16 Serial de Parallax. Si an no lo haces, lee la descripcin del producto. Luego encuentra la liga al PDF de la documentacin de la LCD 2x16 Serial de Parallax. Lo encontrars en la pgina Descargas y Seccin de Recursos, probablemente marcada Parallax Serial 2x16 LDC Documentation v2.0 (pdf). El nmero de la versin podra ser mayor por el tiempo que ha pasado. (Paso 3) Verifica por ejemplo el cdigo en la documentacin en PDF de Parallax Serial 2x16 LCD as como tambin en las ligas del producto en Descargas y Seccin de Recursos de la pgina web. Busca un bonito, corto y simple programa ejemplo que muestra un mensaje de texto porque esto generalmente proporciona un un punto de inicio.

Pgina 326 Qu es un Microcontrolador?

Despus de la breve introduccin a SERIN y SEROUT del programa ejemplo que siguieron en este captulo, el cdigo de ejemplo de la LCD Serial de Parallax, entonces la instruccin SEROUT te parecer ms familiar.
Si usted sigue a los Sensores Inteligentes y la liga de Aplicaciones, usted puede bajar el libro Sensores Inteligentes y Aplicacines que tiene un captulo entero relacionado con el control de la LCD con su BASIC Stamp 2.

Tres Ejemplos de Muchos Ms.

Los sensores PIR y FlexiForce y el LDC en Serie Parallax, son tres ejemplos de mdulos y componentes que usted puede usar para incrementar grandemente la funcionalidad de su prototipo. Estos tres son un granito en arena la playa de lo que existe disponible. La Figura 10-5 muestra ms mdulos y componentes y todava representan solamente una pequeo muestra. Los ejemplos en la figura son (a) modulos de RF para comunicacin por radio, (b) gyro para detectar velocidades de rotacin, (c) brjulas para encontrar direccin, (d) sensor de vibracin, (e) acelerometro para detectar inclinacin y cambios de velocidad, (f) sensor ultrasonico para detectar distancias, (g) sensor de intensidad de luz, (h) controlador servo, (i) controladores de motores DC, (j) arreglo Darlington para excitar bobina de motores paso a paso, y (k) motores paso a paso. Usted puede encontrar cualquiera de estos dos dispositivos en www.parallax.com con la clave bsqueda. Por ejemplo, para encontrar ms acerca de (f) meta sensor ultrasonico en la pgina principal de Parallax, en el campo Search y de click en el botn Go.

Realizando sus Propios Inventos Pgina 327

Figura 10-5 Ms ejemplos de Modulos y Accesorios


Communication b a Sensors e h j Motor Control

k i d g

Su Turno Investigando Ms Recursos

Si usted tiene un proyecto en mente y necesita encontrar un circuito o un cdigo para soportar una de las caracteristicas de su proyecto, el procedimiento de bsqueda antes analizado le proporciona un buen punto de inicio, Pero solamente si se encuentra en la pginas de productos de www.parallax,com y ah hay un nmero de preguntas de diseo que las pgina del producto no resuelven necesariamente. Afortunadamente, hay muchos recursos, incluyendo: Libros en PDF Stamp in Class Documentacin en PDF de Productos Parallax Columnas de BASIC Stam en la Revista Nuts and Volts. Respuestas en preguntas y artculos en forums.parallax.com Artculos de BASIC Stamp publicados en Internet

Cuando usted est buscando componentes e informacin acerca de cmo usarlos con el BASIC Stamp, esto cae en la categoria de application information. Cuando est buscando informacin de aplicacin, es mejor empezar con el sitio web del fabricante, y luego expandir la bsqueda que incluyan los forums, y si usted todava no ha encontrado

Pgina 328 Qu es un Microcontrolador?

una buena solucin expandala ms para que incluya la WWW. La Figura 10-6 muestra un ejemplo de Google las palabras claves de bsqueda son infrarojo y remoto en documentos PDF y pginas de productos en www.parallax.com. Aqu la parte importante es que Google busca documentos PDF en lugar de slo pginas de productos. Asegurese que no hay espacios en el sitio: www.parallax.com

Figura 10-6 Buscador Google del sitio www.parallax.com

Usted puede moficicar la bsqueda para incluir preguntas y respuestas en los forum de soporte de Parallax cambiando www a forums como esto:
infrared remote site: forums.parallax.com

Esto busca todas las preguntas, respuestas y artculos cortos que contengan las palabras infrarojo y remoto en los forums parallax.com. Para encontrar una aplicacin especfica del BASIC Stamp, cambie su bsqueda en los terminos de abajo. Asegurese que las palabras BASIC Stamp estn con comillas porque esto filtrara resultados de colecciones por correo. Este es un resumen de la secuencia de busqueda en Google para BASIC Stamp infrared remote Sitio remoto infrarojo: www.parallax.com o Busquedas para los trminos infrarojo y remoto en PDF y pgina de productro en www.parallax.com Sitio remoto infrarojo: forum parallax.com o Busquedas para los trminos infrarojo y remoto en discusiones en forums parallax.com Remoto Infrarojo BASIC Stamp o Busquedas en la web para las palabras infrarojo y remoto en la misma pgina o PDF con la frase BASIC Stamp Digamos que el siguiente paso para su proyecto Micro Alarma es un teclado, pero la documentacin y ejemplo en una sola bsqueda en pgina de productos en parallax.com lo llevo a ejemplos de circuitos y cdigos esparcidos. Entonces hagamos las busquedas

Realizando sus Propios Inventos Pgina 329

con ms orden, digamos que una busqueda en Google en el sitio de Parallax para todas las referencias a teclados. Recuerde qe Google incluye documentos PDF. Vaya a www.google.com Escriba teclado site: www.parallax.com en el campo de Busqueda y luego presione Enter. Los resultados pueden requerir algo de paciencia y persistencia para pasar, y muchas pginas de resultados. Hay generalmente suficiente de un parrafo de cada resultado de bsqueda para tener algn contexto de cada liga. Esto le dar alguna idea de cuales brincar y cuales mirar con atencin. Despus de unas pgina, usted podra encontrar y seguir una liga de Partes del Kit de IR Remoto como lo muestra la Figura 10-7. Esto podra no ser solucin a lo que usted esperaba, pero despus de examinar el precio, la documentacin, y el cdigo ejemplo, podra tener mucho potencial para reforzar su sistema de seguridad con teclado.
Figura 10-7 Partes del Kit de IR Remoto

Si despues de todo esto, usted todava no ha encontrado la informacin que necesita, es tiempo de preguntar en los forums parallax.com. Cuando usted les manda una pregunta, la vern expertos en una variedad de disciplinas, maestros, hobistas y estudiantes. La habilidad de los expertos de los Forums Parallax tendrn la capacidad de ayudarle a superar los problemas de su diseo difcil.
Memoria del Procesador y Rapidez de los Diseos Difciles

En algunos casos, los programas para proyectos grandes pueden crecer mucho y exceder la memoria de programa del BASIS Stamp. Este diseo difcil puede algunas veces resolverse reescribiendo el cdigo que haga el mismo trabajo con menos instrucciones. Otra opcin es elegir un modelo de BASIC Stamp con memoria de programa ms grande. En otros casos, el proyecto podra involucrar almacenar ms valores de variables que el BASIC Stamp puede guardar. Tambin hay modelos de BASIC Stamp 2 con caracterstica de borrado para los valores de variables RAM. Otros proyectos podran

Pgina 330 Qu es un Microcontrolador?

necesitar hacer ms tareas en menor tiempo para las que BASIC Stamp fue diseado, algunos modelos de BASIC Stamp estn diseados con velocidades rpidas de procesamiento. La Figura 10-8 muestra todos los diferentes modelos del BASIC Stamp. Para detalles de cada uno vaya a Comparacin de Modulos BASIC Stamp en la liga www.parallax.com/basicstamp.
Figura 10-8 Linea completa de Modelos BASIC Stamp

From left: BS1, BS2, BS2e, BS2sx, BS2p24, BS2p40, BS2pe, BS2px

BS1: BS2: BS2e: BS2sx: BS2p24:

BS2p40: BS2pe: BS2px:

Confiable y Capz, perfecto para proyectos pequeos o espacios limitados. Ideal para principiantes con muchos recursos de code; es el ncleo de Stamps en programas en Clase.. Perfecto usuarios BS2 que necesitan mas espacio de programa y variables. Soporta el conjunto de instrucciones the BS2 con ms variable y espacio de programa y ms de dos veces la velocidad de ejecucin . Adems de ms velocidad y espacio de variables, las instrucciones especiales soportan el poleo de pines E/S, LCD de caracteres, y comunicaciones de I2C 1alambre. Todas las caractersticas de BS2p24 con un puerto adicional de16 pines de E/S. Soporta el conjunto de instrucciones del BS2p24 y adems es de muy bajo consumo de potencia y ms memoria para apliciones de adquisicin de datos. Es el mas velox de los modelos BASIC Stamp soport todas las instrucciones del BS2p24 , ms caracteristicas especiales de configuracin de pines E/S.

Un concepto en recordar es que si usted sube a un modelo ms rpido de BASIC Stamp es las diferencias en unidades de las instrucciones dependientes del tiempo como RCTIME y FREQOUT. Debido a que los diferentes modelos de procesadores corren a

Realizando sus Propios Inventos Pgina 331

diferentes velocidades, las unidades de Duration y Frequency y otros argumentos podran ser diferentes. Por ejemplo, cuando el BS2 ejecuta FREQOUT 6, 100, 4500 manda un tono agudo de seal de alarma a P6 durante 100 ms (1/10 de segundo) a una frecuencia de 4500 Hz. Cuando el mismo comando lo ejecuta un BS2px manda un tono que solamente dura 16.6 ms a una frecuencia de 27,135 Hz, que es un tono mucho ms alto e incluso no lo escucha el oido humano! La descripcin completa de cmo funciona cada una de las instrucciones de cada modelo y las sugerencias de conversin de programas BS2 de un modelo a otro las encuentra en la ayuda: BASIC Stamp Editor Help.
Procesamiento en Paralelo de Alto Rendimiento

Algunas aplicaciones complicadas requiren agilidad de procesamiento y memoria que est ms alla de las capacidades de la lnea BASIS Stamp 2. Estas son la clase de proyectos por la que fue diseado el Microcontrolador Propeller. Este poderoso y unico microcontrolador tiene ocho procesadores de alta velocidad en un solo chip, adems 32 pines de E/S y una memoria de programa RAM muy grande. Sus 8 procesadores puede trabajar al mismo tiempo, en forma independiente o en forma compartida, comparten el acceso a la memoria global y al sistema de reloj. Cada procesador tiene su propia memoria, hardware adicional para realizar funciones complicadas como monitoreo en alta velocidad de pines E/S o generacin de seales para una pantalla de TV o computadora. El Kit Propeller Education que muestra la Figura 10-9 es un buen puento de inicio con el Microcontrolador Propeller. Este Kit no es necesariamente el mejor siguiente paso despues de Qu es un Microcontrolador?. Sin Embargo, cuando se da cuenta que sus proyectos son ms ambiciosos y desafiantes, recuerde al Microcontrolador Propeller y al Kit Propeller Education.

Figura 10-9 Kit Propeller Education (izquierda) Plataforma PE (derecha)

Pgina 332 Qu es un Microcontrolador?

ACTIVIDAD #7: QU SIGUE?


Ahora que usted est por terminar con Qu es un Microcontrolador? es tiempo de pensar en lo siguiente por aprender. Antes de continuar, reflexione un momento en lo que ms le interesa. Algunas categorias generales en la que usted podra investigar incluye: Robotica Electrnica Sensores Automatizacin Proyectos Hobi Ciencias de la Tierra y Mediciones del Clima

Esta actividad genera recursos que usted puede usar para avanzar en cada una de estas categorias.
Los recursos, kits y componentes que se analizaron en esta actividad eran comunen cuando este captulo se escribio (Otoo 2009). Las versiones nuevas y mejores, kits y componentes estn disponibles para reemplazar alguna de las aqu presentadas. Asegurese de verificar www.parallax.com con la informacin ms reciente.

Cul es la Secuela del Microcontrolador?

La Figura 10-10 muestra libros y kits que arman la mejor secuela de este libro. Robotics with the Boe-Bot es una agradable y gran experiencia para que usted pueda aplicar algunas de las tcnicas de este libro a las aplicacione de robtica con el robot deslizante Boe Bot. El libro Sensores Inteligentes y Sus Aplicaciones fue escrito para ser la parte 2 de Qu es un Microcontrolador?. Se le cambi el nombre porque todos los sensores inteligentes y la pantalla de cristal lquido mostrados en el centro de la Figura 10-10 tienen coprocesadores que se comunican con el BASIC Stamp. Los coprocesadores los hacen sensores inteligentes. El libro Comprendiendo las Seales, es grandioso porque le permite a usted, ver las interacciones entre el BASIC Stamp y los circuitos utilizando un Osciloscopio Parallax que usted conecta en el puerto USB de su computadora.

Realizando sus Propios Inventos Pgina 333

Figura 10-10 Los Siguientes Grandes Pasos que siguen de Qu es un Microcontrolador?

Boe-Bot Robot Kit

Smart Sensors and Applications Parts and Text

Understanding Signals Parts and Text

Ms de Kits Stamps in Class y Libros de Texto

La Figura 10-11 muestra un diagrama de flujo que sintetiza todos los Kits Stamp in Class y Libros de Texto disponibles en el momento que ste se escribi. Son accesibles a travs del Programa Stamps in Class. Un vistaso y la liga a los Diagramas de Flujo est en www.parallax.com/Education, y usted puede dar click en cada imagen para visitar la pgina del producto del libro y su kit acompaante. Qu es un Microcontrolador? est hasta arriba a la izquierda en la Figura. Desde ah, el diagrama de flujo indica que usted puede brincar a Robotica con el Boe-Bot (Robotics with the Boe-Bot) o cualquier texto/kit de la serie Sensores o Seales.
Descargas completas de Libros de Texto en PDF Usted puede descargar el PDF a todo color de cada Libro Stamps in Class en www.parallax.com. Haga click en cualquier imagen de la carta para navegar en la pgina Texto + Kit y usted encontrara el PDF en la pgina seccin de Descarga.

Pgina 334 Qu es un Microcontrolador?

Figura 10-11 Diagrama de Flujo de Stamps in Class. {}

Si la categora en la que usted est interesado es: Robtica, entonces definitivamente el siguiente paso es Robtica con el Boe-Bot. Proyectos de Sensores, Inventos o Hoby, entonces su siguiente paso podra ser Sensores Inteligentes y Aplicaciones. Electrnica (seales), entonces su siguiente paso podra ser Control de Procesos Ciencias de la Tierra y Mediciones del Clima, entoces su siguiente pasos podra ser Sensores Aplicados (Originalmente se llamaba Mediciones de la Tierra)

Realizando sus Propios Inventos Pgina 335

Recursos Adicionales de Stamp In Class

Arriba y Adelante que son los libros de Texto Stamps in Class, En Stamps in Class hay Mini Proyectos en la liga www.parallax.com/Education. Algunos proyectos utilizan justamente el stock de partes del los kits pero demuestran nuevas formas para usarlos junto con nuevos conceptos. Muchos de estos proyectos son como los captulos de los libros de Texto Stamp in Class, tienen Actividades, Diagramas Esquemticos, Diagramas de Alambrado listas completas de cdigos que pueden descargarse. Algunos incluso tienen videos con tutoriales por ejemplo Construya su Propio Mini Temporizador que puede construirse precisamente con las partes que usted ha estado usando en este libro. Cualesquiera que sea la informacin que busca, o inspiracin creativa, usted prodr encontrarla aqu.
Figura 10-12 Ejemplo del Mini Proyecto con Stamps in Class

RESUMEN
Este libro present una variedad de circuitos y tcnicas, todas ellas son bloques de construccin en productos comunes as como en inventos. Este libro tambin present tcnicas para juntar los diversos bloques de construccin con el microcontrolador de

Pgina 336 Qu es un Microcontrolador?

BASIC Stamp. Este captulo demostr como incorporar las tcnicas y bloques de construccin en un prototipo, y tambin recomend algunos de los siguientes pasos para aprender ms en su rea de interes. La aproximacin para hacer que el BASIC Stamp interactue con un circuito dado puede aplicarse a una variedad de circuitos y mdulos que cumplan e incluso sobrepasen sus tareas. Dos ejemplos aplicados al prototipo de la micro alarma fueron: (1) un sensor de movimiento con una interface similar a el botn push y (2) un sensor de presin con una interface similara a la del potenciometro. Mientras desarrolla el cdigo para su aplicacin, asegrese de guardar su trabajo frecuentemente bajo nombres de revisin aumentadas. Tambin asegrese de darle nombres significativos a los pines de E/S y nmeros a las directivas PIN Y CON. Finalmente, agregue muchos comentarios a su cdigo que expliquen los que hacen y como lo hacen. Las subrutinas deben incluir comentarios que expliquen que hace la subrutina junto con sus variables y los con valores que usa para hacer su trabajo, as como las variables que almacenan los resultados cuando termina la subrutina. Este captulo tambin present una variedad de tcnicas de investigacin para implementar caractersticas en su prototipo. Incluso, si al principio no tena idea de cmo hace que trabaje una carateristica particular, usted puede usar tcnicas de bsquedas para encontrar el componente til, el circuito y ejemplos de cdigo. Los libros de texto Stamp in Class y sus kits tienen muchos circuitos y tcnicas tiles de diseo, y este es un gran lugar para aprender ms en los campos de robtica, sensores, electrnica, automatizacin, ciencias de la tierra, y ms. Todos los libros de texto que acompaan a los Kits Stamps in Class se pueden descargar libremente. Ahora que usted ha llegado al final del libro, reflexione un momento en cuatro ideas: (1) las tcnicas que usted ha aprendido, (2) su siguiente invento, proyecto o prototipo, (3) lo que usted ha aprendido aqu que puede aplicarlo en l y (4) que es lo siguiente que quiere aprender. Ahora, es tiempo de empezar con su siguiente proyecto o prototipo. Asegurese de mantenerse estudiando y aprendiendo nuevas tcnicas conforme avanza. SEA OPTIMISTA y BUENA SUERTE!

Anexo A: Lista de partes y opciones de kits Pgina 337

Anexo A: Lista de Partes y Opciones de Kits


Libro y Partes del Kit #28152, Slo Partes #28122 Partes y cantidades sujetas a cambio sin aviso Parallax Part # Descripcin Cantidad

150-01020 150-01030 150-01040 150-02020 150-02210 150-04710 152-01031 200-01031 200-01040 201-01080 201-03080 28123 350-00001 350-00005 350-00006 350-00007 350-00027 350-00029 400-00002 451-00303 500-00001 604-00010 800-00016 900-00001 900-00005

Resistor, 5%, 1/4W, 1 k Resistor, 5%, 1/4W, 10 k Resistor, 5%, 1/4W, 100 k Resistor, 5%, 1/4W, 2 k Resistor, 5%, 1/4W, 220 Resistor, 5%, 1/4W, 470 Potentiometer - 10 k Capacitor, 0.01 F Capacitor, 0.1 F Capacitor, 1000 F Capacitor 3300 F Qu es un Microcontrolador? Solo texto (#28152 ) LED Verde - T1 3/4 LED - Bicolor - T1 3/4 LED Rojo- T1 3/4 LED Amarillo - T1 3/4 Indicador de 7-segmentos LED Fototransistor, 850 nm, T1 3/4 Botn Push Normalmente Abierto Conector de 3 Pines Macho/Macho Transistor 2N3904 Potenciometro digital de 10 k Cables de puentes de 3 Bolsa de 10 Bocina Piezo r Servo Normalizado Parallax

10 4 2 2 6 6 1 2 2 1 1 1 2 1 2 2 1 1 2 1 1 1 2 1 1

Pgina 338 Qu es un Microcontrolador?

OPCIONES COMPLETAS DE KITS


Hay algunas opciones de Kits disponibles que incluyen la Tablilla de Desarrollo del Microcontrolador BASIC Stam 2 y todos los componentes electrnicos para completar las actividades de este libro. El Kit de Actividades BASIC Stamp (# 90005) incluye: o Una Tablilla BASIC Stamp HomeWork con BS2 de montaje superficial o Un adaptador USB de USB A a Cable Mini-B (#28031) o Qu es un Microcontrolador? Libro y Partes (28153) Kit Discovery BASIC Stam (Serie # 27207 o USB # 27807) que incluye o Tablilla Board of Education (Serie #28150 o USB # 28850) o Modulo Microcontrolador BASIC Stamp 2 (# BS2-IC) o Cable de Programacin (Serial # 800-00003 o USB A MiniB # 80500006) o Qu es un Microcontrolador? Partes y Texto (#28152) o Manual BASIC Stamp (# 27218) Que es un Microcontrolador? Texto y Kit de Partes (#28152) ms Kit Completo Board of Education (Serial # 28103 o USB #28803) que incluye: o Tablilla Board of Education (Serial # 28150 o USB # 28850) o Modulo Microcontrolador BASIC Stamp (# BS2-IC) o Cable de Programacin Cable de Programacin (Serial # 800-00003 o USB A MiniB # 805-00006) o Alambres para puente (i paquete de 10)

Un mensaje a los educadores: Descuentos por comprar en cantidad de todos los kits arriba mencionados: para detalles vea cada pgina de productos del kit en www.parallax.com. Adems las Tablilla HomeWork est disponible por paquetes de 10 como una solucin econmica para uso en el saln de clases, y cuesta significativamente menos que la Board of Education ms el mdulo BASIC Stamp 2. Por favor contacte al Equipo de Ventas de Parallax en (800) 512-1024 para saber los precios por grandes cantidades.

Anexo B: Ms sobre electricidad Pgina 339

Anexo B: Ms sobre Electricidad


Qu es un electron?? Un electron es una de las tres partes fundamentales del tomo; las otras dos son el protn y el neutrn. Un o ms protones y neutrones estn juntos en el centro de la molcula en un rea llamada ncleo. Los Electrones son muy pequeos comparados con los protones y neutrones, los electrones giran alrededor del ncleo. Los Electrones se rechazan unos con otros, los electrons y protones se atraen uno con otror. Qu es carga?? La tendencia de un electrn que repele otro electrn y atraer un protn cercano se llama carga negativa . La tendencia de un protn a repeler otror protn y atraer un electron se llama carga positive . Cuando una molcula tiene ms electrones que protoness, se dice que est cargada negativamente Si una molcula tiene menos electrones que protones, se dice que est cargada positivamente Si un molcula tiene el mismo nmero de protones y electrones, se dice que tiene carga neutra. Qu es voltaje?? Voltaje es como la presin elctrica. Cuando una molcula cargada negativamente est cerca de una cargada positivamente, el elctrn extra de la molcula con carga negativa trata de jalar al de la molcula cargada positivamente.. Las Baterias tienen una sustancia con molculas cargadas negativemente separadas de un compuesto con molculas cargadas positivamente..Cada uno de estos compuestos est conectado a una de las terminales de la bateria; el compuesto cargado positivamente est conectado a la terminal positiva (+) , y el compuesto negativo est conectado a la terminal negativa (-) . El volt ies una medidad de la presin elctrica, y se abrevia con con letra maysculal V. Quiz usted ya conoce la bateria de (9 V) usada para proporcionar energa a la Tablilla Board of Education or HomeWork Board. Otras baterias conocidas son la de 12 V de los carros y la AA de 1.5 V usadas en calculadoras, juegos portatiles y otros aparatos Qu es corriente?? Corriente es una medida del nmeor de electrones por segundo que pasan por un circuito. Algunas veces las molculas ligadas en una reaccin qumica crean un compuesto (est neutramente cargado). Otras veces los electrones abandonan la molcula cargada negativamente y se unen a las cargadas positivamente, fluyendo en un circuito como el que construy y verific . La letra ms usada en libros y diagramas para referirse a la corriente es I mayscula. Qu es un ampere?? Un ampere es la unidad bsica de corriente, y se escribe con la letra mayscula A Con respecto a los circuitos que usa con el BASIC Stamp,un ampere es una cantidad de corriente muy grande Este es conveniente cuando se referiere a la cantidad de corriente que la bateria de un carro proporciona a las luces, al ventilador de enfriamiento y otros aparatos de gran potencia.. El miliamper (mA) y el microamper (A) son medidas ms convenientes que maneja el mdulo BASIC Stamp en sus pines de E/S y sus circuitos son de:. 1 mA = 1/1,000 A, y 1 A = 1/1,000,000 A. Qu es resistencia?? Resistencie es la propiedad de un circuito a oponerse al flujo de electrones ( corrienet) desde la terminal negativa de una bateria a la terminal positiva . El ohm es la unidad bsica de resistencia. Ya lo presentamos y se abrevia con la letra griega Omega (). Qu es un conducto?r? El alambre de Cobre casi no tiene resistencia, y se llama conductor.

Pgina 340 Qu es un Microcontrolador?

ACTIVIDAD ADICIONAL: LEY DE OHM, VOLTAJE Y CORRIENTE


Esta actividad es una aplicacin de las definiciones ya analizadas.
Partes para la Ley de Ohm

Un Resistor de 220 (rojo-rojo-caf) Un Resistor de 470 (amarillo-violeta-caf) Un Resistor de 1 K (caf-negro-rojo) Un Resistor de 2 K (rojo-negro-rojo) Un LED de cualquier color
Circuito de Prueba

El valor de la resistencia Ri en la Figura B-1 puede cambiarse. Resistencias menores permiten ms corriente a travs del LED, y ste emitir ms brillo. Mayores valores de resistencia harn que el LED brille menos porque no permite que pase mucha corriente a travs del circuito. Desconecte la alimentacin de su Tablilla Board of Education o HomeWork para que pueda modificar el circuito. Construya el circuito que muestra la Figura B-1 empezando con un resistor de 220 . Modifique el circuito reemplazando el resistor de 220 por uno de 470 . Brill menos el LED? Repita usando el resistor de 1 K , luego el de 2 K verificando cada vez el cambio en brillantez.

Anexo B: Ms sobre electricidad Pgina 341

Vdd

Vin

Vss

Vdd

X3

R1 R2 R3 R4 Ri R1 = 220 R2 = 470 R3 = 1 k R4 = 2 k

LED

Vss

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

Figura B-1 Monitor de la Corriente del LED

Si usted est usando una bateria de 9 V, tambin puede comparar la brillantez de una fuente Vin, de voltaje diferente. Vin se conecta directamente a la terminal + de la bateria de 9 V y Vss se conecta directamente a la terminal negativa de la bateria. En nuestro sistema, Vdd son 5 V regulados. Esto es cerca de la mitad del voltaje de la bateria de 9 V. Si no est usted usando una bateria de 9 V detengase aqu y brinque a la seccin de abajo Calculando la Corriente. Si no es as continue. Comience con el circuito mostrado por la Figura B-1 pero use un resistor de 1 kilo ohm. Haga una nota del brillo del LED. Desconecte la alimentacin. Modifique el circuito desconectando la terminal del resistor de Vdd y conctelo a Vin. Cundo volvi a conectar la alimentacin, como brill el LED? Cunto ms brillante?
Haga el experimento de Vin con un resistor de 220 0 470 LED mucha ms corriente que la especificada.

porque le proporcionar al

Calculando la Corriente

El Manual BASIC Stamp tiene algunas reglas de cuanta corriente puede proporcionar un pin de E/S a los circuitos. Si no sigue usted estas reglas, puede terminar daando el

Pgina 342 Qu es un Microcontrolador?

BASIC Stamp. Las reglas indican cuanta corriente le est permitida que proporcione a un pin de E/S y cuanta corriente pueden proporcionar un grupo de pines de E/S.
Reglas de Corriente de los pines del BASIC Stamp Un pin de E/S puede proporcionar hasta 20 mA. En otras palabras, si usted manda una seal HIGH a un pin E/S, ete no deber suministrar ms corriente de 20 mA. Si usted conecta el LED para que el BASIC Stamp ahora haga que el LED se ilumine cuando manda una seal LOW el pin puede absorver hasta 20 mA. Los pines desde P0 hasta P7 solamente pueden proporcionar 40 mA. De igual manera los pines desde P8 hasta P15 solo pueden proporcionar 40 mA. 40 mA es la corriente mxima que puede proporcionar el mdulo BASIC Stamp 2 con una fuente regulada de 5 V, entonces la corriente total que pueden drenar todos los pines de E/S nunca debern exceder 40 mA. Si usted tiene muchos circuitos de LEDs, usted necesitar resistores mayores para que los circuitos no drenen mucha corriente. Para mayor informacin, consulte la Tabla Descripcin de Pines del BASIC Stamp en el Manual BASIC Stamp.

Si usted sabe calcular la cantidad de corriente que usa su circuito, puede decidir si el brillo de su LED es el correcto. Cada componente tiene reglas de lo que hace con el voltaje, la resistencia y la corriente. Para el diodo emisor de luz, la regla es un valor que se llama polarizacin en sentido directo del diodo. Para el resistor, la regla se llama Ley de Ohm. Tambin hay reglas para saber cuanta corriente y voltaje se suman en un circuito. Estas se llaman Leyes de Kirchhoff de Voltaje y Corriente.

Anexo B: Ms sobre electricidad Pgina 343

Vdd Vss = 5 V El voltaje (la presin elctrica) de Vdd a Vss es 5 V. Esto se llama Voltaje regulado, y trabaja casi igual que una bateria que proporciona exactamente 5 V. (las baterias no son tipicamente de 5 V, aunque cuatro baterias recargables de nickel cadmio de 1.2 V cada una, en serie nos dan 4.8 V) Las Tablillas Board of Education y BASIC Stamp HomeWork tienen reguladores de 5 V que convierten la alimentacin de la bateria de 6 a 9 V a un voltaje regulado de 5 V para los conectores Vdd arriba de la Tablilla. El BASIC Stamp tambien tiene un regulador interconstruido que convierte las entradad de 6 a 9 V en 5 V para sus componentes. Ven Vss = 9 V- Si usted est usando una bateria de 9 V, el voltaje de Vin a Vss es 9 V. Sea cuidadoso. Si usted est usando un regulador de voltaje que conecta en la pared, incluso si dice 9 V, este podra ser tan grande como 18 V. Tierra y/o referencia. Se refiere a la terminal negativa de un circuito, hablando de las tablillas BASIC Stamp y Board of Education , Vss se considera la referencia a tierra. Vale cero volts, y si usted est usando una bateria de 9 V, esta es la terminal negativa de la bateria. La terminal positiva de la bateria es 9 V. Vdd es 5 V (arriba la referenci Vss es 0 V.) y este es un voltaje especial hecho por un chip regulador de voltaje que suministra al BASIC Stamp la energa. Ley de Ohm V = I x R El voltaje medido en las terminales del resistor (V) es igual a la corriente que pasa a travs del resistor (I) multiplicado por la resistencia del resistor. Voltaje en Sentido Directo del Diodo Es el voltaje en las terminales del nodo y el ctodo cuando la corriente pasa por l desde el nodo al ctodo. Para el LED verde del circuito de la Figura 2-6, usted puede considerar que el voltaje del diodo es de aproximadamente 2.1 V, para hacer sus clculos. Si el LED es amarillo, considere 2.0 v y para el LED rojo considere 1.7 V. Resistencias menores en serie y/o mayor voltaje aplicado al circuito dan como resultaddo mayor flujo de corriente. Resistencias mayores en serie y/o menor voltaje aplicado dan como resultado menor flujo de corriente. Simplificacin de la Ley de Kirchhoff de Voltaje. Voltaje usado igual a voltaje suministrado. Si usted alimenta un circuito con 5 v, el nmero de volts en todas las partes usadas suma 5 V. Simplificacin de la Ley de Kirchhoff de Corriente. La corriente de entrada es igual a la corriente de salida. La corriente que entra a un circuito LED desde Vdd es igual a la cantidad de corriene que sale a travs de Vss. }Tambin, si usted conecta tres LEDs al BASIC Stamp cada circuito LED drena 5 mA, esto significa que el BASIC Stamp tiene que suministrar a los tres circuitos un total de 15 mA

Ejemplos de Clculo: Un circuito, Dos Circuitos

Para calcular la corriente que drena un circuito LED rojo, lo hacemos en dos pasos: 1. 1.Calculamos el voltaje en los extremos del Resistor. 2. Usamos la ley de Ohm para calcular la corriente a travs del Resistor. La Figura B-2 muestra como calcular la corriente en el resistor. El voltaje suministrado a su izquierda es 5 V. El votaje usado por cada componente est a la derecha del circuito.

Pgina 344 Qu es un Microcontrolador?

El voltaje que no conocemos al principio es Vr, el voltaje en los extremos del resistor. Pero conocemos que el voltaje en los extremos del LED es 1.7 V. (el voltaje en sentido directo del diodo emisor de luz). Tambin sabemos que el voltaje en los componentes suman 5 V de acuerdo con la Ley de Kirchhoff de Voltaje. La diferencia entre 5 V y 1.7 V es 3.3 V, entonces este debe ser el voltaje en los extremos del resistor.

VR + 1.7 V = 5 V VR = 5 V 1.7 V VR = 3.3V

Figura B-2 El voltaje en el circuito, Resistor, y LED

Kilo En el sistema mtrico decimal kilo significa 1000. En el sistema mtrico decimal 1000 se dice kilo, y se abrevia con la letra minscula k. En lugar de escribir 1000 , podemos escribir 1 K. Y se pronuncia un K. De igual manera 2000 se escribe 2 K . En el sistema mtrico decimal, mili es 1/1000 is se abrevia con la letra minuscula m. Si el BASIC Stamp proporciona a un circuito LED 3.3 milesimas de Amper, esto es 3.3 miliamperes o 3.3 mA. Qu es un mA? Se pronuncia milamper, es la notacin de una milsima de amper. La m en mA es la notacin mtrica para mili, que es 1/1000 . La A en mA se usa para amperes. Ponga las dos juntas y tiene miliampers, y es muy til para describir la cantidad de corriente drenada por el BASIC Stamp y los circuitos que a l se conectan.

Ahora que hemos calculado el voltaje en los extremos del resistor, la Figura B-3 muestra un ejemplo de usar ese valor para calcular la corriente que pasa por el resistor. Empezamos con la ley de Ohm; V = R x I. Usted conoce la respuesta de V (3.3 V) y R (470 ). Ahora despejamos I (la corriente).

Anexo B: Ms sobre electricidad Pgina 345

V = IR 3.3V = I 470 3.3 V I= 470 I 0.00702 V I = 0.00702 A 7.02 I= A 1000 I = 7.02 mA

Figura B-3 Calculo de la corriente a travs del Resistor

Es verdadero! 1 A = 1V / ohm (Un amper es un volt por ohm) Cunta corriente es 7.02 mA? Es la cantidad de corriente que circula por el circuito LED de la Figura B-2. Usted puede reemplazar el resistor de 470 y el circuito conducir cerca de 55 mA, y el LED brillar mucho. Si usted usa un resistor de 1000 , el circuito conducir 3.3 ma y el LED brillar poquito. Un resistor de 2000 har que el LED apenas brille y la corriente ser 1.65 mA

Digamos que usted desea que un pin E/S encienda dos LEDs al mismo tiempo. Esto significa que internamente el BASIC Stamp deber proporcionar a los circuitos lo que muestra la Figura B-4. Podr el circuito exceder la corriente lmite en los pins E/S de 20 mA? Calculemoslo. Recuerde que la versin simplificada de la Ley de Kirchhoff de Corriente dice que la corriente total drenada por la fuente es igual a la corriente suministrada a todo los circuitos. Esto significa que I en la Figura B-4 es igual al total de las dos corrientes que son drenadas. Simplemente sume las dos corrientes drenadas, y la respuesta ser de 14.04 mA, que se puede redondear como 14.0 mA. Como la corriente drenada est debajo de el lmite de 20 mA de los pines de E/S, se pueden conectar con seguridad al pin E/S y conmutar con el BASIC Stamp.

Pgina 346 Qu es un Microcontrolador?

I = I 1 + I 2 + ... I i I = 7.02 mA + 7.02 mA I = 14.04 mA 14.0 mA

Figura B-4 Corriente Total proporcionada a los dos Circuitos LED

Su Turno Modificando el Circuito

Repita el ejercicio de la Figura B-2 pero use Vin Vss = 9 V en lugar de Vdd Vss = 5 V. Considerando que el voltaje en sentido directo no cambia, la respuesta es Vr = 7.3 V. El voltaje medido en el resitor probablemente sea menor porque el voltaje en sentido directo del LED es mayor, porque pasa ms corriente por el circuito. Repita el ejercicio de la Figura B-3 pero use un resistor de 1 K . Respuesta: I = 3.3 mA Use Vr = 7.3 V para hacer el ejercicio en la Figura B-3 con un resistor de 1 K .. Respuesta: I = 7.3 mA Repita el ejercicio que muestra la Figura B-4 con un resistor de 470 y el otro de 1 K .. Respuesta: I = 7.02 mA + 3.3 mA = 10.32 mA.

Anexo C: Resumen del formato RTTL Pgina 347

Anexo C: Resumen del Formato RTTTL


Este es un resumen que intenta ayudarte a que tenga sentido el formato RTTTL. Las especificaciones completas del RTTTL las puedes encontrar en varios sitios web. Con cualquier buscador, usa las palabras clave Especificaciones RTTTL para repasar las pginas web que incluyan la especificacin. Este es un ejemplo de un tono en formato RTTTL:
TakeMeOutToTheBallgame:d=4,o=7,b=225:2c6,c,a6,g6,e6,2g.6,2d6,p, 2c6,c,a6,g6,e6,2g.6,g6,p,p,a6,g#6,a6,e6,f6,g6,a6,p,f6,2d6,p,2a6 ,a6,a6,b6,c, d,b6,a6,g6

El texto antes de los dos puntos, es lo que el telefono celular muestra como nombre de la cancin. En este caso el tono se llama:
TakeMeOutToTheBallGame:

Entre los primeros y segundos dos puntos, se introdujeron los ajustes por default usando d, o, y b. Esto es lo que significan:
d duration o- octava b batidos por minuto o tempo.

En TakeMeOutToTheBallGame, los ajustes por default son:


d= 4, o = 7, b = 225:

Las notas de la melodia se meten despues de los segundos dos puntos, y se separan con comas. Si se usa la letra de la nota, esa nota se tocar con la duracin default in la octava por default Por ejemplo, la segunda nota de TakeMeOutToTheBallGame es:
,c,

Como no hay otra informacin, se tocar con la duracin default de un cuarto de nota (d=4), en la sptima octava (o=7) Una nota puede tener hasta cinco caracteres entre las comas, esto es lo que especifica cada carcter:

Pgina 348 Qu es un Microcontrolador?

, duracin de la nota bemol punteada, octava,

Por ejemplo:
,2g#.6,

significa toca la media nota G bemol por 1 duracin de la media nota y tcala en la sexta octava. Estos son unos pocos ejemplos de TakeMeOutToTheBallGame: ,2g.6, media nota, G, punteada, sexta octava ,a6, duracion de la nota de un cuarto por default. Una nota tocada en la sexta octava ,g#6, duracin un cuarto, nota g , bemol (escrita como #), sexta octava El carcter:
,p,

indica pausa, y se usa para los silencios. Sin informacin extra, la p se toca por defaul en duraciones de un cuarto. Usted podra tambien tocar media nota en forma de silencio usando:
,2p,

Este es un ejemplo de un silencio punteado:


,2p.,

En este caso el silencio podra durar media nota ms un cuarto de nota.

ndice alfabetico Pgina 349

ndice Alfabetico
-$-

$ (Hexadecimal formatter), 209


-*-

Apostrofe, 42 Area de Prototipo, 31 Argumentos, 39 Automatizacin, 334


-B-

** (Operador de multiplicacin alta), 273 */ (Multipicacin Media), 84 */ (Operador de Multiplicacin Media), 273
-:-

Base
del Fototransistor, 199 Transistor, 293

:, 45
-?-

? (symbol = x formato), 45
-1-

16-bits error de rollover, 122


-A-

AD5220 digital potentiometer, 296 Adquisicin de datos, 204 Ajuste, 160 Alerta de la Alimenacin, 101 Algoritmo, 86 Amp, 339 AND, 78 Anidando subrutinas, 221 Anode
Indicador de 7-segmentos, 172

Base-2 nmeros, 67 BASIC Stamp, 330 BASIC Stamp 2, 11 Bateria, 34 Batido, 255 Benjamin Franklin, 35 Bicolor LED, 50 Binario, 61 Bit, 45 Bloque de Cdigos, 78 Booleana, 61 Botn
High Activo, 69

Anodo, 30
LED, 30

BS1, 330 BS2, 330 BS2e, 330 BS2p24, 330 BS2p40, 330 BS2pe, 330 BS2px, 232, 330 BS2sx, 330 Bucle anidado, 253

Pgina 350 Qu es un Microcontrolador?

Bus Paralelo, 179 Byte, 45, 180


-C-

Capacitancia de unin, 238 Capacitor, 145


Capacitancia de unin, 238 Electrolytic, 145 Electrolytic Capacitor Schematic Symbol and Part Drawing, 146 Polar identificando terminales, 146

Comentarios al cdigo, 42 Communication products, 327 Concepto diagrama, 313 Conductor, 339 conectores, 31 Conmutar, 61 Constantes, 162 Contando, 80 Control caracteres. Vea DEBUG Control Caracteres Control Caracteres
DEBUG

Capacitor Electrolitico, 145 Carga, 339 Carga Negativa, 339 Carga Positiva, 339 Catodo, 30
LED, 30

CR, 25

Controlar, 61 Conversin hexadecimal a decimal, 207 Corriente, 28, 35, 339


Milamper, 344

Ctodo
Catodo Comn & indicador de segmentos, 172

CRSRUP, 129
-D-

Chip Interpreter, 291 Ciclo, 117 Ciencias de la Tierra y Mediciones del Clima, 334 Circuito abierto, 62 Circuito cerrado, 62 CLREOL, 169 CMOS, 61 Cdigo de Colores de los resistores, 29 Cdigo sobrepasado, 84 Colector
del Fototransistor, 199

DATA, 259 DCD, 272 DEBUG, 39 DEBUG Control Caracteres, 129


CRSRUP, 129

DEBUG Control Characters


CLREOL, 169

DEBUG Control de Caracteres


HOME, 76

DEBUG Formato

ndice alfabetico Pgina 351

DEC (Formato decimal), 120

Emisor
del Fototransistor, 199 Transistor, 293

DEBUG formatos
? (symbol = x formato), 45

DEBUG Formatos, 129


$ (Hexadecimal Formato), 209 % (Formato Binario ), 182 DEC (Decimal formato), 209

Debug Terminal
Transmit and Receive Windowpane, 121

DEBUGIN, 120 DEC, 120, 209 Decimal formato DEC, 209 Demostracin del Concepto, 321 Derivacin del Potenciometro, 302 Desbordamiento, 276 Descripcin funcional, 313 Diagrama de Tiempo, 104 diodo, 30 diodo emisor de luz. Vea LED Diodos Emisores de Luz. Vea LED DIRH, 180 Disparador Schmitt, 232 Display LCD, 325 Dispositivo Paralelo, 179 Divisor de voltaje, 157 DO...LOOP, 39, 82, 124 DTMFOUT, 255
-E-

END, 63 Entero, 273 Error de Rollover, 122 Escalamiento, 160 Especificaciones, 314 Espectro de colores, 198 Esquemtico, 35 Etiqueta, 219 EXIT, 285, 320
-F-

Farads, 166 FlexiForce Sensor, 323 FOR...NEXT, 43 Fotoresistor, 198 Fototransistor, 199 Fraccin, 84 Frecuencia, 248 Frecuencia Dual Muti Tono, 255 FREQOUT, 250, 254
-G-

Google, 328 GOSUB, 218 GOTO, 219 Grado, 101 Graphing software, 215
-H-

Eco, 121 Editor BASIC Stamp, 15 EEPROM, 205 Electron, 34, 339

hertz, 250 Hertz, 248 Hexadecimal formato $, 209

Pgina 352 Qu es un Microcontrolador?

HIGH, 39, 184 High activo vs. low activo, 69 Histeresis, 230 HOME, 76 Homework board y el circuito divisor de voltjae RCTIME, 157
-I-

IF...ELSEIF...ELSE, 75 IF...THEN, 78 IF..THEN...ELSE, 71 IN, 67 Indicador de 7 segmentos, 171, 172 Indicador LED de 7 segmentos, 173 Inicializacin de Variables, 82 Insertar, 31 Interferencia, 255
-J-

Leyes de Kirchhoff de Voltaje y Corriente, 342 Llamada a subrutina, 220 Logica transistor-transistor (TTL), 232 Longitud de onda, 198 LOOKDOWN, 188, 189 LOOKUP, 185 LOW, 39, 184 Luz visible, 198
-M-

Jumper del Conector Servo, 97


-K-

mA, 344 Manda y Ejecuta, 291 Mandar, 61 Mapa de memoria, 205 Mapa de Memoria, 206 Mapa de pines, 172, 296 Mediciones de la Tierra, 334 Medidor de luz, 215 Memoria
Sobre escribiendo el programa, 209

KCL, 343 kHz, 248 Kilo, 344 KVL, 343


-L-

LCD 2x16 Serial, 325 LED, 27, 30


Bi-color, 50 como sensor de luz, 237

microcontrolador, 11 Microcontrolador Propeller, 331 Microfarads, 145 Microsegundo, 105 Mili, 344 Milisegundo, 39 Milisengundo, 105 Modificaro WORD, 208 Motor Control product, 327 Msica
Punteadas, 267 Silencios, 262

Ley de Ohm, 233, 343

ndice alfabetico Pgina 353

Tempo, 263

-P-

-N-

Nanometro, 198 nc, 173 Neutra, 34 Neutrn, 339 Nib, 45 No-conecta, 173 Notas bemol, 257 Notas sostenidos, 257 Ncleo, 339 Numbers
Binary, 180

Parallax Precaucin de Servo Normalizado, 96 Partes del Kit de IR Remoto, 329 PBASIC Language
CLREOL, 169 HIGH, 184 LOW, 184 SELECTCASE, 275

PBASIC Lenguage
WRITE, 209

PBASIC Lenguaje
AND, 78 Argumentos, 39 Bit, 45 Byte, 45 CRSRUP, 129 DATA, 259 DCD, 272 DEBUG, 39 DEBUGIN, 120 DEC, 209 DEC. See DIRH, 180 DO...LOOP, 39, 82, 124 END, 63 EXIT, 285, 320 FOR...NEXT, 43, 124 FREQOUT, 250, 254

Nmeros Base-10, 185 Nmeros Base-16, 185 Nmeros binarios, 67, 182 Nmeros Binarios, 180 Nmeros decimal, 185 Nmeros Decimales, 206 Nmeros hexadecimal, 185 Nmeros misteriosos, 321
-O-

Octava, 257 Ohm, 339 Omega , 28 ON GOSUB, 219 ON GOTO, 219 ondas de sonid. Vea Ondas sonoras Operaciones matemticas, 271 OR, 78 OUTH, 180

Pgina 354 Qu es un Microcontrolador?

GOSUB, 218 GOTO, 219 HOME, 76 IF...ELSEIF...ELSE, 75 IF...THEN, 78 IF..THEN...ELSE, 71 IN, 67 LOOKDOWN, 188, 189 LOOKUP, 185 LOW, 39 Nib, 45 ON GOSUB, 219 ON GOTO, 219 OR, 78 OUTH, 180 PAUSE, 39 PIN, 164 PULSOUT, 105 RANDOM, 85 RCTIME, 151, 200 READ, 208 RETURN, 218 SERIN, 320 SEROUT, 320 STEP, 124 TOGGLE, 300 UNTIL, 82, 124 WHILE, 124 Word, 208 WRITE, 208

PBASIC Lrnguaje
Nib, 45

PBASIC Operador
** (Multiplicacin alta), 273 */ (Multiplicacin Media), 273

PBASIC Operadores
*/ (Multipicacin Media), 84 DCD, 272 Orden de ejecucin, 271 Parentesis, 271

PBSIC Lenguaje
HIGH, 39

PIN, 164 Pines E/]S, 32 Pines E/S


Direccin default, 183

Polling, 80, 82 Potenciometro, 141 Potenciometro Resistor Variable (de una vuelta), 141 Potentiometer
AD5220 (digital), 296

Procesamiento en Paralelo, 331 Program


Sobre escribir, 209

Program Listing
SimpleLookup.bs2, 185

Program Listings
ActionTones.bs2, 252

ndice alfabetico Pgina 355

Ch02Prj01_Countdown.bs2, 59 Ch03Prj01_TwoPlayerReactionTimer.bs2, 90 Ch04Prj01Soln1__KillSwitch.bs2, 137 Ch07Prj01_Blinds_Control.bs2, 245 Ch07Prj02_Blinds_Control_Extra.bs2, 246 Ch5Prj01_ControlServoWithPot.bs2, 168 Ch6Prj01_FishAndChips.bs2, 194 Ch8Prj01_PushButtonToneGenerator.bs2 , 289 Ch9Ex01_SetTapToZero.bs2, 306 Ch9Prj01_PhotoControlledDigitalPot.bs2, 308 ControlServoWithPot.bs2, 161 DialDisplay.bs2, 190 DigitalPotUpDownWithToggle.bs2, 301 DisplayDigits.bs2, 181 DisplayDigitsWithLookup.bs2, 186 DoReMiFaSolLaTiDo.bs2, 258 LightMeter.bs2, 222 MicroAlarmProto(Dev-009).bs2, 318 MicroMusicWithRtttl.bs2, 280 MusicWithMoreFeatures.bs2, 268 NestedLoops.bs2, 253 NotesAndDurations.bs2, 263 PairsOfTones.bs2, 255 PhototransistorAnalogToBinary.bs2, 229 PolledRcTimer.bs2, 149 PushbuttonControlledLed.bs2, 71 PushbuttonControlOfTwoLeds.bs2, 75

ReactionTimer.bs2, 81 ReadLightMeasurementsFromEeprom.bs 2, 212 ReadPotWithRcTime.bs2, 154 ReadPushbuttonState.bs2, 68 SegmentTestWithHighLow.bs2, 179 SelectCaseWithCharacters.bs2, 278 ServoCenter.bs2, 106 SimpleLookdown.bs2, 189 SimpleSubroutines.bs2, 219 SlowServoSignalsForLed.bs2, 114 StoreLightMeasurementsInEeprom.bs2, 210 TerminalControlledDigitalPot.bs2, 303 TestBiColorLed.bs2, 54 TestBinaryPhototransistor.bs2, 235 TestPhototransistor.bs2, 203 TestPiezoWithFreqout.bs2, 250 TestSecondLed.bs2, 48 ThreeServoPositions.bs2, 116 TwinkleTwinkle.bs2, 260

Protn, 339 Prototipo, 311 Proyecto de la Alarma, 315 Pseudo random, 86 Puerto COM, 41 PULSOUT, 105 Punteadas en msica, 267 Punto de referencia, 296
-R-

RANDOM, 85

Pgina 356 Qu es un Microcontrolador?

RCTIME, 151, 200 READ, 208 Recibir, 61 Registros


DIRH y OUTH para pines E/S, 180

SERIN, 320 SEROUT, 320 Servo


Diagrama de Tiempo, 104 Frase de precaucin, 96

Reglas de nombres de Variables, 43 Resistencia, 339 resistor, 28 Resistor, 38


E/S proteccin de pin, 69 Pull-up y Pull-down, 69 Resistor como proteccin E/S, 38 Variable, digital potentiometer, 296 Variable, potenciometro, 141

Servo Normalizado de Parallax


Parts diagram, 95

Resistor variable
potenciometro (digital), 296

RETURN, 218 Robtica con el Boe-Bot, 334 Rutina Principal, 224


-S-

Silencios en msica, 262 Smbolo esquemtico, 28 Simplificacin de la Ley de Kirchhoff de Corriente, 343 Simplificacin de la Ley de Kirchhoff de Voltaje, 343 Sin soldar, 32 sistema incrustado, 11 Sistema mtrico decimal, 344 Sobre escribir el programa, 209 Sonidos en accin, 251 StampPlot LITE, 215 Stamps en Clase "Mini Proyectos", 335 Subrutina, 218
Etiqueta, 219

SELECTCASE, 275 Semilla, 86 Sensar, 61 Sensor de Movimiento PIR, 323 Sensores Aplicados, 334 Sensores Inteligentes y Aplicaciones, 334 Sensores Inteligentes y Aplicacines, 326 Sensors products, 327

Subrutinas anidadas, 221 Sulfuro de cadmio, 198 Superposicin, 255


-T-

Take Me Out To The Ball Game, 347 Teclas naturales, 257 Tempo, 263 Tierra, 31, 343

ndice alfabetico Pgina 357

TOGGLE, 300 Tokens, 205, 209, 291 Tolerancia, 29, 302 Transistor, 199, 293
NPN, 293

OUTH, 180 Word, 45

Transmitir, 61 TTL, 61 Tutoriales en video, 335


-U-

Vdd, 343 Vea DEBUG Formatoss}. Vea Pines E/S, 32 Ven, 343 Ventana de Transmisin, 121 Video
Construya su Propio Mini Temporizador, 335

UNTIL, 82, 124


-V-

Valor nominal, 302 Variable, 45 Variable range error, 122 Variable tamao Bit, 45 Variable tamao Nib, 45 Variables, 45
Almacenamiento RAM, 211 Bit, 45 Byte, 45 DIRH, 180 Nib, 45

Volt, 339 Voltaje, 35, 339 Voltaje decay circuit, 147 Voltaje Directo, 343 Vss, 343
-W-

WHILE, 124 Word, 45 WRITE, 208, 209


-

F (microfarad), 145

Pgina 358 Qu es un Microcontrolador?

Las partes y cantidades estn sujetas a cambios sin aviso. Las partes pueden ser diferentes a las que se muestran en esta imagen. Si tiene preguntas respecto a su kit, por favor mande un email a stampsinclass.com