Documentos de Académico
Documentos de Profesional
Documentos de Cultura
VERSION 3.0
Página 2 · ¿Qué es un Microcontrolador?
GARANTÍA
Parallax garantiza sus productos contra cualquier defecto en materiales y manufactura por un periodo de 90 días partir
de la fecha de recepción del producto. Si usted descubre un defecto Parallax podrá reparar o reemplazar la mercancía o
regresarle el costo de su compra. Antes de regresar el producto a Parallax, llame un número de Regreso Autorizado de
Mercancía (RMA). Escriba este número en la parte externa de la caja para regresar la mercancía a Parallax. Por favor
incluya lo siguiente con la mercancía que regresa: Su nombre, su número telefónico, dirección y descripción del
problema. Parallax le regresará su producto o su reemplazo utilizando el mismo método utilizado para mandar el
producto a Parallax.
ISBN 9781928982524
3.0.0-09.12.09-HKTP
RECLAMO DE RESPONSABILIDADES.
Parallax Inc no es responsable de daños especiales, incidentales o de consecuencia que resulten de cualquier violación
de la garantía, o bajo cualquier teoría legal , incluyendo perdidas de beneficios, caducidad, intangibles o reemplazo del
equipo o propiedad, o cualquier costo de recuperación, reprogramación o reproducción de cualquier tipo de datos
almacenados o usados con productos Parallax. Parallax tampoco es responsable de cualquier daño personal incluyendo
la vida o la salud que resulten del uso de cualquier de nuestros productos. Usted es 100% responsable de su aplicación
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 mándelo al correo EDITOR@PARALLAX.COM
Índice
Prefacio ....................................................................................................................... 7
Características 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
Capítulo 1 : Inicio...................................................................................................... 11
¿Actualmente cuántos 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 : Instalación del software..........................................................................15
Actividad #2 : Uso del archivo “ayuda” para ajustes del hardware...............................21
Resumen ......................................................................................................................23
Capítulo 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 repetición ................................................................................42
Actividad #4 : Construyendo y verificando un segundo circuito con LED.....................46
Actividad #5 : Control de un LED bicolor usando la dirección de la corriente ..............50
Resumen ......................................................................................................................56
Capítulo 3 : Entrada Digital – Botones Push ......................................................... 61
Los encuentras en calculadoras, juegos de mano y aparatos......................................61
Recibiendo versus mandando señales high y low........................................................61
Actividad #1 : Verificando un botón push con un circuito LED .....................................61
Actividad #2 : Leyendo un botón push con el BASIC Stamp........................................65
Actividad #3 : Control con botón push de un circuito LED............................................70
Actividad #4 : Dos botones push controlando dos circuitos LEDs................................73
Actividad #5 : Prueba del tiempo de reacción de un temporizador ..............................78
Resumen ......................................................................................................................87
Capítulo 4 : Controlando el Movimiento ................................................................ 93
Microcontrol del movimiento .........................................................................................93
Señales 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 retención del servo............................................112
Página 4 · ¿Qué es un Microcontrolador?
Prefacio
Este libro responde la pregunta “¿Que es un Microcontrolador?” y enseña a los estudiantes
la manera de diseñar 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 diseñados para despertar la imaginación de los
estudiantes en movimiento, luz, sonido y retroalimentación del tacto para explorar nuevos
conceptos. Estas actividades sumergen a los estudiantes a una diversidad de principios
básicos en los campos de programación de computadoras, electricidad y electrónica,
matemáticas y física. Muchas de estas actividades facilitan la coordinación de mente y
manos al diseñar prácticas como las que utilizan los ingenieros y técnicos en la creación y
aplicación de máquinas modernas utilizando partes comunes y baratas.
Ademas, se han corregido la “fe de erratas” de la versión 2.2. El material conserva los
mismos objetivos, los mismos conceptos e instrucciones de programación y se incluyen los
nuevos conceptos. Finalmente, para facilidad en su uso, ha cambiado los números de
páginas para que la página del PDF y los números de página físicos sean los mismos.
Página 8 · ¿Qué es un Microcontrolador?
USUARIOS
Este texto está diseñado como puerta de entrada a la tecnología y el diseño con una curva
de fácil aprendizaje para programación 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 ingeniería pueden verificar su comprensión y habilidad de resolver
problemas con preguntas, ejercicios y proyectos (con solución) en el resumen de cada
capítulo. Los estudiantes autodidactas pueden trabajar a su propio ritmo y obtener ayuda a
través 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
multinúcleo y una línea 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 técnica 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 análisis y la
asistencia técnica para el Kit de Desarrollo de Juegos HYDRA relacionados con la
programació del microcontrolador Propeller.
Prefacio · Página 9
son las copias fotostáticas. Los archivos PDF no estan encriptados y puede seleccionar los
textos o imágenes para preparar en Power Point sus propias presentaciones.
CONTRIBUIDORES ESPECIALES
El equipo de Parallax que preparó esta edición, es Arístides Alvarez excelente lider del
departamento, el diseño de lecciones y escritura técnica lo hace Andy Lindsay; el diseño
del arte lo hace Jen Jabobs, las ilustraciones gráficas son de Rich Allred y Andy Lindsay;
la revisón tecnica la hizo Jessica Uelmen; la tipografía 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 contribución en la selección del sensor de
luz utilizado en esta versión que reemplaza al fotoresistor de sulfuro de cadmio.
Capítulo 1: Inicio
¿ACTUALMENTE CUÁNTOS 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 más seguro es que tengan como “cerebro” un microcontrolador programable.
Figura 1-1
Ejemplos cotidianos de
a´paratos que tienen
microcontroladores.
Traté de hacer un lista y cuente cuantos aparatos utiliza en un día normal. Estos son
algunos ejemplos, si su radio reloj se apaga, y presiona varias veces en la mañana la perilla
de su aparato, la primera acción de ese día es interactuar con un microcontrolador. Cuando
calienta alimentos en el horno de microondas y hace una llamada con su teléfono celular
también 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 interactúa con usted.
Las actividades de este texto lo guiarán a través de circuitos construidos similares a los que
tienen los aparatos de consumo y los dispositivos de alta tecnología. También escribirá
programas de computo que el módulo BASIC Stamp ejecutará. Estos programas harán que
el modulo BASIC Stamp monitoree y controle para que realice funciones útiles.
Página 12 · ¿Qué es un Microcontrolador?
Figura 1-2
Módulo del
Microcontrolador
BASIC Stamp 2.
Figura 1-3
Modelos del
BASIC Stamp 2,
de izquierda a
derecha BS2,
BS2e, BS2sx,
BS2p24, BS2p40,
BS2pe, BS2px
Los robots se han diseñado para diversas actividades desde ayudar a los estudiantes a
mejorar su aprendizaje de microcontroladores hasta resolver problemas complicados de
mecánica. 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 Boe-
Bot. Los proyectos del libro Robótica con el Boe-Bot los puede realizar usando el Boe-Bot
después de haber trabajado con las actividades de este libro. El de la derecha, llamado
Inicio · Página 13
Figura 1-4
Robots educativos.
Otros robots resuelven problemas complicados, como el robot autónomo de vuelos remotos
y que se muestra a la izquierda de la figura 1-5. Este robot lo construyeron y verificaron
estudiantes de Ingeniería Mecánica de la Universidad de California en Irvine. Utilizaron un
módulo BASIC Stamp para lograr la comunicación con un Sistema de Posicionamiento
Global por Satélite (GPS) para que robot pudiera conocer su posición 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 mecánico multipies de la derecha de la
Figura 1-5 lo desarrollaron profesores de la Universidad de Nanyang en Singapure. La
tablilla tiene más de 50 módulos 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 diseños
de la naturaleza sino que además se usan para explorar lugares remotos e incluso en otros
planetas.
Página 14 · ¿Qué es un Microcontrolador?
Figura 1-5
Robots de Investigación
que contienen
microcontroladores.
A la izquierda se muestra
el Robot de Vuelo
Autónomo de la
Universidad de California
en Irvin y a la derecha se
muestra el Robot
“ciempiés” Proyecto
Multipies de la
Universidad de Nanyang.
Con ayuda de los microcontroladores, los robots también pueden realizar tareas cotidianas,
por ejemplo limpiar el pasto. El módulo BASIC Stamp dentro del robot cortador de pasto
que muestra la figura 1-6 le indica cuales son los límites de esa superficie, y también lee
los sensores que detectan los obstáculos además de controlar los motores que lo mueven.
Figur 1-6
Módulo del
Microcontrolador de
BASIC Stamp 2.
Figura 1-7
Ejemplos de Microcontroladores
en la Industria Ambiental y
Aéreo espacial.
A la izquierda tenemos un
Sistema Colector de Datos
Ecológicos EME, en el centro
una Investigación Submarina
del Instituto Harbor Branch y a
la derecha se muestra el
lanzamiento de un cohete JP.
Desde aplicaciones caseras comunes hasta aplicaciones científicas y aéreo 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 construcción en los cuales se cimientan
todos estos inventos de alta tecnología. Usted construirá circuitos para pantallas, sensores y
controles de movimiento. Aprenderá como conectar estos circuitos al módulo 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 técnicas de electrónica y programación de microcontroladores. A su debido
tiempo encontrará el camino para inventar aparatos de sus propios diseños.
HARDWARE Y SOFTWARE
Iniciamos con módulos 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 algún software y quizá pueden escribir con algún software de su propiedad
usando un lenguaje de programación. Si esta es la primera vez que usa un módulo 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 situación
puede que su maestro le de otras indicaciones. Si no es su caso, en este capítulo le
guiaremos paso a paso para iniciar y poner en marcha el microcontrolador BASIC Stamp.
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:
Figura 1-8
Página del sotware del
Editor BASIC Stamp en
www.parallax.com/basicsta
mpsoftware
9 Haga click en el botón “Click Here to Download” para descargar la última versión
de software Editor de Windows de BASIC Stamp. (Figura 1-9).
Inicio · Página 17
Figura 1-9
Página del Botón de
descarga del editor
BASIC Stamp.
Figura 1-10
Ventana de Descargar
Archivo.
Figura 1-11
Ventana de Guardar
como.
9 Cuando vea “Descarga Completa”, haga click en el boton Run (Ejecutar). Figura
1-12).
9 Siga los Indicadores que aparecen. Puede ver mensajes del Sistema Operativo que
le preguntan que verifique si desea continuar con la instalación. Diga que Si Desea
continuar.
Figura 1-12
Mensaje de Descarga
Completa.
Confirme que sí
desea continuar.
9 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 · Página 19
Figura 1-13
Ventana de Instalador
del Editor BASIC
Stamp.
Haga click en
Siguiente.
Figura 1-14
Mensaje del
Instalación del Driver
USB.
Marque la ventanita
de Instalacion
Automática y de
click en SIGUIENTE.
Página 20 · ¿Qué es un Microcontrolador?
Figura 1-15
Listo para Instalar el
Programa.
Para continuar de un
click en “Instalar”.
En este punto, pudiera aparecer una ventana adicional detrás de la ventana actual mientras
se están 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 Comunicación 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 sólo son válidos para el Sistema
Operativo de Windows. En la liga www.parallax.com/usbdrivers encuentra usted mayor
información.
Figura 1-16
Instalación
completa del Editor
BASIC Stamp.
De un click en
“Terminar”
Figura 1-17
Icono del Editor BASIC
Stamp
Figura 1-18
Icono del Editor BASIC
Stamp
Cuando haya terminado las actividades del Archivo Ayuda, regrese a este libro y continue
con el siguiente resumen ante de pasar al capítulo 2.
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 teléfono. En Estados Unidos llame sin cobrar al 888-99-STAMP (888-997-8267).
Desde otros lugares llame a (916)524-8333.
Más recursos: Vaya a la liga www.parallax.com/support
RESUMEN
Este capitulo lo guió en las siguientes actividades:
• Una introducción a algunos aparatos que utilizan microcontroladores.
• Una introducción al módulo BASIC Stamp.
• Un paseo por algunos inventos interesantes fabricados con módulos BASIC
Stamp.
• Donde obtener el sofware Editor del módulo BASIC Stamp que usará
precisamente en los experimentos de este libro
• Como instalar el sofware Editor del módulo BASIC Stamp.
• Como usar la ayuda del Editor y el Manual del BASIC Stamp.
Página 24 · ¿Qué es un Microcontrolador?
Preguntas
1. ¿Qué es un Microcontrolador?
2. ¿El módulo 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 teléfono celular contiene un Microcontrolador?
4. ¿Qué significa un apostrofe en el principio de una línea de código de programa
PBASIC?
5. ¿ Qué instrucciones en PBASIC aprendió usted en este capítulo?
6. Pensemos que desea hacer una pausa en su proyecto BASIC Stamp para tomar un
café, o quiza tardarse un poco más y luego regresar a su proyecto después de un
par de días. ¡Qué debe hacer antes de tomarse un descanso?
Ejercicios
1. En esta instrucción, explique la operación del asterisco.
DEBUG DEC 7 * 11
3. Hay un problema con estas dos instrucciones. Cuando ejecuta el código, los
números que se muestran estan muy juntos de tal forma que parece un número
grande en lugar de dos números pequeños. Modifique estas dos instrucciones para
que las respuestas aperezcan en dos líneas diferentes en la Terminal Debug.
DEBUG DEC 7 * 11
DEBUG DEC 7 + 11
Inicio · Página 25
Proyectos
1. Use la Terminal DEBUG para mostrar la solución del problema matemático
1+2+3+4-
2. Guarde su primer programa Turn.bs2 con otro nombre. Si fuera a colocar la
instrucción DEBUG mostrada justamente debajo de la instrucción END, del
programa, ¿cuales otras líneas debería usted borrar para que hiciera el mismo
trabajo?
3. Modifique la copia del programa para verificar su hipótesis (su predicción 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 electrónicos.
Q2. El módulo 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 alimentación 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 multiplicación.
E2. La Terminal Debug mostrará: 18
E3. Para resolver el problema agrerue un retorno (carriage retur) usando CR control
carácter y coma.
DEBUG DEC 7 * 11
DEBUG CR, DEC 7 + 11
END
Página 26 · ¿Qué es un Microcontrolador?
P2. Se pueden quitar las 3 últimas línes DEBUG. Se necesita otro CR depues del
Mensaje “Hello”
END
El resultado es el mismo que genera el código anterior. Este es un ejmplo del uso
de comas en la salida para sacar mucha información usando solamente una
instrucción DEBUG con sus múltiples elementos.
Encendiendo y Apagando Luces · Página 27
Figura 2-1
Luces indicadoras.
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 más fácil que manualmente
cambiar el alambrado del circuito para conectar y desconectar la bateria.
La BASIC Stamp también puede programarse para que haga lo siguiente:
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: Ω. Más adelante en este libro verá que K significa kΩ, -o mil ohms. El resistor con
el que usted trabajaráen 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
cerámica que se opone al flujo de corriente. La mayoría de los diagramas de circuitos
muestra el resistor como una linea quebrada de la izquierda y esto identifica un resistor de
470 Ω. A esta línea quebrada se le llama símbolo esquemático. 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 dónde se debe colocar al contruir su circuito.
Encendiendo y Apagando Luces · Página 29
Los resistores utilizados en esta actividad tienen franjas de colores. Hay una combinación
diferente de colores que le indican el valor del resistor. Por ejemplo, el código 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 dígito. Estos colores/dígitos 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
Código de Colores
del Resistor
Digito Color Figura 2-3
Tolerance Código de
0 Negro Code Colores de los
1 Café resistores
2 Rojo
3 Naranja Primer Dígito;
First Digit Number of Zeros Segundo
4 Amarillo
Second Digit dígito;
5 Verde Número de
6 Azúl ceros.
7 Violeta
8 Gris
9 Blanco
Página 30 · ¿Qué es un Microcontrolador?
Este es un ejemplo que muestra la Tabla 2-1 y la Figura 2-3 y en combinación se usan para
encontrar el valor de un resistor con amarillo-violeta-café y vale 470 Ω:
Amarillo-Violeta-Café = 470 Ω.
Conociendo el LED
Un diodo es una válvula unidireccional, y un diodo emisor de luz (LED) emite luz cuando
una corriente pasa por él. A diferencia del código 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 asegúrese de conectarlo correctamente en su circuito si no lo hace,
éste no funcionará.
La Figura 2-4 muestra el símbolo 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 atención para asegurarse que el ánodo y el cátodo
están conectados correctamente. En el dibujo la terminal del ánodo se asocia con el signo
positivo (+). En el símbolo esquemático, el ánodo es la parte ancha del triángulo. En el
dibujo la terminal del cátodo no tiene indicación pero en el esquemático es la raya vertical
frente al triángulo.
Figura 2-4
Dibujo de un LED y símbolo
esquemático
LED
Encendiendo y Apagando Luces · Página 31
Identificación de Partes. Además de los dibujos de la figura 2-2 y figura 2-4 usted puede
usar la foto de la última página del libro para ayudarse a identificar los componentes del kit
utilizados en esta y otras actividades.
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 están conectados estre sí mismos. Si usted conecta dos
alambres en el mismo grupo de 5 terminales, ellos harán contacto eléctrico. Dos alambres
en la misma fila pero de lados separados por la canal no hacen contacto entre ellos.
Muchos dispositivos está diseñados para colocarse en esta forma, por ejemplo los botones
push que usaremosen el capítulo 3.
Más 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
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:
Figura 2-6
Vdd Vin Vss Led Iluminado, conectado
Vdd X3 directamente a la alimentación.
+
P15
P14 En la izquierda está el esquemático,
P13
470 Ω P12 en la derecha el diagrama de
P11 alambrado.
P10
P9
P8 Observe que una terminal del
LED P7
P6
resistor y la del ánodo del LED
P5 verde están conectadas en el
P4 mismo grupo de 5 conectores. Así
P3
Vss P2 se conectan electricamente los dos
P1 componentes.
P0
X2
9 Algunos LEDs brillan más cuando se miran desde arriba. Trate de ver lu luz desde
arriba.
9 Si su cuarto está muy iluminado apague algunas lámparas o trate de ver el haz
sobre sus manos.
Si aún así no puede ver la luz verde del LED, haga lo siguiente:
-
- - Figura 2-7
+ - Flujo de electrones iluminando el
N
- - LED { XE”Electron”}
N N
+++ + + -
+++ = N - - El signo menos encerrado en el
+++
--- - círculo se usa para mostrar
- - -N - - electrones circulando desde el
_
-N - N negativo de la batería hasta la
- -
- terminal positiva.
- - - - -
La figura 2-8 muestra como se usa la notación esquemática para describir el flujo de
electricidad en el circuito del LED. Se llama VOLTAJE a la presión 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 través del circuito. Esta flecha casi siempre
apunta en el sentido opuesto de la dirección 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 científicos descubrieron el sentido verdadero del
flujo de electrones, pero ya estaba establecido el punto de vista de B. Franklin.
Vdd
Voltage +
Figura 2-8
Resistance Sentido convencional de corriente del
circuito LED.
Current
Los signos + y – aplicados al circuito
LED y la flecha de corriente muestran el
flujo de corriente a través del circuito.
Voltage - Vss
Dibujo del esquemático (como figura2-8) es una imagen que explica como se conectan
uno o más circuitos. Los esquematicos son utilizados por estudiantes, hobistas,
electricistas, ingenieros y todos los que saben trabajar con circuitos eléctricos.
Anexo B. Otros Conceptos de Electricidad, es un anexo que contiene un glosario de
términos y actividades para familiarizarse más con mediciones de voltaje, corriente y
resistencia.
¿Por qué no se ilumina el LED? Como las dos terminales del circuito están 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.
Figura 2-10
SOUT 1 24 VIN SOUT 1 24 VIN
SIN 2
BS2
23 VSS SIN 2
BS2
23 VSS BASIC Stamp
ATN
VSS
3
4
22
21
RES
VDD (+5V)
ATN
VSS
3
4
22
21
RES
VDD (+5V)
Conmutando
P0 5 Vdd 20 P15 P0 5 Vdd 20 P15
P1 6 19 P14 P1 6 19 P14 El BASIC Stamp
P2 7 Vss 18 P13 P2 7 Vss 18 P13
P3 8 17 P12 P3 8 17 P12 puede
P4 9 16 P11 P4 9 16 P11 programarse
P5 P10 P5 P10
internamene
10 15 10 15
P6 11 14 P9 P6 11 14 P9
P7 12 13 P8 P7 12 13 P8 para conectar
BS2-IC BS2-IC un LED a Vdd o
Vss.
Hay dos grandes diferencias entre cambiar la conexión manualmente y hacerlo con el
BASIC Stamp. Primero, el BASIC Stamp no tiene que cortar la alimentación del área de
experimentos cuando se hace el cambio físico 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.
Los resistores son necesarios. Recuerde siempre usar un resistor. Sin el resistor circula
mucha corriente a través del circuito y puede dañar a los elementos del circuito, al BASIC
Stamp y a la Tablilla de Experimentos.
'{$STAMP BS2}
'{$PBASIC 2.5}
DO
HIGH 14
PAUSE 500
LOW 14
PAUSE 500
LOOP
Funcionamiento de LedOnOff.bs2
La instrucción DEBUG “The LED connecto to p14 is blinking!” hace que esta frase
aparezca en la Terminal DEBUG. La insrucción HIGH 14 hace que internamente la
BASIC Stamp conecte la terminal 14 a Vdd. Y esto hace que el LED se ilumine.
La instrucción PAUSE 500 hace que el BASIC Stamp no haga nada durante ½ segundo
mientras el LED está iluminado. El número 500 hace que la instrucción PAUSE espere
500/1000 de segundo. El número que sigue de PAUSE se le llama argumento, Los
argumentos le dan a las instrucciones PBASIC la información necesaria para ejecutarse. Si
usted ve PAUSE en el manual BASIC Stamp descubrira que a este número se le llama
Duration del Argumento. El nombre Duration se escogió para este argumento para mostrar
que la instrucción PAUSE se detiene cierta duración de tiempo y se expresa en
milisegundos.
La razón por la que el código se repite a si mismo en forma siempre contínua 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 código que enciende y apaga el
LED con pausas en DO y LOOP, le informa al BASIC Stamp que ejecute estas cuatro
Página 40 · ¿Qué es un Microcontrolador?
DO
HIGH 14 Figura 2-12
PAUSE 250 DO...LOOP
LOW 14 El código colocado entre las palabras
PAUSE 250 DO y LOOP se ejecuta en forma
continua.
LOOP
Si el LED parpadea en forma contínua, como lo hacía con el programa original cuando
tenía la instrucción DEBUG, su computadora no tiene este problema.
Justamente después de las directivas del compilador. Esto abrirá la Terminal Debug y
mantendra el puerto COM abierto. Esto asegurará que sus programas no se detengan
después que pasen por DO...LOOP o cualquier otras instrucciones de Bucle que aprenderá
en los últimos capítulos. Usted verá estas instrucciones en algunos de los programas
ejemplo que no utilizarían una instrucción 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 pequeña instrucción
DEBUG cuando empiece a escribir sus propios programas.
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 después de HIGH 14 con 1
segundo usando PAUSE 1000. La PAUSe después de LOW 14 debe ser PAUSE 2000.
DO
HIGH 14
PAUSE 1000
LOW 14
PAUSE 2000
LOOP
Un experimento agradable es ver que tan cortas pueden ser las pausas y todavía ver
parpadear al LED. Cuando el LED parpadea muy rápido pero el ojo percibe que no
parpadea, a esto se le llama Persistencia de la Visión.
HIGH 14
PAUSE 1000
LOW 14
PAUSE 2000
' LOOP
varias condiciones. En esta actividad, usted programara al BASIC Stamp para que el LED
parpadee 10 veces.
¿Cuántas veces?
Hay varias formas para hacer que el LED parpadee 10 veces. La forma más simple es
usando el par de instrucciones de bucle: FOR...NEXT. El bucle FOR…NEXT es similar al
bucle DO…LOOP. Cualquiera de los dos bucles se pueden usar para repetir instrucciones
un número determinado de veces. Es más sencillo usar el bucle FOR…NEXT. A este
proceso a veces se le llama Conteo o Bucle Finito.
El bucle FOR...NEXT depende de una variable para ajustar el número de veces que el LED
parpadea. Una variable es una palabra de su elección que se usa para almacenar un valor.
El siguiente programa ejemplo eligió la palabra counter para “contar” las veces que el LED
parpadea.
FOR counter = 1 TO 10
DEBUG ? counter
HIGH 14
PAUSE 500
LOW 14
PAUSE 500
NEXT
END
Le indica al Editor BASIC Stamp que su programa usará la palabra “counter” como una
variable de puede almacer un byte de información
Encendiendo y Apagando Luces · Página 45
Una instrucción DEBUG puede incluir “formatos” que determinan cuanta información
deberá mostrar la Teminal Debug. Colocando el signo de interrogación “?” antes de una
variable en un instrucción DEBUG le indica a la Terminal Debug que muestre el nombre
de la variable y su valor. De la siguiente forma:
DEBUG ? counter
El bucle FOR...NEXT y todas sus instrucciones se muestra más 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 instrucción 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 están entre FOR y NEXT y se mueve a la
instrucción que está depués de NEXT.
FOR counter = 1 to 10
DEBUG ? counter
HIGH 14
PAUSE 500
LOW 14
PAUSE 500
NEXT
Página 46 · ¿Qué es un Microcontrolador?
Esta instrucción se incluye justamente para mostrar lo que hace el programa después de 10
veces del bucle FOR...NEXT. Se mueve a la instrucción que sigue a NEXT.
Un LED amarillo
Un resistor de 470 Ω (amarillo-violeta-café).
Encendiendo y Apagando Luces · Página 47
Figura 2-14
Vdd Vin Vss
X3 + Conexión del
+ segundo LED
P15
P14
al BASIC
P15 P13 Stamp
470 Ω P12
P11
P14 P10 En la parte
470 Ω P9 izquierda el
P8
P7 esquemático
LED LED
P6 y en la parte
P5
P4
derecha el
Vss Vss P3 diagrama de
P2 cableado.
P1
P0
X2
DO
Encendiendo y Apagando Luces · Página 49
HIGH 15
PAUSE 500
LOW 15
PAUSE 500
LOOP
DO
HIGH 14
HIGH 15
PAUSE 500
LOW 14
LOW 15
PAUSE 500
LOOP
HIGH 14
LOW 15
PAUSE 500
LOW 14
HIGH 15
PAUSE 500
Figura 2-15
LED Bicolor en un
Aparato de Seguridad.
Figura 2-16
LED Bicolor.
A la izquierda está su
símbolo 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.
Vdd
1 Vin 2 Vss Vdd
2 Vin 1 Vss
X3 X3
Figura 2-18
P15 P15
P14 P14 Prueba manual del
P13 P13 LED Bicolor.
P12 P12
P11 P11
P10 P10 En la izquierda está
P9 P9
P8 P8 el LED Bicolor verde
P7 P7 y en la derecha el
P6 P6
P5 P5
rojo.
P4 P4
P3 P3
P2 P2
P1 P1
P0 P0
X2 X2
Para controlar un LED Bicolor con el BASIC Stamp se requieren dos pines E/S. Después
que usted ha verificado manualmente que el LED Bicolor funciona usando la prueba
Encendiendo y Apagando Luces · Página 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
esquemático y a la
derecha el alambrado.
El esquemático 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 dirección
contraria.
Página 54 · ¿Qué es un Microcontrolador?
2
LOW = Vss P14 Figura 2-20
470 Ω Circuito de Prueba del
LED Bicolor.
Current
2
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 esquemático superior muestra el LED Bicolor en verde usando HIGH 15 y
LOW 14. El esquemático 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.
PAUSE 1000
DEBUG "Program Running!", CR
Encendiendo y Apagando Luces · Página 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
FOR counter = 1 to 50
HIGH 15
LOW 14
PAUSE counter
LOW 15
HIGH 14
PAUSE counter
NEXT
DO
FOR counter = 1 to 50
HIGH 15
LOW 14
PAUSE counter
LOW 15
HIGH 14
PAUSE counter
NEXT
LOOP
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 cátodo 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 códigos más comunes para conocer el valor del resistor.
Esta se utilizó para que el LED se mantenga apagado o encendido cierta cantidad de
tiempo. La cantidad de tiempo la determina el número usado en el valor de “Duration” de
la instrucción PAUSE.
Encendiendo y Apagando Luces · Página 57
El bucle DO...LOOP se puede usar para crear un bucle infinito. Las instrucción localizadas
entre DO y LOOP son palabras clave que se ejecutarán una y otra y otra vez. Aunque esta
acción se llama bucle infinito, el programa puede reiniciarse conectactando y
desconectando la alimentación o presionando y liberando el boton RESET. También 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 número de repeticiones que el bucle tiene que hacer y números para especificar
donde comenzar y terminar el CONTEO:
Estudiamos la Dirección 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 dirección, y este se
iluminará de un color particular. Si se invierte la polaridad del Voltaje, la corriente lo
atravieza en dirección inversa y éste se ilumina con un color diferente.
Preguntas
1. ¿Cúal es el nombre de la letra Griega: Ω, y que unidades tiene Ω?
2. ¿Que resistor deja pasar más corriente en un circuito, uno de 470 Ω o uno de 1000
Ω?
3. ¿Cómo 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. ¿Cuánto dura la instrucción PAUSE 10000?
6. ¿Cómo hace usted que el BASIC Stamp no haga nada durante un minuto?
7. ¿Cuáles son los diferentes tipos de variables?
8. Cabe el valor 500 en un Byte?
9. ¿Qué hace la instrucción 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
modificaría el programa LedOnOff.bs2 para que haga que parpadee su circuito
LED cuatro veces por segundo.
2. Explique como modificaría el programa LedOnOffTenTimes.bs2 para hacer que
parpade el circuito LED 500 veces antes de detenerse. Sugerencia: Solamente
necesita modificar dos líneas del código.
Página 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.
Después 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 oposición al flujo de
corriente.
Q2. Un resistor de 470 Ω: a mayor valor ohmico mayor oposición, 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 Alimentación.
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 Duración 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 DO
470 Ω HIGH 13
LED PAUSE 125
LOW 13
PAUSE 125
Vss LOOP
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 después que el programa ejecuta una instrucción END. Hay
otra instrucción llamada “STOP” que usted puede agregar al final de los
programas para hacer que mantenga las señales HIGH/LOW sin ir al modo de bajo
consumo, evitando así el parpadeo.
P13
470 Ω
Yellow
LED
Vss
FOR counter = 1 TO 10
HIGH 13 ' LED Amarillo Encendido
PAUSE 500
LOW 13 ' LED Amarillo Apagado
PAUSE 500
NEXT
Otras palabras que significan mandar, high/low y recibir: Mandar señales high/low son
descritas de diferentes formas. Tú puedes mandar señales cuando estás Transmitiendo,
Controlando o Conmutando. En lugar de high/low decimos binario, o niveles de lógica TTL,
o niveles de lógica CMOS o señales Booleanas. Otra palabra para “recibir” es “sensar.”
La misma regla se aplica para las terminales 2 y 3. La razón por la cual el botón push no
tiene solamente dos terminales es poque necesita estabilidad. Si el botón push sólo tuviera
dos terminales es porque éstas podrian eventualmente doblarse y romperse por la presión
que recibe cuando los usuarios lo presionan.
Figura 3-1
1, 4 Botón Push Normalmente Abierto
1 4
2, 3 2 3 En la izquierda está el símbolo y a la
derecha un dibujo.
El lado izquierdo de la figura 3-2 muestra como se ve un botón push normalmente abierto
cuando no está presionado. Cuando el botón 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 botón, 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 través del botón push.
Figura 3-2
1, 4 1, 4 Botón Push Normalmente Abierto
2, 3 2, 3
A la izquierda está sin presionar, a la
derecha está presionado.
2, 3 2, 3 En la izquierda el botón
push sin presionar es un
circuito abierto y no hay
No 470 Ω 470 Ω luz.
Current Current
En la derecha el botón
esta presionado y es un
LED LED
circuito cerrado y emite
luz.
Vss Vss
¿Se puede conectar de esta forma el LED? Hasta ahora, el cátodo 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 conexión no rompe las leyes del circuito y
la respuesta es no. La presión eléctrica 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
estén conectados.
Figura 3-6
Vdd Vin Vss Circuito Botón
X3 Push conectado al
P15 pin P3.
Vdd P14
P13
P12 En el diagrama de
P11 alambrado el
P10
P9
resistor de 220 Ω
P8 del lado izquierdo
P7 conecta el botón
P3 P6
P5 push a P3
220 Ω
10 kΩ
P4 mientras que el
P3
P2 resistor de 10 KΩ
P1 de la derecha
P0
Vss X2 conecta al botón
push a Vss.
La figura 3-7 muestra como el BASIC Stamp ve cuando el botón push está presionado y
cuando no está presionado. Cuando el botón push está presiondado, el BASIC Stamp sensa
que Vdd se conecta a P3. Internamente el BASIC Stamp coloca un “1” lógico en un parte
de su memoria que almacena la información de los pines de Entrada/Salida. Cuando el
botón push no está presionado, no sensa Vdd, senda Vss a través del los resistores de 10 Ω
y 220 Ω. Y ahora se almacena un “0” lógico en la misma localidad de memoria que
almacenó el “1” cuando el botón push estaba presionado.
Entrada Digital – Botón Push · Página 67
BS2-IC
botón push.
Vss
Arriba, cuando está
Vdd presionado el botón el
SOUT
SIN
1
2
24
23
VIN
VSS
BASIC Stamp lee un “1”
ATN 3
BS2 22 RES Abajo, cuando no está
VSS
P0
4
5
21
20
VDD (+5V)
P15
presionado el botón el
P1 6 19 P14 BASIC Stamp lee un “0”
P2 7 1 18 P13
P3 8 17 P12
P4 9 0 16 P11
220 Ω P5 10 15 P10
10 kΩ P6 11 14 P9
P7 12 13 P8
BS2-IC
Vss
Binario y Circuitos. Para formar números el sistema de base-2 números 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 común de comunicación de números binarios usada por muchos
chips de computadoras y otros dispositivos.
Figura 3-8
La Terminal Debug muestra los
Estados del botón push.
DO
DEBUG ? IN3
PAUSE 250
LOOP
Funcionamiento de ReadPushbuttonState.bs2
El bucle DO...LOOP en el programa se repite cada ¼ de segundo por la instrucción
PAUSE 250. Cada vez que se ejecuta DO...LOOP, la instrucción 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 instrucción DEBUG.
Entrada Digital – Botón Push · Página 69
El resistor de 220Ω se usa en este ejemplo para proteger el pin E/S del BASIC Stamp.
Esta es una buena técnica 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)
Low Activo vs High Activo. El circuito botón push de la Figura 3-9 se llama Low activo
poque manda a el BASIC Stamp una señal baja (Vss) cuando el botón está presionado. El
circuito botón push de la Figura 3-6 se llama High activo poque manda una señal alta
(Vdd) cuando el botón está presionado.
Página 70 · ¿Qué es un Microcontrolador?
Figura 3-10
Botón 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 botón.
P14
470 Ω
LED Vdd Vin Vss
X3
+
Vss P15
P14
P13
Vdd P12 Figura 3-11
P11
P10 Botón push y
P9 circuito LED.
P8
P7
P3 P6
P5
220 Ω P4
10 kΩ P3
P2
P1
P0
Vss X2
DO
DEBUG ? IN3
IF (IN3 = 1) THEN
HIGH 14
PAUSE 50
LOW 14
PAUSE 50
ELSE
PAUSE 100
ENDIF
LOOP
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 Código
[XE”Pseudo Código”} y el ejemplo de abajo utiliza el pseudo código para describir el
funcionamiento de PushbuttonControlledLed.bs2.
• Haga varias veces las instrucciones que están entre Aquí y la instrucción 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 – Botón Push · Página 73
9 Construya el circuito que muestra la Figura 3-12. Si necesita ayuda para el circuito
mostrado en el diagrama, use como guía el diagrama de alambrado que muestra la
Figura 3-13.
9 Modifique el programa ReadPushbuttonState.bs2 para que ahora lea IN4 en lugar
de IN3, y úselo para verificar su segundo circuito botón push.
Página 74 · ¿Qué es un Microcontrolador?
P15
470 Ω
P14
470 Ω
LED LED
Vss Vss
Figura 3-12
Diagrama Esquemático
Vdd Vdd de los Botones push y
LEDs.
P4
220 Ω
P3
220 Ω
10 kΩ 10 kΩ
Vss Vss
Los Puntos indican conexiones. Hay 3 lugares donde se intersectan las líneas en la
Figura 3-12, pero solamente dos de estas intersecciones tienen puntos. Cuando dos líneas
se insersectan con un punto, esto significa que están 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 botón 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
ESTÁN conectadas eléctricamente. Por ejemplo, la línea que conecta a P4 deñ botón push
y el resistor de 10 KΩ no está conectado con P3 del botón push porque no hay punto en
esa intersección.
Entrada Digital – Botón Push · Página 75
PAUSE 1000
DO
Página 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
Al mandar el curso a la posición izquierda superior cada vez a través 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 – Botón Push · Página 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
Es hora de apagar el LED y hacer pausa otra vez. Tu podrías tratar de decidir que LED
quieres que parpadee. Las instrucciones de PBASIC lo ejecutan bonito y rápido, entonces
¿podemos apagarlos y olvidarnos de tomar decisiones?
LOW 14
LOW 15
PAUSE 50
Ejecute su programa modificado y vea si maneja los dos botones push y los circuitos LED
como usted esperaría.
La palabra clave AND se puede usar en una instrucción IF...THEN para verificar si es
verdadera más de una condición. 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.
También 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
Instrucción 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.
1 2
Vdd Vin Vss
X3
2
P14 P15
470 Ω P14 Figura 3-14
P13
P12 Circuito del
Vdd P11
Juego
P10
P9 Tiempo de
P8 Reacción
P7
P6
P3 P5
P4
220 Ω P3
10 kΩ P2
P1
P0
X2
Vss
Página 80 · ¿Qué es un Microcontrolador?
El programa ejemplo también muestra como funcionan los conceptos “polling” y conteo.
Polling es el proceso de verificar algo una vez y otra vez muy rápidamente para ver si este
proceso ha cambiado. Conteo es el proceso de agregar un número 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 botón push. Este
esperará 1/1000 de segundo usando la instrucción PAUSE 1. Cada vez que verifica y el
botón no se ha liberado, agregará un 1 a la variable de Conteo llamada timeCounter.
Cuando el botón 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.
Figura 3-15
Instrucciones de Tiempo de
Reacción en la Terminal Debug.
Entrada Digital – Botón Push · Página 81
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
PAUSE 1
timeCounter = timeCounter + 1
DEBUG "Your time was ", DEC timeCounter, ' Muestra medición de tiempo.
" ms.", CR, CR,
"To play again, hold the ", CR, ' Instrucciones para jugar otra vez.
"button down again.", 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.
Merece nuestra atención el bucle interno DO...LOOP. Un bucle DO...LOOP puede usar
una condición 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 botón 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 instrucción después de la frase
LOOP UNTIL. Este es un ejemplo de “Polling.” El bucle DO...LOOP UNTIL verifica
hasta que se presiona el botón 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 14 ‘LED Bicolor en rojo
LOW 15
PAUSE 100 ‘Retardo de 1 segundo
LOW 14 ‘LED Bicolor en verde
Entrada Digital – Botón Push · Página 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 botón push. La variable timeCount se
ajusta en cero, y entonces otro bucle DO...LOOP con la condición UNTIL empieza a
repetirse a si mismo. Y se repite así mismo hasta que el jugador liber el botón push
(IN3=0). Cada vez que pasa por el bucle, el BASIC stamp lo retarda 1 milisegundo usando
PAUSE 1, y también 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 botón push
La última frase del programa es LOOP, que regresa al programa al primer DO.
9 Haga que PAUSE 1 sea un comentario y verifique para ver la exactitud del
programa.
Para mayor Precisión usted puede usar el operador “*/” para multiplicar un valor con una
fracción. No es dificil usar el operador */ así se hace:
1. Coloque el valor o variable que desea multiplica por un valor fraccional antes del
operador */.
2. Tome el valor fraccional que usted desea usar y multiplíquelo por 256.
3. Redondee el valor a la derecha del punto decimal.
4. Coloque el valor redondeado después del operador */.
Ejemplo: Deseamos multiplicar la variable timeCounter por 3.
1. Coloque timeCounte a la izquierda del operador */
timeCounter = timeCounter */
2. Multiplique el valor fraccional por 256: 3.69x256 = 944.64
3. Redondee 944.64 a 945
4. Coloque el valor a la derecha del operador */
timeCounter = timeCounter */ 945 ‘multiplique por 3.69
Entrada Digital – Botón Push · Página 85
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 más
precisos sus resultados.
9 Inténtelo.
9 Justo antes de la instrucción PAUSE 1000 dentro del bucle DO...LOOP, use la
instrucción RANDOM para darle a “value” un nuevo valor “random” de la
secuencia de un pseudo random que empieza con 23.
LOW 14
HIGH 15
9 Como el valor más grande que puede almacenar un Byte es 255, la instrucción
PAUSE solamente varía ¼ de segundo. Usted puede multiplicar la variable value
por 4 para hacer que el retardo de luz roja varíe desde 1 hasta justamente 2
segundos.
DEBUG "Delay time ", ? 1000 + (value*4), CR ' <- Modifique
PAUSE 1000 + (value * 4) ' <- Modifique esto nuevamente
Problema 3. Un jugador que presiona el botón 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 código se introdujo cerca del final de la Actividad #3 en este capítulo. Aquí
están algunos pseudo códigos 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 botón antes que la luz sea verde el timeCounter será ahora 2 en lugar de 1.
Los cambios abajo mostrados harán que funcione el timeCounter ya sea valga 1 o 2.
9 Modifique su programas para crear este pseudo código en PBASIC para así
resolver el problema de hacer trampa.
RESUMEN
Este capítulo introdujo el botón push y algunos circuitos comunes con botón push.
También introdujo como construir y verificar un circuito botón push y como usar el
BASIC Stamp para leer el estado de uno o más botones push. Se programó el BASIC
Stamp para tomar decisiones basado en el estado (s) de los botones push y ésta
información se utilizó para controlar LEDs.
Preguntas
1. ¿Cuál es la diferencia entre mandar y recibir señales HIGH y LOW usando el
BASIC Stamp?
2. ¿Respecto a un botón push, que significa “normalmente abierto”?
3. ¿Qué sucede entre las terminales de un botón normalmente abierto cuando se
presiona?
4. ¿Cuál es el valor de IN3 cuando se conecta un botón push a Vdd? ¿Cuál es el valor
de IN3 cuando se conecta un botón push a Vss?
5. ¿Qué hace la instrucción DEBUG ? IN3?
Página 88 · ¿Qué es un Microcontrolador?
6. Qué clase de bloques de código se pueden usar para tomar decisiones basadas en
el valor de uno o más 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
botón 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 botón 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 botón 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 botón 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 través del botón push.
Q4. IN3 = 1cuando el botón se conecta a Vdd. IN3 = 0 cuando el botón 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 IF…THEN…ELSE y IF…ELSEIF…ELSE.
Q7. El control de caracteres HOME manda al cursor a la posición izquierda superior
de la Terminal Debub.
E2. Para leer el pin P6 reemplace IN3 con IN6. El programa sólo muestra el estado del
botón push, y no usa el valor para tomar decisiones, por eso no importa si el
resistor es pull-up o pull-down. La instrucción DEBUG mostrará cualquier estado
del botón.
DO
DEBUG ? IN6
PAUSE 250
LOOP
P1. Primero se agregó un botón push para el segundo jugador y se conectó al BASIC
Stamp en el pin P4. El esquemático es el de la Figura 3-13.
Vdd Vdd
P15
1
P4 P3
220 Ω 220 Ω
10 kΩ 10 kΩ
2
P14
470 Ω
Vss Vss
Abajo se incluyen secciones del programa solución, pero recuerde que las
soluciones pueden codificarse de diferentes maneras. Sin embargo, la mayoría de
las soluciones inclurán las siguentes modificaciones:
Espere que los dos botones estén presionados antes que el LED sea rojo, usando el
operado AND.
LOOP UNTIL {IN3 = 1} AND {IN4 = 1}
Página 90 · ¿Qué es un Microcontrolador?
Espere que los dos botenes se liberen para el tiempo final, y use nuevamente el
operador AND.
IF (IN3 = 1) THEN
timeCounterA = timeCounterA + 1
ENDIF
IF (IN4 = 1) THEN
timeCounterB = timeCounterB + 1
ENDIF
Sume lógicamente para mostrar que jugador tiene el tiempo de reacción más
rápido.
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
DO
PAUSE 1
IF (IN3 = 1) THEN ' Si el botón todavía está presionado,
timeCounterA = timeCounterA + 1 ' incremente el contador
ENDIF
IF (IN4 = 1) THEN
timeCounterB = timeCounterB + 1
ENDIF
LOOP UNTIL (IN3 = 0) AND (IN4 = 0) ' Esta en bucle hasta que ambos
' botones se liberen.
LOW 15 ' LED Bicolor apagado.
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
PRESENTANDO AL SERVOMOTOR
Un motor servo para hoby es un dispositivo que controla la posición, 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 timón en posición
para dar vueltas. Los aviones RC típicamente tienen varios servos para la posición de los
diferentes alerones para controlar el movimiento del avión. En vehículos impulsados por
máquinas de gas, otro servo mueve la leva de la máquina para controlar su velocidad. Un
ejemplo de un avión RC y su radio control lo muestra la Figura 4-1. El hobista vuela el
avión manipulando la palanca del joystic del radio control, y éste hace que los servos del
avión controlen las posiciones de los alerones y el timón del avión.
Página 94 · ¿Qué es un Microcontrolador?
Figura 4-1
Modelo de Avión y su
Radio control.
¿Entonces, cómo mantiene el joystich del radio control una cierta posición que hace que el
alerón del avión mantenga cierta posición? El radio control convierte la posición del
joystick en pulsos de radio que duran cierta cantidad de tiempo. El tiempo que dura cada
pulso indica la posición de uno de los joysticks. En el avión RC, un radio-receptor
convierte estos pulsos de radio en pulsos digitales. (señales high/low) y las manda a los
servos del avión. Cada servo tiene un circuito interno que convierte estos pulsos digitales a
una posición que conserva el servo. La cantidad de tiempo que duran cada pulso es lo que
le indica a los servos la posición que deben mantener. Estos pulsos de control sólo duran
unas pocas milésimas de segundo, y se repiten cada 40 a 50 veces por segundo para hacer
que el servo mantenga la posición indicada.
La Figura 4-2 muestra un dibujo del Servo Normalizado de Parallax. El conector se usa
para conectar el servo a la alimentación (Vdd y Vss) y a la Fuente de Señal (un pin E/S del
BASIC Stamp). El cable (2) tiene tres alambres que van a Vdd, Vss y a la línea de señal
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 móvil 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 señales high/low del BASIC
Stamp y las convierte en posiciones que mantiene la estrella del servo.
Controlando el Movimiento · Página 95
Figura 4-2
3 Servo Normalizado de
1 Parallax
(1)Conector
(2)Cable
4 (3)Estrella
(4)Tornillo de sujeción
del la estrella a la flecha
del servo
(5)Caja
En este capítulo, usted programará el BASIC Stamp para mandar señales a un servo que
controla la posición de la estrella del servo. Al hacer que BASIC Stamp mande señales que
le indiquen al servo que mantenga diferentes posiciones, sus programas también pueden
organizar el movimiento del servo. Sus pogramas, incluso, pueden monitorear botónes
push y usar la información para conocer que botones push están presionados y ajustar la
posición que el servo mantiene (control de posición servo de botones push). El BASIC
Stamp también puede programarse para recibir mensajes que usted teclea en la Terminal
Debug y usar esos mensajes para controlar la posición del servo (control de posición servo
de la terminal).
El circuito LED se usará para monitorear las señales que manda el BASIC Stamp al servo.
Recuerde que el circuito LED no se necesita para que el servo funcione. Sólo se usa para
que le ayude a “ver” las señales de control
Precaución. 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.
9 Si todavía no sabe que tablilla y revisión tiene, abra BASIC Stamp Editor Help y
haga click en la liga: Getting Started with Stamps in Class de la Página Principal.
Ahora, siga las indicaciones para determinar que Tablilla tiene.
9 Si usted tiene una Tablilla con puerto USB (cualquier revisión) o Serie (Revisión
C o más nueva) vaya a la sección de abajo de Stamp HomeWorkBoard Servo
Circuit
9 Si usted tiene una Tablilla (Revisión C o más recientes va a Stamp
HomeWorkBoard Servo Circuit de la página 99.
9 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 página 101.
Reset
Figura 4-3
Desconecte la fuente.
Ponga en 0 el interruptor de 3
0 1 2 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
alimentación 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.
9 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 más cercanos a la etiqueta Vdd.
P14
470 Ω
LED Figura 4-5
Esquemático del
Servo y LED
Vss indicador de la
Vdd Tablilla.
Se utiliza en
White Tablillas con puerto
P14
serie revisión C o
Red
Servo más recientes, o
Black con cualquier
versión de Tablilla
con puerto USB.
Vss
15 14 Vdd 13 12
White
Red Red
Black Black
X4 X5
Vdd Vin Vss
X3
+
P15
Figura 4-6
P14 Servo e indicador
P13
P12 LED de la Tablilla de
P11 Educación
P10
P9
P8
P7
P6
P5
standard servo
P4
P3 www.parallax.com
P2
P1
P0
X2
Reset
Figura 4-7
Alimentación a la Tablilla del
Conector del Servo.
0 1 2
En este capítulo cuando vea las instrucción “Energic su Tablilla” mueva a la posicion 2 el
interruptor de 3 posiciones. De igual forma cuando vea las instrucciónes “Desconecte la
Alimentación de su Tablilla” mueva a la posición 0 el interruptor de 3 posiciones.
Figura 4-8
Parte extra de 3 pines macho/macho
de la tablilla BASIC Stamp.
La Figura 4-9 muestra el esquemático de los circuitos servo y LED en su Tablilla BASIC
Stamp. Las instrucciónes que siguen después de la figura le mostrarán como construir con
seguridad este circuito.
P14
470 Ω
LED
Vss
Vdd Figura 4-9
Esquemático del servo y
LED indicador en la
P14 White Tablilla.
Red
Servo
Black
Vss
Figura 4-10
Circuitos del LED
indicador y conector
servo en la Tablilla.
Cuidado
Solamente use una batería de 9V cuando el Servo Normalizado de Parallax esté conectado
a la Tablilla BASIC Stamp. No use ningún tipo de Fuente de Alimentación o Eliminador de
Baterias que se alimente al contacto de AC.
Para mejores resultados, asegurese que su bateria está nueva. Si está usando una batería
recargable asegurese que está bien cargada. Debe tener una capacidad de energía de
100mAh (miliamperes por hora) o mayor.
Figura 4-11
El servo conectado a la
Tablilla.
Figura 4-12
Ejemplo de
mediciones de
variosángulos.
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 dirección del alambre
muestra el ángulo de la estrella del servo y la figura muestra ejemplos de 0, 45, 90, 135 y
180 grados.
Your servo horn’s range of motion and mechanical limits will probably be different from what’s
shown here. Instructions on how to adjust it to match this figure come after the first example
program.
En la fábrica, 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 práctica, la
estrella de su servo pudiera estár 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.
Figura 4-14 Ejemplos de posición de la estrella del servo antes de los ajustes mecánicos.
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 precaución
la estrella para encontrar sus límites mecánicos en sentido directo e inverso de las
manecillas del reloj. La posición media entre estos dos límites es el centro o posición de 90
grados. La posición del centro del servo pudiera estar en cualquier lugar de la región
mostrada en la figura 4-15.
Figura 4-15
Rango de posiciones
posibles del centro.
Página 104 · ¿Qué es un Microcontrolador?
En los siguientes pasos gire la estrella del servo lentamente no la fuerce! El servo
tiene límites mecánicos 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 límites mecánicos. No trate de forzarla más allá de esos límites
porque podría dañar los engranes internos del servo.
Figura 4-16
Diagrama de
Tiempos de la Señal
Servo
Pulsos de 1.5 ms
hacen que el servo
mantenga una
posición “central” de
90 grados.
Controlando el Movimiento · Página 105
El diagrama de tiempos muestra que las señales high duran 1.5 ms separadas por señales
low que duran 20 ms. Los puntos ...a la derecha de las señales es una forma de indicar que
las señales high de 1.5 ms y las señales low de 20 ms una y otra y otra vez para mantener la
posición del servo. El símbolo “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 posición de la estrella del servo. Esto se
debe a que la cantidad de tiempo de la señal high dura hasta que le dice al servo que
posición conservar, y esto tiene que ser preciso.
Hay una instrucción especial llamada PULSOUT que da un control preciso a su programa
sobre la duración de las señales high muy breves, a las que se les llama comunmente
pulsos.
Esta es la sintaxis de la instrucción PULSOUT:
Con la instrucción PULSOUT usted puede escribir el código en PBASIC para hacer que
BASIC Stamp fije la posición del servo en 90 grados usando como guía el diagrama de
tiempos. El argumento “Pin” de la instrucción PULSOUT tiene que ser un número que le
indica al BASIC Stamp que pin de E/S deberá transmitir el pulso. El argumento “Duration”
de la instrucción PULSOUT que vale 2 millonésimas de segundo representa los
incrementos de tiempo del pulso. 2 millonésimas de segundo es igual a 2 microsegundos y
se abrevia 2us.
Ahora que sabe como usar la instrucción PULSOUT, el programa ServoCenter.bs2 manda
pulsos de contro repetidamente para hace que el servo mantenga la posición de 90 grados.
La instrucción PULSE 14, 750 mandará un pulso de 1.5 ms al servo. Hace esto porque el
argumento Duration de la instrucción PULSOUT especifica el número de 2us de duración
del pulso. Como el argumento Duration vale 720, la instrucción PULSOUT hará que el
pulso dure 750x2us = 1500 us = 1.5 ms ya que hay 1000 us en 1 ms. Después que termina
el pulso high la instrucción PULSOUT hace que el pin E/S ahora mande señales bajas.
Página 106 · ¿Qué es un Microcontrolador?
Entonces, la instrucción PAUSE 20 que sigue del PULSOUT hace que el BASIC Stamp
mande señales 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 posición
DO
PULSOUT 14, 750
PAUSE 20
LOOP
Tan pronto como está el programa cargado la estrella del servo deberá girar a su posición
central y ahí permanecer. El servo “mantiene” esta posición porque los servos
normalizados están diseñados para resistir fuerzas externas que los empujen. Es por esto
que el servo mantiene en esa posción el volante de los carros RC, el timón de los barcos o
los alerones del avión.
Si desconecta la energía, usted puede girar el servo afuera de su posición central. Cuando
usted conecta la energía, el programa se reinicia y el servo moverá inmediatamente la
estrella a la posición central y ahí la mantendrá.
9 ¡Inténtelo!
Output
shaft Figura 4-17
Phillips
Centrado mecánico
Screw
del Servo
Usted puede
remover y
reposicionar la
estrella de la flecha
de salida del servo
con un pequeño
desarmador.
Horn
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 pequeña desviación y hacer que el
alambre apunte hacia arriba.
Y usted podría tener que ajustar los valores ligeramente para obtener posiciones angulares
más precisas. Usted puede modificar el argumento Duration de las instrucciones
PULSOUT para mantener cualquier posición de este rango. Por ejemplo, si usted desea
mantener la posición 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 posicionarán 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 más precisas.
Figura 4-18: Posiciones de Estrella del Servo, Instrucciones PULSOUT y Duración del Pulso
en ms.
Resolviendo la Ecuación
Asociada a la instrucción PULSOUT de la Figura 4-18 hay un número que corresponde a
los milisegundos que dura cada pulso. Por ejemplo, el PULSOUT 14, 417 manda 0.834
ms de duración, 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 instrucción
PULSOUT, use esta ecuación:
Por ejemplo, si usted no conocía que el argumento Duration para 1.5 es 750, así es como
usted debía calcularlo:
Controlando el Movimiento · Página 111
La razón por la que tenemos que multiplicar el número de milisegundos de un pulso por
500 se obtiene del argumento PULSOUT Duration poque Duration está en términos de
unidades de 2 us en la BS2. ¿Cuántas unidades de 2μ hay e1 ms? Para saberlo solamente
divida 2 millonésimas en 1 milésimas.
1 2
÷ = 500
1,000 1,000 ,000
Si la instrucción 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 instrucción PULSOUT desconocida usando esta
ecuación:
Por ejemplo, si usted ve la instrucion PULSOUT 14, 850, ¿cuánto dura verdaderamente ese
pulso?
Figura 4-19
Diagramas de
Tiempo para la
posición de 135
grados
Son pulsos de 2 ms
separados por 20
ms
Figura 4-20
Diagramas de
Tiempo para la
posición de 45
grados
Son pulsos de 1 ms
separados por 20
ms
Figura 4-21
Mano Animatrónica
Bucles FOR...NEXT para controlar el Tiempo del Servo que Mantiene una
Posición
Si usted escribe el código para hace que un LED parpadee una vez por segundo, usted
puede anidar el código 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 señales high/low estas también hacen que el LED parpadee. Las
señales 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 señales high/low son muy
rápidas y los tiempos en high son muy breves. Reduzcamos la velocidad de las señales en
1/10 y veremos que el LED parpadea.
FOR counter = 1 to 15
PULSOUT 14, 7500
PAUSE 200
NEXT
Figura 4-22
ThreeServoPositions.bs2
La última posición que el servo mantendrá por 3 segundos es 135 grados y luego el
programa se detiene. La estrella del servo estará en la misma posición 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 posición de 135 grados, el servo resiste cualquier fuerza que
trate de mover la estrella de esta posición. Al terminar los 3 segundos se puede girar con la
mano la estrella del servo.
Una forma para saber si el servo está recibiendo señales 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 señales de control y manteniendo su posición. Cuando se detienen
las señales el LED estará apagado.
Usted debe ser capáz de sentir la reacción del servo mientras que el LED brilla muy poco
indicando que el servo todavía está recibiendo señales de control. En el momento en que se
Página 116 · ¿Qué es un Microcontrolador?
apaga el LED sabemos que ya no se envian señales de control, el servo deja de mantener su
posición y ahora usted puede girar la estrella.
9 Cuando se detiene la señal de 135 grados, verifique que el LED muestra que las
señales están detenidas y que el servo le permite girar la estrella afuera de la
posición de 135 grados.
PAUSE 1000
END
que el servo sólo mantenga su posición durante dos segundos, cambie el argumento
EndValue de 150 a 100. Para cinco segundos cambielo de 150 a 250, y así sucesivamente...
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 milésimas de segundo. ¿Cuántas 22.8 milésimas de
segundo caben en 1 segundo? Dividamos 0.028 entre 1 y obtenemos:
Esta es la razón por la que el bucle se repite a razón de 44 repeticiones por segundo. El
número total de repeticiones en 1 segundo se llama “Hertz” y se abrevia Hz. Así, podemos
decir que la señal del servo se repite o tiene una Frecuencia cercana a 44 Hz.
Ciclos y hertz (Hz): Cuando una señal se repite a si misma un cierto número de veces,
cada repetición se llama ciclo. El número 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 más o menos tiempo para repetirse. El PULSOUT Duration de 750 está en la
Página 118 · ¿Qué es un Microcontrolador?
mitad del rango de duración de los pulsos de control del servo que muestra la Figura 4-18.
Entonces usted puede usar 44 en su código como referencia para el número de los pulsos
del servo en un segundo. Si usted necesita mayor precisión repita las ecuaciones de la
instrucción PULSOUT que está utilizando. Por ejemplo, si el bucle tiene una instrucción
PULSOUT con Duration de 1000 en lugar de 750, al pulso dura 2ms en lugar de 1.5 ms. El
bucle todavía 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 número para encontra la razón del
bucle FOR...NEXT y obtenemos 1/0,023 = 42.9 = 43 Hz.
Number of 44ths of a
Servo I/O pin second to hold the
position
Figura 4-23
FOR counter = 1 TO 132
PULSOUT 14, 750 Control del Servo
PAUSE 20 Del Bucle
NEXT Position to hold For...Next
Required 20 ms
between each pulse
En promedio un bucle FOR...NEXT que manda una sola instrucción 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 posición 135 grados durante 3 segundos. Esto se debe
a que:
Si su aplicación o proyecto necesita que el BASIC Stamp manda una señal servo para
determinado número de segundo, solamente multiplique el número de segundo por 44 y
use el resultado en el argumento EndValue del bucle FOR...NEXT. Por ejemplo, si su
señal necesita que dure cinco segundos:
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 también tiene que
almacenar los datos que usted manda de una o más variables.
Figura 4-24
Mandando Mensajes a el
BASIC Stamp
En esta actividad, usted programará el BASIC Stamp para recibir dos valores de la
Terminal Debug, y usará estos valores para controlar el servo.
También programará el BASIC Stamp usando estos valor para controlar el servo.
Partes y Circuito
Los mismos de la Actividad #2
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 número que
recibe de la instrucción DEBUGIN.
DEBUGIN DEC pulses
Aunque no está incluido en el Programa Ejemplo, usted puede agregar una línea para
verificar que BASIC Stamp procesó el mensaje.
DEBUG CR, "Usted mandó el valor: ", DEC pulses
Controlando el Movimiento · Página 121
Figura 4-25
Ventanas de la Terminal Debug
Å Ventana de Transmisión
9 Haga click en la ventana Transmit de arriba, para colocar ahí su cursor y escribir
los mensajes.
9 Cuando la Terminal Debug le indique “Enter run time as a number of pulses”
escriba el número 132, y luego presione la tecla Enter de su computadora
9 Cuando la Terminal Debug le indique “Enter position as a PULSOUT duration”
escriba el número 100 y luego presione “Enter”.
La duración de PULSOUT Duration debe ser un número entre 350 y 1150. Si usted
mete números fuera de este rango el programa los cambiar a losn números más cercanos
de 350 o 1150. Si el programa no tiene esta característica de seguridad, se pueden meter
ciertos números que pudierán hacer que el servo trate de girar a un posición más allá de
sus propios límites mecánicos. Aunque esto no daña al servo, puede disminuir su vida útil.
9 Experimente metiendo otros valores del rango 350 a 1150 para valores de
PULSOUT Duration y valores para el número de pulsos entre la entre 1 a 65534.
Se requieren cerca de 44 pulsos para hacer que el servo mantenga una posición por 1
segundo. Para hacer que el servo mantenga una posición durante 5 minutos usted deberá
meter 13200 en el indicador “número 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 sección 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.
PAUSE 1000
DEBUG CLS, "Tiempo de ejecución del Servo: ", CR,
" ~44 pulsos en 1 segundo", CR,
Controlando el Movimiento · Página 123
DO
LOOP
Se declara la variable “counter” porque la usa el bucle FOR…NEXT. (Para detalles, vea
Capítulo 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” también se usa para fijar el número de repeticiones en el bucle
FOR...NEXT que proporciona pulsos al servo, y la variables “duration” se usa para fijar la
duración de cada pulso de la instrucción PULSOUT.
DO
‘No se muestra el resto del programa.
LOOP
La instrucción DEBUG se usa para mandar su (el “usuario” del software) mensaje para
meter el número de pulso. Entonces, la instrucción DEBUGIN espera que usted meta los
dígitos que forman el número y que presione la tecla “Enter” de su teclado. Los digitos
que usted metión 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 también mete en la variable “duration”.
DEBUG "Meta el tiempo de ejecución como ", CR,
"número de pulsos: "
DEBUGIN DEC pulses
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 posición de retención. El servo se resiste a esta ligera presión aplicada a la estrella.
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 técnicas 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 número en la Terminal Debug, y éste controla
el número de repeticiones que ejecuta el bucle FOR...NEXT, y este a su vez controla el
tiempo que el servo mantiene una posición dada.
También, en los ejemplos anteriores, valores constantes tales como 500, 750 y 1000 se
usaron para el argumento “duration” de la instrucción PULSOUT. En este bucle, una
variable llamada “duration” que usted determina metiendo valor en Ventana de
Transmisión de la Terminal Debug, ahora define la duración del pulso de la instrucción
PULSOUT, y esta a su vez controla la posición que el servo mantiene.
usted escribe 100 en lugar de 1000 y presiona “Enter”. El valor 100 provocaría que el
servo trate de girar a una posición más allá de sus límites mecánicos. Aunque esto no daña
instantáneamente el servo, esto no beneficia la vida útil del servo. Entonces el programa
tiene una línea que previene este error que puede causar daño:
Hay algunas máquinas que incluso corrigen automáticamente al valor más cercano y se
tuvieran resultados indeseable. Por ejemplo, una máquina de control númerico que corta
algúna clase de material costoso, usted no desearía que la máquina suponga 350 cuando
usted escribió 1000, pero accidentalmente escribió 100
Si no corta el material al ajuste de 350 esto generaría un error costoso. Entonces, podemos
tomar otra aproximación a su programa e indicarle que sus valores están fuera de rango y
volver a intentar. Este es un ejemplo de cómo puede moficar el código para que haga esto:
DO
DEBUG " Meta la posicion como ", CR,
" Duración de PULSOUT: "
DEBUGIN DEC duration
IF duration < 350 THEN
DEBUG "El Valor de Duracion como mínimo debe ser 350", CR
PAUSE 1000
ENDIF
Controlando el Movimiento · Página 127
9 Guarde el programa
9 Ejecute el programa y verifique que se repite hasta que usted mete un valor
correcto en el rango 350 a 1150.
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” también se usa en el
argumento “duration” de la instrucción PULSOUT, lo que significa que la duración de
cada pulso se hace un poquito más grande cada vez que se ejecuta el bucle. Como cambia
la variable “counter” también lo hace la posición de la estrella del servo.
Usted también puede hacer que el servo gire en la dirección contraria contando en forma
descendente en lugar de ascendente. En PBASIC, los bucles FOR...NEXT contarán 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 más rápidamente en la dirección 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
FOR…NEXT cuenten en forma ascendente y descendente con diferentes tamaños de
escalón. El siguiente programa usa estas técnicas para hacer que la estrella del servo gire
hacia delante y atrás a diferentes velocidades.
PAUSE 1000
DO
DEBUG "El ancho del Pulso se incrementa por 8", CR
El segundo bucle FOR...NEXT cuenta en forma descendente de 1000 a 500 en pasos de 20.
La variable “counter” también se usa en este ejemplo como un argumento para la
instrucción 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
Página 130 · ¿Qué es un Microcontrolador?
Cuando lo haya hecho, usted será capaz de mantener presionado un botón push para hacer
que el BASIC Stamp gire el servo en una dirección, y mantener presionado el otro botón
para que el servo gire en dirección contraria. Cuando los botones push no están
presionados el servo mantendrá la última posición en que se movió.
9 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 · Página 131
Vdd Vdd
P4
220 Ω
Figura 4-26
Circuitos Botones
P3 push para
220 Ω Control del Servo
10 kΩ 10 kΩ
Vss Vss
15 14 Vdd 13 12
White
Red Red
Figura 4-27
Black Black Circuitos Servo y
X4 X5 Botones push
Vdd Vin Vss agregrados a la
X3
+ Tablilla Board of
P15 Education
P14
P13
P12 Tablilla Board of
P11 Education puerto
P10
P9
Serie Rev C o
P8 más reciente o
P7 puerto USB
P6
P5 cualquier
standard servo
P4
www.parallax.com
revisión.
P3
P2
P1
P0
X2
Página 132 · ¿Qué es un Microcontrolador?
Figura 4-28
Circuitos Servo y
Botones push
agregrados a la
Tablilla.
HomeWorkBoard.
Tablilla
HomeWork Rev
C o más reciente.
9 Verifique los botones push conectados al pin P3 usando la versión original del
programa ReadPushbuttonState.bs2. La sección que tiene este programa y las
instrucciones de su uso comienzan en la paágina 67.
9 Modifique el programa para que ahora lea por el pin P4.
9 Ejecute el programa modificado para verificar que el botón push está conectado en
el pin P4.
servo seguirá girando hasta que se libere el botón push y el valor de duración sea menor
que 100.
Cuando se presiona el botón push conectado al pin P3, la estrella del servo gira en sentido
de las manecillas del reloj. El servo también está limitado en su movimiento en sentido de
la manecillas del reloj porque a la variable “duration” no le está permitido ir más debajo de
500. La Terminal Debug muestra el valor de “duration” cuando se está ejecutando el
programa.
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
9 Experimente con diferentes limites de servo por software, incluyendo 350 a 1150,
650 a 850 y 350 a 750.
9 Verifique cada conjunto de limites por software para asegurarse que se comportan
como usted lo espera.
También usted puede cambiar la velocidad de giro del servo mientras mantiene presionado
un botón push. Por ejemplo, si usted cambia los dos valores de 25 del programa por 50, el
servo responderá dos veces má rápido. Alternadamente, usted podría cambiarlos a 30 para
hacer que el servo responde un poquito más rápido, o a 20 para que responda lentamente o
a 10 para que responda muy lentamente.
9 ¡Inténtelo!
RESUMEN
Este capítulo introdujo el movimiento microcontrolado usando un Servo Normalizado de
Parallax. Un servo es un dispositivo que se mueve para mantener una posición particular
basado en las señales electrónicas que recibe. Estas señales 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 posición.
El programador puede usar la instrucción PULSOUT para hacer que el BASIC Stamp
mande estas señales . Como los pulsos tienen que mandarse cada 20 ms para que el servo
mantenga su posición 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 · Página 135
En este capítulo presentamos varias formas para obtener los valores en la variables. La
variable puede recibir el valor desde la Terminal Debug usando la instrucción DEBUGIN.
El valor de la variable puede pasar a través de una secuencia de valores cuando se usa
como argumento de “Counter” del bucle FOR..NEXT. Esta técnica 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 instrucción PULSOUT cuando se presiona cierto botón
push. Esto permite el control de la posición y los movimientos de barrido dependiendo de
la construcción del programa y como se activen los botones push.
Preguntas
1. Cuáles son las cinco partes externas de un servo? ¿ Para que se usan?
2. ¿Se requiere un circuito LED para un servo funcione?
3. ¿Qué instrucción control el tiempo “low” de la señal que se manda al servo? ¿Qué
instrucción controla el tiempo “high”?
4. ¿Qué elemento de programación puede usted usar para controlar la cantidad de
tiempo que el servo usa par manteer una posición particular?
5. ¿Cómo usa usted la Terminal Debug para mandar mensajes a el BASIC Stamp?
6. ¿Qué tipo de bloque de Códigos puede usted escribir para limitar el rango de
movimiento del servo?
Ejercicios
1. Escriba un bloque de Códigos 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 botón push está
conectado en el pin P3), la Terminal Debug no deberá aceptar ningúna instrucción,
y deberá mostrar “Presione el Interruptor de Inicio para arrancar la maquinaria”.
Cuando está presionado el Interruptor de Inicio ( el botón push está conectado en
Página 136 · ¿Qué es un Microcontrolador?
Soluciones
Q1. Conector – Conecta al servo a la fuente de alimentación y a la fuente de señal; 2)
Cable – lleva la alimentación y la señal 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 señales de control.
Q3. El tiempo “low” lo controla la instrucción PAUSE. El tiempo “high” lo controla la
instrucción PULSOUT.
Q4. Un bucle FOR...NEXT
Q5. Escriba mensajes en la Ventana de Transmisión de la Terminal Debug. Use la
instrucción DEBUGIN y una variable para hacer que BASIC Stamp reciba los
caracteres.
Q6. Ya sea anidando la instrucción IF...THEN or una instrucción que use los
operadores MAX y MIN para mantener la variable en ciertos rangos.
E1.
a) Incrementos de 1 b) Agrege STEP 4 a los bucles
FOR...NEXT .
FOR counter = 700 TO 800
PULSOUT 14, counter FOR counter = 700 TO 800 STEP 4
PAUSE 20 PULSOUT 14, counter
NEXT PAUSE 20
FOR counter = 800 TO 700 NEXT
PULSOUT 14, counter FOR counter = 800 TO 700 STEP 4
PAUSE 20 PULSOUT 14, counter
NEXT PAUSE 20
NEXT
FOR pulses = 1 TO 10
PULSOUT 14, counter
PAUSE 20
NEXT
NEXT
DO
PAUSE 2000
IF (IN3 = 1) AND (IN4 = 0) THEN
DEBUG "Press Start switch to start machinery. ", CR ,CRSRUP
ELSEIF (IN3 = 0) AND (IN4 = 1) THEN
DEBUG CLS, "Meta el numero de pulsos:", CR
DEBUGIN DEC pulses
DEBUG "DONE"
PAUSE 2000
ENDIF
LOOP
Abajo presentamos una versión que incluso puede detectar un botón presionado y
que manda señales al servo. Esto es importante en maquinaria que se necesitan
Página 138 · ¿Qué es un Microcontrolador?
PAUSE 1000
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
LOOP
Página 140 · ¿Qué es un Microcontrolador?
Midiendo Rotación · Página 141
Las perillas también 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 música de la bocina cambia. Circuitos
similares se pueden encontrar dentro de los joysticks, e incluso dentro del servo usado en
el Capítulo 4: Controlando el Movimiento.
Figura 5-1
Ajuste de Volumen de
una Bocina.
Figura 5-2
Ejemplo de
Potenciometros.
Figura 5-3
Símbolo esquemático 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 Rotación · Página 143
Figura 5-5
Circuito de Prueba
Potenciometro-LED
Presione un poco el potenciometro contra la Tablilla mientra gira la perilla. Para estas
actividades el potenciometro necesita estár firmemente colocado en los conectores de la
Tablilla. Si no tiene precaución 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 presión hacia abajo mientras gira la perilla del potenciometro
para que este firmemente colocado en la Tablilla.
Trátelo con cuidado. Si su potenciometro no gira totalmente, no trate de forzarlo. Solo
girelo hasta que alcance su límite mecanico, sino lo hacer se podría romper.
Figura 5-6
Perilla del
Potenciometro.
(a) (c) (e)
Desde (a) hasta (f) se
muestra la terminal
(b) (d) (f) deslizante del
potenciometro ajustada a
diferentes posiciones.
Conociendo al Capacitor
La Figura 5-7 muestra el símbolo esquemático 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 “pequeña caja”. Este tipo
capacitor se llama “electrolitico” capacitor y se debe manejar con cuidado.
Precaución: 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 dañar. En algunos circuitos,
al conectar incorrectamente este tipo de capacitor y luego conectarle la alimentación hace
que se caliente e incluso explote.
Precaución: No aplique má voltaje a un capacitor electrolítico que el que tiene
especificado. El voltaje que soporta esta impreso en el cuerpo del capacitor.
Precaución: Se recomienda usar gogles cuando trabaje con este capacitor.
3300 µ
Figura 5-7
Símbolo esquemático y dibujo de un
3300 µF F capacitor de 3300 μF
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)
SEGURIDAD
P7 Figura 5-8
220 Ω Esquemático para
R1 = 470 Ω
3300 µF Ri R2 = 1 kΩ verificar la descarga del
R3 = 2 kΩ voltaje del circuito RC.
R4 = 10 kΩ
Se usarán cuatro
diferentes resistores en
donde está marcado Rin
Vss
R4 R3 R2 R1 Figura 5-9
F Diagrama de Alambrado
Vdd Vin Vss
- 0 0µ para ver el tiempo de
X3
33 descarga de un circuito
+
P15 de tiempo RC.
P14
+
P13
P12 Asegurese que el lado
P11
P10 negativo del capacitor lo
P9 conecta en su Tablilla de
P8
P7
la misma forma que lo
P6 muestra esta figura, cn la
P5 terminal negativa
P4
P3 conectada a Vss.
P2
P1
P0
X2
DEBUG CLS
HIGH 7
DEBUG "Capacitor en carga...", CR
FOR counter = 5 TO 0
PAUSE 1000
DEBUG DEC2 counter, CR, CRSRUP
NEXT
DO
PAUSE 100
timeCounter = timeCounter + 1
DEBUG ? IN7
DEBUG DEC5 timeCounter, CR, CRSRUP, CRSRUP
La instrucción 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”. Después 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 través 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
Para permitir que el capacitor se descargue a través 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 señales “high” o “low”. Tan pronto como el pin E/S libera el circuito, el
capacitor se descarga y circuila corriente a través del resistor. Cuando se ha descargado el
capacitor el voltaje a través de sus terminales se hace menor y menor (se descarga).
INPUT 7
En el capítulo anterior del botón push, usted usó el BASIC Stamp para detectar una señal
“high” o “low” usando las variables IN3 y IN4. En esa ocasión, la señal “high” era Vdd y
la señal “low” era Vss. Para el BASIC Stamp verdaderamente la señal “high” es cualquier
voltaje mayor de 1.4 V. Claro que también puede ser 5V. En forma semejante, la señal
“low” el cualquier voltaje entre 1.4 V y 0V.
Midiendo Rotación · Página 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
Figura 5-10
104 Capacitores de
103 Cerámica
0.1 µF 0.01 µF
Esquemático y dibujo
del capacitor de 0.1μF
(izquierda) y el de 0.01
μF (derecha)
Midiendo Rotación · Página 153
Figura 5-11
Diagrama esquemático
y alambrado del circuito
de Tiempo RC para el
BASIC Stamp con
potenciometro.
Este siguiente Programa Ejemplo usa una instrucción PBASIC llamada RCTIME que
hace que el BASIC Stamp mida la descarga RC en terminos de unidades de 2 us.
Entonces, en lugar de décimas de segundo, el resultado “RCTIME 7, 1” almacena en la
variable “time” el número de 2 millonesimas de unidades de segundo que le toma al
voltaje del capacitor descargarse debajo de 1.4 V. Como la instrucción RCTIME tiene
Página 154 · ¿Qué es un Microcontrolador?
unidas muy finas de medición, usted puede reducir el tamaño del capacitor desde 3300
μF hasta 0.1 e iincluso a 0.01 μF, y todovía obtener mediciones de tiempo que indican el
valor del resistor. Como la resistencias entre las terminales del potenciometro cambina
conforme gira la perilla, la medición RCTIME le dan a usted mediciones de tiempo que
corresponde a la posición de la perilla del potenciometro.
Recuerde aplicar un poco de presión para mantener el potenciometro bien fijo sobre la
tablilla cuando gira la perilla. Si su servo comienza a oscilar adelante y atrás
inesperadamente en lugar de mantener su posición de retención, puede ser que el
potenciometro no esté bien fijo.
PAUSE 1000
DO
HIGH 7
PAUSE 100
RCTIME 7, 1, time
DEBUG HOME, "tiempo = ", DEC5 time
LOOP
La Figura 5-12 también muestra una gráfica del voltaje en la terminales del capacitor
durante las instrucciones HIGH, PAUSE y RCTIME. En respuesta a la instrucción HIGH
7 que conecta el circuito a 5 V, el capacitor se carga rapidamente.
Umbral Lógico del pin E/S: 1.4 V es el umbral lógico 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 botón push del capítulo 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.
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 posición de la perilla del
potenciometro determina una cierta resistencia. Girandolo en una dirección la resistencia
aumenta y en la otra dirección la resistencia disminuye. Cuando la resistencia es mayor el
tiempo de descarga es más largo, y la instrucción RCTIME almacena un valor mayor en
la variable “time”. La instrucción DEBUG del programa ReadPotWithRcTime.bs2
muestra esta medición de tiempo en la Terminal Debug, y como el tiempo de descarga
Midiendo Rotación · Página 157
Figura 5-13
Forma en que la Resistencia
del Potenciometro afecta el
Tiempo de Descarga
Horizontal
potentiometer Figura 5-14
Potenciometros dentro
del Módulo Joystick de
Parallax.
Vertical
potentiometer
En esta actividad, usted usará un potenciometro similar a los del joystick que controla la
posición 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 capítulo, y el circuito servo del capítulo 4,
actividad # 1. El programa PBASIC desarrollado en este capítulo mide repetidamente la
posición del potenciometro con una instrucción RCTIME, y luego usa la medición y algo
de matemáticas para controlar el posición del servo con una instrucción PULSOUT.
El BASIC Stamp puede medir la posición 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 instrucción RCTIME puede medir el potenciometro vertical
y el otro puede medir el potenciometro horizontal.
Midiendo Rotación · Página 159
Para este siguiente ejemplo, estos son los valores de tiempo que midieron los técnicos de
Parallax, sus valores son quizá ligeramente diferentes.
Página 160 · ¿Qué es un Microcontrolador?
¿Entonces, como pueden ajustarse estos valores de entrad para que cubran el rango de
500 –1000 para controlar el servo con la instrucción 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 (mínimo) y en
sentido inverso de las manecillas del reloj (máximo) 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 electrónica a estas operaciones se les llama “Escalamiento” y “ajuste.” Así
es como trabaja la matemática para la multiplicación (escalamiento).
500
time(maximum) = 691 × = 691× 0.724 = 500
691
500
time(minimum) = 1 × = 0.724
691
Despues de haber escalado los valores, así se hace el paso de suma (offset)
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
Estos son los pasos del “escalamiento” ahora todo lo que necesitamos es agregar el offset
de 500. Esto puede hacerse con una segunda instrucción que suma 500 a “tiempo”:
Ahora, “tiempo” esta listo para reciclarce con el argumento “Duration” de la intrucción
PULSOUT
PAUSE 1000
DEBUG "Programa ejecutandose!"
time VAR Word
Página 162 · ¿Qué es un Microcontrolador?
DO
HIGH 7
PAUSE 10
RCTIME 7, 1, time
time = time */ 185 ' Escalamiento por 0.724 (X 256 for */).
time = time + 500 ' Se aplica un Offset de 500.
PULSOUT 14, time ' Manda pulsos al servo.
LOOP
Estas directivas “CON” siempre se declaran cerca del comienzo del programa, para
que sean fáciles 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 ‘ Escalaminento de 0.724
time = time + offset ‘Offset de 500
Con los valores que asignamos a las constantes con las directivas “CON” las
instrucciones verdaderamente son:
time = time */ 185 ‘ Escalaminento de 0.724
time = time + 500 ‘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
instrucción 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 número 7 para
referirse al pin E/S P7. El primero ahora puede escribirse como:
HIGH RcPin
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 actualizarán automáticamente.
Página 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 característica adicional: El compilador PBASIC puede
detectar si el nombre del pin se usa como entrada o salida, y substituur al número del pin
E/S, o al bit del registro de la variable de entrada correspondiente. Por ejemplo, usted
podría declarar dos directivas pin, como LedPin PIN 14 y ButtonPin PIN3. Entonces su
código 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 comparación, 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 número 3. De igual manera, el compilador PBASIC sabe que HIGH LedPin usa
el nombre pin LedPin como el valor constante 14 para una operación de salida, y este lo
sustituye por HIGH 14.
DO
' Routina Principal
HIGH rcPin ' Mide tiempo de descarga RC
PAUSE delay
RCTIME rcPin, 1, time
time = time */ scaleFactor ' Escala a scaleFactor.
time = time + offset ' time más Offset
PULSOUT servoPin, time ' Manda pulso al servo.
DEBUG HOME, DEC5 time ' Muestra el ajuste del valor tiempo
LOOP
rcPin PIN 8
RESUMEN
Este capítulo 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.
puede ajustarse sumandole un valor constante que nos permite controlar el servo. En la
sección Proyectos, usted puede por si mismo encontrarlo usando multiplicaciones y
divisiones.
Preguntas
1. ¿Cuándo usted gira la perrilla o el botón de un sistema de sonido, que
componente principal está ajustando?
2. En un potenciometro típico, ¿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 indicación
del valor de un resistor variable?
5. ¿Cómo actua la directiva CON? De su explicación en términos de un nombre y
un número.
Ejercicio
1. Considere que tiene un capacitor de 0.5 μF en un circuito de tiempo RC, y desea
que la medición 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 posición.
Página 168 · ¿Qué es un Microcontrolador?
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
pequeña 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
indicación de la resistencia.
Q5. La directiva “CON” sustituye un nombre por un número.
E1. El nuevo capacitor = (10 veces el valor del capacitor viejo) = (10x0.5μF) = 5
μF.
P13
1
Esquemático del potenciometro de la Figura
5-11, el servo del capítulo 4 actividad #1, y el
LED bicolor de la Figura 2-19, muestra a P15
2 y P14 que se cambiaron a P13 Y P14.
P12
470 Ω
PAUSE 1000
DEBUG "Programa en Ejecución!"
DO
LOOP
PAUSE 1000
DEBUG "Programa en ejecución!"
time VAR Word
DO
Página 170 · ¿Qué es un Microcontrolador?
RCTIME 7, 1, time
time = time + 649 ' Escala tiempo al rango del servo
IF (time < 650) THEN ' Limita el rango de 650 a 850
time = 650
ENDIF
IF (time > 850) THEN
time = 850
ENDIF
LOOP
Indicadores Digitales · Página 171
Figura 6-1
Reloj Digital con
Indicador de 7
segmentos en la puerta
del horno.
Cada uno de los tres dígitos de la Figura 6-1 se llama indicador de 7 segmentos. En este
capítulo, usted programará el BASIC Stamp para mostrar números y letras en un
indicador de 7 segmentos.
Common
Cathode
10 9 8 7 6
G F A B
A
F B Figura 6-2
G Indicador de 7 segmentos
E C
Dibujo y mapa de pines.
D
E D C DP
1 2 3 4 5
Common
Cathode
La Figura 6-3 muestra un esquemático del LED dentro del indicador LED de 7
segmentos. Cada ánodo del LED se conecta a un solo pin. Todos los cátodos se conectan
juntos por alambres dentro de la parte. Debido a que los cátodos comparten una conexión
común, al indicador LED de 7 segmentos se le llama de cátodo común. Se pueden
conectar los pines 3 o 8 de la parte a Vss, usted conectará todos los cátodos del LED a
Vss.
Indicadores Digitales · Página 173
1 4 6 7 9 10 5
E C B A F G DP
Figura 6-3
Esquemático de un
LED’s Indicador LED de 7
segmentos
3 8
Vdd
1 kΩ
nc
X nc nc nc nc nc nc
X
1 4 6 7 9 10 5 Figura 6-4
Esquemático del circuito
E C B A F G DP de prueba para el
segmento A del
indicador LED
LED’s
3 8
X
nc
Vss
P0
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
P13
P14
P15
X2
X3
Vdd
Figura 6-5
Diagrama de alambrado
Vin del circuito de prueba
para el segmento “A”
del indicador LED.
Vss
Vdd
1 kΩ
nc
X nc nc nc nc nc nc
X
1 4 6 7 9 10 5 Figura 6-6
Esquemático del circuito
E C B A F G DP de prueba para el
segmento B del
indicador LED
LED’s
3 8
X
nc
Vss
P0
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
P13
P14
P15
X2
X3
Vdd
Figura 6-7
Diagrama de alambrado
Vin
del circuito de prueba
para el segmento “B” del
indicador LED.
Vss
1 kΩ (all)
nc nc nc
X
X
1 4 6 7 9 10 5
Figura 6-8
E C B A F G DP Alambrado del dígito
“3”
LED’s
3 8
X
nc
Vss
P0
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
P13
P14
P15
X2
X3
Vdd
Figura 6-9
Diagrama de
Vin
alambrado de la
Figura 6-8
Vss
Common
Cathode
10 9 8 7 6
G F A B
A
F B
Figura 6-10
G Dibujo del Indicador LED de 7
E C segmentos y Mapa de pines
D
E D C DP
1 2 3 4 5
Common
Cathode
Página 178 · ¿Qué es un Microcontrolador?
1 kΩ
(All)
P15
P14
P13
P12
Figura 6-11
P11
Esquematico
P10 del BASIC
P9 Stamp
controlando
P8 un Indicador
E C DP G F A B
LED de 7
segmentos.
LED’s
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
P0
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
P13
P14
P15
Figura 6-12
X2
X3
Diagrama de alambrado
para la Figrua 6-11.
Vdd
segmentos en este
diagrama como
Vss
referencia.
Indicadores Digitales · Página 179
'{$STAMP BS2}
'{$PBASIC 2.5}
PAUSE 1000
DEBUG "Pin de E/S", CR,
"-------", CR
FOR pinCounter = 8 TO 15
NEXT
Página 180 · ¿Qué es un Microcontrolador?
En esta actividad, usará 8 números binarios en lugar de instrucciones HIGH y LOW para
controlar las señales high/low que manda el BasicStamp a los pines: Al fijar variables
especiales llamadas DIRH y OUTH iguales a los números binarios usted será capaz
De controlar las señales high/low mandadas a los pines E/S conectados al circuito del
indicador LED de 7 segmentos usando una sóla instrucción PBASIC.
8 bits aquello que tiene 8 dígitos 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 razón por la
cual una variable Byte puede almacenar un número entre 0 y 255.
instrucción. 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.
'{$STAMP BS2}
'{$PBASIC 2.5}
Funcionamiento de DisplayDigits.bs2
La Figura 6-13 le muestra como puede usar las variables DIRH y OUTH para controlar la
dirección y estado (high/low) de los pines de E/S desde P8 hasta P15.
Vss
Vin
Figura 6-13
Usando DIRH y OUTH
Vdd
para fijar todos los pines
a Salida-Low
X3
X2
P15
P14
P13
P12
P10
P11
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
OUTH = %00000000
DIRH = %11111111
La primera instrucción:
OUTH = %00000000
Hace que todos los pines E/S (de P8 a P15) están listos para mandar señales “low”. Si
todos ellos mandan señales low, apagarán todos los LEDs del indicador LED de 7
segmentos. Si usted desea que todos los pines E/S manden una señal high usted podría
usar OUTH = %11111111
¿Qué hace %? El simbolo “%” formato en Binario se usa para decirle al Editor BASIC
Stamp que el número es un número binario. Por ejemplo, el número binario %00001100 es
lo mismo que el número decimal 12. Como usted verá en esta actividad, los números
binarios pueden hacer más fácil muchas tareas de programacion.
Las señales 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 instrucción:
DIRH = %11111111
Indicadores Digitales · Página 183
Fija los pines de E/S desde P8 hast P15 como salidad. Tan pronto como se ejecuta esta
instrucción P8 hasta P15 empiezan a mandar señales low. Esto se debe a que la
instrucción OUTH = 00000000 se ejecutó justamente antes de la instrucción DIRH. Tan
pronto como la instrucción DIRH fija todos los pines como salida, empiezan a mandar
señales 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 señales 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 Capítulo 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 señales high o low. Las dos instrucciones HIGH y LOW cambian
automáticamente la dirección de los pines E/S del BASIC Stamp como salida. Colocando un
1 en la variable DIRH también 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 señales no desadas. Por
ejemplo, si a DIR5 = 1 le sigue OUT5 = 1 en el principio de un programa, el brevemente
manda una señal “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 señal “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 instrucción OUTH = %00000000 en realidad es redundante.
La Figura 6-14 muestra como usar la variable OUTH para mandar selectivamente señales
high y low a P8 hasta P15. Un 1 binario se usa para mandar una señal high, y un 0 binario
se usa para mandar una señal low. Este ejemplo muestra el número tres en el indicador
LED de 7 segmentos:
' BAFG.CDE
OUTH = %11010110
Página 184 · ¿Qué es un Microcontrolador?
Vss
Vin
Figura 6-14
Usando OUTH para
controlar las señales
Vdd
High/Low desde P8
hasta P15
X3
X2
P15
P14
P13
P12
P10
P11
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
‘ BAFG.CDE
OUTH = %11010110
La instrucción 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 instrucción es un comentario que muestra las etiquetas del segmento con el
valor binario que hace que el segmento se ilumine o se apague.
Decimal vs Hexadecimal
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
La Base-16 se usa mucho en la programación 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.
Hay dos variables que usa estra instrucción “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 instrucción LOOKUP coloca 19 en value y eso es lo que muestra la
Terminal Debug.
index = 2
PAUSE 1000
DEBUG ? index
DEBUG ? value, CR
END
'{$STAMP BS2}
'{$PBASIC 2.5}
OUTH = %00000000
DIRH = %11111111
PAUSE 1000
FOR index = 0 TO 9
LOOKUP index, [ %11100111, %10000100, %11010011,
%11010110, %10110100, %01110110,
%01110111, %11000100, %11110111, %11110110 ], OUTH
DIRH = %00000000
END
Figura 6-15
Esquemático del circuito
del potenciometro
agregado al proyecto.
Figura 6-16
Diagrama de alambrado
para la Figura 6-15
Cuestion interesante: ¿Qué sucede si su valor es mayor que 187? Este pequeño giro en
la instrucción LOOKDOWN puede causar problemas porque la instrucción LOOKDOWN no
hace cambios en el “index”
value = 167
PAUSE 1000
DEBUG ? value
DEBUG ? index, CR
palabras, el operador regresa el índice del primer valor en la lista que hace la frase
verdadera en la instrucción.
9 Modifique SimpleLookdown.bs2. sustituyendo las frases value y LOOKDOWN
en lugar de los que ya existen.
9 Modifique las instrucción DEBUG para que muestre:
DEBUG "Cambie la variable value a un ", CR,
"numero diferente en este rango:", CR,
"0 a 170.", CR, CR,
Figura 6-17
Mostrando la posición del
potenciometro con el indicador LED
de 7 segmentos
'{$STAMP BS2}
'{$PBASIC 2.5}
PAUSE 1000
DEBUG "Programa en Ejecución”
OUTH = %00000000
DIRH = %11111111
DO
HIGH 5
PAUSE 100
RCTIME 5, 1, time
LOOKDOWN time, <= [40, 150, 275, 400, 550, 800], index
LOOP
HIGH 5
PAUSE 100
RCTIME 5, 1, time
La variable “time” se usa en una tabla LOOKDOWN. La tabla LOOKDOWN decide que
número en la lista “time” es menor que, y luego carga el número (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.
RESUMEN
Este capítulo introdujo el indicador LED de 7 segmentos, y la lectura de un mapa de
pines. Este capítulo también introdujo algunas técnicas 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 números.
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 señales high y
low?
2. ¿Qué significa cátodo común? ¿Qué piensa que significa ánodo común?
3. ¿Cómo se llama al grupo de alambres que conducen señales de y hacia un
dispositivo paralelo?
4. ¿Cuáles son los nombres de las instrucciones que en este capítulo 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 instrucción DIRH que hará que los pines de E/S de P8 a P13 manden
señales high/low mientras que P14 y P125 se configuren como entradas.
Indicadores Digitales · Página 193
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. Cátodo común significa que todos los cátodos se conectan juntos, esto es, ellos
comparten un punto de conexión común. Ánodo común podría 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 posición 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 9 8 Bit 15 14 13 12 11 10 9 8
OUTH 0 0 0 1 0 1 0 1 DIRH 0 0 1 1 1 1 1 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.
Página 194 · ¿Qué es un Microcontrolador?
P1. Use el esquemático de la Figura 6-11. Para resolver este problema modifique el
programa DisplayDigitsWithLookup.bs2, usando el patrón de letras que resolvió
en el Ejercicio 2. En la solución las letras tienen que arreglarse como constantes
para hacer el programa más intuitivo. Es correcto usar los valores binarios, pero
está sujeto a mayores errores.
'{$STAMP BS2}
'{$PBASIC 2.5}
DO
"----- --------", CR
NEXT
LOOP
Página 196 · ¿Qué es un Microcontrolador?
esto a través de la lente de una cámara 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 cámara 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 cámara tambien interpreta la luz de un LED infrarojo como
blanca.
El tipo de luz, que un dispositivo sensa depende como fue diseñado. 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
cámaras digitales están sensando los niveles de los colores específicos 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 aplicación 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.
Página 198 · ¿Qué es un Microcontrolador?
Los documentos de cada sensor de luz describen el tipo de luz que detecta en términos 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 electromagnéticas 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 también 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 billonésima parte de un metro.
Midiendo Luz · Página 199
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 válvula que permite que pase cierta cantidad de corriente a
través de dos de sus terminales. La tercera terminal del transistor controla la cantidad de
corriente que pasa a través 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 esquemático 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 conducción de corriente.
B
C Figura 7-3
Símbolo esquemático y dibujo del
B Fototransistor
E
E
C
La sensibilidad pico de este fototransistor está en 850 nm, y de acuerdo con la Figura 7-2
en la escala infraroja. También responde a la luz visible, aunque es menos sensitivo
especialmente a longituedes de onda debajo de 450 nm, que están a la izquierda del azul
en la Figura 7-2. La luz de lámparas de halogeno e incandescentes, y especialmente la luz
del sol, son fuentes muy fuertes de infrarojo comparado con las lámparas fluorescetes. El
Página 200 · ¿Qué es un Microcontrolador?
transistor infrarojo responde bien a todas estas fuentes de luz, pero es más sensible a la
luz del sol, un poco menos a lámparas de halogeno e incandescentes y mucho menor a
lámparas fluorescentes.
El diseño 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 capítulo
se diseñan para el interior. Hay una aplicación sensor de luz externa, pero se usará un
dispositivo diferente que al principio parecería que no es candidato a ser sensor de luz: el
diodo emisor de luz.
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.
Circuito Esquematico y
diagrama de alambrado
del Fototransistor y el RC
En lugar de girar la perilla del potenciometro como lo hizo en el Capítulo 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 pequeños para condiciones de luz brillantes y valores grandes para
condiciones de poca luz.
Midiendo Luz · Página 203
Evite luz solar directa. El circuito y programa que usted está diseñando 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.
DO
HIGH 2
PAUSE 100
RCTIME 2, 1, time
DEBUG HOME, "time = ", DEC5 time
LOOP
Los intervalosde tiempo más grandes que la instrucción 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 instrucción RCTIME
regresa a 0 indicando que se excedió la máxima medición de tiempo.
Mientras los valores almacenados por las variables se borran cuando se desconecta la
energía, el BASIC Stamp recordara todos los valores almacenados en su memoria de
programa cuando se vuelva a conectar la alimentación.
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 todavía un montón de trabajo. Entonces, cuando las personas hablan de una
EEPROM, generalmente dicen E-E-Prom.
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 módulos 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 porción 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 Símbolos del programa están resaltados en azul, y solamente
35 bytes fuera de la EEPROM de 2048 se usan para el programa. Los 2013 bytes
restantes están libres para almacenar datos.
Página 206 · ¿Qué es un Microcontrolador?
Figura 7-6
Mapa de Memoria
Si usted planea almacenar datos en EEPROM, es importante que sea capaz de convertir
de hexadecimal a decimal para calcular la dirección de escritura más grande. Abajo están
las matemáticas para convertir el número 7DC hexadecimal a decimal. Hexadecimal es
un sistema numérico con base 16, eso significa que usa 16 diferentes dígits para
Midiendo Luz · Página 207
representar sus valores. Los dígitos 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 dígito más a la derecha es el
número de unos, el cual es el número 16. El siguiente digito de la derecha es el número
de 16, el cual es el número 16. El tercer dígito es el número de 256s, el cual es el número
16.
Esta aproximación de conversión trabaja de igual manera con otras bases, incluyendo la
base 10 de valores decimales. Por ejemplo:
2048 Bytes = 2 KB
Aunque la letra “K” y la letra “k” se llaman “kilo” son ligeramente diferentes. En electrónica y
computación 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 métricoñ
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
número 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 aplicación remota podría ser un monitor de temperatura colocado en
un camión que contiene comida refrigerada. El podría 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 líquido. Un segundo ejemplo es una estación de
monitoreo del clima. Una de las piezas de la estación de datos del clima podría almacenar
para que despues obtener sus niveles de luz. Esto puede dar una indicación de nubes que
cubren los tiempos de un día.
Teniendo en mente el el ajuste de niveles de luz, esta actividad introduce una técnica para
almacenar los niveles de luz medidos en la EEPROM y después analizarlos. En esta
actividad, usted ejecutará un Programa Ejemplo PBASIC que almacena una serie de
mediciones de luz en el módulo EEPROM del BASIC Stamp. Después que se termine el
programa, usted ejecutará un segundo programa que retira los valores de la EEPROM y
los muestra en la Terminal Debug.
Por ejemplo, si usted quiere escribir el valor 195 en la dirección 7 en la EEPROM, usted
podría usar la instrucción
WRITE 7, 195
Los valores “WORD” pueden ser cualesquiera desde 0 hasta 65565, mientras que los
valores “byte” solamente pueden contener números 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 tamaño 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 dirección 8, usted tendrá que escribir el
segundo valor en la dirección 10-
WRITE 8, Word 659
WRITE 10, Word 50012
Midiendo Luz · Página 209
¿Es posible escribir sobre su programa? Sí, y si usted lo hace, el programa se pararece
a que empieza a comportarse extrañamente o que deja de ejecutarse. Como los símbolos
del programa PBASIC residen en las direcciones mayores de EEPROM, es mejor usar los
valores más pequeños de localidades “Location” para almacenar números con la instrucción
WRITE.
¿Como puedo saber si la Location que estoy usando es muy grande? Usted puede usar el
mapa de memoria para calcular el valor más grande no usado por su programa PBASIC.
La explicación después de la Figura 7-6 describe la manera de calcular cuantas direcciones
de memoria están disponibles. De manera sencilla usted puede convertir de hexadecimal a
decimal usando el formato decimal “DEC” en la instrucción 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 instrucción DEBUG que el 7DC es un número hexadecimal.
Entonces, el formato DEC (decimal) hace que la instrucción DEBUG muestre el valor en un
formato decimal.
Usted puede cambiar las pausas en el bucle FOR...NEXT. Este Programa Ejemplo tiene
pausas de 5 segundos, las cuales resaltan las mediciones períodicas que toman las tarjetas
de adquisición de datos. Esto podría parecer muy largo, entonces usted puede reducir
PAUSE 5000 a PAUSE 500 para hacer que el programa ejecute diez veces más
rápidamente la prueba.
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
RCTIME 2, 1, time
Recuerde, que la dirección para la instrucción WRITE siempre está en términos de bytes.
Entonces, la variable “eepromAddress” se incrementa por dos cada vez en el bucle
porque la variable Word toma dos bytes.
Mientras que la instrucción WRITE puede copiar una de una constante o una variable a la
EEPROM, la instrucción READ tiene que copiar el valor almacenado en una dirección 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 módula RAM de el BASIC Stamp. De manera
diferente a la EEPROM, los valores RAM pueden borrarse cuando se desconecta la
alimentación y también cuando se presiona el botón 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 declaración de una variable byte usa un byte, un nible usa la mitad de un byte y
un bit usa 1/8 de byte.
READ 7, littleEE
READ 8, Word eepromValueA
READ 10, Word eepromValueB
última de las tres instrucciones copia una “word” que ocupan las direcciónes 10 y 11de la
EEPROM y la almacena en la variable eepromValueB.
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.
PAUSE 1000
NEXT
END
En el caso de una banda transportadora, esto indicaría que un objeto pasa sobre el sensor
reflejando una sombra. Esta gráfica 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í.
8000
7000
Decay Time (2 us)
6000
5000
4000
3000
2000
1000
0
0 10 20 30 40 50 60
Figura 7-9
Circuito
esquemático del
Medidor de Luz
Figura 7-10
Diagrama de
Alambrado para la
Figura 7-9
Página 218 · ¿Qué es un Microcontrolador?
Usando Subrutinas
La mayoría 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 más
circuitos y más funciones útiles a su programa, puede tener un poco de dificultad para
tener el control de todo el código en la rutina principal. Su programa trabajará con mayor
facilidd si usted lo organiza en pequeños segmentos de código 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 código 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 instrucción 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”
DO
GOSUB Subroutine_Name
DEBUG "Next command"
LOOP
Figura 7-11
Funcionamiento de la
Subroutine_Name: Subrutina
DEBUG "This is a subroutine..."
PAUSE 3000
RETURN
Midiendo Luz · Página 219
PAUSE 1000
DO
LOOP
First_Subroutine:
RETURN
Página 220 · ¿Qué es un Microcontrolador?
Segunda_Subrutina:
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 instrucción 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 instrucción RETURN, brinca de regreso
al comando que viene inmediatamente después de GOSUB First_Subroutine, y es
DEBUG “Back in Main.”, CR
¿Qué es una llamada a subrutina? Cuando usted usa la instrucción 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
First_Subroutine: Llamada a la Primera
DEBUG " Executing first " Subrutina.
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 · Página 221
PAUSE 2000
GOSUB Second_Subroutine
DEBUG "Repeat main...", CR
Usted también puede llamar una subrutina dentro de otra subrutina. A esto se le llama
subrutinas anidadas.
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.
El Control de las condiciones de luz hace la gran diferencia. Para mejores resultados,
realice esta prueba en una habitación iluminada con luz fluorescente con poca o sin luz
directa del sol. (cierre las cortinas). Para información de la calibración de este medidor a
otras condiciones de luz, vea la sección Su Turno.
PAUSE 1000
GOSUB Get_Rc_Time
GOSUB Delay
GOSUB Update_Display
LOOP
' Subrutinas
HIGH 2
PAUSE 3
RCTIME 2, 1, time
RETURN
PAUSE time / 3
RETURN
RETURN
direccionarlos como salidas. Este sección de programa PBASIC también tiene un nombre
“Inicialización”
OUTH = %00000000 ' Inicializa el indicador 7-segmentos.
DIRH = %11111111
Como las mediciones de tiempo serán dos veces mayores, el patrón 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.
¿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 más exactas
sobre el ramgo más amplio de niveles de luz. Después que su hardware es lo mejor que
puede usarse, use el software para ajustar automáticamente el medidor de luz de manera
que trabaje bien para el usuario bajo el rango más amplio de condiciones. Esto toma una
cantidad considerable de pruebas y refinamiento pero todo esto es parte del proceso de
diseño de productos.
El programa también usa los operadores MIN y MAX para asegurarse que los valores
permanecen dentro de estos límites 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
Antes de que este programa trabaje correctamente, usted tiene que calibrar sus
condiciones de luz como sigue:
PAUSE 1000
DO
HIGH 2
PAUSE 100
RCTIME 2, 1, time
LOOP
La Figura 7-16 muestra en una gráfica 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 automáticamente se enciende. Entonces, como el fototransitor sensa
la lampara que se ha encendido disminuye la medición de la variable time y entonces la
lámpara se apaga. Entoces, se incrementa nuevamente el valor de la variable time y
sobrepasa el umbral, y como consecuencia nuevamente la lámpara se enciende, y baja el
valor de la variable time del nivel de umbral y etcetera, etcetera...
Página 230 · ¿Qué es un Microcontrolador?
valMax
"Turn light on "
Figura 7-16
(valMax - valMin) / 2
Oscilaciones
Arriba/Debajo del
"Turn light off"
Umbral.
valMin
Un remedio para este problema es agregar un segundo umbral, como lo muestra la Figura
7-17. El umbral “Enciende la lámpara” solamente enciende la lámpara después tener
mucha obscuridad, y “Apaga la lámpara” despues que hay mucho brillo. Con este
sistema, la lámpara se enciende despues que “time” pasó del rango de “Enciende la
lámpara. La lampara encendida genera brilla, entonces “time” disminuyó ligeramente,
pero como no bajó hasta el umbral de “Apaga la lámpara” nada ha cambiado y la lámpara
sigue encendida. El término 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 no-
transición entre ellas.
valMax
"Turn light on "
(valMax - valMin) / 4 * 3
Figura 7-17
No transition Usando Diferentes
Umbrales Alto y Bajo
(valMax - valMin) / 4 para Prevenir
"Turn light off" Oscilaciones.
valMin
Usted puede realizar este sistema de dos umbrales en su código PBASIC modificado la
instrucción IF...THEN..ELSEIF del programa PhototransistorAnalogToBinary.bs2 . Este
es un ejemplo:
IF time > (valMax - valMin) / 4 * 3 THEN
DEBUG CR, "Enciende las lámparas "
ELSEIF time < (valMax - valMin ) / 4 THEN
DEBUG CR, "Apaga las lámparas"
ENDIF
Midiendo Luz · Página 231
El primer bloque IF...THEN muestra “Enciende las lámparas” cuando la variable time
almacena un valor que es mayor a ¾ del valor del tiempo más alto (el menor brillo). El
bloque de códigos ELSEIF sólo muestra “Apaga las lámparas” cuando la variable tiempo
almacena un valor que es menor a ¼ del menor valor de tiempo (máximo brillo).
Si usted agrega un circuito LED y modifica el código para que encienda y apague el
LED, pueden suceder algunas situaciones interesantes. Especialmente si usted pone el
LED cerca del fototransistor, usted podría todavía ver el comportamiento enc/apag
cuando hay obscuridad incluso con la histeresis programada. ¿Qué tan lejos del
fototransistor debe estár 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?
Página 232 · ¿Qué es un Microcontrolador?
5V 5V
Logic 1
≈4.25 V
Logic 1
No Change
≈1.4 V
Logic 0
≈0.75 V
Logic 0
0V 0V
Figura 7-19
Circuito del Voltaje de
Salida en Función de la
+ Luz.
V =R
– I
La razón 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 más corriente a través de él cuando
recibe más iluminación, y menos corriente cuando recibe menos iluminación.
Pongamosle atención al ejemplo del circuito de la Figura 7-19 y calculemos cuanta
corriente podría pasar a través del resistor para crear una caída 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 ecuación 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 = V÷R
= 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 más iluminación, ¿
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:
Página 234 · ¿Qué es un Microcontrolador?
V = I×R
= 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.
La obscuridad hace que in2 = 0, y la iluminación 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 cálculos de
Midiendo Luz · Página 235
nuestro circuito de la sección anterior será el mismo con o sin el resistor de 220 Ω y el
pin E/S conectados.
Figrua 7-20 Diagrama Esquemático y de Alambrado del Circuito Analógico y Sensor Binario
de Luz.
DO
DEBUG ? IN2
PAUSE 250
LOOP
Modifique el programa para que haga que la luz parpadee cuando una sombre se proyecta
sobre el fototransistor.
¿Qué sucede si su aplicación necesita necesita tomar mediones del exterior? Una opción
pudiera ser encontrar un fototransistor que genere menos corriente para la misma
cantidad de luz. Otra opción 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 eléctrica 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
eléctrica fluya a través 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 presión eléctrica
(voltaje), el LED se parece a un pequeño 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 más corriente y drena la carga del capacitor más
rápidamente cuando hay más luz, y conduce menos corriente y drena la carga del
capacitor menos rápidamente cuando hay menos luz.
Figura 7-21
Yellow
Esquemático del LED en
un Circuito de tiempo RC
Sensible a la Luz
Página 238 · ¿Qué es un Microcontrolador?
¿Por qué se conecta el LED en sentido inverso? En el Capítulo 2, el ánodo del LED se
conecto al resistor de 220 Ω y el cátodo 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 pequeño voltaje que genera una
pequeña corriente en la dirección 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.
Figura 7-22
Esquemático del Circuito
LED RCTIME
Si usted está en una habitación que tiene sólo lámparas fluorescentes sin fuentes de luz
brillantes:
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
9 Ejecute el programa StoreLightMeasurements InEeprom.bs2 de la Actividad #2.
9 Desconecte el cable de programación y lleve su tablilla al exterior.
9 Dirija su tablilla para el LED apunte directamente al sol.
9 Presione y suelte el botón de Reset para reiniciar el programa de Adquisición de
Datos.
9 Gire gradualmente su tablilla respecto al sol durante 2 ½ minutos.
9 Regrese su tablilla al interior y reconectela a la PC.
9 Ejecute el programa ReadLightMeasurementsFromEeprom.bs2 y examine las
mediciones de luz. Como usted giró gradualmente el LED respecto al sol, las
mediciones sucesivas deberán ser mas grandes.
al comparar las mediones más pequeñas de cada LED, y usted puede detectar si el LED
está enfrente del color verde o rojo de la pantalla.
9 Empiece con el circuito detector de luz con el LED verde de la Figura 7-22 y la
Figura 7-23.
9 Descargue la versión PDF de ¿Qué es un Microcontrolador? de
www.parallax.com/go/WAM.
9 Coloque el espectro de colores de la Figura 7-2 en su monitor y agrande la
imagen.
9 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 habitación deben ser
mínimos.
9 Dislice el LED verde lentamente a lo largo de la barra del espectro que muestra
el monitor.y anote que color reporta las mediciones más pequeñas.
9 Repite esto con el LED rojo. ¿Reporto el LED rojo los valores de medición más
bajos cuando estaba sobre el color rojo del monitor, y el LED verde reportó sus
mediciones más bajas cuando estaba sobre el color verde del monitor?
Las mediciones más bajas del LED rojo deben ocurrir cuando está sobre el color rojo del
monitor, y las mediciones más bajas del LED verde deben ocurrir cuando estén sobre el
color verde del monitor.
RESUMEN
Este capítulo 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 términos de longitud de onda. Este capítulo 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 técnica para medir la posición de una perilla de un
potenciometro del capítulo 5 del circuito RC, también trabaja para medir la luz que incide
sobre el fototransistor. El tiempo que requiere un capacitor para perder su carga a través
del fototransistor resulta en la medición RCTIME que proporciona un número que
corresponde a la brillantez de la luz incidente en el fototransistor.
El BASIC Stamp puede programarse para convertir la medición 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 podrían ocurrir cuando el sensor reporta obscuridad
y el dispositivo prede las luces en un área con luminosidad.
Sin histeresis, el dispositivo podría sensar la luz y apagar nuevamente las luces y repetir
este ciclo en form indefinida.
El LED (diodo emisor de luz) que emite luz cuando circula por él una corriente también
se comporta como un pequeño panel solar cuando le llega luz, y esto genera un pequeño
voltaje que a su vez puede hacer circular corriente en los circuitos. Las corrientes que
generan los LEDs son pequeñas pero suficientes para una combinación 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 · Página 243
Preguntas
1. ¿Cuáles son algunos ejemplos de aplicaciones de alumbrado automático que
dependen de sensores de luz ambiente?
2. ¿Cuáles 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. ¿Cuáles 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. ¿Cuántos bytes puede almacenar el módulo EEPROM del BASIC Stamp?
¿Cuántos bits puede almacenar?
7. ¿Qué instrucción usa usted para almacenar un valor en EEPROM? ¿Qué
instrucción usar usted para retirar un valor de EEPROM? ¿Cuál de ellos requiere
una variable?
8. ¿Qué es una etiqueta?
9. ¿Qué es una subrutina?
10. ¿Qué instrucción se usa para llamar un subrutina? ¿Qué instrucción se usa para
terminar una subrutina?
Ejercicios
1. Dibuje el esquemático 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 debería modifica el programa LightMeter.bs2 para que el patrón
circular mostrado por el indicador LED de 7 segmentos giren en la dirección
opuesta.
Proyectos
1. Haga un pequeño prototipo de un sistema que automáticamente ciere las cortinas
cuando haya mucha luz y nuevamente las abra cuando disminuya la luz. Use el
servo como actuador mecánico. Sugerencia: Para el código usted puede agregar
dos instrucciones de control de servo al programa
PhototransistorAnalogToBinary.bs2, y cambiar la instrucción PAUSE 100 a
PAUSE 1. Asegúres que sigue las instrucciones en el texto para calibrar el área
de condiciones de luz antes de hacer la prueba.
2. Para un crédito adicional, refuerce su solución al Proyecto 1 incorporandole las
modificaciones de histéresis analizadas en la Actividad #5.
Página 244 · ¿Qué es un Microcontrolador?
Soluciones
Q1. Luces de carros, alumbrado de calles y luces de seguridad externa que
automáticamente se iluminan cuando hay obscuridad.
Q2. Pantallas de Laptops y cámaras con autoenfoque.
Q3. De 380 nm a 750 nm de acuerdo con la fígura 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 instrucción
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 pequeño segmento de código que hace cierto trabajo.
Q10.Se llama con GOSUB y se termina con RETURN
E2. Los cambios requeridos son muy similares a los que explicamos en la página
202.
DO
HIGH 5
PAUSE 100
RCTIME 5, 1, time
DEBUG HOME, "time = ", DEC5 time
LOOP
E3. Para ir en la dirección opuesta, los patrones deben mostrarse en orden inverso.
Esto puede hacerse conmutando los patrones dentro de la instrucción LOOKUP,
o invirtiendo el orden de obtenerlos de look up. Estas son dos soluciones hechas
con subrutinas alternadas Update-Display.
Midiendo Luz · Página 245
Solucion 1 Solucion 2
P1. El fototransistor de la Figura 7-4, el esquemático del servo para su tablilla del
Capítulo 4, Actividad #1.
PAUSE 1000
DO
HIGH 2
PAUSE 1 ' PAUSA 100 -> PAUSA 1
RCTIME 2, 1, time
DEBUG HOME, "time = ", DEC5 time
PAUSE 1000
DO
HIGH 2
PAUSE 1 ' PAUSA 100 -> PAUSA 1
RCTIME 2, 1, time
DEBUG HOME, "time = ", DEC5 time
LOOP
Midiendo Luz · Página 247
Página 248 · ¿Qué es un Microcontrolador?
Figura 8-1
Bocina Piezoeléctrica. Dibujo y
símbolo esquemático.
Frequencia y Sonido · Página 249
P15
P14
P13
P12
P11 Figura 8-2
P9 P10 +
P9
Circuito de la bocina
P8 piezoeléctrica, Diagrama
P7 esquemático y de
P6
P5 alambrado.
P4
Vss P3
P2
P1
P0
X2
oido detecta los cambios en la presión del aire que genera la bocina piezoeléctrica, y
suena típicamente como un beep o un tono.
Y como la mayoría 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 instrucción 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:
'{$STAMP BS2}
'{$PBASIC 2.5}
PAUSE 1000
1. Pausa
2. Duración
3. Frecuencia
La pausa es el tiempo entre tonos, y usted puede usar la instrucción PAUSE para crearla.
La duración es la cantidad de tiempo que dura un tono, usted puede fijarla usando el
argumento Duration de la instrucción FREQOUT. La frecuencia determina la
característica 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 instrucción
FREQOUT.
'{$STAMP BS2}
'{$PBASIC 2.5}
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 "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
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 duración corta.
Frequencia y Sonido · Página 253
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 duración
empieza en 15, entonces el bucle For frequency...lo toma y manda frecuencias a la bocina
piezoeléctrica 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 duración 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
'{$STAMP BS2}
'{$PBASIC 2.5}
PAUSE 1000
END
Usted puede usar el argumento opcional Freq2 para tocar dos frecuencias con una sola
instrucción FREQOUT. Por ejemplo, usted puede tocar 2 kHz y 3 kHz de la siguiente
forma:
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 presión del aire que hace la bocina piezoeléctrica se llaman “ondas de
sonid” Cuando el tono es más grabe, las variaciones en la presión del aire causadas por las
dos frecuencias se agregan una a otra (a esto se le llama superposición). Cuando el tono
esta en lo más quieto , las variaciones en la presión del aire se cancelan unas a otras (a
esto se se llama interferencia).
'{$STAMP BS2}
'{$PBASIC 2.5}
PAUSE 1000
DEBUG "Hecho", CR
END
Las teclas y sus notas correspondientes están marcadas C6 hasta C8. Estas teclas están
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 están 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.
usadas al tocar música usando otro instrumento musical. Estas reglas se aplican a los
mismos elementos que se usaron para hacer efectos de sonido: frecuencia, duración y
pausa. El siguiente Programa Ejemplo toca algunas de las frecuencias de las notas
musicales en la bocina piezo cada una con una duración de medio segundo.
END
Este es un ejemplo para usar la directiva DATA para almacenar los caracteres que
corresponden a las notas musicales.
Usted puede usar la instrucción READ para accesar estos caracteres. La letra “C” se
localiza en la dirección 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
instrucción:
READ Notes + 6, noteLetter
Usted también puede almacenar listas de números usando la directiva DATA. Los valores
de Frecuencia y duración que usa el BASIC Stamp para las notas musicales necesitan
estar almacenadas en variables tamaño “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 instrucción
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.
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
Página 260 · ¿Qué es un Microcontrolador?
La canción “El Alfabeto” la usan los niños para memorizar las letras “ABCDs”y usa las
mismas notas de “Twinkle Twinkle Little Star.”
'{$STAMP BS2}
'{$PBASIC 2.5}
Frequencies DATA Word 2093, Word 2093, Word 3136, Word 3136,
Word 3520, Word 3520, Word 3136
Frequencia y Sonido · Página 261
Durations DATA Word 500, Word 500, Word 500, Word 500,
Word 500, Word 500, Word 1000
PAUSE 1000
FOR index = 0 TO 6
NEXT
END
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 duración.
Descansos son los tiempos entre notas que no se tocan tonos. La duración de los
descansos tambien se miden en entero, mitad, cuarto, octavo, dieciseisavo y treinta y
doseavos.
Más de Musica con microcontrolador. Después de completar esta actividad, usted estará
listo para aprender como escribir códigos musicales en PBASIC a partir de las hojas de
música. Vea el tutorial Tocando música de partitura con la bocina piezo, y su primer video
en www.parallax.com/go/WAM.
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 canción “Martinillo”. Solo
se almacenarán los caracteres de las notas en la directiva Notes DATA porque las
instrucciones LOOKUP y LOOKDOWN se usarán para acoplar letras con sus
correspondientes frecuencias.
Notes DATA "C","D","E","C","C","D","E","C","E","F",
"G","E","F","G","Q"
Durations DATA 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2, 4, 4, 2
hay prefijo Word en la directiva DATA. Comparado con almacenar valores en terminos
de milisegundos, estos números se relacionan más con la partitura.
1 nota entera
2 media nota
4 cuarto de nota
8 octavo de nota
16 dieciseisavo de nota
32 treintaydosavo de nota
Después que se lee cada valor de la directiva Durations DATA, se divide entre el valor de
WholeNote para obtener la Duration usada en la instrucción FREQOUT. La cantidad de
tiempo que dura cada nota depende del tempo de la canción. Un tempo rápido significa
que cada nota dura menos tiempo, mientras que un tempo lento significa que cada nota
dura más tiempo. Como todas las duraciones de las notas son fracciones de una nota
entera, usted puede usar la duración 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.
¿Cómo toco un silencio? Usted puede insertar un silencio entre notas insertando una “p”. La
sección “Su Turno” tiene las primeras pocas notas de la 5ª. Sinfonía de Beethoven que
tiene un silencio.
¿Cómo toco notas bemol/sostenido? El programa NotesAndDurations.bs2 tiene valores en
las tablas lookup para notas bemol/sostenido. Cuando usted usa con letra minúscula, 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.
'{$STAMP BS2}
'{$PBASIC 2.5}
Durations DATA 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2, 4, 4, 2
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 · Página 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í todavía 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 carácter que accesa la instrucción READ. Las instrucciones LOOKUP u
LOOPDOWN se usan para convertir este carácter 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 instrucción READ para recibir un
valor de Durations DATA. Y también se usa para calcular el argumento Duration para la
instrucción FREQOUT.
El bucle principal se mantiene en ejecución hasta que la letra “Q” se lee de NotesDATA.
Entonces este valor de offset se usa en una instrucción 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
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 acción que el programa hace es
leer la siguiente nota , usando la variable “index”.
index = index + 1
LOOP
Meter los datos musicales es mucho más fácil cuando todo lo que tiene que hacer es
grabar notas y duraciones. Estas son las primeras ocho notas de la Quinta Sinfonía de
Beethoven.
Durations DATA 8, 8, 8, 2, 8, 8, 8, 8, 2
WholeNote CON 2000
The termino “punteadas” se refiere a un punto usado en la partitura para indicar que una
nota deberá tocarse 1 ½ veces más de su duración normal. Por ejemplo, una nota de un
cuarto punteada deberá durar la duración de una nota de un cuarto más un octavo de nota.
Una nota de un medio punteada dura una mitad mas un cuarto de duración.
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, 1, 0, 0, 0, 0,
0, 0, 0, 1, 0
Los programas que reproducen música típicamente expresan el tempo de una canción 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 repetición 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 sección Su
Turno para tocar más de una octava usando la directiva NotesDATA.
Octaves DATA 6, 7, 6, 6, 6, 6, 6, 6, 6, 7, 6,
6, 6, 6
Página 268 · ¿Qué es un Microcontrolador?
index = index + 1
LOOP
END
Página 270 · ¿Qué es un Microcontrolador?
Funcionamiento de MusicWithMoreFeatures.bs2
Abajo están los datos musicales de la canción 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. También hay una constante
BeatPerMin que fija el tempo de la canción.
En el Programa Ejemplo anterior, WholeNote era una constante. Este tiempo, es una
variable que no retiene la duración de una nota completa en milisegundos. Después 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 también 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 características punteadas.
wholeNote VAR Word
Ahora que las octavas están el el mix, ha cambiado la parte de el código que calculó la
frecuencia de la nota. La Tabla de Valores de la instrucción 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 instrucción 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
instrucción READ dimensiona el valor almacenado de la octava en Octaves DATA.
Este pudiera ser un valor entre 5 y 8.
Página 272 · ¿Qué es un Microcontrolador?
Ahora, noteOctava es un valor que puede usarse como un exponente de 2, ¿pero como
elevamos a la potencia 2 en PBASIC? Una solución 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 sección Su Turno para poner más atención en su
funcionamiento.
NoteFreq = noteFreq / (DCD noteOctave)
Las primeras dos líneas del código para determinar la duración de la nota son casi iguales
a las del código del Programa Ejemplo anterior. Ahora, sin embargo, una nota pudiera
estar punteada y esto significa que la duración tendría que multiplicarse por 1.5. Se usa
un instrucción 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
Las dos notas de la 7ª. Octava son esenciales para hacer que la canción suene
correctamente. Es interesante escuchar que sucede si estos 7 valores se cambian a 6.
9 Trate de cambiar los dos valores 7 en la directiva Octaves DATA, para que sean
6.
9 Recuerde que este cambio hará que “Take Me out to the Ball” suene feo.
9 Ejecute el programa y escuche el efecto de las octavas incorrectas de la canción.
9 Cambie la directiva Octaves DATA a su estado original.
9 Ejecute el programa otra vez y escuche para ver si el sonido suena otra vez
correctamente.
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 Teléfonicos.
La gran característica de los archivos RTTTL fue que eran ampliamente compartidos a
traves de WWW. Alguno sitios tenían archivos RTTL disponibles para descargarlos
libremente. Estos eran también programas de software libre que se podían usar para
componer y emular archivos y después descargarlos en su teléfono celular.
Usted puede intentar los dos siguiente Programas Ejemplo para ver como funciona
SELECT...CASE. El pograma SelectCaseWithValues.bs2 toma valores numéricos que
usted mete en la Terminal Debug y le indica el tamaño mínimo 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 mayúscula, minúscula, un dígito o un
signo de puntuación.
Haga click en la
ventana Transmitir
Receive → (arriba) para meter
el valor o carácter
que usted desea
transmitir a el
BASIC Stamp..
Página 276 · ¿Qué es un Microcontrolador?
¿Qué sucede si usted mete un número mayor que 65535? Si usted mete el númere 65536,
el BASIC Stamp almacenará el número 0. Si usted mete el número 65537, el BASIC
Stamp almacenará el número 1, y así sucesivamente. Cuando un número 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 tamaño de los números que introdujo en la Terminal Debug.
'{$STAMP BS2}
'{$PBASIC 2.5}
DO
SELECT value
CASE 0, 1
DEBUG "Bit", CR
PAUSE 100
Frequencia y Sonido · Página 277
CASE 2 TO 15
DEBUG "Nib (Nibble)", CR
PAUSE 200
CASE 16 TO 255
DEBUG "Byte", CR
PAUSE 300
ENDSELECT
LOOP
Cuando se han hecho todos los casos, la palabra clave ENDSELECT se usa para
completar la instrucción SELECT...CASE.
ENDSELECT
'{$STAMP BS2}
'{$PBASIC 2.5}
DO
DEBUGIN character
SELECT character
CASE ELSE
Frequencia y Sonido · Página 279
ENDSELECT
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 tamaño cambió de word a byte. Esto se hace porque todos los
caracteres en PBASIC son tamaño byte. La instrucción SELECT escoge la variabe
character para la evaluación 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 puntuación de
la misma forma como un rango de números, ya que el BASIC Stamp los reconoce por sus
equivalentes numéricos en ASCII. {}. Vea la ayuda de BASIC Stamp Editor.
SELECT character
También hay una instrucción diferente “CASE” que no se usó en el ejemplo anterior:
CASE ELSE
DEBUG CR, "Character not known.", CR,
"Try a different one."
Esta instrucción CASE le indica al bloque de código SELECT que hacer si ninguno de
los otros casos es verdadero. Usted puede usar este caso para trabajar metiendo un
carácter por ejemplo % y $.
Página 280 · ¿Qué es un Microcontrolador?
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 página de código.
9 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.
9 Ejecute el programa, y verifique que reconoce la pieza Reveille bugle call.
9 Vaya a la sección Su Turno e intente algunas piezas más (con directivas
RTTTL_File DATA)
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Programa ejecutandose!"
RETURN
RETURN
ENDSELECT
RETURN
' -----[ Subroutine – Cheque Para '.' Indicando Duraci+on 1.5 ]-----------
RETURN
RETURN
Esta es una lista de los elementos en este programa que por ahora le deberían ser
conocidos:
• Comentarios que le ayudan en la explicación de su código
• 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.
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 teléfono 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 capítulo introdujo técnicas para hacer sonidos y tonos musicales con el BASIC
Stamp y una bocina piezo eléctrica. La instrucción FREQOUT se puede usar para mandar
a una bocina piezo eléctrica señales high/low para que hagan efectos de sonido y/o notas
musicales. La instrucción FREQOUT tiene argumentos que controlan los pines de E/S a
donde se manda la señal, 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 duración de los tonos y
las pausas entre ellos. El valor de la frecuencia también puede barrerse en un rango de
valores para crear una variedad de efectos.
Hacer notas musicales también depende de la frecuencia, duración y pausas. El valor del
argumento “Duration” de la instrucción FREQOUT lo determina “tempo” de la canción y
la duración 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 duración de la instrucción 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 tamaño “word” usando
prefijos “Word”. La instruccón READ se usó para retirar valores almacenados por las
directivas DATA. En los ejemplos de este capítulo, el argumento “Location” de la
instrucción 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 · Página 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. También pueden
realizarse las operaciones matemáticas en valores de variables para cambiar la octava de
una nota dividiendo su frecuencia por una potencia de dos. Las operaciones matemáticas
también son útiles para la duración de las notas conociendo el tempo o la duración de la
nota entera.
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. ¿Cómo puede usted modificar la instrucción 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. ¿Cómo modifica usted una directiva DATA o una instrucción READ si desea
almacenar y retirar valores “word”?
6. ¿Puede usted tener más de una directiva DATA? Si si puede, como puede usted
indicarle a una instrucción 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.
Página 288 · ¿Qué es un Microcontrolador?
Proyectos
1. Construya un Generador de Tonos controlado con botones push. Si se presiona
un botón push, la bocina debe emitir un beep de 2 kHz durante un 1/5 de
segundo. Si se presiona el segundo botón push la bocina debe emitir una beep de
3 kHz durante un 1/10 de segundo.
Soluciones
Q1. Nuestro oido detecta cambios en la presión del aire como tonos. Un tono con
timbre alto genera cambios más rápidos en la presión del aire, un tono con timbre
bajo genera cambios lentos en la presión del aire.
Q2. FRECOUT 15, 1000, 3000 manda una señal de 3000 Hz que sale del pin P15
durante un segundo (1000 ms). El efecto de cada númro es: 15 es el pin E/S 15;
1000 es la duración 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 instrucción después de una
coma:
P1. Use el circuito de bocina piezoeléctrica de la Figrua 8-2; y los circuitos del botón
push de la Figura 4-26.
5V Regulator
converts input
2K EEPROM stores voltage to
PBASIC code and logged regulated 5
data volts
→ ←
Figura 9-1
Circuitos
Integrados
del BASIC
Stamp
Las personas usan el término Circuito Integrado (CI) cuando se refieren a los pequeños
chips negros. Realmente el circuito integrado es un pequeño chip de silicio que está
contenido dentro de un plástico negro o una cajita de cerámica. Dependiendo del chip
puede tener cientos, miles o millones de transistores. Un transistor es el bloque de
construcción básico de los circuitos integrados, y usted tendrá la oportunidad de
experimentar con el transistor en este capítulo. Otro componentes familiares diseñados
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 más complicados. El núcleo 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 diseñan para trabajar
en conjunto.
realizado, hay probablente cientos de formas diferentes que usted podría usar en cada uno
de estos circuitos integrados.
Presentado el Transistor
La Figura 9-2 muestra el símbolo esquemático 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 válvula
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 pequeña cantidad de corriente que
permite la base, circula una corriente 416 veces mayor a través del transistor de C a E.
C
Figura 9-2
C B Transistor 2N3904 {}
B Símbolo esquemático y dibujo del
E transistor
2N3904
E
Vdd Vdd
Vss Vss
Bloques de Construcción Electrónicos · Página 295
¿Cuál 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. También 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
pequeño ventilador de DC. También se usa para proporcionar cantidades grandes de
corriente a un resistor pequeño que se usa como elemento calefactor. Cualquiera de estas
dos aplicaciones podrían drenar mucha corriente que dañarían rápidamente a el BASIC
Stamp, pero el transistor se encarga de que esto no suceda.
Sustitución 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 Vdd 8
Use the reference notch to make
2 U/D CS 7
sure you have the AD5220 right-side-
3 A1 B1 6 up when building it into your circuit on
the breadboard.
4 GND W1 5
AD5220
Bloques de Construcción Electrónicos · Página 297
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 página principal de Analog
Devices y déle click en el botón Search. Dé click en Data Sheets. Dé click en la liga que
dice “AD5220: Increment/Decrement Digital Potentiometer Datasheet”
Vdd Vdd
Vdd
AD5220
CLK Vdd 8 Figura 9-6
P6 1
U/D CS 7
Circuito
P5 2
Esquemático del
3
A1 B1 6 Transistor
GND W1 5 100 kΩ Controlado por
4
Potenciometro
Digital
100 kΩ
Vss Vss
P5
P4
P3
P2
P1
P0
X2
Digamos que usted gira la perilla del potenciometro un paso en sentido de las manecillas
del reloj. El LED brillará muy poquito. Esto sería lo mismo que mandar una señal 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 Construcción Electrónicos · Página 299
Ahora imagine que gira su potenciometro manual 3 pasos en sentido inverso de las
manecillas del reloj. El LED brillará más poquito. Esto sería lo mismo que mandar una
señal 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
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 señal 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
DO
LOW 5
HIGH 5
Para simplificar el programa usted puede usar una instrucción llamada TOGGLE.
TOGGLE cambia el estado de un pin E/S del BASIC Stamp, si el pin E/S estaba
mandando una señal high, TOGGLE hace que mande una señal low. Si el pin E/S estaba
mandando una señal low, TOGGLE hace que mande una señal high.
DO
FOR counter = 0 TO 127
PULSOUT 6,5
PAUSE 10
NEXT
TOGGLE 5
LOOP
Entre cada uno de estos elemtos resistivos hay un interruptor llamado “derivación” (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
posición 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 posición 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 posición 126. Si usted desea mandar la derivación a 125, (la
posición 126 abierta y la posición 125 cerrada), fije U/D en low y luego aplique un pulso
a CLK. Si usted desea fijar la derivación en la posición 127 , fije U/D en high y aplique
dos pulsos. Si usted desea regresar la derivación a 1, fije U/D en low y aplique 126
pulsos.
El siguiente Programa Ejemplo usa la Terminal Debug para preguntarle que derivación
desea usted cerrar. Luego decide si el pin U/D se fija en high o low y aplica el número
correcto de pulsos para mover la derivación de su posición vieja a su posición nueva. Con
excepción de Data EEPROM, el siguiente Programa Ejemplo tiene casi todas las
secciones que usted normalmente espera encontrar en un programa de aplicación.
Haga click en la
Receive → ventana (superior) y
meta los números
para el nuevo ajuste
de la derivación
DO
LOOP
RETURN
Set_Ud_Pin: ' Examina los valores nuevos y viejos de Derivación
'para decidir el valor del pin de Arriba/Abajo .
IF newTapSetting > oldTapSetting THEN ' Notifica usuario si valore
HIGH UdPin ' son iguales.
Bloques de Construcción Electrónicos · Página 305
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:
RESUMEN
Este capítulo presentó los circuitos integrados y la forma como pueden usarse con el
BASIC Stamp. Se usó un transistor como válvula de corriente, y un potenciometro digital
para controlar la cantidad de corriente que pasa a través del transistor. Al examinar los
potenciometros digitales presentamos el punto de referencia y el mapa de pins como
elementos importantes de chips electrónicos. Se analizó la función de cada uno de los
pines del potenciometro digital y también la estructura interna del dispositivo. Se
presentó la instrucción TOGGLE del PBASIC como medio para ahorrar memoria de
programa.
Preguntas
1. ¿Cuáles son los nombres de las terminales del transistor que usted usó en este
capítulo?
2. ¿Qué terminal controla en paso de corriente a través del transistor?
3. ¿Cómo puede usted incrementar o decrementar la corriente que pasa a través del
transistor?
Página 306 · ¿Qué es un Microcontrolador?
Ejercicio
1. Escriba un programa que ajuste la derivación del potenciometro digital en la
posición, sin importar su posición actual.
Soluciones
Q1. Emistor, Base y Colector.
Q2. La base controla la corriente que pasa a través del transistor.
Q3. Incremente o decremente la corriente permitida en la base del transistor.
P1. Use el circuito del potenciometro digital que muestra la Figura 9-6 y el circuito
fototransistor de la Figura 7-4.
El problema que ahora tenemos es que solamente hay 128 ajustes de derivación,
y 3900 mediciones posibles de RCTIME del fototransistor. Para resolver este
problema necesitamos dividir las mediciones RCTIME del fototransistor por
algún 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
Escala_Fototransistor
LightReading = (lightReading - valMin) / scaleDivisor
RETURN
' Fije un valor that que pueda dividirse en RCTIME del fototransistor
' para escalarlo a un valor en el range de 0 a 128
Read_Phototransistor:
HIGH PhotoPin
PAUSE 1
RCTIME PhotoPin, 1, lightReading
lightReading = lightReading MAX valMax MIN valMin
RETURN
Scale_Phototransistor:
lightReading = (lightReading - valMin) / scaleDivisor
RETURN
Página 310 · ¿Qué es un Microcontrolador?
Realizando sus Propios Inventos · Página 311
En este punto, usted puede estar interesado en usar sus nuevas habilidades para inventar
algo o para aprender más o quiza ambas actividades. Usted ha aprendido que en este libro
puede obtener un buen método para hacer prototipos de una variedad amplia de inventos.
En este capítulo usaremos un sistema micro alarma como ejemplo de prototipo de un
dispositivo familiar. A lo largo del camino cubriremos algunas técnicas importantes de
prototipos y habitos, que incluyen:
Otra técnica de este libro fue medir el tiempo de descarga de RC con la instrucción
RCTIME para sensar la posición de una perilla de potenciometro y niveles de luz con un
fototransistor y un LED. Estos ejemplo son la punta del iceberg en términos de sensores
que usted puede usar con un circuito RC
Otros ejemplos son sensores de humedad, temperatura y presión 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 señales high/low del BASIC Stamp. Con circuitos de
soporte adicional, usted puede usar las señales para mover motores eléctricos hacia
delante y hacia atrás, apagar y encender luces, apagar y encender elementos de
calentamiento y mucho más.
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.
Figura 10-1
Bosquejo de
un gabinete
con
Microsistema
de Seguridad
Es importante la descripción 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 rediseñar el dispositivo para adecuarle algo que usted
no había pensado. Los diseñadores y las compañias que crean aparatos para clientes
tienen que ser muy cuidadosos al examinar sus clientes para comprender lo que ellos
esperan. En especial los dispositivos diseñados para clientes, sus rediseños pueden ser
muy costosos y consumir mucho tiempo.
Este es un ejemplo de una muy breve descripción funcional que podemos usar para
nuestro sistema. Desarrolle un prototipo del circuito y programa de un microsistema de
Página 314 · ¿Qué es un Microcontrolador?
alarma que pueda monitorear una pequeña 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 después que el dispositivo se ha activado para permitirle al usuario
que cierre el gabinete.
Especificaciones
Además de la descripción funcional, las especificaciones tipicamente toman en
consideración muchos aspectos que la propuesta debe incluir: costo, consumo de energía,
voltaje de alimentación, dimensiones, peso, volumen de la bocina, y algunos otros
detalles.
Diseño Inicial
Frecuentemente, el diseño inicial incluye tormenta de ideas para que las aproximaciones
puedan resolver el problema de diseño, y muchas de estas ideas tienen que verificarse
para saber si son verdaderamente realizables. Otras porciones del diseño podrían
involucrar partes normalizadas o comunes y practicas de diseño. Nuestra micro alamarma
cae en esta categoría, al menos en el prototipo. Se deberá colocar un botón push en el
gabinete para que cuando la charola se cierre presione al botón push. El LED bicolor es
un indicador familiar y también la bocina piezo eléctrica 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, botón push, potenciometro y bocina piezo. La siguiente
es una lista de los capitulos y actividades donde presentamos cada uno de estos circuitos:
Recuerde esto cuando descargue los ejemplos de los códigos de los capítulos anteriores
para verificar cada uno de los circuitos.
Entonces, el ahorro más importante de tiempo con este procedimiento es asegurarse que
no hay errores en el circuito que traten de hacerle pensar que son errores de código.
9 Busque el código del Capítulo 3, Actividad #2 para adaptarlo a las pruebas que
muestra la Figura 10-2 del circuito botón push.
9 Cambie las referencias de los pines de E/S para que trabajen con el circuito de la
Figura 10-2
9 Verifique el código y corrija cualquier error de programa o alambrado antes de
continuar.
9 Repita el mismo proceso para:
o El circuito de la bocina piezo del Capítulo 8, Actividad #1.
o El circuito del potenciometro del Capítulo 5, Actividad # 3
o El circuito del LED bicolor del Capítulo 2, Actividad # 5
9 Asegurese de guardar cada programa modificado bajo un nuevo nombre, de
preferencia en una carpeta separada , puede ser de nombre “WAM Capítulo 10”
NEXT
LOOP UNTIL state <> triggered ' Repite hasta despreparar' -
comunicarse con cualquier pin de E/S, o con el pin 16 para comunicarse con la Terminal
Debug. Ellas también tienen códigos 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 están 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 podría haber almacenado. Luego, ejecuta la instrucción 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 líneas abajo. Si la
instrucción SERIN recibe un carácter dentro de los 500 ms, almacena el resultado en la
variable char y se mueve a la siguiente línea y esta llama a la subrutina Process_Char. Si
no recibe un carácter dentro de los 500 ms brinca a Timeout_Label que hace que brinque
sobre la llamada a subrutina.
En un programa dado cada constante no tiene que tener nombre. Recuerde que los
números misteriosos son valores que se usan en una forma que el observador casual
podría no ser capáz de reconocer facilmente. Otro ejemplo de la subrutina
Alarm:Triggered es:
Los números 1 y 6 no son números 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 interpretación, y algunos podrían proclamar que el 1 y el 6 son números
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 codificación
requerido.
Actualice las descripciones entre los títulos de la subrutina y sus etiquetas, y también
repítalo para la rutina principal. Cuando lo haya hecho, guarde una copia de su código
con el nombre MicroAlarmProofOfConcept(v1.0).bs2
El sensor PIR detecta cambios de patrones de luz pasiva infrarroja en el área circundante
y manda una señal high para indicar que ha detectado movimiento, o una señal low para
indicar que no hay movimiento. La resistencia del sensor FlexiForce varía 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 instrucción RCTIME.
Página 324 · ¿Qué es un Microcontrolador?
El ejemplo paso a paso que demuestra como mejorar tanto en esta como en la
siguiente actividad que puede usted incorporar en la aplicación de su Micro Alarma,
está en Stamps in Class “MiniProyectos” en la liga www.parallax.com/Education
Digamos que el siguiente paso en su proyecto es mostrar el status del sistema sin
conexión a la computadora. Este es un ejemplo de cómo podría encontrar y evaluar un
componente para su aplicación.
Figura 10-4
Parallax 2x16 Serial LCD
Si usted sigue a los Sensores Inteligentes y la liga de Aplicaciones, usted puede bajar
el libro Sensores Inteligentes y Aplicaciónes que tiene un capítulo entero relacionado con el
control de la LCD con su BASIC Stamp 2.
b e h
a j
c f
k
i
d g
Cuando usted está buscando componentes e información acerca de cómo usarlos con el
BASIC Stamp, esto cae en la categoria de “application information”. Cuando está
buscando información de aplicación, es mejor empezar con el sitio web del fabricante, y
luego expandir la búsqueda que incluyan los forums, y si usted todavía no ha encontrado
Página 328 · ¿Qué es un Microcontrolador?
una buena solución expandala más para que incluya la WWW. La Figura 10-6 muestra
un ejemplo de Google las palabras claves de búsqueda son “infrarojo” y “remoto” en
documentos PDF y páginas de productos en www.parallax.com. Aquí la parte importante
es que Google busca documentos PDF en lugar de sólo páginas 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 búsqueda 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 artículos cortos que contengan las palabras
“infrarojo” y “remoto” en los forums parallax.com. Para encontrar una aplicación
específica del BASIC Stamp, cambie su búsqueda en los terminos de abajo. Asegurese
que las palabras BASIC Stamp están 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
Digamos que el siguiente paso para su proyecto Micro Alarma es un teclado, pero la
documentación y ejemplo en una sola búsqueda en página de productos en parallax.com
lo llevo a ejemplos de circuitos y códigos esparcidos. Entonces hagamos las busquedas
Realizando sus Propios Inventos · Página 329
con más orden, digamos que una busqueda en Google en el sitio de Parallax para todas
las referencias a teclados. Recuerde qe Google incluye documentos PDF.
9 Vaya a www.google.com
9 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
páginas de resultados. Hay generalmente suficiente de un parrafo de cada resultado de
búsqueda para tener algún contexto de cada liga. Esto le dará alguna idea de cuales
brincar y cuales mirar con atención. Después de unas página, usted podría encontrar y
seguir una liga de Partes del Kit de IR Remoto como lo muestra la Figura 10-7. Esto
podría no ser solución a lo que usted esperaba, pero después de examinar el precio, la
documentación, y el código ejemplo, podría tener mucho potencial para reforzar su
sistema de seguridad con teclado.
necesitar hacer más tareas en menor tiempo para las que BASIC Stamp fue diseñado,
algunos modelos de BASIC Stamp están diseñados con velocidades rápidas de
procesamiento.
La Figura 10-8 muestra todos los diferentes modelos del BASIC Stamp. Para detalles de
cada uno vaya a “Comparación de Modulos BASIC Stamp” en la liga
www.parallax.com/basicstamp.
From left: BS1, BS2, BS2e, BS2sx, BS2p24, BS2p40, BS2pe, BS2px
Un concepto en recordar es que si usted sube a un modelo más rápido 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 · Página 331
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 más ambiciosos y desafiantes, recuerde al Microcontrolador Propeller y al
Kit Propeller Education.
Figura 10-9
Kit Propeller Education
(izquierda)
Plataforma PE
(derecha)
Página 332 · ¿Qué es un Microcontrolador?
• Robotica
• Electrónica
• Sensores
• Automatización
• 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 capítulo se escribio (Otoño 2009). Las versiones nuevas y mejores, kits y
componentes están disponibles para reemplazar alguna de las aquí presentadas.
Asegurese de verificar www.parallax.com con la información más reciente.
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 líquido 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 Señales, 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 · Página 333
Figura 10-10 Los Siguientes Grandes Pasos que siguen de ¿Qué es un Microcontrolador?
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 página Texto + Kit y usted encontrara el PDF en la página
sección de Descarga.
Página 334 · ¿Qué es un Microcontrolador?
Figura 10-11
Diagrama de
Flujo de Stamps
in Class. {}
RESUMEN
Este libro presentó una variedad de circuitos y técnicas, todas ellas son bloques de
construcción en productos comunes así como en inventos. Este libro también presentó
técnicas para juntar los diversos bloques de construcción con el microcontrolador de
Página 336 · ¿Qué es un Microcontrolador?
BASIC Stamp. Este capítulo demostró como incorporar las técnicas y bloques de
construcción en un prototipo, y también recomendó algunos de los siguientes pasos para
aprender más en su área de interes.
La aproximación para hacer que el BASIC Stamp interactue con un circuito dado puede
aplicarse a una variedad de circuitos y módulos 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 botón push y (2) un sensor de presión con una
interface similara a la del potenciometro.
Los libros de texto Stamp in Class y sus kits tienen muchos circuitos y técnicas útiles de
diseño, y este es un gran lugar para aprender más en los campos de robótica, sensores,
electrónica, automatización, ciencias de la tierra, y más. Todos los libros de texto que
acompañan 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 técnicas 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.
• 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 Programación (Serial # 800-00003 o USB A MiniB # 805-
00006)
o ¿Qué es un Microcontrolador? Partes y Texto (#28152)
o Manual BASIC Stamp (# 27218)
Un mensaje a los educadores: Descuentos por comprar en cantidad de todos los kits
arriba mencionados: para detalles vea cada página de productos del kit en
www.parallax.com. Además las Tablilla HomeWork está disponible por paquetes de 10
como una solución económica para uso en el salón de clases, y cuesta significativamente
menos que la Board of Education más el módulo 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: Más sobre electricidad · Página 339
Circuito de Prueba
El valor de la resistencia Ri en la Figura B-1 puede cambiarse. Resistencias menores
permiten más corriente a través del LED, y éste emitirá más brillo. Mayores valores de
resistencia harán que el LED brille menos porque no permite que pase mucha corriente a
través del circuito.
Si usted está usando una bateria de 9 V, también 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.
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 dañando el
Página 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.
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 polarización en sentido directo del diodo. Para el resistor, la regla se llama Ley
de Ohm. También 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: Más sobre electricidad · Página 343
Vdd – Vss = 5 V El voltaje (la presión eléctrica) 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 alimentación 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 podría 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 energía.
Ley de Ohm V = I x R El voltaje medido en las terminales del resistor (V) es igual a la
corriente que pasa a través 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 cátodo
cuando la corriente pasa por él desde el ánodo al cátodo. 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 cálculos. 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.
Simplificación de la Ley de Kirchhoff de Voltaje. Voltaje usado igual a voltaje
suministrado. Si usted alimenta un circuito con 5 v, el número de volts en todas las partes
usadas suma 5 V.
Simplificación 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 través de Vss. }También, 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
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). También 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.
Figura B-2
VR + 1.7 V = 5 V
El voltaje en el
VR = 5 V − 1.7 V circuito,
VR = 3.3V Resistor, y
LED
Kilo En el sistema métrico decimal kilo significa 1000. En el sistema métrico decimal 1000
se dice kilo, y se abrevia con la letra minúscula 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 métrico 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 notación de una milésima de amper. La “m”
en mA es la notación métrica 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.
V = I×R
3.3V = I × 470 Ω
3.3 V
I=
470 Ω Figura B-3
Calculo de la
I ≈ 0.00702 V
Ω corriente a través
I = 0.00702 A del Resistor
7.02
I= A
1000
I = 7.02 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 límite en los pins E/S de 20
mA? Calculemoslo. Recuerde que la versión 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 límite de 20 mA de los pines de E/S, se pueden conectar con
seguridad al pin E/S y conmutar con el BASIC Stamp.
Página 346 · ¿Qué es un Microcontrolador?
Figura B-4
I = I 1 + I 2 + ... I i Corriente
Total
I = 7.02 mA + 7.02 mA
proporcionada
I = 14.04 mA ≈ 14.0 mA a los dos
Circuitos LED
Respuesta: I = 3.3 mA
9 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
9 Repita el ejercicio que muestra la Figura B-4 con un resistor de 470 Ω y el otro
de 1 K Ω..
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
canción. 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.
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 duración default in la octava
por default Por ejemplo, la segunda nota de TakeMeOutToTheBallGame es:
,c,
Como no hay otra información, se tocará con la duración default de un cuarto de nota
(d=4), en la séptima octava (o=7)
Una nota puede tener hasta cinco caracteres entre las comas, esto es lo que especifica
cada carácter:
Página 348 · ¿Qué es un Microcontrolador?
,2g#.6,
significa toca la media nota G bemol por 1 ½ duración de la media nota y tócala en la
sexta octava.
El carácter:
,p,
indica pausa, y se usa para los silencios. Sin información extra, la p se toca por defaul en
duraciones de un cuarto. Usted podría tambien tocar media nota en forma de silencio
usando:
,2p,
,2p.,
En este caso el silencio podría durar media nota más un cuarto de nota.
Índice alfabetico · Página 349
Índice Alfabetico
-$- Apostrofe, 42
$ (Hexadecimal formatter), 209 Area de Prototipo, 31
Argumentos, 39
-*-
Automatización, 334
** (Operador de multiplicación -B-
alta), 273
*/ (Multipicación Media), 84 Base
*/ (Operador de Multiplicación del Fototransistor, 199
Media), 273 Transistor, 293
-:- Base-2 números, 67
:, 45 BASIC Stamp, 330
BASIC Stamp 2, 11
-?-
Bateria, 34
? (symbol = x formato), 45 Batido, 255
-1- Benjamin Franklin, 35
Bicolor LED, 50
16-bits error de rollover, 122 Binario, 61
-A- Bit, 45
AD5220 digital potentiometer, 296 Bloque de Códigos, 78
Adquisición de datos, 204 Booleana, 61
Ajuste, 160 Botón
Alerta de la Alimenación, 101 High Activo, 69
Algoritmo, 86 BS1, 330
Amp, 339 BS2, 330
AND, 78 BS2e, 330
Anidando subrutinas, 221 BS2p24, 330
Anode BS2p40, 330
Indicador de 7-segmentos, 172 BS2pe, 330
Anodo, 30 BS2px, 232, 330
BS2sx, 330
LED, 30
Bucle anidado, 253
Página 350 · ¿Qué es un Microcontrolador?
Ch02Prj01_Countdown.bs2, 59 ReactionTimer.bs2, 81
Ch03Prj01_TwoPlayerReactionTimer.bs2, ReadLightMeasurementsFromEeprom.bs
90 2, 212
Ch04Prj01Soln1__KillSwitch.bs2, 137 ReadPotWithRcTime.bs2, 154
Ch07Prj01_Blinds_Control.bs2, 245 ReadPushbuttonState.bs2, 68
Ch07Prj02_Blinds_Control_Extra.bs2, SegmentTestWithHighLow.bs2, 179
246
SelectCaseWithCharacters.bs2, 278
Ch5Prj01_ControlServoWithPot.bs2, 168
ServoCenter.bs2, 106
Ch6Prj01_FishAndChips.bs2, 194
SimpleLookdown.bs2, 189
Ch8Prj01_PushButtonToneGenerator.bs2
, 289 SimpleSubroutines.bs2, 219
Ch9Prj01_PhotoControlledDigitalPot.bs2, StoreLightMeasurementsInEeprom.bs2,
308 210
Las partes y cantidades están 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