Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
aplicaciones
Gua del Estudiante
VERSION 1.0
GARANTA
Parallax garantiza sus productos contra defectos en sus materiales o debidos a la fabricacin por un perodo de 90
das a partir de la recepcin de los mismos. Si usted descubre un defecto, Parallax segn corresponda, reparar,
reemplazar o regresar el valor de la compra. Antes de regresar el producto a Parallax, simplemente pida un nmero
de autorizacin de regreso de mercanca (Return Merchandise Authorization, RMA), escriba el nmero en el
exterior de la caja y envela a Parallax. Por favor incluya su nombre, nmero telefnico, direccin y una descripcin
del problema. Parallax le regresar su producto o el reemplazo, usando el mismo mtodo de correo que usted us para
enviar el producto a Parallax.
Si dentro de los 14 das en que usted recibi su producto, encuentra que no es conveniente para sus necesidades,
puede regresarlo, recibiendo un reembolso. Parallax regresar el precio de compra del producto, excluyendo los
gastos de envo y manejo. Esto no se aplica si el producto ha sido alterado o daado. Consulte la seccin de Garanta
arriba acerca de las instrucciones para regresar un producto a Parallax.
Este documento tiene derechos de copia Copyright 2006 por Parallax, Inc. Al descargar este documento o software
por Internet o al obtener una copia dura usted acepta los derechos de copia y se compromete a usar este material
solamente con productos comercializados por Parallax, Inc. Cualquier otro uso no est permitido y representa una
violacin de los derechos de copia, propiedad intelectual y derechos de autor de Parallax, Inc. y dicha violacin es
objeto de las penas que marcan las leyes Federal de derechos de autor y propiedad intelectual. Parallax Inc.
expresamente no permite la reproduccin con fines comerciales. Se permite la reproduccin con fines educativos,
reproduccin sujeta a las siguientes condiciones: el texto, ya sea en su totalidad o cualquier parte del mismo, no
puede ser duplicado para uso comercial; puede ser duplicado solo para fines educativos cuando se use nicamente en
conjunto con los productos Parallax y el estudiante abone solo el costo de la duplicacin.
Este texto est disponible en formato impreso por Parallax Inc. Dado el tiraje de la impresin del mismo, el precio al
consumidor es frecuentemente menor que los costos tpicos por duplicacin.
BASIC Stamp, Stamps en Class, Board of Education, Boe-Bot SumoBot, SX-Key y Toddler son marcas registradas
de Parallax, Inc. Si usted decide usar cualquiera o cualesquiera de las marcas registradas de Parallax Inc. en sus
pginas de Internet o en cualquier material impreso, forzosamente deber agregar la aclaracin: (la marca en
cuestin) es una marca registrada de Parallax, Inc. Otros nombres de productos y marcas son marcas registradas de
sus respectivos dueos.
ISBN 1-928982-39-5
DESVINCULACIN DE RESPONSABILIDAD
Parallax, Inc. no es responsable de daos por consecuencias, incidentes o daos especiales que resulten de cualquier
violacin de la garanta, bajo cualquier teora legal, incluyendo prdida de beneficios, tiempos muertos, buena fe,
dao o reemplazo de equipo o propiedad y cualesquiera costos de recuperacin, reprogramacin o de reproduccin de
datos guardados o usados dentro de los productos Parallax. Parallax tampoco es responsable de cualquier dao
personal, incluyendo vida o muerte, resultado del uso de cualquiera de nuestros productos. Usted tiene absoluta
responsabilidad por la aplicacin que desarrolle con el BASIC Stamp, sin importar la naturaleza del riesgo de la
misma.
SEGUNDA IMPRESION
Propeller chip Esta lista es especficamente para clientes que usan los circuitos y productos
Propeller.
BASIC Stamp esta lista es extensamente utilizada por Ingenieros, aficionados y estudiantes,
quienes comparten sus proyectos y preguntas acerca del BASIC Stamp.
Stamps en Class Creada para educadores y estudiantes, los suscriptores de esta lista discuten el
uso del material de Stamps en Class en sus cursos. La lista prove la oportunidad tanto a estudiantes
como a educadores de hacer preguntas y obtener respuestas.
Parallax Educators Es un foro exclusivo para educadores y aquellos que contribuyen al desarrollo
de Stamps en Class. Parallax creo este grupo con el fin de obtener retroalimentacin en el desarrollo
de nuestro currculum y proveer un sitio para que los educadores desarrollen y obtengan Guas para
Profesores.
Robotics Diseado para los robots Parallax, este foro fue creado para ser un dilogo abierto entre
entusiastas de la robtica. Los temas incluyen el ensamble, cdigo fuente, expansiones y
actualizaciones de manuales. Los robots Boe-Bot, Toddler, SumoBot, HexCrawler y
QuadCrawler son ampliamente discutidos aqu.
SX Microcontrollers y SX-Key Discusin de la programacin del microcontrolador SX con
herramientas del lenguaje ensamblador Parallax SX Key y compiladores de terceros en lenguajes
BASIC y C.
Javelin Stamp Discusin de aplicaciones y diseos usando Javelin Stamp, un modulo Parallax que
es programado utilizando un subconjunto de comandos del lenguaje de programacin Java de Sun
Microsystems.
ERRATA
Si bien se realiza un gran esfuerzo para asegurar la precisin de nuestros textos, an puede haber errores.
Continuamente nos esforzamos para mejorar todos nuestros materiales educativos y documentos y frecuentemente
revisamos nuestros textos. Ocasionalmente se publica en nuestro sitio www.parallax.com una hoja de fe de errata con
una lista de los errores y correcciones conocidos para un texto determinado. Por favor, revise las pginas individuales
de los productos para obtener una descarga gratuita de este archivo de fe de errata.
Tabla de Contenido Pgina i
Tabla de Contenido
Prefacio.......................................................................................................................iii
Introduccin y notas del autor........................................................................................ iii
Idea general.................................................................................................................... v
Antes de comenzar......................................................................................................... v
La serie educativa Stamps en class .............................................................................. vi
Traducciones ................................................................................................................ vii
Colaboradores especiales ............................................................................................ vii
Captulo 1: La Pantalla LCD Serial Parallax.............................................................1
LCDs en Productos.........................................................................................................2
El LCD serial Parallax - Su terminal porttil de depuracin............................................2
Actividad #1: Conexin y prueba de la pantalla LCD .....................................................4
Actividad #2: Despliege de mensajes simples................................................................8
Actividad #3: Aplicacion en un timer.............................................................................17
Actividad #4: Caracteres personalizados y animacin en LCD ....................................19
Actividad #5: Avance de texto traves de la pentalla .....................................................25
Resumen ......................................................................................................................34
Captulo 2: El Sensor Ultrasnico de Distancia Ping)))........................................41
Cmo trabaja el Sensor Ping)))? ................................................................................41
Actividad #1: Medicin del tiempo de eco ....................................................................42
Actividad #2: Mediciones de CentmetroS....................................................................46
Actividad #3: Medicin de pulgadas .............................................................................49
Actividad #4: Mediciones en movimiento......................................................................51
Actividad #5: El efecto de la temperatura en la velocidad del sonido...........................58
Resumen ......................................................................................................................61
Captulo 3: El Acelermetro MEMS de dos ejes....................................................65
EL Acelermetro MX2125 como funciona .................................................................67
Actividad #1: Conexin y prueba de pendiente con el MX2125 ...................................68
Actividad #2: Mediciones en movimiento......................................................................71
Actividad #3: Divisin proporcional y compensacin de los valores de entrada ..........76
Actividad #4: Dividiendo en 1/100 g .............................................................................83
Actividad #5: Medicin de Rotacin Vertical de 360 ...................................................85
Actividad #6: Medicin de la inclinacin respecto a la Horizontal ................................98
Resumen ....................................................................................................................112
Captulo 4: El Mdulo de brjula Hitachi HM55B ................................................119
Interpretacin de las mediciones de la brjula ...........................................................119
Actividad #1: Conexion y prueba del mdulo de brjula.............................................120
Actividad #2: Calibracin del mdulo de brjula.........................................................128
Pgina ii Sensores inteligentes y sus aplicaciones
Prefacio
INTRODUCCIN Y NOTAS DEL AUTOR
La primera vez que v el trmino sensor inteligente fue en el texto Sensores Aplicados
de Tracy Allen (entonces conocido como Mediciones Ambientales). De manera adecuada,
Tracy aplic este trmino al termmetro digital DS1620, el cual tiene elementos
electrnicos interconstrudos que simplifican las mediciones de temperatura del
microcontrolador. Adicionalmente, poda recordar la configuracin1 que reciba del
microcontrolador y, ms an, funcionar independientemente como un controlador de
termostato.
En contraste con los sensores inteligentes, los sensores primitivos son dispositivos o
materiales que tienen alguna propiedad elctrica que cambia con algn fenmeno fsico.
Un ejemplo de un sensor primitivo en Qu es un Microcontrolador? es la
fotorresistencia de sulfato de cadmio. Su resistencia cambia con la intensidad de la luz.
Con el programa y el circuito adecuados, es posible realizar mediciones de luz con un
microcontrolador. Otros ejemplos de sensores primitivos comunes son los sensores de
temperatura con salida de corriente/tensin, transductores de micrfonos y an el
potencimetro, que es un sensor de posicin rotacional.
Durante mi primer encuentro con un sensor inteligente pens: Vaya! Un kit completo
de estos sensores con un libro podra ser REALMENTE interesante! En verdad espero
1
En ingles, setting (N. del T)
Pgina iv Sensores inteligentes y sus aplicaciones
que alguien haga un kit y un libro as pronto No tena idea que pronto terminara
siendo casi seis aos despus, y que alguien terminara siendo yo. Y si alguno de mis
jefes me hubiera dicho entonces que ese kit contendra un acelermetro, un medidor de
distancias ultrasnico, una brjula digital y una pantalla o visor LCD2 serial para
mediciones en movimiento, quiz la impresin me hubiera deshecho por completo.
Puesto que solo recientemente fue posible para nosotros conjuntar un grupo de
componentes tan sorprendente en un solo kit, debera decir que la espera vali la pena.
En concordancia con el resto de los tutoriales Stamps en Class, este libro es una coleccin
de actividades, algunas de las cuales cubren aspectos bsicos, algunas otras cubren otros
aspectos ms avanzados, y otras demuestran aplicaciones o arman bloques para varios
productos e inventos. La primera mitad del libro presenta al sensor junto con algunas
mediciones en movimiento desplegadas en una pantalla LCD. Luego, la segunda mitad
del libro tiene una cantidad considerable de aplicaciones para que usted las intente, tales
como juegos de video por inclinacin, herramientas de medicin personalizadas y
dispositivos de diagnstico para entusiastas del deporte y del bricolaje. El lmite de
pginas para este libro delimitado por nuestro empaque es 350 y fue difcil detenerme
all. Se pueden encontrar actividades adicionales de sensores inteligentes para el robot
Boe-Bot en el foro de Stamps en Class en www.parallax.com.
Si bien este libro cubre los fundamentos y demuestra algunas aplicaciones como
ejemplos, solamente rasga la superficie de lo que usted puede hacer con estos
dispositivos. El propsito principal de este libro es proveer algunos bloques de
construccin e ideas para proyectos e inventos futuros. Por ejemplo, despus de
completar el captulo 3, nuestro revisor del libro Kris Magri puso su tarjeta de
entrenamiento Board of Education con el acelermetro y la LCD sobre el tablero de su
auto, y ahora su auto tiene un medidor de aceleracin en planos a un lado de su
velocmetro. Con algunas modificaciones al cdigo, se pudo haber cambiado por un
sistema de alerta de volcadura en autos de doble traccin. Despus de revisar el
dispositivo mecnico de vigilancia para predecir condiciones de avalancha en reas
montaosas basado en la inclinacin de la ladera, Ken Gracey desarroll en una noche la
versin digital con las mismas partes que tena Kris en su auto.
2
Visor o pantalla de cristal lquido; de sus siglas en ingls, Liquid Cristal Display (N. del T.)
Prefacio Pgina v
puede hacer con su kit en el foro de Stamps en Class. No importa si piensa que su
proyecto esta en onda, es nico, poco original o lo que sea. Solo tome unos minutos para
publicar las cosas que ha hecho con estos sensores inteligentes en
http://forums.parallax.com/forums/ Stamps en Class. Asegrese de incluir algunas
fotos, una descripcin breve y preferentemente un esquema y el programa PBASIC.
Entonces, divirtase con este kit y este libro y nosotros veremos sus inventos en el foro
de Stamps en Class.
IDEA GENERAL
El kit de sensores inteligentes contiene cuatro dispositivos que, cuando se usan con
BASIC Stamp y la Tarjeta Board of Education o la tarjeta HomeWork Board, pueden ser
bloques de construccin para una variedad de inventos y proyectos de estudiantes. He
aqu una lista de los dispositivos:
Adems de proveer tanto el equipo como la informacin de cmo se usa este para
proyectos estudiantiles, este texto hace 2 nfasis mayores que proveen teora, ejemplos y
los clculos requeridos, lo cual puede ser usado para reforzar una variedad de conceptos
de medicin, de fsica/ingeniera y de trigonometra. Estos nfasis son:
ANTES DE COMENZAR
Para ejecutar los experimentos en este texto, necesitar tener su tarjeta Board of
Education o bien HomeWork Board conectada a su computadora, el software Editor de
BASIC Stamp instalado en su computadora y haber verificado que hay comunicacin
enre su computadora y su BASIC Stamp. Para instrucciones detalladas a este respecto,
consulte Qu es un Microcontrolador?, disponible como descarga gratuita en
Pgina vi Sensores inteligentes y sus aplicaciones
Podr entonces continuar con otros tpicos de proyectos educativos, o quiz prefiera
explorer nuestros kits Robticos.
Kits Robticos:
Para adquirir experiencia con robtica, considere continuar con las siguientes Guas Del
Estudiante Stamps en Class, cada una tiene un kit robot correspondiente:
Control remoto IR para el Boe-Bot, Gua del Estudiante, Version 1.1, Parallax
Inc., 2004
Robotica Aplicada con el SumoBot, Gua del Estudiante, Version 1.0, Parallax
Inc., 2005
Robtica avanzada con el Toddler, Gua del Estudiante, Version 1.2, Parallax
Inc., 2003
Referencias
Este libro es una referencia esencial para todas las Guas del Estudiante Stamps en Class.
Se presenta con informacin de la serie de modulos microcontroladores BASIC Stamp,
nuestro Editor BASIC Stamp y nuestro lenguaje de programacin PBASIC.
TRADUCCIONES
Los textos educativos Parallax pueden ser traducidos a otros idiomas con nuestro permiso
(correo electrnico: translations@parallax.com). Si usted planea hacer alguna traduccin
por favor contctenos y as podremos proveerle con los documentos MS Word en el
formato adecuado, imgenes, etc. Tambin mantenemos un grupo privado de discusin
para traductores al cual quiz quiera unirse. Esto asegurar que se le mantiene al corriente
con nuestras frecuentes revisiones de texto.
COLABORADORES ESPECIALES
Parallax Inc. quiere dar reconocimiento a sus miembros del equipo de Educacin: al
administrador del Proyecto Aristides Alvarez, el Ilustrador Tcnico Rich Allred,
Diseadora Grfica Larissa Crittenden, Revisor Tcnico Kris Magri y la Editora Tecnica
Stephanie Lindsay. Adicionalmente, gracias a nuestro cliente Steve Nicholson por poner
a prueba de usuario la mayoria de nuestras actividades. Como siempre, un
agradecimiento especial a Ken Gracey, fundador del programa educativo Stamps en Class
de Parallax Inc.
Pgina viii Sensores inteligentes y sus aplicaciones
Cap 1: La pantalla LCD Serial Parallax Pgina 1
Figura 1-1: BASIC Stamp, Board of Education, y Pantalla LCD Serial Parallax
LCDS EN PRODUCTOS
Todos los productos mostrados en la Figura 1-2 tienen pantallas de cristal lquido. Son
fciles de leer y los ms pequeos consumo poca energa. Piense cuntos productos que
usted posee tienen pantallas de cristal lquido. Al avanzar en las actividades de este texto,
piense acerca los proyectos de BASIC Stamp, los prototipos y los inventos que tiene en
progreso y cmo una pantalla LCD serial puede mejorarlos o ayudarle a completarlos.
que recibe del BASIC Stamp. Es especialmente til para mostrar mensajes de diagnstico
y valores de variables, haciendo ms fcil aislar los problemas en un programa. Tambin
es til para probar circuitos, sensores y ms.
Figura 1-3
LCD Serial Parallax
(216)
La pantalla LCD Serial Parallax 216 tiene dos renglones de 16 caracteres cada uno para
desplegar mensajes. La pantalla es controlada por mensajes seriales desde el BASIC
Stamp. El BASIC Stamp enva estos mensajes desde un solo pin de entrada/salida que est
conectado a la entrada serial de la LCD. Hay dos versiones, estndar y con luz de fondo:
Version Parte Parallax #
Estndar 27976
Con Luz 27977
Pantallas LCDs Seriales vs Paralelas
La pantalla LCD paralela es probablemente el tipo ms comn de pantallas LCD. Requiere
un mnimo de 6 pines de entrada/salida para ser controlada por el BASIC Stamp. Tambin,
si no est usando un BASIC Stamp 2p, 2pe o 2px, el cdigo para controlar la pantalla tiende
a ser ms complejo que el cdigo para una pantalla LCD serial.
La pantalla LCD serial en realidad es una pantalla LCD con un microcontrolador extra. Este
microcontrolador extra convierte los mensajes seriales del BASIC Stamp en mensajes
paralelos que controlan la pantalla LCD paralela.
Pgina 4 Sensores Inteligentes y sus Aplicaciones
Partes Requeridas
(1) Pantalla LCD Serial Parallax 216
(3) Segmentos de cable
Figura 1-5
Vista posterior
del Mdulo de la
pantalla LCD
Figura 1-6
Configurando los
interruptores de
velocidad Baud en el
modo de auto- prueba
Figura 1-7
Potencimetro de
Ajuste de Contraste
La pantalla se mantendr en blanco hasta que programe el BASIC Stamp 2 para controlar
la pantalla.
Figura 1-8
Velocidad Baud.
Interruptores a
9600 bps
Pgina 8 Sensores Inteligentes y sus Aplicaciones
La Figura 1-9 muestra la tabla impresa en la parte posterior de la LCD Serial Parallax. Si
quiere enviar mensajes a otras velocidad baud (2400 o 19,200 bps), use esta tabla y ajuste
los interruptores SW1 y SW2 segn sea el caso.
Figura 1-9
Configuracin de
los interruptores de
Velocidad Baud
En esta actividad, usted programar el BASIC Stamp para hacer que la LCD despliegue
mensajes de texto y valores numricos. Como un primer paso en la animacin, tambin
modificar los programas para que el texto y los nmeros parpadeen. El comando SEROUT
ser su herramienta para cumplir estas tareas. Usar el comando SEROUT para enviar
texto, nmeros, cdigos de control y elementos de formato a la pantalla LCD Serial
Parallax. Como pronto ver, el texto, los nmeros y los formateadotes son idnticos a los
que usa con el comando DEBUG. Los cdigos de control sern un poco diferentes, pero
con un poco de prctica sern tan fciles de usar como CR, CLS, HOME, y CRSRXY. (Si no
est familiarizado con CRSRXY, podr aprender ms de l en el captulo 6, Actividad # 1).
En nuestros programas, el argumento Pin tiene que ser 14 puesto que el pin RX (de
recepcin de datos) de la pantalla LCD's est conectada a pin de entrada/salida P14 del
BASIC Stamp.
Cap 1: La pantalla LCD Serial Parallax Pgina 9
El argumento BaudMode es un valor que le dice al BASIC Stamp qu tan rpido deber
enviar los datos en serie y tambin determina algunas de las caractersticas de la seal
serial. El programa de ayuda del Editor del BASIC Stamp tiene tablas que dan los
valores de BaudMode para velocidades baud y seales comunes. Al consultarlas, resulta
que 84 es el valor del argumento de BaudMode para 9600 bits por segundo (bps), palabras
de 8 bits, sin paridad, seal verdadera. Esto es exactamente para lo que la LCD Serial
Parallax fue diseada para recibir.
Los argumentos DataItem pueden ser escritos entre comillas como Hola. Tambin
pueden ser caracteres de control como CR, CLS, o valores, con o sin formateadotes como
DEC, BIN, y ?. Si se enva con formateadores, ellos son enviados como los caracteres que
representan el valor. Si se envan sin formateadores, ellos sern enviados como valores,
como 22, 12 y 13. Podemos enviar valores sin formato como estos a la LCD, los cuales
sern interpretados como cdigos de control.
Ms acerca SEROUT
Si usted desea intentar usar la terminal de Depuracin con SEROUT en vez de DEBUG,
primero brala desde la barra de herramientas con Run Debug New. Luego,
seleccione Run Identify para ver qu puerto est usando su BASIC Stamp. Entonces, en
la Terminal de Depuracin, haga coincidir la designacin del puerto de comunicacin. Note
que tambin puede cambiar la velocidad Baud de la Terminal de Depuracin as como otros
parmetros de comunicacin.
Hay mucho ms que aprender acerca de SEROUT. Tanto el Manual del BASIC Stamp como
la Gua de Sintaxis del Editor PBASIC dan explicacin amplia acerca el comando SEROUT.
El Manual del BASIC Stamp est disponible como descarga gratis en www.parallax.com
Downloads Documentation. Si su Editor de BASIC Stamp soporta PBASIC 2.5,
probablemente ya tenga la Gua de Sintaxis de PBASIC. Para accesar, simplemente
seleccione el ndice desde el men de ayuda del Editor de BASIC Stamp.
12 limpia la pantalla. Nota: siempre debe seguir PAUSE 5 para dar tiempo a la
LCD de limpiarse.
13 es un retorno de carro; manda al cursor a la siguiente lnea.
21 apaga la pantalla LCD.
22 enciende la pantalla LCD.
Para encender y apagar la luz de fondo (solo pantallas LCD con Luz de fondo):
Algunas pantallas de LCD tienen luz de fondo para poder leerlas cuando est oscuro. Si
usted tiene esta versin de LCD Serial Parallax (parte # 27977), puede controlar la luz de
fondo con estos valores:
17 para encender la luz de fondo.
18 para apagar la luz de fondo.
SEROUT 14, 84, ["See this?", 13, ' Mensaje de texto, retorno de carro
"The LCD works!"] ' mas texto en la linea 1.
END ' Fin del Programa
Figura 1-10
Desplegado de texto.
NEXT
Figura 1-11
Despliegue de nmeros
8 Cursor a la izquierda
9 Cursor a la derecha
10 Cursor abajo (la linea inferior ajustara en la linea superior)
128 to 143 Posiciona el cursor en la linea 0, caracteres 0 al 15
148 to 163 Posiciona el cursor en la linea 1, caracteres 0 al 15
Pgina 14 Sensores Inteligentes y sus Aplicaciones
Los valores 128 to 143 y 148 to 163 son particularmente tiles. La Figura 1-12 muestra
donde cada valor posiciona al cursor. Puede usar valores de 128 to 143 para colocar al
cursor en los caracteres 0 al 15 en la lnea superior de la LCD (lnea 0). De manera
semejante, puede usar valores de 148 to 163 para colocar el cursor en los caracteres 0 al
15 de la lnea inferior (lnea 1).
Figura 1-12
Desplegado de Texto
Luego de colocar el cursor, el siguiente caracter que enve a la LCD ser desplegado en
esa posicin. Por ejemplo, he aqu un comando SEROUT con un argumento Pace opcional
configurado a 200 ms. Este comando mostrar los caracteres "L", "I", "N", "E", "-", y
"0", igualmente espaciados a lo ancho de la lnea superior, un caracter cada 200 ms.
SEROUT 14, 84, 200, [128, "L",
131, "I",
134, "N",
137, "E",
140, "-",
143, "0"]
He aqu un bloque de cdigo que har que el texto "Line 1" resbale abajo a la linea
inferior, de derecha a izquierda.
FOR index = 9 TO 0
' IMPORTANTE: Deje un espacio luego del 1 en "Line 1 "
SEROUT 14, 84, [148 + index, "Line 1 "]
PAUSE 100
NEXT
Borrando Caracteres
Siempre puede barrar un caracter colocando el cursor donde lo desee y enviando el
caracter de espacio " " para sobreescribir lo que sea que all haya. Es por esto que el texto
"Line 1 " tiene un espacio despus del caracter "1", para borrar los caracteres a su derecha
conforme se mueve el texto a la izquierda.
' Cambia "Line 1" sobre la linea 1 de derecha a izq, luego izq a derecha.
FOR index = 9 TO 0
' IMPORTANTE: Asegurese de que haya un espacio luego del 1 en "Line 1 ".
SEROUT 14, 84, [148 + index, "Line 1 "]
PAUSE 100
NEXT
FOR index = 0 TO 9
' IMPORTANTE: Asegurese de que haya un espacio entre " y la letra L.
SEROUT 14, 84, [148 + index, " Line 1"]
PAUSE 250
NEXT
' Limpia LCD, luego muestra "ALL DONE" al centro y flashea 5 veces
SEROUT 14, 84, [12]: PAUSE 5 ' Limpia la LCD
SEROUT 14, 84, [135, "ALL", 13, 154, "DONE!"]' "ALL" y "DONE" centrados
Intntelo!
Cap 1: La pantalla LCD Serial Parallax Pgina 17
SEROUT 14, 84, ["Time Elapsed...", 13] ' Texto + retorno de carro
SEROUT 14, 84, [" h m s"] ' Texto en la segunda linea
Para esta aplicacin, los cdigos de control para colocacin del cursor son
particularmente tiles. Por ejemplo, el cursor puede ser colocado en la lnea 1, caracter 0
antes de enviar el valor decimal de 2 dgitos de las horas. El cursor puede ser movido a la
lnea 1, caracter 5 para desplegar los minutos y luego movido a la lnea 1, caracter 10
para desplegar los segundos.
Un comando SEROUT que mustra los valores de las 3 variables, en posiciones correctas:
SEROUT 14, 84, [ 148, DEC2 hours,
153, DEC2 minutes,
158, DEC2 seconds ]
El siguiente programa ejemplo aplica este concepto con tan solo las habilidades de
tiempo del modulo BASIC Stamp. La precisin no es por mucho la de un reloj de
mueca digital; sin embargo es lo suficientemente Buena para mostrar como el desplegar
la hora puede trabajar con el posicionado de caracteres. Para mayor precisin, intente
incorporar el circuito integrado de tiempo DS1302. Est disponible en
www.parallax.com, solo teclee DS1302 en el campo de bsqueda.
SEROUT 14, 84, [22, 12] ' Inicia LCD y limpia pantalla
PAUSE 5 ' Pausa 5 ms para limpiar
SEROUT 14, 84, ["Time Elapsed...", 13] ' Texto + retorno de carro
SEROUT 14, 84, [" h m s"] ' Texto en segunda linea
' Muestra digitos en LCD en Linea 1. Los valores 148, 153, 158 colocan
' el cursor en los caracteres 0, 5, y 10 para los valores de tiempo.
SEROUT 14, 84, [148, DEC2 hours,
153, DEC2 minutes,
158, DEC2 seconds ]
La Figura 6-14 muestra los comandos de Definicin que puede enviar a la LCD para
decirle cul es el caracter que est a punto de definir. Tambin lo puede ver as: para
decirle a la LCD cul caracter est definiendo, envele el valor del caracter personalizado,
ms 248. Por ejemplo, si usted quiere definir el caracter personalizado 0, mande 248, si
quiere definir el caracter personalizado 1, mande 249, y as sucesivamente hasta 255 para
el caracter personalizado 7.
Cap 1: La pantalla LCD Serial Parallax Pgina 21
Luego de enviar el cdigo que le dice a la LCD cul caracter personalizado va a definir,
debe enviar 8 bytes que describan al caracter. La LCD usa los 5 bits ms bajos de cada
byte que recibe para describir cada una de las 8 lneas de 5 pixeles de ancho que hay en el
caracter. La Figura 1-15 muestra un ejemplo de la definicin del caracter personalizado 0
para un reloj de arena que acaba de ser volteado.
Note como cada valor sucesivo en el comando SEROUT corresponde a una lnea de pixeles
en el caracter personalizado. Note tambin como los unos corresponde a pixeles negros y
los ceros corresponden a blancos.
Esta definicin de caracter personalizado de un reloj de arena con sus 4 pixeles de arena
abajo usa 255 para decirle al LCD que lo haga para el Caracter personalizado 7. Tambin
usa una tcnica para dibujar los caracteres con asteriscos en los comentarios a la derecha
del comando SEROUT. Empieza SEROUT con todos los valores binarios colocados en
%00000 y entonces dibuja el caracter con asteriscos en el comentario a la derecha.
Despus de que se ve bien, usa los asteriscos para indicar cules ceros deben ser
cambiados a unos.
SEROUT 14, 84, [255, ' Define Caracter Personalizado 7
%00000, '
%11111, ' * * * * *
%10001, ' * *
%01010, ' * *
%00100, ' *
%01110, ' * * *
%11111, ' * * * * *
%11111] ' * * * * *
Figura 1-16 muestra como los dos comandos SEROUT recin discutidos redefinen los
caracteres personalizados de la LCD.
Con estas nuevas definiciones puede escribir un ciclo para hacer que el reloj de arena
cambie de vaco a lleno, indicando que el usuario debe esperar. El siguiente bloque
DO...LOOP hace esto primero colocando el cursor en la lnea 0, caracter 5 en la LCD.
Luego muestra el caracter personalizado 0, el reloj de arena recin volteado. Despus de
una breve PAUSE, el programa enva el comando de espacio atrs (8) para que el cursor
regrese al caracter 5. Luego, manda el caracter personalizado 7, el reloj de arena con la
arena ya en su base. Repitiendo esta secuencia parece como si el reloj de arena ha sido
volteado, drenado, volteado otra vez, drenado nuevamente, etc.
Cap 1: La pantalla LCD Serial Parallax Pgina 23
DO
LOOP
DO
LOOP
Su Turno
La Figura 1-17 muestra a los caracteres personalizados describiendo a los granos de arena
en el reloj movindose de arriba hacia abajo.
He aqu una Rutina principal que puede tambin intentar para animar los ocho caracteres
personalizados una vez que los haya dado de alta en la seccin de Inicializacin:
DO
' Espacio atras, Caracter Pers. 1, espacio atrs, Caracter Pers. 2, etc.
' Ritmo opional en el argumento de 100 manda cada valor cada 1/10 segundo.
SEROUT 14, 84, 100, [8, 1, 8, 2, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7, 8]
PAUSE 750
LOOP
Intntelo!
Figura 1-18
Text Avanzando
El cdigo para el avance que se presenta en esta actividad es bastante diferente del
programa ejemplo en la Actividad #2, el cual hizo que la lnea 1 se moviera a lo ancho de
Pgina 26 Sensores Inteligentes y sus Aplicaciones
Para hacer que un texto avance sobre solo una lnea, el programa tiene que empezar con
la primera letra en el mensaje y desplegarla en la posicin extrema derecha. Despus de
un corto retraso, el programa debe mover el cursor a la segunda posicin (de derecha a
izquierda) de caracteres de la pantalla, y all imprimir tanto la primera como la segunda
letra. Debe continuar este proceso hasta que el cursor llegue hasta la parte izquierda de la
pantalla. Entonces, el cursor debe ser reposicionado repetidamente a la misma posicin
en la que porciones de texto de 16 caracteres puedan ser desplegadas, haciendo que el
mensaje aparezca con corrimiento de derecha a izquierda, una letra a la vez.
El primer mensaje de texto empieza en una direccin EEPROM igual al valor del smbolo
del Message1, el cual ha sido establecido en 2 a travs del argumento opcional @Address
de la directiva DATA. La direccin despus del final del Message1 es la direccin
EEPROM 11. Esto es denotado por la etiqueta Message2, lo cual es tambin el inicio del
Segundo mensaje. Puesto que usted puede establecer variables iguales a los valores de
Message1 a Message4, es un sistema especialmente flexible para una variedad de
mensajes.
Cap 1: La pantalla LCD Serial Parallax Pgina 27
El siguiente programa ejemplo tambin tiene variables que usted puede establecer para
configurar diferentes posiciones de ventana, anchos e incrementos. Despus de establecer
estos valores de variables, usted puede entonces hacer una llamada a la subrutina
Scroll_Message, y ella har el resto del trabajo. He aqu un ejemplo de un bloque de
cdigo que hace que la subrutina despliegue todos los caracteres entre las etiquetas
Message1 y Message2 en los cuatro caracteres centrales de la lnea superior de la LCD.
Las direcciones EEPROM inicial y final son guardadas en las variables messageStart y
messageEnd. Las direcciones de los caracteres de la LCD inicial y final que definen la
ventana son guardadas en windowLeft y windowRight. Finalmente pero no por ltimo,
la variable increment se establece al nmero de caracteres que el texto mueve cada vez
que cambia. Con todos esos valores establecidos, la subrutina Scroll_Message tiene
todo lo que necesita para hacer su trabajo.
Hay tres ejemplos ms en la rutina principal del siguiente programa. No todos los
ejemplos asignan valores a todas las variables. Algunos de los ejemplos solo establecen
algunos valores porque son valores que se reciclan y que fueron asignados antes de la
previa llamada de subrutina. Por ejemplo, el valor de la variable increment fue
establecido en 1 antes de la primera llamada de subrutina. Puesto que la subrutina
Scroll_Message no hace cambios a esa variable, el valor 1 no necesita ser reasignado
antes de llamar a la subrutina Scroll_Message nuevamente.
He aqu el ultimo ejemplo en la Rutina Principal. Note que re is the last ejemplo en the
Main Routine. Note que se encarga de buena parte de la segunda linea y avanza dos
caracteres a la vez:
messageStart = Message3: messageEnd = message4
windowLeft = 150: windowRight = 161
increment = 2
GOSUB Scroll_Message
Pgina 28 Sensores Inteligentes y sus Aplicaciones
END
Scroll_Message:
DO WHILE tail<(MessageEnd-MessageStart)+(windowRight-windowLeft+increment)
RETURN
La posicin de inicio del cursor tiene que mantenerse en 134 mientras que los
caracteres de head (punta) y tail (cola) continan avanzado: 2 al 5 - "ssag", 3 al 6
- "sage". La ventana se mantiene corriendo y la Figura 1-22 muestra del
penltimo paso de los caracteres 6 al 9 - "e" seguida por tres espacios, y
finalmen te el ltimo paso, 7 al 10 cuatro caracteres de espacio.
RESUMEN
La pantalla de cristal lquido (LCD) es usada en una tremenda variedad de productos.
Una pantalla de caracteres simple como la LCD serial Parallax 2X16 puede substituir las
caractersticas de la Terminal de Depuracin, lo cual es especialmente util cuando la
prueba en campo de su proyecto no est dentro del alcance de un cable serial y una PC.
La LCD Serial Parallax tiene un potencimetro de ajuste de contraste atrs, junto con dos
interruptores que puede usar para seleccionar de entre 3 diferentes velocidades baud y un
modo de auto-prueba. Hay 3 pins en la parte posterior de la LCD Serial Parallax, ya que
se requieren solo 3 conexiones para operarla: Vdd, RX, y Vss.
La LCD Serial Parallax tiene un conjunto extensor de commandos y una lista completa de
estos commandos se incluye en la Documentacin del Producto LCD Serial Parallax
(Apndice B). Este captulo presenta comandos para encender y apagar la pantalla,
limpiarla, colocar el cursor, controlar el encendido de la luz de fondo para el modelo con
luz de fondo y para desplegar caracteres.
La LCD Serial Parallax depende de mensajes seriales emitidos desde BASIC Stamp y
que son programados dentro de ella a travs del comando SEROUT de PBASIC. Muchas
de las caractersticas del comando DEBUG pueden ser usadas con el commando SEROUT,
incluyendo texto entre comillas y formateadotes como DEC, BIN, DIG, etc. Todos estos
tienen resultados en la LCD que son similares a los de la Terminal de Depuracin. Los
cdigos de control de la LCD son diferentes y ms numerosos que los que se usan con la
Terminal de Depuracin. En vez de intentar usar CR, CLS, CRSRXY, etc, use los valores de
cdigos de control listados en el conjunto de commandos de la LCD. Tambin es buena
idea hacer constanes para estos valores, tales como LcdCls CON 12, LcdClr CON 13,
LcdOn CON 22, LcdOff CON 21, y as sucesivamente.
mas bajos definen los pixeles en una determinada lnea de pixeles. Un 1 hace al pxel
negro, un 0 lo hace blanco.
Este captulo tambin presenta una subrutina para que avance texto de derecha a
izquierda dentro de una ventana. Esta subrutina busca direcciones de inicio y paro que
corresponden a etiquetas de direcciones Smbolo que preceden a directivas DATA que
contienen el texto a ser desplegado. La manera en que se despliega el texto de la
subrutina esta definido por 5 variables: messageStart, messageEnd, windowLeft,
windowRight, e increment. Las variables messageStart y messageEnd guardan las
direcciones EEPROM de inicio y fin del texto a ser desplegado. Las variables
windowLeft y windowRight guardan las direcciones de caracteres en la LCD de inicio y
fin que definen la ventana, la variable increment guarda cuntos caracteres a la vez se
cambian de derecha a izquierda.
Preguntas
1. Mencione 3 dispositivos que usa todos los das que despliegan informacin con
la LCD.
2. Qu significan el 2 y el 16 en el trmino 2x16 LCD?
3. Qu comando usa para enviar informacin a la LCD Serial Parallax?
4. De qu manera son diferentes los comandos DEBUG y SEROUT?
5. En qu posicin deben estar los interruptores SW1 y SW2 si necesita escribir
un programa que enve un mensaje a la LCD Serial Parallax a una velocidad de
19,200 bps?
6. Qu componente ajusta para cambiar el contraste de la pantalla LCD?
7. Qu comando SEROUT limpia la pantalla?
8. Qu consideraciones especiales hay que tomar en cuenta al usar los cdigos de
control CR, CLS, y HOME del comando DEBUG con la LCD Serial Parallax?
9. Cules son los 3 argumentos que necesita para un comando SEROUT mnimo?
10. Cmo puede hacer que un texto desplegado en la LCD se encienda y apague
intermitentemente?
11. Qu rangos de valores puede enviar a la LCD para colocar el cursor?
12. Qu carcter reside en el carcter personalizado 1 por definicin?
13. Cmo despliega un caracter personalizado despus de que ha sido definido?
14. Cules son algunas aplicaciones de la ventana corrediza?
Pgina 36 Sensores Inteligentes y sus Aplicaciones
Ejercicios
1. Haga que el mensaje "Hola" aparezca en la terminal de Depuracin sin usar el
comando DEBUG.
2. Despliegue el mensaje "Hola" centrado en la lnea superior de la LCD.
3. Haga que el mensaje "Hola" encienda y apague alternadamente cada segundo.
4. Escriba un comando para hacer que el mensaje "Inicio" aparezca al principio de
la lnea 0 y el mensaje "Final" aparezca en el lado derecho de la lnea 1.
5. Escriba un comando SEROUT para enviar mensajes a la LCD cuando SW1 y
SW2 estn ambos encendidos.
6. Escriba un comando SEROUT para enviar un mensaje a la LCD cuando SW1 est
encendido y SW2 est apagado.
Proyectos
1. Escriba un programa que despliegue un mensaje de 6 lneas. Empieza
desplegando las lneas 0 y 1 con una pausa. Luego avanza a las lneas 2 y 3,
nuevamente con una pausa. Finalmente, despliega las lneas 4 y 5.
2. Escriba un programa que imprima 3 copias de un carcter personalizado. Luego,
redefina el caracter personalizado. Qu pasa con las 3 copias de este caracter?
Cap 1: La pantalla LCD Serial Parallax Pgina 37
Soluciones
Q1. Reloj de pulsera, calculadora, telfono (las respuestas pueden variar).
Q2. Dos lneas de texto, cada una con 16 caracteres de ancho.
Q3. El comando SEROUT.
Q4. Cuando use el comando SEROUT debe especificar el nmero de pin y la velocidad
baud.
Q5. Ambos SW1 y SW2 deben estar en la posicin de encendido para 19,200 bps.
Q6. Un potencimetro.
Q7. El comando SEROUT 14, 84, [12] limpiar la pantalla.
Q8. Las constantes PBASIC pre-definidas como CR, CLS, y HOME no estn
necesariamente definidas correctamente para trabajar con la LCD serial.
Q9. SEROUT requiere los argumentos Pin, Baudmode, y DataItem.
Q10. Escriba el texto, luego apague y encienda la pantalla usando los caracteres de
control 21 y 22.
Q11. De 128 a 143 para la lnea 0 y 148-163 para la lnea 1.
Q12. La contradiagonal.
Q13. Enve a la LCD el valor del caracter personalizado con el comando SEROUT. Por
ejemplo, SEROUT 14, 84, [4] desplegar el caracter personalizado 4.
Q14. Las pantallas LCD, an las grandes que hay en estaciones de tren, terminales de
aeropuertos o en eventos deportivos, asi como texto desplazndose en
aplicaciones de Windows y paquetes TCP/IP.
E1. Del archivo de ayuda del Editor de BASIC Stamp: Para el Puerto serial inter-
construido establezca el argumento Tpin a 16 en el comando SEROUT.
' Sensores Inteligentes y sus Aplicaciones - Ch1_Ex01.bs2
' {$STAMP BS2}
' {$PBASIC 2.5}
DO
SEROUT 14, 84, [21] ' Apaga pantalla
PAUSE 500
SEROUT 14, 84, [22] ' Enciende pantalla
PAUSE 500
LOOP
LcdPin PIN 14
T9600 CON 84
PAUSE 250
SEROUT 14, 84, [22, 12] ' Enciende y limpia pantalla
PAUSE 5 ' 5 ms retraso para limpiar
END
PAUSE 250
SEROUT 14, 84, [22, 12] ' Enciende y limpia pantalla
PAUSE 5 ' 5 ms retraso para limpiar
FOR copies = 1 TO 3
SEROUT 14, 84, [0] ' Despliega Caracter Pers. 0
NEXT
Figura 2-1
The Sensor Ultrasonico de Distancia
Ping)))
El comando PULSIN del BASIC Stamp usa una variable para guardar cuanto dur la seal
alta del sensor Ping))). El tiempo de esta medicin es lo que le tom al sonido viajar al
objeto de ida y vuelta. Usando esta medicin y el dato de la velocidad del sonido en el
aire, usted puede hacer que su programa calcule la distancia al objeto en centmetrosa,
pulgadas, pies, etc.
Partes Requeridas
(1) Sensor Ultrasonico de Distancia Ping)))
(3) Cables conectores
Todo lo que necesita es un sensor Ping))) y 3 cables para hacerlo trabajar. El sensor
Ping))) tiene protection interconstruida contra errores de programacin (y errors de
cableado), por lo que no necesita usar ninguna resistencia de 220 entre P15 y la
terminal SIG del sensor Ping))).
Construya el circuito.
Captulo 2: Inclinacin con el Acelermetro Memsic Page 43
Coloque su tarjeta Board of Education con el circuito del sensor Ping))) sobre
algo que la mantenga al menos 8 cm por encima de la superficie de la mesa.
Coloque un objeto (como una botella de agua, una caja o una hoja de papel) a 15
cm del frente del sensor Ping))).
Introduzca, salve y corra PingTest.bs2.
La Terminal de Depuracin debe estar reportando un valor entre 400 y 500.
Pgina 44 Sensores Inteligentes y sus Aplicaciones
DO
PULSOUT 15, 5
PULSIN 15, 1, time
PAUSE 100
LOOP
a. b. c.
Captulo 2: Inclinacin con el Acelermetro Memsic Page 45
Adicionalmente, como descubri Ken Gracey de Parallax Inc. durante una demostracin
en la escuela de su hijo, algunos objetos con superficies suaves e irregulares (como
animalitos de peluche) en vez de reflejar absorbern el sonido y por lo tanto puede ser
difcil la deteccin para el sensor Ping))). Los objetos con superficies lisas que fcilmente
reflejan el sonido facilitan la deteccin del sensor.
Figura 2-5
Determinando el
Angulo Mnimo de
Deteccin
Intente colgar varios objetos del techo a 1.5 metros de distancia del sensor
Ping))). Qu tan pequeos pueden ser los objetos? Afecta la forma o el
ngulo? Cambia la afectacin por el tamao del objeto a medio metro de
distancia?
Intente detectar objetos de tamao similar pero hechos de diferentes materiales,
como una caja de zapatos de carton o una pantufla suave para ver si tiene un
rango efectivo de deteccin ms corto con objetos que absorben el sonido.
Puede encontrar algn objeto invisible para el sensor Ping))), como un cmulo
de algodn?
Pgina 46 Sensores Inteligentes y sus Aplicaciones
S = Cair t
S Cair t
Sobject = =
2 2
La velocidad del sonido en el aire est comunmente documentada en metros por segundo
(m/s). Sin embargo, ser ms conveniente calcular mediciones de centmetros (cm) con
el BASIC Stamp. Puesto que hay 100 centmetros en un metro, usemos el trmino Sobject-
cm lo cual es simplemente 100 veces Sobject. Las unidades de medicin para el valor
Duration de PULSIN en el BASIC Stamp 2 son 2/1,000,000 de segundo (2 s).
Entonces, en vez de t, el cual tiene que ser una medida en segundos, usaremos tPULSIN-BS2.
Cuando se multiplica por 2/1,000,000 tPULSIN-BS2 nos da el nmero de segundos. Hay
entonces un par de nmeros 2, uno en el numerador y otro en el denominador, que se
cancelan, y el 100 en el numerador cancelan un par de ceros en el denominador
1,000,000. El resultado de estas sustituciones y cancelaciones es Sobject-cm = (Cair tPULSIN-
BS2)/10,000.
100 Cair t
Sobject-cm =
2
Cair tPULSIN-BS2
Sobject-cm =
10,000
Captulo 2: Inclinacin con el Acelermetro Memsic Page 47
344.8 tPULSIN-BS2
Sobject-cm =
10,000
= 0.03448 tPULSIN-BS2
El BASIC Stamp puede usar el operador ** para multiplicar una variable que guarde la
medicin Duration del comando PULSIN por un valor fraccional menor que 1. Por
ejemplo, si el comando PULSIN guarda la medicin del tiempo de eco en la variable
time, este comando guardar la distancia en centmetros resultante en la variable
cmDistance as:
Con el operador **, CmConstant tendr que ser 2260, el cual es el equivalente ** de
0.03448. En vez de un denominador decimal, como 10,000 (en el caso de 0.03448), el
operador ** necesita un valor que vaya en el numerador de una fraccin con
denominador 65536. Para obtener dicho numerador, multiplique su valor fraccional por
65536.
DO
PULSOUT 15, 5
PULSIN 15, 1, time
PAUSE 100
LOOP
DO
PULSOUT 15, 5
PULSIN 15, 1, time
PAUSE 100
LOOP
Su Turno
Hay 12 pulgadas en 1 pie. Modifique el programa para que despliegue pies y
pulgadas. Tip: despus de calcular inDistance, use / 12 para determinar el
nmero de pies y // 12 para encontrar el sobrante en pulgadas.
Hay 10 centmetros en un decmetro. Repita para decmetros y centmetros.
Captulo 2: Inclinacin con el Acelermetro Memsic Page 51
Partes Requeridas
(1) Sensor Ultrasnico Ping)))
(1) LCD Serial Parallax (216)
(1) Cable Extensin para la LCD de 14 pulgadas
(3) Cables de conexin
Si esta trabajando con una tarjeta BASIC Stamp HomeWork Board o una tarjeta Board of
Education Rev A o B serial , tambin necesitar:
Figura 2-7
Esquemticos del Sensor
Ping))) y la LCD Serial
Parallax
Figura 2-8
El jumper del Puerto Servo
colocado en Vdd (+5 V)
Captulo 2: Inclinacin con el Acelermetro Memsic Page 53
La configuracin del jumper Vdd vs. Vin determina qu fuente est conectada a los
puertos X4 y X5. Cuando el Jumper se coloca a Vdd, estos puertos reciben 5 V regulados
desde el regulador de tensin de la tarjeta Board of Education. Si el jumper se coloca a Vin,
el Puerto recibe energa directamente de la betera o de la fuente de poder.
Conecte la LCD Serial Parallax como se indica (igual que el captulo anterior).
Conecte una punta del cable extension en el Puerto 15 del cabezal X4,
asegurndose que las etiquetas "Red" y "Black" que estn en el lado derecho del
puerto X5 coincidan con los cables rojo y negro.
Verifique que su cable est bien conectado asegurndo que el cable blanco es el
ms cercano a la etiqueta 15 y que el negro es el ms cercano a la etiqueta X4.
Figura 2-9
Puerto Servo y
Conexin del
Jumper de energa
para el Sensor
Ping)))
Pgina 54 Sensores Inteligentes y sus Aplicaciones
Conecte la otra punta del cable de tal forma que el cable negro est conectado al
pin GND del modulo Ping))), el cable rojo este conectado al pin 5 V y en cable
blanco est conectado al pin RX.
Vuelva a verificar todas las conexiones, incluyendo la posicin del jumper y
asegrese que son correctas.
ATENCION! No conecte la energa a su tarjeta hasta que no est seguro que todas
las conexiones son correctas. Si comete un error con las conexiones de la LCD Serial
Parallax, esta podra ser permanentemente daada.
Tambin puede conectar la LCD Serial Parallax al puerto 14 con un cable. Las
instrucciones son aproximadamente las mismas que las de conexin del Ping))). Empiece
por desconectar la energa de su tarjeta. El Jumper para Vdd y Vin entre los puertos servo
debe estar colocado en Vdd. El cable tiene que ser conectado en el cabezal X4 de tal forma
que el cable negro sea el mas cercano a la etiqueta X4 y el cable blanco sea el mas
cercano a la etiqueta 14. Cuando conecte la otra punta del cable a la LCD Serial Parallax,
asegrese que el cable negro se conecte a GND, el cable rojo a 5V, y el cable blanco a RX.
Figura 2-10
Cableado en tableta para la
conexin del cable del Sensor
Ping)))
ATENCION! No conecte la energa a su tarjeta hasta que no est seguro que todas
las conexiones son correctas. Si comete un error con las conexiones de la LCD Serial
Parallax, esta podra ser permanentemente daada.
Figura 2-11: Conexiones en la tableta para el Sensor Ping))) y la LCD Serial Parallax
Captulo 2: Inclinacin con el Acelermetro Memsic Page 57
Despus, los comandos DEBUG tienen que sen cambiados por commandos SEROUT. He
aqu los commandos DEBUG para PingMeasureCmAndIn.bs2.
DEBUG HOME, DEC3 cmDistance, " cm"
DEBUG CR, DEC3 inDistance, " in"
Los caracteres de control de la Terminal de Depuracin (HOME y CR) tienen que ser
cambiados por cdigos de control que coloquen el cursor en la LCD.
SEROUT 14, 84, [128, DEC3 cmDistance, " cm"]
SEROUT 14, 84, [148, DEC3 inDistance, " in"]
PAUSE 200
SEROUT 14, 84, [22, 12]
PAUSE 5
DEBUG CLS, "Program running..."
DO
PULSOUT 15, 5
PULSIN 15, 1, time
PAUSE 100
LOOP
Convirtiendo de F a C y Viceversa
Para converter un grado Fahrenheit a Celsius, reste 32 deTF (la medicin Fahrenheit), luego
divida entre 1.8. El resultado sera TC, el equivalente Celsius. Para convertir de Celsius a
Fahrenheit, multiplique TC por 1.8, luego agregue 32. El resultado ser TF.
TC = (TF - 32) 1.8 TF = 1.8 TC + 32
A continuacin hay unos ejemplos de velocidad del sonido a temperaturas de cuarto que,
an cuando ambas son confortables, son ligeramente diferentes.
real - predicha
% error = 100%
predicha
346.5 - 344.8
% error = 100%
344.8
= 0.49%
RESUMEN
El BASIC Stamp solicita una medicin al sensor Ping))) enviando un breve pulso, lo que
causa que este emita un silbido a 40 kHz. Luego, el Ping))) escucha un eco de ese
silbido. Reporta el eco enviando un pulso de regreso al BASIC Stamp que equivale al
tiempo que el toma al sensor Ping))) recibir el eco.
Para calcular la distancia basada en la medicin del tiempo de eco, la velocidad del
sonido debe ser convertida en unidades que son convenientes al BASIC Stamp. Esto
involucra convertir metros por segundo a centmegros por unidades de medicin PULSIN.
El valor resultado tambin debe ser convertido a un valor que pueda ser usado con el
operador multiplica-alto ( ** ) multiplicandolo por 65536.
La velocidad del sonido en el aire es cair = 331.5 + (0.6 TC) m/s. Si bien la velocidad
del sonido cambia con la temperatura, el error en la medicin resultante es pequeo,
especialmente a temperatura de cuarto.
Preguntas
1. Cual es el rango de medicin del sensor Ping)))?
2. Qu significa ultrasnico?
3. Qu seal manda el sensor Ping))) al BASIC Stamp y cmo corresponde esta a
la medicin de distancia?
4. Cules son las tres condiciones entre el sensor y el objeto que pueden causar
que el sensor Ping))) regrese una medicin de distancia incorrecta?
5. Cules son los incrementos de tiempo que regresa el commando PULSIN
cuando se usa un BS2?
6. Cul es la velocidad del sonido a temperatura de cuarto?
7. Cmo se relaciona CmConstant con lka velocidad del sonido en el aire?
8. Qu tiene que hacer usted al jumper entre los cabezales servo X4 y X5 en la
tarjeta Board of Education para suministra la tensin correcta a dispositivos
como el sensor Ping))) sensor y la LCD Serial Parallax? Qu podra pasar si el
jumper no es colocado correctamente?
9. Qu commandos tienen que ser modificados si quiere hacer que la pantalla
LCD Parallax muestre lo que la Terminal de Depuracin esta desplegando?
10. Qu papel juega la temperature del aire en la velocidad del sonido en el aire?
Pgina 62 Sensores Inteligentes y sus Aplicaciones
Ejercicios
1. Calcule a cuantos metros de distancia se encuentra un objeto si el tiempo de eco
es 15 ms, y la temperatura es 22.5 C.
2. Calcule el equivalente en C de 100 F.
3. Calcule el equivalente en pies de 30.48 cm.
4. Calcule the porcentaje de error si CmConstant est calculada para 37.8 C pero
la temperature es 0 C. Prediga cul sera la distancia si el objeto fuera colocado
a medio metro de distancia.
Proyectos
1. Agrege un circuit LED a su tarjeta y programe en BASIC Stamp para hacer que
el LED prenda y apague cuando no hay ningn objeto dentro del rango de
medicin.
2. Use un piezo altavoz para hacer una alarma que indique cuando una persona pasa
por una puerta. El sensor Ping))) debe ser montado cerca de la puerta de salida,
apuntando a travs del camino que la gente usa para entrar o salir.
Soluciones
Q1. De 3 centmetros a 3.3 metros.
Q2. Sonido con frecuencias mayores que 20 kHz.
Q3. Un pulso alto, cuya duracin corresponde al tiempo que le toma al silbido de
sonido viajar hasta el objeto y regresar.
Q4. a) Distancia mayor a 3 m, b) ngulos superficiales, c) objetos muy pequeos.
Q5. Incrementos de 2s.
Q6. 344.8 m/s.
Q7. CmConstant es el equivalente ** de la velocidad del sonido en el aire dividido
entre 10000, o 0.03448.
Q8. El jumper debe estar colocado en la posicin Vdd, o la LCD pudiera daarse.
Q9. Todos los comandos DEBUG tienen que ser modificados, tambin los caracteres
de control para que se usen los cdigos de control de la LCD.
Q10. Juega un rol muy importante, ya que la velocidad se incrementa 0.6 m/s por cada
grado C que se incrementa la temperatura del aire.
Captulo 2: Inclinacin con el Acelermetro Memsic Page 63
DO
LOW LED ' LED off antes de cada medicion
PULSOUT 15, 5 ' Inicia Ping)))
PULSIN 15, 1, tiempo ' Lee tiempo de eco
cmDistance = cmConstant ** tiempo ' Calcula distancia con el tiempo
SEROUT LCD, 84, [128, DEC3 cmDistance, " cm"] ' Muestra distancia en
' la pantalla LCD
IF cmDistance >= MaxDistance THEN HIGH LED ' Cambia LED si esta
' fuera de rango
PAUSE 100
LOOP
Sound_Alarm:
FREQOUT Speaker, 300, 3300 ' Bing
PAUSE 50
FREQOUT Speaker, 450, 2200 ' Bong
RETURN
Calc_Distance:
inDistance = inConstant ** tiempo ' Estas son todas las mediciones
RETURN
Captulo 3: Inclinacin con el Acelermetro Memsic Page 65
Aceleracin
Pendiente y ngulo de pendiente
Inclinacin
Rotacin
Vibracin
Colisin
Gravedad
robots auto-equilibrantes
Mandos de juego con sensado de inclinacin
Pilotos automticos para aeromodelismo
Sistemas de alarmas de autos
Deteccin de colisin / sistemas para despliegue de bolsas de aire
Sistemas para monitoreo de movimiento humano
Herramientas para nivelacin
Hace mucho tiempo, los acelermeros eran instrumentos grandes, estorbozos y caros que
no se prestaban para proyectos de robtica y electrnica. Todo esto cambi gracias a la
llegada de los sistemas-micro-electrnicos-mecnicos (MEMS por sus siglas en ingls).
La tecnologa MEMS es responsable de un nmero siempre creciente de dispositivos
otrora mecnicos y que ahora estn siendo diseados en circuitos integrados de silicn.
Pgina 66 Sensores Inteligentes y sus Aplicaciones
En vez de los 3 ejes que la gente percibe, el acelermetro MX2125 percibe la aceleracin
en dos ejes. La aceleracin que sensa depende de cmo est posicionado. Al sostenerlo de
una manera, puede percibir adelante/atrs e izquierda/derecha. Si lo sostiene de manera
diferente, puede sensar arriba/abajo y adelante/atrs. Dos ejes de aceleracin son
suficientes para muhcas de las aplicaciones listadas anteriormente. Si bien puede montar
y monitorear un segundo acelermetro para capturar el tercer eje, tambin son comunes
los acelermetros de 3 ejes.
En muchas situaciones, hacer que estas mediciones tengan sentido es simple gracias a la
electrnica dentro del MX2125. El MX2125 convierte las mediciones de temperatura en
seales (duraciones de pulsos) que son fciles para el microcontroller BASIC Stamp de
medir y descifrar.
Pgina 68 Sensores Inteligentes y sus Aplicaciones
Partes Requeridas
(2) Cables conectores de 3 pulgadas
(2) Resistencias 220
(1) Acelermetro Bi-Axial Mems MX2125
Para una prueba a temperatura de cuarto, obtendr una muy buena indicacin de
inclinacin con tan solo medir el tiempo de nivel alto de los pulsos enviados por los pines
Xout y Yout del MX2125 usando el comando PULSIN. Dependiendo qu tanto inclina la
tarjeta y en qu direccin, las mediciones de tiempo de PULSIN deben ser entre 1875 a
3125. Cuando la tarjeta esta nivelada, el comando PULSIN debe guardar valores cercanos
a 2500.
Pgina 70 Sensores Inteligentes y sus Aplicaciones
Asegrese que su tarjeta est sin inclinacin en su mesa, orientada con los ejes x
y y como se muestra en la Figura 3-4.
Introduzca y corra SimpleTilt.bs2.
'{$STAMP BS2}
'{$PBASIC 2.5}
x VAR Word
y VAR Word
DEBUG CLS
DO
PULSIN 6, 1, x
PULSIN 7, 1, y
PAUSE 100
LOOP
Figura 3-5
Salida de la
Terminal de
Depuracin
Captulo 3: Inclinacin con el Acelermetro Memsic Page 71
Partes Requeridas
(1) Acelerometro Mems 2125
(1) LCD Serial Parallax (216)
(5) Cables de conexiones
(2) Resistencias 220
Pgina 72 Sensores Inteligentes y sus Aplicaciones
Figura 3-6
Esquemticos para el
acelermetro
MX2125 y la LCD
Serial Parallax
Figura 3-7
Alambrado para el
acelermetro Mems
y la LCD Serial
Parallax
Luego, los comandos DEBUG deben ser cambiados por comandos SEROUT. He aqu el
comando DEBUG de SimpleTilt.bs2.
DEBUG HOME, DEC4 ? X, DEC4 ? Y
HOME debe ser reemplazado por 128, que es el caracer de casa para la LCD. La directiva
? despliega el nombre de la variable con un carcter de retorno de carro despus.
Recuerda del Captlo 1 que CR es el nico caracter de control que es igual tanto para la
Terminal de Depuracin como para la LCD Serial Parallax? Debido a esto, podemos
dejar la directiva ? en los comandos SEROUT para la LCD. He aqu un comando SEROUT
que ejecuta el desplegado equivalente en la LCD Serial Parallax.
SEROUT 14, 84, [128, DEC4 ? X, DEC4 ? Y]
'{$STAMP BS2}
'{$PBASIC 2.5}
x VAR Word
y VAR Word
Captulo 3: Inclinacin con el Acelermetro Memsic Page 75
DO
PULSIN 6, 1, x
PULSIN 7, 1, y
PAUSE 100
LOOP
Este comando SEROUT despliega la misma informacin en la LCD Serial Parallax. Note
como el the cdigo de control 128 coloca el cursor en la Linea 0, caracter 0. En vez de
un caracter de control CR, 148 coloca al cursor de la LCD en la Linea 1, caracter 0.
SEROUT 14, 84, [128, "x = ", DEC4 x, 148, "y = ", DEC4 y]
Si bien "us" no es realmente lo mismo que "s" porque estamos usando una u en vez de la
letra griega mu, la mayora de las personas comprendera el significado. Usted tambin
puede hacer un caracter personalizado para mu. Esto involucrar agregar un comando
SEROUT al principio del programa que defina un caracter personalizado. Luego, tendr
que desplegar ese caracter personalizado donde la "u" est siendo desplegada.
Pgina 76 Sensores Inteligentes y sus Aplicaciones
La Figura 3-10 muestra cmo aplicar estos pasos con un solo commando PBASIC que
ejecuta escalamiento y compensacin. Recuerde que los clculos en PBASIC trabajan de
izquierda a derecho a no ser que se re-jerarquize con parntesis. Entonces la primer cosa
que este clculo hace es restar 1875 al valor de entrada. El nuevo rango ahora es de 0 a
1200 en vez de 1875 to 3215. Luego, ** 13369 divisiona proprcionalmente a 0 - 254.
Despus de que el rango ha sido escalado, se le resta 127 y resulta en 127 a 127.
255
ScaleCons tan t = Int 65536
1251 1
Antes de restar 1875 a la variable value, este commando usa dos operadores, MIN 1875
y MAX 3125, para asegurarse que value guarda algo en este rango. Si la variable value
est guardando un nmero en este rango, los operadores MIN y MAX no la alteran. Sin
embargo, si est guardando algo menor que 1875, MIN 1875 cambiar el valor a 1875.
Igualmente, si est guardando algo mayor que 3125, MAX 3125 lo cambiar a 3125.
'{$STAMP BS2}
'{$PBASIC 2.5}
DO
DEBUG ">"
LOOP
Transmit
Windowpane
Receive
Windowpane
Pgina 80 Sensores Inteligentes y sus Aplicaciones
Visualize una recta numrica (Figura 3-12). Del 0 en adelante, los valores 0 al 32767
estn representados por sus equivalents binarios normales de 16 bits: el valor 1 esta
representado por el binario 1, etc., hasta el 32767. Pero el 1 est representado por el
equivalente binario de 65535, que es el valor con mayor tamao de palabra, que es todo
en 1s. Yendo hacia atrs con estos valores negativos, sus correspondientes nmeros
binarios que los representan se hacen ms pequeos hasta llegar al 32768 representado
por el binario 32768.
Captulo 3: Inclinacin con el Acelermetro Memsic Page 81
(DEC 32767)0111111111111111
|
(DEC 1)0000000000000001 |
| |
-32768...............-1...0...1...............32767
| |
| 1111111111111111(DEC 65535)
|
1000000000000000 (DEC 32768)
El patron es claro si compara un decimal sin signo con sus equivalentes decimal y binario
con signo.
x VAR Word
x = 32768 '<<< Introduzca nuevos valores de x, y vuelva a correr
Como en PBASIC solo las variables de palabra completa pueden retener nmeros con
signo, todos los nmeros con signo tienen 16 bits. Viendo el bit ms hacia la izquierda, el
Bit 15, podemos saber si un nmero es positivo o negativo. Puede usar value.BIT15
como una variable que le diga si value es un nmero positivo o negativo. Si
value.BIT15 es igual a 0, el nmero es positivo. Si es igual a 1, es negativo.
Este es un tip importante, porque algunos operadores PBASIC solo trabajan con enteros
positivos, como division "/" y mdulo "//". Cuando se usan estos operadores, es til
Pgina 82 Sensores Inteligentes y sus Aplicaciones
3
ScaleCons tan t = Int 65536
11 1
La Table 3-2 muestra algunos ejemplos de clculos del BASIC Stamp para cada valor en
el rango de entrada para value = value ** 19660. Considere que es
aproximadamente igual a multiplicar value por 0.29999 con una calculadora. Puesto
que el BASIC Stamp es un procesador matemtico de enteros, trunca cualquier resultado
al valor entero, redondendolo entonces hacia abajo. Note como los primeros 4 valores de
entrada resultan en salida cero. Luego, cuando el valor de entrada es 4 el resultado es
1.19996, que se redondea a 1. Al ejecutar el resto de las operaciones en la tabla, note
Captulo 3: Inclinacin con el Acelermetro Memsic Page 83
Complete los calculos en la Table 3-2 para valores de entrada del 5 al 10.
De PULSIN a 1/100 g
La meta aqu es modificar modificar el programa ejemplo de la Actividad #1 para que
despliegue mediciones de los ejes x y y en terminos de 1/100 g en vez de 2 s units. Es
otro problema de escalamiento y compensacin, pero esta vez, queremos ajustar la escala
de entrada de 1875 a 3125 en una escala de salida de 100 a 100 (Figura 3-13).
Pgina 84 Sensores Inteligentes y sus Aplicaciones
Figura 3-15
Inclinacin en el Plano Vertical
Figura 3-16
y Tangente y Arcotangente
tan =
x
y
= tan 1
x
La funcin arcotangente puede usarse para determinar the ngulo de rotacin del
acelermetro con sus mediciones x y y. PBASIC tiene un operador llamado ATN que
puede usar para calcular tan1(y/x). Para calcular el arcotangente of y/x y guardarlo en
una variable llamada angle, use el comando angle = x ATN y.
y
= tan 1 angle = x atn y
x
La Figura 3-17 esta tomada del archivo de ayuda del Editor de BASIC Stamp y muestra
como trabaja el operador ATN. Ambas variables x y y deben ser escaladas a valores entre
127 y 127. El resultado del operador ATN es el ngulo en radianes binarios, los cuales se
abrevian brads. Con los brads, un crculo es dividido en 256 segmentos de la misma
manera que los ngulos lo dividen en 360 segmentos.
Figura 3-17
Crculo Unitario en grados y
Radianes Binarios
Captulo 3: Inclinacin con el Acelermetro Memsic Page 87
Recuerde:
El operador ** multiplica por un nmero de 65536avos.
Las reglas matemticas de enteros para escalar de una escala a otra an aplican, an si
convertimos de una escala ms pequea a una ms grande. Lo nico que cambiaremos es
la constante de la escala, el cual es un numerador de 256 por */, en vez de 65536 por **.
Muchos documentos recomiendan angle = 360 */ angle. Sin embargo, usar una
constante */ de 361 es ligeramente mas preciso en los rangos de entrada/salida. Trate
comparar los resultados de esta operacin hecha con BASIC Stamp a los hechos con una
hoja de clculo.
angledegrees = (360/256) anglebrads
Redondee el resultado de angledegrees al entero ms cercano. Si el resultado tiene un
componente fraccional 0.5 o mayor, redondee hacia arriba. De lo contrario, redondee hacia
abajo. Luego comparelo con las 256 posibles salidas de la Terminal de Depuracin con 360
*/ angle, luego repita con 361 */ angle. Una hoja de clculo es til para esta comparacin.
Si lo intenta, ver que el nivel de enteros que empatan es mucho mayor con 361 */ angle.
Figura 3-18
Tangente y Arcotangente
Captulo 3: Inclinacin con el Acelermetro Memsic Page 89
Figura 3-19
Tangente y Arcotangente
y = h sin
x = h cos
For h = 127 and = 45 For h = 100 and = 315 For h = 127 and = 180
y = 127 sin 45 y = 100 sin 315 y = 127 sin 180
= 89.9 = 71 =0
90
x = 127 cos 45 x = 100 cos 315 x = 127 cos 180
= 89.9 = 71 = 127
90
Algunos valores sern mas bajos que lo que esperaba. Por ejemplo, cuando h = 100 y
= 30, y = 50 y x = 87. La Terminal de Depuracin mostrar 21 para el ngulo brad, que
es correcto, pero 29 para el ngulo en grados que no es correcto. Debera ser 30. Esto
pasa ocasionalmente al escalar de un rango menor a uno mayor. La medicin de 21 brads
corresponde a 29 y 22 brads corresponden a 31.
'{$STAMP BS2}
'{$PBASIC 2.5}
DO
angle = x ATN y
LOOP
'{$STAMP BS2}
'{$PBASIC 2.5}
Captulo 3: Inclinacin con el Acelermetro Memsic Page 91
NEXT
END
Figura 3-20
Rotacin vertical en
sentido antihorario
1 AY
= tan
A
X
0
tan 1 = 0
1
1
tan 1 2 = 30
3
2
1
tan 1 2 = 135
1
2
Pgina 94 Sensores Inteligentes y sus Aplicaciones
El caso general
El ngulo de rotacin () es la inversa-tangente o arcotangente de la componente de
gravedad que acta sobre el eje de sensado Y del Mems 2125 (AY) dividida entre la
componente de gravedad que acta sobre el eje de sensado X (AX). La figura abajo
muestra al MX2125 inclinado a un ngulo , lo cual rota a ambos ejes de sensado en el
mismo angulo . Aplicando un par de identidades geomtricas, tambin est dentro de los
dos tringulos que muestran las componentes de gravedad actuando en cada uno de los
ejes de sensado del acelermetro (xm y ym). La componente de gravedad actuando sobre
xm is AX = g cos y la componente actuando sobre ym es AY = g sin. Despus de aplicar las
identidades trigonomtricas mostradas, se demuestra que el ngulo de rotacin es de
hecho el arcotangente of AY/AX.
AY g sin
= = tan
AX g cos
AY
tan =
AX
A
tan 1 (tan ) = tan 1 Y
AX
A
= tan 1 Y
AX
'{$STAMP BS2}
'{$PBASIC 2.5}
DO
PULSIN 6, 1, x
PULSIN 7, 1, y
angle = x ATN y
angle = angle */ 361
PAUSE 100
LOOP
el nuevo. An cuando CLS puede arreglar este problema tambin, el parapdeo resultante
en la Terminal de Depuracin no es agadable para la vista. CLREOL borra a la derecha del
cursor en una linea dada. Si bien an causa un poco de parpadeo con cada valor, es
mucho ms facil de ver que con la versin CLS.
DEBUG HOME, CLREOL, SDEC ? x,
CLREOL, SDEC ? y,
"angle = ", DEC3 angle,
176 ' ASCII 176 es el simbolo de grados
Figura 3-24
Medicin de ngulo con
rotacin en sentido anti-horario
Pgina 98 Sensores Inteligentes y sus Aplicaciones
Para invertir el ngulo de rotacin que muestra el programa, solo hay que usar Ay en
vez de Ay (Figura 3-25). Si gira el acelermetro en sentido anti-horario, Ay es 1/2 y el
arcotangente resulta ser 330. Al tomar el arcotangente de Ay/Ax, el resultado es 30.
1
AY 2
tan 1 = tan
1
3 = 330
AX
2
1
1 Ay 1 2
tan = tan
= 30
Ax 3
2
Seno y Coseno
La Figura 3-27 muestra la relacin entre los lados de un tringulo rectngulo y las
funciones seno y coseno. El seno de un ngulo es el lado opuesto del tringulo (y)
dividido entre la hipotenusa (h). Si conoce h y y, y quiere conocer el ngulo (), use
arcoseno (sin1). El coseno de un ngulo es el lado adyacente (x) divido entre h. Si
quiere conocer el ngulo conociendo x y h, use arcocoseno (cos1).
y Figura 3-27
sin = Seno y Coseno
h
x
cos =
h
Pgina 100 Sensores Inteligentes y sus Aplicaciones
Note en las ecuaciones de la Figura 3-27 que el valor x puede ser, a lo mucho, igual a h
cuando = 0. Igualmente, el valor y puede ser, a lo mucho, h cuando = 90. Para
ngulos entre 0 y 90, la relacin de x/h y y/h son ambas menores que 1. No importa que
tan grande es el tringulo, la relacin siempre estar entre 1 y 0.
El crculo unitario es un elemento comun para describir las funciones seno y coseno. La
hipotenusa del triangulo se convierte en el radio del crculo. El crculo unitario es
tambin llamado as porque la longitude de la hipotenusa es 1 (una unidad). Conforme
gira la hipotenusa en sentido anti-horario, el ngulo se hace ms grande, o ms pequeo
si rota en sentido horario. El coseno es determinado dibujando una lnea vertical desde el
punto donde la hipotenusa se cruza con el crculo hasta el eje de las x. Cualquiera que sea
el valor de x all, ese es el coseno. El seno del ngulo es determinado dibujando una linea
horizontal desde el final del radio hasta el eje de las y.
a. b. c.
La Figura 3-29 muestra la version de BASIC Stamp de un crculo unitario para sus
operadores SIN y COS. En vez de resultados que van de 1 a 1, los resultados para SIN y
Captulo 3: Inclinacin con el Acelermetro Memsic Page 101
COS van de 127 a 127. Los ngulos para los operadores SIN y COS estn en terminos de
brads. Entonces, en vez de 45 use 32 brads. En vez de 90 use 64 brads, etc. Para
convertir de brads a grados con una calculadora, multiplique el nmero de brads por
360/256. Para convertir de grados a brads, use 256/360.
Figura 3-29
Operadores Seno y
Coseno en el
crculo unitario de
BASIC Stamp
NEXT
END
y y Figura 3-30
sin = = sin 1 Seno, Arcoseno, Cosenoy
h h Arcocoseno
x x
cos = = cos 1
h h
Si bien BASIC Stamp no tiene operadores ASIN y ACOS, Tracy Allen, autor del texto
Sensores Aplicados de la serie Stamps en Class, public algunas buenas subrutinas que
Captulo 3: Inclinacin con el Acelermetro Memsic Page 103
Recuerde que los operadores SIN y COS regresan valores entre 127 y 127. Si divide el
resultado entre 127, obtendr un valor entre 1 y 1 que es una aproximacin de las
razones reales seno (y/h) o coseno (x/h). Con las subrutinas Arcsine y Arccosine,
puede asignar una variable llamada side a un valor entre 127 y 127 y la subrutina
guardar los resultados de la medicin en grados en la variable angle.
IF (COS angle <= side) THEN EXIT ' Hecho cuando COS angle <= side
angle = angle + 1 ' Incrementa el angulo
LOOP
angle = angle */ 361 ' Convierte brads a grados
IF sign = Negative THEN angle = 180 - angle' Ajusta si el signo es negativo.
RETURN
END
La Figura 3-32 muestra como el arcoseno puede ser usado para determinar el ngulo.
Viendo de lado el Mdulo acelermetro, la componente de gravedad actuando en su eje
xm es la aceleracin en el eje de las x (Ax), que es g sin . Puesto que sin equivale a
Ax / g, x puede ser determinado tomando el arcoseno de Ax / g. En forma de ecuacin :
A
X = sin 1 X
g
El mismo principio aplica en el eje ym del acelermetro y el resultado es:
A
X = sin 1 Y
g
Captulo 3: Inclinacin con el Acelermetro Memsic Page 107
AX = g sin
AX
= sin
g
AX
sin =
g
A
sin 1 (sin ) = sin 1 X
g
A
= sin 1 X
g
PULSIN 6, 1, x
PULSIN 7, 1, y
side = y
GOSUB Arcsine
DEBUG "y tilt angle = ", CLREOL, SDEC3 angle
PAUSE 100
LOOP
DO
Captulo 3: Inclinacin con el Acelermetro Memsic Page 109
Su Turno - Ajustes
Si su pantalla no recorri 90 cuando mantuvo su tarjeta en un eje vertical en particular,
puede personalizar s escalamiento y compensacin para que ajuste. Esto implica
determinar la escala de salida real de su acelermetro. Si es en realidad 1865 a 3100,
repita los pasos de la actividad #3 para hacer las correcciones de escala y compensacin.
Pgina 112 Sensores Inteligentes y sus Aplicaciones
RESUMEN
Este captulo se enfoca en sensar la aceleracin debida a la gravedad con el acelermetro
biaxial Mems 2125. Esto hace posible medir tanto inclinacin como rotacin. El
acelermetro Mems transmite pulsos que indican la aceleracin actuando en sus ejes x y
y. A temperatura ambiente, los pulsos varan ente 3750 a 6250 s, lo cual puede ser
usado para medir un rango entre 1 a 1 g con cualquiera de los dos ejes de sensado del
acelermetro. El comando PULSIN se usa para medir estos pulsos y, puesto que mide el
tiempo en unidades de 2 s, el rango que los programas tienen que examinar es 1875 a
3125.
Las mediciones del acelermetro pueden ser desplegadas con la LCD Serial Parallax. Si
el programa ha sido ya probado con la Terminal de Depuracin, desplegar mediciones
con la LCD serial es typicamente un asunto de agregar una rutina de inicializacin de la
LCD al principio del programa y usar comandos SEROUT en lugar de commands DEBUG.
Los caracteres personalizados on tiles para desplegar el smbolo de grados () y la letra
griega mu ().
El acelermetro puede ser usado para medir la rotacin en un plano vertical. Para hacer
esto, BASIC Stamp debe calcular el arcotangente de la medicin del eje y del
acelermetro dividido entre su medicin del eje x. Las mediciones de los ejes x y y
deben ser escaladas y compensadas para ajustarse en un rango de 127 a 127, que es lo
que el operador ATN de PBASIC necesita para regresar un ngulo, medido en radianes
binarios. Mientras qeu los ngulos dividen al crculo en 360 segmentos, los radianes
binarios lo hacen en 256 segmentos. El operator */ de PBASIC puede ser usado para
convertir una medicin dada en radianes binarios a grados.
El acelermetro puede tambin ser usado para medir ngulos de inclinacin. Puesto que
la componente de gravedad que acta en caja eje de sensado del acelermetro es el seno
del ngulo de inclinacin, el seno inverso o arcoseno puede ser usado en un eje de
medicin para determinar el ngulo de inclinacin. Una An subrutina Arcoseno puede ser
usada para calcular el ngulo (en grados) dado un valor que flucta entre 127 a 127.
Este rango corresponde a los valores de seno de 1 a + 1.
Puesto que tanto el operador ATN como la subrutina Arcsine esperan un valor entre
127 y 127, se presentaron tcnicas para escalamiento y compensacin de las mediciones
del acelermetro. El rango de mediciones que obtiene BASIC Stamp del acelermetro
est en una escala de 1875 a 3125. La manera ms eficiente de escalar estos valores a un
Captulo 3: Inclinacin con el Acelermetro Memsic Page 113
rango de 127 a 127 implica restar 1875 para alinear a cero el rango, luego usar el
operator ** para reducir la escala, despus restar 127. La lnea de cdigo resultante es:
value = (value MIN 1875 MAX 3125) - 1875 ** 13369 - 127. El valor 13369
es determinado por la ecuacion de constante de escala ** en la actividad #2.
Preguntas
1. Cules son las 7 cantidades que puede medir con un acelermetro?
2. Qu significan las siglas MEMS?
3. Qu es lo que se mueve dentro del MX2125 cuando lo inclina?
4. Puede la gravedad ser considerada una forma de aceleracin?
5. Que tiene que hacer a un programa que muestra mediciones en la Terminal de
Depuracin para que las muestre en una LCD serial?
6. Cmo puede restringir a una variable a un rango de valores?
7. Cmo puede orientar su tarjeta para aplicar 1 g al eje x del acelermetro?
8. Cmo puede orientar su tarjeta para aplicar 0 g a ambos ejes?
9. Cual es la diferencia entre un radian binario y un grado?
10. Qu rango de valores aceptan los operadores SIN y COS? Qu representan
estos valores?
11. Cmo puede convertir de brads a grados?
12. Qu rango of valores acepta el operador ATN? Qu represent esos valores?
13. Porqu puede usar ATN para calcular el ngulo de rotacin de su tarjeta?
14. Qu rango de valores est la subrutina Arccosine diseada para aceptar? Qu
representan esos valores?
15. Qu rango de valores est la subrutina Arcsine diseada para aceptar? Qu
representan esos valores?
16. Porqu es necesario usar la subrutina Arcsine para determinar el ngulo de
inclinacin?
Ejercicios
1. Escriba un comando that receives the aceleracin medicin from the
acelermetro's eje y output pin connected to P10.
2. Escriba un comando that receives the aceleracin medicin from the
acelermetro's eje x output pin connected to P9.
3. Escriba un comando que convierta el eje de medicin x a microsegundos.
4. Escriba un comando que convierta el eje de medicin x a millisegundos.
5. Escriba una linea de cdigo PBASIC que escale un rango de 0 a 100 a un rango
de 20 a 32.
Pgina 114 Sensores Inteligentes y sus Aplicaciones
Proyects
1. Disee un dispositivo que cuente el nmero de veces que gira su tarjeta en un
plano vertical. Asuma que empieza en 0.
2. Disee un dispositivo que muestre un mensaje de alarma cada vez que ha sido
inclinado ms all de 10 a partir de la horizontal.
Captulo 3: Inclinacin con el Acelermetro Memsic Page 115
Soluciones
Q1. Aceleracin, inclinacin y ngulo de inclinacin, pendiente, rotacin, vibracin,
colisin, gravedad.
Q2. Sistemas micro electromecnicos, de sus siglas en ingls Micro electro-
mechanical systems.
Q3. Una burbuja de gas caliente.
Q4. Si, ya sea esttica o dinmica.
Q5. Agregar una rutina de inicializacin para la LCD y convertir los comandos
DEBUG a comandos SEROUT.
Q6. Usando los operadores MAX y MIN.
Q7. Inclinarlo hacia arriba sobre su borde ms largo, con los puertos servo hacia
arriba. (Como en la Figura 3-14a).
Q8. Colocarla plana sobre una mesa.
Q9. El ngulo divide un crculo en 360 unidades, mientras que un radian binario
divide un crculo en 256 unidades.
Q10. 0 a 255. Representa el ngulo, en brads (radianes binarios).
Q11. Grados = brads * 360 / 256.
Q12. -127 a +127, lo que representa los lados opuesto y adyacente de un tringulo.
Q13. Puesto que el acelermetro medir la aceleracin actuando en el eje ym Mems,
asi como esa misma sobre su eje xm, ATN de Ay/Ax puede usarse para encontrar
el ngulo de rotacin a partir del plano vertical, sobre el que g est actuando.
Q14. De -127 a 127, que representa la longitud del lado x del tringulo.
Q15. De -127 a 127, que representa la longitud del lado y del tringulo.
Q16. Sabemos por geometra que la componente de gravedad que acta en el
acelermetro es g sin , entonces para obtener el ngulo debemos tomar
arcoseno.
'{$STAMP BS2}
'{$PBASIC 2.5}
DO
PULSIN 6, 1, x
PULSIN 7, 1, y
angle = x ATN y
angle = angle */ 361
IF (angle >= 90 y angle < 180) y (angleOld < 90 OR angleOld >= 270) THEN
turnCount = turnCount + 1
angleOld = angle
ENDIF
LOOP
DO
Captulo 3: Inclinacin con el Acelermetro Memsic Page 117
Figura 4-1
mdulo de brjula Hitachi en la
tarjeta Board of Education con
una pantalla LCD
Figura 4-2
Ejes de sensado del mdulo de brjula
N sin y
tan = =
N cos x
y
tan 1 (tan ) = tan 1
x
y
= tan 1
x
Partes Requeridas
(1) Mdulo de brjula Hitachi HM55B
(6) Cables para conexiones
La Figura 4-4 muestra lo que la brjula debe mostrar cuando detecta que apunta a 35 en
sentido horario respecto al norte. No se preocupe ahora de una direccin exacta, el
programa solo est probando que el modulo trabaja. Hasta ahora y si lo usa para una idea
general de ubicacin del norte, sur, este y oeste, debe estar funcionando.
Pgina 122 Sensores Inteligentes y sus Aplicaciones
Descarga grtis! Este programa est disponible como el archivo gratuito de en la pgina
de Producto de Sensores Inteligentes y sus Aplicaciones, en www.parallax.com.
SHIFTOUT DinDout,clk,MSBFIRST,[Report\4]
SHIFTIN DinDout,clk,MSBPOST,[Status\4] ' Obtiene Status
ciclo UNTIL status = Ready ' Deja ciclo cuando status esta listo
RETURN
http://nationalatlas.gov/articles/geology/a_geomag.html
Uno de los mapas en esta pgina tambin muestra la intensidad total del campo
magntico en nanoteslas. La tesla (T) es una medicin de la intensidad del campo
magntico, y nanoteslas (nT) son billonsimas de tesla. Las lecturas que regresan los ejes
x y y del mdulo brjula estn aproximadamente en millonsimas de teslas (T). De
acuerdo con la hoja de datos del HM55B, las unidades de su modulo brjula podran estar
entre 1 a 1.6 T.
Chapter 4: El mdulo de brjula Hitachi HM55B Page 125
El mdulo de brjula puede tambin sensar campos magnticos de imanes, pero estos
pueden daar el sensor! TENGA GUIDADO!
Comience por poner su tarjeta en una mesa y alinear hacia arriba su eje x con el
norte magntico.
Sostenga una barra magntica sobre el mdulo de brjula con su polo S
apuntando al norte y su polo No apuntando al sur como se muestra en la Figura
4-5. Comience por 1 m por encima y bjela hasta que la Terminal de Depuracin
reporte una lectura de 120 en el eje x.
Pgina 126 Sensores Inteligentes y sus Aplicaciones
Figura 4-5: Campo magntico de una barra magntica sobre el mdulo brjula
Mantenga la barra magntica horizontal a la misma altura y rtela para que sus
polos N y S no estn alineados con el norte y sur terrestre. Conforme gira, la
rotacin de la barra magntica debe ser fcil de rastrear con la Terminal de
Depuracin.
Note como el campo magntico actuando sobre el mdulo de brjula fu opuesto a lo que
mostraban los poles en la barra magntica. Esto es debido a la forma en que el campo
magntico da la vuelta del polo norte al sur de la barra magntica. La Figura 4-5 ilustra
esto con lineas de campo magntico que muestran el patrn del campo magntico
alrededor de la barra magntica.
Chapter 4: El mdulo de brjula Hitachi HM55B Page 127
Tambin puede sostener la barra magntica al mismo nivel con el module brjula,
directamente enfrente, como se muestra en la Figura 4-6a. Esta vez los polos del imn
estn alineados con el norte y el sur en vez de estar opuestos.
a. b.
mdulo brjula. Con una brjula mecnica, su barra magntica automticamente se alinea
con el norte, asi es que tendr que mover el mdulo de brjula alrededor de la brjula
mecnica y no al revs.
Intntelo y note cunta distorsin causa una brjula mecnica cercana sobre las
mediciones del mdulo brjula.
Teniendo esta leccin presente, asegrese de mantener brjulas mecnicas muy lejos del
mdulo de brjula al ejecutar y probar las calibraciones en las siguientes 2 actividades.
Configuracin
Imprima o haga una fotocopia de la Figura 4-7. Si est trabajando con una copia
impresa del libro y no tiene una fotocopiadora a su disposicin, solo baje la
version .pdf de este texto de la pgina del producto Sensores Inteligentes y sus
Aplicaciones en www.parallax.com. Luego, haga una impresin.
Chapter 4: El mdulo de brjula Hitachi HM55B Page 129
Figura 4-8
Alineando al Norte
Magntico
Procedimiento
Cuando corra CalibrateCompass.bs2, le pedir alinear su tarjeta a varios ngulos en la
impresin de la brjula y presionar la tecla enter despus de cada uno. Los primeros dos
ngulos (0 y 90) se muestran en la Figura 4-9.
a. b.
Chapter 4: El mdulo de brjula Hitachi HM55B Page 131
Transmit
Windowpane
Pgina 132 Sensores Inteligentes y sus Aplicaciones
Descarga grtis! Este programa esta disponible como descarga grtis .bs2 en la pgina
del producto de Sensores Inteligentes y sus Aplicaciones en www.parallax.com. Si desea
saber cmo trabaja este programa, lea los comentarios aqu.
DEBUG "Click the Transmit Windowpane, ", CR, ' Espera al usuario.
"then press Enter... ", CR, CR
DEBUGIN character
DEBUG CR, "Press any key to", ' espera por el usuario
CR, "continue"
DEBUGIN character
DEBUG CR, CR
Compass_Calibrate:
GOSUB Get_And_Store_Axis_Offsets
GOSUB Get_And_Store_Interpolation
GOSUB Get_And_Store_Low_Value_Address
DEBUG CR, "CALIBRATION COMPLETED...", CR,
"You are now ready to run ", CR,
"TestCalibratedCompass.bs2.", CR
RETURN
' Esta subrutina pide al usuario apuntar la brjula a norte, luego este, luego
Pgina 134 Sensores Inteligentes y sus Aplicaciones
' sur, luego oeste. Luego promedia los valores maximo y minimo para cada
' eje y guarda ese promedio en el area EEPROM reservada por la directiva
' CompassOffsets DATA .
Get_And_Store_Axis_Offsets:
' Calcula compensacion en base a valores max y min de cada eje y guarda
' en la EEPROM.
SELECT counter
CASE 0 ' Norte
temp(0) = x
CASE 1 ' Este
temp(1) = y
CASE 2 ' Sur
x = x + temp(0)
IF x.BIT15 = 1 THEN
x = ABS(x)/2
x = -x
ELSE
x = x / 2
ENDIF
WRITE CompassOffsets, Word x
CASE 3 ' Oeste
y = y + temp(1)
IF Y.BIT15 = 1 THEN
y = ABS(y)/2
y = - y
ELSE
y = x / 2
ENDIF
WRITE CompassOffsets + 2, Word y
ENDSELECT
NEXT
RETURN
Get_And_Store_Interpolation:
FOR counter = 0 TO 15
DEBUG CR, "Point brjula to "
LOOKUP counter, [0, 22, 45, 67, 90, 112, 135, 157,
180, 202, 225, 247, 270, 292, 315, 337], integer
LOOKUP counter, [ 0, 5, 0, 5, 0, 5, 0, 5,
0, 5, 0, 5, 0, 5, 0, 5 ], fraction
DEBUG DEC integer
IF fraccin = 5 THEN DEBUG ".", DEC fraction
DEBUG " degrees", CR, "then press Enter..."
DEBUGIN character ' Espera al usuario
GOSUB Compass_Get_Axes ' Obtiene valores x y y
GOSUB Compass_Correct_Offsets ' Compensacion de eje correcta
angle = x ATN - y ' Convirte x y y a brads
WRITE CompassCal + counter, angle ' Guarda como valor brad
NEXT
RETURN
' Esta subrutina encuentra y guarda la direccin del mas bajo valor en el area
' EEPROM reservada por la directiva CompassCal DATA y la guarda en un byte
' reservado por la directiva CompassLowVal DATA. Esto reduce el cdigo
' en TestCalibratedCompass.bs2.
Get_And_Store_Low_Value_Address:
index = 8
table(current) = 0: table(previous) = 0
DO
index = index + 1
READ CompassCal + index, table(current)
READ CompassCal + (index - 1 & $F), table(previous)
ciclo UNTIL table(current) < table(previous)
WRITE CompassLowVal, index
RETURN
Calibration_Review:
Pgina 136 Sensores Inteligentes y sus Aplicaciones
FOR counter = 0 TO 15
brads = counter * 16
DEBUG CRSRX, 1, DEC3 brads
READ CompassCal + counter, angle
DEBUG CRSRX, 10, DEC3 angle
LOOKUP counter, [0, 22, 45, 67, 90, 112, 135, 157,
180, 202, 225, 247, 270, 292, 315, 337], integer
LOOKUP counter, [ 0, 5, 0, 5, 0, 5, 0, 5,
0, 5, 0, 5, 0, 5, 0, 5 ], fraction
DEBUG CRSRX, 19, DEC3 integer, ".", DEC fraction
angle = angle */ 361 ' Convierte brads a grados
DEBUG CRSRX, 28, DEC3 angle, CR
PAUSE 50 ' Retardo Debug para alentar PCs
NEXT
DEBUG CR
RETURN
RETURN
' Esta subrutina corrige interferencia acumulativa del campo magntico que
' puede venir de fuentes como PCB, cables, baterias cercanas o una fuente de
' corriente cercana. Esta subrutina confia en los valores guardados en el
' espacio EEPROM antes reservado por la directiva CompassOffsets DATA.
' Estos valores EEPROM son escritos por este programa durante la calibracion.
Compass_Correct_Offsets:
RETURN
Direccionamiento
TestCalibratedCompass.bs2 va y encuentra los valores que CalibrateCompass.bs2 grab
en la memoria EEPROM del BASIC Stamp. Luego, usa los valores a corregir para
escalar el error, y refina las mediciones usando unaa tecnica llamada interpolacin lineal.
Descarga Gratis. Este programa est disponible como descarga grtis .bs2 en la pgina
del producto Sensores Inteligentes y sus Aplicaciones en www.parallax.com. Lea los
comentarios del cdigo para una explicacin de cmo funciona.
' IMPORTANTE: Este programa confia en los valores EEPROM guardados por
' CalibrateCompass.bs2 durante el proceso de calibracin.
Pgina 140 Sensores Inteligentes y sus Aplicaciones
DEBUG CLS
' Esta subrutina maneja la communication BASIC Stamp - HM55B y guarda las
' mediciones de fuerza de campo magntico regresadas por el dispositivo en
' las variables de ejes x y y.
RETURN
' Esta subrutina corrige interferencia acumulativa del campo magntico que
' puede venir de fuentes como PCB, cables, baterias cercanas o una fuente de
' corriente cercana. Esta subrutina confia en los valores guardados en el
' espacio EEPROM antes reservado por la directiva CompassOffsets DATA.
Pgina 142 Sensores Inteligentes y sus Aplicaciones
Compass_Correct_Offsets:
RETURN
Compass_Interpolate:
angleOffset = angleOffset * 16
angle = (angleOffset / span) + ((angleOffset // span) / (span / 2))
angle = ((index - 1 & $F) * 16) + angle
angle = angle & $ff
RETURN
Cambie el programa para mostrar grados con el caracter ASCII 176, smbolo .
Un modo efectivo para eliminar los efectos del ruido es tomando un promedio de las
mediciones de los ejes x y y de la brjujla. As, si el ruido causa que una medicin sea un
poco ms alta, la siguiente un poco ms baja, y la siguiente correcta, el promedio de todas
las mediciones eliminar los altos y bajos y las establecer en el valor correcto.
NEXT
Chapter 4: El mdulo de brjula Hitachi HM55B Page 145
RETURN
Negative CON 1
Positive CON 0
Descarga gratis Este programa est disponible como descarga grtis .bs2 en la pgina del
producto de Sensores Inteligentes y sus Aplicaciones en www.parallax.com.
Pgina 146 Sensores Inteligentes y sus Aplicaciones
NEXT
Pgina 148 Sensores Inteligentes y sus Aplicaciones
RETURN
Siga los pasos en esta actividad para incorporar el promedio en una copia de
CalibrateCompass.bs2. En vez de modificar la subrutina Compass_Get_Axes
del programa solo copie la subrutina modificada de este programa
(TestCompassAveraged.bs2) y pguela sobre la que est en su copia de
CalibrateCompass.bs2.
Corra su copia modificada de CalibrateCompass.bs2 y repita los pasos de la
actividad #2.
Haga una copia de TestCalibratedCompass.bs2, y modifiquela para que ejecute
el promediado.
Repita las pruebas de precisin de la actividad #3. Su brjula digital debe
funcionar realmente bien ahora.
Partes Requeridas
(1) Mdulo brjula Hitachi HM55B
(1) LCD Serial Parallax (216)
(1) Cable Extension de 14 pulgadas para la LCD
(6) Cables conectores
Si est trabajando con un BASIC Stamp HomeWork Board or una tarjeta serial Board of
Education Rev A o B, tambin necesitar:
Figura 4-12
Schematics de la LCD
Serial Parallax y el
mdulo de brjula
Pgina 150 Sensores Inteligentes y sus Aplicaciones
Figura 4-13
Colocando el Jumper de los puertos
Servo a Vdd
Configuracin de jumper Vdd vs. Vin Determine qu fuente de energa est conectada a
los puertos X4 y X5. Si el jumper esta en Vdd, estos puertos reciben 5 V regulados del
regulador de tensin del Board of Education. Si est en Vin, el puerto recibe energa
directamente de la batera o de la fuente de energa. ASEGRESE DE QUE SU JUMPER
EST PUESTO CORRECTAMENTE A Vdd O DAAR PERMANENTEMENTE SU LCD!
Conecte una punta del cable extensin en el Puerto 14 del cabezal X4,
asegurndose que las etiquetas "Red" y "Black" en el lado derecho del puerto X5
se alineen con los cables rojo y nego del cable extensin.
Asegrese de que el cable blanco sea el ms cercado a la etiqueta 14 y que el
cable nego es el ms cercano a la etiqueta X4.
Conecte la otra punta del cable para que el cable negro est conectado al pin
GND de la LCD Serial Parallax, el cable rojo est conectado al pin 5 V, y el
cable blanco est conectado al pin RX.
Vuelva a verificar todas sus conexiones y asegrese de que son correctas.
ATENCIN!
No reconecte la energa a su tarjeta hasta que est seguro de que las conexiones
estn correctas. Si comete un error con las conexiones de la LCD, esta ser
permanentemente daada.
Chapter 4: El mdulo de brjula Hitachi HM55B Page 151
Figura 4-15
Cableado en tableta
para la conexin de
cable de la LCD Serial
Parallax Cable y el
Mdulo brjula
Figura 4-16: Mdulo de brjula y LCD Serial Parallax Conectados con cable extensin
ATENCIN!
No reconecte la energa a su tarjeta hasta que est seguro de que las conexiones
estn correctas. Si comete un error con las conexiones de la LCD, esta ser
permanentemente daada.
Partes Requeridas
(4) ngulos de montaje de 90 grados
(2) espaciadores de nylon redondos de
1/4-pulgada #4
(2) tornillos con cabeza 4-40
(4) tornillos con cabeza 4-40
(6) tuercas zincadas 4-40
El siguiente comando SEROUT coloca el cursor de la LCD, luego imprime espacios para
sobreescribir el valor anterior. Entonces coloca el cursor en la misma localidad de inicio
y escribe el nuevo valor. Esto previene la aparicin de caracteres fantasma cuando
cambia el nmero de dgitos en el valor, pero sin los molectos efectos laterales de
pantalla parpadeante que obtendra si de otra forma se limpiara la pantalla entre cada
medicin.
' LCD muestra direccion en grados en la linea superior
' y mediciones x y y en la linea inferior.
SEROUT 14, 84, [139, " ", 139, DEC angle, 7,
151, " ", 151, SDEC X,
160, " ", 160, SDEC y]
Descarga gratis Este programa est disponible como descarga grtis .bs2 en la pgina del
producto de Sensores Inteligentes y sus Aplicaciones en www.parallax.com.
Pgina 156 Sensores Inteligentes y sus Aplicaciones
RETURN
Pgina 158 Sensores Inteligentes y sus Aplicaciones
Su Turno
Intente extender las actividades de la seccin Su Turno en la actividad #4 ahora con la
LCD Serial Parallax. No se preocupe de agregar funcionalidad de la LCD al programa de
calibracin, solo al programa modificado de prueba de calibracin de la actividad #3.
Podra necesitar recalibrar para eliminar interferencia magntica causada por la
proximidad de la LCD. Agregue un comando a la Rutina principal de
CalibrateCompass.bs2 que enve unos cuantos caracteres a la LCD cada vez que haga un
ciclo antes de que lo corra. Para liberar un poco de espacio de cdigo intente remover
unos caracteres de uno de los comandos DEBUG en la subroutine Calibration_Review.
Chapter 4: El mdulo de brjula Hitachi HM55B Page 159
RESUMEN
El mdulo de brjula Hitachi HM55B es un sensor bi-axial de campo magntico capaz de
detectar variaciones de microteslas en las componentes del campo magntico de la tierra
actuando en sus ejes x y y. El angle del mdulo a partir del norte puede ser determinado
dividiendo la medicin del eje x entre la medicin del eje y, y luego tomando el
arcotangente del resultado. El mdulo de brjula tambin puede ser usado para detectar
campos magnticos de barras magnticas y la inclinacin del campo magntico de la
tierra en su localidad.
Preguntas
1. Cul es la relacin entre el eje x de medicin del mdulo brjula a un ngulo
dado y la medicin cuando el eje x est alineado con el norte magntico?
2. Cules son los nombres de cada uno de los pines del mdulo brjula que tienen
que ser conecados a los pines E/S del BASIC Stamp?
3. Hacia dnde se incrementa el ngulo a partir del norte en las brjulas
convencionales?
4. Qu es declinacin?
5. Si est midiendo un campo magntico cercano a una barra magntica, cmo se
relaciona la direccin del campo magntico con sus marcas N y S?
6. Porqu puede una brjula mecnica cercana causar errores en las mediciones
del mdulo brjula?
7. Cmo promediara 20 mediciones?
8. Qu variables tiene que poner a cero antes de promediar las mediciones de x y
y? Porqu tienen que ser puestas a cero?
9. Cul es el comando SEROUT para definer el smbolo de grados? Cuntos bytes
enva?
Pgina 160 Sensores Inteligentes y sus Aplicaciones
Ejercicios
1. Calcule el ngulo a partir del norte if the x axis lectura is 34 y the eje y lectura is
0.
2. Calcule el ngulo a partir del norte si la lectura del eje x es 16 y la lectura del eje
y is 31.
3. Calcule el nmero de nanoteslas en 1.6 microteslas.
4. Escriba una rutina que convierta de microteslas a nanoteslas.
5. Escriba una rutina que examine una variable y despliegue si es o no negativa.
Proyectos
1. Despliegue la direccin presente en la LCD serial. Presione y libere un botn
para recordad esa direccin deseada. Si la direccin presente est movida por
ms de 5, emita un sonido de avertencia con un piezo parlante.
2. Disee un prototipo que le diga cuando si brjula digital Hitachi HM55B es
sostenida a nivel con la ayuda del Acelermetro Mems 2125.
Chapter 4: El mdulo de brjula Hitachi HM55B Page 161
Soluciones
Q1. Si N es el valor reportado por x cuando est alineado con el norte magntico,
entonces para un ngulo dado theta, x = Ncos.
Q2. Din, Dout, /Enable, y CLK.
Q3. En sentido horario a partir del norte.
Q4. Es la diferencia, en grados, entre el norte magntico y el norte verdadero.
Q5. La direccin del campo parecer ser opuesta a las marcas N y S, debido a la
forma en que el campo magntico da vuelta.
Q6. La brjula mecnica contiene un pequeo imn que puede afectar el mdulo
brjula.
Q7. Con una suma en ejecucin de las 20 mediciones y dividir la suma total entre 20.
Q8. La suma en ejecucin de x y y debe empezar en cero. Una vez que un clculo
termine, las sumas contendrn un valor ms alto. Para hacer un Segundo clculo,
debe regresar la suma a cero.
Q9. El comando es 255, segudio por 8 bytes de datos caracter.
SEROUT pinNumber, baudrate, [255, byte0byte7]
Q10. Primero escriba espacios para sobreescribir (borrar) el valor anterior, luego
coloque el cursor de regreso al punto inicial y escriba el nuevo valor.
IF (value.BIT15 = 1) THEN
DEBUG "Negative", CR
ELSE
DEBUG "Positive", CR
ENDIF
P1. Ejemplo de solucin:
Asumiendo que un botn activo en nivel bajo est conectado a P10 y un piezo
parlante est conectado a P11 (Vea Qu es un Microcontrolador?, Captulos 3
y 8), LcdTestCompass.bs2 puede ser modificado como sigue:
Agregue estas directivas de pin a la seccin de definiciones de E/S:
pushbutton PIN 10
Pgina 162 Sensores Inteligentes y sus Aplicaciones
speaker PIN 11
IF PushButton = 1 THEN
angleMem = angle
alarmArm = 1
FREQOUT speaker, 20, 3000
SEROUT 14, 84, [148,"ON " ]
ENDIF
IF alarmArm = 1 THEN
SEROUT 14, 84, [160, " ", 160, DEC angleMem, 7]
IF difference > 5 y difference < 355 THEN
FREQOUT speaker, 10, 4000
ENDIF
ENDIF
DO
Pgina 164 Sensores Inteligentes y sus Aplicaciones
IF (COS angleTilt <= side) THEN EXIT ' Hecho cuando COS angle <= side
angleTilt = angleTilt + 1 ' Incrementa angulo
ciclo
angleTilt = angleTilt */ 361 ' Convierte brads a grados
IF sign = Negative THEN ' Ajusta si el signo es negativo.
angleTilt = 180 - angleTilt
ENDIF
RETURN
RETURN
Pgina 166 Sensores Inteligentes y sus Aplicaciones
Captulo 5: Fundamentos de juegos con el Acelermetro Page 167
Este captulo tiene 4 actividades que demuestran las varias facetas del uso de inclinacin
para controlar una pantalla. He aqu un resumen de cada actividad:
dentro del MX2125 cuando lo inclina. Tambin establece los fundamentos del
acelermetro para trabajar en conjunto con las tcnicas de la actividad #2.
Actividad #4: Control de Juego Ahora est listo para usar la inclinacin para
empezar a controlar su carcter de juego. Los caracteres de fondo pueden ser
usados para definir si su caracter de juego est dentro o fuera de los lmites.
Divirtase personalizando y expandiendo este video juego por inclinacin.
El siguiente programa ejemplo tambin hace uso del caracter de control CLRDN. DEBUG
CLRDN hace que todas las lineas por debajo de la posicin actual del cursor sean borradas.
Transmit
Windowpane
Receive
Windowpane
'{$STAMP BS2}
'{$PBASIC 2.5}
x VAR Word
y VAR Word
temp VAR Byte
Pgina 170 Sensores Inteligentes y sus Aplicaciones
DEBUG CLS,
"0123456789X", CR,
"1 ", CR,
"2 ", CR,
"3 ", CR,
"4 ", CR,
"5 ", CR,
"Y ", CR, CR
DO
LOOP
Escalado y Compensacin
Estos conceptos fueron presentados en el Captulo 3 para manejar valores de entrada del
acelermetro. En el captulo 3, usamos el operador ** para escalar (multiplicar) por
valores fraccionales. En este ejemplo, usaremos el operador * porque una variable en el
siguiente programa ejemplo solo necesita ser multiplicada por el valor entero 2.
En la Figura 5-3 se ha trazado en la Terminal de Depuracin una grfica con ejes positivo
y negativo. La horizontal o eje x tiene un espacio entre cada numeral y la vertical eje y
no. A fin de posicionar el cursor en un punto particular usando el comando CRSRXY,
necesitaremos mapear entre los ejes trazados en la Terminal de Depuracin y los ejes
usados por el comando CRSRXY.
Por ejemplo, donde los ejes de la grfica intersectan en las coordenadas (0, 0) es de hecho
la posicin CRSRXY 6,3 (compare esto con la Figura 5-2 hasta que perciba como es esto).
Para este programa nos gustra poder escribir -3-3 en la Terminal de Depuracin y
hacer que el asterisco aparezca en la coordenada (-3, -3) de la grfica, que sera la
posicin CRSRXY 0,6. Otro ejemplo, cuando escribe 2,2, CRSRXY de hecho debe posicionar
el asterisco en 10,1. Ahora es momento de entender como hacer esta traslacin de mapeo
usando escalado y compensacin.
Para valores entre -3 to 3, el valor X tiene que ser multiplicado por 2 y agregarle 6 para
que CRSRXY coloque el asterisco con el nmero correcto de espacios. Esto es una escala
de 2 y una compensacin de 6. Esta es la lnea de PBASIC para hacer la conversin de
coordenada X a nmero de espacios.
x = (x * 2) + 6
El valor Y tiene que ser multiplicado por -1, luego agregarle 3. Esto es una escala de -1 y
una compensacin de 3. Esta es la lnea de PBASIC para hacer la conversin de
coordenada Y al nmero de retornos de carro.
y = 3 - y
'{$STAMP BS2}
'{$PBASIC 2.5}
x VAR Word
y VAR Word
temp VAR Byte
Captulo 5: Fundamentos de juegos con el Acelermetro Page 173
DEBUG CLS,
" 3| ", CR,
" 2| ", CR,
" 1| ", CR,
"------+------", CR,
"-3-2-1| 1 2 3", CR,
" -2| ", CR,
" -3| ", CR, CR
DO
x = (x * 2) + 6
y = 3 - y
LOOP
Verifique que este programa no le permite introducir caracteres fueran del rango
de -3 a 3.
Puede usar una tcnica algebrica estandar, resolviendo 2 ecuaciones con 2 incgnitas,
para definir las lneas que necesitar para transformar coordenadas Cartesianas en
coordenadas de pantalla para la Terminal de Depuracin. El siguiente ejemplo muestra
cmo se hizo para las lneas que convierten x y y de Cartesianas a coordenadas de
pantalla en PlotXYGraph.bs2.
DEBUG CRSRXY, 0, 12, "x before: ", SDEC x ' <--- Agregue
x = (x * 2) + 6
y = 3 - y
DEBUG CRSRXY, 0, 14, "x after: ", SDEC x ' <--- Agregue
Figura 5-5
Coordenadas de prueba
Cuando se diesea una pantalla para mostrar coordenadas Cartesianas, ayuda tomar un
par de valores antes y despus como los de la Tabla 5-1. Entonces puede usarlos para
resolver la escala (K) y compensacin (C) usando 2 ecuaciones con 2 incgnitas.
Xafter = (K Xbefore ) + C
12 = (K 3) + C
2 = (K 2 ) + C
Captulo 5: Fundamentos de juegos con el Acelermetro Page 177
(2) De requerirse, multiplique una de las 2 ecuaciones por un trmino que iguale los
nmeros de una de las incgnitas en ambas ecuaciones.
(3) Reste una ecuacin de la otra para anular una de las incgnitas.
12 = (K 3) + C
[ 2 = (K -2) + C ]
10 = K 5
10 = K 5
10
K=
5
K =2
(5) Sustituya el valor que resolvi en el paso 4 en una de las 2 ecuaciones originales.
12 = (2 3) + C
12 = (2 3) + C
12 = 6 + C
C = 12 - 6
C =6
Xafter = (K Xbefore ) + C
K = 2 and C = 6
Xafter = (2 Xbefore ) + 6
Pgina 178 Sensores Inteligentes y sus Aplicaciones
Figura 5-6
Coordenadas de prueba
Repita los pasos 1 al 7 para la ecuacin del eje y. La respuesta correcta es:
yafter = ( 1 ybefore ) + 3
Captulo 5: Fundamentos de juegos con el Acelermetro Page 179
Las televisiones y los monitores CRT de computadora refrescan cada pixel muchas veces
por segundo. El nivel de refrescado en las televisiones es 30 Hz aproximadamente y
algunos de los niveles de refrescado ms comunes en CRTs son 60, 70, y 72 Hz. Otros
dispositivos como algunas pantallas LCD y LED sostienen la imagen automticamente, o
bien con ayuda de otro microcontrolador. Todo lo que el programa o el microcontrolador
que controla estos dispositivos tiene que hacer es decirles lo que hay que desplegar o
cambiar. Es as tambin como trabaja la video compresin en su computadora. A fin de
reducir el tamao del archivo, algunos archivos de video comprimidos guardan los
cambios en vez de guardar todos los pixeles en un cuadro de imagen dado.
Cuando se usa con pantallas que no necesitan ser refrescadas (como la Terminal de
Depuracin o una LCD), el BASIC Stamp puede guardar una imagen de un juego o un
fondo de grfica en su EEPROM. Cuando un caracter de juego se mueve y es redibujado
en una posicin diferente, el BASIC Stamp puede leer su EEPROM y redibujar los
caracteres de fondo en la antigua posicin del carcter de juego. Para ello, salve las viejas
coordenadas del caracter de juego antes de moverse y use esas coordenadas para
recuperar el caracter de fondo de la EEPROM. Dependiendo de qu tan grande es la
pantalla, esta tcnica puede salvar una considerable cantidad de tiempo que el BASIC
Stamp puede necesitar para ejecutar otras tareas.
caracteres en la EEPROM y luego desplegarlos con un ciclo FORNEXT que use los
comandos READ y DEBUG para desplegar los caracteres individualmente (Figura 5-7).
Figura 5-7
Fondo a partir de la
directiva DATA
Puede usar la directiva DATA para guardar un fondo en la EEPROM. Note como estas
directivas DATA guardan 100 caracteres (0 al 99). Note tambin que cada rengln es de
14 caracteres de ancho cuando agrega el caracter de control CR. La programacin es ms
fcil si cada rengln es del mismo ancho. De otra forma, encontrar el carcter que desea
se vuelve un problema ms complejo.
DATA CLS, ' 0
" 3| ", CR, ' 14
" 2| ", CR, ' 28
" 1| ", CR, ' 42
"------+------", CR, ' 56
"-3-2-1| 1 2 3", CR, ' 70
" -2| ", CR, ' 84
" -3| ", CR, CR ' 98 + 1 = 99
Para desplegar el fondo completo una vez al principio del programa, puede usar un ciclo
FORNEXT. Recupera y despliega cada caracter guardado en la EEPROM. Recuerde que,
si bien el efecto neto es el mismo que un comando DEBUG largo, la EEPROM es ms
Captulo 5: Fundamentos de juegos con el Acelermetro Page 181
END
Este mapa muestra 16 caracteres por rengln en vez de 14. Revise que tiene en
total 100 caracteres (0 a 99) guardados para fines de pantalla en la EEPROM.
(1) Declare un par de variables para guardar los valores viejos, xOld y yOld por
ejemplo.
x VAR Word
y VAR Word
(2) Antes de cargar nuevos valores en las variables x y y, guarde el valor presente de x
en xOld y el valor presente de y en yOld.
Captulo 5: Fundamentos de juegos con el Acelermetro Page 183
DO
Cuando se trabaja con valores con signo, las variables de palabra se guardan con valor y
signo. En el punto particular en que xOld y yOld son usados en el programa, solo guardan
valores que van de 0 a 12, por lo tanto todo lo que necesitamos son variables nibble.
Este es un tercer paso que puede usar para probar y verificar que trabaja:
(3) Agregue oraciones DEBUG para desplegar los valores presentes y previos de x, y.
DEBUG CRSRXY, x, y, "*"
DEBUGIN temp
Re-Dibujando el Fondo
Hasta este punto, todos nuestros trazados acumularon asteriscos mientras introducamos
ms valores en la ventana de Transmisin. El efecto neto que queremos para control de
juego es hacer desaparecer el asterisco de su vieja posicin y aparecer en su nueva
posicin cuando la redefinamos para dar el aspecto de un asterisco movindose.
Pgina 184 Sensores Inteligentes y sus Aplicaciones
Observe la Figura 5-9. Note que 6 pares ordenados fueron introducidos en la Terminal de
Depuracin, pero solo hay un asterisco y corresponde con el ltimo par introducido. Esto
es porque el programa usado aqu hace desaparecer al viejo asterisco tomando las
coordenadas viejas x, y , busca ese caracter de fondo en la EEPROM y luego lo despliega
con DEBUG. Para hacer aparecer el asterisco en su nueva posicin, usa un comando DEBUG
con las coordenadas presentes x, y como en los programas ejemplo previos.
Figura 5-9
Pantalla usando
Refrescado de fondo
EEPROM
El programa usado para crear la Figura 5-9 combina la the tcnica de fondo definida con
DATA de EepromBackgroundDisplay.bs2 con la tcnica de graficado de asterisco y rastreo
de posicin de PlotXYGraphRecall.bs2. Esta combinacin nos permite redibujar el
caracter de fondo sobre el viejo asterisco con este cdigo:
IF (x <> xold) y (y <> yold) THEN ' Ve si el asterisco se movio
index = (14 * yOld) + xOld + 1 ' Direccion de caracter de fondo
READ index, character ' Obtiene caracter de fondo
DEBUG CRSRXY, xOld, yOld, character ' Muestra caracter de fondo
ENDIF
Captulo 5: Fundamentos de juegos con el Acelermetro Page 185
DO
LOOP
Captulo 5: Fundamentos de juegos con el Acelermetro Page 187
DO
LOOP
Pgina 188 Sensores Inteligentes y sus Aplicaciones
Parts Required
(2) Cables conectores de 3 pulgadas
(2) Resistencias 220
(1) Acelermetro Bi-axial Mems MX2125
Asterisk Indicates
Hot Gas Location
Pgina 190 Sensores Inteligentes y sus Aplicaciones
La Figura 5-12 muestra una leyenda para las diversas formas que puede inclinar la tarjeta
en sus ejes junto con cada efecto de la inclinacin en la posicin de la bolsa de gas.
Level (0, 0)
Tilt
(-3, 0)
Right
Figura 5-12:
Inclinacin del
Acelermetro y
Posicin del
Tilt
(3, 0) Cursor
Left
Tilt
(0, -3)
Down
Tilt
(0, 3)
Up
Captulo 5: Fundamentos de juegos con el Acelermetro Page 191
Cada uno de estos pasos es discutido con ms detalle en la seccin que sigue al programa
ejemplo.
' Guarda fondo en EEPROM ' Direccion del ultimo caracter en el renglon
ScaleConstant = Int[65536(21/(1251-1))]
ScaleConstant = Int[65536(21/1250)]
ScaleConstant = Int[1101.0048]
ScaleConstant = 1101
Un proceso similar resulta en una constante de escala ** de 576 para el eje y, y el cdigo
resultante para escalar y compensar ambos ejes es:
' Calcula posicion del cursor.
x = (x MIN 1875 MAX 3125) - 1875 ** 1101 ' Calcula posicion x
y = (y MIN 1875 MAX 3125) - 1875 ** 576 ' Calcula posicion y
y = 10 - y
Pgina 194 Sensores Inteligentes y sus Aplicaciones
Si las mediciones del acelermetro estn ligeramente fuera de la escala de 1875 a 3125,
puede causar sntomas extraos. Los operadores MIN y MAX previenen esto. Tambin se
resta 1875 a cada eje antes de que sea escalado con el operador **. El resultado para el
eje x es que 0 a 1250 es escalado a 0 a 20. Para el eje y, 0 a 1250 es escalado a 0 a 10.
Al disminuir las mediciones de eje e inclinacin, la posicin hacia abajo del cursor tiene
que incrementar. Entonces en vez de ajustar de 1875 a 3125 en 0 a 10, el programa tiene
que ajustar en 10 a 0. La oracin y = 10 - y resuelve esto. Si y es 0, despus de escalar
se vuelve 10. Igualmente, si y es 10 despus de escalar se vuelve 0. Si es 9 despus de
escalar se vuelve 1, si es 8 despus de escalar se vuelve 2, etc.
Los ltimos pasos antes de repetir el ciclo en la rutina principal son desplegar el nuevo
asterisco en sus nuevas coordenadas x y y, luego pausar por otros 50 ms para completar
la porcin on del asterisco parpadeante.
' Despliega el asterisco en la nueva posicion del cursor.
DEBUG CRSRXY, x, y, "*"
PAUSE 50
Figura 5-13
Grupo de Asteriscos
con Refrecado de Fondo
Pgina 196 Sensores Inteligentes y sus Aplicaciones
Descarga gratis Este programa est disponible como descarga grtis .bs2 en la pgina del
producto de Sensores Inteligentes y sus Aplicaciones en www.parallax.com.
' Esta rutina es ignorada mientras que symbol se mantenga = Maze. Si symbol
' fue cambiada a YouWin o YouLose, despliega el nuevo fondo y fin de juego.
IF (symbol = YouWin) OR (symbol = YouLose) THEN
FOR index = 0 TO 242 ' 242 caracteres
READ index + symbol, char ' Obtiene caracter
DEBUG char ' Muestra caracter
NEXT ' Siguiente iteracion del ciclo
END ' Fin de juego
ENDIF ' Fin de bloque symbol-if
Dos variables fueron agregadas, symbol para dar seguimiento de qu fondo se recuperan
caracteres y points para dar seguimiento al marcador del jugador.
symbol VAR Word
points VAR Byte
Los valores iniciales de x y y tienen que empezar enmedio del curso de obstculos.
Puesto que todas las variables inicializan en cero en PBASIC, una falla en su
inicializacin causara que el caracter de juego empezara en la esquina superior izquierda
en vez de a la mitad.
x = 10
y = 5
symbol = Maze
La segunda rutina es crucial; es una linea SELECTCASE que sigue las reglas del juego.
La lnea SELECTCASE ve el caracter de fondo en la posicin presente del asterisco. Si el
asterisco esta sobre un espacio " ", la lnea SELECTCASE no necesita cambiar nada y el
DOLOOP de la Rutina Principal solo se mantiene repitindose, revisndo las mediciones
del acelermetro y actualizando la posicin del asterisco. Si el asterisco se mueve sobre
un "$", el programa tiene que agregar 10 a la variable points, y escribir un caracter "%"
sobre el "$" en la EEPROM. Esto previene que el programa sume 10 points varias veces
por segundo mientras que el asterisco is sostenido sobre "$". Si el asterisco es movido
sobre un "#", el smbolo YouLose es guardado en la variable symbol. Si el asterisco se
mueve sobre cualquiera de las letras "W" "I" o "N", YouWin se guarda en symbol.
' Movi el asterisco sobre un$, W, I, N, o #?
SELECT char ' Checa caracter de fondo
CASE "$" ' Si es "$"
points = points + 10 ' Agrega puntos
WRITE index, "%" ' Escribe "%" sobre "$"
CASE "#" ' Si es "#",hace Symbol a YouLose
symbol = YouLose
CASE "W", "I", "N" ' Si W,I,oN, Symbol -> YouWin
symbol = YouWin
ENDSELECT
Captulo 5: Fundamentos de juegos con el Acelermetro Page 203
Al navegar su asterisco sobre " ", "$", or "%", la siguiente rutina es ignorada porque
symbol an guarda Maze. La lnea SELECTCASE solo cambia esto cuando el asterisco es
movido sobre "#", "W", "I", o "N". Siempre que la lnea SELECTCASE cambie symbol
a YouWin o YouLose, esta rutina despliega el fondo correspondiente, luego termina el
juego.
' Esta rutina es ignorada mientras que symbol se mantenga = Maze. Si symbol
' fue cambiada a YouWin o YouLose, despliega el nuevo fondo y fin de juego.
IF (symbol = YouWin) OR (symbol = YouLose) THEN
FOR index = 0 TO 242 ' 242 caracteres
READ index + symbol, char ' Obtiene caracter
DEBUG char ' Muestra caracter
NEXT ' Siguiente iteracion del ciclo
END ' Fin de juego
ENDIF ' Fin de bloque symbol-if
Verifique que tanto el botn Run del Editor BASIC Stamp y el botn Reset de la
tarjeta Board of Education se comportan igual despus de esta modificacin.
Pgina 204 Sensores Inteligentes y sus Aplicaciones
Modifique la rutina principal para que x solo pueda ser mayor que o menor que
xOld por un incremento o decremento de 1. Repita para y y yOld.
RESUMEN
La actividad #1 presenta los caracteres de control, tcnicas para mantener los caracteres
dentro de los lmites del trazado y el lgebra para mapear coordenadas a trazado. Los
ejemplos de caracteres de control incluyeron CRSRXY y CLRDN. Los ejemplos de lmites de
trazado incluyeron los operadores MIN y MAX y una tcnica IFTHEN. Las tcnicas de
mapeo incluyeron ecuaciones PBASIC simples para cambiar los valores de las
coordenadas x y y de Cartesianas a sus equivalentes de Terminal de Depuracin.
La actividad #3 demostr cmo las mediciones del acelermetro del Captulo 3 pueden
ser combinadas con las tcnicas de posicionado de cursor y llamado de caracter de la
actividad #2 para crear una pantalla controlada por inclincacin. Se usaron mediciones
simples PULSIN para medir la inclinacin y los ejes x y y del acelermetro. Los valores
de inclinacin fueron escalados y compensados usando las tcnicas presentadas en el
Captulo 3, actividad #3. Los valores modificados x y y dictaron el posicionado del
cursor para escribir el asterisco en la Terminal de Depuracin. La posicin del asterisco
relativa al plano Cartesiano desplegado en el fondo represent el centro de la bolsa de
aire caliente dentro de la cmara del MX2125. Al moverse el asterisco, el fondo de su
posicin previa fue redibujado usando las tcnicas presentadas en la actividad #2.
ser incorporados fondos mltiples en un juego haciendo uso de los operadores opcionales
@Address y nombre Smbolo de las directivas DATA. Puesto que el nombre Smbolo es en
realidad la direccin EEPROM al principio de una directiva DATA determinada, su
programa puede accesar elementos en diferentes fondos agregando el valor de Symbol al
argument de direccin del comando READ.
Preguntas
1. Qu significan las siglas HID?
2. Qu caracter de control causa que todas las lneas por debajo de la posicin
presente del cursor sean borradas?
3. Qu comando y qu formateador puede usar para guardar en la variable X un
solo dgito que teclee en la ventana de Transmisin Terminal de Depuracin?
4. Existen otras tcnicas de programacin que pueda usar con otros operadores
para prevenir que el valor que guarda una variable exceda un valor mximo o
mnimo?
5. Cules son los niveles de refrescado para los monitores CRT de computadora
comunes?
6. Qu clase de rutina necesita para desplegar todos los caracteres de fondo
guardados en una directiva DATA?
7. Porqu son necesarias las variables de una palabra para guardar valores con
signo en PBASIC?
8. Cuando inclina el acelermetro a la izquierda, hacia dnde viaja el asterisco
burbuja?
9. Si las coordenadas del asterisco empiezan en (-5, 0), y terminan en (5, 0), que
piensa que le pas al acelermetro?
10. Qu eje fue el fulcrum si el acelermetro empez en (2, 2) y termin en (-2, 2)?
11. Si las lecturas del acelermetro viajan de (0, 5) a (0, -5), de nuevo y
repetidamente, que secuencia de movimiento es la que probablemente ocurre?
12. Cul es el valor de YouWin?
13. Qu comando puede usar para checar el valor de un nombre Smbolo de una
directiva DATA?
14. Si cambia el operador @Address de la directiva Maze DATA de 0 a 10, qu
tendra que hacer a las otras directivas DATA en el programa?
15. En TiltObstacleGame.bs2, qu clase de bloque de cdigo hace mandatorias las
reglas del juego?
16. Qu comando cambia los valores "%" de regreso a valores "$" en la EEPROM?
Captulo 5: Fundamentos de juegos con el Acelermetro Page 207
Exercises
1. Escriba un comando DEBUG que coloque el cursor 5 espacios arriba, 7 espacios
abajo, y luego imprima el mensaje * esta es la coordenada (5, 7) en laTerminal
de Depuracin.
2. Escriba un comando DEBUG que despliegue un sistema coordenado cartesiano de
-2 a 2 en los ejes x y y.
3. Calcule el escalamiento y compensacin que necesitar para desplegar pares
ordenados introducido en la ventana de Transmisin de la Terminal de
Depuracin en un sistema coordenado cartesiano que vaya de -5 a 5 en ambos
ejes x y y.
4. Escriba una rutina que dibuje un rectngulo con asteriscos. Esta rutina debiera
ser de 15 asteriscos de ancho y 5 asteriscos de alto.
5. Si su fondo es de 5 caracteres de ancho por 3 caracteres de alto, prediga el
tamao de variable mnimo que puede usar para establecer la direccin para su
comando READ y explique su seleccin. Tendr espacio para caracteres
adicionales como CLS?
Projects
1. Modifique CrsrXYPlot.bs2 para que redibuje el fondo antes de graficar el
asterisco.
2. Modifique PlotXYGraph.bs2 para que despliegue las coordenadas del asterisco
mas recientemente colocado a la derecha del area de trazado.
Pgina 208 Sensores Inteligentes y sus Aplicaciones
Soluciones
Q1. Dispositivo de interface humana (en ingls Human interface device).
Q2. CLRDN.
Q3. DEBUGIN DEC1 x.
Q4. Si, tambin puede usar las lneas IFTHEN para checar si los valores estn fuera
de los lmites.
Q5. 60, 70, y 72 Hz.
Q6. Puede usar un ciclo FORNEXT, con lneas para recuperar y desplegar cada
caracter guardado. Las variables de palabra guardan el valor y el signo.
Q7. Las variables de palabra guardan el valor y el signo.
Q8. La burbuja se mueve a la derecha.
Q9. Fue de una posicin inclinada a la derecha a otra inclinada a la izquierda.
Q10. El eje Y, o el ms largo eje de la tarjeta Board of Education.
Q11. Inclinar la tarjeta arriba y abajo repetidamente.
Q12. Direccin 486 de la EEPROM.
Q13. Puede usar el comando DEBUG como lo hara para desplegar el valor de
cualquier otra cantidad numrica, use el modificador DEC.
DEBUG DEC symbol
READ index + symbol, char
Q14. Necesitara agregar 10 a cada valor smbolo, entonces su programa sera:
YouLose DATA @253
YouWin DATA @496
Q15. Una lnea SELECTCASE.
Q16. El comando WRITE.
E1. Solucin ejemplo:
DEBUG CRSRXY, 5, 7,
"* esta es la coordenada (5,7) en la Terminal de Depuracin"
E2. Solucin ejemplo:
DEBUG CLS,
" 2| ", CR,
" 1| ", CR,
"----+----", CR,
"-2-1| 1 2", CR,
" -2| ", CR, CR
FOR x = 1 TO 15
FOR y = 1 TO 5
DEBUG CRSRXY, x, y, "*"
NEXT
NEXT
E5. El nmero de caracteres a guardar equivale a 5 x 3 = 15. El mnimo tamao de
variable a usar sera un Nibble (4 bits), con lo cual las direcciones pueden ir de 0
a 15. Habra espacio solo para un (1) caracter adicional.
P1. La clave para resolver este problema es mover la grfica dentro del DOLOOP y
cambiar CLS a HOME. Puede haber otras formas de solucin. Solucin ejemplo:
DO
DEBUG HOME,
"0123456789X", CR,
"1 ", CR,
"2 ", CR,
"3 ", CR,
"4 ", CR,
"5 ", CR,
"Y ", CR, CR
DEBUG "Type X coordinate: "
DEBUGIN DEC1 x
DEBUG CR, "Type Y coordinate: "
DEBUGIN DEC1 y
DEBUG CRSRXY, x, y, "*"
DEBUG CRSRXY, 0, 10, "Press any key..."
DEBUGIN temp
DEBUG CRSRXY, 0, 8, CLRDN
LOOP
P2. Modifique PlotXYGraph.bs2 para que despliegue las coordenadas del asterisco
mas recientemente colocado a la derecha del area de trazado. Para desplegar
adecuadamente las coordenadas negativas, use el modificador SDEC.
DO
DEBUG "Type X coordinate: "
DEBUGIN SDEC1 x
DEBUG CR, "Type Y coordinate: "
DEBUGIN SDEC1 y
DEBUG CRSRXY, 15, 3, "(X,Y) = (",
SDEC x, ",", SDEC y, ")", CLREOL
x = (x * 2) + 6
y = 3 - y
DEBUG CRSRXY, x, y, "*"
DEBUG CRSRXY, 0, 10, "Press any Key..."
DEBUGIN temp
DEBUG CRSRXY, 0, 8, CLRDN
LOOP
Pgina 210 Sensores Inteligentes y sus Aplicaciones
Captulo 6: Ms Proyectos con el Acelermetro Page 211
Partes Requeridas
Use la lista de partes y circuito del Captulo 3, actividad #2 en la pgina 71 para su lnea
de visin.
Programa Ejemplo
Use el programa ejemplo VertWheelRotation.bs2 from de la pgina 95 (Captulo 3,
actividad #5) junto con las modificaciones de pantalla LCD en la seccin Su Turno
Pantalla LCD en la pgina 96.
Procedimiento
Use su tarjeta lnea de visin a la cima del objeto y registre el ngulo.
Mida la distancia entre su punto de observacin y el objeto (lado adyacente en la
Figura 6-1).
Mida la altura a la cual sostuvo el acelermetro.
Use los siguienes calculos para determinar la altura del objeto.
Clculos
Sabemos de captulos previos que equivale al lado opuesto dividido entre el lado
adyacente de un tringulo rectngulo. Multiplicar ambos lados por la distancia adyacente
resulta en una expresin para resolver la altura opuesta. Es la distancia adyacente
multiplicada por la tangente del ngulo.
opposite
tan =
adjacent
Luego de determinar la altura opuesta (mostrada en la Figura 6-1), todo lo que tiene que
hacer es agregarle la altura a la que sostuvo el acelermetro cuando tom la medicin.
Ejemplo
Digamos que la distancia adyacente a un objeto es 10 m, y que a esa distancia el
acelermetro fu sostenido a 1.5 m del piso para tener una linea de visin a la cima de un
objeto. El ngulo reportado por el acelermetro fue 61. Con esto podemos estimar la
altura del objeto en 19.54 m, como se indica a continuacin.
Adjacent distance = 10 m
Accelerome ter measured = 61
Accelerome ter height = 1.5 m
Records = 0 RecordsEnd = 10
Clear_Data:
FOR eeIndex = Records TO RecordsEnd
WRITE eeIndex, 100
NEXT
DEBUG CR, "Records cleared."
PAUSE 1000
RETURN
Para recuperar y desplegar los valores que fueron guardados, la subrutina Display_Data
tiene un ciclo FOR...NEXT con READ eeIndex, value. Puesto que 100 fu agregado a
Pgina 216 Sensores Inteligentes y sus Aplicaciones
cada valor antes de ser guardado con el comando WRITE, se resta 100 a la variable value
despus del comando READ para regresar a value en la escala de 100 a 100.
Display_Data:
DEBUG CR, "Index Record",
CR, "----- ------",
CR
FOR eeIndex = Records TO RecordsEnd
READ eeIndex, value
value = value - 100
DEBUG DEC eeIndex, CRSRX, 7, SDEC value, CR
NEXT
DEBUG CR, "Press Enter for menu..."
DEBUGIN char
RETURN
Transmit
Windowpane
Figura 6-2
Introduciendo valores
para
EepromDataStorage.
Receive bs2
Windowpane
'{$STAMP BS2}
'{$PBASIC 2.5}
DO
DEBUG CLS,
"Type C, R or D", CR,
"C - Clear records", CR,
"R - Record records", CR,
"D - Display records", CR,
">"
DEBUGIN char
DEBUG CR
SELECT char
CASE "C", "c"
GOSUB Clear_Data
CASE "R", "r"
GOSUB Record_Data
CASE "D", "d"
GOSUB Display_Data
CASE ELSE
DEBUG CR, "Not a valid entry.",
CR, "Try again."
PAUSE 1500
Pgina 218 Sensores Inteligentes y sus Aplicaciones
ENDSELECT
LOOP
Clear_Data:
FOR eeIndex = Records TO RecordsEnd
WRITE eeIndex, 100
NEXT
DEBUG CR, "Records cleared."
PAUSE 1000
RETURN
Record_Data:
DEBUG CR, "Enter valores from -100 to 100", CR
FOR eeIndex = Records TO RecordsEnd
DEBUG "Record ", DEC eeIndex, " >"
DEBUGIN SDEC value
value = value + 100
WRITE eeIndex, value
NEXT
DEBUG CR, "End of records.",
CR, "Press Enter for menu..."
DEBUGIN char
RETURN
Display_Data:
DEBUG CR, "Index Record",
CR, "----- ------",
CR
FOR eeIndex = Records TO RecordsEnd
READ eeIndex, value
value = value - 100
DEBUG DEC eeIndex, CRSRX, 7, SDEC value, CR
NEXT
DEBUG CR, "Press Enter for menu..."
DEBUGIN char
RETURN
En la actividad #4, usaremos esta caracterstica para cambiar el nmero de registros que
el programa guarda a 1000 con Records DATA (1000). 11
En este ejemplo, si esa condicin es verdad, el programa termina aqu. La siguiente vez
que presione y libere su botn Reset, value ser impar, la condicin ser falsa y el
bloque de cdigo no detendr el programa antes de que alcance la Rutina Principal. Si el
botn Reset es presionado y liberado nuevamente, el bloque de cdigo detender el
Pgina 220 Sensores Inteligentes y sus Aplicaciones
IF value // 2 = 0 THEN
FOR char = 15 TO 0
DEBUG CLS, "Datalogging starts", CR,
"in ", DEC2 char, " seconds",
CR, CR,
"Press/release Reset", CR,
"for menu..."
FREQOUT 4, 50, 3750
PAUSE 950
NEXT
GOTO Record_Data
ENDIF
'{$STAMP BS2}
'{$PBASIC 2.5}
Reset DATA 0
Records DATA (10)
RecordsEnd DATA
IF value // 2 = 0 THEN
FOR char = 15 TO 0
DEBUG CLS, "Datalogging starts", CR,
"in ", DEC2 char, " seconds",
CR, CR,
"Press/release Reset", CR,
"for menu..."
FREQOUT 4, 50, 3750
PAUSE 950
NEXT
GOTO Record_Data
ENDIF
DO
Pgina 222 Sensores Inteligentes y sus Aplicaciones
DEBUG CLS,
"Press/Release Reset", CR,
"to arm datalogger ", CR, CR,
" - or - ", CR, CR,
"Type C, R or D", CR,
"C - Clear records", CR,
"R - Record records", CR,
"D - Display records", CR,
">"
DEBUGIN char
DEBUG CR
SELECT char
CASE "C", "c"
GOSUB Clear_Data
CASE "R", "r"
GOSUB Record_Data
CASE "D", "d"
GOSUB Display_Data
CASE ELSE
DEBUG CR, "Not a valid entry.",
CR, "Try again."
PAUSE 1500
ENDSELECT
LOOP
Clear_Data:
FOR eeIndex = Records TO RecordsEnd
WRITE eeIndex, 100
NEXT
DEBUG CR, "Records cleared."
PAUSE 1000
RETURN
Record_Data:
DEBUG CR, "Enter valores from -100 to 100", CR
FOR eeIndex = Records TO RecordsEnd
DEBUG "Record ", DEC eeIndex, " >"
DEBUGIN SDEC value
value = value + 100
WRITE eeIndex, value
NEXT
DEBUG CR, "End of records.",
CR, "Press Enter for menu..."
Captulo 6: Ms Proyectos con el Acelermetro Page 223
DEBUGIN char
RETURN
Display_Data:
DEBUG CR, "Index Record",
CR, "----- ------",
CR
FOR eeIndex = Records TO RecordsEnd
READ eeIndex, value
value = value - 100
DEBUG DEC eeIndex, CRSRX, 7, SDEC value, CR
NEXT
DEBUG CR, "Press Enter for menu..."
DEBUGIN char
RETURN
Parts Required
(1) Acelermetro Mems 2125
(2) resistencias 220
(1) piezo parlante
(4) cables conectores
Pgina 224 Sensores Inteligentes y sus Aplicaciones
Circuito
Construya los circuitos de acelermetro y piezo parlante de la Figura 6-3.
Figura 6-3
Acelermetro y Piezo parlante,
esquemtico (Izquierda) y
Diagrama de conexiones (abajo)
Modificaciones al Programa
El siguiente programa ejemplo, DatalogAcceleration.bs2, es una expansin de
EepromDataStorageWithReset.bs2. Ha sido modificado para que pueda iniciar, parar y
reiniciar el registro con el botn Reset de su tarjeta. Puede desconectar la tarjeta de su
computadora para ejecutar el registro de datos, y reconectarla para desplegar las
mediciones en la Terminal de Depuracin. Esta es una caracterstica crucial para tomar
mediciones de campo y luego desplegarlas ms tarde.
Init:
.
.
Captulo 6: Ms Proyectos con el Acelermetro Page 225
.
FOR char = 10 TO 0
.
.
.
FREQOUT 4, 50, 3750
PAUSE 950
NEXT
.
.
.
Record_Data:
PULSIN 6, 1, x
PULSIN 7, 1, y
WRITE eeIndex, x
WRITE eeIndex + 1, y
NEXT
The piezo parlante tambin suena dos veces con un sonido ms alto al principo del
registrado de datos. Una caracterstica importante de este contador regresivo es que puede
Pgina 226 Sensores Inteligentes y sus Aplicaciones
detener el registro antes de que inicie solo con presionar y liberar el botn Reset de su
tarjeta. Para reiniciar el conteo regresivo, solo presione y libere el botn Reset otra vez.
Descarga gratis Este programa est disponible como descarga grtis .bs2 en la pgina del
producto de Sensores Inteligentes y sus Aplicaciones en www.parallax.com.
Este programa toma y guarda 500 mediciones de ejes x y y del acelermetro en alrededor
de 15 segundos. Esto equivale a un nivel de muestreo de cerca de 33 mediciones por
segundo. Esto es bueno para una variedad de mediciones. Para medir procesos ms largos
y lentos, la subrutina Record_Data puede ser alentada con un comando PAUSE.
Cuando est listo para empezar a inclinar the acelermetro por 15 segundos, presione y
libere el botn Reset. El registrador sonar durante la cuenta regresiva de 10 segundos,
luego terminar con 2 pitidos ms altos indicando el inicio del registrador. Har un solo
pitido ms alto cuando haya terminado.
'{$STAMP BS2}
'{$PBASIC 2.5}
Reset DATA 0
Records DATA (1000)
RecordsEnd DATA
Init:
IF value // 2 = 0 THEN
FOR char = 10 TO 0
DEBUG CLS, "Datalogging starts", CR,
"in ", DEC2 char, " seconds",
CR, CR,
"Press/release Reset", CR,
"for menu..."
FREQOUT 4, 50, 3750
PAUSE 950
NEXT
GOSUB Record_Data
ENDIF
DO
DEBUG CLS,
"Press/Release Reset", CR,
Pgina 228 Sensores Inteligentes y sus Aplicaciones
DEBUGIN char
DEBUG CR
SELECT char
CASE "C", "c"
GOSUB Clear_Data
CASE "R", "r"
GOSUB Record_Data
CASE "D", "d"
GOSUB Display_Data
CASE ELSE
DEBUG CR, "Not a valid entry.",
CR, "Try again."
PAUSE 1500
ENDSELECT
LOOP
Clear_Data:
DEBUG CR, "Clearing..."
FOR eeIndex = Records TO RecordsEnd
WRITE eeIndex, 0
NEXT
DEBUG CR, "Records cleared."
PAUSE 1000
RETURN
Record_Data:
PULSIN 6, 1, x
PULSIN 7, 1, y
Captulo 6: Ms Proyectos con el Acelermetro Page 229
WRITE eeIndex, x
WRITE eeIndex + 1, y
NEXT
RETURN
Display_Data:
...con estos 2:
READ eeIndex, value
value = value */ 361
mediciones de aceleracin cubiertas en esta actividad junto con giroscopios que miden la
rotacin del vehculo.
Hardware y Configuracin
La Figura 6-4a muestra un carro RC econmico que puede ser obtenido en muchas
tiendas de pasatiempos y tiendas de electrnica. La Figura 6-4b muestra cmo la tarjeta
fue montada. Se fijaron patitas de goma por debajo de la tarjeta de tal forma que ninguna
de sus conexiones elctricas estuviera en contacto con alguna de las partes metlicas del
carro RC. Otra opcin hubiera sido usar cinta adhesiva de doble cara para fijar la tarjeta
al techo plstico del carro. La tarjeta fue orientada con la tableta hacia el frente del carro.
a. b.
Evite corto circuitos accidentales. Asegrese que su tarjeta est montada en el carro de
tal forma que el metal expuesto debajo de la tarjeta no tenga forma de entrar en contacto
con cualquier parte de metal del carro RC o sus conexiones elctricas.
Como Trabaja
La Figura 6-5 muestra una grfica de las mediciones del eje y del acelermetro al acelerar
el carro hacia enfrente, desacelerado para detenerlo y luego acelerado en reversa. Las
Pgina 232 Sensores Inteligentes y sus Aplicaciones
Accelerate
Decelerate
Backward
RC Car Forw ard and Backw ard
30
20
10
Figura 6-5
gravity/100
0
0 50 100 150 200 250 300 Mediciones del eje y del
-10
Acelermetro en el Carro
-20 RC
-30
Stop
-40
seconds/30
Decelerate
Accelerate
Forward
La razn de que la aceleracin al frente sea negativa es porque el eje de sensado ym esta
apuntando a la parte posterior del carro RC como se muestra en la Figura 6-6. Entonces,
al ir acelerando el carro al frente, la aceleracin es negativa. Cuando un carro reduce su
velocidad, de hecho est acelerando hacia atrs. Esto se muestra en la Figura 6-5.
Primero, el carro acelera al frente, luego aplic frenos y perdi velocidad (desaceler).
La medicin y fue positiva, luego la aceleracin fu negativa. Despus de un breve paro,
el carro aceler en reversa. Note que y es nuevamente positiva. Entonces, cuando pierde
velocidad (desacelera) de su velocidad en reversa para detenerse nuevamente, el carro
esta, en efecto, acelerando al frente, y la medicin y es negativa otra vez.
Captulo 6: Ms Proyectos con el Acelermetro Page 233
Figura 6-6
Aceleracin del Carro RC
vs Ejes de Sensado del
Acelermetro
a. b.
Si est manejando un carro, cuando el carro acelera al frente puede sentir que el asiento le
empuja al frente. Si da una vuelta sbita a la derecha el lado izquierdo del carro le empuja
a la derecha. Eso es porque est acelerando a la derecha al ir dando la vuelta. Esto se
muestra en la Figura 6-7, que ilustra cmo un objeto puede viajar al frente a una
velocidad constante, y para hacer que d vuelta, siempre tiene que ser acelerado hacia el
centro del crculo en el que est viajando.
Figura 6-7
Viajando en un Crculo
La Figura 6-8 muestra una grfica de las mediciones del eje x del acelermetro al
manejar el carro RC en crculos dando vueltas a la izquierda, luego en crculos dando
vueltas a la derecha. Note como la medicin del eje x muestra aceleracin positiva
cuando el carro RC da vuelta a la izquierda, y aceleracin negativa cuando el carro RC
da vuelta a la derecha.
Pgina 234 Sensores Inteligentes y sus Aplicaciones
60
40
20 Figura 6-8
0 Mediciones del
gravity/100
-20
0 100 200 300 400 500 600
Acelermetro en el Carro
-40 RC mientras se maneja
-60 en crculos
-80
-100
seconds/30
Right Turn
Circles
La Figura 6-9 muestra cmo est orientado el eje x del acelermetro y la aceleracin que
mide. Para una vuelta a la izquierda, el carro est acelerando a la izquierda, lo que para el
acelermetro es una medicin de aceleracin en el eje x positiva. Cuando da vuelta a la
derecha, la aceleracin es en la direccin opuesta del eje x positivo, entonces la medicin
en el eje x es negativa.
a. b.
Captulo 6: Ms Proyectos con el Acelermetro Page 235
Procedimiento
El procedimiento para medir y luego graficar la aceleracin del carro RC es como sigue.
Las siguientes instrucciones explican como importar el archivo .txt en Microsoft Excel
2002 y graficarlo. Si est usando un programa de hoja de clculo diferente, las palabras
clave como espacio delimitado, trazado disperso XY pueden darle pistas de cmo hacerlo
en su software de hoja de clculo particular.
Su hoja de clculo debe ser de 3 columnas (ancho) y como 503 renglones (largo)
El siguiente paso, que tambin se ha documentado para Microsoft Excel 2002, es correr
la herramienta de grfico y decirle qu tipo de grfica y cmo quiere que se vea.
Solo partes de cda grfica son relevantes. Considere que los datos que tendrn sentido
para el eje y es la porcin de tiempo en que el carro aceler hacia delante y en reversa. Del
mismo modo, la parte de la grfica que tendr sentido para el eje x es la porcin cuando el
carro estaba dando vuelta.
Descargando la hoja de clculo. Las hojas de clculo de MS Excel usadas para trazar
estas grficas estn disponibles como descarga en la pgina de Sensores Inteligentes y sus
Aplicaciones en www.parallax.com. Descargue la hoja de clculo y examine las ecuaciones
en las columnas junto con las configuraciones para cada trazado.
Por ejemplo, la grfica de aceleracin en la Figura 6-10 muestra un trazado para el carro
RC al acelerar adelante y atrs. (La hoja de clculo fu modificada para que los valores
positivos indiquen aceleracin al frente y los valores negativos indiquen aceleracin atrs
o desaceleracin.) Entonces, esta grfica muestra que el carro aceler hacia adelante a un
promedio de unos 0.16 g por poco menos de 2 seconds. Luego, desaceler a un promedio
Captulo 6: Ms Proyectos con el Acelermetro Page 237
de unos 1.4 g por poco ms de 2 segundos. Entonces descans como por 1 segundo.
Despus, aceler en reversa y desaceler (aceler en reversa) para un segundo paro.
Figura 6-10: Grfica de aceleracin modificada con valores positivos indicando hacia adelante
Seleccionando Datos a Graficar. Haga click derecho sobre la linea en la grfica con el
ttulo "RC Car acceleration for Forward and Backward. Luego seleccione source data y
haga click en la pestaa Series. Note que la serie que est siendo ploteada es de F229 a
F492. Esta es la segunda de 2 pruebas adelante/atrs que fueron ejecutadas durante la
sesin de registro de datos. Lo mismo aplica a las grficas de velocidad y posicin.
Se agreg una columna con una ecuacin la hoja de clculo que calcula el cambio en la
velocidad para cada medicin de aceleracin. La ecuacin para la velocidad en una linea
recta es v = v0 + at. Esto es, la velocidad inicial (v0) ms el producto de la aceleracin
(a) y la duracin de esa aceleracin (t). Agregar una columna a la hoja de clculo que
recalcula la velocidad entre cada medicin de aceleracin hace posible graficar la
velocidad como se muestra en Figura 6-11. Como se esperaba, cuando el carro acelera al
frente, su velocidad se incrementa. Luego, cuando se va deteniendo, su velocidad
decrece. Al volver a acelerar, su velocidad decrece an ms (incrementa en direccin
negativa). Entonces, al irse deteniendo de su movimiento en reversa, su velocidad regresa
a casi cero.
Pgina 238 Sensores Inteligentes y sus Aplicaciones
Figura 6-11: Grfica de velocidad derivada de los datos de posicin inicial y aceleracin
Los clculos para esta grfica se hicieron en la columna F de la hoja de clculo. Si hace
click en la celda F-17 de la hoja de clculo, esta ecuacin debe aparecer en el campo de
funcin:
=F16 + (0.03*9.8*E17/100)
In este caso, F16 is la celda justo arriba F17, y tiene la velocidad previa. Esta velocidad
previa es usada como V0 para el intervalo muestra. 0.03 es t, el tiempo entre muestras, y
9.8 * E17 / 100 toma la medicin E17, que est en centsimas de una g y la convierte a
metros por segundo (m/s2). Al dividir entre 100 se toma el valor de centsimas de g a g y
luego al multiplicar por 9.8 la convierte de g a m/s2. Esto es porque 1 g es
aproximadamente 9.8 m/s2.
Con las columnas en la hoja de clculo para aceleracin y velocidad, ahora es posible
seguir la posicin del carro usando la ecuacin s = s0 + v0t + 1/2 at2. Esto es, la posicin
del carro (s) es igual a la posicin inicial (s0) mas el producto de la velocidad inicial y el
tiempo (v0t), mas el semiproducto de la aceleracin y el cuadrado del tiempo (1/2 at2). La
resultante grfica de posicin mostrada en la Figura 6-12 is sorpresivamente exacta. El
carro de hecho fue hacia al frente unos 3.5 metros antes de parar. Luego, regres y se
par casi a un metro detrs de donde empez.
Captulo 6: Ms Proyectos con el Acelermetro Page 239
=G16+(F16*0.03)+((0.5*E17*9.8/100)*(0.03^2))
G16 es la posicin despus de la muestra previa, que es S0, la posicin inicial. F16*0.03
es v0t, velocidad inicial multiplicada por el tiempo. (0.5*E17*9.8/100)*(0.03^2) es 1/2
at2, donde t es nuevamente 0.03 segundos.
Mientras que esta tcnica es bastante exacta en perodos cortos de tiempo, varias fuentes
de error se arrastran en cada medicin. Las superficies no lisas y la vibracin afectarn
las mediciones de aceleracin. Las ecuaciones asumen que la aceleracin entre cada
medicin es constante, pero en muchos casos la aceleracin cambiar durante el tiempo
entre cada muestra. Adems, cada medicin del acelermetro tiende a ser erronea en un
pequeo porcentaje dada la naturaleza del MX2125. La hoja de datos del MX2125's
(disponible en el sitio - www.memsic.com) explica estos errores, los mayores de ellos son
llamados compensacin de cero y sensitividad. Variarn de un integrado a otro y tambin
son influenciados por la temperatura. Tomar mediciones de precisin con el MX2125
involucra un convertidor A/D, a coprocesador de punto flotante, y datos obtenidos de
pruebas de calibracin. Este procedimiento de calibracin esta fuera del alcance de este
texto. Para averiguar ms acerca de este tema, consulte #AN-00MX-002 Thermal
Acceleromters Temperature Compensation, disponible en el sitio web de Memsic.
Pgina 240 Sensores Inteligentes y sus Aplicaciones
Figura 6-13: Tarjeta BASIC Stamp HomeWork adherida a la patineta del Autor
Captulo 6: Ms Proyectos con el Acelermetro Page 241
3.5
3
f
2.5
1.5
gravity (g)
1 Figura 6-15
0.5 Aceleracin durante un
0
170 190 210 230 250 270
Ollie
-0.5
-1
-1.5
tim e (m s)
a, b c, d e
El primer ollie fue un poco deficiente en los pasos b y c de la Figura 6-14, asi que la parte
posterior de la patineta no se encontr con el pie posterior en el paso e. Note que el
impacto de la tarjeta durante el paso f fu 3.5 g. Los puntos altos y bajos que siguen al
paso fse asemejan a las oscilaciones cuando se toca una campana. Esto es partialmente
debido a la vibration de la patineta y parcialmente debido a la turbulencia del gas dentro
del acelermetro causada por el impacto.
La Figura 6-16 muestra los datos para un ollie un poco mejor. Fue un poco ms alto y el
paso e se hizo con gracia. Note que el paso de a a b es ms pronunciado, y llega a -1.25 g
antes de subir por encima de 1 g para los pasos c y d. Estos valores, que son mayores que
los de la grfica anterior, indican un ollie mayor. Note tambin que el impacto fue menor
a 3 g, porque el patinador no estaba intentando de recuperar con la patineta en su camino
hacia abajo.
Captulo 6: Ms Proyectos con el Acelermetro Page 243
3.5
2.5 f
2
1.5
gravity, (g)
1 Figura 6-16
0.5 Grfica de un Ollie
0
775 795 815 835 855 875
ligeramente mejor
-0.5
-1
-1.5
tim e (ms)
a, b c, d
e
Registrando un Ollie
La Figura 6-17 muestra cmo el eje y de sensado del acelermetro esta alineado para
sensar varias inclinaciones y rotaciones de la patineta. Este es el nico eje que queremos
registrar en el siguiente programa ejemplo.
Figura 6-17
Acelermetros Sensing
Axes on the patineta
PULSIN 7, 1, y
NEXT
Pgina 244 Sensores Inteligentes y sus Aplicaciones
NEXT
'{$STAMP BS2}
'{$PBASIC 2.5}
Reset DATA 0
Records DATA (1000)
RecordsEnd DATA
Init:
IF value // 2 = 0 THEN
FOR char = 10 TO 0
DEBUG CLS, "Datalogging starts", CR,
"in ", DEC2 char, " seconds",
CR, CR,
"Press/release Reset", CR,
"for menu..."
FREQOUT 4, 50, 3750
PAUSE 950
NEXT
GOSUB Record_Data
ENDIF
DO
DEBUG CLS,
"Press/Release Reset", CR,
"to arm datalogger ", CR, CR,
" - or - ", CR, CR,
"Type C, R or D", CR,
"C - Clear records", CR,
"R - Record records", CR,
"D - Display records", CR,
">"
DEBUGIN char
DEBUG CR
SELECT char
CASE "C", "c"
GOSUB Clear_Data
CASE "R", "r"
GOSUB Record_Data
CASE "D", "d"
GOSUB Display_Data
CASE ELSE
DEBUG CR, "Not a valid entry.",
CR, "Try again."
PAUSE 1500
ENDSELECT
LOOP
Clear_Data:
Pgina 246 Sensores Inteligentes y sus Aplicaciones
RETURN
Record_Data:
PULSIN 7, 1, y
NEXT
RETURN
Display_Data:
NEXT
RETURN
No permita que el metal en el lado inferior de su tarjeta entre en contacto con los
rayos. Use un material aislante como plstico, cartn o espuma esd para aislar la parte
inferior de la tarjeta de los rayos.
Pgina 248 Sensores Inteligentes y sus Aplicaciones
Figura 6-18
HomeWork Board con el
acelermetro montada en
una rueda de bicicleta
a. b.
El siguiente programa ejemplo demuestra una forma de resolver este problema con
histresis. Histresis es el proceso de fijar 2 valores de umbral diferentes que deben ser
cruzados antes de que occurra un cambio de estado. En nuestro caso, el cambio de estado
es un incremento en el contador de revoluciones de la rueda. Con histresis, la medicin
debe caer por debajo de un valor de umbral bajo, y luego el programa espera hasta que se
halla levantado hasta por encima de un valor ms alto antes de reconocer un cambio.
Luego, la medicin tiene que ir debajo del valor de umbral bajo nuevamente antes de
reconocer un cambio de estado alto a bajo. Cada vez que el programa reconoce que la
medicin fu menor que el valor bajo y luego arriba del valor alto, incrementa el contador
de revoluciones en 1.
He aqu un cdigo que ejecuta histresis. En el primero de los dos bloques anidados
DO...LOOP, el programa espera hasta que eje y sube por encima de 2650. Luego, el
segundo de los dos comandos anidados DO...LOOP espera hasta que la medicin del eje y
cae por debajo de 2350. Solo entonces sumar un 1 a la variable counter. Luego de
esto, el programa har que suene el piezo parlante y entonces repite el DO...LOOP exterior.
En este punto, el programa regresa a esperar la medicin del eje y, que fue menor que
Captulo 6: Ms Proyectos con el Acelermetro Page 249
2350 para levantarse nuevamente por encima de 2650 otra vez. Considere que no es
necesariamente la forma optima de medir revoluciones de rueda. Eso lo determinar
usted.
DO
counter = counter + 1
FREQOUT 4, 200, 3750
LOOP
Banda muerta (Deadband): El rango entre 2350 y 2650 en el bloque de cdigo anterior es
referido como banda muerta.
'{$STAMP BS2}
'{$PBASIC 2.5}
x VAR Word
y VAR Word
counter VAR Word
DEBUG CLS
DO
PULSIN 7, 1, y
ciclo
counter = counter + 1
FREQOUT 4, 200, 3750
LOOP
La Figura 6-19 es tan solo una grfica de dos velocidades diferentes. Es cierto, el cdigo
de histresis de TestWheelCounter.bs2 trabaja bajo ambas de estas condiciones, pero
trabaja bajo TODAS las condiciones? Con esta clase de preguntas, los ingenieros
pueden aplicar algunas ecuaciones para predecir las aceleraciones bajo varias condiciones
extremas que ellos anticipan. Un software de simulacin podra tambien ser usado para
verificar los imprevistos. An cuando esta clase de especializacin est disponible, el
producto an tiene que ser probado en una variedad de conditions "de la vida real",
especialmente para eliminar la posibilidad de suposiciones incorrectas de parte de los
ingenieros. Es aqu donde el registro de datos regresa a la escena. El prototipo real an
tiene que ser llevado a travs de las diversas condiciones que pudiera experimentar en la
Captulo 6: Ms Proyectos con el Acelermetro Page 251
bicicleta de cualquier persona antes de que sea seguro hacer la inversin en cajas
plsticas y un diseo electrnico ms refinado que presente partes de bajo costo,
produccin en masa y costos de inventarios.
1.5
0.5
gravity, g
0
0 100 200 300 400 500 600 700 800 900 1000
-0.5
-1
-1.5
-2
tim e, m s
Accelerometer
x-axis
Con esto en mente, regresamos a ejecutar estudios de aceleracin, bajo tantas situaciones
diferentes como sea posible. He aqu el programa que fue usado para registrar los datos
para la grfica en la Figura 6-19. Note que est registrando valores de tamao de una
palabra para las mediciones de los dos ejes x y y. La hoja de clculo ha tomado el trabajo
de cambiar las mediciones primarias del acelermetro PULSIN a mediciones de gravedad.
'{$STAMP BS2}
'{$PBASIC 2.5}
Reset DATA 0
Records DATA (1000)
RecordsEnd DATA
Init:
IF value // 2 = 0 THEN
FOR char = 10 TO 0
DEBUG CLS, "Datalogging starts", CR,
"in ", DEC2 char, " seconds",
CR, CR,
"Press/release Reset", CR,
"for menu..."
FREQOUT 4, 50, 3750
PAUSE 950
NEXT
GOSUB Record_Data
ENDIF
DO
DEBUG CLS,
Captulo 6: Ms Proyectos con el Acelermetro Page 253
DEBUGIN char
DEBUG CR
SELECT char
CASE "C", "c"
GOSUB Clear_Data
CASE "R", "r"
GOSUB Record_Data
CASE "D", "d"
GOSUB Display_Data
CASE ELSE
DEBUG CR, "Not a valid entry.",
CR, "Try again."
PAUSE 1500
ENDSELECT
LOOP
Clear_Data:
DEBUG CR, "Clearing..."
FOR eeIndex = Records TO RecordsEnd
WRITE eeIndex, 0
NEXT
DEBUG CR, "Records cleared."
PAUSE 1000
RETURN
Record_Data:
PULSIN 6, 1, x
Pgina 254 Sensores Inteligentes y sus Aplicaciones
PULSIN 7, 1, y
NEXT
RETURN
Display_Data:
Su Turno
Otra cosa por examinar es como se ejecutan las mediciones de rotacin en el plano
vertical bajo las diversas condiciones de rueda de bicicleta.
Hay un comportamiento del ngulo medicin para el cual la histresis pueda ser
aplicada bajo todas las condiciones de manejo?
Captulo 6: Ms Proyectos con el Acelermetro Page 255
RESUMEN
Este captulo present una variedad de aplicaciones del acelermetro y de las tcnicas de
registro de datos que pueden ser usadas para estudiar las mediciones del acelermetro en
varias condiciones, y en algunos casos, para refinar sus programas. Cuando se observa la
cima de un objeto, las mediciones de rotacin en un plano vertical pueden ser usadas con
la distancia al objeto y algo de trigonometra para determinar la altura del objeto.
Se presentaron directivas DATA con nombres Smbolo opcionales como una forma de
simplificar el mantener los registros en los programas de registro de datos. Pueden ser
usadas para definir rangos de Memoria de programacin EEPROM no usada. Puesto que
los nombres Smbolo guardan la direccin de inicio de las directives DATA, son tiles en
ciclos FOR...NEXT que ejecutan operationes READ/WRITE sobre el rango de los bytes
EEPROM definidos por las directives DATA de inicio y fin.
Tambin se present una tcnica para usar una directiva DATA para apartar un byte para
establecer el modo del programa. Cada vez que el programa inicia, una rutina de
inicializacin lee el byte, le agrega un uno y reemplaza el valor viejo en la EEPROM con
el valor modificado. Cada vez que el programa es reiniciado presionando y liberando el
botn Reset de la tarjeta, el programa puede usar el nuevo valor en EEPROM para
seleccionar entre diferentes modos. Para cambiar el estado on y off de una caracterstica
en el programa, se us una lnea IF...THEN que examina si el residuo del valor dividido
entre 2 es cero. Esto hace posible iniciar y parar el registro de datos sin estar conectado a
la computadora.
Preguntas
1. Cules son las 3 piezas de informacin que necesita para medir la altura de un
edificio a distancia?
Pgina 256 Sensores Inteligentes y sus Aplicaciones
Ejercicios
1. La cima de un edificio se divis a 75 desde un punto de observacin a 15 m del
edificio y a 1 m a partir del piso. Cul es la altura del edificio?
2. Escriba un par de directivas DATA que reserve 1501 bytes. Use nombres smbolo.
3. Escriba un ciclo FOR...NEXT que recupere 751 palabras. Asuma que sus nombres
Simbolo de la directiva DATA son StartData y EndData.
4. Modifique un bloque de cdigo en DatalogAcceleration.bs2 para que su cuenta
regresiva sea 5 segundos.
Proyectos
1. Use Google para encontrar el valor de la pendiente por encima de la cual la nieve
fcilmente forma una avalancha. Haga un prototipo de un dispositivo que le
advierta si una pendiente es demasiado pronunciada. Este dispositivo puede ser
usado para reemplazar un dispositivo mecnico comnmente usado en areas de
ski.
2. Disee un prototipo de pedmetro (contador de pasos).
Captulo 6: Ms Proyectos con el Acelermetro Page 257
Soluciones
Q1. (1) La altura a partir de la cual la medicin es tomada, (2) la distancia a partir de
la base del edificio, y (3) el ngulo a partir de la horizontal al cual se divisa la
cima del edificio.
Q2. DATA (100) reserva 100 bytes en EEPROM; mientras que, DATA 20
(100)guarda el valor 20 en cada uno de los 100 bytes.
Q3. Los comandos WRITE guardan valores byte. Para arreglar este comando, tendra
que insertar el modificador Word antes del valor 1000. Considere que tendr que
incrementar eeIndex en 2 antes de guardar el siguiente valor.
Q4. Necesitara: Reset DATA 0; value VAR Word; READ Reset, value, value
= value + 1; WRITE Reset, value
Q5. Le permite al usuario saber en qu modo esta operando el dispositivo emitiendo
chirridos (tonos de cierta duracin y frecuencia). El conteo antes de registrar
datos involucra 11 tonos de 50 ms y 3.75 kHz seguidos por 2 tonos ms
pronunciados y agudos (75 ms y 4 kHz). Despus de registrar datos, el piezo
parlante emite un chirrido ms largo (200 ms y 4 kHz) para decirle al usuario
que el registrado de datos esta completo.
Q6. Incrementa el valor entre parntesis que sigue la palabra clave DATA.
Q7. Si est viajando hacia al frente y desacelera es lo mismo que acelerar en reversa,
que es acelerar en la direccin opuesta a adelante.
Q8. Hacia el centro de un crculo.
Q9. Esta es una comparacin de 2 programas ejemplo, DatalogAcceleration.bs2
contra DatalogYaxisUnscaled.bs2. DatalogAcceleration.bs2 guarda valores x y
y que son proporcionalmente divididos a 0 a 200 con 100 como 0 g.
DatalogYaxisUnscaled.bs2 no solo guarda la version sin escalar, no aplica
ninguna compensacin tampoco. Es solo la medicin primaria del eje y, que va
de 1875 a 3125. En ambos programas se requiere un valor de una palabra para
guardar cada medicin. En DatalogAcceleration.bs2, es una palabra (2 bytes) la
que guarda las mediciones de los ejes x y y escaladas y compensadas. En
DatalogYaxisUnscaled.bs2, cada valor del eje y toma una palabra entera. An
cuando el tiempo que toma guarder los bytes es el mismo en ambos programas,
se salva algo de tiempo entre mediciones con DatalogYaxisUnscaled.bs2 porque
no toma ningn tiempo para un comando PULSIN que hubiera de otra manera
leido el eje x.
E1. Altura del objeto = opuesto + altura del acelermetro
= (adyacente tan (75)) m + 1 m
= (15 3.73) m + 1 m
Pgina 258 Sensores Inteligentes y sus Aplicaciones
= 56.98 m
E2.
StartSymbol DATA (1500)
EndSymbol DATA
E3.
' Asume que StartData y EndData han sido definidas correctamente
FOR counter = StartData TO EndData
READ counter, dataItem
DEBUG dataItem ' Formato no especificado, no se usa algo como DEC.
' Si DEC dataItem was used, aun estaria correcto
' porque es lo que los textos ejemplos usaron.
NEXT
E4.
FOR char = 4 TO 0
DEBUG CLS, "Datalogging starts", CR,
"in ", DEC2 char, " seconds",
CR, CR,
"Press/release Reset", CR,
"for menu..."
FREQOUT 4, 50, 3750
PAUSE 950
NEXT
P1. Palabras clave usadas: avalanche prediction slope
Artcule de ayuda resultante usado: http://en.wikipedia.org/wiki/Avalanche
Information clave: La seccin Terrain indica que una inclinacin abajo de 25 o
ariba 60 presenta bajo riesgo y que el riesgo ms alto est en pendientes entre
35 a 45.
3900
3700
3500
3300
x-axis ------
3100
2900
2700
2500
1 16 31 46 61 76 91 106 121 136 151 166 181 196 211 226 241
Pgina 260 Sensores Inteligentes y sus Aplicaciones
' IMPORTANTE, siga las instrucciones para poder colocar sus propios
' valores. Las encontrar en la seccin Soluciones del Captulo 6.
' Examine la solucion del Proyecto 2 para informacin de como
' determinar sus propias constantes StepLow y StepHigh.
y VAR Word
yOld VAR Word
stepCnt VAR Word
yOld = 3300
DO
PULSIN 7, 1, y
IF (y <= 2900 y yOld >= 3300) OR (y >= 3300 y yOld <= 2900) THEN
yOld = y
stepCnt = stepCnt + 1
ENDIF
LOOP
Captulo 7: Grficos de Barra en LCD para Distancias e inclinaciones Page 261
El lugar donde puede definir y guardar una librera de mas de 8 definiciones de caracteres
personalizados es en una parte de la memoria EEPROM BASIC Stamp que no se use
para almacenaje de programa. Puesto que los programas PBASIC raramente llenan toda
la memoria EEPROM, tpicamente hay espacio para todas las definiciones de caracteres
personalizados que una aplicacin pueda necesitar.
Una tcnica poderosa es usar solo 1 de los 8 espacios para caracteres personalizados de la
LCD para desplegar una secuencia de definiciones de caracteres personalizados que est
guardada en la EEPROM. Esto es especialmente til para animacin, pero tambin es
importante para desplegar grficas de barra. Esta actividad da un ejemplo de animacin.
como un punto de referencia para leer los bytes de la EEPROM. Despus de leer cada
byte de la EEPROM, la subrutina lo manda a la LCD serial.
.
.
.
Char4 DATA %11111, ' * * * * *
%00011, ' 0 0 0 * *
%11011, ' * * 0 * *
%11011, ' * * 0 * *
%11111, ' * * * * *
%11111, ' * * * * *
%11111, ' * * * * *
%11111 ' * * * * *
.
.
.
Char9 DATA %11111, ' * * * * *
%11111, ' * * * * *
%11111, ' * * * * *
%11111, ' * * * * *
%11011, ' * * 0 * *
%11011, ' * * 0 * *
%11000, ' * * 0 0 0
%11111 ' * * * * *
.
.
.
El siguiente programa ejemplo obtiene las definiciones de los caracteres personalizados
de la EEPROM y las manda a la LCD serial usando una subrutina llamada
Def_Cust_Char. Lo que tiene que hacer antes de llamar a la subrutina es fijar el valor
de 2 variables: custChar y charBase. custChar es para seleccionar qu caracter
personalizado se va a definir (0, 1, 2...7). charBase es usada para decirle a la subrutina
dnde buscar el inicio de la definicin del caracter en la EEPROM. Por ejemplo, use
estos 3 comandos para transferir la definicin Char9 en la EEPROM del BASIC Stamp al
caracter personalizado 5 en la memoria de caracteres de la LCD Serial Parallax:
custChar = 5
charBase = Char9
GOSUB Def_Cust_Char
DO
counter = counter + 1
counter = counter // 3
Puesto que el siguiente programa ejemplo est slo animando un caracter, puede usarse
un ciclo FOR...NEXT para accesar cada una de las directivas DATA del caracter
personalizado. La direccin de inicio de cada directiva DATA ser 8 bytes despus de la
siguiente. Se puede actualizar la LCD con cada definicin de caracter en la secuencia de
Pgina 264 Sensores Inteligentes y sus Aplicaciones
directivas DATA con un ciclo FOR...NEXT que d pasos de 8, que comience en Char0 y
termine en Char14.
DO
PAUSE 1000
LOOP
Descarga gratis Este programa est disponible como descarga grtis .bs2 en la pgina del
producto de Sensores Inteligentes y sus Aplicaciones en www.parallax.com.
%11111 ' * * * * *
%11011, ' * * 0 * *
%11011, ' * * 0 * *
%11111, ' * * * * *
%11111 ' * * * * *
%11111, ' * * * * *
%11111, ' * * * * *
%11111, ' * * * * *
%11111, ' * * * * *
%11111, ' * * * * *
%11100, ' * * * 0 0
%11111 ' * * * * *
' Esta subrutina define uno de los 8 caracteres personalizados de LCD. Hace la
' variable charBase igual a 1 de los nombres simbolo que precede la directiva
' DATA del character personalizado. Establece la variable custChar en un valor
' entre 0 y 7 para escoger uno de los 8 caracteres personalizados de la LCD.
Def_Cust_Char:
SEROUT LcdPin, T9600, ' Define caracter personalizado
[Define + custChar]
FOR index = 0 TO 7 ' 7 bytes, define 7 lineas punteadas
READ charBase + index, dotLine ' Obtiene byte para linea punteada
SEROUT LcdPin, T9600, [dotLine] ' Lo manda a la LCD
NEXT
RETURN
Disp_Cust_Char:
SEROUT LcdPin, T9600, ' Escribe caracter personalizado
Captulo 7: Grficos de Barra en LCD para Distancias e inclinaciones Page 269
RETURN
Despus de que la LCD recibe un valor entre 248 y 255 espera recibir 8 bytes mas, cada
uno conteniendo una de las 8 lneas punteadas que hacen la definicin de un caracter
personalizado. El FOR...NEXT en Def_Cust_Char lee cada byte en la EEPROM,
empezando en charBase. Considere que la rutina principal establece a charBase en el
nombre Smbolo de una de las directives DATA, que es una constante igual a la direccin
de inicio de los datos. READ charBase + index, dotLine lee un byte de la definicin
de caracter y lo guarda en la variable dotLine. La primera vez al pasar por el ciclo
FOR...NEXT, index es 0, entonces el primer byte en la definicin de caracter es trada de la
EEPROM y guardada en la variable dotLine. Luego, el valor guardado por dotLine es
enviado a la LCD con el comando SEROUT LcdPin, T9600, [dotLine]. La segunda
vez el pasar por el ciclo FOR...NEXT, index es ahora 1, y entonces el segundo byte es
ledo de la EEPROM y enviado a la LCD. La tercera vez, el tercer byte en la definicin
de caracter es trada y enviada, etc., hasta el octavo byte cuando index llega a 7.
cursor, que coloca el cursor donde el caracter personalizado va a ser escrito. line
contiene ya sea Line0 o Line1. Line0 es el valor constante 128, que apunta a caracter 0
Lnea 0. Line1 es el valor constante 148, que apunta a caracter 0 Lnea 1. Al sumar
cursor (un valor entre 0 y 15) le da control sobre en qu lnea y caracter es colocado el
cursor. La variable custChar, que contiene un valor entre 0 y 7, causar que el caracter
personalizado sea escrito donde el cursor ha sido puesto. El segundo valor que enva el
comando SEROUT es custChar, que contiene un valor entre 0 y 7. Este valor hace que la
LCD escriba un caracter personalizado donde el cursor fue puesto.
Disp_Cust_Char:
El DO...LOOP principal esta solo actualizando la Lnea 0, caracter 8, pero las otras 3
instancias del caracter personalizado 5 tambin estn cambiando! Porqu? Cuando la
definicin del caracter personalizado 5 cambia, todos los caracteres personalizados 5s
en la pantalla son automaticamente actualizados.
Captulo 7: Grficos de Barra en LCD para Distancias e inclinaciones Page 271
En algunos casos, esto es deseable. Por ejemplo, puede lograr algunos efectos visuales
interesantes al hacer 32 copias de un caracter personalizado y luego repetidamente
actualizar la definicin del caracter. Para situaciones donde desee desplegar ms de un
caracter personalizado al mismo tiempo, simplemente use ms de un caracter
personalizado. En otros casos, cuando quiera que la LCD despliegue ms de un caracter
personalizado diferente al mismo tiempo, use diferentes definiciones de caracteres
personalizados.
Partes y Equipo
Vea el Captulo #2, actividad #4.
Transmit
Windowpane
Receive
Windowpane
LCD
Bar Displays
El siguiente programa ejemplo usa las 2 reglas para desplegar caracteres personalizados
que discutimos en la seccin Su Turno de la actividad previa. Dependiendo del valor que
es desplegado, el programa guarda una de las 5 diferentes definiciones de caracter en el
caracter personalizado 2. Sin embargo, a diferencia de CustomEepromCharacters.bs2,
este programa no guarda definiciones de caracteres personalizados en la EEPROM del
BASIC Stamp. En vez de ello, las definiciones son derivadas durante la ejecucin del
programa, segn el valor de la variable que est siendo expresada por la grfica de barra.
La Figura 7-2 muestra cmo las definiciones van de vaco (Char0) a 4 columnas
verticales negras (Char4). Estas definiciones sern guardadas en la EEPROM y usadas
una por una para redefinir el caracter 2, puesto que solo una es necesaria en un momento
Captulo 7: Grficos de Barra en LCD para Distancias e inclinaciones Page 273
dado. Pero el programa puede necesitar desplegar copias mltiples de un caracter todo de
negro para nmeros mayores a 10; para esto se usa el caracter personalizado 3.
Figura 7-2
Libreria de Definiciones
para el caracter
personalizado 2
DEBUG ">"
DEBUGIN DEC value ' Valor en ventana de Transmision
GOSUB Bar_Graph ' Despliega como grafica de barra
Bar_Graph:
RETURN
Def_Horiz_Bar_Char:
RETURN
Pgina 276 Sensores Inteligentes y sus Aplicaciones
Disp_Cust_Char:
DEBUG ">"
DEBUGIN DEC value ' Valor en ventana de Transmision
GOSUB Bar_Graph ' Despliega como grafica de barra
Bar_Graph:
Def_Horiz_Bar_Char:
RETURN
RETURN
Siga las instrucciones para conectar el sensor Ping))) y la LCD Serial a su tarjeta
(Captulo 2, actividad #4, pgina 51).
Pgina 280 Sensores Inteligentes y sus Aplicaciones
PULSOUT 15, 5
PULSIN 15, 1, time
value = cmDistance
PAUSE 100
Tambin puede reemplazar el comando DEBUG con un comando SEROUT que despliegue
las mediciones en la lnea inferior. Recuerde que tendr que enviar a la LCD un cdigo
de control para colocar el cursor en la Lnea 1 caracter-0, en vez de usar HOME.
Intntelo!
Captulo 7: Grficos de Barra en LCD para Distancias e inclinaciones Page 281
Partes y Equipo
Use el circuito del Captulo 3, actividad #2, page 71.
Figura 7-3
Valores de grfica de
barra vertical con
Caracteres
Las definiciones de caracteres personalizados (Figura 7-3) siguen una secuencia que se
relaciona directamente a los valores que representan, entonces las definiciones pueden ser
calculadas segn se requiera en vez de ser guardadas en la EEPROM. Puesto que cada
definicin de caracter personalizado toma 8 bytes, eliminar 16 definiciones salvar 128
bytes de memoria de programacin.
Def_Vert_Bar_Char:
FOR index = 0 TO 7
IF rowMap.LOWBIT(index) = 1 THEN
SEROUT LcdPin, T9600, [%11111]
ELSE
SEROUT LcdPin, T9600, [%00000]
ENDIF
NEXT
RETURN
El comando rowMap = %1111111100000000 >> (value & %1111) recorre los ocho
bits 1 de %1111111100000000 hacia la derecha tantos lugares como lo indique la
variable value. El trmino (value & %1111) es llamado una mascara de bits y hace
posible usar valores de 16 a 31 para darle los mismos resultados que de 0 a 15. Si value
es 3, el comando rowMap = %1111111100000000 >> (value & %1111) guarda
%0001111111100000 en la variable rowMap. Puesto que rowMap es una variable de solo
un byte, solo guarda los 8 bits ms bajos del trmino, o sea %11100000. Comparelo con
el caracter personalizado para 3 en la Figura 7-3. Si value es 4, el resultado del byte
bajo de la variable rowMap es %11110000. Ahora, observe el caracter 4 en la Figura 7-3.
Intntelo para cada valor (0 al 15) y ver que el patron de bits en el byte rowMap coincide
con el patrn de los renglones con pixeles negros en la Figura 7-3.
Definir un caracter personalizado involucra enviar 8 bytes. Los valores binarios en cada
byte sucesivo define cada uno de los 8 renglones en el caracter, de arriba a abajo. El ciclo
FOR...NEXT en la subrutina Def_Vert_Bar_Char tiene un bloque de cdigo IF...THEN que
usa el operator.LOWBIT para revisar cada bit en la variable rowMap y lo usa para definir
un rengln de 5 pixeles blancos o negros en el caracter personalizado. Digamos que
value es 3, entonces rowMap es %11100000. La primera vez en el ciclo FOR...NEXT,
index es 0 y entonces la lnea IF...THEN examina rowMap.LOWBIT(0), el bit ms a la
derecha. Puesto que es 0, la lnea IF...THEN manda un byte que contiene %00000 a la
LCD, que hace que todos los pixeles sean blancos. La sexta vez en el ciclo FOR...NEXT,
rowMap.LOWBIT(5) = 1, entonces la lnea IF...THEN manda un comando SEROUT con un
byte conteniendo %11111. Entonces, los renglones sexto, sptimo y octavo sern negros,
que resulta en el caracter mostrado en la Figura 7-3.
SEROUT 14, 84, [%11111] de hecho manda el byte %00011111, y los 5 bits ms
bajos son los que usa la LCD para definir sus renglones de 5 pixeles de ancho.
Captulo 7: Grficos de Barra en LCD para Distancias e inclinaciones Page 283
Def_Vert_Bar_Char:
' Inicia definicion de caracter personalizado
SEROUT LcdPin, T9600,
[Define + custChar]
Disp_Cust_Char:
SEROUT LcdPin, T9600, ' Escribe caracter personalizado
[line + cursor, custChar]
RETURN
Modificar el programa para mostrar los caracteres en esta forma involucra solo unos
pocos cambios a la Rutina Principal. Primero, los argumentos StartValue y EndValue
del ciclo FOR...NEXT tienen que ser cambiados de (0 a 15) a (1 a 31). Tambin, un
comando SEROUT tiene que ser agregado para sobreescribir los caracteres personalizados
previos con espacios en blanco. Luego, puede ser agregado un bloque de cdigo
IF...THEN...ELSE que posicione el cursor en la Linea 0 o la Linea 1. Debe colocar el
cursor en la Linea 0 si value es mayor a 16, o en la lnea inferior si es menor o igual a 16.
FOR value = 1 TO 31
SEROUT 14, 84, [Line0 + cursor, " ",
Line1 + cursor, " "]
IF value <= 16 THEN
Pgina 286 Sensores Inteligentes y sus Aplicaciones
line = Line1
ELSE
line = Line0
ENDIF
DEBUG ? value
GOSUB Def_Vert_Bar_Char
GOSUB Disp_Cust_Char
PAUSE 50
NEXT
DEBUG CR, CR
PAUSE 500
LOOP
Puede tambin anidar el ciclo FOR value = 1 TO 31...NEXT dentro de un ciclo FOR
cursor = 0 TO 15...NEXT y causar que la grfica de barra se mueva a travs de la
pantalla cada vez que se repite. Controlando asi la compensacin del cursor, la grfica de
barra puede desplegar 2 ejes con valores verticales de 1 a 31 y valores horizontales de 0 a
15.
Intntelo!
Figura 7-4
Puntos trazados en la
grfica de barra de dos
ejes
Si bien las caractersticas mostradas en la Figura 7-4 hacen que la pantalla est un poco
menos cifrada, el programa tiene que tomar muchas ms decisiones. En el siguiente
programa ejemplo, las subrutinas Bar_Graph_H_V y Horizontal_Placement se encarga
de todas las decisiones que apoyan estas caractersticas adicionales.
Descarga gratis Este programa est disponible como descarga grtis .bs2 en la pgina del
producto de Sensores Inteligentes y sus Aplicaciones en www.parallax.com.
Intente los valores de la Figura 7-4 y verifique que concuerdan con las pantallas.
Pruebe los valores horizontales 0, 8, y 16 para varios valores verticales.
Pruebe los valores verticales 1, 16, y 31 para varios valores horizontales.
DO
FOR cursor = 0 TO 16
FOR value = 1 TO 31
GOSUB Bar_Graph_H_V
PAUSE 200
NEXT
SEROUT 14, 84, [LcdCls]
PAUSE 500
NEXT
LOOP
Bar_Graph_H_V:
GOSUB Def_Vert_Bar_Char
line = Line0
GOSUB Horizontal_Placement
ENDIF
RETURN
Def_Vert_Bar_Char:
Horizontal_Placement:
Captulo 7: Grficos de Barra en LCD para Distancias e inclinaciones Page 291
RETURN
Disp_Cust_Char:
La escala horizontal tambin tiene que ser invertida. La Figura 7-5 muestra cmo los ejes
x y y del acelermetro se relacionan con los ejes horizontal y vertical de la LCD. Note
que la direccin positiva del eje y apunta a la direccin contraria en la que los valores del
eje horizontal de la LCD se incrementan. Cuando el valor escalado del eje y sea 16, la
pantalla debiera mostrar 0 y cuando el valor escalado del eje y sea 0, la pantalla debiera
mostrar 16. La manera de corregir esto es usar un comando que reste a 16 el valor
escalado del eje y. Esencialmente, esto es cursor = 16 (valor escalado de y).
Pgina 292 Sensores Inteligentes y sus Aplicaciones
Obtener las constantes de escalamiento ** se dejan como ejercicios al final del ejercicio.
PULSIN 6, 1, x
PULSIN 7, 1, y
RESUMEN
La mediciones de distancia e inclinacin se prestan para desplegarlas en grficas de barra.
La mayora de las grficas de barra pueden hacerse usando solo uno o dos de los 8
espacios de memoria para caracteres personalizados de la LCD Serial Parallax. Las
definiciones de caracter personalizado para las grficas de barra pueden ser guardadas en
la EEPROM del BASIC Stamp, o definidas por cdigo que relacione el valor que est
siendo graficado al nmero de lineas o columnas de pixeles que necesitan ser
desplegados.
Desplegar grficas de barra es tpicamente mas eficiente con la memoria si los caracteres
pueden ser generados en base al valor. Cuando la grfica de barra es horizontal, un
comando LOOKUP es til para guardar valores binarios que correspondan con el nmero
de columnas que tendrn pixeles negros en un caracter personalizado determinado. Para
grficas verticales, los bits pueden ser cambiados en una variable. En cualquier caso, las
subrutinas pueden examinar los bits en una variable, luego oscurecer pixeles en un cierto
nmero of renglones o columnas en un caracter.
Preguntas
1. Qu parte de las directivas DATA hace posible encontrar la direccin de inicio de
una definicin de caracter?
2. Cmo le dicen los programas en este captulo a la subrutina Def_Cust_Char
qu caracter definir y dnde encontrar la definicin de caracter? Cmo
especifica una posicin de caracter para la subrutina Disp_Cust_Char? Si
quiere desplegar 2 caracteres personalizados diferentes al mismo tiempo, puede
usar la misma definicin de caracter personalizado? Porqu?
3. Cmo guarda informacin HorizBarGraph.bs2 acerca de qu columnas en un
caracter personalizado deben tener pixeles blancos o negros?
Captulo 7: Grficos de Barra en LCD para Distancias e inclinaciones Page 295
Ejercicios
1. Escriba una directiva DATA para caracter personalizado para un caracter con
todas las lneas horizontales.
2. Derive el valor 1625 en el comando value = (x MIN 1875 MAX 3125) -
1875 ** 1625 + 1.
Proyectos
1. Modifique PingBarGraph.bs2 para que despliegue la medicin de distancia en
centmetros en la lnea inferior.
2. Modifique TwoAxisBarTiltDisplay.bs2 para que despliegue barras que
correspondan con el ngulo de inclinacin. Recuerde que ese ngulo es una
funcin de la gravedad sensada por cada uno de los ejes del acelermetro. Tip:
Use el cdigo de ejemplo del Captulo 3, actividad #6 para clculos del ngulo
de inclinacin.
Pgina 296 Sensores Inteligentes y sus Aplicaciones
Soluciones
Q1. El nombre Smbolo.
Q2. Los programas tienen que establecer 2 variables antes de hacer la llamada a
la subrutina Def_Cust_Char: custChar y charBase. La variable
custChar debe guardar el valor que el programa usar para decirle a la
LCD que despliegue el caracter personalizado. Las definiciones de
caracteres personalizados de la LCD pueden ser un valor de 0 a 7 y
entonces custChar tiene que caer en ese rango. El nombre Smbolo en la
directiva DATA del caracter personalizado tiene que ser guardada en la
variable charBase. Puesto que variable = SymbolName guarda la
direccin EEPROM del primer byte en una directiva DATA definida por
SymbolName como variable, hace posible pasar la direccin de inicio de una
directiva DATA de un caracter personalizado a la subrutina
Def_Cust_Char.
Q3. Establece el valor de las variables cursor y line antes de llamar a la
subrutina. The rutina Disp_Cust_Char posicionara al cursor usando estas
2 variables antes de decirle a la LCD que despliegue el caracter
personalizado en esa posicin.
Q4. No, porque todas las instancias del mismo caracter personalizado
actualmente desplegado por la LCD ser actualizado tan pronto como la
definicin de caracter sea actualizada.
Q5. La variable dotLine termina guardando uno de 5 valores: %00000,
%10000, %11000, %11100, o %11110. Cada dgito corresponde a una de
las 5 columnas verticales de pixeles en un caracter personalizado. Si el
valor es 1, los pixeles en esa columna sern puestos en negro. Si es 0, sern
dejados en blanco.
Q6. Cada uno de los 8 renglones en la definicin del caracter personalizado
tendr el mismo patrn, entonces el programa solo tiene que enviar el
mismo byte de rengln 8 veces para definir cada rengln del caracter
personalizado.
Q7. Cuando la condicin IFTHEN evala a 1, los pixeles para el rengln se
establecen en negro con SEROUT 14, 84, [%11111]; de otra forma, se
establecen en blanco con SEROUT 14, 84, [%00000].
E1. Ejemplo de solucin:
Captulo 7: Grficos de Barra en LCD para Distancias e inclinaciones Page 297
PULSOUT 15, 5
PULSIN 15, 1, time
value = cmDistance
PAUSE 100
P2. Solution Ejemplo Vea los comentarios en la seccin Titulo par aver cmo fue
construdo este programa a partir de programas ejemplo previos y clculos
explicados en el texto:
PULSIN 6, 1, x
PULSIN 7, 1, y
side = x
GOSUB Arcsine
' Int[65536 * (31 / (181 - 1))] = 11286
value = angle + 90 ** 11286 + 1
side = y
GOSUB Arcsine
' Int[65536 * (17 / (181 - 1))] = 6189
cursor = 16 - (angle + 90 ** 6189)
Bar_Graph_H_V:
ENDIF
RETURN
Def_Vert_Bar_Char:
Horizontal_Placement:
RETURN
Disp_Cust_Char:
Note que los cdigos de control (los 32 caracteres ASCII ms bajos) no tienen smbolos
de pantalla estandarizados. Los caracteres listados para ellos son solo nombres usados en
referencia a estos cdigos. Por ejemplo, para mover el cursor al principio de la siguiente
lnea de una impresora o terminal frecuentemente se requiere enviar los cdigos line feed
y carriage return. Este par es comnmente referido como "LF/CR."
Pgina 304 Sensores Inteligentes y sus Aplicaciones
Apndice B: Documentacin de la pantalla LCD Serial Parallax Page 305
Version 2.0
Introduccin
Las pantallas LCDs Seriales Parallax son muy funcionales y de bajo costo y pueden ser
fcilmente controladas por un microcontrolador BASIC Stamp. Las LCD son de 2 o de
4 renglones por 16 caracteres y proveen ajuste bsico del texto para que su texto est
completo en pantalla. Tambin le dan control completo sobre todas sus caractersticas
avanzadas, permitindole mover el cursor a cualquier parte de la pantalla con una sola
instruccin y apagarla y encenderla en cualquier configuracin. Soportan los mismos
caracteres visibles que la Terminal de Depuracin del Editor de BASIC Stamp (ASCII
Dec 32-127). Adems, puede definir hasta 8 caracteres personalizados para desplegar en
cualquier lugar de la LCD.
Ideas de Aplicaciones
Qu puede hacer una una LCD Serial Parallax? Si bien hay muchas posibilidades, esta
es una pequea lista de ideas con una LCD Serial y el BASIC Stamp de Parallax:
Cdigo Muestra
Se pueden buscar por nmero de parte en www.parallax.com:
2x16 LCD Serial: bsqueda 27976
2x16 LCD Serial: (con luz de fondo): bsqueda 27977
4x20 LCD Serial: (con luz de fondo) bsqueda 27979
Caractersticas
Despliega el juego de caracteres ASCII directamente a la pantalla
Ajusta a la siguiente lnea automticamente para fcil despliegue de cadenas de
texto
Trabaja a 2400, 9600, y 19,200 baud
Muevee el cursor a cualquier punto en la pantalla con un solo comando
Limpia toda la pantalla con un solo comando
Le permite definer hasta 8 caracteres personalizados
Conexiones
Conectar la LCD Serial al BASIC Stamp es una operation directa, requiere solo 3 pines
de E/S. Va la figura B-1 y B-2 para detalles de conexiones electricas. Vea las Figuras
B-3 y B-4 en las siguienes pginas para etalles de tamao y montaje mecnico.
Figura B-1
Conexiones de la
LCD Serial para la
Rev D y
anteriores.
Apndice B: Documentacin de la pantalla LCD Serial Parallax Page 307
Figura B-2
Conexiones de la
LCD Serial para la
Rev E y
posteriores.
La tabla abajo lista los requerimientos de voltaje y corriente de la LCD Serial, con la luz
de fondo encendida y apagada. Puesto que en cada caso la corriente que toma excede la
capacidad de todos los mdulos BASIC Stamp, debe energizar la LCD Serial de una
fuente externa de 5 V. Asegrese de que la fuente tiene un nivel de corriente adecuado
para energizar la LCD Serial y el BASIC Stamp.
Figura B-3 Especificaciones de Tamao y Montaje para los modelos 27976, 27977.
Precaucion: Las dimensiones pueden variar.
Pgina 308 Sensores Inteligentes y sus Aplicaciones
Figura B-4 Especificaciones de Tamao y Montaje para el modelo 27979. Precaucion: Las
dimensiones pueden variar.
Notas Tcnicas
Caracterstica Descripcin
Tipo de pantalla LCD STN, YG, positive, transflective
Direccin de observacin 6H
Luz de fondo YG LED
Temperatura de Operacin -4F~158F (-20C~70C)
Temperatura de almacenaje -22F~176F (-30C~80C)
Tolerancia dimensional .02 (.5mm)
Como puede ver, hay una cuarta opcin llamada Test. Ya que conect la energa, use este
modo para confirmar que estn correctamente conectados la energa y tierra a la LCD
antes de que enve algn dato. Mueva los interruptores a Test y encienda la energa. La
pantalla LCD se debe encender con la luz de fondo encendida (modelos 27977, 27979) y
desplegando el siguiente texto:
Parallax, Inc.
www.parallax.com
Displegando Texto
Ahora que la LCD est configurada, es hora de empesar a enviar texto a la pantalla. Para
desplegar un caracter de texto en la LCD Serial, simplemente enve el cdigo ASCII de
ese caracter a la LCD Serial por el puerto serial a la velcidad baud correcta.
Cuando un caracter es recibido, la LCD Serial despliega ese caracter en la posicin actual
del cursor y luego mueve el cursor una posicin a la derecha. Cuando enciende la LCD,
el cursor esta en la posicin extrema izquierda de la lnea superior, como podra esperar.
La pequea barra en la parte baja del caracter muestra dnde est posicionado el cursor.
Una vez que ha enviado una lnea completa de caracteres a la LCD, notar que el cursor
automticamente ajusta a la posicin extrema izquierda de la segunda lnea, como el texto
en un libro. El texto se ajustar as al final de cada lnea, con el final de la lnea inferior
ajustndose a la lnea superior de la LCD. El texto nunca saldr de la pantalla; siempre
ver todos los caracteres que enve.
Intente el siguiente cdigo en su BASIC Stamp 2 para enviar una cadena de texto a la
pantalla LCD. Primero, configure la velocidad baud en su LCD Serial a 19,200. Luego,
cargue el cdigo siguiente en su BASIC Stamp 2 y crralo. Ver la cadena de texto
aparecer y ajustarse a la segunda lnea de la pantalla.
Pgina 310 Sensores Inteligentes y sus Aplicaciones
En todo su cdigo para la LCD Serial, debe hacer una pausa de 100 ms al inicio para
darle tiempo para initializar. Tambin debe configurar el pin de Puerto serie en el BASIC
Stamp a ALTO antes del retraso de 100 ms para arranque, dado que este es el estado
normal de un puerto serie cuando no est enviando ningn dato.
TxPin CON 0
Baud19200 CON 32
HIGH TxPin ' Establece pin alto para ser Puerto serie
PAUSE 100 ' Pause para inicializar la LCD Serial
SEROUT TxPin, Baud19200, ["Hello, this text will wrap."]
Moviendo el Cursor
Cuando enva un caracter a la LCD Serial, siempre se despliega en la posicin acual del
cursor. Hay algunos modos diferentes para mover el cursor en la pantalla LCD Serial.
Despus de cada caracter que enva, el cursor automticamente se mueve una posicin.
Junto con esto, hay un juego estndar de comandos para movimiento de que incluye
Backspace, Carriage Return, y Line Feed.
Tambin hay comandos de movimiento directo que puede usar para mover el cursor a
cualquier posicin en la pantalla con un solo comando. Los comandos en el rango Dec
128 a 143 y Dec 148 a 163 mueven el cursor a las 16 diferentes posiciones en cada una
de las 2 lneas de los modelos 27976 y 27977. Los comandos en el rango Dec 128 a 207
Apndice B: Documentacin de la pantalla LCD Serial Parallax Page 311
mueven el cursor a las 20 diferentes posiciones en cada una de las 4 lneas del modelo
27979 LCD.
Controlando la Pantalla
Tambin tiene control sobre los diversos modos de pantalla de la LCD Serial. El
comando display-off (Dec 21) apaga la pantalla y todos los caracteres desaparecen. Los
caracteres no son borrados de la pantalla, e incluso puede escribir nuevos caracteres a la
pantalla cuando est apagada. Un truco para hacer que mucho texto aparezca de golpe,
an a una baja velocidad baud rate, es apagar la pantalla y enviar todo su texto. Entonces,
cuando la encienda de nuevo, todo el texto aparece instantaneamente.
Con los modelos 27977 y 27979, puede tambin controlar la luz de fondo de la pantalla.
Esta ilumina la pantalla para facilitar su lectura en la oscuridad. Hay comandos para
encenderla (Dec 17) y apagarla (Dec 18).
Caracteres personalizados
La LCD Serial tiene la capacidad de guardar hasta 8 caracteres personalizados definidos
por el usuario. Los caracteres personalizados son guardados en RAM y por ello necesitan
ser redefinidos si desconecta la energa. Puede despegar los caracteres personalizados
enviando los comandos Dec 0 a 7, como se muestra en la tabla de juego de comandos. El
caracter personalizado se desplegar en la posicin actual del cursor.
Los caracteres personalizados son de 5 pixeles de ancho por 8 pixeles de alto. Cada uno
de los caracteres es guardado como una serie de datos de 8 bytes donde los 5 bits ms
bajos de cada byte representan una linea de pixeles en el caracter. Los 3 bits ms altos de
cada bytes son ignorados. Un valor 1 en el bit enciende ese pixel (lo hace negro). La
lnea de pixeles de hasta abajo se deja normalmente en blanco (todo ceros) para poder ver
el cursor.
Pgina 312 Sensores Inteligentes y sus Aplicaciones
TxPin CON 0
Baud19200 CON 32
HIGH TxPin ' Establece pin en alto para ser un puerto serial
PAUSE 100 ' Pausa para que LCD Serial inicialize
Conjunto de Comandos
Las tablas a continuacin listan todos los comandos vlidos de la LCD Serial. Los
comandos marcados como N/A son invalidos y son ignorados. Las lineas de la pantalla
LCD estn numeradas desde 0, siendo la Linea 0 la de hasta arriba. Las posiciones de
caracter en cada lnea estn numeradas empezando desde 0, siendo la posicin 0 la de la
extrema izquierda en la lnea.
Apndice B: Documentacin de la pantalla LCD Serial Parallax Page 313
No todos los lenguajes de programacin para controladores soportan este uso nativo de
caracteres escribibles. En algunos casos, sobre todo en lenguaje ensamblador, se usa el
cdigo ASCII para el signo de exclamacin. El cdigo ASCII para este signo es 33, y an
en PBASIC, el comando SEROUT 14, 84, [33] realiza la misma tarea. En lenguaje
ensamblador, los valores hexadecimales son algunas veces el nmero base preferido
porque hace ciertas tareas ms fciles. Debido a esto, mucha documentacin para LCD
lista sus comandos LCD como valores hexadecimales.
He aqu un ejemplo de un comando SEROUT que define una barra en una grfica de barra.
Llena la parte de abajo del caracter con pixeles negros y deja la parte mitad superior en
blanco:
SEROUT 14, 84, [250,
%00000, '
%00000, '
%00000, '
%00000, '
%11111, ' * * * * *
%11111, ' * * * * *
%11111, ' * * * * *
%11111] ' * * * * *
Hexadecimal 8 F E 6
Binario 1000 1111 1110 0110
$8FE6 = %1000111111100110
%1100011000001001 = $C609
END
Requerimientos de Software:
Editor BASIC Stamp para Windows v2.0 o ms reciente (Descarga gratis en
www.parallax.com)
Programas ejemplo seleccionados (Descarga gratis en www.parallax.com)
Microsoft Notepad y Microsoft Excel 2002 o ms reciente (para estudios de
aceleracin del Captulo 6)
Requerimientos de Hardware:
Uno de los siguientes kits que incluye una plataforma de programacin BASIC
Stamp 2, ms la fuente de energa adecuada o las bateras:
o Board of Education Full Kit Serial (#28102) o USB (#28802)
o Boe-Bot Robot Kit Serial (#28132) o USB (#28832)
o BASIC Stamp activity Kit* (incluye HomeWork Board) (#90005)
Sensores Inteligentes y sus Aplicaciones, Partes y Texto (#28029) o Kit de
partes (#130-28029)
*Todas las actividades en este texto son compatibles con la tarjeta BASIC Stamp
HomeWork mientras que est usando la LCD sin luz de fondo includa en el kit de partes
de Sensores Inteligentes. Si est usando una LCD con luz de fondo, use tambin una
tarjeta Board of Education para proteger su LCD.
Pgina 322 Sensores Inteligentes y sus Aplicaciones
Sensores Inteligentes y sus Aplicaciones, Partes y Texto #28029 (Sin libro, #130-28029)
Partes y cantidades sujetas a cambio sin previo aviso
Parallax Parte # Descripcin Cantidad
122-28029 Libro Sensores Inteligentes y sus Aplicaciones 1
150-01020 Resistenciass 220 , watt 5% 2
27976 LCD Serial Parallax 2 x 16 sin luz de fondo 1
28015 Sensor de Distancia Ultrasnico Ping))) 1
28017 Acelermetro Memsic Bi-axial 1
29123 Mdulo de brjula Hitachi 1
451-00303 Conector de 3 pines macho/macho 3
700-00003 4-40 tuercas zincadas-plateadas 6
700-00028 Tornillos de 1/4 4-40 pan-head 4
710-00006 Tornillos de1/2 4-40 pan-head 2
713-00005 Espaciador #4 de 1/4 circular de nylon 2
720-00011 Herrajes para montaje universal de 90 grados 4
800-00016 Bolsa con 10 cables conectores de 3 pulgadas 2
805-00002 Cable Extension para Servo/LCD 2
900-00001 Piezo parlante 1
Puede encontrar algunos componentes electrnicos extra en su kit que no se usan en el libro
Sensores Inteligentes y sus Aplicaciones. Si quiere usar estas para construir sus propios
circuitos, aprenda acerca los capacitores electrolticos y sus requerimientos de seguridad
antes de proceder PRECAUCIN: El uso incorrecto de capacitores electrolticos puede
causar que exploten. Siga las siguienes reglas de seguridad para evitar cualquier dao
ndice
-A- bicycle distance measurement, 247
binary radians (brads), 101
acceleration, 65
converting to degrees, 87
on a circular path, 233
RC car study, 230
-C-
pixel worm custom characters, 264 schematic and wiring diagram, 121
sensing axes, 120
arccosine, 99
arcsine, 99 testing, 121
arctangent, 92
computer system requirements, 321
ATN, 85, 127
contrast adjustment for LCD, 7
-B- conversion
bar graph binary radians to degrees, 87