Documentos de Académico
Documentos de Profesional
Documentos de Cultura
F
+
-
3300 F
Figura 5-7
Smbolo esquemtico y dibujo de un
capacitor de 3300 F
Ponga mucha atencin a las
terminales y a la conexin de las
terminales Positiva y Negativa.
Resistores y partes del Circuito de Tiempo
Un Capacitor de 3300 F
Un Capacitor de 1000 F
Un Resistor de 220 (rojo-rojo-caf)
Un Resistor de 470 (amarillo-violeta-cafe)
Un Resistor de 1 K (caf-negro-rojo)
Un Resistor de 2 K (rojo-negro-rojo)
Un Resistor de 10 (caf-rojo-naranja)
Construyendo y Verificando el Circuito de Tiempo Resistor-Capacitor
La Figura 5-8 muestra el circuito esquemtico, y la Figura 5-9 muestra el diagrama del
alambrad para esta actividad. Tomaremos mediciones de tiempo usando diferentes
valores del resistor en donde est colocado el resistor de nombre Ri.
Midiendo Rotacin Pgina 147
Lea cuidadosamente el siguiente recuadro de SEGURIDAD.
SEGURIDAD
Siempre observe la polaridad cuando conecte el capacitor de 3300 o 1000 F.
Recuerde, la terminal negativa es la terminal que est conectada en el cuerpo del capacitor
y esta cercano a la raya con un signo negativo (-). Use la Figur 5-7 para indentificar las
terminales (+) y (-)
Su capacitor de 3300 F trabajar correctamente en este experimento si se asegura que
las terminales positiva (+) y negativa (-) estn conectadas exactamente como lo muestra la
Figura 5-8 y la Figura 5-9.
Nunca invierta las terminales de la fuente de alimentacin en el capacitor de 3300 F
o cualquier otro capacitor con polaridad. El voltaje en la terminal positiva (+) debe
siempre ser mayor que el voltaje en la terminal negativa (-). Vss es el voltaje menor (0 V) en
la Tablilla Board of Education y BASIC Stamp Homework Board. Al conectar la terminal
negativa del capacitor en VSS usted se asegura que siempre es correcta la polaridad en las
terminales del capacitor.
Nunca aplique voltaje al capacitor que exceda el voltaje impreso en el cuerpo del
capacitro.
Use gogles durante esta actividad.
Antes de construir o modificar su circito siempre desconecte la alimentacin.
Mantenga alejados sus manos y cara del capacitorcuando conecte la alimentacin.
Con la alimentacin desconectada, construya el circuito mostrado empezando
con un resistor de 470 colocandolo donde est marcado Ri.
Vss
P7
3300 F
220
R
i
R = 470
R = 1 k
R = 2 k
R = 10 k
1
2
3
4
Figura 5-8
Esquemtico para
verificar la descarga del
voltaje del circuito RC.
Se usarn cuatro
diferentes resistores en
donde est marcado Rin
Se usarn cuatro diferentes resistores en donde est marcado Rin. Primero, el
esquemtico se construir y verificar con Ri = 470 , luego se usar Ri = 1 K.
Pgina 148 Qu es un Microcontrolador?
P15
P14
P13
P9
P4
P3
P12
P11
P10
P8
P6
P5
P2
P1
P0
P7
X2
X3
Vdd Vss Vin
R
1
R
2
R
3
R
4
+
-
+
3
3
0
0
F
Figura 5-9
Diagrama de Alambrado
para ver el tiempo de
descarga de un circuito
de tiempo RC.
Asegurese que el lado
negativo del capacitor lo
conecta en su Tablilla de
la misma forma que lo
muestra esta figura, cn la
terminal negativa
conectada a Vss.
Asegurese que el lado negativo del capacitor lo conecta en su Tablilla de la
misma forma que lo muestra esta figura, cn la terminal negativa conectada a Vss.
Midiendo el circuito de tiempo RC con el BASIC Stamp
Aunque se puede usar un reloj para registrar que la carga del capacitor alcance cierto
nivel, el BASIC Stamp se puede programar para monitorear el circuito y darle usted
mediciones de tiempo ms consistentes.
Programa Ejemplo: PolledRcTimer.bs2
Meta y ejecute el programa PolledRcTimer.bs2.
Observe como el BASIC Stamp carga el capacitor y luego mide el tiempo de
descarga.
Registre la Medicin de Tiempo (el tiempo de descarga del capacitor) en la fila
del resistor de 470 de la Tabla 5-1.
Desconecte la Alimentacin de su Tablilla Board of Education o BASIC Stamp
Home Work.
Quite el resistor de 470 del lugar marcado Ri de la Figura 5-8 y Figura 5-9 de
y reemplacelo por un resistor de 1 kilo ohm.
Reconecte la alimentacin a su Tablilla.
Registe su siguiente Medicipon de Tiempo (para el resistor de 1 K)
Repita estos pasos para cada valor de resistor de la Tabla 5-1
Midiendo Rotacin Pgina 149
Tabla 5-1: Resistencia RC-tiempo para C = 3300
F
Resistencia () Tiempo Medido (s)
470
1 k
2 k
10 k
' Que es un Microcontrolador? - PolledRcTimer.bs2
' Programa de Tiempo de descarga modificado para seguir voltaje de descarga de
RC.
' {$STAMP BS2}
' {$PBASIC 2.5}
timeCounter VAR Word
counter VAR Nib
PAUSE 1000
DEBUG CLS
HIGH 7
DEBUG "Capacitor en carga...", CR
FOR counter = 5 TO 0
PAUSE 1000
DEBUG DEC2 counter, CR, CRSRUP
NEXT
DEBUG CR, CR, "Ahora Mida el tiempo de Descarga!", CR, CR
INPUT 7
DO
PAUSE 100
timeCounter = timeCounter + 1
DEBUG ? IN7
DEBUG DEC5 timeCounter, CR, CRSRUP, CRSRUP
LOOP UNTIL IN7 = 0
DEBUG CR, CR, CR, "The RC decay time was ",
DEC timeCounter, CR,
"Decimas de segundo.", CR, CR
END
Pgina 150 Qu es un Microcontrolador?
Funcionamiento del programa PolledRcTimer.bs2
Se declaran dos variables. La variable timeCounter se utiliza para conocer cuanto
tiempo toma el capacitor en descargarse a travs de Ri. La variable counter se usa para
un conteo descendente mientras el capacitor se esta cargando.
timeCounter VAR Word
counter VAR Nib
La instruccin DEBUG CLS limpia la Terminal Debug para que no se amontonen las
mediciones sucesivas. High 7 pone en alto P7 e inicia la carga del capacitor, y entonces
se muestra el mensaje Capacitor Cargando. Despus de eso, el bucle FOR...NEXT hace
un conteo descendente mientras el capacitor se est cargando. Cuando el capacitor se
carga, se incrementa el voltaje a travs de sus terminales desde 3.4 y 4.9 V (depende del
valor de Ri)
DEBUG CLS
HIGH 7
DEBUG "Capacitor Cargando...", CR
FOR counter = 5 TO 0
PAUSE 1000
DEBUG DEC2 counter, CR, CRSRUP
NEXT
Un mensaje muestra el inicio de la descarga.
DEBUG CR, Ahora mide el tiempo de descarga!, CR, CR
Para permitir que el capacitor se descargue a travs del resistor Ri, el pin de E/S cambia
de HIGH a INPUT. Cuando est como entrada el pin E/S no afecta al circuito, pero
pueden sensar seales high o low. Tan pronto como el pin E/S libera el circuito, el
capacitor se descarga y circuila corriente a travs del resistor. Cuando se ha descargado el
capacitor el voltaje a travs de sus terminales se hace menor y menor (se descarga).
INPUT 7
En el captulo anterior del botn push, usted us el BASIC Stamp para detectar una seal
high o low usando las variables IN3 y IN4. En esa ocasin, la seal high era Vdd y
la seal low era Vss. Para el BASIC Stamp verdaderamente la seal high es cualquier
voltaje mayor de 1.4 V. Claro que tambin puede ser 5V. En forma semejante, la seal
low el cualquier voltaje entre 1.4 V y 0V.
Midiendo Rotacin Pgina 151
El bucle DO...LOOP verifica el pin P7 cada 100 ms hasta que el valor de IN7 cambia de
1 a 0, y esto indica que el voltaje de descarga del capacitor es 1.4 V.
DO
PAUSE 100
timeCounter = timeCounter + 1
DEBUG ? IN7
DEBUG DEC5 timeCounter, CR, CRSRUP, CRSRUP
LOOP UNTIL IN7 = 0
Se muestra el resultado y se termina el programa.
DEBUG CR, CR, CR, "El tiempo de descarga de RC fue ",
DEC timeCounter, CR,
"decimas de segundo.", CR, CR
END
Su turno Un circuito ms rpido
Usando un capacitor de aproximadamente 1/3 de 3300 F, la medicin del tiempo para
el valor de cada resistor que se uso en el circuito se reducir por 1/3. Posteriormente en la
siguiente actividad usted usar un capacitor con 1/33 000 de capacidad El BASIC Stamp
tomara para usted la medicin de tiempo usando una instruccin llamada RCTIME.
Desconecta la alimentacin de su Tablilla Board of Education o
HomeWorkBoard.
Reemplace el capacitor de 3300 F por uno de 1000 F.
Confirme que la polaridad de su capacitor es correcta. La terminal negativa se
conecta a Vss.
Reconecte la alimentacin.
Repita los pasos del Programa Ejemplo: PolledRcTimer.bs2 y registre sus
mediciones de tiempo en la Tabla 5-2.
Compare sus mediciones de tiempo a la que anot en la Tabla 5-1.
Qu tan cercanas estn a 1/3 del valor de las mediciones tomadas con el
capacitor de 3300 F?
Pgina 152 Qu es un Microcontrolador?
Tabla 5-2: Resistencia y tiempo RC-, C = 1000 F
Resistencia () Tiempo medido (s)
470
1 k
2 k
10 k
ACTIVIDAD #3: LEYENDO LA PERILLA CON EL BASIC STAMP
En la actividad #1, se us un potenciometro como resistor variable. La resistencia en el
circuito vara dependiendo de la posicin de la perilla de ajuste. En la actividad #2 se us
un circuito de tiempo RC para medir diferentes resistencias. En esta actividad, usted
construir un circuito de tiempo RC para leer el potenciometro y usar el BASIC Stamp
para tomar las mediciones de tiempo. El capacitor que usar ser muy pequeo y las
mediciones de tiempo estarn en el rango de microsegundo. Incluso, aunque las
mediciones son de duraciones muy cortas de tiempo, el BASIC Stamp le dar una
excelente indicacin de la resistencia entre las terminales A y W que a su vez indican la
posicin de la perilla.
Partes para leer el circuito de tiempo RC con el BASIC Stamp
Un Potenciometro de 10 K
Un Resistor de 220 (rojo-rojo-caf)
Cuatro alambres para puentes
Un Capacitor de 0.1 F
Un Capacitor de 0.01 f
Dos puentes
Estos capacitores no tienen. Terminals + ni -. No tienen polaridad.. Pueden conectar
estos capacitores sin preocuparse de las terminales positiva y negativa.
1
0
4
0.1 F
0.01 F
1
0
3
Figura 5-10
Capacitores de
Cermica
Esquemtico y dibujo
del capacitor de 0.1F
(izquierda) y el de 0.01
F (derecha)
Midiendo Rotacin Pgina 153
Contruyendo el circuito de Tiempo RC para el BASIC Stamp
La Figura 5-11 muestra el diagrama esquemtico y alambrado para el circuito RC de
tiempo rpido. Este es el circuito que usted usar para monitorear la posicin de la perilla
del potenciometro con ayuda del BASIC Stamp y un programa PBASIC.
Figura 5-11
Diagrama esquemtico
y alambrado del circuito
de Tiempo RC para el
BASIC Stamp con
potenciometro.
Programando las Mediciones de Tiempo de RC
El programa ejemplo en la actividad #2, midi el tiempo de descarga verificando IN7 = 0
cada 100 ms, y lo mantuvo varias veces para verificarlo. Cuando IN7 cambi de 1 a 0,
esto indic que el voltaje del capacitor se descargo a 1.4 V. Cuando se ejecut el
programa el resultado se almacen en la variable timeCounter como un nmero de
dcimas de segundo que le tomo al capacitor descargarse hasta 1.4 V.
Este siguiente Programa Ejemplo usa una instruccin PBASIC llamada RCTIME que
hace que el BASIC Stamp mida la descarga RC en terminos de unidades de 2 us.
Entonces, en lugar de dcimas de segundo, el resultado RCTIME 7, 1 almacena en la
variable time el nmero de 2 millonesimas de unidades de segundo que le toma al
voltaje del capacitor descargarse debajo de 1.4 V. Como la instruccin RCTIME tiene
Pgina 154 Qu es un Microcontrolador?
unidas muy finas de medicin, usted puede reducir el tamao del capacitor desde 3300
F hasta 0.1 e iincluso a 0.01 F, y todova obtener mediciones de tiempo que indican el
valor del resistor. Como la resistencias entre las terminales del potenciometro cambina
conforme gira la perilla, la medicin RCTIME le dan a usted mediciones de tiempo que
corresponde a la posicin de la perilla del potenciometro.
Programa Ejemplo: ReadPotWithRcTime.bs2
Meta y ejecute el programa ReadPotWithRcTime.bs2
Gire la perilla del potenciometro mientras observa el valor de la variable time
usando la Terminal Debug.
Recuerde aplicar un poco de presin para mantener el potenciometro bien fijo sobre la
tablilla cuando gira la perilla. Si su servo comienza a oscilar adelante y atrs
inesperadamente en lugar de mantener su posicin de retencin, puede ser que el
potenciometro no est bien fijo.
' Que es un Microcontrolador - ReadPotWithRcTime.bs2
' Lea el tiempo RC del potenciometro usando la instruccin RCTIME .
' {$STAMP BS2}
' {$PBASIC 2.5}
time VAR Word
PAUSE 1000
DO
HIGH 7
PAUSE 100
RCTIME 7, 1, time
DEBUG HOME, "tiempo = ", DEC5 time
LOOP
Su Turno Cambiando el Tiempo al Cambiar el Capacitor
Reemplace el capacitor de 0.1F por uno de 0.01F
Mantenga las mismas posiciones del Potenciometro como lo hizo en la actividad
principal y compare los valores mostrados por la Terminal Debug con los valores
obtenidos con el capacitor de 0.1F.Son las mediciones RCTIME cerca de un
dcimo del valor para una posicin dada del potenciometro.
Regrese el capacitor de 0.1F.
Midiendo Rotacin Pgina 155
Con el capacitor de 0.1F y el de 0.01 quitado gire la perilla del potenciometro a
su lmite en ambas direcciones y anote los valores ms alto y ms bajo para la
siguiente acitividad. El ms alto______ El ms bajo_______ .
Funcionamiento del Programa ReadPotWithRcTime.bs2
La Figura 5-12 como interactuan las intrucciones HIGH, PAUSE y RCTIME del
programa ReadPotWithRcTime.bs2 con el circuito de la Figura 5-11.
Figura 5-12 Voltajes en P7 con HIGH, PAUSE y RCTIME
En la izquierda la instruccin HIGH 7 hace que el BASIC Stamp internamente conecte el
pin E/S P7 a los 5 V (Vdd). La corriente circula desde la fuente a travs del resistor del
potenciometro y tambin carga al capacitor. Conforme el capacitor se aproxima a su
carga final (casi 5 V) menor es la corriente que fluye por l. La instruccin PAUSE 100
se usa primordialmente para que la Terminal Debug muestre actualizaciones cerca de 10
veces por segundo; PAUSE 1 es suficiente para cargar el capacitor. En la derecha la
instruccin RCTIME 7,1, time cambia la direccin del pin E/S de salida a entrada y
comienza el tiempo de conteo en incrementos de 2 us. Como entrada, el pin E/S ya no
alimenta al circuito con 5 V. De hecho, como entrada, es casi invisible al circuito RC.
Entontes, el capacitor empieza a perder su carga a travs del potenciometro. Conforme el
Pgina 156 Qu es un Microcontrolador?
capacitor piede su carga, su voltaje se descarga. La instruccin RCTIME mantiene el
tiempo de conteo hasta que P7 sensa una seal low esto significa que el voltaje a travs
del capacitor se ha descargado a 1.4 V, y en este punto almacena la medicin en la
variable time.
La Figura 5-12 tambin muestra una grfica del voltaje en la terminales del capacitor
durante las instrucciones HIGH, PAUSE y RCTIME. En respuesta a la instruccin HIGH
7 que conecta el circuito a 5 V, el capacitor se carga rapidamente.
Entonces mantiene su nivel a su voltaje final durante la ejecucin de la instruccin
PAUSE 100. Cuando el programa llega a la instruccin RCTIME 7,1, time, cambia la
direccin del pin E/S a entrada, entonces el capacitor empieza a descargase a travesl de
potenciometro. Conforme el capacitor se descarga, el voltaje en P7 disminuye. Cuando el
voltaje disminuye hasta 1.4 V (en este ejemplo en la marca de 150 us), la instruccin
RCTIME deja de contar el tiempo y almacena el resultado de la medicin en la variable
time. Como la instruccin RCTIME cuenta el tiempo en unidades de 2 us, para 150 us
el nmero que se almacen en la variable time es 75.
Umbral Lgico del pin E/S: 1.4 V es el umbral lgico del pin E/S en el BASIC Stamp.
Cuando el pin E/S se direcciona como entrada, almacena un 1 en su registro de entrada si
el voltaje aplicado es superior a1.4 V, o almacena un 0 si el voltaje de entrada es menor a
1-4 V. El primer botn push del captulo 3 Activida #2 aplicaba 5 V o 0 V. Como 5 V est
arriba de 1.4 V, IN3 almacen un 1 y como 0 V est debajo de 1.4 IN3 almacen un 0.
Argumento State de RCTIME. En el programa ReadPotWithRcTime.bs2, el voltaje a
travs del capacitor disminuye desde casi 5 V, y cuando alcanza 1.4 V, el valor en el
registro IN7 cambia de 1 a 0. En este momento, la instruccin RCTIME almacena la
medicin en Duration que es la variable time en el programa ejemplo. El argumento
State de la instruccin RCTIME es 1 in RCTIME 7, 1, time, que le indica a la instruccin
RCTIME que el registro IN7 almacenar un 1 cuando inicie la medicin. La instruccin
RCTIME mide cuanto tiempo le toma al registro IN7 cambiar al estado opuesto, y esto
sucede cuando el voltaje disminuye debajo del voltaje umbral a 1.4 V del pin de E/S.
Para mayor informacin. Vea la instruccin RCTIME en el manual BASIC Stamp Manual o
en la ayuda de BASIC Stamp Editors Help.
La figura 5-13 muestra la forma en que cambia la descarga con la resistencia del
potenciometro para el circuito de la Figura 5-11. Cada posicin de la perilla del
potenciometro determina una cierta resistencia. Girandolo en una direccin la resistencia
aumenta y en la otra direccin la resistencia disminuye. Cuando la resistencia es mayor el
tiempo de descarga es ms largo, y la instruccin RCTIME almacena un valor mayor en
la variable time. La instruccin DEBUG del programa ReadPotWithRcTime.bs2
muestra esta medicin de tiempo en la Terminal Debug, y como el tiempo de descarga
Midiendo Rotacin Pgina 157
cambia con la resistencia del potenciometro, el nmero en la Terminal Debug indica la
posicin de la perilla.
Figura 5-13
Forma en que la Resistencia
del Potenciometro afecta el
Tiempo de Descarga
Por qu el capacitor se carga a un menor voltaje cuando el potenciometro tiene
menos resistencia?
De una mirada en le esquemtico de la esquina superior izquierda de la Figura 5-12. Sin el
resistor de 220 , el pin de E/S debe ser capaz de cargar el capacitor a 5 V, pero el resistor
de 220 es necesario para prevenir un posible dao al pin E/S de un transitorio de
corriente cuando empieza a cargar el capacitor. Tambin previee que el potenciometro se
dae al drenar mucha corriente cuando se gira a 0 mientras el pin E/S est mandando
una seal high de 5 V.
Cuando se le aplican 5 V a las terminarles del resistor de 220 en serie con el
potenciometro, el voltaje entre ellos tiende a se una fraccin de 5 V. Cuando dos resistores
conduciendo corriente se conectan en serie, que generan un voltaje intermedio, al circuito
se le llama Divisor de Voltaje. Entonces el resistor de 220 y el potenciometro forman un
circuito divisor de voltaje, y para cualquier resistencia del potenciometro (Rpot) , usted
puede usar esta ecuacin para calcular el voltaje en el potenciometro (Vpot):
Vpot = (5 V x Rpot) /(Rpot + 220 )
El valor de Vpot define el valor superior del voltaje en el capacitor. En otras palabras,
Cualquiera que sea el voltaje en el potenciometro ser si el capacitor no est conectado,
esto es el voltaje al que el capacitor puede cargarse pero no mayor a este voltaje. El rango
de la mayoria de las perillas del potenciometro los valores de la resistencia son en k y
cuando usted calcula Vpot para valores de Rpot en K, los resultados son bastante
cercanos a 5 V. El resistor de 220 no influye en el Vpor de cargarse arriba de 1.4 V hasta
que el valor del potenciometro disminuye a 85.6 ,este valor es menor al 1% del rango del
movimiento del potenciometro. Este 1% resultara de todas formas para las mediciones ms
pequeas, entonces es dificil decir que mediciones de 1% en este rango estn fuera de los
ordinario. Incluso con el resistor adicional de 220 contruido en su Tablilla BASIC Stamp
las conexiones en el pin E/S solo se afectan cuando el rango del potenciometro llega a
1.7%, y este valor no es importante.
Entonces el resistor de 220 protege el pin E/S con un impacto pequeo en la medicin de
descarga de RC para decirle cuanto se ha desviado la posicin de la perilla del
potenciometro.
Pgina 158 Qu es un Microcontrolador?
ACTIVIDAD #4: CONTROLANDO UN SERVO CON UN POTENCIOMETRO
Los joysticks como en de la Figura 5-14 se encuentran comunmente en controladores de
video juegos. Cada joystick tiene tipicamente dos potenciometros que permiten que la
electrnica interna en el controlador del juego reporta la posicin del joystick a la consola
de video juego. Un potenciometro gira el movimiento horizotal del joystick (izquierda a
derecha), y el otro gira el movimiento vertical del joystic (adelante/atrs)
Figura 5-14
Potenciometros dentro
del Mdulo Joystick de
Parallax.
Otra aplicacin de joystick que usa potenciometros es el controlador de radio RC y el
aeroplano en la Figura 4-1. El controlador tiene dos joysticks y cada uno tiene dos
potenciometros. Cada posicin del potenciometro es responsable de controlar un servo
diferente del RC del avin.
En esta actividad, usted usar un potenciometro similar a los del joystick que controla la
posicin del servo. Cuando usted gira la perilla del potenciometro, la estrella del servo
reproducir este movimiento. Esta actividad utilizad dos circuitos, el circuito del
potenciometro de la Actividad # 3 de este captulo, y el circuito servo del captulo 4,
actividad # 1. El programa PBASIC desarrollado en este captulo mide repetidamente la
posicin del potenciometro con una instruccin RCTIME, y luego usa la medicin y algo
de matemticas para controlar el posicin del servo con una instruccin PULSOUT.
El BASIC Stamp puede medir la posicin del joystick. Como hay dos potenciometros en
cada joystick, cada uno de ellos puede reemplazar el potenciometro nico de los circuitos
de la Figura 5-11. Entonces una instruccin RCTIME puede medir el potenciometro vertical
y el otro puede medir el potenciometro horizontal.
Vertical
potentiometer
Horizontal
potentiometer
Midiendo Rotacin Pgina 159
Partes del Potenciometro Controlando el Servo
Potenciometro de 10 K
Un Resistor de 220 (rojo-rojo-cafe)
Un Resistor de 470 (amarillo-violeta-cafe)
Un Capacitor de 0.1 F
Un Servo Normalizado de Parallax
Un LED de cualquier color
Dos alambres para puentes
Los usuarios de la Tablilla HomeWork Board tambin necesitarn:
Un conector de 3 terminales hembra-hembra
Cuatro alambres para puentes
Construyendo el Circuito de Perilla y Servo
Esta actividad usar dos circuitos que usted ya ha construido individualmente: el circuito
del potenciometro de la actividad que acaba de terminar y el circuito servo del captulo
anterior.
Quite del rea de su tablilla el potenciometro del circuito RC de la actividad # 3.
Si necesita reconstruirlo, use la Figura 5-11. Asegurese que usa el capacitor de
0.1 F y no el capacitor de 0.01 F.
Agregue al proyecto el circuito servo del captulo 4, actividad 1. Recuerde que su
circuito servo ser diferente dependiendo de la Tablilla que use. Abajo estn las
pginas para esta seccin que necesita buscar en:
o Vaya a la Pgina 96 si usa la Tablilla Board of Education
o Vaya a la Pgina 99 si usa la Tablilla BASIC Stamp HomeWork
Programando Potenciometro Controlando el Servo
Usted necesitar los valores ms pequeo y ms grande de la variable tiempo que guard
de su circuito RC de tiempo cuando us un capacitor de 0.1 F
Si no ha completado la seccin Su Turno de la actividad anterior, regresese y
completela ahora.
Para este siguiente ejemplo, estos son los valores de tiempo que midieron los tcnicos de
Parallax, sus valores son quiz ligeramente diferentes.
Pgina 160 Qu es un Microcontrolador?
En el lmite en sentido de la manecillas del reloj 1
En el lmite en sentido contrario de la manecillas del reloj 691
Entonces, como pueden ajustarse estos valores de entrad para que cubran el rango de
500 1000 para controlar el servo con la instruccin PULSOUT? La respuesta es usando
multiplicaciones y sumas. Primero, multiplique los valores de entrada por algo para hacer
la diferencia de entre los valores en el sentido de las manecillas del reloj (mnimo) y en
sentido inverso de las manecillas del reloj (mximo) 500 en lugar de casi 700. En
seguida, agregue un valor constante al resultado para que el rango de 500 a 1000 en lugar
de 1 a 500. En electrnica a estas operaciones se les llama Escalamiento y ajuste. As
es como trabaja la matemtica para la multiplicacin (escalamiento).
724 . 0
691
500
1 ) (
500 724 . 0 691
691
500
691 ) (
= =
= = =
minimum time
maximum time
Despues de haber escalado los valores, as se hace el paso de suma (offset)
500 500 724 . 0 ) (
1000 500 500 ) (
= + =
= + =
minimum time
maximum time
El operador */ se introdujo en la pgina 84 y es parte del PBASIC para escalamiento por
valores fraccionales, como 0.724. Estos son nuevamente los pasos para usar */ aplicado a
0.74:
1. Coloque el valor o variable que usted desea multiplicar por un valor fraccional
antes del operador */
tiempo = tiempo */
2. Tome el valor fraccional que usted desea usar y mutipliquelo por 256
nuevo valor fraccional = 0.724x256 = 185.344
3. Quite los decimales del nmero
nuevo valor fraccional = 185
Midiendo Rotacin Pgina 161
4. Coloque el valor despues del operador */
tiempo = tiempo */ 185
Estos son los pasos del escalamiento ahora todo lo que necesitamos es agregar el offset
de 500. Esto puede hacerse con una segunda instruccin que suma 500 a tiempo:
tiempo = tiempo */ 185
tiempo = tiempo + 500
Ahora, tiempo esta listo para reciclarce con el argumento Duration de la intruccin
PULSOUT
time = time */ Escalamiento por 0.724.
time = time + 500 Se aplica un offset de 500.
PULSOUT 14, time Manda el pulso al servo.
Programa Ejemplo: ControlServoWithPot.bs2
Meta y ejecute este programa, luege gire la perilla del potenciometro y asegurese
que a iguales movimientos del servo, corresponden al potenciometro.
' Que es un Microcontrolador - ControlServoWithPot.bs2
' Lee el potentiometro del circuito de tiempo RC usando la instruccin RCTIME.
' Escale time por 0.724 y offset por 500 para el servo.
' {$STAMP BS2}
' {$PBASIC 2.5}
PAUSE 1000
DEBUG "Programa ejecutandose!"
time VAR Word
Pgina 162 Qu es un Microcontrolador?
DO
HIGH 7
PAUSE 10
RCTIME 7, 1, time
time = time */ 185 ' Escalamiento por 0.724 (X 256 for */).
time = time + 500 ' Se aplica un Offset de 500.
PULSOUT 14, time ' Manda pulsos al servo.
LOOP
Su Turno Escalamiento de la Relacin Servo-Perilla.
Su potenciometro y capacitor probablemente le darn valores de tiempo que son
diferentes de los que analizamos en esta actividad. Estos son valores que reuni en la
seccin Su Turno de la actividad anterior.
Repita la matemtica analizada en la seccin Programando Potenciometro
Controlando el Servo de la pgina 159 usando los valores mximos y minimos.
Sustituya sus valores de Escalamiento y Offset en el programa
ControServoWithPot.bs2.
Comente el DEBUG Programa en Ejecucin! que tiene un apostrofe al
principio de la lnea.
Agregue esta lnea de cdigo entre las instrucciones PULSOUT y LOOP para
que usted pueda ver sus resultados:
DEBUG HOME, DEC5 time Muestra en ajuste de valor de tiempo
Ejecute el programa modificado y verifique su trabajo. Debido a que se
redondearon los valores, los lmites puede que no sean exactamente 500 y 1000,
pero deben ser muy cercanos.
Declarando Constantes y Pin con Directivas
En programas grandes, usted puede terminar usando el valor del factor de escalamiento
(que fue 185) y el de offset (que fue 500) muchas veces en el programa. Nmeros como
185 y 500 en su programa se llaman constantes porque a diferencia de las variables su
valores no cambian mientras se ejecuta el programa. En otras palabras, el valor
permanece constante. Usted puede crear nombres para estas constantes con directivas
CON.
Factor de escalamiento CON 185
Ofsset CON 500
delay CON 10
Midiendo Rotacin Pgina 163
Estas directivas CON siempre se declaran cerca del comienzo del programa, para
que sean fciles de encontrar.
Una vez que sus valores constantes se le han dado nombres con las directivas CON,
usted puede usar en su progrma ScaleFactor en lugar de 185 y Offset en lugar de 500.
Por ejemplo:
time = time */ scale Factor Escalaminento de 0.724
time = time + offset Offset de 500
Con los valores que asignamos a las constantes con las directivas CON las
instrucciones verdaderamente son:
time = time */ 185 Escalaminento de 0.724
time = time + 500 Offset de 500
Una ventaja importante al usar constantes es que usted puede cambiar una directiva con
y esta se actualiza en cada instante del nombre de al constante en su programa. Por
ejemplo, si usted escribe un programa grande que usa la constante ScaleFactor en 1
diferentes lugares, un cambio para Scale Factor Con... y todos los momentos su programa
usara ScaleFactor que actualiza el valor para el siguiente prograda descargado.
Entonces, Si usted cambia ScaleFactor CON 500 por ScaleFactorCON510, cada
instruccin con ScaleFactor usar 510 en lugar de 500.
Usted tambien puede darle nombres a los pines E/S usando la directiva PIN. Por
ejemplo, usted puede declarar un directiva PIN para el pin E/S p/ de la siguiente manera:
RcPin PIN7
Hay dos lugares en el programa del ejemplo anterior donde se usa el nmero 7 para
referirse al pin E/S P7. El primero ahora puede escribirse como:
HIGH RcPin
El segundo puede escribirse como:
RCTIME RcPin, 1, time
Si posteriormete cambia su circuito para usar diferentes pines E/S, todo lo que tiene que
hacer es cambiar el valor de su directiva PIN y las dos instrucciones HIGH y RCTIME,
se actualizarn automticamente.
Pgina 164 Qu es un Microcontrolador?
De igual forma, si usted tiene que recalibrar su factor de escalamiento o el offset, usted
solamente necesita cambiar las directivas CON al principio del programa.
La directiva del PIN tiene una caracterstica adicional: El compilador PBASIC puede
detectar si el nombre del pin se usa como entrada o salida, y substituur al nmero del pin
E/S, o al bit del registro de la variable de entrada correspondiente. Por ejemplo, usted
podra declarar dos directivas pin, como LedPin PIN 14 y ButtonPin PIN3. Entonces su
cdigo puede tener una frase como IF buttonPin = 1 THEN HIGH LedPin. El compilador
PBASIC convierto esto a IF IN3 = 1 THEN HIGH14.
El IF ButtonPin = 1 hizo una comparacin, y el compilador PBASIC conoce que usted
est usando Button Pin como una entrada. Entonces, usa el bit del registro de entrada IN3
en lugar de nmero 3. De igual manera, el compilador PBASIC sabe que HIGH LedPin usa
el nombre pin LedPin como el valor constante 14 para una operacin de salida, y este lo
sustituye por HIGH 14.
Programa Ejemplo: ControlServoWithPotUsingDirectives.bs2
Este programa funciona igual que el programa ControlServoWithPot.bs2 pero usa
nombre de constantes como pines de E/S.
Meta y ejecute el programa ControlServoWithPotUsingDirectives.bs2
Observe como el servo responde al potenciometro y verifique que se comporta
de la misma manera que el programa ControlServoWithPot.bs2.
' Que es un Microcontrolador - ControlServoWithPotUsingDirectives.bs2
' Lee el otentiometro en el circuit RC-time usando la instruccin RCTIME .
' Le aplica un factor de escala y offset, luego manda el valor al servo.
' {$STAMP BS2}
' {$PBASIC 2.5}
rcPin PIN 7 ' Define pines E/S
servoPin PIN 14
scaleFactor CON 185 ' Declara Constantes
offset CON 500
delay CON 10
time VAR Word ' Declara Variable time
PAUSE 1000 ' Initializacion
Midiendo Rotacin Pgina 165
DO
' Routina Principal
HIGH rcPin ' Mide tiempo de descarga RC
PAUSE delay
RCTIME rcPin, 1, time
time = time */ scaleFactor ' Escala a scaleFactor.
time = time + offset ' time ms Offset
PULSOUT servoPin, time ' Manda pulso al servo.
DEBUG HOME, DEC5 time ' Muestra el ajuste del valor tiempo
LOOP
Su Turno Actualizando la Directiva de PIN
Como se mencion anters, si usted conecta el circuito RC a un pin E/S diferente, usted
puede simplemente cambiar el valor de la directiva RcPin PIN, y este cambio
automticamente se refleja en las instrucciones HIGH RcPin y RCTIME RcPin, 1, time.
Guarde el Programa Ejemplo con un nombre nuevo.
Cambie scaleFactor y offser a los valores nicos para su circuito RC que usted
determinado en la seccin anterior Su Turno.
Ejecute el programa modificado y verifique que trabaja correctamente.
Modifique su circuito moviendo la conexin del circuito RC de pin E/S 7 al pin
de E/S 8.
Modifique la declaracin rcPin que diga:
rcPin PIN 8
Ejecute nuevamente su programa y verifique que las instrucciones HIGH y
RCTIME todava estn funcionando correctamente con el pin diferene que acaba
de cambira con la directiva RcPin PIN.
Pgina 166 Qu es un Microcontrolador?
RESUMEN
Este captulo introdujo el potenciometro, una parte frecuentemente encontrada debajo de
varios botones y perillas. El potenciometro tiene un elemento resistivo que tipicamente se
conecta al exterior con dos terminales y una terminal deslizable que hace contacto en un
punto variable sobre el elemento resistivo. El potenciometro se puede usar como un
resistor variable si la terminal deslizable y una de las terminales exteriores se usan en un
circuito.
En este capitulo tambien se introdujo el capacitor. Un capacitor se puede usar para
almacenar y liberar carga. La cantidad de carga que un capacitor puede almacenar se
relaciona con su valor, que se mide en farads, (F). El smbolo es una notacin de
ingeniera de micro y significa una millonsima. El capacitor utilizado en las actividades
de este captulo fue de 0.01 a 3300 F.
Un resistor y un capacitor se pueden conectar junto en un circuito que necesita cierta
cantidad de tiempo para cargarse y descargarse. A este circuito se le llama comunmente
circuito de tiempo RC. La R y C del circuito de tiempo RC se refieren al resistor y al
capacitor. Cuando un valor (C en las actividades de este captulo) se mantiene constante,
el cambio en el tiempo que le toma para que el circuito se descargue se relaciona con el
valor de R. Cuando cambia el valor de R, el valor que el tiempo toma para que se cargue
y descarge tambien cambia. El tiempo total que le toma al circuito RC para descargarse
puede escalarse usando un capacitor de diferente tamao.
Se uso el polling para monitorear el tiempo de descarga de un capacitor en un circuito
RC en donde el valor de C era muy grande. Se usaron diferentes resistores para mostrar
como cambia el tiempo de descarga cuando cambia el valor del resistor del circuito. Se
us la instruccin RCTIME para monitorear un potenciometro (un resistor variable) en un
circuuito de tiempo RC con un capacitor ms pequeo. Aunque estos capacitores hacen
que el tiempo de descarga tenga un rango de 2 a 1500 us (millonesimas de segundo), el
BASIC Stamp no tiene problemas para controlar estas mediciones de tiempo con la
instruccin RCTIME. El pin E/S debe fijarse en HIGH y entonces al capacitor del
circuito de tiempo RC se le permite descargarse usando PAUSE antes usar la instruccin
RCTIME.
La programacin en PBASIC puede usarse para medir un sensor resistivo como un
potenciometro y escalar su valor para que sea de utilidad con otro dispositivo, por
ejemplo un servo. Esto incluye realizar operaciones matemticas en el tiempo de descarga
de RC medido, que la instruccin RCTIME almacena en una variable. Esta variable
Midiendo Rotacin Pgina 167
puede ajustarse sumandole un valor constante que nos permite controlar el servo. En la
seccin Proyectos, usted puede por si mismo encontrarlo usando multiplicaciones y
divisiones.
La directiva CON puede usarse al principio de un programa para sustituir el nombre de
un valor constante (un nmero). Despus de darle nombre a una constante, el nombre
puede usarse en lugar del nmero en todo el programa. Todo da facilidad, especialmente
si usted necesita usar el mismo nombre en 2, 3, o incluso 100 diferentes lugares en el
programa. Usted puede cambiar el nmero en la directiva CON, y todos los 2, 3, o
incluso 100 diferentes ejemplos de ese nmero se actualizarn automticamente la
siguiente vez que usted ejecute el programa. Las directivas PIN le permiten que usted
le asigne nombre a los pines de E/S. El nombre del pin de E/S es sensible en contexto, de
tal manera que el compilador PBASIC sustituye el nmero del pin E/S correspondiente
por el nombre del pin en instrucciones como HIGH, LOW y RCTIME. Si el nombre del
pin se usa en una frase condicional, este lo sustituye en lugar del registro de entrada
correspondiente como IN2, IN3, etc.
Preguntas
1. Cundo usted gira la perrilla o el botn de un sistema de sonido, que
componente principal est ajustando?
2. En un potenciometro tpico, es ajustable la resistencia entre las dos terminales
exteriores?
3. Por qu se parece un capacitor a una bateria recargable?
4. Qu puede usted hacer con un ciruito de tiempo RC para darle una indicacin
del valor de un resistor variable?
5. Cmo actua la directiva CON? De su explicacin en trminos de un nombre y
un nmero.
Ejercicio
1. Considere que tiene un capacitor de 0.5 F en un circuito de tiempo RC, y desea
que la medicin sea 10 veces mayor? Calcule el valor del nuevo capacitor
Proyectos
1. Agregue un LED bicolor a la actividad #4. Modifique el programa ejemplo para
que el LED bicolor sea rojo cuando gira el servo gira en sentido inverso de las
manecillas del reloj, y verde cuando el servo gira en sentido de la s manecillas
del reloj y no se ilumine cuando el servo mantenga su posicin.
Pgina 168 Qu es un Microcontrolador?
2. Use la instruccin IF...THEN para moficar el primer programa ejemplo de la
actividad #4 de tal forma que el servo solamente gire entre valores de 650 a 800
de PULSOUT.
Soluciones
Q1. Un potenciometro
Q2. No. Est fija. La resistencia variable est entre cualquiera de las terminales
finales y la terminal central
Q3. Q3. Un capacitor es como una pila recargable porque puede cargarse para que
mantenga un voltaje. La diferencia es que solamente retiene la carga por una
pequea cantidad de tiempo.
Q4. Usted puede medir el tiempo que le toma al capacitor descargarse (o cargarse).
Este tiempo se relaciona con la resistecia y la capacitancia. Si se conoce la
capacitancia y la resistencia es variable, entonces el tiempo de descarga da una
indicacin de la resistencia.
Q5. La directiva CON sustituye un nombre por un nmero.
E1. El nuevo capacitor = (10 veces el valor del capacitor viejo) = (10x0.5F) = 5
F.
P1. Actividad #4 agregandole el LED Bicolor
470
P13
P12
1
2
Esquemtico del potenciometro de la Figura
5-11, el servo del captulo 4 actividad #1, y el
LED bicolor de la Figura 2-19, muestra a P15
y P14 que se cambiaron a P13 Y P14.
' Que es un microcontrolador? - Ch5Prj01_ControlServoWithPot.bs2
' Lee el potentiometro en el circuito de tiempo RC usando la
' instruccin RCTIME.
' El tiempo var esta en el rango de 126 a 713, y se nececita un offset
' de 330.
' LED Bicolor en P12, P13 indica la direccion de la rotacin del servo:
' verde para CW, rojo para CCW, apagado cuando el servo esta en
' posicin de reten.
' {$STAMP BS2}
' {$PBASIC 2.5}
Midiendo Rotacin Pgina 169
PAUSE 1000
DEBUG "Programa en Ejecucin!"
time VAR Word ' leyendo el tiempo del
potenciometro
prevTime VAR Word ' lectura previa
DO
prevTime = time ' Almacena la lectura del tiempo anterior
HIGH 7 ' Lee el pot usando RCTIME
PAUSE 10
RCTIME 7, 1, time
time = time + 350 ' Escala el pot, iguala el rango del servo
' al incrementarse, el pot giro CCW
IF ( time > prevTime + 2) THEN
HIGH 13 ' El Led Bicolor es rojo
LOW 12
' valor disminuye, el pot giro CW
ELSEIF ( time < prevTime - 2) THEN
LOW 13 ' LED Bicolor es verde
HIGH 12
ELSE ' El Servo mantiene su posicion
LOW 13 ' LED apagado
LOW 12
ENDIF
PULSOUT 14, time
LOOP
1. La clave es agregar bloques IF...THEN. abajo mostramos un ejemplo. CLREOL
es un til carcter de control DEBUG que significa limpiar al finalizar la lnea.'
' Que es un Microcontrolador - Ch5Prj02_ControlServoWithPot.bs2
' Lee el potentiometro en el circuito de tiempo RC usando la
instruccin RCTIME.
' Modificado con IFTHEN para que el servo slo gire de 650 a 850.
' El tiempo variable vara desde 1 a 691, se necesita un offset mnimo
' de 649 .
' {$STAMP BS2}
' {$PBASIC 2.5}
PAUSE 1000
DEBUG "Programa en ejecucin!"
time VAR Word
DO
Pgina 170 Qu es un Microcontrolador?
HIGH 7 ' Lee el pot con RCTIME
PAUSE 10
RCTIME 7, 1, time
time = time + 649 ' Escala tiempo al rango del servo
IF (time < 650) THEN ' Limita el rango de 650 a 850
time = 650
ENDIF
IF (time > 850) THEN
time = 850
ENDIF
PULSOUT 14, time
DEBUG HOME, "time = ", DEC4 time, CLREOL
LOOP
Indicadores Digitales Pgina 171
Captulo 6: Indicadores Digitales
EL INDICADOR DIGITAL DE TODOS LOS DIAS
La Figura 6-1 muestra un indicador en el frente de la puerta de un horno. Cuando el
horno no se usa, muestra la hora. Cuando se usa el horno, muestra el tiempo de
cocimiento, y parpadea al mismo tiempoque una alarma suena para indicarle que el
alimento est listo. Un microcontrolador dentro de la puerta del horno monitorea los
botones push y actualiza el indicador. Tambien monitorea un sensor interno del horno y
conmuta dispositivos que energizan y desenergizan el elemento de calentamiento.
Figura 6-1
Reloj Digital con
Indicador de 7
segmentos en la puerta
del horno.
Cada uno de los tres dgitos de la Figura 6-1 se llama indicador de 7 segmentos. En este
captulo, usted programar el BASIC Stamp para mostrar nmeros y letras en un
indicador de 7 segmentos.
QU ES UN INDICADOR DE 7 SEGMENTOS?
Un Indicador de 7 segmentos es un bloque rectangular de 7 lneas de igual longitud que
puede iluminarse selectivamente con LEDs para mostrar digitos y algunas letras. La
Figura 6-2 muestra un dibujo de un indicador de 7 segmentos que usted usar en las
actividades de este captulo. Tambin tiene un punto que puede usarse como punto
decimal. Cada uno de los segmentos (desde A hasta G) y el punto contienen un LED
separado, que pueden controlarse individualmente. La mayora de los pines tiene un
nmero junto con una etiqueta que corresponde a uno de los LEDs del segmento. El pin 5
tiene la etiqueta DP, que significa punto decimal. Los pines 3 y 8 tienen la etiqueta
ctodo comn y estudiaremos su significado cuando veamos su diagrama.
Pgina 172 Qu es un Microcontrolador?
G
F
A
B
E
D
C
10 9 7 6
1 2 4 5
Common
Cathode
Common
Cathode
E D C DP
G F A B
8
3
Figura 6-2
Indicador de 7 segmentos
Dibujo y mapa de pines.
Mapa de pines La figura 6-2 es un ejemplo de un mapa de pines. Un mapa de pines
contiene informacin til que le ayuda conectar una parte a otros circuitos. El mapa de
pines usualmente muestra un nmero para cada pin, un nombre para cada pin y una
referencia.
Mire la Figura 6-2. Cada pin est numerado, y el nombre para cada pin es la letra del
segmento cercano al pin. La referencia para esta parte es el punto decimal. Oriente la parte
de tal forma que el punto decimal est abajo a la derecha. Entonces usted puede ver con el
mapa de pines que el Pin 1 est abajo a la izquierda, y el nmero de los pines se
incrementa en sentido inverso de las manecillas del reloj alrededor de la envolvente.
La Figura 6-3 muestra un esquemtico del LED dentro del indicador LED de 7
segmentos. Cada nodo del LED se conecta a un solo pin. Todos los ctodos se conectan
juntos por alambres dentro de la parte. Debido a que los ctodos comparten una conexin
comn, al indicador LED de 7 segmentos se le llama de ctodo comn. Se pueden
conectar los pines 3 o 8 de la parte a Vss, usted conectar todos los ctodos del LED a
Vss.
Indicadores Digitales Pgina 173
E C B A F
LEDs
3 8
G DP
1 4 6 7 9 10 5
Figura 6-3
Esquemtico de un
Indicador LED de 7
segmentos
ACTIVIDAD #1: CONSTRUYENDO Y VERIFICANDO EL INDICADOR LED
DE 7 SEGMENTOS
En esta actividad, usted manualmente construir circuito para verificar cada segmento del
indicador.
Partes para la prueba del Indicador LED de 7 segmentos
Un indicador LED de 7 segmentos
5 Resistores de 1 K (caf-negro-rojo)
Un alambre para puente
Circuitos de Prueba para el indicador de 7 segmentos
Con la energa desconectada de su Tablilla Board of Education o HomeWork
Board, construya el circuito mostrado en la Figura 6-4 y 6-5.
Reconecte la alimentacin y verifique que el segmeto A se ilumina.
Qu significa x debajo de nc en el esquemtico? nc significa no hay conexin o
no conectado. Esto indica que el pin particular del indicador LED de 7 segmentos no est
conectado a ninguna parte. La x al final del pin tambin significa no conectado. Los
esquemticos algunas veces usan x o nc.
Pgina 174 Qu es un Microcontrolador?
Vdd
1 k
X
nc
E C B A F
LEDs
3 8
G DP
1 4 6 7 9 10 5
X
nc
X
nc
X
nc
X
nc
X
nc
X
nc
X
nc
Vss
Figura 6-4
Esquemtico del circuito
de prueba para el
segmento A del
indicador LED
P
1
5
P
1
4
P
1
3
P
1
2
P
1
1
P
1
0
P
9
P
8
P
7
P
6
P
5
P
4
P
3
P
2
P
1
P
0
X
2
X
3
V
d
d
V
s
s
V
i
n
Figura 6-5
Diagrama de alambrado
del circuito de prueba
para el segmento A
del indicador LED.
Desconecte la alimentacin y modifique el circuito para conectar el resistor a la
entrada B del LED como lo muestran la Figura 6-6 y 6-7.
Indicadores Digitales Pgina 175
Vdd
1 k
X
nc
E C B A F
LEDs
3 8
G DP
1 4 6 7 9 10 5
X
nc
X
nc
X
nc
X
nc
X
nc
X
nc
Vss
X
nc
Figura 6-6
Esquemtico del circuito
de prueba para el
segmento B del
indicador LED
P
1
5
P
1
4
P
1
3
P
1
2
P
1
1
P
1
0
P
9
P
8
P
7
P
6
P
5
P
4
P
3
P
2
P
1
P
0
X
2
X
3
V
d
d
V
s
s
V
i
n
Figura 6-7
Diagrama de alambrado
del circuito de prueba
para el segmento B del
indicador LED.
Reconecte la alimentacin y verifique que se ilumina el segmento B.
Usando el mapa de pines de la Figura 6-2 como gua, repita estos pasos para los
segmentos C hasta G.
Pgina 176 Qu es un Microcontrolador?
Su Turno El nmero 3 y la letra H
La Figura 6-8 y 6-9 muestran el dgito 3 alambrado en el indicador LED de 7 segmentos.
Vdd
X
nc
E C B A F
LEDs
3 8
G DP
1 4 6 7 9 10 5
X
nc
X
nc
X
nc
Vss
Vdd
1 k all) (
Vdd Vdd Vdd
Figura 6-8
Alambrado del dgito
3
P
1
5
P
1
4
P
1
3
P
1
2
P
1
1
P
1
0
P
9
P
8
P
7
P
6
P
5
P
4
P
3
P
2
P
1
P
0
X
2
X
3
V
d
d
V
s
s
V
i
n
Figura 6-9
Diagrama de
alambrado de la
Figura 6-8
Construya y verifique el circuito mostrado en la Figura 6-8 y Figura 6-9 y
verifique que mustra el nmero 3.
Dibuje un esquemtico que mostrar el nmero 2 en el LED de 7 segmentos.
Contruya y verifique el circuito para asegurarse que funciona. Si tiene fallas
solucionelas.
Indicadores Digitales Pgina 177
Determine el circuito necesario para la letra H y despus construyalo y
verifiquelo.
ACTIVIDAD #2: CONTROLANDO EL INDICADOR LED DE 7 SEGMENTOS
En esta actividad usted conectar el LED de 7 segmentos a el BASIC Stamp y ejecutar
un programa simple para verificar y asegurarse que cada LED est conectado
correctamente.
Partes para el Indicador LED de 7 segmentos
Un indicador LED de 7 segmentos
8 Resistores de 1 K (caf-negro-rojo)
5 Alambres para puentes
Conectando el Indicador LED de 7 segmentos a el BASIC Stamp
La Figura 6-11 muestra el esquemtico y la Figura 6-12 muestra el diagrama de
alambrado para este ejemplo de BASIC Stamp controlando un indicador LED de 7
segmentos.
Esquematico y mapa de pines. Si usted est tratando de construir el circuito del
esquemtico de la Figura 6-11 sin ayuda de la Figura 6-12, asegrese de consultar el mapa
de pines del indicador LED de 7 segmentos, mostrado para su conveniencia en la Figura 6-
10.
G
F
A
B
E
D
C
10 9 7 6
1 2 4 5
Common
Cathode
Common
Cathode
E D C DP
G F A B
8
3
Figura 6-10
Dibujo del Indicador LED de 7
segmentos y Mapa de pines
Pgina 178 Qu es un Microcontrolador?
E C B A F
LEDs
common
G DP
Vss
1 k
(All)
P8
P9
P10
P11
P12
P13
P14
P15
Figura 6-11
Esquematico
del BASIC
Stamp
controlando
un Indicador
LED de 7
segmentos.
Sea cuidadoso con los resistores conectados a P13 Y P14. Observe cuidadosamente a los
resistores conectados en P13 y P14 de la Figura 6-12. Hay una distancia entre estos dos
resistores. El espacio se muestra porque el pin 8 del indicador LED de 7 segmentos est
sin conectar. Un resistor conecta el pin E/S P13 con pin 9 del indicador LED de 7
segmentos. Otro resistor conecta a P14 con el pin 7 del indicador de 7 segmentos
P
1
5
P
1
4
P
1
3
P
1
2
P
1
1
P
1
0
P
9
P
8
P
7
P
6
P
5
P
4
P
3
P
2
P
1
P
0
X
2
X
3
V
d
d
V
s
s
V
i
n
E
DP
C D G F A B
Figura 6-12
Diagrama de alambrado
para la Figrua 6-11.
Use las letras de letras
de arriba de los
segmentos en este
diagrama como
referencia.
Indicadores Digitales Pgina 179
Dispositivo Paralelo El indicador LED de 7 segmentos se llama dispositivo paralelo
porque el BASIC Stamp tiene que usar un grupo de lneas de E/S para mandar datos al
dispositivo (informacin high y low). En el caso de este indicador LED de 7 segmentos toma
8 pines de E/S para decirle al dispositivo lo que tiene que mostrar.
Bus Paralelo. Los alambres que transmiten las seales HIGH/LOW desde el BASIC Stamp
al indicador LED de 7 segmentos se llaman BUS PARALELO. Observe que estos alambres
se dibujan como lneas paralelas en la Figura 6-11. El termino paralelo hace referencia a
la geometra del esquemtico.
Programando la Prueba del Indicador LED de 7 segmentos
Las instrucciones HIGH y LOW aceptarn una variable Pin como argumento. Para
verificar cada segmento, uno a la vez, simplemente coloque las instrucciones HIGH y
LOW en un bucle FOR...NEXT, y use el indice para fijar nuevamente los pines E/S en
HIGH y LOW.
Meta y ejecute el programa SegmentTestWithHighLow.bs2
Verifique que cada segmento en el indicador LED de 7 segmentos se ilumina
brevemente girando nuevamente en apagado y encendido.
Haga una lista de que segmento controla cada pin de E/S.
Programa Ejemplo: SegmentTestWithHighLow.bs2
' Que es un Microcontrolador- SegmentTestWithHighLow.bs2
' Individualmente verifique cada segmento en un indicador LED de 7-Segment .
'{$STAMP BS2}
'{$PBASIC 2.5}
pinCounter VAR Nib
PAUSE 1000
DEBUG "Pin de E/S", CR,
"-------", CR
FOR pinCounter = 8 TO 15
DEBUG DEC2 pinCounter, CR
HIGH pinCounter
PAUSE 1000
LOW pinCounter
NEXT
Pgina 180 Qu es un Microcontrolador?
Su Turno Un Patrn Diferente
Quitando la instruccin LOW pinCounter tendr un efecto interesante.
Haga que la instruccin LOW pinCounter sea un comentario, agreguele un
apostrofe a su izquierda.
Ejecute el programa modificado y observe el efecto.
ACTIVIDAD #3: MOSTRANDO DIGITOS
Incluyendo el punto decimal hay 8 diferentes seales high/low que los pines de E/S del
BASIC Stamp manda al indicador LED de 7 segmentos. Esto es, ocho diferentes
instrucciones HIGH o LOW para mostrar un nmero. Si usted desea contar de cero a
nueve, requerira una gran cantidad de programacin. Afortunadamente hay variables
especiales que puede usted usar para fijar los valores high y low para los grupos de pines
de E/S.
En esta actividad, usar 8 nmeros binarios en lugar de instrucciones HIGH y LOW para
controlar las seales high/low que manda el BasicStamp a los pines: Al fijar variables
especiales llamadas DIRH y OUTH iguales a los nmeros binarios usted ser capaz
De controlar las seales high/low mandadas a los pines E/S conectados al circuito del
indicador LED de 7 segmentos usando una sla instruccin PBASIC.
8 bits aquello que tiene 8 dgitos se dice que tiene 8 bits. : A binary number Cada bit es un
lugar donde puede almacenar un 1 o un 0.
Un Byte es una variable que contiene 8 bits. Hay 256 diferentes combinaciones de ceros y
unos que usted puede usar para contar desde 0 a 255 con 8 bits. Esta es la razn por la
cual una variable Byte puede almacenar un nmero entre 0 y 255.
Partes y Circuito para Mostrar Digitos
Las mismas de la actividad anterior.
Programando PATRONES On/Off usando nmeros binarios
En esta actividad, usted experimentar con las variables DIRH y OUTH. DIRH es una
variable que controla la direccin (entrad o salida) de los pines de E/S desde P8 hasta
P15. OUTH controla las seales high o low que cada unos de estos pines E/S manda.
Como usted pronto ver, OUTH es especialmente til porque usted puede usarla para
mandar al mismo tiempo las seales high/low para 8 diferentes pines con solamente una
Indicadores Digitales Pgina 181
instruccin. Este es un programa ejemplo que muestra como se pueden usar estas dos
variables para contar desde 0 hasta 0 con el indicador LED de 7 segmentos sin usar las
instrucciones HIGH y LOW.
Programa Ejemplo. DisplayDigits.bs2
Este Programa Ejemplo reciclara los digitos de 0 a 9 en el indicador LED de 7 segmentos.
Meta y ejecute el programa DisplayDigits.bs2
Verifique que se muestran los dgitos de 0 hasta 9.
' Que es un Microcontrolador - DisplayDigits.bs2
' Se muestran los digitos de 0 a 9 en el indicador LED de 7 segmentos.
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Program Running!"
OUTH = %00000000 ' OUTH se inicializa en low.
DIRH = %11111111 ' Fiha P8-P15 todo en low.
' Digito:
' BAFG.CDE
OUTH = %11100111 ' 0
PAUSE 1000
OUTH = %10000100 ' 1
PAUSE 1000
OUTH = %11010011 ' 2
PAUSE 1000
OUTH = %11010110 ' 3
PAUSE 1000
OUTH = %10110100 ' 4
PAUSE 1000
OUTH = %01110110 ' 5
PAUSE 1000
OUTH = %01110111 ' 6
PAUSE 1000
OUTH = %11000100 ' 7
PAUSE 1000
OUTH = %11110111 ' 8
PAUSE 1000
OUTH = %11110110 ' 9
PAUSE 1000
DIRH = %00000000 ' Los pines E/S a entrada,
' de segmentos apagados.
END
Pgina 182 Qu es un Microcontrolador?
Funcionamiento de DisplayDigits.bs2
La Figura 6-13 le muestra como puede usar las variables DIRH y OUTH para controlar la
direccin y estado (high/low) de los pines de E/S desde P8 hasta P15.
OUTH = %00000000
DIRH = %11111111
P
1
5
P
1
4
P
1
3
P
1
2
P
1
1
P
1
0
P
9
P
8
P
7
P
6
P
5
P
4
P
3
P
2
P
1
P
0
X
2
X
3
V
d
d
V
s
s
V
i
n
Figura 6-13
Usando DIRH y OUTH
para fijar todos los pines
a Salida-Low
La primera instruccin:
OUTH = %00000000
Hace que todos los pines E/S (de P8 a P15) estn listos para mandar seales low. Si
todos ellos mandan seales low, apagarn todos los LEDs del indicador LED de 7
segmentos. Si usted desea que todos los pines E/S manden una seal high usted podra
usar OUTH = %11111111
Qu hace %? El simbolo % formato en Binario se usa para decirle al Editor BASIC
Stamp que el nmero es un nmero binario. Por ejemplo, el nmero binario %00001100 es
lo mismo que el nmero decimal 12. Como usted ver en esta actividad, los nmeros
binarios pueden hacer ms fcil muchas tareas de programacion.
Las seales low verdaderamente no se manda por los pines E/S hasta que se usa la
variable DIRH que cambia los pines E/S de entrada a salida. La instruccin:
DIRH = %11111111
Indicadores Digitales Pgina 183
Fija los pines de E/S desde P8 hast P15 como salidad. Tan pronto como se ejecuta esta
instruccin P8 hasta P15 empiezan a mandar seales low. Esto se debe a que la
instruccin OUTH = 00000000 se ejecut justamente antes de la instruccin DIRH. Tan
pronto como la instruccin DIRH fija todos los pines como salida, empiezan a mandar
seales low.
Usted tambien puede usar DIRH = %00000000 para cambiar todos los pines E/S en
entradas.
Antes que los pines E/S se conviertan en salidas: Hasta que los pines de entrada cambian a
salida, sensan las seales y actualizan la variable INH. Esta es la variable que contiene IN8,
IN9 hasta IN15. Estas variables se pueden usar de la misma forma que se usaron IN3 y IN4
para leer los botones push en el Captulo 3 Entrada Digital Botones push.
En el BASIC Stamp todos los pines de E/S se inicializan como entradas. A esto se le llama
default. Usted tiene que decirle a el BASIC Stamp que un pin I/O cambie a salida antes de
que empiece a mandar seales high o low. Las dos instrucciones HIGH y LOW cambian
automticamente la direccin de los pines E/S del BASIC Stamp como salida. Colocando un
1 en la variable DIRH tambin se hacen uno los pines de E/S en salida.
Siempre fije valores en un registro OUT antes de hacerlos salidas con valores en el registro
DIR correspondiente. Esto previene que brevemente se manden seales no desadas. Por
ejemplo, si a DIR5 = 1 le sigue OUT5 = 1 en el principio de un programa, el brevemente
manda una seal low no deseada antes de cambiar a high porque OUT5 almacena cero
cuando el programa comienza. (En BASIC Stamp todas las variables/registros se inicializan
en 0.) Si OUT5 = 1 y le sigue DIR5 =1, el pin de E/S mandar una seal high tan pronto
como se convierta en salida.
Como los valores almacenados por default en todas las variables es 0 cuando el programa
inicia, la instruccin OUTH = %00000000 en realidad es redundante.
La Figura 6-14 muestra como usar la variable OUTH para mandar selectivamente seales
high y low a P8 hasta P15. Un 1 binario se usa para mandar una seal high, y un 0 binario
se usa para mandar una seal low. Este ejemplo muestra el nmero tres en el indicador
LED de 7 segmentos:
' BAFG.CDE
OUTH = %11010110
Pgina 184 Qu es un Microcontrolador?
OUTH = %11010110
P
1
5
P
1
4
P
1
3
P
1
2
P
1
1
P
1
0
P
9
P
8
P
7
P
6
P
5
P
4
P
3
P
2
P
1
P
0
X
2
X
3
V
d
d
V
s
s
V
i
n
BAFG.CDE
Figura 6-14
Usando OUTH para
controlar las seales
High/Low desde P8
hasta P15
La instruccin OUTH = %11010110 usa ceros binarios para fijar los pines E/S P8, P11 y
P13 en low, y usa unos binarios para fijar P9, P10, P12, P14 y P15 en high. La linea
debajo de la instruccin es un comentario que muestra las etiquetas del segmento con el
valor binario que hace que el segmento se ilumine o se apague.
Dentro de HIGH and LOW commands:
HIGH 15 ...es lo mismo que:
OUT15 = 1
DIR15 = 1
Igualmente , la instruccin :
LOW 15
...es lo mismo que:
OUT15 = 0
DIR15 = 1
Si desea cambiar P15 como entrada, use DIR15 = 0. Entonces, puede usar IN15 para
detectar (en lugar de mandar) seales high/low .
Su Turno Mostrado A hasta F
Calcule que patrones binarios (combinaciones de ceros y unos) necesitar para
mostrar las letras A, b, C, d, E y F.
Modifique el programa DisplayDigits.bs2 para que muestre A, b, C, d, E y F.
Indicadores Digitales Pgina 185
Decimal vs Hexadecimal
Los digitos basicos en el sistema de nmeros decimales son;
0,1,2,3,4,5,6,7,8,9
En el hexadecimal (base-16) en el nmero de dgitos del sistema de base son:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
La Base-16 se usa mucho en la programacin de computadoras y microcontroladores. Una
vez que usted sepa calcular como mostrar los caracteres de A hasta F, usted podr
modificar su programa para contar en hexadecimal de 0 hasta F.
Guardando las Listas de los Patrones On/Off
La instruccin LOOKUP facilita la escritura de los cdigos del Indicador LED de 7
segmentos. La instruccin LOOKUP le permite que vea elementos de una lista. Este es
un ejemplo de cdigo que usa la instruccin LOOKUP:
LOOKUP index, [7, 85, 19, 167, 28], value
Hay dos variables que usa estra instruccin index y value. Si index es 0, value
almacena 7, Si index es 1, value almacena 85. En el siguiente programa ejemplo, index
vale 2, entonces la instruccin LOOKUP coloca 19 en value y eso es lo que muestra la
Terminal Debug.
Programa Ejemplo: SimpleLookup.bs2
Meta y ejecute el programa SimpleLookup.bs2
Ejecute el programa con la variable index fiajdo en 2.
Trate de ajustar la variable index igual a un nmero entre 0 y 4.
Ejecute nuevamente el programa despues de cada cambio en la variable index y
observe que valor de la lista se coloca en la variable value.
Opcional: Modifique el programa colocando la instruccin LOOKUP en un
bucle FOR...NEXT que cuente de 0 a 4.
' Que es un Microcontrolador - SimpleLookup.bs2
' Muestra un valor usando un indice y una Tabla.
' {$STAMP BS2}
' {$PBASIC 2.5}
value VAR Byte
index VAR Nib
Pgina 186 Qu es un Microcontrolador?
index = 2
PAUSE 1000
DEBUG ? index
LOOKUP index, [7, 85, 19, 167, 28], value
DEBUG ? value, CR
DEBUG "Cambie la variable indice de un ", CR,
"numero diferente (entre 0 y 4).", CR, CR,
"Ejecute el programa moficado y ", CR,
"verifique que ve el nmero", CR,
"que la instruccin LOOKUP coloca en el", CR,
"variable valor."
END
Programa Ejemplo: DisplayDigitsWithLookup.bs2
Este programa ejemplo muestra como la instruccin LOOKUP puede verdaderamente
facilitar el almacenamiento de patrones de bits usados en la variable OUTH.
Nuevamente, la variable index se usa para escoger que valor binario se coloca en la
variable OUTH. Este Programa Ejemplo cuenta desde 0 a 9. La diferencia entre este
programa y el programan DisplayDigits.bs2 es que este programa es mucho ms versatil.
Es mucho ms rpido y facil de ajustar para diferenes secuencias de nmeros usando
tablas lookup.
Meta y el ejecute el programa DisplayDigitsWithLookup.bs2
Verifique que hace las mismas acciones que el programa anterior (con mucho
menor trabajo)
Vea la Terminal Debug mientras se ejecuta el programa. Esta muestra como el
valor de index se usa con la instruccin LOOKUP para cargar el valor binario
correcto desde la lista en OUTH.
Indicadores Digitales Pgina 187
' Que es un Microcontrolador - DisplayDigitsWithLookup.bs2
' Use una tabla lookup para almacenar y mostrar digitos con un indicador LED
7-segment .
'{$STAMP BS2}
'{$PBASIC 2.5}
index VAR Nib
OUTH = %00000000
DIRH = %11111111
PAUSE 1000
DEBUG "index OUTH ", CR,
"----- --------", CR
FOR index = 0 TO 9
LOOKUP index, [ %11100111, %10000100, %11010011,
%11010110, %10110100, %01110110,
%01110111, %11000100, %11110111, %11110110 ], OUTH
DEBUG " ", DEC2 index, " ", BIN8 OUTH, CR
PAUSE 1000
NEXT
DIRH = %00000000
END
Su Turno Nuevamente mostrando de 0 a F
Modifique el programa DisplayDigitsWithLookup.bs2 para que cuente en hexadecimal
de 0 a F. No olvide actualizar el argumento EndValue del bucle FOR...NEXT.
ACTIVIDAD #4: MOSTRANDO LA POSICIN DE UN DIAL
En el captulo 5, Actividad #4 usted us el potenciometro para controlar la posicin de
un servo. En esta actividad, usted mostrara la posicin de un potenciometro usando un
indicador LED de 7 segmentos.
Partes para el Dial y el Indicador
Un indicador LED de 7 segmentos
8 Resistores de 1 K (caf-negro-rojo)
Un Potenciometro de 10 K
Un Resistor de 220 (rojo-rojo-caf)
Un capacitor de 0.1 F
Siete alambres para puentes.
Pgina 188 Qu es un Microcontrolador?
Construyendo los circuitos Dial e Indicador
La Figura 6-15 muestra el esquemtico de un circuito potenciometro que debe ser
agregado a proyecto. La Figrua 6-16 muestra el diagrama de alambrado del circuito de la
Figura 6-15 combinada con el circuito de la Figura 6-11.
Agregue el circuito del potenciometro al circuito del indicador LED de 7
segmentos como se muestra en la Figura 6-16.
Figura 6-15
Esquemtico del circuito
del potenciometro
agregado al proyecto.
Figura 6-16
Diagrama de alambrado
para la Figura 6-15
Programando el Dial e Indicador
Hay una instruccin muy til llamadoa LOOKDOWN, y claro, es la instruccin inversa a
LOOKUP.Entanto que la instruccin LOOKUP entregra un nmero basado en un ndice,
la instruccin LOOKDOWN entrega un ndice basado en un nmero.
Programa Ejemplo: SimpleLookdown.bs2
Este Programa Ejemplo demuestra el funcionamiento de la instruccin LOOKDOWN
Indicadores Digitales Pgina 189
Meta y ejecute el programa SimpleLookdown.bs2.
Ejecute el programa, como es, con la variable value fijada en 167, y use la
Terminal Debug para observar el valor del index
Trate de fijar la variable value con cada uno de los nmeros de la lista de la
instruccin LOOKDOWN: 7,85,19,28
Ejecute otra vez el programa despus de cada cambio en la variable value y
observe que valor la lista obtiene y lo coloca en la variable index
Cuestion interesante: Qu sucede si su valor es mayor que 187? Este pequeo giro en
la instruccin LOOKDOWN puede causar problemas porque la instruccin LOOKDOWN no
hace cambios en el index
' Que es un Microcontrolador - SimpleLookdown.bs2
' Debug un indice usando un valor la tabla lookup .
' {$STAMP BS2}
' {$PBASIC 2.5}
value VAR Byte
index VAR Nib
value = 167
PAUSE 1000
DEBUG ? value
LOOKDOWN value, [7, 85, 19, 167, 28], index
DEBUG ? index, CR
DEBUG "Cambie el valor de la variable a un ", CR,
"numero diferente en esta lista:", CR,
"7, 85, 19, 167, or 28.", CR, CR,
"Ejecute el programa modificado ", CR,
"verifique que ve el nmero que ", CR,
"que la instruccin LOOKDOWN coloca en la ", CR,
"variable indice."
END
A menos que le indique una diferente clase de comparacin la instruccin LOOKDOWN
verifica para ver si un valor es igual a una entrada de la lista. Usted tambin puede
verificar para ver si un valor es mayor que, menor que o igual a, etc. Por ejemplo, para
buscar una entrada en el que el valor de la variable value es menor que o igual que, use
el operador <= justamente antes del primer parenteis que empieza la lista. En otras
Pgina 190 Qu es un Microcontrolador?
palabras, el operador regresa el ndice del primer valor en la lista que hace la frase
verdadera en la instruccin.
Modifique SimpleLookdown.bs2. sustituyendo las frases value y LOOKDOWN
en lugar de los que ya existen.
Modifique las instruccin DEBUG para que muestre:
DEBUG "Cambie la variable value a un ", CR,
"numero diferente en este rango:", CR,
"0 a 170.", CR, CR,
"Ejecute el programa modificado y ", CR,
"verifque que se ver el nmero que ", CR,
"la instruccin LOOKDOWN coloca en la ", CR,
"variable indice."
Experimente con diferentes valores y vea si la variable index muestra lo que
usted esperaba.
Programama Ejemplo: DialDisplay.bs2
Este Programa Ejemplo refleja la posicin de la perilla del potenciometro iluminando
segmentos exteriores alrededor del indicador LED de 7 segmentos como se muestra en la
Figura 6-17
Figura 6-17
Mostrando la posicin del
potenciometro con el indicador LED
de 7 segmentos
Meta y ejecute el programa DialDisplay.bs2
Gire la perilla del potenciometro y asegurese que funciona. Recuerde presionar
al potenciometro en la tablilla para que asiente correctamente.
Cuando ejecuta el Programa Ejemplo quiz no sea tan preciso como lo muestra
la Figura 6-17 Ajuste los valores en la Tabla para que el Indicador Digital
muestra con mayor precisin la posicin mostrada del potenciometro.
' Que es un Microcontrolador - DialDisplay.bs2
' Muestre la posicin del POT usando un indicador LED de 7-segment .
Indicadores Digitales Pgina 191
'{$STAMP BS2}
'{$PBASIC 2.5}
PAUSE 1000
DEBUG "Programa en Ejecucin
index VAR Nib
time VAR Word
OUTH = %00000000
DIRH = %11111111
DO
HIGH 5
PAUSE 100
RCTIME 5, 1, time
LOOKDOWN time, <= [40, 150, 275, 400, 550, 800], index
LOOKUP index, [ %11100101, %11100001, %01100001,
%00100001, %00000001, %00000000 ], OUTH
LOOP
Funcionamiento del programa DialDisplay.bs2
Este Programa Ejemplo toma mediciones con RCTIME del potenciometro y las almacena
en una variable llamada time
HIGH 5
PAUSE 100
RCTIME 5, 1, time
La variable time se usa en una tabla LOOKDOWN. La tabla LOOKDOWN decide que
nmero en la lista time es menor que, y luego carga el nmero (0 a 5 en este caso) en la
variable indice
LOOKDOWN time, <= [40, 150, 275, 400, 550, 800], index
En seguida, la variable index se usa en una tabla LOOKUP para escoger el valor
binario a cargar en la variable OUTH.
LOOKUP index, [ %11100101, %11100001, %01100001,
%00100001, %00000001, %00000000 ], OUTH
Pgina 192 Qu es un Microcontrolador?
Su Turno Agregando un Segmento
El programa DialDisplay.bs2 solo gira cinco de los seis segmento cuando usted gira la
perilla. La secuencia de giro de los LEDs del programa DialDisplay.bs2 es E, F, A, B, C,
el segmento D no se ilumina.
Guarde el programa DialDisplay.bs2 con el nombre DialDisplayYourTurn.bs2
Modifique DialDisplayYourTurn.bs2 para que haga que los seis LEDs exteriores
se iluminen conforme gira el potenciometro. La secuencia deber ser: E,F,A,B,C,
y D.
Sugerencia: Quite el circuito LED de su tablilla. Estaremos usando nuevamente el circuito
indicador LED de 7 segmentos con otros circuitos del Captulo 7, Actividad 4.
RESUMEN
Este captulo introdujo el indicador LED de 7 segmentos, y la lectura de un mapa de
pines. Este captulo tambin introdujo algunas tcnicas para dispositivos y circuitos que
tienen entradas paralelas. Se introdujeron las variables DIRH y OUTH como un medio
para controlar los valores de los pines E/S del BASIC Stamp de P8 hasta P15. Se
introdujeron las instrucciones LOOKUP y LOOKDOWN como un medio de referencia
de listas de valores usados para mostrar letras y nmeros.
Preguntas
1. En un indicador LED de 7 segmentos cual es el ingrediente activo que hace que
un indicador muestre datos cuando un microcontrolador senda seales high y
low?
2. Qu significa ctodo comn? Qu piensa que significa nodo comn?
3. Cmo se llama al grupo de alambres que conducen seales de y hacia un
dispositivo paralelo?
4. Cules son los nombres de las instrucciones que en este captulo se usaron para
manejar listas de valores?
Ejercicios
1. Escriba un comando OUTH para fijar en high P8, P10,P12. y P9, P11 Y P13
en low. Considere que todos los pines de E/S comienzan como entradas,
escriba la instruccin DIRH que har que los pines de E/S de P8 a P13 manden
seales high/low mientras que P14 y P125 se configuren como entradas.
Indicadores Digitales Pgina 193
2. Escriba los valores requeridos de OUTH para formar las letras: a, C, d, F, H, I, n,
P, S.
Proyecto
1. Deletree FISH CHIPS And Dip en forma permanente con su indicador LED de
7 segmentos. Haga que cada letra dure 400 ms.
Soluciones
Q1. El ingrediente activo es un LED.
Q2. Ctodo comn significa que todos los ctodos se conectan juntos, esto es, ellos
comparten un punto de conexin comn. nodo comn podra significar que
todos los nodos se conectan juntos.
Q3. Un Bus en Paralelo.
Q4. Las instrucciones LOOKUP y LOOKDOWN manejas listas de valores.
E1. El primer paso para configurar OUTH es fijar en 1 cada posicin especificada
del bit como HIGH. Entonces los bits 8,10 y 12 se fijan en 1. Luego poner 0
para cada LOW. Entonces los bists 9, 11 y 13 se fijan en 0. Para configurar
DIRH, los pines especificados 8,10,12,11, y 13 deben ponerse como salidas
mandandoles un bit en 1. 15 y 14 se configuran como entradas colocando
ceros en los bits 15 y 14. El segundo paso es traducir esto a lenguage PBASIC.
Bit 15 14 13 12 11 10 9 8
OUTH 0 0 0 1 0 1 0 1
Bit 15 14 13 12 11 10 9 8
DIRH 0 0 1 1 1 1 1 1
OUTH = %00010101 DIRH = %00111111
E2. La clave para resolver este problema es dibujar cada letra y observar que
segmentos deben iluminarse. Coloque un 1 en cada segmento que debe
iluminarse. Translade eso valores binarios OUTH. La lista de segmentos
BAFG.CDE para los bits de OUTH est en la Figura 5-14.
Pgina 194 Qu es un Microcontrolador?
Letra LED Segmentos B A F G.C D E OUTH Valor =
a e, f, a, b, c, g 1 1 1 1 0 1 0 1 %11110101
C a, f, e, d 0 1 1 0 0 0 1 1 %01100011
d b, c, d, e, g 1 0 0 1 0 1 1 1 %10010111
F a, f, e, g 0 1 1 1 0 0 0 1 %01110001
H f, e, b, c, g 1 0 1 1 0 1 0 1 %10110101
I f, e 0 0 1 0 0 0 0 1 %00100001
n e, g, c 0 0 0 1 0 1 0 1 %00010101
P all but c and d 1 1 1 1 0 0 0 1 %11110001
S a, f, g, c, d 0 1 1 1 0 1 1 0 %01110110
From Figura on page 172.
G
F
A
B
E
D
C
10 9 7 6
1 2 4 5
Common
Cathode
Common
Cathode
E D C DP
G F A B
8
3
P1. Use el esquemtico de la Figura 6-11. Para resolver este problema modifique el
programa DisplayDigitsWithLookup.bs2, usando el patrn de letras que resolvi
en el Ejercicio 2. En la solucin las letras tienen que arreglarse como constantes
para hacer el programa ms intuitivo. Es correcto usar los valores binarios, pero
est sujeto a mayores errores.
' Que es un Microcontrolador - Ch6Prj01_FishAndChips.bs2
' Use la tabla lookup para almacenar y mostrar los digitos
' en un indicador 7-segment. Deletree el mensaje: FISH CHIPS And dIP
'{$STAMP BS2}
'{$PBASIC 2.5}
' Patrones del indicador 7-Segment para crear letras
A CON %11110101
C CON %01100011
d CON %10010111
F CON %01110001
H CON %10110101
I CON %00100001
n CON %00010101
P CON %11110001
S CON %01110110
space CON %00000000
index VAR Byte ' 19 caracteres por mensaje
OUTH = %00000000 ' Todos apagados al iniciar
DIRH = %11111111 ' Todos los LEDs deben ser salidas
PAUSE 1000 ' 1 sec. Antes del 1er. mensaje
DO
DEBUG "indice OUTH ", CR,
Indicadores Digitales Pgina 195
"----- --------", CR
FOR index = 0 TO 18 ' 19 Caracteres por mensaje
LOOKUP index, [ F, I, S, H, space, C, H, I, P, S, space,
A, n, d, space, d, I, P, space ], OUTH
DEBUG " ", DEC2 index, " ", BIN8 OUTH, CR
PAUSE 400 ' 400 ms entre letras
NEXT
LOOP
Pgina 196 Qu es un Microcontrolador?
Captulo 7: Midiendo Luz
DISPOSITIVOS QUE CONTIENEN SENSORES DE LUZ
En los capitulos anteriores introdujimos botones push como sensores de contacto/presin
y potenciometros como sensores de rotacin/posicin. Estos dos sensores son comunes en
los productos electrnicos, solamente piense cuantos aparatos con botones y perillas usa
diariamente. Otro sensor que se encuentra comunmente en muchos productos es el sensor
de luz. Estos son unos ejemplos de dispositivos que necesitan sensores de luz para
funcionar correctamente.
Luces de carros que automticamente se enciende cuando obscurece.
Luces de calles que automticamente se enciende cuando obscurece
Luces de seguridad de puertas externas que se encienden cuando alguien camina
(pero solamente en la noche)
Pantallas de Laptops que se hacen ms brillantes en reas bien iluminadas y
menos brillantes en reas con poca iluminacin.
Cmaras que automticamente dependiendo de la luz existente.
El sensor interno de TVs, Reproductores DVD y otros sistemas de
entretenimiento detecta la luz infraroja de control remoto.
Los tres primeros ejemplos de la lista de iluminacion automtica dependen de sensores
ambientales de luz que distinguen el da de la noche. La electrnica dentro de estos
dispositivos solamente necesita conocer si hay luz u obscuridad, entonces pueden
considerarse sensores con salida binaria como los botones push. Las pantallas de las
Laptops y los sistemas automticos de exposicin de las cmaras se ajustan las
condiciones luminosas del rea obteniendo informacin de sus sensores de luz de la
cantidad de brillo u obscuridad existentes. Estos tienen que tratar sus sensores de luz
como salidas analgicas que suministran un nmero que indica la cantidad de brillo u
obscuridad, parecido a los ejemplos del potenciometro del Captulo 5 donde los numeros
indicaban la posicin de la perilla.
Los sensores de luz dentro de TVs y otros sistemas de entretenimiento detectan el
infrarojo (IR) que es una luz invisible al ojo humano, pero que pueden detectar muchos
dispositivos electrnicos. Por ejemplo, si usted ve el frente de su control remoto que
apunta al TV o otros dispositivos de entretenimiento, usted encontrar un LED claro
infrarojo. Cuando usted presiona un boton del control, este manda seales codificadas al
sistema de entretenimiento y el LED infrarojo parpadea. Como usted no puede ver la luz
infraroja parece que el LED no hace nada cuando presiona el botn. Sin embargo, si hace
Midiendo Luz Pgina 197
esto a travs de la lente de una cmara digital, el LED parecera blanco. La luz blanca
contiene todos los colores del espectro. Los sensores, rojo, verde y azul dentro del chip de
la cmara reportan que detectan luz en respuesta a la luz blanca.
Esto sucede porque los sensores rojo/verde/azul todos detectan la luz infraroja del LED
IR del control. Entoces la cmara tambien interpreta la luz de un LED infrarojo como
blanca.
Ms respecto a LEDs infrarojos y Detectores
La Robtica con el Boe-Bot tiene ejemplos con el BASIC Stamp controlando el robot Boe-
Bot e internamente tiene LEDs IR como los del control remoto del TV, y el Receptor IR
dentro del TV para detectar objetos enfrente de l. El Boe-Bot usa LEDs IR como luz, y el
receptor IR dentro de los TVs para detectar las reflexiones luz de objetos lejanos enfrente
de l. El libro IR Remote for theBoe-Bot explica con los controles de TV remotos codifican el
mensaje que al TV, tambin tiene ejemplos de cmo programar el microcontrolador del
BASIC Stamp para decodificar mensajes del control remoto para que pueda mandar
mensajes al Boe-Bot e incluso controlarlo alrededor, todo con un control remoto.
El tipo de luz, que un dispositivo sensa depende como fue diseado. Por ejemplo, los
sensores de luz de dispositivos que se ajustan a las condiciones de luz ambiental
necesitan sensar luz visible. Los sensores de pixeles rojo, verde y azul internos de las
cmaras digitales estn sensando los niveles de los colores especficos de una imagen
digital. El sensor IR dentro del TV est buscando luz infraroja que parpadee cerca de 40
kHz.Estos son solamente unos ejemplos de lo que requiere una aplicacin para diferentes
clases de sensores de luz.
La Figura 7-1 muestra unos ejemplos de sensores de luz disponible para varios
requerimientos de sensores de luz. De izquierda a derecha, se muestra un fototransistor,
un fotoresistor de sulfuro de cadmio, un sensor lineal de luz, un fotodiodo fortalecido
para el color azul, un convertidor de luz a frecuencia, un fototransistor infrarojo y un
receptor remotor infrarojo de TV.
Pgina 198 Qu es un Microcontrolador?
Figura 7-1: Ejemplo de Sensores de Luz
Datos de la Celda de Sulfuro de Cadmio o Fotoresistor
La celda de sulfuro de cadmio o fotoresistor fue uno de los sensores de luz ambiente ms
comunes de alumbrado automtico. Con la llegada de las restricciones de la Union Europea
de la ley respecto al uso de ciertas sustancias peligrosas (RoH) los fotoresistores de sulfuro
de cadmio ya no se integraron a los aparatos importados hacia o fabricados en Europa.
Esto ha incrementado el uso de un nmero de productos que reemplazan el fotoresistor,
incluyendo al fototransistor y el sensor lineal de luz. Como resultado de estos cambios, esta
edicin ahora incluye un fototransistor para detectar niveles de luz lo que antes hacia el
fotoresistor de sulfuro de cadmio.
Los documentos de cada sensor de luz describen el tipo de luz que detecta en trminos de
la longitud de onda. La longitud de onda de la distancia entre las formas o ciclos
repetidos. Por ejemplo, imagine una onda viajando en el oceano, subiendo y bajando, La
longitud de tal onda deber ser la distancia entre cada pico (pico de espuma) del ciclo de
la onda. La longitud de onda de la luz se puede medir en forma similar, en lugar de que
midamos la distancia entre dos picos de las oscilaciones electromagnticas de luz. Cada
color de luz tiene su propia longitud de onda y se considera que es luz visible, esto
significa que el ojo humano puede detectarla. La Figura 7-2 muestra longitudes de onda
de luz visible y tambin algunos tipos de luz que el ojo humano no puede detectar,
incluyendo la ultravioleta y el infrarojo. Estas longitudes de onda se miden en
nanometros, que se abrevia nm. Un nanometro es la billonsima parte de un metro.
Midiendo Luz Pgina 199
Figura 7-2 Longitudes de onda y sus Correspondientes Colores
Nota: Si usted esta viendo esta imagen en un libro impreso en escala de gris, usted puede
bajarlo a todo color del PDF en www.parallax.com/go/WAM.
CONOCIENDO EL FOTOTRANSISTOR
Un transistor es como una vlvula que permite que pase cierta cantidad de corriente a
travs de dos de sus terminales. La tercera terminal del transistor controla la cantidad de
corriente que pasa a travs de las otras dos terminales. Dependiendo del tipo de transistor,
el flujo de corriente puede controlarse por voltaje, corriente o en caso del fototransistor
por luz. La Figura 7-3 muestra el esquemtico y el dibujo del fototransistor de su kit Qu
es un Microcontrolador?. A mayor cantidad de luz que llega a la terminal de la base del
fototransistor conduce mayor corriente la terminal del colector. la cual sale de la terminal
del emisor. En forma inversa, si llega menor cantida de luz a la terminal de la base hay
menor conduccin de corriente.
C
B
E
C
B
E
Figura 7-3
Smbolo esquemtico y dibujo del
Fototransistor
La sensibilidad pico de este fototransistor est en 850 nm, y de acuerdo con la Figura 7-2
en la escala infraroja. Tambin responde a la luz visible, aunque es menos sensitivo
especialmente a longituedes de onda debajo de 450 nm, que estn a la izquierda del azul
en la Figura 7-2. La luz de lmparas de halogeno e incandescentes, y especialmente la luz
del sol, son fuentes muy fuertes de infrarojo comparado con las lmparas fluorescetes. El
Violet
Red
Yellow Blue Ultraviolet
Infrared
450 495 570 590 620 750
Orange Green
10380 100,000 Wavelength (nm)
Color
Pgina 200 Qu es un Microcontrolador?
transistor infrarojo responde bien a todas estas fuentes de luz, pero es ms sensible a la
luz del sol, un poco menos a lmparas de halogeno e incandescentes y mucho menor a
lmparas fluorescentes.
El diseo de circuito que usan el transistor puede ajustarse para que trabaje mejor en
ciertos tipos de condiciones luminosas., y los circuitos de fototransistor de este captulo
se disean para el interior. Hay una aplicacin sensor de luz externa, pero se usar un
dispositivo diferente que al principio parecera que no es candidato a ser sensor de luz: el
diodo emisor de luz.
ACTIVIDAD #1: CONSTRUYENDO Y VERIFICANDO EL MEDIDOR DE
LUZ
El captulo 5 introdujo la medicin de del tiempo de descarga de RC con las instruccin
RCTIME para medir el tiempo que le toma a un capacitor perder su carga a travs de un
resistor variable dentro del potenciometro. Con mayor resistencia (a el flujo de la
corrinete elctrica), el potenciometro disminuye la razn para perder su carga, y
resistencias ms pequeas acelern esa razn. La medicin del tiempo de descarga dio
una indicacin de la resistencia del potenciometro a cual a su vez hizo posible que el
BASIC Stamp conozca la posicin de la perilla del potenciometro.
Cuando se coloca en un circuito de descarga RC, un fototransistor, el cual conduce ms o
menos corriente cuando incide ms o menos luz en l, se comporta como el
potenciometro. Cuando ms luz incide en el fototransistor, conduce ms corriente y el
capacitor pierde su carga ms rpidamente. Con menos luz, el fototransistor conduce
menos corriente, y el capacitor pierde su carga menos rpido. Entonces la misma
medicin que dio RCTIME nos da una indicacin de la posicin de la perilla de un
potenciometro del captulo 5 y que ahora se usar para medir niveles de luz con un
fototransistor.
En esta actividad, usted construir y verificar un circuito de descarga RC que mide el
tiempo que le toma la carga del capacitor para descargarse a travs de un fototransistor.
La medicin de descarga de RC le dar a usted una idea de los niveles de luz sensados
por la superficie colectora de luz de un fototransistor. Igual que como las pruebas con el
potenciometro, los valores de tiempo medidos por la instruccin RCTIME se mostraran
en la Terminal Debug.
Partes del Detector de Luz
Un Fototransistor
Un Resistor de 220 (rojo-rojo-caf)
Midiendo Luz Pgina 201
Dos Capacitores de 0.01 F (identificados con 103)
Un Capacitor de 0.1 F (identificado con 104)
Un alambra para puente
Construyendo el Circuito de Tiempo RC con un Fototransistor
La Figura 7-4 el diagrama esquemtico y de alambrado del circuito de tiempo RC que
usted usar en este captulo. Este circuito es diferente del circuito del potenciometro del
Captulo 5 Actividad #3, en dos formas. Primero, el pin E/S usado para medir el tiempo
de descarga es diferente (P2). Segundo, el potenciometro se ha reemplazado con el
fototransistor.
Sugerencia Deje su circuito del LED 7 segementos y agregue el circuito del fototransistor
en su tablilla. Usaremos el LED 7 segmentos con el fotoresistor en la Actividad #4.
Construya el circuito mostrado en la Figura 7-4.
Asegrese que las que las terminales colector y emisor (C y E) estn conectadas
como lo muestra el diagrama de alambrado.
Figura 7-4
Circuito Esquematico y
diagrama de alambrado
del Fototransistor y el RC
Empiece con el capacitor
Pgina 202 Qu es un Microcontrolador?
0.01 F marcado con
103.
.
Programando el Circuito de Prueba del Fototransistor
El primer Programa Ejemplo (TestPhototransistor.bs2) es en verdad una ligera versin
modificada del programa ReadPotWithRcTimebs.2 del Captulo 5, Actividad #3. El
circuito del potenciometro del captulo 5 se conect al pin E/S P7. El circuito en esta
actividad se conecta a P2. Debido a esta diferencia, el Programa Ejemplo ha actualizado
dos instrucciones para hacerlo que trabaje. La instruccin HIGH 7 del programa ejemplo
anterior es ahora HIGH 2 ya que el circuito del fototransistor se conect en P2 y no en
P7.
Por la misma razn, la instruccin RCTIME 7, 1, time cambia a RCTIME 2, 1, time.
Programa Ejemplo: TestPhototransistor.bs2
La luz que colecta la superficie del fototransistor en la parte superior de un domo de
plstico transparente, es la terminal de la base (B) que muestra la Figura 7-3. Debe ser
visible a travs del domo una pequea rea negrea. El rea negra es en realidad el
fototransistor, una pequea pieza de silicio. El resto del dispositivo es el empaque,
incluyendo el casco de plstico, el soporte de la terminales y las terminales.
En lugar de girar la perilla del potenciometro como lo hizo en el Captulo 5, este circuito
se verifica exponiendo la superficie colectora de luz del fototransistor a diferentes niveles
de luz. Cuando se est ejecutando el Programa Ejemplo, la Terminal Debug deber
mostrar valores pequeos para condiciones de luz brillantes y valores grandes para
condiciones de poca luz.
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P1
P0
P2
X2
X3
Vdd Vss Vin
Longer pin
(C) terminal
Flat spot
(E) terminal
Midiendo Luz Pgina 203
Evite luz solar directa. El circuito y programa que usted est diseando para detectar
variaciones de luz en interiores y no trabaja para luz solar incidiendo directamente. Deje la
luz interior pero cierre las cortinas si los rayos del sol atraviezan una ventana cercana.
Meta y ejecute el programa TestPhototransistor.bs2
Anote los valores de la variable time de la Terminal Debug bajo condiciones
normales de iluminacin.
Haga sombra con su mano sobre el circuito y verifque nuevamente la variable
time. Deber mostrar un nmero mayor.
Haga un sombrero con su mano y pngala sobre el circuito para hacer ms
sombra, la Terminal Debug deber mostrar un valor significativamente mayor
para time.
' Que es un Microcontrolador? - TestPhototransistor.bs2
' Lee el fototransistor del circuito de tiempo RC usando la instruccin
RCTIME.
' {$STAMP BS2}
' {$PBASIC 2.5}
time VAR Word
PAUSE 1000
DO
HIGH 2
PAUSE 100
RCTIME 2, 1, time
DEBUG HOME, "time = ", DEC5 time
LOOP
Su Turno Usando un diferente capacitor para diferentes condiciones de luz
Las mediciones de tiempo con un capacitor de 0.1F sern diez veces mayores que un
capacitor de 0.01F, esto significa que el valor de la variable time que muestre la
Terminal Debug debern ser 10 veces ms grandes. Al reeplazar el capacitor de 0.01F
por uno de 0.1F ser ms til en condiciones de luz ms brillantes, donde usted
tpicamente vea mediciones pequeas usando el capacitor de 0.01F. Por ejemplo,
digamos que las condiciones de luz son muy brillantes y las mediciones estn en el rango
de 1 a 13 con el capacitor de 0.01 F. Al reemplazarlo con uno de 0.1F sus mediciones
estarn en el rango de 10 a 130, y su aplicacin ser mas sensible a variaciones de luz
dentro de la habitacin.
Pgina 204 Qu es un Microcontrolador?
Modifique el circuito reemplazando el capacitor de 0.01F por uno de 0.1 F
(marcado como 104)
Vuelva a ejecutar el programa TestPhototransistor.bs2 y verifique que las
mediciones de tiempo de RC son aproximadamente diez veces su valor anterior.
Los intervalosde tiempo ms grandes que la instruccin RCTIME puede medir es 65535
unidades de 2 us cada una que corresponde a un tiempo de descarga de 65535x2 us = 131
ms = 0.131 s. Si el tiempo de descarga excede 0.131 segundos, la instruccin RCTIME
regresa a 0 indicando que se excedi la mxima medicin de tiempo.
Puede puede hacer mucha sombra sobre el fototransistor para exceder la
medicin mxima de 65535 y hacer que la instruccin RCTIME regrese a 0.
La siguiente actividad se realiza con el menor de los dos capacitores.
Antes de pasar a la siguiente actividad, regrese el circuito a la versin original
que muestra la Figura 7-4 quitando el capacitor de 0.1F y reemplazandolo con
el capacitor de 0.01F.
ACTIVIDAD #2: AJUSTANDO LOS EVENTOS DE LUZ
Una de las caractersticas ms tiles de la memoria de programa del BASIC Stamp es que
usted puede desconectar la alimentacin de la Tablilla sin perder el programa. Tan pronto
como se conecta la alimentacin el programa se ejecutar nuevamente desde el principio.
Como el cdigo de su aplicacin tpicamente no llena la memoria del mdulo BASIC
Stamp, cualquier porcin que no se use para el programase puede usar para almacenar
datos. Esta memoria es especialmente adecuado para almacenar datos que usted no desea
que el BASIC Stamp olvide.
Mientras los valores almacenados por las variables se borran cuando se desconecta la
energa, el BASIC Stamp recordara todos los valores almacenados en su memoria de
programa cuando se vuelva a conectar la alimentacin.
Qu es Adquisicin de Datos? Datalogging es lo que un microcontrolador hace cuando
registra y almacena mediciones perodicas de sensores durante cierta cantidad de tiempo.
Los dispositivos de Adquisicin de Datos o dataloggers, son especialmente tiles en
investigacin cientfica. Por ejemplo, en lugar de poner una persona en una localidad
remota para que tome mediciones del ambiente, se puede colocar una estacin datalogging
de ambiente. Esta registra mediciones perodicas y los cientficos visitan la estacin muy
frecuentemente para colectar los datos, o en algunos caos, actualiza sus mediciones a una
computadora por medio de telfono celular , radio o satlite.
Midiendo Luz Pgina 205
El chip del BASIC Stamp que almacena la memoria de programa y los datos se muestran
en la Figura 7-5. Este chip se llama EEPROM que significa memoria de Solo Lectura
Programable y Borrable Electricamente. Esto esta muy largo y pronunciar cada una de
sus letras es todava un montn de trabajo. Entonces, cuando las personas hablan de una
EEPROM, generalmente dicen E-E-Prom.
Figura 7-5
Chip de EEPROM del
mdulo BASIC Stamp
Esta EEPROM almacena
su cdigo de programa y
cualquier otros datos que
su programa coloca ah,
incluso cuando la
alimentacin se
desconecta.
La Figura 7-6 la ventana del Mapa de Memoria del Editor del BASIC Stamp. Usted
puede ver esta ventana haciendo click en el men RUN del Editor de BASIC Stamp y
seleccionar Memory Map.
El Mapa de Memoria usa diferentes colores para mostrar los mdulos RAM (variables en
random access memory ) y EEPROM (program memory) que se utilizan. El cuadro rojo
en la barra en la parte izquierda indica que porcin de la EEPROM es visible en el Mapa
de EEPROM. Usted puede dar click y jalar este cuadro hacia arriba y abajo para ver
varias porciones de la memoria EEPROM. Al jalar el cuadro rojo de arriba abajo, usted
puede ver cuanto espacio de memoria EEPROM usa el programa TestPhototransistor.bs2
de la Actividad #1.
Los bytes que contienen los Smbolos del programa estn resaltados en azul, y solamente
35 bytes fuera de la EEPROM de 2048 se usan para el programa. Los 2013 bytes
restantes estn libres para almacenar datos.
2 KB EEPROM
stores your
PBASIC source
code.
Pgina 206 Qu es un Microcontrolador?
Figura 7-6
Mapa de Memoria
Para ver esta
ventana haga click
en RUN y seleccione
Memory Map
El mapa EEPROM muestra las direcciones en valores hexadecimales, que se discutieron
brevemente en el recuadro Decimal vs Hexadecimal en la pgina 185, los valores a lo
largo del lado izquierdo muestran las direcciones iniciales de cada fila de bytes. Los
nmeros en la parte superior muestran el nmero de byte dentro de esa fila, desde 0 hasta
F en Hexadecimal, que equivale 0 a 15 en decimal. Por ejemplo, en la Figura 7-6 el valor
decimal C1 se almacen en la direccin 7E0. CC se almacen en la direccin 7E1, 6D se
almacen en la direccin 7E2, y as sucesivamente hasta E8, que se almacen en la
direccin 7EF. Si usted busca hacia arriba y abajo con la barra, usted ver que la
direccin de memoria mayor est en la parte ms baja del Mapa EEPROM, y la direccin
menor est hasta arriba, con la fila superior empezando en 000.
En PBASIC los progamas siempre se almacenan en las direcciones mayores de la
EEPROM, que estn abajo del Mapa EEPROM. Entonces, si su programa va a almacenar
datos en EEPROM, deber empezar con la menor direccin , empezando con la direccin
0. Esto ayuda a asegurar que sus datos almacenados no se sobreescribiran en su programa
PBASIC, lo que generara un programa defectuoso. En el caso del Mapa EEPROM
mostrado en la Figura 7-6 el programa PBASIC reside en las direcciones 7FF hasta 7DD,
empezando con la direccin mayor y construyendose hasta la menor direccin
Entonces, su aplicacin puede almacenar datos desde la direccin 000 hasta 7DC,
construyendose desde el menor hasta el mayor, en decimal la direccin es desde 0 hasta
2012.
Si usted planea almacenar datos en EEPROM, es importante que sea capaz de convertir
de hexadecimal a decimal para calcular la direccin de escritura ms grande. Abajo estn
las matemticas para convertir el nmero 7DC hexadecimal a decimal. Hexadecimal es
un sistema numrico con base 16, eso significa que usa 16 diferentes dgits para
Midiendo Luz Pgina 207
representar sus valores. Los dgitos 0 a 9 representan los primeros 10 valores, y las letras
A a F representan los valores 10 a 15. Cuando se convierte de hexadecimal a decimal
cada digito de la derecha la potencia mayor de dieciseis. El dgito ms a la derecha es el
nmero de unos, el cual es el nmero 16. El siguiente digito de la derecha es el nmero
de 16, el cual es el nmero 16. El tercer dgito es el nmero de 256s, el cual es el nmero
16.
Hexadecimal 7DC = (7 16
2
) + (D 16
1
) + (C 16
0
)
= (7 16
2
) + (13 16
1
) + (12 16
0
)
= (7 256) + (13 16) + (12 1)
= 1792 + 208 + 12
= 2012 (valor decimal)
Esta aproximacin de conversin trabaja de igual manera con otras bases, incluyendo la
base 10 de valores decimales. Por ejemplo:
2102 = (2 10
3
) + (1 10
2
) + (0 10
1
) + (2 10
0
)
= (2 1000) + (1 100) + (0 10) + (2 1)
2048 Bytes = 2 KB
Aunque la letra K y la letra k se llaman kilo son ligeramente diferentes. En electrnica y
computacin la K se usa para indicar un kilobyte binario que es 1x2 = 1024. Cuando nos
referimos con exactitud a 1000 bytes, usamos la letra k que se usa como kilo y es 1x10 =
1000 en el sistema mtrico
Tambien, la letra B significa bytes, mientras que la letra b significa bits. Esto puede hacer
una gran diferencia por 2Kb significa 2048 bits, que is 2048 numeros diferentes donde cada
nmero est limitado a un valor de 0 o 1. En contraste 2KB significa 2048 bytes cada uno
de los bytes puede almacenar un valor en el rango de 0 a 255.
Usando la EEPROM para almacenar datos puede ser muy til en aplicaciones remotas.
Un ejemplo de una aplicacin remota podra ser un monitor de temperatura colocado en
un camin que contiene comida refrigerada. El podra fijar la temperatura durante todo el
viaje para ver si siempre est lo suficientemente fria para asegurar que ninguno de los
embarques cambie de congelado a lquido. Un segundo ejemplo es una estacin de
monitoreo del clima. Una de las piezas de la estacin de datos del clima podra almacenar
para que despues obtener sus niveles de luz. Esto puede dar una indicacin de nubes que
cubren los tiempos de un da.
Y algunos estudios la usan para monitorear los efectos de contaminacin y condensacin
de trails en aviones, con altos niveles que llegan a la superficie de la tierra.
Pgina 208 Qu es un Microcontrolador?
Teniendo en mente el el ajuste de niveles de luz, esta actividad introduce una tcnica para
almacenar los niveles de luz medidos en la EEPROM y despus analizarlos. En esta
actividad, usted ejecutar un Programa Ejemplo PBASIC que almacena una serie de
mediciones de luz en el mdulo EEPROM del BASIC Stamp. Despus que se termine el
programa, usted ejecutar un segundo programa que retira los valores de la EEPROM y
los muestra en la Terminal Debug.
Programando Almacenamiento de Datos en Terminos Grandes
La instruccin WRITE se usa para almacenar valores en la EEPROM, y la instruccin
READ se usa para extraer esos valores.
La sintaxis para la instruccin WRITE es:
WRITE Location, {WORD} Value
Por ejemplo, si usted quiere escribir el valor 195 en la direccin 7 en la EEPROM, usted
podra usar la instruccin
WRITE 7, 195
Los valores WORD pueden ser cualesquiera desde 0 hasta 65565, mientras que los
valores byte solamente pueden contener nmeros de 0 a 255. Un valor word toma el
espacio de dos bytes. Si usted quiere escribir un valor en EEPROM, usted tiene que usar
el modificador opcional Word.
Sea cuidadoso. Como word ocupa dos bytes usted tiene que brincar una de las
direcciones tamao byte en la EEPROM antes de que usted pueda escribir otro word.
Digamos que usted necesita guardar dos valores word en EEPROM: 659 y 50012. Si
usted desea almacenar el primer valor en la direccin 8, usted tendr que escribir el
segundo valor en la direccin 10-
WRITE 8, Word 659
WRITE 10, Word 50012
Midiendo Luz Pgina 209
Es posible escribir sobre su programa? S, y si usted lo hace, el programa se pararece
a que empieza a comportarse extraamente o que deja de ejecutarse. Como los smbolos
del programa PBASIC residen en las direcciones mayores de EEPROM, es mejor usar los
valores ms pequeos de localidades Location para almacenar nmeros con la instruccin
WRITE.
Como puedo saber si la Location que estoy usando es muy grande? Usted puede usar el
mapa de memoria para calcular el valor ms grande no usado por su programa PBASIC.
La explicacin despus de la Figura 7-6 describe la manera de calcular cuantas direcciones
de memoria estn disponibles. De manera sencilla usted puede convertir de hexadecimal a
decimal usando el formato decimal DEC en la instruccin DEBUG y el formato
hexadecimal $ hexadecimal formato de esta forma:
DEBUG DEC $7BC
Su programa mostrar el valor decimal del hexadecimal 7DC porque el signo $ de formato
hexadecimal le indica a la instruccin DEBUG que el 7DC es un nmero hexadecimal.
Entonces, el formato DEC (decimal) hace que la instruccin DEBUG muestre el valor en un
formato decimal.
Programa Ejemplo: StoreLightMeasurementsinEeprom.bs2
Este Programa Ejemplo muestra con usar la instruccin WRITE tomando mediciones de
luz cada 5 segundos durante 2 minutos y almacenandolos en la EEPROM. Como el
Programa Ejemplo de la actividad anterior muestra las mediciones en la Terminal Debug,
pero tambien las almacena en la EEPROM para su posterior retiro con un programa
diferente que usa la instruccin READ.
Meta y ejecute StoreLightMeasurementsinEeprom.bs2
Registre las mediciones mostradas por la Terminal Debug para que usted pueda
verificar las mediciones de lectura cuando se obtengan de la EEPROM.
Gradualmente incremente la sombra sobre el fototransistor durante 2 minutes
de perodo de prueba para tener datos significativos.
Especialmente si usted tiene una Tablilla USB, su reconexin en la computadora podra
Resetear el BASIC Stamp y resetear el programa, en cuyo caso, podra empezar a tomar
un nuevo conjunto de mediciones.
Despus que el programa StoreLightMeasurementsinEeprom.bs2 haya
concluido, desconecte la alimentacin y djela desconectada hasta que usted este
listo para ejecutar el siguiente programa ejemplo:
ReadLightMeasurementsFromEeprom.bs2.
Pgina 210 Qu es un Microcontrolador?
Usted puede cambiar las pausas en el bucle FOR...NEXT. Este Programa Ejemplo tiene
pausas de 5 segundos, las cuales resaltan las mediciones perodicas que toman las tarjetas
de adquisicin de datos. Esto podra parecer muy largo, entonces usted puede reducir
PAUSE 5000 a PAUSE 500 para hacer que el programa ejecute diez veces ms
rpidamente la prueba.
' Que es un Microcontrolador - StoreLightMeasurementsInEeprom.bs2
' Escriba mediciones de luz a la EEPROM.
' {$STAMP BS2}
' {$PBASIC 2.5}
time VAR Word
eepromAddress VAR Byte
PAUSE 1000
DEBUG "Iniciando mediciones...", CR, CR
"Medicion Valor", CR,
"----------- -----", CR
FOR eepromAddress = 0 TO 58 STEP 2
HIGH 2
PAUSE 5000
RCTIME 2, 1, time
DEBUG DEC2 eepromAddress,
" ", DEC time, CR
WRITE eepromAddress, Word time
NEXT
DEBUG "Todo hecho. Ahora, ejecutelo:", CR,
"ReadLightMeasurementsFromEeprom.bs2"
END
Como funciona StoreLightMeasurementsinEeprom.bs2
El bucle FOR...NEXT que mide los valores de tiempo RC y los almacena en la EEPROM
tiene que contar en pasos de 2 porque los valores word se escriben en la EEPROM.
FOR eepromAddress = 0 to 58 STEP 2
La instruccin RCTIME carga las mediciones de tiempo de descarga en la variable
time que es de tamao word
RCTIME 2, 1, time
El valor que almacena la variable time se copia en la direccin de la EEPROM dada
por el valor actual de la variable eepromAddress todas las veces a travs del bucle.
Midiendo Luz Pgina 211
Recuerde, que la direccin para la instruccin WRITE siempre est en trminos de bytes.
Entonces, la variable eepromAddress se incrementa por dos cada vez en el bucle
porque la variable Word toma dos bytes.
WRITE eepromAddress, Word time
NEXT
Programando la Extraccin de Datos
Para extraer los valores que usted grab en la EEPROM, usted puede usar la instruccin
READ. La sintaxis de la instruccin es:
READ Location, {WORD} Variable
Mientras que la instruccin WRITE puede copiar una de una constante o una variable a la
EEPROM, la instruccin READ tiene que copiar el valor almacenado en una direccin de
la EEPROM a una variable, entonces como su nombre lo sugiere , el argumento
Variable tiene que ser una variable.
Recuerde que las variables se almacenan el mdula RAM de el BASIC Stamp. De manera
diferente a la EEPROM, los valores RAM pueden borrarse cuando se desconecta la
alimentacin y tambin cuando se presiona el botn RESET de su Tablilla.
El BASIC Stamp 2 tiene 26 bytes de RAM, mostrados en el lado derecho del Mapa de
Memoria en la Figura 7-6. Si usted declara una variable word usted est usando dos
bytes. La declaracin de una variable byte usa un byte, un nible usa la mitad de un byte y
un bit usa 1/8 de byte.
Digamos que eepromValueA u eepromValueB son variables Word, y littleEE es una
variable Byte. Estas variables debern estar definidas en el inicio del programa con la
declaracines de variables VAR. Estas son algunas instrucciones para extraer los
valores que se almacenaron en ciertas direcciones de la EEPROM con anterioridad
usando la instruccin WRITE, quiz incluso en un programa diferente.
READ 7, littleEE
READ 8, Word eepromValueA
READ 10, Word eepromValueB
La primera instruccin retira un valor byte de la direccin 7 de la EEPROM y lo copia en
la variable llamada littleEE. La siguiente instruccin copia la word que ocupan las
direcciones 8 y 9 de la EEPROM y la almacena en la variable word eepromValueA. La
Pgina 212 Qu es un Microcontrolador?
ltima de las tres instrucciones copia una word que ocupan las direccines 10 y 11de la
EEPROM y la almacena en la variable eepromValueB.
Programa Ejemplo: ReadLighMeasurementsFromEeprom.bs2
Este Programa Ejemplo demuestra como usar la instruccin READ para extraer las
mediciones de luz que fueron almacenadas en la EEPROM con el programa
StoreLightMeasurementsInEeprom.bs2.
Conecta la energa a su Tablilla.
Meta el programa ReadLighMeasurementsFromEeprom.bs2 en el Editor de
BASIC Stamp.
Si usted tena desconectada la alimentacin de su tablilla, cuando la reconect,
inmediatamente haga click en el botn Run del Editor del BASIC Stamp para
bajar el programa en el BASIC Stamp.
No espere ms de 6 segundos entre reconectar la alimentacin y bajar el programa
ReadLighMeasurementsFromEeprom.bs2 en el BASIC Stamp, porque el programaque
todava est en la mememori de programa (StoreLightMeasurementsInEeprom.bs2.)
empezar a grabar sobre la mediciones anteriores. Entonces, si usted reduce Duration de
la instruccin PAUSE de 5000 a 500 usted solamente tendra 1.5 segundos.
Compare la Tabla de la Terminal Debug que muestra este programa con la Tabla que
mostro el programa StoreLightMeasurementsInEeprom.bs2, y verifique que los valores
son los mismos.
' Que es un Microcontrolador - ReadLightMeasurementsFromEeprom.bs2
' Lectura de mediciones de luz de la EEPROM.
' {$STAMP BS2}
' {$PBASIC 2.5}
time VAR Word
eepromAddress VAR Byte
PAUSE 1000
DEBUG "Extrayendo mediciones", CR, CR,
"Mediciones Valores", CR,
"---------- -----", CR
FOR eepromAddress = 0 TO 58 STEP 2
READ eepromAddress, Word time
DEBUG DEC2 eepromAddress, " ", DEC time, CR
Midiendo Luz Pgina 213
NEXT
END
Funcionamiento del programa ReadLighMeasurementsFromEeprom.bs2
La instruccin WRITE y la instruccin READ dependen de direcciones byte. Y como
deseamos leer valores word de la EEPROM, la variable eepromAddress tiene que
tener 2 agregado a ella cada vez que se ejecuta el bucle FOR...NEXT.
FOR eepromAddress = 0 to 58 STEP 2
La instruccin READ obtiene el valor tamao word de eepromAddress, y obtiene el
valor copiado en la variable time
READ eepromAddress, Word time
Los valores de la variables time y eepromAddress se muestran en columnas adyacentes
en una tabla en la Terminal Debug.
DEBUG DEC2 eepromAddress, " ", DEC time, CR
NEXT
Su Turno Ms Mediciones
Modifique el programa StoreLightMeasurementsInEeprom.bs2. para que tome y
registre dos veces las muchas mediciones en la misma cantidad de tiempo.
Modifique el programa ReadLighMeasurementsFromEeprom.bs2 para que
muestre todas las mediciones del programa modificado
StoreLightMeasurementsInEeprom.bs2.
ACTIVIDAD #3: GRAFICANDO MEDICIONES DE LUZ (OPCIONAL)
Las listas de mediciones como las de la Actividad #2 pueden ser tediosas para analizarse.
Imagine que lee cientos de estos nmeros recolectados en la puesta del sol. O quiz
buscando un evento particuar, como cuando su cubri brevemente el sensor de luz. Esta
informacin podra ser til si el sensor de luz se coloca en un rea donde camina sobre l
una persona o un animal, o un objeto pasando sobre una banda transportadora necesita
registrarse y analizarse. Sin importar la apliacin, si usted tiene que trabajar con una larga
lista de nmeros, para encontrar aquellos eventos y patrones que pueden ser tareas
difciles y que consumen mucho tiempo.
Pgina 214 Qu es un Microcontrolador?
En cambio si usted hace una grfica de la lista de mediciones, encontrar eventos y
patrones se hace mucho ms fcil. La persona, animal u objeto que pase por el sensor de
luz mostrar un punto alto o pico en la mediciones. La Figura 7-7 muestra un ejemplo de
una grfica que podra indicar la razn a la cual los objetos de una banda transportadora
estn pasando sobre el sensor. Los picos en la grfica ocurren cuando los tiempo de las
mediciones son grandes.
En el caso de una banda transportadora, esto indicara que un objeto pasa sobre el sensor
reflejando una sombra. Esta grfica facilita ver de un vistaso que un objeto pasa sobre el
sensor aproximadamente cada 7 segundo, y qu el objeto que esperabamos en 28 segundo
no estaba ah.
Grfica 7-7 Grfica de Mediciones de Luz con el Fototransistor
Decay Time Vs. Time
f or Phototransistor RC Circuit
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
0 10 20 30 40 50 60
Time (s)
D
e
c
a
y
T
i
m
e
(
2
u
s
)
"Decay Time"
La Grfica en la Figura 7-7 se gener copiando y pegando valores en la Terminal Debug
a un archivo de texto y luego se importo a una hoja de trabajo Excel de Microsoft.
Algunas utilerias de graficacin pueden tomar el lugar de la Terminal Debug y graficar
los valores directamente en lugar de mostrarlos como un lista de nmeros. La Figura 7-8
muestra un ejemplo de una de estas utilerias, llamada StampPlot LITE.
Midiendo Luz Pgina 215
Figura 7-8 StampPlotLITE
En esta actividad opcional, usted puede ir a www.parallax.com/go/WAM y seguir la liga
de Data Plotting y realizar un nmero de actividades que demuestran como graficar
valores usando varias hojas de calculo y paquetes de software de utilerias de graficacin.
ACTIVIDAD #4: MEDIDOR SENCILLO DE LUZ
La informacin de los sensores de luz puede comunicarse de muchas formas. El medidor
de luz con el que trabajar en esta actividad cambia la rapidez en que el indicador
parpadea dependiendo de la intensidad de luz que detecta.
Partes del Medidor de Luz
Un Fototransistor
Un Resistor de 220 (rojo-rojo-caf)
Pgina 216 Qu es un Microcontrolador?
Dos Capacitores de 0.01 F (marcados con 103)
Un Capacitor de 0.1 F (marcado con 104)
Un Indicador LED de 7 segmentos
Ocho Resistores de 1 K (caf-negro-rojo)
Seis alambres para puentes
Construyendo el Circuito Medidor de Luz
La Figura 7-9 muestra el esquemtico del indicador LED de 7 segmentos y el
Fototransistor que se usar para construir el Medidor de Luz, y la Figura 7-10 muestra el
diagrama de alambrado de los circuitos. El circuito fototransistor es el mismo que ha
estado usando en las dos ltimas actividades y el circuito del indicador LED de 7
segmentos es el mismo de la Figura 6-11.
Construya el circuito mostrado en la Figura 7-9 y la Figura 7-10.
Verifique el indicador LED de 7 segmentos para asegurarse que est conectado
correctamente usando el programa SegmentTestWithHighLow.bs2 del captulo 6
Actividad #2, que empieza en la pgina 179.
Midiendo Luz Pgina 217
Figura 7-9
Circuito
esquemtico del
Medidor de Luz
Figura 7-10
Diagrama de
Alambrado para la
Figura 7-9
Pgina 218 Qu es un Microcontrolador?
Usando Subrutinas
La mayora de los programas que usted ha escrito hasta ahora trabajan dentro de un bucle
DO...LOOP. Como toda la actividad principal del programa sucede dentro de
DO...LOOP, a esta usualmente se le llama rutina principal. Conforme usted agrega ms
circuitos y ms funciones tiles a su programa, puede tener un poco de dificultad para
tener el control de todo el cdigo en la rutina principal. Su programa trabajar con mayor
facilidd si usted lo organiza en pequeos segmentos de cdigo que hagan ciertas tareas.
PBASIC tiene algunas instrucciones que usted puede usar para hacer que el programa
brinque de la rutina principal, haga una tarea, y luego regrese al mismo punto de la rutina
principal. Esto le permitira que usted mantenga cada segmento de cdigo haciendo un
trabajo particular sin estar en la rutina principal. Cada vez que usted necesite el programa
para hacer uno de esos trabajos, usted puede escribir una instruccin dentro de la rutina
principal que le diga al programa que brinque a tal trabajo, lo haga, y regrese cuando el
trabajo est hecho. Los trabajos se llaman subrutinas y a este proceso se le llama
llamado de subrutinas
La Figura 7-11 muestra un ejemplo de una subrutina y como se usa. La instruccin
GOSUB Subroutine_Name hace que el programa brinque a la etiqueta Subroutine_Name.
Cuando el programa va a esa etiqueta, corriendo y ejecutando las instrucciones hasta que
llega a la instruccin (retorna) RETURN. Y ahora el programa regresa a la instruccin
que viene despues de la instruccion GOSUB. En el caso del ejemplo de la Figura 7-11,
la siguiente instruccin es: DEBUG Next command
DO
GOSUB Subroutine_Name
DEBUG "Next command"
LOOP
Subroutine_Name:
DEBUG "This is a subroutine..."
PAUSE 3000
RETURN
Figura 7-11
Funcionamiento de la
Subrutina
Midiendo Luz Pgina 219
Qu es un Etiqueta? Una etiqueta es un nombre que puede usarse en un lugar de su
programa. GOSUB es una de las instrucciones que usted puede usar para brincar a un
etiqueta. Otras instrucciones son GOTO, ON GOTO y ON GOSUB. Una etiqueta debe
termina con el signo dos puntos (:), y por la forma de estilo, separe palabras con el carcter
de subrayado para que sean fciles de reconocer. Cuando escoga un nombre para una
etiqueta, asegurese de no usar una palabra reservada o un nombre que est usando una
variable o una constante. El resto de reglas para el nombre de una etiqueta son las mismas
que las usadas para nombrar variables, que estn enumeradas en el recuadro de
informacin de la pgina 43.
Programa Ejemplo: SimpleSubroutines.bs2
Este Programa Ejemplo muestran como funcionan las subrutinas mandando mensajes a la
Terminal Debug.
Examine el programa SimpleSubroutines.bs2 y trate de adivinar el orden en el
cual se ejecutarn las instrucciones DEBUG.
Meta y ejecute el programa.
Compare el comportamiento del programa real con sus predicciones.
' Que es un Microcontrolador - SimpleSubroutines.bs2
' Demostracin del funcionamiento de la subrutina.
' {$STAMP BS2}
' {$PBASIC 2.5}
PAUSE 1000
DO
DEBUG CLS, "Inicia la rutina principal.", CR
PAUSE 2000
GOSUB First_Subroutine
DEBUG "Regresa a la principal.", CR
PAUSE 2000
GOSUB Second_Subroutine
DEBUG "Repite la principal...", CR
PAUSE 2000
LOOP
First_Subroutine:
DEBUG " Primera Ejecucin "
DEBUG "subroutine.", CR
PAUSE 3000
RETURN
Pgina 220 Qu es un Microcontrolador?
Segunda_Subrutina:
DEBUG " Executing second "
DEBUG "subroutine.", CR
PAUSE 3000
RETURN
Funcionamiento de SimpleSubroutines.bs2
La figura 7-12 muestra como funciona la llamada de First_Subroutine en la rutina
principal (en bucle DO...LOOP). La instruccin GOSUB First:Subroutine manda el
programa a la etiqueta First_Subroutine. Luego, se ejecutan las tres instrucciones dentro
de esa subrutina. Cuando el programa llega a la instruccin RETURN, brinca de regreso
al comando que viene inmediatamente despus de GOSUB First_Subroutine, y es
DEBUG Back in Main., CR
Qu es una llamada a subrutina? Cuando usted usa la instruccin GOSUB para hacer
que el programa brinque a una subrutina, a esto se llama llamada a subrutina.
PAUSE 2000
GOSUB First_Subroutine
DEBUG "Back in main.", CR
First_Subroutine:
DEBUG " Executing first "
DEBUG "subroutine.", CR
PAUSE 3000
RETURN
Figura 7-12
Llamada a la Primera
Subrutina.
La Figura 7-13 muestra un segundo ejemplo del mismo proceso con llamada a la segunda
subrutina (GOSUB Second_Subrutine).
Midiendo Luz Pgina 221
PAUSE 2000
GOSUB Second_Subroutine
DEBUG "Repeat main...", CR
Second_Subroutine:
DEBUG " Executing second "
DEBUG "subroutine", CR
PAUSE 3000
RETURN
Figura 7-13
Llamada a segunda
subrutina
Su Turno Agregando y Anidando Subrutinas
Usted puede agregar subrutinas adems de las dos que estn en el programa y llamarlas
de la rutina principal.
Agregue la subrutina mostrada en la Figura 7-11 al programa
SimpleSubroutines.bs2.
Haga los ajustes necesarios a la instruccin DEBUG para que muestre
correctamente las tres subrutinas.
Usted tambin puede llamar una subrutina dentro de otra subrutina. A esto se le llama
subrutinas anidadas.
Intente mover la instruccin GOSUB para que llame a la subrutina
Subroutine_Name hacia otra de las subrutinas, y vea como funciona.
Cuando anidar subroutines. La regla es no ms de cuatro profundidades. Vea el Manual
BASIC Stamp o la Ayuda del BASIC Stamp Editor para ms informacin Vea GOSUB y
RETURN
Medidor de Luz Usando Subrutinas
El siguiente programa LightMeter.bs2 usa subrutinas para controlar el indicador LED de
7 segmentos dependiendo del nivel de luz detectado por el fototransistor. El ciclo
apagado y encendido de los segmentos del indicador LED en un patrn circular se hace
ms rpido cuando el fototransistor recibe ms luz. Cuando la luz disminuye el patrn se
hace ms lento.
Pgina 222 Qu es un Microcontrolador?
El Programa Ejemplo LightMeter.bs2 usa una subrutina llamada Update_Display para
controlar el orden de avance de los segmentos del medidor de luz.
El programa que ejecuta el medidor de luz trata con tres diferentes operaciones.
1. Leer el Fototransistor.
2. Calcular el tiempo de espera antes de actualizar el indicador LED de 7
segmentos.
3. Actualizar el indicador LED de 7 segmentos.
Cada operacin est contenida dentro de su propia subrutina, y la rutina principal
DO...LOOP llamar en secuencia a cada una de elllas una vez y otra y otra vez.
Programa Ejemplo: LightMeter.bs2
El Control de las condiciones de luz hace la gran diferencia. Para mejores resultados,
realice esta prueba en una habitacin iluminada con luz fluorescente con poca o sin luz
directa del sol. (cierre las cortinas). Para informacin de la calibracin de este medidor a
otras condiciones de luz, vea la seccin Su Turno.
-Meta y corra el programa LightMeter.bs2
-Verifique de la velocidad de repeticin del patron circular mostrado por el
indicador LED de 7 segmentos esta controlado por las condiciones de luz que el
fototransistor est sensando. Haga esto haciendo sombre con su mano o un
pedazo de papel y verifique que la rapidez de cambio del patron circula del
indicador se mueve lentamente.
' Que es un Microcontrolador - LightMeter.bs2
' Indica los niveles de luz usando un indicador LED de 7 segmentos.
' {$STAMP BS2}
' {$PBASIC 2.5}
PAUSE 1000
DEBUG "Programa en Ejecucin !"
index VAR Nib ' Declaracin de Variables .
time VAR Word
OUTH = %00000000 ' Inicializa el indicador de 7-segment.
DIRH = %11111111
Midiendo Luz Pgina 223
DO ' Rutine Principal.
GOSUB Get_Rc_Time
GOSUB Delay
GOSUB Update_Display
LOOP
' Subrutinas
Get_Rc_Time: ' Subrutina de tiempo RC
HIGH 2
PAUSE 3
RCTIME 2, 1, time
RETURN
Delay: ' Subrutina de Retardo.
PAUSE time / 3
RETURN
Update_Display: ' Muestra actualizacin de subrutinas.
IF index = 6 THEN index = 0
' BAFG.CDE
LOOKUP index, [ %01000000,
%10000000,
%00000100,
%00000010,
%00000001,
%00100000 ], OUTH
index = index + 1
RETURN
Funcionamiento del programa LightMeter.bs2
Las primeras dos lneas del programa declaran variables. No importa donde se usen estan
variables en la subrutinas o en la rutina principal, siempre es mejor declarar variables
(y constantes) al principio de su programa.
Como esto es prctica comn, esta seccin de cdigo tiene un nombre Variable
declarations (Declaracin de Variables). Este nombre se muestra como comentario a
la derecha la la primera declaracin de variable.
index VAR Nib Declaracin de Variables.
time VAR Word
Algunos programas tambien tiene procedimientos que necesitan hacerse de una vez al
inicio del programa. Por ejemplo: Ajustar todos los pines de los 7 segmentos en low y
Pgina 224 Qu es un Microcontrolador?
direccionarlos como salidas. Este seccin de programa PBASIC tambin tiene un nombre
Inicializacin
OUTH = %00000000 ' Inicializa el indicador 7-segmentos.
DIRH = %11111111
El siguiente segmento de cdigo se llama rutina principal. La rutina principal primero
llama a la subrutina Get-Rc-Time. Luego, esta llama a la subrutina Delay, y despus de
esto esta llama al subrutina Update_Display. Recuerde que el programa va a travs de las
tres subrutinas tan rpido como puede, una vez y otra y otra vez.
DO ' Rutina Principal.
GOSUB Get_Rc_Time
GOSUB Delay
GOSUB Update_Display
LOOP
Generalmente todas las subrutinas se colocan despus de la rutina principal. El nombre de
la primera subrutina es Get_Rc_Time; y ella toma la medicin del tiempo RC con el
circuito fototransistor. Esta subrutina tiene una instruccin PAUSE que permite que el
capacitor se cargue. La Duracion de esta instruccin es pequea y solamente necesita una
pausa con el tiempo suficiente para asegurarse que el capacitor se carge. Observe que la
instruccin RCTIME fija el valor de la variable time. Esta variable la usar la segunda
subrutina.
Get_Rc_Time: ' Subrutina de tiempo RC
HIGH 2
PAUSE 3
RCTIME 2, 1, time
RETURN
El nombre de la segunda subrutina es Delay, y todo lo que contiene es PAUSE time /
3. La instruccin PAUSE permite la medicin del tiempo de descarga (cuanto se ilumina
el LED) para controlar el retardo entre el giro en cada segmento iluminado del indicador
de 7 segmentos. El valor a la derecha del operador divisin / puede hacerse mayor para
rotaciones ms rpidas en condiciones de poca iluminacin o puede hacerse pequeo para
hacerlo menos rpido en condiciones de mucha iluminacin. Usted tambin podra usar
* para multiplicar la variable time por un valor en lugar de dividirlo para hacer que el
indicador vaya lento y para controlar con mayor precisin la velocidad, no olvide el
operador */. Mayor informacin de este operador est en la seccin Su Turno.
Delay:
PAUSE time / 3
RETURN
Midiendo Luz Pgina 225
La tercera subrutina se llama Update_Display. La instruccin LOOKUP en esta subrutina
contiene una tabla con seis patrones de bits que se usan para crear el patron circular
alrededor del exterior del indicador LED de 7 segementos. Agregando un 1 a la variable
index cada vez que se llama la subrutina, esta genera el siguiente patrn de bits en la
secuencia para obtener la colocacin en OUTH. Hay solamente seis entrada en la tabla
LOOKUP para valores del index que van de 0 a 5. Qu sucede cuando el valor de
index llega a seis? La instruccin LOOKUP no conoce automticamente como regresar a
la primera entrada, pero usted puede usar una frase IF...THEN para resolver este
problema. La instruccin IF indez = 6 THEN index = 0 resetea el valor de index a 0 cada
vez que llega a 6. Tambin hace que la secuencia de los patrones de bits colocados en
OUTH se repitan en si mismos una y otra y otra vez. Estos, a su vez, hace que el
indicador LED de 7 segmentos repita su patrn circular una y otra y otra vez.
Update_Display:
IF index = 6 THEN index = 0
' BAFG.CDE
LOOKUP index, [ %01000000,
%10000000,
%00000100,
%00000010,
%00000001,
%00100000 ], OUTH
index = index + 1
RETURN
Su Turno Ajustando el Medidor en Hardware y Software
Hay dos formas para cambiar la sensibilidad del medidor. Primero por software: el
programa en PBASIC puede cambiarse para ajustar la velocidad. Anteriormente
mencionamos que dividiendo la variable time de la subrutina Delay con la instrucin
PAUSE time /3 con nmeros mayores que 3 acelerarn el indicador y con nmeros
menores a 3 los desacelerarn. Para verdaderamente desacelararlo tambin puede
multiplicarlo por valores con el operador de multiplicacin * , y para ajustes finos existe
el operador */.
Cuando usted conecta capacitores en paralelo, su valor aumenta. Entonces, colocando un
segundo capacitor de 0.01 F en seguida del primero como lo muestra la Figura 7-14 y 7-
15, la capacitancia sera 0.02 F. Al tener dos veces al capacitancia, las mediciones de
descarga sern dos veces mayores para el mismo nivel de luz.
Pgina 226 Qu es un Microcontrolador?
Conecte el segundo capacitor a la derecha del primero en la porcin del sensor de
luz del circuito medidor de luz de la Figura 7-14 y 7-15.
Ejecute el programa LightMeter.bs2 y observe los resultados.
Como las mediciones de tiempo sern dos veces mayores, el patrn circular de los LEDs
del indicador de 7 segmentos deber girar a la mitad de velocidad.
Figura 7-14
Dos capacitores de 0.01
F en paralelo.
Figura 7-15
Circuitos del Medidor de
Luz con dos capacitores
de 0.01 F en paralelo.
En lugar de la mitad de velocidad de un capacitor de 0.01 F, por qu no un dcimo de
velocidad? Usted puede reemplazar los dos capacitores de 0.01 F con un capacitor de
0.1 F. Este trabajar correctamente en habitaciones muy iluminadas, y bajar su
velocidad en condiciones normales de iluminacin. Recuerde que cuando usted usa un
capacitor que es diez veces mayor entonces la medicin de luz del tiempo RC requerir
diez veces ms tiempo.
Reemplace los capacitores de 0.01 F con un capacitor de 0.1 F.
Ejecute el programa y vea si el efectro predicho ocurre.
Midiendo Luz Pgina 227
Antes de continuar restaure el circuito con un capacitor de 0.01 F en paralelo
con el fototransistor como se muestra en la Figrua 7-9 y 7-10.
Verifique su circuito restaurado y compruebe que funciona antes de continuar.
Qu es mejor ajustar el software o el hardware? Trate usted de usar siempre lo mejor
de ambos mundos. Escoga un capacitor que le de a usted la mediciones ms exactas
sobre el ramgo ms amplio de niveles de luz. Despus que su hardware es lo mejor que
puede usarse, use el software para ajustar automticamente el medidor de luz de manera
que trabaje bien para el usuario bajo el rango ms amplio de condiciones. Esto toma una
cantidad considerable de pruebas y refinamiento pero todo esto es parte del proceso de
diseo de productos.
ACTIVIDAD #5: SALIDA CONMUTADA (ON/OFF) DEL
FOTOTRANSISTOR
Antes que los microcontroladores fueran comunes en los productos, los fotoresistores se
usaban en circuitos que variaban en su salida de voltaje. Cuando el voltaje pasaba debajo
de una valor umbral indicando tiempo de noche, otros circuitos en el dispositivo
encendian las lmparas. Cuando el voltaja pasaba arriba del umbral, indicando tiempo de
da, los circuitos del dispositivo apagaban las lmparas. El comportamiento binario de
conmutacin de la luz puede ser emulado con el mismo BASIC Stamp y el circuito RC
modificando simplemente el programa. Alternativamente, el circuito se puede modificar
para que mande un 1 o un 0 a un pin E/S dependiendo de la cantidad de voltaje
suministrado a el pin, en forma similar como lo hace un botn push. En esta actividad,
ustes trabajar con estos dos enfoques.
Ajustando el Programa de Estados On/Off
El programa PhototransistorAnalogToBinary.bs2 toma el rango de mediciones del
fototransistor y las compara en el punto medion entre las mediciones mayor y menor. Si
la medicin est arriba del punto medio, muestra Enciende las Luces, si no lo est,
muestra Apaga las Luces. El programa usa directivas de constantes para definir las
mediciones mayor y menor que el programa espera del circuito fototransistor.
valMax CON 4000
valMin CON 100
Pgina 228 Qu es un Microcontrolador?
El programa tambin usa los operadores MIN y MAX para asegurarse que los valores
permanecen dentro de estos lmites antes de usarlos para tomar decisiones. Si time es
mayor que valMax (4000 en este Programa Ejemplo), la frase fija time to valMax =4000
De forma semejante si time es menor que valMin (100 en el Programa Ejemplo), la frase
fija time to valMin= 100
time = time MAX valMax MIN valMin
La instruccin IF...THEN...ELSE convierte el rango de valores analgicos digitalizados
en una salida binaria que toma la forma de mensajes luz encendica o luz apagada.
IF time > (valMax - valMin) / 2 THEN
DEBUG CR, "Enciende la luces "
ELSE
DEBUG CR, "Apaga las luces"
ENDIF
Antes de que este programa trabaje correctamente, usted tiene que calibrar sus
condiciones de luz como sigue:
Verique su circuito fototransistor para asegurarse que solo tiene un capacitor de
0.01 F (marcado con 103)
Meta el programa PhototransistorAnalogToBinary.bs2 en el Editor de BASIC
Stamp. Asegurese de agregar un espacio extra despues de s in el mensaje
Encienda la luces
Cargue el programaen el BASIC Stamp.
Observe al Terminal Debug cuando ustes aplica las condiciones de luz penunbra
y brillo que usted desea verificar, y escriba los valores de tiempo resultantes de
mximo y mnimo.
Meta estos valores en el programa con las directivas valMax y valMIn.
Ahora, su programa est listo para ejecutarse y verificarse.
Cargue el programa modificado en el BASIC Stamp.
Verifique para comprobar que las condiciones de luz en penumbra generan el
mensaje Encienda las luces y en condiciones de brillo genera el mensaje
Apague las luces.
Midiendo Luz Pgina 229
' Que es un Microcontrolador - PhototransistorAnalogToBinary.bs2
' Cambia las mediciones analogicas del fototransistor en resultado binario.
' {$STAMP BS2}
' {$PBASIC 2.5}
valMax CON 4000
valMin CON 100
time VAR Word
PAUSE 1000
DO
HIGH 2
PAUSE 100
RCTIME 2, 1, time
time = time MAX valMax MIN valMin
DEBUG HOME, "time = ", DEC5 time
IF time > (valMax - valMin) / 2 THEN
DEBUG CR, "Ecienda las luces "
ELSE
DEBUG CR, "Apague las luces"
ENDIF
LOOP
Su Turno Diferentes umbrales para Brillo y Obscuridad
Si usted trata de incorporar el programa PhototransistorAnalogToBinary.bs2 en un
sistema automtico de luz, tiene un defecto potencial. Digamos que hay suficiente
obscuridad en el exterior que hace que la medicion de time sobrepase (valMax
valMin) / 2, que hace que se enciendan las luces, y al encenderse las luces el sensor las
detecta, entonces esto hara que se apagaan. Este ciclo, enciende las luces/apaga las luces
poda repetirse rapidamente toda la noche!
La Figura 7-16 muestra en una grfica como funciona el ciclo encendido apagado.
Cuando el nivel de luz cae, se incrementa el valor de la variable time, y cuando este cruza
el umbral, la lampara automticamente se enciende. Entonces, como el fototransitor sensa
la lampara que se ha encendido disminuye la medicin de la variable time y entonces la
lmpara se apaga. Entoces, se incrementa nuevamente el valor de la variable time y
sobrepasa el umbral, y como consecuencia nuevamente la lmpara se enciende, y baja el
valor de la variable time del nivel de umbral y etcetera, etcetera...
Pgina 230 Qu es un Microcontrolador?
Figura 7-16
Oscilaciones
Arriba/Debajo del
Umbral.
Un remedio para este problema es agregar un segundo umbral, como lo muestra la Figura
7-17. El umbral Enciende la lmpara solamente enciende la lmpara despus tener
mucha obscuridad, y Apaga la lmpara despues que hay mucho brillo. Con este
sistema, la lmpara se enciende despues que time pas del rango de Enciende la
lmpara. La lampara encendida genera brilla, entonces time disminuy ligeramente,
pero como no baj hasta el umbral de Apaga la lmpara nada ha cambiado y la lmpara
sigue encendida. El trmino HISTERESIS se usa para describir este tipo de sistemas, que
tiene dos umbrales de entrada diferentes que afectan su salida junto con una zona de no-
transicin entre ellas.
Figura 7-17
Usando Diferentes
Umbrales Alto y Bajo
para Prevenir
Oscilaciones.
Usted puede realizar este sistema de dos umbrales en su cdigo PBASIC modificado la
instruccin IF...THEN..ELSEIF del programa PhototransistorAnalogToBinary.bs2 . Este
es un ejemplo:
IF time > (valMax - valMin) / 4 * 3 THEN
DEBUG CR, "Enciende las lmparas "
ELSEIF time < (valMax - valMin ) / 4 THEN
DEBUG CR, "Apaga las lmparas"
ENDIF
"Turn light on "
"Turn light off"
valMax
v alMin
( valMax
-
valMin) /
2
"Turn light on "
"Turn light off"
No transition
valMax
valMin
( valMax
-
valMin) / 4 * 3
( valMax
-
valMin) / 4
Midiendo Luz Pgina 231
El primer bloque IF...THEN muestra Enciende las lmparas cuando la variable time
almacena un valor que es mayor a del valor del tiempo ms alto (el menor brillo). El
bloque de cdigos ELSEIF slo muestra Apaga las lmparas cuando la variable tiempo
almacena un valor que es menor a del menor valor de tiempo (mximo brillo).
Guarde el programa PhototransistorAnalogToBinary.bs2 con el nombre
PhototransistorHysteresis.bs2.
Antes de modificar el programa PhototransistorHysteresis.bs2 verifiquelo para
asegurarse que funciona el umbral. Si la iluminacin ha cambiado, repita los
pasos de calibracin (del programa PhototransistorAnalogToBinary.bs2) de
valMin y valMax.
Reemplace la instruccin IF...ELSE...ENDIF del programa
PhototransistorAnalogToBinary.bs2 que acaba,ps de analizar.
Cargue el programa PhototransistorHysteresis.bs2 en el BASIC Stamp.
Verifique y compruebe que es obscuro el umbral Enciende las lmparas2 y que
es luminoso el umbral Apague las lmparas
Si usted agrega un circuito LED y modifica el cdigo para que encienda y apague el
LED, pueden suceder algunas situaciones interesantes. Especialmente si usted pone el
LED cerca del fototransistor, usted podra todava ver el comportamiento enc/apag
cuando hay obscuridad incluso con la histeresis programada. Qu tan lejos del
fototransistor debe estr el LED para hacer que los dos umbrales prevengan el
comportamiento enc/apag?
Considerando que los valores de valMin y valMax son iguales en ambos programas, qu
tan lejos debe estar el LED para que trabaje correctamente el programa
PhototransistorAnalogToBinary.bs2 que no se ha modificado?
Pgina 232 Qu es un Microcontrolador?
TTL vs Disparador Schmitt
Los pines de E/S de su BASIC Stamp mandan y reciben seales usando lgica de
transistor- transistor o TTL ) Como salida, el pin de E/S manda una seal high igual a 5 V o
una seal low igual a 0 V. El lado izquierdo de la Figura 7-18 muestra como el pin de E/S se
comporta como entrada. El registo IN de los pines de E/S (IN0, IN1, IN2, etc) almacena un 1
si el voltaje aplicado esta arriba de 1.4 V, o un 0 si est debajo de 1.4 V. Esto se muestra 1
Lgico o 0 Lgico en la figura.
Un disparados Schmitt es un circuito representado por el smbolo en el centro de la Figura
7-18. El lado derecho de la Figura 7-18 muestra como se comportara un pin de E/S
direccionado como entrada si tuviera un circuito disparador Schmitt interconstruido.
Semejante al cdigo PBASIC con dos umbrales el disparado Schmitt tiene histeresis. El
valor de entrada almacenado por el registro IN del pin de E/S no cambia de 1 a 0 hasta que
el voltaje de entrada pasa debajo de 0.75 V. El BASIC Stamp 2px tiene una instruccin
PBASIC que permite que usted configura sus pines de entrada como Disparadores Schmitt.
Figura 7-18 Umbrales y smbolos de TTL vs Disparador Schmitt.
Ajustando el Circuito para Estados Enc/Apag
En la Actividad #2 del Captulo 5 se mencion que el voltaje de umbran para un pin E/S
del BASIC Stampa es 1.4 V. Cuando un pin de E/S se direcciona como entrada, los
voltajes arriba de 1.4 V aplicados a un pin de E/S resulta en un 1 binario, y los voltajes
debajo de 1.4 V resultan en un 0 binario. El nudo Vo en el circuito que muestra la Figura
7-19 cambia su voltaje en funcin de la luz. El circuito puede conectarse a el pin E/S del
BASIC Stamp, y con poca iluminacin el voltaje pasar abajo del umbral de BASIC
Stamp de 1.4 V, y el registro de entrada del pin de E/S almacenar un 0. En condiciones
de mucha iluminacin, Vo sube arriba de 1.4 V, y el registro de entrada del pin de E/S
almacenar un 1.
TTL
Threshold
Schmitt Trigger
Symbol
Schmitt Trigger
Threshold
Logic 1
Logic 0
Logic 1
Logic 0
No Change
5 V
0 V
5 V
0 V
1.4 V
4.25 V
0.75 V
Midiendo Luz Pgina 233
Figura 7-19
Circuito del Voltaje de
Salida en Funcin de la
Luz.
La razn de los cambios del voltaje en Vo con niveles de luz lo explica la ley de Ohm .
Que establece que el voltaje en los extremos de un resistor (V en la Figura 7-19) es iual a
la corriente que pasa por el resistor (I), multiplicado por la resistencia del resistor (R).
V = I x R
Recuerde que un fototransistor permite que pase ms corriente a travs de l cuando
recibe ms iluminacin, y menos corriente cuando recibe menos iluminacin.
Pongamosle atencin al ejemplo del circuito de la Figura 7-19 y calculemos cuanta
corriente podra pasar a travs del resistor para crear una cada de voltaje de 1.4 V.
Primero, sabemos que el valor del resistor es 10 K , o 10000 . Tambien sabemos que
la diferencia de potencial sea igual a 1.4 V, entonces necesitamos modificar la ley de
Ohm para encontrar I. Para hacer esto, dividimos ambos miembros de la ecuacin V = I x
R por R, y obtenemos I = V/R. Entonces sustituimos los valores conocidos (V = 1.4 V y
R = 10 K ) y resolvemos para I.
I = V R
= 1.4 V 10 k
= 1.4 V 10,000
= 0.00014 V/
= 0.00014 A
= 0.14 mA
Ahora, si por el transistor circula el doble de corriente, porque hay ms iluminacin,
cual es la diferencia de potencial en el resistor? Con el doble de corriente, I = 0.28 mA, y
la resistencia es 10 K , aplicando la ley de ohm tenemos:
I
+
V = R
Pgina 234 Qu es un Microcontrolador?
V = I R
= 0.28 mA 10 k
= 0.00028 A 10,000
= 2.8 A
= 2.8 V
Con 2.8 V aplicados a un pin E/S, su registro de entrada deber almacenar un 1 ya que
2.8 V est arriba del voltaje de umbral del pin E/S que es 1.4 V.
Su Turno Ms clculos
Qu sucede si el fototransistor solo permite la mitad del voltaje de umbral, la corriente
que fluye en el circuito es (0.07 mA), cual sera el voltaje en los extremos del resistor?
Qu almacenara el registro de entrada del pin E/S?
Verificando el Sensor Binario de Luz
Verificar el circuito del sensor binario de luz es parecido a verificar el circuito de los
botones push del captulo 3. Cuando el circuito se conecta a un pin E/S, el voltaje puede
estar arriba o debajo de voltaje de umbral de 1.4 V del BASIC Stamp, lo cual resulta en
un 1 o 0 y este lo mostrar la Terminal Debug.
Partes para el Circuito Analgico y el Sensor Binario de Luz
Un fototransistor
Un Resistor de 220 (rojo-rojo-caf)
Un Resistor de 10 K (caf-negro-naranja)
Un Resistor de 2 K (rojo-negro-rojo)
Un Resistor de 4.7 K (amarillo-violeta-rojo)
Un Resistor de 100 K (caf-negro-amarillo)
Dos alambres para puentes
Circuito Analgico y Sensor Binario de Luz
El circuito que muestra la figura 7 se comporta como un botn push controlado por
sombra.
La obscuridad hace que in2 = 0, y la iluminacin hace que in2 = 1. Recuerde que un pin
de E/S direccionado como entrada no afecta al circuito que monitorea porque no
proporciona ni consume corriente. Esto hace al pin E/S y al resitor de 220
esencialmente invisible al circuito. Entonces, el voltaje resultante de los clculos de
Midiendo Luz Pgina 235
nuestro circuito de la seccin anterior ser el mismo con o sin el resistor de 220 y el
pin E/S conectados.
Construya el circuito que muestra la Figura 7-20
Figrua 7-20 Diagrama Esquemtico y de Alambrado del Circuito Analgico y Sensor Binario
de Luz.
Cdigo de Prueba del Circuito Analgico y Sensor Binario de Luz
El Programa TestBinaryPhototransistor.bs2 es una versin modificada del programa
ReadPushButtonState.bs2 del Captulo 3, Actividad # 2. Adems del ajustar los
comentarios, un cambio al programa real es la lnea DEBUG ? IN2 que antes era
DEBUG ? IN3 en el Programa Ejemplo porque el botn push estaba conectado al P3 en
lugar de P2.
Revise Captulo 3, Actividad #2 (pgina 65).
Use el programa TestBinaryPhototransistor.bs2 de abajo para verificar que con
iluminacin sobre el fototransistor genera un 1 con obscuridad y genera un 0.
Usted podra necesitar mucha iluminacin. Si su habitacin est iluminada y
genera un 0, intntelo con luz solar o con una lmpara cerca. Un remedio
alternativo para poca iluminacin es reemplazar el resistor de 10 K por uno de
100 K .
Pgina 236 Qu es un Microcontrolador?
' Que es un Microcontrolador? - TestBinaryPhototransistor.bs2
' Verifique cada de segundo el circuito fototransistor estados de salida
binarios.
' {$STAMP BS2}
' {$PBASIC 2.5}
DO
DEBUG ? IN2
PAUSE 250
LOOP
Verificando la Resistencia en Serie
Vea los calculos de V = I x R al principio de esta actividad. Si el resistor en serie es1/5
del valor, el voltaje en el resistor ser 1/5 del valor para las mismas condiciones de luz.
De igual manera, un resistor 10 veces mayor originar que el voltaje sea diez veces
mayor.
Qu hace esto en su circuito? Un resistor de 100 K en lugar de un resistor de 10 K
significa que el fototransistor slo tiene que conducir un 1/10 de la corriente para que
llegue al voltaje de umbral del pin E/S del BASIC Stamp que es de 1.4 V y esto significa
que necesita menos luz para obtener un 1 binario en el registro de entrada del pin E/S.
Esto trabajara como un sensor en un ambiente que se supone en obscuridad ya que ser
ms sensitivo a pequeas cantidades de luz. En contraste, un resistor con 1/5 de su valor
significa que el fototransistor tiene que conducir 6 veces ms corriente para obtener el
voltaje en el resistor para que cruce el voltaje de umbras de 1.4 V y esto significa que
requiere ms luz para obtener un 1 binario en el registro de entrada del pin E/S. Entonces,
este circuito sera ms adecuado para detectar luz ms brillante.
Experimente con resistores de 2 K , 4.7 K , 10 K y 100 K , y compare
los cambios en sensitividad a la luz con cada resistor.
Su Turno Indicador de Nivel de Baja Iluminacin
Escoja un resistor con la mejor respuesta a los cambios 1/0 con niveles de baja
iluminacin en su rea de trabajo.
Agregue la caracterstica del LED del Captulo 3, Actividad #3 para el circuito
de umbral del fototransistor.
Ponga algo entre el LED y el fototransistor para que el fototransistor no pueda
ver el LED. Esto elimina la posibilidad de cruce entre los dos dispositivos.
Midiendo Luz Pgina 237
Modifique el programa para que haga que la luz parpadee cuando una sombre se proyecta
sobre el fototransistor.
ACTIVIDAD #6: POR DIVERSION MIDA LUZ EXTERIOR CON UN LED
Anteriormente dijimos, el circuito presentado en la Actividad #1 se dise para
mediciones de luz en interiores.
Qu sucede si su aplicacin necesita necesita tomar mediones del exterior? Una opcin
pudiera ser encontrar un fototransistor que genere menos corriente para la misma
cantidad de luz. Otra opcin pudiera ser encontrar uno de los otros sensores de luz en el
kit de Qu es un Microcontrolador? son de forma diferente a los LED y se compartan
particularmente bien para mediciones de luz brillante.
Cuando una corriente elctrica circula por el LED, este emite luz, entonces, que piensas,
que sucede cuando la luz incide sobre el LED? S, as es, puede hacer que la corriente
elctrica fluya a travs de un circuito. La Figura 7-21, muestra un circuito LED para
detectar niveles de luz del exterior, y en otras res muy brillantes. Mientras que el
fototransistor permite que la corriente circule porque se le aplic una presin elctrica
(voltaje), el LED se parece a un pequeo panel solar y crea su propio voltaje para
suministrar la corriente. Respecto al circuito de descarga RC, el resultado con un LED es
casi el mismo. El LED conduce ms corriente y drena la carga del capacitor ms
rpidamente cuando hay ms luz, y conduce menos corriente y drena la carga del
capacitor menos rpidamente cuando hay menos luz.
Figura 7-21
Esquemtico del LED en
un Circuito de tiempo RC
Sensible a la Luz
Yellow
Pgina 238 Qu es un Microcontrolador?
Por qu se conecta el LED en sentido inverso? En el Captulo 2, el nodo del LED se
conecto al resistor de 220 y el ctodo se conect a tierra. El circuito hace que el LED
emita luz como resultado de la corriente que circula en el LED cuando el voltaje se aplica al
circuito. Cuando la luz incide sobre el LED, este crear un pequeo voltaje que genera una
pequea corriente en la direccin opuesta. Entonces, el LED tiene que conectarse en
sentido inverso para que la corriente que conduzca permita que el capacitor lo drene para
las mediciones de descarga de RC.
Partes para el Sensor de Luz LED
Un LED amarilla
Un LED verde
Un LED rojo
Un Resistor de 220 (rojo-rojo-caf)
Un alambre para puente
Circuito del Sensor de Luz LED
Una diferencia muy grande entre el LED y el fototransistor es que el LED conduce
mucho menos corriente para la misma cantidad de luz, esto hace que con luz muy
brillante el LED conduce suficiente corriente para descargar el capacitor rpidamente
pero lo suficiente para la medicn de RCTIME. Recuerde que el mximo tiempo de
medicin que RCTIME puede medir es 65535 x 2 us = 131 ms. Entonces para
mediciones buenas de descarga de RC con el BASIC Stamp se requiere un capacitor
mucho muy pequeo. De hecho, el circuito trabaja mejor sin capacitor externo. El LED
tiene una capacitancia interna muy pequea, llamada capacitancia de unin, y los clips
de metal en los que coloca componentes en su tablilla tambin tienen capacitancia.
Pensando, un capacitor son dos placas separadas por aislante llamado dielctrico.
Entonces las placas de metal dentro de su tablilla separadas por plstico y aire forman un
capacitor. La combinacin de la capacitancia de unin del LED, y la capacitancia de los
clips de su tablilla hacen que usted pueda usar el LED sin ningn capacitor externo, como
lo muestra la Figura 7-22.
Construya el circuito mostrado en la Figura 7-22 y 7-23, usando el LED amarillo.
Asegrese de observar la polaridad mostrada en la figuras!
Midiendo Luz Pgina 239
Figura 7-22
Esquemtico del Circuito
LED RCTIME
Figura 7-23
Diagrama de alambrado
del Circuito LED RC
TIME
Verificando el Sensor de Luz LED con Cdigo
El circuito LED que sensa la luz puede verificarse en una habitacin bien iluminada o en
exteriores durante el da. En habitaciones con poca iluminacin los tiempos medidos no
exceden a 65535 y en este caso RCTIME almacenar cero en la variable result. Para la
mayora de situaciones, el cdigo es the mismo de la Actividad #1, del programa
TestPhototransistor.bs2.
Si est en una habitacin bien iluminada trate esto:
Ejecute el programama TestPhototransistor.bs2 de la Actividad #1.
Dirija el LED a la fuente de luz ms brillante volteando su tablilla hacia la luz.
Gradualmente gire la tablilla de la fuente de luz ms brillante de la habitacin, el
valor que muestra la Terminal Debug deber ser mayor conforme la luz
disminuye.
Flat spot and
shorter cathode pin
Longer anode pin
Pgina 240 Qu es un Microcontrolador?
Si tiene una lmpara brillante trate esto:
Ejecute el programa TestPhototransistor.bs2.de la Actividad #1.
Elimine las fuentes de luz ms brillantes como la luz del sol de la ventana.
Encienda la lmpara y apntela hacia la parte superior del LED a una distancia
de 10 cm. Si es posible, apague algunas de las lmparas fluorescentes para
disminuir los niveles de luz ambiente.
Observe las mediciones que muestra la Terminal Debug conforme usted
gradualmente incrementa la distancia de la lmpara de la parte superior del LED.
Esto le permitir que usted determina la distancia de la lmpara del LED.
Si usted est en una habitacin que tiene slo lmparas fluorescentes sin fuentes de luz
brillantes:
Ejecute el programa TestPhototransistor.bs2 de la Actividad #1.
Elimina la mayora de las fuentes brillantes de luz como rayos que entran por la ventana.
Si es posible, apague algunas de las lmparas fluorescentes para que los niveles de luz
sean bajos.
Apunte el LED hacia el monitor de su computadora hasta que casi toque el monitor y vea
si la mediones le permiten distinguir entre varios colores del monitor.
Pruebas en el Exterior
Ejecute el programa StoreLightMeasurements InEeprom.bs2 de la Actividad #2.
Desconecte el cable de programacin y lleve su tablilla al exterior.
Dirija su tablilla para el LED apunte directamente al sol.
Presione y suelte el botn de Reset para reiniciar el programa de Adquisicin de
Datos.
Gire gradualmente su tablilla respecto al sol durante 2 minutos.
Regrese su tablilla al interior y reconectela a la PC.
Ejecute el programa ReadLightMeasurementsFromEeprom.bs2 y examine las
mediciones de luz. Como usted gir gradualmente el LED respecto al sol, las
mediciones sucesivas debern ser mas grandes.
Su Turno - Puede el BASIC Stamp indicarle si la luz es Verde o Roja?
En la Figura 7-2, el verde esta en la mitad del espectro y el rojo a la derecha. Si usted baja
la versin PDF a color de este libro de www.parallax.com usted puede colocar el verde y
el rojo en su pantalla y registrar las mediciones de luz del espectro de colores. Entonces,
Midiendo Luz Pgina 241
al comparar las mediones ms pequeas de cada LED, y usted puede detectar si el LED
est enfrente del color verde o rojo de la pantalla.
Empiece con el circuito detector de luz con el LED verde de la Figura 7-22 y la
Figura 7-23.
Descargue la versin PDF de Qu es un Microcontrolador? de
www.parallax.com/go/WAM.
Coloque el espectro de colores de la Figura 7-2 en su monitor y agrande la
imagen.
Con el programa TestPhototransistor.bse muestre las mediciones en la Terminal
Debug sostenga su tablilla para que el domo del LED verde apunte directamente
en el monitor sobre el espectro de colores. Para mejores resultados el domo del
LED casi debe tocar el monitor, y los niveles de luz de su habitacin deben ser
mnimos.
Dislice el LED verde lentamente a lo largo de la barra del espectro que muestra
el monitor.y anote que color reporta las mediciones ms pequeas.
Repite esto con el LED rojo. Reporto el LED rojo los valores de medicin ms
bajos cuando estaba sobre el color rojo del monitor, y el LED verde report sus
mediciones ms bajas cuando estaba sobre el color verde del monitor?
Las mediciones ms bajas del LED rojo deben ocurrir cuando est sobre el color rojo del
monitor, y las mediciones ms bajas del LED verde deben ocurrir cuando estn sobre el
color verde del monitor.
RESUMEN
Este captulo introdujo los sensores de luz y describi como se usan en una variedad de
productos. Diferentes sensores de luz detectan diferentes clases de luz, y sus hojas de
datos describen su sensibilidad en trminos de longitud de onda. Este captulo se enfoc
en el fototransistor, un dispositivo que controla la corriente de colector a emisor por la
cantidad de luz que incide en su base. Un fototransistor conduce porque luz puede
controlar la cantidad de corriente, la tcnica para medir la posicin de una perilla de un
potenciometro del captulo 5 del circuito RC, tambin trabaja para medir la luz que incide
sobre el fototransistor. El tiempo que requiere un capacitor para perder su carga a travs
del fototransistor resulta en la medicin RCTIME que proporciona un nmero que
corresponde a la brillantez de la luz incidente en el fototransistor.
La Adquisicin de Datos por almacenamiento de mediciones de luz en el mdulo de la
memoria de programa EEPROM del BASIC Stamp, se introdujo con las instrucciones
WRITE y READ que se usaron para almacenar valores y retirar valores del mdulo
Pgina 242 Qu es un Microcontrolador?
EEPROM del BASIC Stamp. El volumen de nmeros involucrados en la Adquisicin de
Datos puede ser dificil de analizar, pero al graficar los datos es ms fcil ver patrones,
tendencias y eventos. Los datos adquiridos pueden transferirse a hojas de clculo y
graficarse, y ciertas utilerias de graficacin puede mostrarlas la Terminal Debug y
graficar los valores que el BASIC Stamp manda en vez de mostrarlos como texto.
Tambin se desarrolln un ejemplo de aplicacin de un Medidor de Luz y ste demostr
como se pueden usar las mediciones de luz para controlar otros procesos, en este caso, la
velocidad de un patrn circular de un indicador LED de 7 segmentos. Esta aplicacin us
subrutinas para realizar tres trabajos diferentes para la aplicacin del medidor de luz.
El BASIC Stamp puede programarse para convertir la medicin del tiempo de descarga
de un circuito RC a valores binarios usando instrucciones IF...THEN. Adicionalmente, el
programa puede tomar un rango de mediciones del tiempo de descarga de RC y aplicarle
histeresis al umbral luces encendidas en el rango de mediciones de obscuridad, y un
luces apagadas en el rango con mayor luz. Esto puede ayudar a prevenir oscilaciones
encendido/apagado que de otra forma podran ocurrir cuando el sensor reporta obscuridad
y el dispositivo prede las luces en un rea con luminosidad.
Sin histeresis, el dispositivo podra sensar la luz y apagar nuevamente las luces y repetir
este ciclo en form indefinida.
Una aproximacin de hardware para sensar los estados de luz encendido/apagado es
aplicarle energa al fototransistor con un resistor en serie. Al estudiar la ley de Ohm
vimos que la cantidad de corriente que el fototransistor conduce afecta el voltaje del
resistor. Este voltaje variable puede conectarse a un pin E/S y generar un 1 binario si el
voltaje est arriba de 1.4 V que es el umbral de un pin E/S, o un 0 binario si el voltaje est
debajo del voltaje de umbral.
El LED (diodo emisor de luz) que emite luz cuando circula por l una corriente tambin
se comporta como un pequeo panel solar cuando le llega luz, y esto genera un pequeo
voltaje que a su vez puede hacer circular corriente en los circuitos. Las corrientes que
generan los LEDs son pequeas pero suficientes para una combinacin de la propia
capacitancia del LED y la capacitanci propia de los clips de la tablilla de experimentos
proporcionan suficiente capacitancia para la descarga de un circuito RC sin capacitor
externo. Mientras que el fototransistor del kit Qu es un Microcontrolador? se comporta
mejor en ambientes interiores, el LED es grandioso para los ambientes exteriores y con
mediciones de luz brillante.
Midiendo Luz Pgina 243
Preguntas
1. Cules son algunos ejemplos de aplicaciones de alumbrado automtico que
dependen de sensores de luz ambiente?
2. Cules son algunos ejemplos de productos que responden a cambios en la
brillantes de luz ambiente?
3. Qu rango de longitud de ondas tiene el espectro de luz visible?
4. Cules son los nombres de las terminales del fototransistor, y cual de ellas
controla la cantidad de corriente que puede circular por el dispositivo?
5. Qu significan las letras de EEPROM?
6. Cuntos bytes puede almacenar el mdulo EEPROM del BASIC Stamp?
Cuntos bits puede almacenar?
7. Qu instruccin usa usted para almacenar un valor en EEPROM? Qu
instruccin usar usted para retirar un valor de EEPROM? Cul de ellos requiere
una variable?
8. Qu es una etiqueta?
9. Qu es una subrutina?
10. Qu instruccin se usa para llamar un subrutina? Qu instruccin se usa para
terminar una subrutina?
Ejercicios
1. Dibuje el esquemtico de un circuito de tiempo RC con fototransistor conectadoa
P5.
2. Modifique el programa TestPhototransistor.bs2 para que funciones en un circuito
conectado a P5 en lugar de P2.
3. Explique como debera modifica el programa LightMeter.bs2 para que el patrn
circular mostrado por el indicador LED de 7 segmentos giren en la direccin
opuesta.
Proyectos
1. Haga un pequeo prototipo de un sistema que automticamente ciere las cortinas
cuando haya mucha luz y nuevamente las abra cuando disminuya la luz. Use el
servo como actuador mecnico. Sugerencia: Para el cdigo usted puede agregar
dos instrucciones de control de servo al programa
PhototransistorAnalogToBinary.bs2, y cambiar la instruccin PAUSE 100 a
PAUSE 1. Asegres que sigue las instrucciones en el texto para calibrar el rea
de condiciones de luz antes de hacer la prueba.
2. Para un crdito adicional, refuerce su solucin al Proyecto 1 incorporandole las
modificaciones de histresis analizadas en la Actividad #5.
Pgina 244 Qu es un Microcontrolador?
Soluciones
Q1. Luces de carros, alumbrado de calles y luces de seguridad externa que
automticamente se iluminan cuando hay obscuridad.
Q2. Pantallas de Laptops y cmaras con autoenfoque.
Q3. De 380 nm a 750 nm de acuerdo con la fgura 7-2.
Q4. Colector, base y emisor. La base controla la cantidad de corriente de emisor a
colector.
Q5. Memoria de Solo Lectura Electricamente Programable y Borrable.
Q6. 2048 bytes. 2048x8 = 16, 384 bits
Q7. WRITE para almacenar un valor; READ para retirar un valor. La instruccin
READ necesita una variable.
Q8. Etiqueta es un nombre que puede usarse para referirese a un lugar en un
programa con PBASIC.
Q9. Una subrutina es un pequeo segmento de cdigo que hace cierto trabajo.
Q10.Se llama con GOSUB y se termina con RETURN
E1. Esquemtico de la Figura 7-4 con el cambio de P2 a P5.
E2. Los cambios requeridos son muy similares a los que explicamos en la pgina
202.
DO
HIGH 5
PAUSE 100
RCTIME 5, 1, time
DEBUG HOME, "time = ", DEC5 time
LOOP
E3. Para ir en la direccin opuesta, los patrones deben mostrarse en orden inverso.
Esto puede hacerse conmutando los patrones dentro de la instruccin LOOKUP,
o invirtiendo el orden de obtenerlos de look up. Estas son dos soluciones hechas
con subrutinas alternadas Update-Display.
Midiendo Luz Pgina 245
Solucion 1
Update_Display:
IF index = 6 THEN index = 0
' BAFG.CDE
LOOKUP index, [ %01000000,
%10000000,
%00000100,
%00000010,
%00000001,
%00100000 ],
OUTH
index = index + 1
RETURN
Solucion 2
Index = 5 '<<Add after Index variable
Update_Display:
' BAFG.CDE
LOOKUP index, [ %01000000,
%10000000,
%00000100,
%00000010,
%00000001,
%00100000 ], OUTH
IF (index = 0) THEN
index = 5
ELSE
index = index - 1
ENDIF
RETURN
P1. El fototransistor de la Figura 7-4, el esquemtico del servo para su tablilla del
Captulo 4, Actividad #1.
' Que es un Microcontrolador - Ch07Prj01_Blinds_Control.bs2
' Control de la Posicion del servo con luz.
' {$STAMP BS2}
' {$PBASIC 2.5}
valMax CON 4000
valMin CON 100
time VAR Word
PAUSE 1000
DO
HIGH 2
PAUSE 1 ' PAUSA 100 -> PAUSA 1
RCTIME 2, 1, time
DEBUG HOME, "time = ", DEC5 time
time = time MAX valMax MIN valMin
IF time > (valMax - valMin) / 2 THEN
DEBUG CR, "Abre las cortinas " ' Modifica
PULSOUT 14, 500 ' Agrega
ELSE
DEBUG CR, "Cierra las cortinas" ' Modifica
PULSOUT 14, 1000 ' Agrega
ENDIF
LOOP
Pgina 246 Qu es un Microcontrolador?
P2. Agregando la Funcion Histeresis para el crdito adicional:
' Que es un Microcontrolador? - Ch07Prj02_Blinds_Control_Extra.bs2
' Control de posicin del servo con luz incluyendo histeresis.
' {$STAMP BS2}
' {$PBASIC 2.5}
valMax CON 4000
valMin CON 100
time VAR Word
PAUSE 1000
DO
HIGH 2
PAUSE 1 ' PAUSA 100 -> PAUSA 1
RCTIME 2, 1, time
DEBUG HOME, "time = ", DEC5 time
time = time MAX valMax MIN valMin
IF time > (valMax - valMin) / 4 * 3 THEN
DEBUG CR, "Abre las cortinas " ' Modifica
PULSOUT 14, 500 ' Agrega
ELSEIF time < (valMax - valMin ) / 4 THEN
DEBUG CR, "Cierra las cortinas" ' Modifica
PULSOUT 14, 1000 ' Agrega
ENDIF
LOOP
Midiendo Luz Pgina 247
Pgina 248 Qu es un Microcontrolador?
Captulo 8: Frecuencia y Sonido
SU DA Y LOS BEEPS ELECTRNICOS
Estos son algunos ejemplos de beeps que usted puede oir durante un da normal: El beep
del horno de microondas cuando termina de cocinar su comida. El telfono celular toca
diferentes tonos de beeps de canciones para llamar su atencin que est recibiendo una
llamada. El cajero automtico emite beeps para recordarle que no olvide su tarjeta. La
caja registradora de la tienda emite beeps para decirle a la cajera que el cdigo de barras
de los abarrotes que pas sobre el escaner ya lo registr. Algunas calculadoras emiten
beeps cuando se presionan incorrectamente las teclas. Usted empez su da con los beeps
de un reloj despertador.
MICROCONTROLADORES, BOCINAS Y SEALES APAGADO/
ENCENDIDO
Todos los beeps que usted oye durante su rutina diaria los generan microcontroladores
conectados a bocinas. El microcontrolador crea estos beeps mandando seales rpidas de
apag/enc a varios tipos de bocinas. La velocidad de estas seales se llama frecuencia y
determina el tono del beep. Cada vez que una seal apag/enc se repite a s misma se llama
ciclo. Usted ver frecuentemente que al nmero de ciclos por segundo se le llama hertz y
se abrevia Hz. Por ejemplo, una de las frecuencias ms comunes de los beeps que ayudan
a las mquinas a llamar su atencin es 2 kHz. Esto significa que las seales high/low se
repiten 2000 veces por segundo.
Presentando a las Bocinas Piezoelctricas
En esta actividad usted experimentar mandando una variedad de seales a una comn,
pequea y barata bocina lllamada bocina piezoelctrica. A una bocina piezoelctrica
comunmente se le llama bocina piezo o zumbador piezo. Su smbolo esquemtico y su
dibujo lo muestra la Figura 8-1.
Figura 8-1
Bocina Piezoelctrica. Dibujo y
smbolo esquemtico.
Frequencia y Sonido Pgina 249
ACTIVIDAD #1: CONSTRUYENDO Y VERIFICANDO LA BOCINA
En esta actividad usted contruir y verificar el circuito de la bocina piezoelctrica.
Partes del Circuito de la Bocina
Una bocina piezoelctrica
Dos cables para puentes.
Construyendo el Circuito de la Bocina Piezoelctrica.
La terminal negativa de la bocina piezoelctrica deber conectarse a Vss, y la terminal
positiva deber conectarse a un pin E/S. El BASIC Stamp deber programarse para
mandar seales high/low a la terminal positiva de la bocina piezoelctrica.
Si su bocina tiene un aislante quteselo (no necesita lavarlo)
Construya el circuito que muestra la Figura 8-2
P15
P14
P13
P12
P11
P10
P8
P7
P6
P5
P4
P3
P2
P1
P0
P9
X2
X3
Vdd Vss Vin
Vss
P9
+
Figura 8-2
Circuito de la bocina
piezoelctrica, Diagrama
esquemtico y de
alambrado.
Funcionamiento de la Bocina Piezoelctrica
Cuando la cuerda de una guitarra vibra, causa cambios en la presin del aire. Estos
cambios en la presin del aire nuestro oido los detecta como un tono. Con cambios
rpidos en la presin del aire es mayor el tono, y para cambios lentos en la presin del
aire, menor es el tono. El elemento dentro de la caja de plstico de la bocina
piezoelctrica se llama elemento piezoelctrico. Cuando las seales high/low se aplican a
la terminal positiva de la bocina, el elemento piezoelctrico vibra, y genera cambios en la
presin del aire como lo hace la cuerda de la bocina. Y como la cuerda de la bocina, su
Pgina 250 Qu es un Microcontrolador?
oido detecta los cambios en la presin del aire que genera la bocina piezoelctrica, y
suena tpicamente como un beep o un tono.
Programando el Control de la Bocina
La instruccin FREQOUT es una forma conveniente de mandar seales high/low a la
bocina para que haga un sonido. El Manual del BASIC Stamp muestra que la sintaxis de
la instruccin es:
FREQOUT Pin, Duration, Freq1 {, Freq2}
Y como la mayora de las otras instrucciones usadas en este libro, Pin es un valor que
usted puede usar para escoger que pin del BASIC Stamp usar. El argumento Duration
es un valor que le dice a la instruccin FRECOUT que tan largo, en milisengundos, es el
tono que deber tocar. El argumento Freq1, se usa para fijar en hertz la frecuencia del
tono, , en hertz . Hay un argumento opcional Freq2 que puede usarse para tocar dos tonos
diferentes al mismo tiempo.
As se manda un tono al pin E/S P9 que dura 1.5 segundos y tiene una frecuencia de 2
kHz:
FREQOUT 9, 1500, 2000
Programa Ejemplo: TestPiezoWithFreqout.bs2
Este Programa Ejemplo manda un tono de 2 kHz a la bocina en el pin E/S P9 durante 1.5
segundos. Usted puede usar la Terminal Debug para ver cuando la bocina emite beeps y
cuando se detiene.
Meta y corra el programa TestPiezoWithFreqout.bs2
Verifique que la bocina hacer un tono claramente audible durante el tiempo que
la Terminal Debug muestrael mensaje: Tone sending (Mandando Tono)
' Que es un Microcontroladirr - TestPiezoWithFreqout.bs2
' Manda un tono a la bocina piezo usando la instruccin FREQOUT.
'{$STAMP BS2}
'{$PBASIC 2.5}
PAUSE 1000
DEBUG "Mandando Tono...", CR
FREQOUT 9, 1500, 2000
DEBUG "Hecho el Tono ."
Frequencia y Sonido Pgina 251
Su Turno Ajustando la Frecuencia y Duracin
Guarde el programa TestPiezoWithFreqout.bs2 con un nombre diferente.
Trate algunos valores diferentes para los argumentos de Duration y Freq1.
Despus de cada cambio, ejecute el programa y escriba el efecto.
Conforme el argumento Freq1 se hace mayor sube o baja el tono? Trate valores
de 1500, 2000, 2500 y 3000 para responder este pregunta.
ACTIVIDAD #2: SONIDOS EN ACCIN
Algunos juguetes contienen microcontroladores que se usan para hacer sonidos en
accin. Sonidos en accin involucra cambiar rpidamente la frecuencia de la bocina.
Usted puede tambien obtener algunos efectos interesantes jugando juntos dos tonos
diferentes usando el argumento opcional Freq2 de la instruccin FREQOUT. Esta
actividad presenta ambas tcnicas.
Programando Sonidos en Accin
La accin y aplicacin de sonidos tiene tres componentes diferentes:
1. Pausa
2. Duracin
3. Frecuencia
La pausa es el tiempo entre tonos, y usted puede usar la instruccin PAUSE para crearla.
La duracin es la cantidad de tiempo que dura un tono, usted puede fijarla usando el
argumento Duration de la instruccin FREQOUT. La frecuencia determina la
caracterstica del tono. A mayor frecuencia, mayor es el tono, a menor frecuencia menor
es el tono. Esto lo determina, naturalmente, el argumento Freq1 de la instruccin
FREQOUT.
Programa Ejemplo: ActionTones.bs2
El programa ActionTones.bs2 demuestra unas pocas combinaciones de pausa, duracin y
frecuencia. Esta primer secuencia de tonos suena parecido a su reloj despertador
electrnico. El segundo suena como hablara un robot de pelcula familiar de ciencia
ficcin. El tercero es un tipo de efecto de sonido que usted podra oir en un video juego
antiguo.
Meta y ejecute el programa ActionTones.bs2
Pgina 252 Qu es un Microcontrolador?
' Que es un Microcontrolador - ActionTones.bs2
' Demuestra diferentes combinaciones de pausa, duracion, frecuencia
' pueden usarse para efectos de sonico.
'{$STAMP BS2}
'{$PBASIC 2.5}
duration VAR Word
frequency VAR Word
PAUSE 1000
DEBUG "Alarm...", CR
PAUSE 100
FREQOUT 9, 500, 1500
PAUSE 500
FREQOUT 9, 500, 1500
PAUSE 500
FREQOUT 9, 500, 1500
PAUSE 500
FREQOUT 9, 500, 1500
PAUSE 500
DEBUG "Robot reply...", CR
PAUSE 100
FREQOUT 9, 100, 2800
FREQOUT 9, 200, 2400
FREQOUT 9, 140, 4200
FREQOUT 9, 30, 2000
PAUSE 500
DEBUG "Hyperspace...", CR
PAUSE 100
FOR duration = 15 TO 1 STEP 1
FOR frequency = 2000 TO 2500 STEP 20
FREQOUT 9, duration, frequency
NEXT
NEXT
DEBUG "Done", CR
END
Funcionamiento de ActionTones.bs2
La rutina Alarma suena como un reloj despertador. Esta rutina toca un tono con una
frecuencia fija de 1.5 kHz que dura 1.5 segundos con retardos fijos entre tonos de 0.5
segundos. La rutina Robot reply usa varias frecuencia de duracin corta.
Frequencia y Sonido Pgina 253
La rutina Hyperspace no usa retardos, pero varia a la duracin y la frecuencia. Usando
bucles FOR...NEXT para cambiar rapidamente las variables frecuencia y duracin, usted
puede obtener algunos efectos interesantes de sonidos.
Cuando uno de los bucles FOR...NEXT se ejecuta dentro de otro bucle, se le llama
bucles anidados. As trabaja el bucle anidado FOR...NEXT. La variable duracin
empieza en 15, entonces el bucle For frequency...lo toma y manda frecuencias a la bocina
piezoelctrica de 2000, luego 2020, luego 2040, etc, hasta llegar a 2500.
Cuando termina el bucle FOR frequency, el bucle For duration...solo se ha repetido una
de sus 15 ves. Entonces resta un 1 al valor de duracin y repite el bucle For frequency
una y otra vez.
FOR duration = 15 TO 1
FOR frequency = 2000 TO 2500 STEP 15
FREQOUT 9, duration, frequency
NEXT
NEXT
Programa Ejemplo: NestedLoops.bs2
Para comprender mejor como funciona el bucle anidado FOR...NEXT, el programa
NestedLoops.bs2 usa la instruccin DEBUG para mostrar el valor de una versin menos
complicada de bucles anidados que utizamos en el programa ActionTones.bs2.
Meta y ejecute el programa NestedLoops.bs2.
Examine la salida de la Terminal Debug, y verifique que cambian las variables
duration y frequency cada vez que pasan por el bucle.
' Que es un Microcontrolador? - NestedLoops.bs2
' Demonstracin del funcionamiento del bucle anidad del programa
ActionTones.bs2.
'{$STAMP BS2}
'{$PBASIC 2.5}
duration VAR Word
frequency VAR Word
PAUSE 1000
DEBUG "Duration Frequency", CR,
"-------- ---------", CR
Pgina 254 Qu es un Microcontrolador?
FOR duration = 4000 TO 1000 STEP 1000
FOR frequency = 1000 TO 3000 STEP 500
DEBUG " " , DEC5 duration,
" ", DEC5 frecuencia, CR
FREQOUT 9, duration, frecuencia
NEXT
DEBUG CR
NEXT
END
Su Turno Ms Efectos de Sonido
Hay muchas formas bonitas e ilimitadas que al modificar ActionTones.bs2 genere
diferentes combinaciones de sonido. Esta es una modificacin a la rutine Hyperspace.
DEBUG "Hyperspace jump...", CR
FOR duration = 15 TO 1 STEP 3
FOR frequency = 2000 TO 2500 STEP 15
FREQOUT 9, duration, frequency
NEXT
NEXT
FOR duration = 1 TO 36 STEP 3
FOR frequency = 2500 TO 2000 STEP 15
FREQOUT 9, duration, frequency
NEXT
NEXT
Guarde su Programa Ejemplo con el nombre ActionTonesYourTurn.bs2.
Algrese con esta y otras modificaciones de su propia creacin.
Dos Frecuencias al Mismo tiempo
Usted puede tocar dos frecuencias diferentes al mismo tiempo. Recuerde la sintaxis de la
instruccin FREQOUT de la Actividad #1.
FREQOUT Pin, Duration, Freq1 {, Freq2}
Usted puede usar el argumento opcional Freq2 para tocar dos frecuencias con una sola
instruccin FREQOUT. Por ejemplo, usted puede tocar 2 kHz y 3 kHz de la siguiente
forma:
FREQOUT 9, 1000, 2000, 3000
Frequencia y Sonido Pgina 255
Cada tono de teclado es tambin un ejemplo de dos frecuencias juntas combinadas. En
Telecomunicaciones a esto se le llama DTMF (Dual Tone Multi Frequency) Frecuencia Dual
Muti Tono. En PBASIC tambin hay una instruccin llamada DTMFOUT que esta diseada
justamente para mandar tonos de telfono. Para ejemplos vea esta instruccin en el Manual
BASIC Stamp o en Ayuda.
Programa Ejemplo: PairsOfTones.bs2
Este Programa Ejemplo demuestra la diferencia en tono cuando toc juntas 2 kHz y 3
kHz. Tambin demuestra un fenomeno interesante que ocurre cuando usted suma dos
ondas de sonida que estn muy cerca en frecuencia. Cuando usted toca 2000 Hz y 2001
Hz al mismo tiempo el tono entra y sale una vez cada segundo (a un frecuencia de 1 Hz).
Si usted toca 2000 Hz y 2002 Hz, el tono entra y sale dos veces por segundo (2Hz) y as
sucesivamente.
Batido es cuando dos tonos muy cercanos en frecuencia se tocan juntan originando que el
tono que usted oye entra y salga. La frecuencia de ese desvanecimiento es la diferencia
entre las dos frecuencias. Si la diferencia es 1 Hz, el tono entra y sale a 1 Hz. Si la
diferencia es 2 Hz, el tono entra y sale a 2 Hz.
Las variaciones en la presin del aire que hace la bocina piezoelctrica se llaman ondas de
sonid Cuando el tono es ms grabe, las variaciones en la presin del aire causadas por las
dos frecuencias se agregan una a otra (a esto se le llama superposicin). Cuando el tono
esta en lo ms quieto , las variaciones en la presin del aire se cancelan unas a otras (a
esto se se llama interferencia).
Meta y ejecute el programa PairsOfTones.bs2.
De un vistaso a la Terminal Debug cuando estn tocando los tonos, y observe los
efectos diferentes que se obtienen al mezclar los tonos diferentes.
' Que es un Microcontrolador - PairsOfTones.bs2
' Demostacin de algunos de los efectos que ocurren cuando mezcla dos tonos.
'{$STAMP BS2}
'{$PBASIC 2.5}
PAUSE 1000
DEBUG "Frequency = 2000", CR
FREQOUT 9, 4000, 2000
DEBUG "Frequency = 3000", CR
FREQOUT 9, 4000, 3000
DEBUG "Frequency = 2000 + 3000", CR
FREQOUT 9, 4000, 2000, 3000
Pgina 256 Qu es un Microcontrolador?
DEBUG "Frequency = 2000 + 2001", CR
FREQOUT 9, 4000, 2000, 2001
DEBUG "Frequency = 2000 + 2002", CR
FREQOUT 9, 4000, 2000, 2002
DEBUG "Frequency = 2000 + 2003", CR
FREQOUT 9, 4000, 2000, 2003
DEBUG "Frequency = 2000 + 2005", CR
FREQOUT 9, 4000, 2000, 2005
DEBUG "Frequency = 2000 + 2010", CR
FREQOUT 9, 4000, 2000, 2010
DEBUG "Hecho", CR
END
Su Turno Optimizacin del Cdigo
El programa PairsOfTones.bs2 se escribi para demostrar fenmenos interesantes que
suceden cuando usted toca al mismo tiempo dos frecuencias diferentes usando el
argumento opcional Freq2 de la instruccin FREQOUT. Sin embargo, es muy ineficiente.
Modifique el programa PairsOfTones.bs2 para que recicle el argumento Freq2 en
el rango de 2001 a 2005 usando una variable tamao word y un bucle.
ACTIVIDAD #3: NOTAS MUSICALES Y CANCIONES SENCILLAS
La Figura 8-3 muestra las 25 teclas ms a la derecha del teclado de un piano. Tambien
muestra las frecuencias a las cuales vibra cada alambre dentro del piano cuando usted la
golpea.
Frequencia y Sonido Pgina 257
Figura 8-3 Teclas del Piano a la derecha y sus Frecuencias
Las teclas y sus notas correspondientes estn marcadas C6 hasta C8. Estas teclas estn
separadas en dos grupos de 12, 7 son teclas blancas y 5 son teclas negras. La secuencia de
notas se repite en si misma cada 12 teclas. Notas de la misma letra estn relacionadas con
la frecuencia que se dobla cada octava mayor. Por ejemplo, C7 es dos veces la frecuencia
de C6, y C8 es el doble de C7. De igual forma, si va una octava hacia abajo, la frecuencia
ser la mitad del valor, por ejemplo, A6 es la mitad de frecuencia de A7.
Si usted ha escucha a un cantante practicar sus notas cantando el Solfeo, Do Re Mi Fa
Sol La Si Do, el cantante est intentando igualar la notas que usted obtiene de golpear
las teclas blancas del teclado de un piado. Estas teclas blancas se llaman teclas naturales,
y el nombre octava se relaciona al doblar la frecuencia con cada ocho teclas naturales. La
tecla negra del piano se le llama Bemol o Sostenido. Por ejemplo la tecla negra entre C y
D se llama C Bemol (C#)o D Sostenido El nombre x o y depende de la pieza particular
que se est tocado, y las reglas de esto pertenecen a las lecciones de msica.
Programando Notas Musicales
La instruccin FREQOUT tambin es til para notas musicales. Programar el BASIC
Stamp para tocar msica usando un bocina piezo involucra seguir una variedad de reglas
Pgina 258 Qu es un Microcontrolador?
usadas al tocar msica usando otro instrumento musical. Estas reglas se aplican a los
mismos elementos que se usaron para hacer efectos de sonido: frecuencia, duracin y
pausa. El siguiente Programa Ejemplo toca algunas de las frecuencias de las notas
musicales en la bocina piezo cada una con una duracin de medio segundo.
Programa Ejemplo: DoReMiFaSolLaTiDo.bs2
Meta y ejecute el programa DoReMiFaSolLaTiDo.bs2
' Que es un Microcontrolador - DoReMiFaSolLaTiDo.bs2
' Manda notas de una octava medio segundo usando una bocina piezo.
'{$STAMP BS2}
'{$PBASIC 2.5}
PAUSE 1000
'Solfege Tone Note
DEBUG "Do...", CR: FREQOUT 9,500,1047 ' C6
DEBUG "Re...", CR: FREQOUT 9,500,1175 ' D6
DEBUG "Mi...", CR: FREQOUT 9,500,1319 ' E6
DEBUG "Fa...", CR: FREQOUT 9,500,1396 ' F6
DEBUG "Sol..", CR: FREQOUT 9,500,1568 ' G6
DEBUG "La...", CR: FREQOUT 9,500,1760 ' A6
DEBUG "Ti...", CR: FREQOUT 9,500,1976 ' B6
DEBUG "Do...", CR: FREQOUT 9,500,2093 ' C7
END
Su Turno Notas Bemol/Sostenido
Use las frecuencias mostradas en la Figura 8-3 para agregar las cinco notas
bemol/sostenido al programa DoReMiFaSolLaTiDo.bs2. Modifique su programa para
que toque la siguiente octava superior. Sugerencia: Haga sus operaciones y use la
operacin * 2 depus de cada argumento Freq1. Por ejemplo, FREQOUT 9, 500, 1175 *
2 esto multiplicara D6 por 2 y le dar a usted D7, que es la nota D en la sptima octava.
Frequencia y Sonido Pgina 259
Almacenando y Retirando Secuencias de Notas Musicales
Una forma de guardar notas musicales es almacenandola en el mdulo EEPROM del
BASIC Stamp. Aunque usted podra usar algunas instrucciones WRITE para hacer esto,
una mejor forma es usar la directiva DATA. Esta es la sintaxis para la directiva DATA:
{Symbol} DATA {Word} DataItem {, {Word} DataItem, }
Este es un ejemplo para usar la directiva DATA para almacenar los caracteres que
corresponden a las notas musicales.
Notes DATA "C","C","G","G","A","A","G"
Usted puede usar la instruccin READ para accesar estos caracteres. La letra C se
localiza en la direccin Notes + 0, la segunda letra C se localiza en Notes + 1.
Entonces, hay una letra G en Notas + 2, y as sucesivamente. Por ejemplo si usted
desea cargar la ltima letra G en una variable byte llamada noteLetter, use la
instruccin:
READ Notes + 6, noteLetter
Usted tambin puede almacenar listas de nmeros usando la directiva DATA. Los valores
de Frecuencia y duracin que usa el BASIC Stamp para las notas musicales necesitan
estar almacenadas en variables tamao word porque son generalmente mayores a 255.
As es como se hace con la directiva DATA.
Frequencies DATA Word 2093, Word 2093, Word 3136, Word 3136,
Word 3520, Word 3520, Word 3136
Como cada uno de estos valores ocupa dos bytes, para accesarlos con la instruccin
READ es diferente a accesar caracteres. El primer 2093 est en Frequencies + 0, pero el
segundo 2093 se localiza en Frequencies + 2. El primer 3136 se localiza en Frecuencies
+4, y el segundo 3136 se localiza en Frequencies + 6.
Los valores en la directiva DATA Frequencies corresponde con notas musicales in la
directiva Notes DATA directive.
Este es un bucle FOR...NEXT que coloca Notes DATA en una variable llamada
noteLetter, luego coloca Frequencies DATA en una variable llamada noteFreq.
FOR index = 0 to 6
Pgina 260 Qu es un Microcontrolador?
READ Notes + index, noteLetter
READ Frequencies + (index * 2), Word noteFreq
DEBUG noteLetter, " ", DEC noteFreq, CR
NEXT
Qu hace (index * 2)?
Cada valor almacenado en la directiva Frequencies DATA toma un word (dos bytes),
mientras cada carcter en la directiva Notes DATA solamente toma un byte. El valor de
index se incrementa por 1 cada vez en el bucle FOR...NEXT. Esto est bien al accesar los
caracteres de las notas usando la instruccn READ Notes + index, noteLetter. El problema
es que para cada uno de los bytes en Notes, la variable index necesita apuntar dos veces
hacia debajo de la lista Frequencies. La instruccin READ Frequencies + (index * 2), Word
noteFreq, se encarga de esto.
El siguiente Programa Ejemplo almacena notas y duraciones usando DATA, y usa la
instruccin FREQOUT para tocar cada frecuencia de nota en una duracin especfica. El
resultado es las primeras pocas notas de la cancin de nios Twinkle Twinkle Little
Star. {XW Twinkle Twinkle Little Star }
La cancin El Alfabeto la usan los nios para memorizar las letras ABCDsy usa las
mismas notas de Twinkle Twinkle Little Star.
Programa Ejemplo: TwinkleTwinkle.bs2
Este programa ejemplo demuestra como usar la directiva DATA para almacenar listas y
como usar la instruccin READ para accesar los valores de las listas.
Meta y ejecute el programa TwinkleTwinkle.bs2
Verifique que el sonido de las notas se parecea la cancin Twinkle Twinkle
Little Star.
Use la Terminal Debug para verificar que trabaja como se espera.
' Que es un Microcontrolador? - TwinkleTwinkle.bs2
'Toca las primeras siete notas de la cancin Twinkle Twinkle Little Star.
'{$STAMP BS2}
'{$PBASIC 2.5}
Notes DATA "C","C","G","G","A","A","G"
Frequencies DATA Word 2093, Word 2093, Word 3136, Word 3136,
Word 3520, Word 3520, Word 3136
Frequencia y Sonido Pgina 261
Durations DATA Word 500, Word 500, Word 500, Word 500,
Word 500, Word 500, Word 1000
index VAR Nib
noteLetter VAR Byte
noteFreq VAR Word
noteDuration VAR Word
PAUSE 1000
DEBUG "Note Duration Frequency", CR,
"---- -------- ---------", CR
FOR index = 0 TO 6
READ Notes + index, noteLetter
DEBUG " ", noteLetter
READ Durations + (index * 2), Word noteDuration
DEBUG " ", DEC4 noteDuration
READ Frequencies + (index * 2), Word noteFreq
DEBUG " ", DEC4 noteFreq, CR
FREQOUT 9, noteDuration, noteFreq
NEXT
END
Su Turno Agregando y Tocando Ms Notas
Este programa toc las primeras siete notas de Twinkle Twinkle Little Star. Las slabas
son: Twin-kle twin-kle lit-tle star La siguiente frase de la cancin dice How I wond-er
what yor are y sus notas son F, F, E, E, D, D, C. E igual que la primera frase, se sostine
dos veces que las otras notas. Para agregar esta frase a la cancin del programa
TwinkleTwinkle.bs2, usted necesita expander apropiadamente cada directiva DATA. No
olvide cambiar el bucle FOR...NEXT para que vaya de 0 a 13 en lugar de 0 a 6.
Modifique el programa TwinkleTwinkle.bs2 para que toque las dos primeras
frases de la cancin en lugar de solamente la primera frase.
ACTIVIDAD #4: MSICA CON MICROCONTROLADOR
Las duraciones de las notas en una hoja de msica no se graba en terminos de
milisegundos. En lugar de eso se decriben como notas: entero, mitad, cuarto, octavos,
diecisesavos, y treinta y dosavos. Como su nombre lo sugiere, media nota dura la mitad
de un entero, Un cuarto de nota dura la cuarta parte de tiempo de lo que dura una nota
entera. Cunto dura una nota entera? Depende de la pieza de msica que se est tocando.
Pgina 262 Qu es un Microcontrolador?
Una pieza se puede tocar en un tempo que hace que una nota entera dure cuatro segundo,
en otra pieza la nota entera dura dos segundos y otras pueden tener otra duracin.
Descansos son los tiempos entre notas que no se tocan tonos. La duracin de los
descansos tambien se miden en entero, mitad, cuarto, octavo, dieciseisavo y treinta y
doseavos.
Ms de Musica con microcontrolador. Despus de completar esta actividad, usted estar
listo para aprender como escribir cdigos musicales en PBASIC a partir de las hojas de
msica. Vea el tutorial Tocando msica de partitura con la bocina piezo, y su primer video
en www.parallax.com/go/WAM.
Un Sistema Mejorado para Almacenar y Retirar Msica
Usted puede escribir programas que almacenen dos veces ms msica en su BASIC
Stamp usando bytes en lugar de words en sus directivas DATA. Usted puede tambin
modificar su programa para hacer fcil de leer las notas musicales usando una de las
convenciones ms comunes para las notas y su duracin. Esta actuvidad empezar
presentado como almacenar informacin musical en una forma que relacione los
conceptos de notas, duracin y descansos o silencios. Tambien se presentar el Tempo, y
lo analizar en la siguiente actividad.
Esta es una de las directivas DATA que almacena notas musicales y duraciones para el
siguiente Programa Ejemplo. Cuando se toque se parecer a la cancin Martinillo. Solo
se almacenarn los caracteres de las notas en la directiva Notes DATA porque las
instrucciones LOOKUP y LOOKDOWN se usarn para acoplar letras con sus
correspondientes frecuencias.
Notes DATA "C","D","E","C","C","D","E","C","E","F",
"G","E","F","G","Q"
Durations DATA 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2, 4, 4, 2
WholeNote CON 2000
El primer nmero en la directiva Durations DATA le indica al programa cuanto debe
durar la primera nota de la directiva Notes Data. La segunda duracin es para la segunda
nota, y as sucesivamente. Las duraciones no estn en terminos de milisegundos. En lugar
de eso son nmeros mucho ms pequeos que pueden almacenarse en bytes, entonces no
Frequencia y Sonido Pgina 263
hay prefijo Word en la directiva DATA. Comparado con almacenar valores en terminos
de milisegundos, estos nmeros se relacionan ms con la partitura.
Esta es una lista de lo que significa cada duracin.
1 nota entera
2 media nota
4 cuarto de nota
8 octavo de nota
16 dieciseisavo de nota
32 treintaydosavo de nota
Despus que se lee cada valor de la directiva Durations DATA, se divide entre el valor de
WholeNote para obtener la Duration usada en la instruccin FREQOUT. La cantidad de
tiempo que dura cada nota depende del tempo de la cancin. Un tempo rpido significa
que cada nota dura menos tiempo, mientras que un tempo lento significa que cada nota
dura ms tiempo. Como todas las duraciones de las notas son fracciones de una nota
entera, usted puede usar la duracin de la nota entera para fijar el tempo.
Qu significa Q en Notes DATA? Q se usa para salir y DO UNTIL...LOOP
verifica Q cada vez en el bucle y lo repetir hasta que lo encuentra.
Cmo toco un silencio? Usted puede insertar un silencio entre notas insertando una p. La
seccin Su Turno tiene las primeras pocas notas de la 5. Sinfona de Beethoven que
tiene un silencio.
Cmo toco notas bemol/sostenido? El programa NotesAndDurations.bs2 tiene valores en
las tablas lookup para notas bemol/sostenido. Cuando usted usa con letra minscula, usted
toca la nota bemol. Por ejemplo, si usted desea tocar B-sostenido, use b en lugar de B.
Recuerde que esta tiene la misma frecuencia que A-bemol.
Programa Ejemplo: NotesAndDurations.bs2
Meta y ejecute el programa NotesAndDurations.bs2
Cmo se oye?
Pgina 264 Qu es un Microcontrolador?
' Que es un Microcontrolador - NotesAndDurations.bs2
' Toca las primeras notas de Martinillo.
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Program Running!"
Notes DATA "C","D","E","C","C","D","E","C","E","F",
"G","E","F","G","Q"
Durations DATA 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2, 4, 4, 2
WholeNote CON 2000
index VAR Byte
offset VAR Nib
noteLetter VAR Byte
noteFreq VAR Word
noteDuration VAR Word
DO UNTIL noteLetter = "Q"
READ Notes + index, noteLetter
LOOKDOWN noteLetter, [ "A", "b", "B", "C", "d",
"D", "e", "E", "F", "g",
"G", "a", "P", "Q" ], offset
LOOKUP offset, [ 1760, 1865, 1976, 2093, 2217,
2349, 2489, 2637, 2794, 2960,
3136, 3322, 0, 0 ], noteFreq
READ Durations + index, noteDuration
noteDuration = WholeNote / noteDuration
FREQOUT 9, noteDuration, noteFreq
index = index + 1
LOOP
END
Funcionamiento de NotesAndDurations.bs2
Las directivas Notes y Durations DATA se analizaron antes del programa. Estas
directivas combinadas con la constante WholeNote se usaron para almacenar todos los
datos musicales usados por el programa.
Frequencia y Sonido Pgina 265
Abajo se muestran las declaraciones para las cinco variables usadas en el programa.
Incluso aunque ya no usa el bucle FOR...NEXT para accesar los datos, ah todava tiene
que estar una variable (index) que mantiene el ajuste por el cual entra DATA que est
siendo leida por Notes y Durations. La variable offset se usa con las instrucciones
LOOKUP y LOOKDOWN para seleccionar un valor particular. La variable noteLetter
almacena un carcter que accesa la instruccin READ. Las instrucciones LOOKUP u
LOOPDOWN se usan para convertir este carcter en un valor de frecuencia. Este valor se
almacena en la variable noteFreq y se usa como argumento Freq1 de la instrucci
FREQOUT. La variable noteDuration se usa en la instruccin READ para recibir un
valor de Durations DATA. Y tambin se usa para calcular el argumento Duration para la
instruccin FREQOUT.
index VAR Byte
offset VAR Nib
noteLetter VAR Byte
noteFreq VAR Word
noteDuration VAR Word
El bucle principal se mantiene en ejecucin hasta que la letra Q se lee de NotesDATA.
DO UNTIL noteLetter = Q
Una instruccin READ obtiene un caracter de NotesDATA, y lo almacena en la variable
noteLetter. Entonces, la variable noteLetter se usa en la instruccin LOOKUP para fijar el
valor de la variable offset. Recuerde que offset almacena un 2 si se detecta b, un 2 si se
detecta B, un 3 si se detecta C y as sucesivamente.
Entonces este valor de offset se usa en una instruccin LOOKUP to para calcular cual
deber ser el valor de la variable noteFreq. Si offset es 1, noteFreq ser 1865, si offset es
2, noteFreq ser 1876, si offset es 3, noteFreq es 2093 y as sucesivamente.
READ Notes + index, noteLetter
LOOKDOWN noteLetter, [ "A", "b", "B", "C", "d",
"D", "e", "E", "F", "g",
"G", "a", "P", "Q" ], offset
LOOKUP offset, [ 1760, 1865, 1976, 2093, 2217,
2349, 2489, 2637, 2794, 2960,
3136, 3322, 0, 0 ], noteFreq
Pgina 266 Qu es un Microcontrolador?
La frecuencia de la nota se ha determinado, pero todava tiene que calcularse la duracin.
La instruccin READ usa el valor de index para colocar un valor de Duration DATA a
NoteDuration.
READ Duration + index, noteDuration
Entonces, noteDuration es iguala a la constante WholeNote dividida entre noteDuration.
Si noteDuration empieza en 4 de la instruccin READ, se convierte en 2000/4 = 500. Si
noteDuration es 8, se convierte en 2000/8 = 250.
noteDuration = WholeNote / noteDuration
Ahora que ya se han determinado los valores de noteDuration y noteFrequ, la instruccin
FREQOUT toca la nota.
FREQOUT 9, noteDuration, noteFreq
Cada vez que pasa por el bucle principal, el valor de index se incrementa por uno.
Cuando el bucle principal regresa al principio, la primer accin que el programa hace es
leer la siguiente nota , usando la variable index.
index = index + 1
LOOP
Su Turno Experimentando con Tempo y una Cancin Diferente
La longitud de tiempo que cada nota pierde se relaciona con el tempo. Usted puede
cambiar el tempo ajustando la constante WholeNote. Si usted la incrementa a 2250, el
tempo decrecer, y la cancin se reproducir ms despacio. Si usted disminuye la
constante a 1750, el tempo aumentar y la cancin se reproducir ms rpido.
Guarde el programa NotesAndDurations.bs2 con el nombre
NotesAndDurationsYourTurn.bs2
Modifique el tempo del programa NotesAndDurationsYourTurn.bs2 ajustando
el valor de WholeNote. Pruebe valores de 1500, 1750, 2000 y 2250.
Ejecute el programa despus de cada modificacin, y elija cual se escucha mejor.
Meter los datos musicales es mucho ms fcil cuando todo lo que tiene que hacer es
grabar notas y duraciones. Estas son las primeras ocho notas de la Quinta Sinfona de
Beethoven.
Notes DATA "G","G","G","e","P","F","F","F","D","Q"
Frequencia y Sonido Pgina 267
Durations DATA 8, 8, 8, 2, 8, 8, 8, 8, 2
WholeNote CON 2000
Guarde su programa modificado como Beethovens Fifth.bs2
Reemplace las directivas Notes y Durations DATA y la declaracin de la
constante WholeNote con el cdigo de arriba.
Ejecuteel programa. Le parece familiar?
Agregando Caractersticas Musicales
Al Programa Ejemplo le acaba de introducir notas, duraciones y silencios.
Tambin usa la duracin de una nota entera para determinar el tiempo. Estas son tres
caractersticas adicionales que podemos agregar a un programa que toca msica;
Tocar notas punteadas
Determinar la duracin de la nota entero a partir del tempo
Tocar notas de ms de una octava.
The termino punteadas se refiere a un punto usado en la partitura para indicar que una
nota deber tocarse 1 veces ms de su duracin normal. Por ejemplo, una nota de un
cuarto punteada deber durar la duracin de una nota de un cuarto ms un octavo de nota.
Una nota de un medio punteada dura una mitad mas un cuarto de duracin.
Usted puede agregar una tabla de datos que almacene notas punteadas s sin puntear. En
este ejemplo, un cero significa una nota sin puntear, y un uno una nota punteada.
Dots DATA 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 1, 0
Los programas que reproducen msica tpicamente expresan el tempo de una cancin en
batidos por minuto. Esto es lo mismo que decir notas de un cuarto por minuto.
BeatsPerMin CON 200
La Figura 8-4 es una repeticin de la Figura 8-3. Esta muestra las 6ta. Y 7ta. Octavas del
teclado de un piano. Estas son dos octavas que suenan con claridad cuando las toca la
bocinapiezo. Este es un ejemplo de la directiva DATA que usted usar en la seccin Su
Turno para tocar ms de una octava usando la directiva NotesDATA.
Octaves DATA 6, 7, 6, 6, 6, 6, 6, 6, 6, 7, 6,
6, 6, 6
Pgina 268 Qu es un Microcontrolador?
Figura 8-4 Teclas del Piano ms a la derecha y Sus Frecuencias.
Programa Ejemplo: MusicWithMoreFeatures.bs2
Este Programa Ejemlo toca las primeras notas de For Hes a Jolly Good Fellow.
Todas las notas pertenecen a la misma (7.) octava, pero algunas de las notas estn
punteadas. En la seccin Su Turno, usted intentar un ejemplo que usa notas se usa notas
de ms de una octava y notas punteadas.
Meta y corra el programa MusicWithMoreFeatures.bs2
Cuente las notas y vea si usted puede oir las notas punteadas (con 1 duracin)-
Tambin escuche las notas de la 7. Octava. Trate de cambiar una de estas notas
a la 6. Octava. El cambio en el sonido de la msica es hermosamente drstico.
' Que es un Microcontrolador - MusicWithMoreFeatures.bs2
' Toca el comienzo de He's a Jolly Good Fellow.
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Program Running!"
Frequencia y Sonido Pgina 269
Notes DATA "C","E","E","E","D","E","F","E","E","D","D",
"D","C","D","E","C","Q"
Octaves DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7
Durations DATA 4, 2, 4, 4, 4, 4, 2, 2, 4, 2, 4,
4, 4, 4, 2, 2
Dots DATA 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 1, 0
BeatsPerMin CON 320
index VAR Byte
offset VAR Nib
noteLetter VAR Byte
noteFreq VAR Word
noteDuration VAR Word
noteOctave VAR Nib
noteDot VAR Bit
wholeNote VAR Word
wholeNote = 60000 / BeatsPerMin * 4
DO UNTIL noteLetter = "Q"
READ Notes + index, noteLetter
LOOKDOWN noteLetter, [ "C", "d", "D", "e", "E",
"F", "g", "G", "a", "A",
"b", "B", "P", "Q" ], offset
LOOKUP offset, [ 4186, 4435, 4699, 4978, 5274,
5588, 5920, 6272, 6645, 7040,
7459, 7902, 0, 0 ], noteFreq
READ Octaves + index, noteOctave
noteOctave = 8 - noteOctave
noteFreq = noteFreq / (DCD noteOctave)
READ Durations + index, noteDuration
noteDuration = WholeNote / noteDuration
READ Dots + index, noteDot
IF noteDot = 1 THEN noteDuration = noteDuration * 3 / 2
FREQOUT 9, noteDuration, noteFreq
index = index + 1
LOOP
END
Pgina 270 Qu es un Microcontrolador?
Funcionamiento de MusicWithMoreFeatures.bs2
Abajo estn los datos musicales de la cancin completa. Para cada nota en la directiva
NotesData, le corresponde una entrada en Octaves, Durations, y la directiva Dost DATA.
Por ejemplo, la primera nota es una nota C de la 7. Octava, es un cuarto de nota y no est
punteada. Este es otro ejemplo, el segundo de la ltima nota (no incluye salida) es una
nota E, de la 7. Octava. Es mitad de nota y no esta punteada. Tambin hay una constante
BeatPerMin que fija el tempo de la cancin.
Notes DATA "C","E","E","E","D","E","F","E","E","D","D",
"D","C","D","E","C","Q"
Octaves DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7
Durations DATA 4, 2, 4, 4, 4, 4, 2, 2, 4, 2, 4,
4, 4, 4, 2, 2
Dots DATA 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 1, 0
BeatsPerMin CON 320
En el Programa Ejemplo anterior, WholeNote era una constante. Este tiempo, es una
variable que no retiene la duracin de una nota completa en milisegundos. Despus de
calcular este valor, WholeNote se usar para determinar todas las duraciones de las otras
notas, como se hizo en el programa anterior. Las variables index, offset, noteLetter, y
noteDuration tambin se usaron en la misma manera como se usaron en el programa
anterior.
La variable noteFreq se maneja un poquito diferente ya que ahora tiene que ajustarse
dependiendo de la octava en que se toca la nota. Se han agrefado las variables noteOctave
y noteDot para manejar la octava y las caractersticas punteadas.
wholeNote VAR Word
index VAR Byte
offset VAR Nib
noteLetter VAR Byte
noteFreq VAR Word
noteDuration VAR Word
noteOctave VAR Nib
noteDot VAR Bit
Frequencia y Sonido Pgina 271
La variable wholeNote se calcula usando BeatsPerMin. El tempo de la cancin se define
en batidos por minuto, y el programa tiene que dividir BeatsPerMin entre 60000 ms, y
luego multiplicarse por 4. El resultado da el valor correcto de una nota completa.
WholeNote = 60000/ BeatsPerMin * 4
Las Matemticas se ejecutan de izquierda a derecha. En el clculo de wholeNote =
60000/ beatsPerMin * 4, el BASIC Stamp primero calcula 60000/beatsPerMin. Luego el
resultado lo multiplica por 4. Los parentesis se pueden usar para agrupar operaciones. Si
usted desea dividir entre 4 beatsPerMin primero usted puede hacer esto: wholeNote =
60000/(beatsPerMin*4).
Todo esto es lo mismo como el programa anterior:
DO UNTIL noteLetter = "Q"
READ Notes + index, noteLetter
LOOKDOWN noteLetter, [ "C", "d", "D", "e", "E",
"F", "g", "G", "a", "A",
"b", "B", "P", "Q" ], offset
Ahora que las octavas estn el el mix, ha cambiado la parte de el cdigo que calcul la
frecuencia de la nota. La Tabla de Valores de la instruccin LOOKUP contiene
frecuencias de las notas desde la 8. Octava. Estos valores pueden dividirse entre 1 si
usted desea tocar notas de la 8. Octava,
Por 2 si usted desea tocar notas en la 7. Octava, por 4 si usted desea tocar notas en la 6.
Octava, y por 8 si usted desea tocar notas en la 5. Octava. La divisi se efectua en
seguida.
Todo lo que hace la instruccin LOOKUP es colocar una nota de la 8. Octava en la
variable noteFreq.
LOOKUP offset, [ 4186, 4435, 4699, 4978, 5274,
5588, 5920, 6272, 6645, 7040,
7459, 7902, 0, 0 ], noteFreq
Esta es la forma en que la variable noteFreq se ajusta para la octava correcta. Primero, la
instruccin READ dimensiona el valor almacenado de la octava en Octaves DATA.
Este pudiera ser un valor entre 5 y 8.
Pgina 272 Qu es un Microcontrolador?
READ Octaves + index, noteOctave
Dependiendo de la octava, deseamos dividir noteFreq por 1, 2, 4, o 8. Esto significa que
el objetivo es es realmente dividir por 2
0
= 1, 2
1
= 2, 2
2
= 4, or 2
3
= 8. La siguiente frase
de abajo toma el valor de noteOctave, el cual puede ser un valor entre 5 y 8 y resta ese
valor de 8. Si noteOctave fue 8, ahora es 0. Si noteOctave fue 7 ahora es 1. Si noteOctave
fue 6, ahora es 2, y si noteOctave fue 5, ahora es 3.
noteOctave = 8 noteOctave
Ahora, noteOctava es un valor que puede usarse como un exponente de 2, pero como
elevamos a la potencia 2 en PBASIC? Una solucin es usando el operador DCD. DCD 0
es 1, DCD1 es 2, DCD 2 es 4 y DCD 3 es 8. Al dividir noteFreq por DCDnoteOctava
significa que usted est dividiendo por 1, 2, 4, y 8, el cual divide noteFreq bajandolo al
valor correcto. El resultado final es que noteFreq se fija en la octava correcta. Usted usar
la Terminal Debug en la seccin Su Turno para poner ms atencin en su
funcionamiento.
NoteFreq = noteFreq / (DCD noteOctave)
Como puedo ser experto en usar el operador DCD? Manteniendose aprendiendo y
practicando. Cada vez que usted vea una nueva: instruccin, operador, o palabra clave que
se usa en un ejemplo consulte el Manual BASIC Stamp. Lalo y trate de usarlo en un
programa de su propio diseo.
Adquiera el hbito de de leer peridicamente el Manual BASIC Stamp y trate de reducir los
Programas Ejemplo. Esta es la mejor forma de familiarizarse con las diferentes
instrucciones y operadores y su funcionamiento. Haciendo estas actividades, usted
desarrollara el hbito de siempre agregarlos a la lista de herramientas de programacin que
usted puede usar para resolver problemas.
Las primeras dos lneas del cdigo para determinar la duracin de la nota son casi iguales
a las del cdigo del Programa Ejemplo anterior. Ahora, sin embargo, una nota pudiera
estar punteada y esto significa que la duracin tendra que multiplicarse por 1.5. Se usa
un instruccin READ para accesar valores en la EEPROM con la directiv Dots DATE. La
frase IF...THEN se usa para multiplicar por 3 y dividir por 2 siempre y cuando el valor de
la variable noteDot es 1.
READ Durations + index, noteDuration
noteDuration = WholeNote / noteDuration
READ Dots + index, noteDot
IF noteDot = 1 THEN noteDuration = noteDuration * 3 / 2
Frequencia y Sonido Pgina 273
Matemtica de Numeros Enteros El BASIC Stamp no procesa automticamente un
nmero como 1.5. Cuando hace matemticas solamente trabaja con nmeros enteros..., -5,
-4, -3, -2, -1, 0, 1, 2, 3,... La mejor solucin para multiplicar por 1.5 es multiplicar por 3/2.
Primero multiplica por 3 y luego divide por 2.
Hay algunas formas para programar el BASIC Stamp para que maneja valores fraccionales.
Usted puede programar el BASIC Stamp que use enteros para calcular la parte fraccinal
de un nmero. Esto se presenta en la Guia del Estudiante de Circuitos Bsicos Analgicos
y Digitales. Hay tambin dos operadores que hacen que los valores fraccionales sean
faciles de trabajar, y estos son Multiplicacin Alta y Multiplicacin Middle. Estos se explican
con detalla en la Gua del Estudiante de Sensores Aplicados y en el Manual de BASIC
Stamp.
Lo restante de este programa ejemlo funciona de la misma forma que lo hizo en el
Programa Ejemplo anterior:
FREQOUT 9, noteDuration, noteFreq
index = index + 1
LOOP
END
Su Turno Tocando una Cancin con Ms de Una Octava
El programa MusicWithMoreFeatures.bs2 us silencios, pero se mantuvo en una octava.
La cancin Take Me Out of the Ball Game abajo mostrada toca la mayora de las notas
en la 6. Octava. Hay dos notas en la 7. Octava y esto hace una gran diferencia en sus
sonidos.
Guarde una copia del programa MusicWithMoreFeaturesYourTurn.bs2
Modifique el programa reemplazando las cuatro directivas data y una
declaracin de constante con lo siguiente:
Notes DATA "C","C","A","G","E","G","D","P","C","C","A",
"G","E","G","Q"
Octaves DATA 6, 7, 6, 6, 6, 6, 6, 6, 6, 7, 6,
6, 6, 6
Durations DATA 2, 4, 4, 4, 4, 2, 2, 4, 2, 4, 4,
4, 4, 2
Dots DATA 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 1
BeatsPerMin CON 240
Ejecute el programa y verifique que suene correctamente.
Pgina 274 Qu es un Microcontrolador?
Las dos notas de la 7. Octava son esenciales para hacer que la cancin suene
correctamente. Es interesante escuchar que sucede si estos 7 valores se cambian a 6.
Trate de cambiar los dos valores 7 en la directiva Octaves DATA, para que sean
6.
Recuerde que este cambio har que Take Me out to the Ball suene feo.
Ejecute el programa y escuche el efecto de las octavas incorrectas de la cancin.
Cambie la directiva Octaves DATA a su estado original.
Ejecute el programa otra vez y escuche para ver si el sonido suena otra vez
correctamente.
ACTIVIDAD #5: TONOS TELEFNICOS CON RTTTL
Los viejos telfonos celulares usaban para tocar tonos telefonicos un bocina piezo. Los
tonos se bajaban de la web a una computadora y se cargaban de la computadora al
telfono celular. En ese tiempo, en ese tiempo una de las formas ms usadas de
composicin, grabacin y traslado de tono eran cadenas de texto con caracteres que
describen cada nota en la cancin. Este es un ejemplo de cmo eran las primeras notas de
la 5. Sinfona de Beethoven.
Beethoven5:d=8,o=7,b=125:g,g,g,2d#,p,f,f,f,2d
Este formato para almacnar datos nusicales se llama RTTTL {} que es Ringing Tone
Text Transfer Language {} Lenguaje de Transferencia de Texto de Tonos Telfonicos.
La gran caracterstica de los archivos RTTTL fue que eran ampliamente compartidos a
traves de WWW. Alguno sitios tenan archivos RTTL disponibles para descargarlos
libremente. Estos eran tambin programas de software libre que se podan usar para
componer y emular archivos y despus descargarlos en su telfono celular.
Las especificaciones de RTTTL todava se publican en lnea. El anexo C resume como se
almacenan notas, duraciones, pausas, tempo y notas punteadas con archivos RTTTL.
Esta actividad presenta algunas tcnicas de programacin con PBASIC que puede usar
para reconocer diferentes elementos de texto. La habilidad para reconocer diferentes
caracteres o grupos de caracteres tomar acciones basadas en lo que contienen esos
caracteres es extraordinariamente til. De hecho, es la clave para convertir formato
RTTTL (como la Quinta de Beethoven arriba mostrada) en msica. Al final de esta
actividad, hay un Programa de Aplicacin que usted puede usar para tocar tonos con
formato RTTTL.
Frequencia y Sonido Pgina 275
Seleccionando que Bloque de Cdigo Ejecutarse en Funcin de Caso por Caso
La frase SELECT...CASE es probablemente la mejor herramienta de programacin para
reconocer caracteres o valores. Recuerde que esta es una de las herramientas usadas para
convertir tonos de telfonos en notas musicales.
En general, SELECT...CASE se usa para:
Seleccionar una variable o expresin.
Evaluar la variable o expresin en funcin de caso por caso.
Ejecutar diferentes bloques de cdigo dependiendo en que caso es adecuado el
valor de esa variable.
Here is the syntax for SELECT...CASE:
SELECT expression
CASE condition(s)
statement(s)
{ CASE ELSE
statement(s) }
ENDSELECT
Usted puede intentar los dos siguiente Programas Ejemplo para ver como funciona
SELECT...CASE. El pograma SelectCaseWithValues.bs2 toma valores numricos que
usted mete en la Terminal Debug y le indica el tamao mnimo de la variable que usted
necesitar para mantener ese valor. El programa SelectCaseWithCharacters.bs2 le dice a
usted en la Terminal Debug si usted meti una letra mayscula, minscula, un dgito o un
signo de puntuacin.
Recuerde usar la ventana de Transmisin en la Terminal Debug para mandar los
caracteres que usted escribe en el BASIC Stamp. La Figura 8-5 muestra la ventanas de
Transmisin y Recepcin.
Windowpanes
Transmit
Receive
Figura 8-5
Mandando
Mensajes al BASIC
Stamp
Haga click en la
ventana Transmitir
(arriba) para meter
el valor o carcter
que usted desea
transmitir a el
BASIC Stamp..
Pgina 276 Qu es un Microcontrolador?
Programa Ejemplo: SelectCaseWithValues.bs2
Meta y ejecute el programa SelectCaseWithValues.bs2.
En la Terminal Debu, asegurese que en la ventanita no esta marcada Echo Off.
Haga click en la ventana Transmitir de la Terminal.
Meta un valor entre 0 y 65535, y presione la tecla Enter.
Qu sucede si usted mete un nmero mayor que 65535? Si usted mete el nmere 65536,
el BASIC Stamp almacenar el nmero 0. Si usted mete el nmero 65537, el BASIC
Stamp almacenar el nmero 1, y as sucesivamente. Cuando un nmero es demasiado
grande para la variable en la que cabe, hay un desbordamiento (overflow).
Use la Tabla 8-1 para verificar que el Programa Ejemplo hace las decisiones correctas
respecto al tamao de los nmeros que introdujo en la Terminal Debug.
Table 8-1: Variable Types and Values They Can Store
Tipo de Variables Rango de Valores
Bit 0 a 1
Nib 0 a 15
Byte 0 a 255
Word 0 a 65535
' Que es un Microcontrolador? - SelectCaseWithValues.bs2
' Meta un valor y vea el tamao mnimo requerido de la variable para
retenerlo.
'{$STAMP BS2}
'{$PBASIC 2.5}
value VAR Word
PAUSE 1000
DEBUG "Enter a value from", CR,
"0 to 65535: "
DO
DEBUGIN DEC value
SELECT value
CASE 0, 1
DEBUG "Bit", CR
PAUSE 100
Frequencia y Sonido Pgina 277
CASE 2 TO 15
DEBUG "Nib (Nibble)", CR
PAUSE 200
CASE 16 TO 255
DEBUG "Byte", CR
PAUSE 300
CASE 256 TO 65535
DEBUG "Word", CR
PAUSE 400
ENDSELECT
DEBUG CR, "Meta otro valor: "
LOOP
Funcionamiento del programa SelectCaseWithValues.bs2
Se declar una variable tamao word para mantener los valores metidos en la Terminal
Debug.
value VAR Word
La instruccin DEBUGIN toma el nmero que usted metin y lo coloca en la variable
value.
DEBUGIN DEC value
La frase SELECT escoge la variable value como uno de los casos a evaluar.
SELECT value
El primer caso es si la variable es igual a 1 o a 0. Si el valor es igual a uno esos nmeros,
se ejecutan las instrucciones DEBUG y PAUSE que le siguen.
CASE 0, 1
DEBUG BIT, CR
PAUSE 100
El segundo caso es cuando su valor es igual a cualquier nmero que va de 2 a15. Si es
igual a uno de esos nmeros, se ejecutan las instrucciones DEBUG y PAUSE debajo de
ellas.
CASE 2 to 15
DEBUG NIB (Nibble), CR
PAUSE 200
Pgina 278 Qu es un Microcontrolador?
Cuando se han hecho todos los casos, la palabra clave ENDSELECT se usa para
completar la instruccin SELECT...CASE.
ENDSELECT
Programa Ejemplo: SelectCaseWithCharacters.bs2
Este Programa Ejemplo evalua cada caracterque usted mete en la ventana Transmisin de
la Terminal Debug. El programa puede reconocer caracteres maysculas y minsculas,
digitos y algunos signos de puntuacin. Si usted mete un carcter que el programa no
reconoce, le dir que lo intente otra ez (meta un carcter diferente).
Meta y ejecute el programa SelectCaseWithCharacters.bs2.
Asegurese que no est marcada la ventanita Echo Off.
Haga click en la ventana Transmit de la Terminal Degug para colocar ah el
cursor.
Meta los caracteres en la ventana Transmit y observe los resultados.
' Que es un Microcontrolador? - SelectCaseWithCharacters.bs2
' Programa que puede identificar algunos caracteres: mayusc/minusc, digito,
puntuacion.
'{$STAMP BS2}
'{$PBASIC 2.5}
character VAR Byte
PAUSE 1000
DEBUG "Meta un caracter: ", CR
DO
DEBUGIN character
SELECT character
CASE "A" TO "Z"
DEBUG CR, "Mayusculas", CR
CASE "a" TO "z"
DEBUG CR, "Minusculas", CR
CASE "0" TO "9"
DEBUG CR, "Digito", CR
CASE "!", "?", ".", ","
DEBUG CR, "Puntuacion", CR
CASE ELSE
Frequencia y Sonido Pgina 279
DEBUG CR, "Caracter no conocido.", CR,
"Pruebe otro diferente."
ENDSELECT
DEBUG CR, "Meta otro caracter", CR
LOOP
Funcionamiento de SelectCaseWithCharacters.bs2.
Cuando lo comparamos con el programa SelectCaseWithValues.bs2, este Programa
Ejemplo tiene unas pocas diferencias. Primero, el nombre de la variable value se cambi
por character, y su tamao cambi de word a byte. Esto se hace porque todos los
caracteres en PBASIC son tamao byte. La instruccin SELECT escoge la variabe
character para la evaluacin de caso por caso.
SELECT character
Las comillas se usan para decirle al Editor de BASIC Stamp que usted se est refiriendo a
caracteres. Podemos tratar los siguientes grupos de caracteres y signos de puntuacin de
la misma forma como un rango de nmeros, ya que el BASIC Stamp los reconoce por sus
equivalentes numricos en ASCII. {}. Vea la ayuda de BASIC Stamp Editor.
SELECT character
CASE "A" TO "Z"
DEBUG CR, "Upper case", CR
CASE "a" TO "z"
DEBUG CR, "Lower case", CR
CASE "0" TO "9"
DEBUG CR, "Digit", CR
CASE "!", "?", ".", ","
DEBUG CR, "Punctuation", CR
Tambin hay una instruccin diferente CASE que no se us en el ejemplo anterior:
CASE ELSE
DEBUG CR, "Character not known.", CR,
"Try a different one."
Esta instruccin CASE le indica al bloque de cdigo SELECT que hacer si ninguno de
los otros casos es verdadero. Usted puede usar este caso para trabajar metiendo un
carcter por ejemplo % y $.
Pgina 280 Qu es un Microcontrolador?
Su Turno Seleccionando Caracteres Especiales.
Modifique la frase SELECT...CASE en el programa
SelectCaseWithCharacters.bs2 de tal forma que muestre Carcter Especial
cuando usted meta uno de estos caracteres: @, #, %, %, &, (), _ , o +.
Programa de Aplicacin para Tocar Tonos de Telfono RTTTL
Abajo est un archivo que contiene la informaci musical usada en el siguiente Programa
Ejemplo. Hay cinco directivas adiconales RTTTL_File_DATA que usted puede probar en
la seccin Su Turno. Este programa toca una cancin llamada Reveille {} que es el
primer toque de trompeta de la maana tocada en campos militares. Quiz usted la ha
escuchado en pelculas y shows de tv.
RTTTL_File DATA "Reveille:d=4,o=7,b=140:8g6,8c,16e,16c,8g6,8e,",
"8c,16e,16c,8g6,8e,8c,16e,16c,8a6,8c,e,8c,8g6,",
"8c,16e,16c,8g6,8e,8c,16e,16c,8g6,8e,8c,16e,",
"16c,8g6,8e,c,p,8e,8e,8e,8e,g,8e,8c,8e,8c,8e,8c,",
"e,8c,8e,8e,8e,8e,8e,g,8e,8c,8e,8c,8g6,8g6,c."
Programa Ejemplo: MicroMusicWithRtttl.bs2
Este Programa de Aplicacin es muy largo, y es una buena idea descargar la ltima
version de la pgina www.parallax.com/go/WAM.
Al descargar el programa y abrirlo con el Editor BASIC Stamp usted ahorrar una
cantidad significativa de tiempo. La alternativa, es naturalmente meterlo a mano y
depurar cuatro pgina de cdigo.
Con el Editor de BASIC Stamp abra el archivo del programa que descarg
MicroMusicWithRtttl.bs2 o a mano meta cuidadosamente el ejemplo que est
abajo.
Ejecute el programa, y verifique que reconoce la pieza Reveille bugle call.
Vaya a la seccin Su Turno e intente algunas piezas ms (con directivas
RTTTL_File DATA)
' Que es un Microcontrolador? - MicroMusicWithRtttl.bs2
' Play Nokia RTTTL format ringtones using DATA.
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Programa ejecutandose!"
' -----[ Definiciones de E/S ]----------------------------------------------
Frequencia y Sonido Pgina 281
SpeakerPin PIN 9 ' Bocinapiezo conecteda a P9.
' -----[ Variables ]-------------------------------------------------------
counter VAR Word ' Contador de Propsito General.
char VAR Byte ' Variable almacena caracteres.
index VAR Word ' Index para apuntar a los datos.
noteLetter VAR Byte ' Amacena caracter de la note .
noteFreq VAR Word ' Almacena frecuencia de la nota.
noteOctave VAR Word ' Almacena octava de la nota.
duration VAR Word ' Almacena duracion de la nota.
tempo VAR Word ' Almacena tempo.
default_d VAR Byte ' Almacena duracin default .
default_o VAR Byte ' Almacena octava default.
default_b VAR Word ' Almacena batidos/min default.
' -----[ EEPROM Data ]-----------------------------------------------------
RTTTL_File DATA "Reveille:d=4,o=7,b=140:8g6,8c,16e,16c,8g6,8e,",
"8c,16e,16c,8g6,8e,8c,16e,16c,8a6,8c,e,8c,8g6,",
"8c,16e,16c,8g6,8e,8c,16e,16c,8g6,8e,8c,16e,",
"16c,8g6,8e,c,p,8e,8e,8e,8e,g,8e,8c,8e,8c,8e,8c,",
"e,8c,8e,8e,8e,8e,8e,g,8e,8c,8e,8c,8g6,8g6,c."
Done DATA ",q,"
Notes DATA "p", "a", "#", "b",
"c", "#", "d", "#",
"e", "f", "#", "g",
"#"
Octave8 DATA Word 0, Word 3520, Word 3729, Word 3951,
Word 4186, Word 4435, Word 4699, Word 4978,
Word 5274, Word 5588, Word 5920, Word 6272,
Word 6645
' -----[ Initialization ]--------------------------------------------------
counter = 0 ' Inicializa counter.
GOSUB FindEquals ' Primero encuentra '=' en archivo.
GOSUB ProcessDuration ' Obtiene duration default duration.
GOSUB FindEquals ' Encuentra siguiente '='.
GOSUB ProcessOctave 'Obtien Octava default.
GOSUB FindEquals ' Encuentra el ltimo '='.
GOSUB GetTempo ' Obtiene tempo default.
' -----[ Cdigo del Programa]-------------------------------------------
DO UNTIL char = "q" 'Est en bucle en 'q' en DATA.
Pgina 282 Qu es un Microcontrolador?
GOSUB ProcessDuration ' Obtiene duracin de la nota.
GOSUB ProcessNote ' Obtiene el valor del ndice de la nota.
GOSUB CheckForDot ' Si es punteada, duracion es 3/2.
GOSUB ProcessOctave ' Obtiene la octava.
GOSUB PlayNote ' Obtiene la frecuencia de la siguiente nota,.
LOOP ' Fin del bucle principal.
END ' Fin del programa.
' -----[ Subroutina Encuentra Caracteres iguales ]-----------------------
FindEquals: ' Va a caracteres en
' Busca Archivo RTTTL
DO ' '='. Incremeta contador
READ RTTTL_File + counter, char ' hasta que encuentra'=' , y luego
counter = counter + 1 ' regresa.
LOOP UNTIL char = "="
RETURN
' -----[ Subroutine - Read Tempo from RTTTL Header ]----------------------
' Cada caracter del teclado tiene un slo nmero llamado valor ASCII .
' Los caracteres 0, 1, 2,...9 tienen valores ASCII de 48, 49, 50,...57.
' Usted puede convertir los caracteres que representam un dgito a
' a si valr restamdpes 48 a la variable que almacena el dgito.
' Puede examinar esto comparando DEBUG DEC 49 y DEBUG 49.
GetTempo: ' Describe archivo RTTTL de Tempo.
' Convierte caracters a
default_b = 0 ' digitos restandoles 48
DO ' de cada caracterASCII
READ RTTTL_File + counter, char ' valor. Multiplica Iterativamente
IF char = ":" THEN ' cada dgito por 10 y si hay
default_b = default_b / 10 ' otro dgito, entonces lo suma
counter = counter + 1 ' el dgito ms reciente con
EXIT ' uno de la columna.
ENDIF ' Por ejemplo, la cadena
default_b = default_b + char - 48 ' "120" es (1 X 10 X 10)
counter = counter + 1 ' + (2 X 10) + 0. The '1'
default_b = default_b * 10 ' primero se convierte, y luego
LOOP UNTIL char = ":" ' se multiplica por 10. El '2'
' es convertido/agregado.
RETURN ' 0 es convertido/agregado, hecho.
' -----[ Subroutine Busca Octava ]------------------------------------
ProcessOctave: ' Puede o no puede haber Octava
' incluida en una nota dada
READ RTTTL_File + counter, char ' porque cualquier nota
SELECT char ' que se toca en la octava default
CASE "5" TO "8" ' no se specifica
noteOctave = char - "0" ' la octava. Si se usa un caracter
Frequencia y Sonido Pgina 283
counter = counter + 1 ' '5' '8' entonces se usa
CASE ELSE ' sta, usa default_o.
noteOctave = default_o ' Los Characteres se convierten
ENDSELECT ' a dgitos restando
IF default_o = 0 THEN ' '0', que es lo mismo
default_o = noteOctave ' que restar 48.La primera
ENDIF ' vez se llama esta subrutina
' default_o e 0.
RETURN ' Si 0, entonces fija default_o.
' -----[ Subroutina - Encuentra Index de Notea ]-----------------------------
ProcessNote: ' Fija el valor de index value de lookup
' de la frecuencia de nota basada em
READ RTTTL_File + counter, char ' el caracter de la nota. Si 'p',
SELECT char ' el ndice es 0. Si 'a' a 'g',
CASE "p" ' lee los valores de los caracteres en
index = 0 ' la Tabla DATA y su equivalente.
counter = counter + 1 ' Graba el valor del ndce cuando
CASE "a" TO "g" ' encuentra su equivalente. Si el siguiente
FOR index = 1 TO 12 ' caracter es bemo (#), suma
READ Notes + index, noteLetter ' 1 al valor del ndice para
IF noteLetter = char THEN EXIT ' incrementar el ndice (y
NEXT ' frecuencia) by 1 .
counter = counter + 1 ' Igual que en otras subroutinas,
READ RTTTL_File + counter, char ' incrementa el contador para
SELECT char ' cada caracter que se procesa.
CASE "#"
index = index + 1
counter = counter + 1
ENDSELECT
ENDSELECT
RETURN
' -----[ Subroutina - Determina Duracin de la Nota ]--------------------
ProcessDuration: ' Checa para ver si hay caracters de la
' forma 1, 2, 4, 8, 16 o 32.
READ RTTTL_File + counter, char ' Si hay, entonce los convierte de
' Caracteres ASCII a un valor
SELECT char ' restandoles 48. En el
CASE "1", "2", "3", "4", "8" ' caso de 16 o 32, los multiplica
duration = char - 48 ' por 10 y suma al siguiente
counter = counter + 1 ' digito o a la columna de unos.
READ RTTTL_File + counter, char
SELECT char
CASE "6", "2"
duration = duration * 10 + char - 48
counter = counter + 1
ENDSELECT
CASE ELSE ' Si no usa duracin,
duration = default_d ' use default.
Pgina 284 Qu es un Microcontrolador?
ENDSELECT
IF default_d <> 0 THEN ' Si no define default_d
duration = 60000/default_b/duration*3 ' (si default_d = 0), entonces
ELSE ' fije default_d = a la duracin
default_d = duration 'con d=#.
ENDIF
RETURN
' -----[ Subroutine Cheque Para '.' Indicando Duraci+on 1.5 ]-----------
CheckForDot: ' Cheque para indicacin punteada
' multiplique duracin por 3/2.
READ RTTTL_File + counter, char ' Si hay punteada, multiplique por
SELECT char ' 3/2 e incremente contador,
CASE "." ' sino, no haga nada y
duration = duration * 3 / 2 ' regrese.
counter = counter + 1
ENDSELECT
RETURN
' -----[ Subrutina - Encuentra Comma and Play Note/Duration ]-----------------
PlayNote: ' Encuentra la ltima comma en la
' note actual. Luego,
READ RTTTL_File + counter, char ' manda la frecuencia de la nota
SELECT char ' de los datos, y la toca, o
CASE "," ' hay silencio si frecuencia = 0.
counter = counter + 1
READ Octave8 + (index * 2), Word noteFreq
noteOctave = 8 - noteOctave
noteFreq = noteFreq / (DCD noteOctave)
IF noteFreq = 0 THEN
PAUSE duration
ELSE
FREQOUT SpeakerPin, duration, noteFreq
ENDIF
ENDSELECT
RETURN
Funcionamiento del programa de MusicWithRtttl.bs2
Este Programa Ejemplo es de uso divertido, y muestra la clase de cdigo que usted ser
capz de escribir con alguna prctica. Sin embargo, se incluy en este texto ms por
diversin que por los conceptos de codificacin que emplea. Si usted examina el cdigo
brevemente, usted podra observar que ya ha usado todas las instrucciones y operadores
del programa excepto uno!
Frequencia y Sonido Pgina 285
Esta es una lista de los elementos en este programa que por ahora le deberan ser
conocidos:
Comentarios que le ayudan en la explicacin de su cdigo
Declaraciones de Constantes y Variables.
Declaraciones DATA
Instrucciones READ
Bloques IF...ELSE...ENDIF
Bucles DO...LOOP con o sin WHILE y UNTIL
Subrutinas con GOSUB, etiquetas y RETURN
Bucles FOR...NEXT
Instrucciones LOOKUP y LOOKDOWN
Instrucciones FREQOUT y PAUSE
Instrucciones SELECT...CASE
EXIT es nuevo, pero este simplemente permite que el programa pueda salir de
un bucle antes que termine, y frecuentementese usa con las frases IF...THEN.
Su Turno Canciones Diferentes
Trate de reemplazar la directiva RTTTL_File DATA en el programa
MicroMusicWithRTTTL.bs2 con cada uno del los cinco archivos musicales de
abajo.
Solamente una directiva RTTTL_File DATA a la vez! Asegurese de reemplazar, no
aada, su nueva directiva RTTTL_File DATA.
Ejecute el programa MicroMusicWithRTTTL.bs2 para verificar cada archivo
RTTTL.
RTTTL_File DATA "TwinkleTwinkle:d=4,o=7,b=120:c,c,g,g,a,a,2g,f,",
"f,e,e,d,d,2c,g,g,f,f,e,e,2d,g,g,f,f,e,e,2d,c,c,",
"g,g,a,a,2g,f,f,e,e,d,d,1c"
RTTTL_File DATA "FrereJacques:d=4,o=7,b=125:c,d,e,c,c,d,e,c,e,f",
",2g,e,f,2g,8g,8a,8g,8f,e,c,8g,8a,8g,8f,e,c,c,g6",
",2c,c,g6,2c"
RTTTL_File DATA "Beethoven5:d=8,o=7,b=125:g,g,g,2d#,p,f,f,f,2d"
RTTTL_File DATA "ForHe'sAJollyGoodFellow:d=4,o=7,b=320:c,2e,e,e,",
"d,e,2f.,2e,e,2d,d,d,c,d,2e.,2c,d,2e,e,e,d,e,2f,",
"g,2a,a,g,g,g,2f,d,2c"
Pgina 286 Qu es un Microcontrolador?
RTTTL_File DATA "TakeMeOutToTheBallgame:d=4,o=7,b=225:2c6,c,a6,",
"g6,e6,2g.6,2d6,p,2c6,c,a6,g6,e6,2g.6,g6,p,p,a6",
",g#6,a6,e6,f6,g6,a6,p,f6,2d6,p,2a6,a6,a6,b6,c,",
"d,b6,a6,g6"
Descargando Archivos RTTTL. Hay archivos disponibles RTTTL para bajarse de varios
sitios de WWW. Estos archivos son contribuciones de entusiastas de ring tones, muchos de
ellos no son expertos musicales. Algunos tonos de telfono son muy buenos, otros no se
pueden reconocer. Si usted desea descargar y tocar algunos archivos RTTTL, asegurese
de quitar los espacios entre caracteres, luego inserte el archivo de texto entre las comillas.
RESUMEN
Este captulo introdujo tcnicas para hacer sonidos y tonos musicales con el BASIC
Stamp y una bocina piezo elctrica. La instruccin FREQOUT se puede usar para mandar
a una bocina piezo elctrica seales high/low para que hagan efectos de sonido y/o notas
musicales. La instruccin FREQOUT tiene argumentos que controlan los pines de E/S a
donde se manda la seal, la Duration del Tono y la Frecuencia del Tono (Freq1). Hay un
argumento opcional Freq2 que puede utilizarse para tocar dos tonos al mismo tiempo.
Los efectos de sonido pueden hacerse ajustando la frecuencia y duracin de los tonos y
las pausas entre ellos. El valor de la frecuencia tambin puede barrerse en un rango de
valores para crear una variedad de efectos.
Hacer notas musicales tambin depende de la frecuencia, duracin y pausas. El valor del
argumento Duration de la instruccin FREQOUT lo determina tempo de la cancin y
la duracin de la nota (nota entera, media nota, un cuarto de nota, etc). El valor Freq1 de
la nota lo determina la letra de la nota y la octava. Los descansos o silencios entre notas
se usan para fijar la duracin de la instruccin PAUSE.
Tocar canciones simples usando el BASIC Stamp puede hacerse con una secuencia de
instrucciones FREQOUT, pero hay formas mejores para almacenar y retirar los datos
musicales. Las directivas DATA con su etiquetas opcionales SYMBOL se usaron
para almacenar valores de bytes sin usar prefijos, y valores tamao word usando
prefijos Word. La instruccn READ se us para retirar valores almacenados por las
directivas DATA. En los ejemplos de este captulo, el argumento Location de la
instruccin DATA siempre us la etiqueta de la directiva opcional Symbol para
diferenciar los diferentes tipos de datos. Algunas de las etiquetas Symbol que se usaron
fueron Notes, Durations, Dots, y Octaves (notas, duraciones, puntos y octavas).
Frequencia y Sonido Pgina 287
Los datos musicales pueden almacenarse en formatos que tienden en si mismos para
convertirse en una partitura. El estilo de los datos de la partitura puede convertirse en
frecuencias usando las instrucciones LOOKUP y LOOKDOWN. Tambin pueden
realizarse las operaciones matemticas en valores de variables para cambiar la octava de
una nota dividiendo su frecuencia por una potencia de dos. Las operaciones matemticas
tambin son tiles para la duracin de las notas conociendo el tempo o la duracin de la
nota entera.
Se introdujo SELECT...CASE como una forma de evaluar una variable en funcin de
caso por caso. SELECT...CASE es particularmente til para examinar caracteres o
nmeros cuando hay diferentes elecciones lo que podra ser la variable y diferentes
elecciones para fijar las acciones que necesitan tomarse en funcin del valor de la
variable. Un programa que convierte cadenas de caracteres que describen los tonos
musicales de los telfonos celulares viejos (se llama RTTTL) se us para introducir
programas grandes que hacen uso de todas las tcnicas de programacin presentadas en
este texto. SELECT...CASE juega un papel importante en este programa porque se usa
para examinar caracteres seleccionados en un archivo RTTTL en funcin de caso-por-
caso.
Preguntas
1. Que origina que un sonido suene con un timbre alto?
2. Qu hace FREQOUT 15, 1000, 3000? Qu provoca que un tono suene con un
timbre bajo?
3. Cmo puede usted modificar la instruccin FREQOUT de la pregunta 2 para
que mande dos frecuencias al mismo tiempo?
4. Si usted golpea la tecla B6 de un piano, Qu frecuencia emite?
5. Cmo modifica usted una directiva DATA o una instruccin READ si desea
almacenar y retirar valores word?
6. Puede usted tener ms de una directiva DATA? Si si puede, como puede usted
indicarle a una instruccin READ que obtenga los datos de una o mas directiva
DATA?
7. Si usted conoce la frecuencia de una nota en una octava, que tiene usted que
hacer para que esa frecuencia toco en la octava mayor siguiente?
8. Qu hace SELECT...CASE?
Ejercicios
1. Modifique el tono Alarm... del programa ActionTones.bs2 para que la
frecuencia del tono que toca aumente en 500 cada vez que el tono se repite.
Pgina 288 Qu es un Microcontrolador?
2. Explique como modifica el programa MusicWithMoreFeatures.bs2 para que
muestre un mensaje de alerta en la Terminal Debug cada vez que se toca una
nota punteada.
Proyectos
1. Construya un Generador de Tonos controlado con botones push. Si se presiona
un botn push, la bocina debe emitir un beep de 2 kHz durante un 1/5 de
segundo. Si se presiona el segundo botn push la bocina debe emitir una beep de
3 kHz durante un 1/10 de segundo.
Soluciones
Q1. Nuestro oido detecta cambios en la presin del aire como tonos. Un tono con
timbre alto genera cambios ms rpidos en la presin del aire, un tono con timbre
bajo genera cambios lentos en la presin del aire.
Q2. FRECOUT 15, 1000, 3000 manda una seal de 3000 Hz que sale del pin P15
durante un segundo (1000 ms). El efecto de cada nmro es: 15 es el pin E/S 15;
1000 es la duracin del tono en milisegundos, o un segundo; 3000 es la
frecuencia del tono, en hertz, entonces manda un tono de 3000 Hz.
Q3. Use el argumento opcional Freq2. Para tocar 3000 Hz y digamos 2000 Hz,
simplemente agregamos la segunda frecuencia a la instruccin despus de una
coma:
FREQOUT 15, 1000, 3000, 2000
Q4. 1975-5 Hz, vea la Figura 8-3.
Q5. Use el modificador opcional Word antes de cada dato.
Q6. Si. Cada directiva DATA puede tener un diferente parmetro opciona Symbol.
Para especificar de que directiva DATA se obtienen los datos, incluya el
parmetro Symbol despues de cada palabra clave READ. Por ejemplo: READ
Notes, noteLetter. En este ejemplo, Notes es el parmetro Symbol.
Q7. Para obtener una nota en la siguiente octava mayor, multiplique la frecuencia por
dos.
Q8. SELECT...CASE selecciona una variable o expresin la evaluacin en funcin
de caso por caso, y ejecuta diferentes bloques de cdigo dependiendo en cual
caso se adeca el valor de la variable.
Frequencia y Sonido Pgina 289
E1. Este problema puede resolverse ya sea manualmente incrementando el valor de
cada tono por 500 o utilizando el bucle FOR...NEXT con un valor STEP
(paso) de 500.
Utilizing FOR...NEXT loop: Manually increasing tone:
DEBUG "Increasing alarm...", CR
PAUSE 100
FOR frequency = 1500 TO 3000 STEP 500
FREQOUT 9, 500, frequency
PAUSE 500
NEXT
DEBUG "Increasing Alarm...",CR
PAUSE 100
FREQOUT 9, 500, 1500
PAUSE 500
FREQOUT 9, 500, 2000
PAUSE 500
FREQOUT 9, 500, 2500
PAUSE 500
FREQOUT 9, 500, 3000
PAUSE 500
E2. Modifique las lneas que identifican la nota punteada.
READ Dots + index, noteDot
IF noteDot = 1 THEN noteDuration = noteDuration * 3 / 2
Agregue una instruccin DEBUG al bucle IF...THEN. No olvide ENDIF. Add a
DEBUG command to the IF...THEN. Don't forget the ENDIF.
READ Dots + index, noteDot
IF noteDot = 1 THEN
noteDuration = noteDuration * 3 / 2
DEBUG "Nota Punteada!", CR
ENDIF
P1. Use el circuito de bocina piezoelctrica de la Figrua 8-2; y los circuitos del botn
push de la Figura 4-26.
' Que es unMicrocontrolador? - Ch8Prj01_PushButtonToneGenerator.bs2
' P4 Presionado: 2 kHz beep for 1/5 second. 2 kHz = 2000 Hz.
' 1/5 s = 1000 / 5 ms = 200 ms
' P3 Presionado: 3 kHz beep for 1/10 second. 3 kHz = 3000 Hz.
' 1/10 s = 1000 / 10 ms = 100 ms
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Programa Ejecutandose!"
DO
IF (IN4 = 1) THEN
FREQOUT 9, 200, 2000 ' 2000 Hz para 200 ms
ELSEIF (IN3 = 1) THEN
Pgina 290 Qu es un Microcontrolador?
FREQOUT 9, 100, 3000 ' 3000 Hz para 100 ms
ENDIF
LOOP
Bloques de Construccin Electrnicos Pgina 291
Captulo 9: Bloques de Construccin
Electrnicos
LOS PEQUEOS CHIPS NEGROS
No necesitas ms que ver a tu BASIC Stamp (ver Figura 9-1) para encontrar ejemplos de
esos pequeos chips negros. Cada uno de estos chips tiene una funcin especial. El chip
de arriba a la derecha es el regulador de voltaje. Este chip recibe el voltaje de la bateria y
lo convierte casi exactamente en 5 V, que es lo que necesita el resto de los componentes
del BASIC Stamp para trabajar correctamente. El chip arriba a la izquierda es el mdulo
EEPROM del BASIC Stamp. Los programas en PBASIC se convierten en nmeros
llamados simbolos (tokens) que se descargan en el BASIC Stamp. Estos tokens se
almacenan en la EEPROM y usted puede verlos al hacer click en Run y luego en el mapa
de memoria del Editor BASIC Stamp. El chip ms grande es el Chip Interpreter. Este
es un microcontrolador programado con el Interpreter PBASIC que manda los tokens
desde la EEPROM y luego interpreta la instruccin PBASIC que el token representa.
Luego ejecuta la instruccin y manda el siguiente token y as sucesivament. A este
proceso se le llama Manda y Ejecuta.
2K EEPROM stores
PBASIC code and logged
data
PBASIC Interpreter chip
(a pre-programmed
microcontroller)
5V Regulator
converts input
voltage to
regulated 5
volts
Figura 9-1
Circuitos
Integrados
del BASIC
Stamp
Pgina 292 Qu es un Microcontrolador?
Las personas usan el trmino Circuito Integrado (CI) cuando se refieren a los pequeos
chips negros. Realmente el circuito integrado es un pequeo chip de silicio que est
contenido dentro de un plstico negro o una cajita de cermica. Dependiendo del chip
puede tener cientos, miles o millones de transistores. Un transistor es el bloque de
construccin bsico de los circuitos integrados, y usted tendr la oportunidad de
experimentar con el transistor en este captulo. Otro componentes familiares diseados
dentro del chip de silicio son los diodos, resistores y capacitores.
Reflexione un momento en las actividades que ha trabajado en este libro. La lista incluye
LEDs parpadeando, lectura de botones push, control de servos, lectura de mediciones de
luz con potenciometro, control de indicadores, y produciendo sonidos. Pero esto es
solamente el comienzo, esto es impresionante, considerando que usted puede combinar
estas actividades para hacer circuitos ms complicados. El ncleo del sistema que hizo
posible todas estas actividades, lo compone justamente los tres circuitos integrados que
muestra la figura 9-1, y otros pocos componentes adicionales. Es justamente lo que
mostramos lo poderoso que son los circuitos integrados cuando se disean para trabajar
en conjunto.
EXPANDA SUS PROYECTOS CON CIRCUITOS INTEGRADOS
PERIFERICOS
Existen miles de circuitos integrados diseados para usarse con microcontroladores.
Algunas veces diferentes fabricantes de circuitos integrados hacen chips que realizan la
misma funcin. Algunas veces cada caracterstica del chip son muy diferentes y otras
veces son casi identicos pero uno podra costar menos que el otro. Cada uno de los miles
de circuitos integrados diferentes como bloques de construccin para una variedad de
diseos. Las compaias publican informacin del funcionamiento de cada uno de sus
circuitos integrados en documentos que se llaman hojas de datos y est disponibles en la
web. Estos fabricantes tambin publican notas de aplicacin que muestra como se usan
sus circuitos integrados en una o formas tiles que facilitan el diseo de productos. Los
fabricantes de circuitos integrados dan esta informacin con el deseo de que los
ingenieros los usen para costruir sus ultimos juguetes o aplicaciones con sus chips. Si se
venden miles de juguetes significa que la compaa vende miles de sus circuitos
integrados.
En este captulo, usted experimentar con el transistor y un circuito integrado de
propsito especial llamado Potenciometro Digital. Como mencionamos antes, el
transistor es el bloque de construccin bsico de los circuitos integrados. Tambin es el
bloque de construccin bsico de muchos otros circuitos. El potenciometro digital
tambin tiene una variedad de usos. Recuerde que en cada actividad que usted haya
Bloques de Construccin Electrnicos Pgina 293
realizado, hay probablente cientos de formas diferentes que usted podra usar en cada uno
de estos circuitos integrados.
ACTIVIDAD #1: CONTROL DEL FLUJO DE CORRIENTE CON UN
TRANSISTOR
En esta actividad, usted usar un transistor como una forma para controlar la corriente
que pasa a travs de un LED. Usted puede usar un LED para monitorear la corriente ya
que brilla ms cuando pasa ms corriente por l, y brilla menos cuando pasa menos
corriente por l.
Presentado el Transistor
La Figura 9-2 muestra el smbolo esquemtico y dibujo del transistor 2N3904. Hay
diferentes tipos de transistores. Uno llamado NPN, esto se refiere al tipo de material
usado para fabricar el transistor y la forma como esos materiales forman capas en el
silicio. La mejor manera de empezar a pensar en un transistor es imaginarse una vlvula
que se usa para controlar la corriente. Diferentes transistores controlan cuanta corriente
pasa por diferentes medios. Este transistor controla la cantidad de corriente que pasa al
colector y regresa al emisor. Usa la cantidad de corriente permitida por la terminal de la
base para controlar la corriente de C a E. con una pequea cantidad de corriente que
permite la base, circula una corriente 416 veces mayor a travs del transistor de C a E.
C
B
E
B
C
E
2N3904
Figura 9-2
Transistor 2N3904 {}
Smbolo esquemtico y dibujo del
transistor
Hoja de Datos de 2N3904 Anteriormente mencionamos, que los fabricantes de
semiconductores publican documentos llamados hoja de datos de los dispositivos que
fabrican. Estas hojas de datos contienen informacin que los ingenieros usan para disear
el dispositivo en un producto. Por ejemplo para ver la hoja de datos de 2N3904 vaya a
www.fairchildsemi.com. Meta 2N3904 en el rectngulo Search de la pgina principal de
Fairchild Semiconductors y de click en Go. Uno de los resultados de bsqueda puede ser
una liga a informacin del producto 2N3904. Sigala y busque la liga Datasheet.
La mayora de los buscadores web muestran la hoja de datos y la abren con Adobe Acrobat
Reader.
Pgina 294 Qu es un Microcontrolador?
Partes Del Circuito Transistor
Un transistor 2N3904
Dos Resistores de 100 K (caf-negro-amarillo)
Un LED de cualquier color
Un potenciometro de 10 K
Tres alambres para puentes
Construyendo y verificando el Circuito Transistor
La Figura 9-3 muestra un circuito que usted puede usar para controlar manualmente la
cantidad de corriente que el transistor permite que pase por el LED. Girando la perilla del
potenciometro, el circuito suministrar diferentes cantidades de corriente a la base del
transistor. Esto originar un cambio en la cantidad de corriente que el transistor permita
que pase de colector a emisor. El LED le dar una clara indicacin de estos cambios
brillando ms o brillando menos.
Construya el Circuito Mostrado en la Figura 9-3
o Asegurse que el nodo (la terminal ms larga) del LED est conectado
a Vdd.
o Verifique dos veces el circuito del Transistor. Observe que la parte plana
del transistor apunta a la derecha en el diagrama de alambrado.
Gire la perilla del transistor y verifique que cambia el brillo en el LED conforme
cambia la posicin de la terminal central del potenciometro.
Vdd
Vss Vss
LED
100 k
100 k
Vdd
POT
10 k
Figura 9-3
Circuito del
Transistor
Controlado
Manualmente
con el
Potenciometro
Bloques de Construccin Electrnicos Pgina 295
Su Turno Conmutando el Transistor en Apag/Enc
Si todo lo que usted desea es conmutar un transistor en Enc/Apag, usted puede usar el
circuito mostrado en la Figura 9-4. Cuando el BASIC Stamp manda una seal high a ste
circuito, el har que el transistor conduzca mucha corriente como cuando ajust el
potenciometro para mximo brillo. Cuando el BASIC Stamp manda una seal low a este
circuito hace que el transistor deje de conducir corriente, y el LED no emite luz.
Cul es la diferencia entre conectar esto y conectar un circuito LED a un pin E/S?
Los pines del BASIC Stamp tienen limitaciones en la cantidad de corriente que pueden
entregar. Tambin los transistores tienen limitaciones, pero estas son mucho mayores. En
La Guia del Estudiante de Control de Procesos, un transistor se usa para excitar un
pequeo ventilador de DC. Tambin se usa para proporcionar cantidades grandes de
corriente a un resistor pequeo que se usa como elemento calefactor. Cualquiera de estas
dos aplicaciones podran drenar mucha corriente que daaran rpidamente a el BASIC
Stamp, pero el transistor se encarga de que esto no suceda.
Construya el Circuito que muestra la Figura 9-4
Escriba un programa que mande seales high y low a P8 dos veces cada
segundo. Sugerencia: El programa LedOnOff.bs2 del Captulo 2 solamente
necesita modificarse para mandar seales high/low a P8 en lugar de P14.
Ejecute el programa y verifique que le da el control de Enc/Apag del LED.
P15
P14
P13
P12
P11
P10
P9
P7
P6
P5
P4
P3
P2
P1
P0
P8
X2
X3
Vdd Vss Vin
Vss
LED
100 k
100 k
Vdd
P8
Figura 9-4
Circuito del
BASIC Stamp
que controla
el Enc/Apag
entregando
corriente al
LED con
transistor.
Pgina 296 Qu es un Microcontrolador?
ACTIVIDAD #2: PRESENTANDO EL POTENCIOMETRO DIGITAL
En esta actividad el ajuste manual del potenciometro con un circuito integrado que es un
potenciometro que se ajusta digitalmente. Luego, programar el BASIC Stamp para
ajustar el potenciometro digital, y este ajustar el brillo del LED en forma semejante
como lo hizo manualmente con el potenciometro en la actividad anterior.
Presentando el Potenciometro Digital
La Figura 9-5 muestra el mapa de pines del potenciometro digital que usar en esta
actividad. El chip tiene 8 pines, cuatro por lado que estn espaciadas para insertarlo con
facilidad en su tablilla (tienen 1/10 de pulgada de separacin). El fabricante coloca un
punto de referencia en el empaque de plstico que le indica la diferencia entre el pin 1 y
el pin 5. El punto de referencia es una pequeo medio crculo en el empaque del chip.
Usted puede usar este punto como una referencia para los nmeros de los pines del chip.
Los nmeros de los pines en el chip se cuentan arriba, en sentido inverso a las manecillas
del reloj.
Sustitucin de partes. Para Parallax a veces es necesario sustituir una parte. La parte
funcionar igual, pero su etiqueta puede ser diferente. Usted puede encontrar que el
potenciometro digital incluido en las partes de su Kit Que es un Microcontrolador no est
marcado con AD5220 pero tenga la seguridad que trabajara correctamente en esta
actividad.
Reference
Notch
1
2
4
3
8
7
5
6
AD5220
GND
A1
U/D
CLK
W1
B1
CS
Vdd
Figura 9-5
AD5220 Pin Map
Use the reference notch to make
sure you have the AD5220 right-side-
up when building it into your circuit on
the breadboard.
Bloques de Construccin Electrnicos Pgina 297
Este es un resumen de cada uno de los pines y funciones del CI AD5220
1. CLK: Es el pin que recibe los pulsos de reloj (seales low-high) que mueven la
terminal W central.
2. U/D: Es el pin que recibe la seal high para hacer que la terminal W central se
mueva hacia A1, la terminal W verdaderamente no se mueve hasta que un pulso
(seal low-high-low) se manda al pin CLK.
3. A1: Es la terminal A del potencimetro.
4. GND: Es la conexin de tierra. La tierra en la Tablilla Board of Education y
BASIC Stamp Home Work es la terminal Vss.
5. W1: Es la terminal W del potenciometro
6. B1: Es la terminal B del potenciometro
7. CS: Es la terminal Seleccin de Chip. Al aplicarle una seal high a este pin, el
chip ignora todas las seales de control que mandadas a CLK y U/D. Al aplicarle
una seal low a este chip, actua con cualquier seal de control que recibe.
8. Vdd: Se conecta a +5 V, que es Vdd en la tablilla Board of Education y BASIC
Stamp HomeWork.
Hoja de Datos de AD5220: Para ver la hoja de datos de AD5220: vaya a la liga
www.analog.com Meta AD5220 en el cuadro Search de la pgina principal de Analog
Devices y dle click en el botn Search. D click en Data Sheets. D click en la liga que
dice AD5220: Increment/Decrement Digital Potentiometer Datasheet
Partes del circuito Transistor Controlado con Potenciometro Digital
Un Transistor 2N3904
Dos Resistores de 100 K (caf-negro-amarillo)
Un LED de cualquier color
Un Potenciometro Digital AD5220
Diez alambres para puentes
Construyendo el Circuito del Potenciometro Digital
La Figura 9-6 muestra el circuito esquemtico con el potenciometro digital usado en lugar
de un potenciometro manual, y la Figura 9-7 muestra el diagrama de alambrado del
circuito. El BASIC Stamp puede controla el potenciometro digital mandando seales de
control a los pines P5 y P6.
Construya el circuito mostrado en la Figura 9-6 y 9-7.
Pgina 298 Qu es un Microcontrolador?
Vss
100 k
100 k
Vdd
Vdd
Vdd
Vss
P6
P5
1
2
4
3
8
7
5
6
AD5220
GND
A1
U/D
CLK
W1
B1
CS
Vdd
Figura 9-6
Circuito
Esquemtico del
Transistor
Controlado por
Potenciometro
Digital
P15
P14
P13
P12
P11
P10
P9
P8
P7
P4
P3
P2
P1
P0
P6
P5
X2
X3
Vdd Vss Vin
A
D
5
2
2
0
Figura 9-7
Diagrama de
alambrado de la
Figura 9-6
Programando Control del Potenciometro Digital
Imagine que la perilla del potenciometro manual del ejercicio anterior tiene 128
posiciones. Tambien imagine que el potenciometro est en la mitad de su rango de
movimiento. Esto significa que usted puede girar la perilla en una direccin con 63 pasos
y en la otra direccin con 64 pasos.
Digamos que usted gira la perilla del potenciometro un paso en sentido de las manecillas
del reloj. El LED brillar muy poquito. Esto sera lo mismo que mandar una seal high al
pin U/D del AD5220 y mandar un puls o (high-low-high) al pin CLK.
HIGH 5
PULSOUT 6, 1
Bloques de Construccin Electrnicos Pgina 299
Ahora imagine que gira su potenciometro manual 3 pasos en sentido inverso de las
manecillas del reloj. El LED brillar ms poquito. Esto sera lo mismo que mandar una
seal low al pin U/D del AD5220 y mandar tres pulsos al pin CLK.
LOW 5
FOR counter = 1 TO 3
PULSOUT 6, 1
PAUSE 1
NEXT
En seguida imagine que usted gira el potenciometro totalmente en sentido de las
manecillas del reloj. Esto es lo mismo que mandar una seal high a pin U/D del AD5220
mandando 65 pulsos a la terminal CLK. Y ahora el LED estar en su mximo brillo.
HIGH 5
FOR counter = 1 TO 65
PULSOUT 6, 1
PAUSE 1
NEXT
Finalmente, imagine que usted gira el potenciometro totalmente en sentido inverso de las
manecillas del reloj. El LED no emitir luz. Esto es lo mismo que mandar una seal low
a pin U/D mandando 128 pulsos a la terminal CLK.
LOW 5
FOR counter = 0 TO 127
PULSOUT 6, 1
PAUSE 1
NEXT
Programa Ejemplo: DigitalPotUpDown.bs2
Este programa ejemplo ajusta el potenciometro hacia arriba y hacia abajo, de un extremo
de su rango al otro extremo, haciendo que el LED brille gradualmente y luego
gradualmente no emita luz.
Meta y ejecute el programa DigitalPotUpDown.bs2
Pgina 300 Qu es un Microcontrolador?
' Que es un Microcontroador? - DigitalPotUpDown.bs2
' Barrido de valores digitales del pot.
' {$STAMP BS2}
' {$PBASIC 2.5}
DEBUG "Programa Ejecutandose!"
counter VAR Byte
DO
LOW 5
FOR counter = 0 TO 127
PULSOUT 6, 1
PAUSE 10
NEXT
HIGH 5
FOR counter = 0 TO 127
PULSOUT 6, 1
PAUSE 10
NEXT
LOOP
Su Turno Cambiando la Velocidad y Reduccin del Cdigo
Usted puede incrementar o disminuir la velocidad con la que el LED brilla y se apaga,
cambie el argumento Duration de la instruccin PAUSE
Modifique y ejecute el programa usando PAUSE 20 y observe la diferencia en
velocidad con que el LED brilla y se apaga.
Repita usando PAUSE 5.
Para simplificar el programa usted puede usar una instruccin llamada TOGGLE.
TOGGLE cambia el estado de un pin E/S del BASIC Stamp, si el pin E/S estaba
mandando una seal high, TOGGLE hace que mande una seal low. Si el pin E/S estaba
mandando una seal low, TOGGLE hace que mande una seal high.
Guarde el programa DigitalPotUpDown.bs2 con el nombre
DigitalPotUpDownWithToggle .bs2
Modifique el programa para que sea como el que mostramos abajo.
Ejecute el programa y verifique que funciona de la misma forma como el
programa DigitalPotUpDown.bs2
Compare el nmero de lneas de cdigo que necesito para hacer el mismo trabajo
Bloques de Construccin Electrnicos Pgina 301
La Ejecucin Fuera de la Memoria de Programa es un problema que algunas personas
encuentran cuando los proyectos del BASIC Stamp son muy grandes y complicados. Al
usar TOGGLE en lugar de dos bucles FOR...NEXT es exctamente un ejemplo de algunas
tcnicas que pueden usarse para hacer el mismo trabajo con la mitad de lneas de cdigo.
' Qu es un Microcontrolador? - DigitalPotUpDownWithToggle.bs2
' Barrido de Valores Digitales del Pot.
' {$STAMP BS2}
' {$PBASIC 2.5}
DEBUG "Programa en Ejecucin!"
counter VAR Byte
LOW 5
DO
FOR counter = 0 TO 127
PULSOUT 6,5
PAUSE 10
NEXT
TOGGLE 5
LOOP
Mirando el Interior del Potenciometro Digital
La Figura 9-8 muestra un diagrama del interior del potenciometro AD5220. El AD5220
tiene 128 elementos resistivos cada uno de 78.125 (valor nominal). Los 128 elementos
suman 10 K .
Ad5220
pos. 0
pos. 1
pos. 127
3
6
5
1 CLK
2 U/D
7 CS 40
W1
A1
B1
pos. 126
pos. 125
78
78
78
78
78
Figura 9-8
Interior del AD5220
Pgina 302 Qu es un Microcontrolador?
Un valor nominal significa un valor nombrado. Elementos como los resistores y
capacitores tipicamente tienen un valor nominal y una tolerancia. Cada uno de los
elementos resistivos del AD5220 tienen un valor nominal de 78.125 con una tolerancia
del 30 % (23.438 ) arriba y debajo de su valor nominal.
Entre cada uno de estos elemtos resistivos hay un interruptor llamado derivacin (tap).
En verdad cada interruptor es un grupo de transistores que se conmutan Enc/Apag para
permintir o no permitir el paso de corriente. Solamente uno de estos interruptores puede
cerrarse al mismo tiempo. Si se cierra uno de los interruptores superiores (por ejemplo la
posicin 125, 126 o 127) es como tener la perilla del potenciometro manual casi al
extremo en el sentido de las manecillas del reloj. Si se cierra la posicin 0 o 1 es como
tener la perilla del potenciometro manual casi al extremo en el sentido inverso de las
manecillas del reloj.
Imagine que se cierra la posicin 126. Si usted desea mandar la derivacin a 125, (la
posicin 126 abierta y la posicin 125 cerrada), fije U/D en low y luego aplique un pulso
a CLK. Si usted desea fijar la derivacin en la posicin 127 , fije U/D en high y aplique
dos pulsos. Si usted desea regresar la derivacin a 1, fije U/D en low y aplique 126
pulsos.
El siguiente Programa Ejemplo usa la Terminal Debug para preguntarle que derivacin
desea usted cerrar. Luego decide si el pin U/D se fija en high o low y aplica el nmero
correcto de pulsos para mover la derivacin de su posicin vieja a su posicin nueva. Con
excepcin de Data EEPROM, el siguiente Programa Ejemplo tiene casi todas las
secciones que usted normalmente espera encontrar en un programa de aplicacin.
Ttulo Son comentarios que incluyen el nombre del archivo de un
programa su descripcin las directivas del PBASIC.
Data EEPROM Son declaraciones DATA que almacenan listas
predefinidas de valores en porciones de la memoria EEPROM que no se
necesitan para almacenar programa
Definiciones I/O Son directivas PIN que le dan nombre a los pines I/O
Constantes Son declaraciones CON que le dan valores a los nombres en el
programa.
Variables Son declaraciones VAR que le asignan nombres a porciones de
la memoria RAM del BASIC Stamp para almacenar valores.
Initialization- Es una rutina que para iniciar el programa con el pie derecho
(correctamente). En el siguiente programa, la derivacin del potenciometro
necesita fijarse en cero.
Bloques de Construccin Electrnicos Pgina 303
Main Es la rutina que maneja los principales trabajos que el programa
tiene que hacer.
Subrutinas Son segmentos de cdigo que hacen trabajos especficos, unos
con otros o en este caso para la rutina principal.
Programa Ejemplo: TerminalControlledDigitalPot.bs2
Usted puede usar este Programa Ejemplo y la Terminal Debug para fijar la derivacin del
potenciometro digital. Cambiando el ajuste de la derivacin del potenciometro digital,
usted puede cambiar el brillo del LED conectado al transistor que controla el
potenciometro digital La Figura 9-9 muestra un ejemplo para meter el valor 120 en la
ventana de Transmisin de la Terminal Debug mientras corre el programa.Como el ajuste
anterior del tap era 65, el LED brillar al doble cuando se haga el ajuste a 120.
Windowpanes
Transmit
Receive
Figura 9-9
Mandando
mensajes al BASIC
Stamp
Haga click en la
ventana (superior) y
meta los nmeros
para el nuevo ajuste
de la derivacin
Meta y ejecute el programa TerminalControlledDigitalPot.bs2
Asegrese que la ventanita Echo Off est sin marcar.
Haga click en la ventana Transmit de la Terminal Debug para colocar ah el
cursor.
Meta valores entre 0 y 127 en la Terminal Debug. Asegurese de presionar la
tecla Enter despues de haber escrito los dgitos.
' -----[ Title ]-----------------------------------------------------------
' Que es un Microcontrolador? - TerminalControlledDigitalPot.bs2
' Actualiza la derivacin del pot digita en funcin de lo que mete en Terminal
Debug.
' {$STAMP BS2}
' {$PBASIC 2.5}
' -----[ Datos en EEPROM ]-------------------------------------------------
Pgina 304 Qu es un Microcontrolador?
' -----[ Define E/S ]-------------------------------------------------
UdPin PIN 5 ' Fija valores de los pines E/S
ClkPin PIN 6 ' conectados a CLK y U/D.
' -----[ Constants ]-------------------------------------------------------
DelayPulses CON 10 ' Retardo para observar iliminacin del LED.
DelayReader CON 2000
' -----[ Variables ]-------------------------------------------------------
counter VAR Byte ' Contador para FOR...NEXT.
oldTapSetting VAR Byte 'Ajuste de Derivacin previa.
newTapSetting VAR Byte 'Ajuste Nuevo de Derivacin
' -----[ Initialization ]--------------------------------------------------
oldTapSetting = 0 ' Initializa el nuevo y viejo
newTapSetting = 0 ' ajustes de Derivacin a cero
LOW UdPin 'Fija Pin de Arriba/Abajo pin para bajar.
FOR counter = 0 TO 127 'el ajuste de Derivacin a su mnimo nivel.
PULSOUT 6,5
PAUSE 1
NEXT
PAUSE 1000 ' Espera 1 s antes del 1er mensaje
' -----[ Main Routine ]----------------------------------------------------
DO
GOSUB Get_New_Tap_Setting ' Indicador de usuario y obtener entrada.
GOSUB Set_Ud_Pin ' Fija pin Arriba/Abajo para up/down.
GOSUB Pulse_Clk_pin ' Manda pulsos.
LOOP
' -----[ Subroutines ]-----------------------------------------------------
Get_New_Tap_Setting: ' Muestra instrucciones y
' obtiene entrada de user del nuevo
DEBUG CLS, "Tap setting is: ", ' valor de ajuste de Derivacin.
DEC newTapSetting, CR, CR
DEBUG "Enter new tap", CR, "setting (0 TO 127): "
DEBUGIN DEC newTapSetting
RETURN
Set_Ud_Pin: ' Examina los valores nuevos y viejos de Derivacin
'para decidir el valor del pin de Arriba/Abajo .
IF newTapSetting > oldTapSetting THEN ' Notifica usuario si valore
HIGH UdPin ' son iguales.
Bloques de Construccin Electrnicos Pgina 305
oldTapSetting = oldTapSetting + 1 ' Incrementa el pin Pulse_Clk_pin.
ELSEIF newTapSetting < oldTapSetting THEN
LOW UdPin
oldTapSetting = oldTapSetting - 1 ' Decrementa el pn Pulse_Clk_pin.
ELSE
DEBUG CR, "New and old settings", CR,
"are the same, try ", CR,
"again...", CR
PAUSE DelayReader ' Da tiempo lectura para ver
ENDIF ' Mensaje.
RETURN
Pulse_Clk_pin:
' Manda pulsos de valores nuevos y viejos. Recuerde que Set_Ud_Pin
' ajustaron el valor de ajuste viejo a ajuste nuevo en una unidad.
' Esto mantiene el bucle FOR...NEXT loop ejecutandose de una a muchas vees.
FOR counter = oldTapSetting TO newTapSetting
PULSOUT ClkPin, 1
PAUSE DelayPulses
NEXT
oldTapSetting = newTapSetting ' Mantiene el ajuste de viejos y nuevos
' valores de ajuste.
RETURN
RESUMEN
Este captulo present los circuitos integrados y la forma como pueden usarse con el
BASIC Stamp. Se us un transistor como vlvula de corriente, y un potenciometro digital
para controlar la cantidad de corriente que pasa a travs del transistor. Al examinar los
potenciometros digitales presentamos el punto de referencia y el mapa de pins como
elementos importantes de chips electrnicos. Se analiz la funcin de cada uno de los
pines del potenciometro digital y tambin la estructura interna del dispositivo. Se
present la instruccin TOGGLE del PBASIC como medio para ahorrar memoria de
programa.
Preguntas
1. Cules son los nombres de las terminales del transistor que usted us en este
captulo?
2. Qu terminal controla en paso de corriente a travs del transistor?
3. Cmo puede usted incrementar o decrementar la corriente que pasa a travs del
transistor?
Pgina 306 Qu es un Microcontrolador?
Ejercicio
1. Escriba un programa que ajuste la derivacin del potenciometro digital en la
posicin, sin importar su posicin actual.
Proyecto Desafio Avanzado
1. Agregue un fototransistor a su proyecto y haga que el brillo del LED se ajuste
con la cantidad de luz que sensa el fototransistor. Nota: la solucin es importante
ya que demuestra una aproximacin til para escalar una entrada a otra salida.
Soluciones
Q1. Emistor, Base y Colector.
Q2. La base controla la corriente que pasa a travs del transistor.
Q3. Incremente o decremente la corriente permitida en la base del transistor.
E1. Para resolver este ejercicio, vea el programa TerminalControlledDigitalPot.bs2.
La primer actividad por hacer en la seccin Inicializacin, es fijar la derivacin
en su posicin ms baja. Este codigo es precisamente lo que usa la solucin de
abajo.
' Qu es un Microcontrolador? - Ch9Ex01_SetTapToZero.bs2
' Gira el Potenciometro Digital hasta cero
' {$STAMP BS2}
' {$PBASIC 2.5}
DEBUG "Program Running!"
UdPin PIN 5 ' Fija los valores de los pines E/S
ClkPin PIN 6 ' Conectado a CLK y U/D.
counter VAR Byte ' Contador de FOR...NEXT.
LOW UdPin ' Ajusta el pin Arriba/Abajo en Abajo.
FOR counter = 0 TO 128 ' Fija Derivacin en valor Mnimo.
PULSOUT ClkPin,5
PAUSE 1
NEXT
P1. Use el circuito del potenciometro digital que muestra la Figura 9-6 y el circuito
fototransistor de la Figura 7-4.
Esta solucin se obtiene con el programa TerminalControlledDigitalPot.bs2, e
incorpora elementos del programa PhototransistorAnalogToBinary.bs2 del
Captulo 7, Actividad # 5.
Bloques de Construccin Electrnicos Pgina 307
Tambien aplica algo de Algebra para resolver el problema de escalamiento que
hace el rango de los valores que usted podra obtener de las mediciones de
tiempo RC del fototransistor se ajusten al rango de 0 a 128 para el potenciometro
digital. Recuerde que esta es una solucin del ejemplo, y no significa que sea la
nica solucin o aproximacin.
La llamada a la subrutina GOSUB Get_New_Tap_Setting del programa
TerminalControlledDigitalPot.bs2 se reemplaza por otras dos llamadas a
subrutina GOSUB Read_Phototransitos y GOSUB Scale:Phototransitor. De
igual manera la subrutina Get_New_Tap-Setting se reemplaza por
Read_Phototransistor y Scale_Phototransistor.
La subrutina Read_Phototransistor es una versin de subrutina de las
instrucciones que toma las mediciones de RCTIME del fototransistor y limita su
rango de entrada en el programa PhototransistorAnalogToBinary.bs2.
El pin, se han ajustado los nombres constantes y variables, y ha cambiado
PAUSE 100 a PAUSE 10 para que muestre 10 veces por segundo, estos cambios
se necesitaron para cargar el capacitor antes de tomar la medicin de RCTIME.
Despus esta subrutina almacena un valor en la variable lightReadin, este valor
tiene que estar entre ValMin (100) y ValMax (4000). Asegurese de verificar y
ajustar estos valores para su propias condiciones de iluminacin.
El problema que ahora tenemos es que solamente hay 128 ajustes de derivacin,
y 3900 mediciones posibles de RCTIME del fototransistor. Para resolver este
problema necesitamos dividir las mediciones RCTIME del fototransistor por
algn valor para hacer que ajuste en el rango 0 a 127. Entonces, sabemos que
necesitamos dividir el rango de valores de entrada por algun valor para hacer que
quede entre 128 valores. Usaremos esta ecuacion
Rango de Mediciones posibles del Fototransistor = 128 valores posibles de
derivacin / Divisor de Escala
Para resolver esto, multiplicamos ambos lados de la ecuacin por Divisor de
Escala, y luego dividimos ambos lados por 128 valores posibles de derivacin
Divisor de Escala = Rango de Mediciones posibles del Fototransistor
128 valores posibles de derivacin
Pgina 308 Qu es un Microcontrolador?
En el cdigo, el Rango de Mediciones posibles del transistor es ValMax
ValMin, y scaleDivisor es una variable, y 128 es una constante. Entonces, este
cdigo de la seccin Declaraciones e Inicializacin calcula el valor de
scaleDivisor como
ScaleDivisor = (valMax - valMin) / 128
Despus de cada medicin RCTIME del fototransistor, la subrutina
Scale_Phototransistor resta valMin de lightReading y luego divide la medicin
por scaleDivisor. El mapa resultante de mediciones de entrada del rango de 100 a
4000 cambia al rango de 0 a 127 ajustes de salida del derivador.
Escala_Fototransistor
LightReading = (lightReading - valMin) / scaleDivisor
RETURN
Considerando que ValMin es 100 y ValMax es 400, la variable lightReading
podra almacenar 3900 valores posibles. Qu sucede si el rango de entrada fue
ValMin = 10,000 a ValMax = 13900? Cuando usted resta ValMin = 10000
todava hay 3900 valores posibles, y dividiendolo por scaleDivisor mapear
correctamente las mediciones a los ajustes correspondientes de derivacin del
potenciometro digital. Si su cdigo no rest primero ValMin, el valor escalado
resultante podra estar completamente fuera del rango 0 a 128 del potenciometro
digital.
' Qu es un Microcontrolador? Ch9Prj01_PhotoControlledDigitalPot.bs2
' Actualiza el pot digital basado en lectura del fototransistor
' {$STAMP BS2}
' {$PBASIC 2.5}
' -----[ Declaraciones e Inicializacin]------------------------------
UdPin PIN 5 ' Fija valores de pine E/S
ClkPin PIN 6 ' Conectado a CLK y U/D.
PhotoPin PIN 2 ' Fototransistor en pin P2
DelayPulses CON 10 ' Retardo pora observar brillo de LED.
DelayReader CON 2000
valMax CON 4000 'Valor Max del fototransistor
valMin CON 100 ' Valor Min del fototransistor
counter VAR Byte ' Contadorr para FOR...NEXT.
oldTapSetting VAR Byte ' Ajuste Previo de Derivacin.
newTapSetting VAR Byte ' Ajuste Nuevo de Derivacin.
lightReading VAR Word ' lectura del fototransistor
scaleDivisor VAR Word ' Para Escalamiento de valores
Bloques de Construccin Electrnicos Pgina 309
' Fije un valor that que pueda dividirse en RCTIME del fototransistor
' para escalarlo a un valor en el range de 0 a 128
scaleDivisor = (valMax - valMin) / 128
oldTapSetting = 0 ' Initialicee el nuevo y viejo
newTapSetting = 0 ' ajuste del Derivacin a cero.
LOW UdPin ' Ajuste el pin Arri/Abaj en Abajo.
FOR counter = 0 TO 127 ' Ajuste Derivacin a mnima posicin.
PULSOUT ClkPin,5
PAUSE 1
NEXT
PAUSE 1000 ' Espera 1 sec. Antes 1er mensaje
' -----[ Rutina Principal ]----------------------------------------
DO
GOSUB Read_Phototransistor
GOSUB Scale_Phototransistor
newTapSetting = lightReading MIN 1 MAX 127
DEBUG HOME, DEC5 lightReading
GOSUB Set_Ud_Pin ' Fije el pin Arri/Abajo en Abajo.
GOSUB Pulse_Clk_pin ' Manda pulsos.
LOOP
' -----[ Subrutinas ]-------------------------------------------------
Set_Ud_Pin: ' Examina viejos y nuevos
IF newTapSetting > oldTapSetting THEN ' valores para decidir
HIGH UdPin
ELSEIF newTapSetting < oldTapSetting THEN ' el valor pin. Y
LOW UdPin ' notificar al usuario si
ENDIF ' los valores son iguales.
RETURN
Pulse_Clk_pin: ' Manda pulsos
FOR counter = oldTapSetting TO newTapSetting ' de viejos
PULSOUT ClkPin, 1 ' a nuevos valoress.
PAUSE DelayPulses
NEXT
oldTapSetting = newTapSetting ' Mantiene el ajuste de nuevos
RETURN 'y viejos valores.
Read_Phototransistor:
HIGH PhotoPin
PAUSE 1
RCTIME PhotoPin, 1, lightReading
lightReading = lightReading MAX valMax MIN valMin
RETURN
Scale_Phototransistor:
lightReading = (lightReading - valMin) / scaleDivisor
RETURN
Pgina 310 Qu es un Microcontrolador?
Realizando sus Propios Inventos Pgina 311
Captulo 10: Realizando sus Propios Inventos
Este texto le present las bases de integrar computadora y Tablilla en proyectos e
inventos. Ahora usted tiene experiencia de los ingredientes de circuitos comunes en los
productos cotidianos que incluyen: luces indicadoras, botones, servos, perillas,
indicadores digitales, sensores de luz, bocinas, transistores, y otros circuitos integrados.
Usted tambin tiene experiencia en conectar esos circuitos al controlador BASIC Stamp y
escribir cdigos para verificar cada uno de ellos as como integrarlos en pequeas
aplicaciones.
En este punto, usted puede estar interesado en usar sus nuevas habilidades para inventar
algo o para aprender ms o quiza ambas actividades. Usted ha aprendido que en este libro
puede obtener un buen mtodo para hacer prototipos de una variedad amplia de inventos.
En este captulo usaremos un sistema micro alarma como ejemplo de prototipo de un
dispositivo familiar. A lo largo del camino cubriremos algunas tcnicas importantes de
prototipos y habitos, que incluyen:
Sugerencias para el desarrollo inicial de sus ideas de diseo e inventos.
Un ejemplo de cmo construir y verificar cada subsistema del prototipo.
Ejemplos de cmo incorporar cdigos de prueba en el cdigo del proyecto.
Buenas prcticas en los comentarios de los cdigos y versiones de archivos.
Ejemplos de partes familiares como xxx para dispositivos con interfaces
similares.
Sugerencias y trucos para obtener diseos pasados xx
En donde buscar ms sobre proyectos Stamps en Clase y dispositivos
interesantes.
APLIQUE LO QUE USTED YA CONOCE EN OTRAS PARTES Y
COMPONENTES
El circuito botn push del captulo 3 es un ejemplo de un dispositivo de entrada muy
simple que convierte una condicin fsica (ya sea que haya o no haya presionado el
botn) en una seal high o low que el BASIC Stamp puede detectar y procesar. Usted
tambin ha usado botones push en aplicaciones que controlan luces parpadeantes,
posiciones de servos y tonos de bocina. Hay muchos sensores que detectan condiciones
fsicas adems de las de contacto que tambin mandan seales que el pin E/S del BASIC
Stamp puede monitorear. Unos pocos ejemplos incluyen sensores de gas, movimiento y
sonido, y hay muchos muchos ms. Como ahora usted ya tiene experiencia haciendo que
Pgina 312 Qu es un Microcontrolador?
BASIC Stamp monitoree un circuito botn push, monitorear un sensor de sonido o
movimiento es muy similar, y ciertamente el siguiente paso razonable.
Otra tcnica de este libro fue medir el tiempo de descarga de RC con la instruccin
RCTIME para sensar la posicin de una perilla de potenciometro y niveles de luz con un
fototransistor y un LED. Estos ejemplo son la punta del iceberg en trminos de sensores
que usted puede usar con un circuito RC
Otros ejemplos son sensores de humedad, temperatura y presin que son solamente el
principio.El indicador de luz LED proporciona otro ejemplo de circuito que es
representativo de una variedad de circuitos con funciones diferentes. El circuito LED es
controlado por un pin de salida de seales high/low del BASIC Stamp. Con circuitos de
soporte adicional, usted puede usar las seales para mover motores elctricos hacia
delante y hacia atrs, apagar y encender luces, apagar y encender elementos de
calentamiento y mucho ms.
Ahora, piense en otros dispositivos con lo que usted ya ha experimentado en este libro.
Cada uno de ellos es justamente un ejemplo en una lista de dispositivos con interfaces
similares que usted puede usar para hacer prototipos de varios inventos.
HACIENDO EL PROTOTIPO DE UN SISTEMA DE MICRO SEGURIDAD
En este captulo usaremos partes del kit Qu es un Microcontrolador? para hacer un
prototipo de un muy pequeo sistema de seguridad que usted podra usar en un escritorio,
caja de herramienas o closet, xx. Con este prototipo tambin investigaremos otras partes y
componentes que usted podra sustituir en su sistema de seguridad para que funcione con
los mismos principios de las partes conocidas de su kit, y podra darle a su sistema una
gran funcionalidad. A partir de esto, veremos como encontrar, comprender, verificar e
incorporar otros componentes con las que quiz usted nunca ha trabajado anteriormente.
ACTIVIDAD #1: DE LA IDEA A LA DEMONSTRACIN DEL CONCEPTO
Muchos productos empiezan con una idea, y en algunos casos un invento puede ser xx en
otros casos es algo que resuelve un problema. Esta idea puede desarrollarse en conceptos
con dibujos y especificaciones, y a veces un trabajo anterior de diseo. El siguiente paso
es tipicamente desarrollar un prototipo que funcione. Quiz no sea bonito pero debe ser
fiable para demostrar que un dispositivo puede trabajar de acuerdo con el concepto y
especificacin. En las compaias donde se desarrollan productos, tipicamente se requiere
la demostracin del concepto para obtener la aprobacin de la direccin y fondos para
continuar desarrollando el producto.
Realizando sus Propios Inventos Pgina 313
Idea, Concepto y Descripcin Funcional
Digamos que usted tiene un gabinete con una puerta en una bisagra y charola, y necesita
un muy pequeo sistema de alarma. O quiz usted desea disear un gabinete especial con
seguridad interconstruida. La Figura 10-1 muestra un bosquejo de cmo un
potenciometro y un contacto elctrico similar a un botn push puede usarse para detectar
cuando la puerta o la charola est abierta. Este bosquejo es similar al concepto diagrama,
el cual se enfoca solamente en mostrar lo que el producto o invento puede hacer.
Figura 10-1
Bosquejo de
un gabinete
con
Microsistema
de Seguridad
Es importante la descripcin funcional. Cuando usted tiene una mejor idea de lo que
supone que su dispositivo tiene que hacer al principio, esto previene problemas que
puedan suceder si usted tiene que redisear el dispositivo para adecuarle algo que usted
no haba pensado. Los diseadores y las compaias que crean aparatos para clientes
tienen que ser muy cuidadosos al examinar sus clientes para comprender lo que ellos
esperan. En especial los dispositivos diseados para clientes, sus rediseos pueden ser
muy costosos y consumir mucho tiempo.
Este es un ejemplo de una muy breve descripcin funcional que podemos usar para
nuestro sistema. Desarrolle un prototipo del circuito y programa de un microsistema de
Pgina 314 Qu es un Microcontrolador?
alarma que pueda monitorear una pequea puerta que tenga una bisagra y una charola. Si
se activa una alarma deber sonar si la puerta o la charola se abren. Un LED de estado
deber iluminarse verde cuando la alarma no est preparada, y rojo cuando se active. El
prototipo controlado por computadora debe activarse y desactivarse. Se deber incorporar
un retardo de tiempo despus que el dispositivo se ha activado para permitirle al usuario
que cierre el gabinete.
Especificaciones
Adems de la descripcin funcional, las especificaciones tipicamente toman en
consideracin muchos aspectos que la propuesta debe incluir: costo, consumo de energa,
voltaje de alimentacin, dimensiones, peso, volumen de la bocina, y algunos otros
detalles.
Diseo Inicial
Frecuentemente, el diseo inicial incluye tormenta de ideas para que las aproximaciones
puedan resolver el problema de diseo, y muchas de estas ideas tienen que verificarse
para saber si son verdaderamente realizables. Otras porciones del diseo podran
involucrar partes normalizadas o comunes y practicas de diseo. Nuestra micro alamarma
cae en esta categora, al menos en el prototipo. Se deber colocar un botn push en el
gabinete para que cuando la charola se cierre presione al botn push. El LED bicolor es
un indicador familiar y tambin la bocina piezo elctrica es una bien conocida generadora
de ruido de alarma.
Entonces, ahora conocemos los circuitos que necesitamos para nuestro prototipo gabine
de micro seguridad: LED bicolor, botn push, potenciometro y bocina piezo. La siguiente
es una lista de los capitulos y actividades donde presentamos cada uno de estos circuitos:
LED bicolor: Captulo 2, Actividad #5
Botn push: Captulo 3, Actividad #2
Potenciometro: Captulo 5, Actividad #3
Bocina piezo: Captulo 8, Actividad #1
Lista de Partes de la Alarma
Juntando el material de cada capitulo estas forman en conjunto la lista de partes:
Tres Resistores de 220 (rojo-rojo-caf) Una Bocina piezo
Un Resistor 10 K (caf-negro-naranja) Un Capacitor de 0.01F
Un LED bicolor , Un potenciometro de 10 K
Un Botn push normalmente abierto , Cuatro Alambres para puentes
Realizando sus Propios Inventos Pgina 315
Esquemtico de la Alarma del Gabinete
El esquemtico de la Figura 10-2 est arreglado para darle a todos los componentes
plenitud de espacio en la tablilla, de tal forma de no todos las conexiones de los pines
estn en la misma forma como estuvieron el los captulos anteriores.
Recuerde esto cuando descargue los ejemplos de los cdigos de los captulos anteriores
para verificar cada uno de los circuitos.
Figura 10-2 Esquematico del Prototipo del Sistema de Alarma.
Pgina 316 Qu es un Microcontrolador?
ACTIVIDAD #2: CONSTRUYA Y VERIFIQUE INDIVIDUALMENTE CADA
CIRCUITO
Siempre que le sea posible, verifique individualmente cada subsistema antes de tratar
hacerlos trabajar en conjunto. Si usted sigue esta regla, sus proyectos funcionaran mejor y
le ahorraran mucho tiempo al buscar fallas. Por ejemplo, si todos los circuitos se
construyen sin verificar, las personas tienen una tendencia natural de emplear mucho
tiempo examinando el cdigo y olvidan verificar cada circuito
Entonces, el ahorro ms importante de tiempo con este procedimiento es asegurarse que
no hay errores en el circuito que traten de hacerle pensar que son errores de cdigo.
Construyendo y Verificando Cada Circuito
Esta actividad demuestra concentrarse en subsistemas individuales construyendo y
verificando cada circuito. Depues que se ha construido y verificado el circuito botn
push, construimos y verificamos el circuito de la bocina. Despus repetimos este proceso
con el potenciometro y el LED bicolor, los circuitos estarn correctos y listos para
aplicarles el programa
Busque el cdigo del Captulo 3, Actividad #2 para adaptarlo a las pruebas que
muestra la Figura 10-2 del circuito botn push.
Cambie las referencias de los pines de E/S para que trabajen con el circuito de la
Figura 10-2
Verifique el cdigo y corrija cualquier error de programa o alambrado antes de
continuar.
Repita el mismo proceso para:
o El circuito de la bocina piezo del Captulo 8, Actividad #1.
o El circuito del potenciometro del Captulo 5, Actividad # 3
o El circuito del LED bicolor del Captulo 2, Actividad # 5
Asegurese de guardar cada programa modificado bajo un nuevo nombre, de
preferencia en una carpeta separada , puede ser de nombre WAM Captulo 10
Su Turno Prueba del Sistema
Ahora que todos los circuitos estn verificados y todos los programas de prueba
guardados en su PC, es hora de construir una prueba del sistema que muestre mensajes
del circuito que se est verificando y ejecute su cdigo de prueba. Este es un ejercicio til
porque los sistemas de alarma tpicos tienen auto-prueba y modos de diagnstico que
utilizan todas las caracteristicas en un rutina.
Realizando sus Propios Inventos Pgina 317
Combine elementos en sus programas de prueba en un slo programa que:
o Comience mostrando el color del LED bicolor en la Terminal Debug y
actualice el color...
o Luego muestre un mensaje que indique el sonido de la bocina piezo
mientras emite beeps..
o Finalmente meta un bucle que reporte repetidamente el sensor botn
push de la charola y el sensor de la puerta del potenciometro con bisagra
que sense su status en la Terminal Debug.
Pruebe y corrija cualquier error que exista antes de continuar.
ACTIVIDAD #3: ORGANICE LAS TAREAS DE SUS CDIGOS EN PIEZAS
PEQUEAS
As como cada circuito debe construirse y verificarse antes de hacer que trabajen en
conjunto, cada carcteristica del cdigo tambin debe desarrollarse y verificarse
individualmente antes de incorporarlos en una aplicacin grande. El programa
MicroAlarmProto(Dec-009).bs2 es un ejemplo de un programa pensado en verificar un
concepto. La interface del usuario de la Terminal Debug est siempre presente y el
sistema de alarma se repite correctamente a travs de sus varios modos o estados,
incluyendo no preparada, preparando, preparada y accionada.
En este punto, la subrutina Alarm-Arming al final del programa est todava en
construccin. Contiene el cdigo que activa la alarma si se libera el botn push, y esto
indica que la charola se ha abierto, pero todava no monitorea la puerta bisagrada. Se
requiere agregar el cdigo del potenciometro a la subrutina Check-Sensors que mide su
posicin. Si su posicin est ms alla de cierto umbral, por ejemplo 15, la variable state
deber cambiar a activado. Todava hay dos tareas adicionales para cambiar el color del
LED bicolor en verde cuando la alarma no est preparada, y en rojo cuando se active.
Estas tareas faltantes estn indicadas por comentarios en el cdigo semejante a esto:
Hacer: El LED bicolor verde
...
Hacer: El LED bicolor rojo
...
Hacer: Verificar si el potenciometro est arriba del
valor de umbral. Si est, entonces, disparar la alarma.
Meta a mano el programa MicroAlarmProto(Dev-009) en el Editor de BASIC
Stamp (recomendado) o descarguelo de www.parallax.com/go/WAM y bralo
con el editor del BASIC Stamp..
Pgina 318 Qu es un Microcontrolador?
Examine el programa y observe que cada subrutina es modular, y hace un trabajo
especfico. Esto es parte de organizar las tareas de los cdigos en piezas
pequeas.
Si no recuerda como usar las ventanas Transmitir y Recibir de la Terminal
Debug, repase la Figura 9-9.
Cargue el programa MicroAlarmProto(Dev-009) en el BASIC Stamp y use la
ventana Transmitir de la Terminal Debug para escribir el caracter A para activar
la alarma, y D para desactivar la alarma. El sistema hace una pequea cuenta
descendente antes de activar la alarma. Asegurese de mantener presionado el
botn push antes de activar la alarma.
Cuando la alarma est preparada, libere el botn. Usted tendr una oportunidad
de desactivar la alarma despues de unos pocos segundo del tono de alarma.
Active nuevamente la alarma. Esta vez escriba D para desactivar la alarma
antes de liberar el botn.
' -----[ Title ]-----------------------------------------------------------
'Qu es un Microcontrolador? - MicroAlarmProto(Dev-009).bs2
'Prueba del Sistema de Alarma.
' {$STAMP BS2} ' Target = BASIC Stamp 2
' {$PBASIC 2.5} ' Language = PBASIC 2.5
' -----[ Constantes ]-------------------------------------------------------
NotArmed CON 0 ' Estados del Sistema de Alarma
Arming CON 1
Armed CON 3
Triggered CON 4
' -----[ Variables ]-------------------------------------------------------
seconds VAR Word ' El contador almacena segundos
counter VAR Byte ' Para el conteo
char VAR Byte ' Almacena Caracteres
state VAR Nib ' Almacena los estados del sistema de alarma
' -----[ Initializacin ]--------------------------------------------------
PAUSE 1000 ' Espera 1 segundo
DEBUG "Program running..." ' Muestra mensaje Ejecutandose
state = NotArmed ' Inicializa los estados de alarma
' -----[ Rutine Principal ]------------------------------------------------
DO ' Bucle Principal
SELECT state ' Evalua los estados caso por caso
CASE NotArmed ' Si estado = no preparada
' To-do: bicolor LED green
GOSUB Prompt_to_Arm ' Llama a Prompt_to_Arm
CASE Arming ' Si estado = Preparando
GOSUB Alarm_Arming ' Llama a Alarm_Arming
CASE Armed ' Si estado = Armed
Realizando sus Propios Inventos Pgina 319
' To-do: bicolor LED red
GOSUB Check_Sensors ' Llama Check_Sensors
GOSUB Prompt_to_Disarm ' Llama Prompt_to_Disarm
CASE Triggered ' Si estado = Triggered
GOSUB Alarm_Triggered ' Llama a Alarm_Triggered
ENDSELECT ' Hecho evaluaando caracter
LOOP ' Repite el Bucle Principal
' =====[ Subrutinas ]=====================================================
' -----[ Subrutina - Prompt_To_Arm ]--------------------------------------
Prompt_to_Arm:
DEBUG CLS, "Type A to arm", CR, ">" ' Muestra Mensaje
GOSUB Get_User_Input ' Llama Get_User_Input
RETURN ' Regresa desde Prompt_to_Arm
' -----[ Subrutina - Prompt_to_Disarm ]-----------------------------------
Prompt_to_Disarm:
DEBUG CLS, "Type D to disarm", CR, ">" ' Muestra Mensaje
GOSUB Get_User_Input ' Llama a Get_User_Input
RETURN ' Regresa desde Prompt_to_Disarm
' -----[ Subrutina - Alarm_Arming ]---------------------------------------
Alarm_Arming:
DEBUG CLS, "Close the cabinet.", ' Alerta usuario a asegurar gabinete
CR, "You have"
FOR seconds = 8 TO 0 ' Cuenta descendente segundos restantes
DEBUG CRSRX, 9, DEC seconds, CLREOL, 'Muestra tiempo restante
" seconds left..."
PAUSE 1000 ' Espera 1 segundo
NEXT ' Repite conteo descendente
state = Armed ' Fija estado de variable en Preparada
RETURN ' Retorna desde Alarm_Arming
' -----[ Subrutina - Alarm_Armed ]----------------------------------------
Alarm_Armed:
DO ' Bucle Preparada
GOSUB Prompt_To_disarm ' Checa entrada de usuario
GOSUB Check_Sensors ' Checa sensores
LOOP UNTIL state <> Armed ' Repite hasta estado no preparada
RETURN ' Regresea desde Alarm_Armed
' -----[ Subrutina - Alarm_Triggered ]------------------------------------
Alarm_Triggered:
DO ' Bucle Alarma activada
DEBUG CLS, "Alarm triggered!!!" ' Muestra precauciones
FOR counter = 1 TO 15 ' Suenan 15 tono de alarma
FREQOUT 6, 100, 4500
PAUSE 100
NEXT
FOR seconds = 1 TO 6 ' 3 segundo.para que usuario desprepare
IF state <> triggered THEN EXIT
GOSUB Prompt_to_Disarm
Pgina 320 Qu es un Microcontrolador?
NEXT
LOOP UNTIL state <> triggered ' Repite hasta despreparar' -
-[ Subrutina - Get_User_Input ]-------------------------------------
Get_User_Input:
char = 0 ' Limpia variable char
SERIN 16, 84, 500, Timeout_Label, [char] ' Espera 0.5 s. para
GOSUB Process_Char ' Presionar Tecla, si presiona, llama: Process_Char
Timeout_Label: ' Si no presiona , brinca Llama
RETURN ' Regresa desde Get_User_Input
' -----[ Subrutina - Process_Char ]---------------------------------------
Process_Char:
SELECT char ' Evalua caracter caso por caso
CASE "A", "a" ' Si "A" o "a"
state = Arming ' Cambia estado var a Preparando
CASE "D", "d" ' Si no "D" o "d"
state = NotArmed ' Canbia estado var a No Preparada
CASE ELSE ' si no, no "A", "a", "D", "d"
DEBUG "Wrong character, try again" ' Muestra mensaje error
PAUSE 2000 ' Da a usuario 2 sec.para leer
ENDSELECT ' Hecho con evaluando caracter
RETURN ' Regresa desde Process_Char
' -----[ Subrutina - Check_Sensors ]--------------------------------------
Check_Sensors:
' To-do: Checa so Potenciometro esta arriba del valor de umbral.
' Si s, entonces, alarama disparada
IF IN0 = 0 THEN state = Triggered ' Boton suetp? Dispara alarma.
RETURN ' Regresa desde Check_Sensors
Nuevas Tcnicas de Codificacin en el Cdigo Ejemplo
De una mirada al bucle FOR...NEXT en la subrutina Alarm-Triggered:
FOR seconds = 1 TO 6
IF state <> triggered THEN EXIT
GOSUB Prompt_to_Disarm
NEXT
Si una llamada a la subrutina the Prompt_to_Disarm genera un cambio en la variable
state. La frase IF...THEN usa EXIT para salir del bucle FOR...NEXT antes que se hagan
6 repeticiones.
Aparece una nueva instruccin llamada SERIN en la subrutina Get_User_Input. Las
instrucciones DEBUG Y DEBUGIN son versiones especiales de las instrucciones ms
generales SEROUT y SERIN. Para ver como trabajan trate de reemplazar la instruccin
DEBUG Programa Ejecutandose... con SEROUT 16, 84, [Programa Ejecutandose...].
A diferencia de las instruccins DEBUG y DEBUGIN, SEROUT y SERIN pueden
Realizando sus Propios Inventos Pgina 321
comunicarse con cualquier pin de E/S, o con el pin 16 para comunicarse con la Terminal
Debug. Ellas tambin tienen cdigos especiales que usted puede usar para seleccionar la
velocidad de los bauds que se describen en la Tablas de Velocidad de Bauds en las
instrucciones SERIN y SEROUT que estn en el Manual BASIC Stamp.
Get_User_Input:
char = 0
SERIN 16, 84, 500, Timeout_Label, [char]
GOSUB Process_Char
Timeout_Label:
RETURN
La subrutina Get_User_Input empieza fijando la variable char a 0 para limpiar los valores
anteriores que char podra haber almacenado. Luego, ejecuta la instruccin SERIN, con el
valor opcional Timeout con valor de 500 ms (medio segundo), y su etiqueta opcional
timeout con su valor asociado a Timeout_Labe1, que est dos lneas abajo. Si la
instruccin SERIN recibe un carcter dentro de los 500 ms, almacena el resultado en la
variable char y se mueve a la siguiente lnea y esta llama a la subrutina Process_Char. Si
no recibe un carcter dentro de los 500 ms brinca a Timeout_Label que hace que brinque
sobre la llamada a subrutina.
Su Turno Pasos Siguientes hacia la Demostracin del Concepto
Es tiempo de hacer que este programa funcione como Demostracin del Concepto.
Guarde una copia del programa MicroAlarmProto(Dev-009).bs2 con el nonmbre
MicroAlarmProto(Dev010).bs2.
Use segmentos de sus cdigos verificados de la Actividad #2 para completar los
tres Todo
Verifique su cdigo modificado, y cuando est trabajando correctamente, guarde
una copia del programa con el nombre MicroAlarmProto(Dev-011),bs2.
ACTIVIDAD #4: DOCUMENTE SU CDIGO!
El programa MicroAlarmProto(Dev-011).bs2 no est completamente terminado porque
todava necesita alguna documentacin y otros cambios que hagan que el programa sea
fcil de modificar y mantener.
Por ejemplo, en la subrutina Alarm_Triggered, la instruccin FREQOUT, 6, 100, 4500
tiene algunos codificadores llamados nmeros misteriosos Los nmeros misteriosos
son valores que se usan en una forma que el observador casual podra no ser capz de
reconocer facilmente. Usted podra reescribir esta instruccin como FREQOUT,
Pgina 322 Qu es un Microcontrolador?
SpeakerPin, BeepTime, AlarmTone. Entonces usted puede agregar directivas Pin en la
seccin arriba de la seccin Constants y declarar SpeakerPin PIN 6. Tambin en la
seccin Constants, declare BeepTime CON 100, y AlarmTone CON 4500.
En un programa dado cada constante no tiene que tener nombre. Recuerde que los
nmeros misteriosos son valores que se usan en una forma que el observador casual
podra no ser capz de reconocer facilmente. Otro ejemplo de la subrutina
Alarm:Triggered es:
FOR seconds = 1 TO 6 ' 3 sec. for user to disarm.
Los nmeros 1 y 6 no son nmeros misteriosos porque es muy claro que hacen que el
bucle FOR...NEXT se repita seis veces, y el comentario a su derecha indica que seis
repeticiones duran por tres segundos. No todos los supervisores pueden estar de acuerdo
con esta interpretacin, y algunos podran proclamar que el 1 y el 6 son nmeros
misteriosos. Si usted termina de codificar su trabajo y a su jefe le gusta nombrar todas las
constantes, eso es probablemente una buena idea para adjuntar a su estilo de codificacin
requerido.
Vaya al programa MicroAlarmProto(Dev-011).bs2 y documente los nmeros
misteriosos declarando las directivas pin y las constantes, y sustituya sus
nombres por nmeros en el programa.
Una excepcin en las directivan PIN es el argumento Pin de la instruccin
SERIN, que debe declararse como una constante y no como un pin. Los
argumentos Pin son para pines E/S y su rango esde P0 a P15. El argumento 16 en
el Pin hace que la instruccin SERIN escuche al pin SIN del mdulo BASIC
Stamp que est conectado en el puerto de programacin de su tablilla.
Otra rea donde la documentacin de MicroAlarmProto(Dec011).bs2 que todava est
debil es en los comentarios que explican cada rutina y subrutina. Cada subrutina deber
tener comentarios que expliquen lo que hace, las variables de las que depende para hacer
su trabajo, y cualquier variables que la subrutina use para almacenar resultados antes de
que regrese (RETURN). Este es un ejemplo de una buena documentacin agregada al
principio de la subrutina Process_Char.
' -----[ Subroutine - Process_Char ]---------------------------
'
' Actualiza el estado de variable basedo en el contenido de la
' variable char. Si char contiene "A" o "a", la constante
Armed
' se almacena en state. Si char contine "D" or "d",
Realizando sus Propios Inventos Pgina 323
' la constante NotArmed se almacena en state.
'
Process_Char:
'... aqui se omite el cdigo
RETURN ' Regresa de...
Actualice las descripciones entre los ttulos de la subrutina y sus etiquetas, y tambin
reptalo para la rutina principal. Cuando lo haya hecho, guarde una copia de su cdigo
con el nombre MicroAlarmProofOfConcept(v1.0).bs2
Guarde Copias e Incremente el Nmero de Version despus de Cada Cambio
Pequeo
Asegurese de continuar guardando copie de su cdigo con cada ajuste pequeo. Esto
facilita tomar tomar pequeos pasos hacia atrs para trabar su cdigo si sus cambios le
causan errores. Por ejemplo, antes de su siguiente modificacin, guarde el archivo como
MicroAlarmProofOfConcept(v 1.01) o quiz v1.01. Cuando su prxima caracteristica
quede completamente implementada escoja un paso razonable de su versin. Si es una
revisin pequea , trate con v1.1; si es una revisin grande llevela a v2.0
ACTIVIDAD #5: DELE A SU APLICACIN MARAVILLOSA NUEVAS
FUNCIONES
Como mencionamos anteriormente, cada circuito con el que usted ha trabajado en este
texto es realmente un ejemplo de un grupo de componentes y mdulos con los que el
BASIC Stamp puede interactuar en la misma forma. La Figura 10-3 muestra algunas
substituciones de partes que usted podra hacer para convertir su actual minisistema de
seguridad en uno que proteja un objeto localizado en la abertura. Este sistema modificado
puede detectar movimientos en el cuarto, y tambien proteger si alguien levanta un objeto
que usted desea proteger.
El botn push que genera salidas high-low: reemplacelo por un Sensor de
Movimiento PIR
El potenciometro: Resistor Variable reemplacelo con un Sensor FlexiForce
Sensor
El sensor PIR detecta cambios de patrones de luz pasiva infrarroja en el rea circundante
y manda una seal high para indicar que ha detectado movimiento, o una seal low para
indicar que no hay movimiento. La resistencia del sensor FlexiForce vara con la fuerza
aplicada en en punto redondo que est en un extremo (por ejemplo un objeto arriba de l)
y puede medirse el tiempo en un circuito RC utilizando la instruccin RCTIME.
Pgina 324 Qu es un Microcontrolador?
Figura 10-3 Sensores para actualizar nuestro Mini Sistema de Alarma
Vaya a www.parallax.com y escriba motion detection en el campo Search, y
haga click en el botn Go
Busque Sensor PIR en resultados de bsqueda y vaya a su pgina de productos.
Descargue la documentacin (en PDF) del Sensor PIR y opcionalmente vea el
video de Sensor PIR. El PDF estar en la pgina seccin de Descargas.
Lea las explicaciones de la documentacin, el esquemtico y el cdigo ejemplo
PIR_Simple.bs2. Podra usted sustituir este sensor por el botn push?
Regrese a resultados de bsqueda (o regrese a la pgina principal de Parallax) y
escriba pressure en el campo Search y siga la liga del sensor FlexiForce.
Encuentre la documentacin de FlexiForce y el Cdigo Fuente (zip).
En un archivo descomprimido, abra y lea la documentacin, esquemtico y el
cdigo fuente de FlexiForceSimple.bs2. Podra usted sustituir este sensor por el
potenciometro?
El ejemplo paso a paso que demuestra como mejorar tanto en esta como en la
siguiente actividad que puede usted incorporar en la aplicacin de su Micro Alarma,
est en Stamps in Class MiniProyectos en la liga www.parallax.com/Education
ACTIVIDAD #6: COMO RESOLVER DISEOS DIFICILES
Ahora que sabe con certeza que hacer con Qu es un Microcontrolador? uno de los
pasos ms importantes siguientes que puede tomar es encontrar respuestas a tareas que no
sabe como resolver con su microcontrolador. Estos son los pasos generales:
Paso 1: Busque componentes o circuitos que podran resolver su problema.
PIR Motion
Sensor
FlexiForce Sensor
Realizando sus Propios Inventos Pgina 325
Paso 2: Lea sobre los componentes o circuitos, y encuentre como funcionan.
Ponga atencin especial en como necesitara el BASIC Stamp
interactuar con los componentes/circuitos.
Paso 3: Verifique para saber si el cdigo ejemplo es adecuado para el circuito
o componente. Esto le permitir con facilidad incorporarloen su
aplicacin.
Digamos que el siguiente paso en su proyecto es mostrar el status del sistema sin
conexin a la computadora. Este es un ejemplo de cmo podra encontrar y evaluar un
componente para su aplicacin.
(Paso 1) Vaya a www.parallax.com y escriba display en el campo Search.
Desde la pgina principal usted podra necesitar hacer click en el botn Go en
lugar de solamente presionar Enter. Ve a las pginas de producto de los varios
tipos de resultados en la bsqueda y mira si puedes encontrar uno que sea
relativamente barato y capz de mostrar un par de lneas de texto. Si te decidiste
por la LCD 2x16 Serial de Parallax como muestra la Figura 10-4 es una buena
eleccin y ests en el camino correcto.
Figura 10-4
Parallax 2x16 Serial LCD
(Paso 2) Ve a pgina de productors LCD 2x16 Serial de Parallax. Si an no lo
haces, lee la descripcin del producto. Luego encuentra la liga al PDF de la
documentacin de la LCD 2x16 Serial de Parallax. Lo encontrars en la pgina
Descargas y Seccin de Recursos, probablemente marcada Parallax Serial 2x16
LDC Documentation v2.0 (pdf). El nmero de la versin podra ser mayor por el
tiempo que ha pasado.
(Paso 3) Verifica por ejemplo el cdigo en la documentacin en PDF de
Parallax Serial 2x16 LCD as como tambin en las ligas del producto en
Descargas y Seccin de Recursos de la pgina web. Busca un bonito, corto y
simple programa ejemplo que muestra un mensaje de texto porque esto
generalmente proporciona un un punto de inicio.
Pgina 326 Qu es un Microcontrolador?
Despus de la breve introduccin a SERIN y SEROUT del programa ejemplo que
siguieron en este captulo, el cdigo de ejemplo de la LCD Serial de Parallax, entonces la
instruccin SEROUT te parecer ms familiar.
Si usted sigue a los Sensores Inteligentes y la liga de Aplicaciones, usted puede bajar
el libro Sensores Inteligentes y Aplicacines que tiene un captulo entero relacionado con el
control de la LCD con su BASIC Stamp 2.
Tres Ejemplos de Muchos Ms.
Los sensores PIR y FlexiForce y el LDC en Serie Parallax, son tres ejemplos de mdulos
y componentes que usted puede usar para incrementar grandemente la funcionalidad de
su prototipo. Estos tres son un granito en arena la playa de lo que existe disponible.
La Figura 10-5 muestra ms mdulos y componentes y todava representan solamente
una pequeo muestra. Los ejemplos en la figura son (a) modulos de RF para
comunicacin por radio, (b) gyro para detectar velocidades de rotacin, (c) brjulas para
encontrar direccin, (d) sensor de vibracin, (e) acelerometro para detectar inclinacin y
cambios de velocidad, (f) sensor ultrasonico para detectar distancias, (g) sensor de
intensidad de luz, (h) controlador servo, (i) controladores de motores DC, (j) arreglo
Darlington para excitar bobina de motores paso a paso, y (k) motores paso a paso. Usted
puede encontrar cualquiera de estos dos dispositivos en www.parallax.com con la clave
bsqueda. Por ejemplo, para encontrar ms acerca de (f) meta sensor ultrasonico en la
pgina principal de Parallax, en el campo Search y de click en el botn Go.
Realizando sus Propios Inventos Pgina 327
Figura 10-5 Ms ejemplos de Modulos y Accesorios
Su Turno Investigando Ms Recursos
Si usted tiene un proyecto en mente y necesita encontrar un circuito o un cdigo para
soportar una de las caracteristicas de su proyecto, el procedimiento de bsqueda antes
analizado le proporciona un buen punto de inicio,
Pero solamente si se encuentra en la pginas de productos de www.parallax,com y ah
hay un nmero de preguntas de diseo que las pgina del producto no resuelven
necesariamente. Afortunadamente, hay muchos recursos, incluyendo:
Libros en PDF Stamp in Class
Documentacin en PDF de Productos Parallax
Columnas de BASIC Stam en la Revista Nuts and Volts.
Respuestas en preguntas y artculos en forums.parallax.com
Artculos de BASIC Stamp publicados en Internet
Cuando usted est buscando componentes e informacin acerca de cmo usarlos con el
BASIC Stamp, esto cae en la categoria de application information. Cuando est
buscando informacin de aplicacin, es mejor empezar con el sitio web del fabricante, y
luego expandir la bsqueda que incluyan los forums, y si usted todava no ha encontrado
a
Motor Control
b
c
d
g
f
e
h
i
j
k
Communication Sensors
Pgina 328 Qu es un Microcontrolador?
una buena solucin expandala ms para que incluya la WWW. La Figura 10-6 muestra
un ejemplo de Google las palabras claves de bsqueda son infrarojo y remoto en
documentos PDF y pginas de productos en www.parallax.com. Aqu la parte importante
es que Google busca documentos PDF en lugar de slo pginas de productos. Asegurese
que no hay espacios en el sitio: www.parallax.com
Figura 10-6
Buscador Google del
sitio www.parallax.com
Usted puede moficicar la bsqueda para incluir preguntas y respuestas en los forum de
soporte de Parallax cambiando www a forums como esto:
infrared remote site: forums.parallax.com
Esto busca todas las preguntas, respuestas y artculos cortos que contengan las palabras
infrarojo y remoto en los forums parallax.com. Para encontrar una aplicacin
especfica del BASIC Stamp, cambie su bsqueda en los terminos de abajo. Asegurese
que las palabras BASIC Stamp estn con comillas porque esto filtrara resultados de
colecciones por correo.
Este es un resumen de la secuencia de busqueda en Google para BASIC Stamp infrared
remote
Sitio remoto infrarojo: www.parallax.com
o Busquedas para los trminos infrarojo y remoto en PDF y pgina de
productro en www.parallax.com
Sitio remoto infrarojo: forum parallax.com
o Busquedas para los trminos infrarojo y remoto en discusiones en
forums parallax.com
Remoto Infrarojo BASIC Stamp
o Busquedas en la web para las palabras infrarojo y remoto en la
misma pgina o PDF con la frase BASIC Stamp
Digamos que el siguiente paso para su proyecto Micro Alarma es un teclado, pero la
documentacin y ejemplo en una sola bsqueda en pgina de productos en parallax.com
lo llevo a ejemplos de circuitos y cdigos esparcidos. Entonces hagamos las busquedas
Realizando sus Propios Inventos Pgina 329
con ms orden, digamos que una busqueda en Google en el sitio de Parallax para todas
las referencias a teclados. Recuerde qe Google incluye documentos PDF.
Vaya a www.google.com
Escriba teclado site: www.parallax.com en el campo de Busqueda y luego
presione Enter.
Los resultados pueden requerir algo de paciencia y persistencia para pasar, y muchas
pginas de resultados. Hay generalmente suficiente de un parrafo de cada resultado de
bsqueda para tener algn contexto de cada liga. Esto le dar alguna idea de cuales
brincar y cuales mirar con atencin. Despus de unas pgina, usted podra encontrar y
seguir una liga de Partes del Kit de IR Remoto como lo muestra la Figura 10-7. Esto
podra no ser solucin a lo que usted esperaba, pero despus de examinar el precio, la
documentacin, y el cdigo ejemplo, podra tener mucho potencial para reforzar su
sistema de seguridad con teclado.
Figura 10-7 Partes del Kit de IR Remoto
Si despues de todo esto, usted todava no ha encontrado la informacin que necesita, es
tiempo de preguntar en los forums parallax.com. Cuando usted les manda una pregunta,
la vern expertos en una variedad de disciplinas, maestros, hobistas y estudiantes. La
habilidad de los expertos de los Forums Parallax tendrn la capacidad de ayudarle a
superar los problemas de su diseo difcil.
Memoria del Procesador y Rapidez de los Diseos Difciles
En algunos casos, los programas para proyectos grandes pueden crecer mucho y exceder
la memoria de programa del BASIS Stamp. Este diseo difcil puede algunas veces
resolverse reescribiendo el cdigo que haga el mismo trabajo con menos instrucciones.
Otra opcin es elegir un modelo de BASIC Stamp con memoria de programa ms grande.
En otros casos, el proyecto podra involucrar almacenar ms valores de variables que el
BASIC Stamp puede guardar. Tambin hay modelos de BASIC Stamp 2 con
caracterstica de borrado para los valores de variables RAM. Otros proyectos podran
Pgina 330 Qu es un Microcontrolador?
necesitar hacer ms tareas en menor tiempo para las que BASIC Stamp fue diseado,
algunos modelos de BASIC Stamp estn diseados con velocidades rpidas de
procesamiento.
La Figura 10-8 muestra todos los diferentes modelos del BASIC Stamp. Para detalles de
cada uno vaya a Comparacin de Modulos BASIC Stamp en la liga
www.parallax.com/basicstamp.
Figura 10-8 Linea completa de Modelos BASIC Stamp
From left: BS1, BS2, BS2e, BS2sx, BS2p24, BS2p40, BS2pe, BS2px
BS1: Confiable y Capz, perfecto para proyectos pequeos o espacios limitados.
BS2: Ideal para principiantes con muchos recursos de code; es el ncleo de Stamps
en programas en Clase..
BS2e: Perfecto usuarios BS2 que necesitan mas espacio de programa y variables.
BS2sx: Soporta el conjunto de instrucciones the BS2 con ms variable y espacio de
programa y ms de dos veces la velocidad de ejecucin .
BS2p24: Adems de ms velocidad y espacio de variables, las instrucciones especiales
soportan el poleo de pines E/S, LCD de caracteres, y comunicaciones de I
2
C 1-
alambre.
BS2p40: Todas las caractersticas de BS2p24 con un puerto adicional de16 pines de
E/S.
BS2pe: Soporta el conjunto de instrucciones del BS2p24 y adems es de muy bajo
consumo de potencia y ms memoria para apliciones de adquisicin de datos.
BS2px: Es el mas velox de los modelos BASIC Stamp soport todas las instrucciones
del BS2p24 , ms caracteristicas especiales de configuracin de pines E/S.
Un concepto en recordar es que si usted sube a un modelo ms rpido de BASIC Stamp
es las diferencias en unidades de las instrucciones dependientes del tiempo como
RCTIME y FREQOUT. Debido a que los diferentes modelos de procesadores corren a
Realizando sus Propios Inventos Pgina 331
diferentes velocidades, las unidades de Duration y Frequency y otros argumentos podran
ser diferentes. Por ejemplo, cuando el BS2 ejecuta FREQOUT 6, 100, 4500 manda un
tono agudo de seal de alarma a P6 durante 100 ms (1/10 de segundo) a una frecuencia de
4500 Hz. Cuando el mismo comando lo ejecuta un BS2px manda un tono que solamente
dura 16.6 ms a una frecuencia de 27,135 Hz, que es un tono mucho ms alto e incluso no
lo escucha el oido humano! La descripcin completa de cmo funciona cada una de las
instrucciones de cada modelo y las sugerencias de conversin de programas BS2 de un
modelo a otro las encuentra en la ayuda: BASIC Stamp Editor Help.
Procesamiento en Paralelo de Alto Rendimiento
Algunas aplicaciones complicadas requiren agilidad de procesamiento y memoria que
est ms alla de las capacidades de la lnea BASIS Stamp 2. Estas son la clase de
proyectos por la que fue diseado el Microcontrolador Propeller. Este poderoso y unico
microcontrolador tiene ocho procesadores de alta velocidad en un solo chip, adems 32
pines de E/S y una memoria de programa RAM muy grande. Sus 8 procesadores puede
trabajar al mismo tiempo, en forma independiente o en forma compartida, comparten el
acceso a la memoria global y al sistema de reloj. Cada procesador tiene su propia
memoria, hardware adicional para realizar funciones complicadas como monitoreo en alta
velocidad de pines E/S o generacin de seales para una pantalla de TV o computadora.
El Kit Propeller Education que muestra la Figura 10-9 es un buen puento de inicio con el
Microcontrolador Propeller. Este Kit no es necesariamente el mejor siguiente paso
despues de Qu es un Microcontrolador?. Sin Embargo, cuando se da cuenta que sus
proyectos son ms ambiciosos y desafiantes, recuerde al Microcontrolador Propeller y al
Kit Propeller Education.
Figura 10-9
Kit Propeller Education
(izquierda)
Plataforma PE
(derecha)
Pgina 332 Qu es un Microcontrolador?
ACTIVIDAD #7: QU SIGUE?
Ahora que usted est por terminar con Qu es un Microcontrolador? es tiempo de pensar
en lo siguiente por aprender. Antes de continuar, reflexione un momento en lo que ms le
interesa. Algunas categorias generales en la que usted podra investigar incluye:
Robotica
Electrnica
Sensores
Automatizacin
Proyectos Hobi
Ciencias de la Tierra y Mediciones del Clima
Esta actividad genera recursos que usted puede usar para avanzar en cada una de estas
categorias.
Los recursos, kits y componentes que se analizaron en esta actividad eran comunen
cuando este captulo se escribio (Otoo 2009). Las versiones nuevas y mejores, kits y
componentes estn disponibles para reemplazar alguna de las aqu presentadas.
Asegurese de verificar www.parallax.com con la informacin ms reciente.
Cul es la Secuela del Microcontrolador?
La Figura 10-10 muestra libros y kits que arman la mejor secuela de este libro. Robotics
with the Boe-Bot es una agradable y gran experiencia para que usted pueda aplicar
algunas de las tcnicas de este libro a las aplicacione de robtica con el robot deslizante
Boe Bot.
El libro Sensores Inteligentes y Sus Aplicaciones fue escrito para ser la parte 2 de Qu
es un Microcontrolador?. Se le cambi el nombre porque todos los sensores inteligentes
y la pantalla de cristal lquido mostrados en el centro de la Figura 10-10 tienen
coprocesadores que se comunican con el BASIC Stamp. Los coprocesadores los hacen
sensores inteligentes. El libro Comprendiendo las Seales, es grandioso porque le permite
a usted, ver las interacciones entre el BASIC Stamp y los circuitos utilizando un
Osciloscopio Parallax que usted conecta en el puerto USB de su computadora.
Realizando sus Propios Inventos Pgina 333
Figura 10-10 Los Siguientes Grandes Pasos que siguen de Qu es un Microcontrolador?
Ms de Kits Stamps in Class y Libros de Texto
La Figura 10-11 muestra un diagrama de flujo que sintetiza todos los Kits Stamp in Class
y Libros de Texto disponibles en el momento que ste se escribi. Son accesibles a travs
del Programa Stamps in Class. Un vistaso y la liga a los Diagramas de Flujo est en
www.parallax.com/Education, y usted puede dar click en cada imagen para visitar la
pgina del producto del libro y su kit acompaante. Qu es un Microcontrolador? est
hasta arriba a la izquierda en la Figura. Desde ah, el diagrama de flujo indica que usted
puede brincar a Robotica con el Boe-Bot (Robotics with the Boe-Bot) o cualquier
texto/kit de la serie Sensores o Seales.
Descargas completas de Libros de Texto en PDF Usted puede descargar el PDF a todo
color de cada Libro Stamps in Class en www.parallax.com. Haga click en cualquier imagen
de la carta para navegar en la pgina Texto + Kit y usted encontrara el PDF en la pgina
seccin de Descarga.
Smart Sensors
and Applications
Parts and Text
Understanding
Signals Parts
and Text
Boe-Bot Robot Kit
Pgina 334 Qu es un Microcontrolador?
Figura 10-11
Diagrama de
Flujo de Stamps
in Class. {}
Si la categora en la que usted est interesado es:
Robtica, entonces definitivamente el siguiente paso es Robtica con el Boe-Bot.
Proyectos de Sensores, Inventos o Hoby, entonces su siguiente paso podra ser
Sensores Inteligentes y Aplicaciones.
Electrnica (seales), entonces su siguiente paso podra ser Control de Procesos
Ciencias de la Tierra y Mediciones del Clima, entoces su siguiente pasos podra
ser Sensores Aplicados (Originalmente se llamaba Mediciones de la Tierra)
Realizando sus Propios Inventos Pgina 335
Recursos Adicionales de Stamp In Class
Arriba y Adelante que son los libros de Texto Stamps in Class, En Stamps in Class hay
Mini Proyectos en la liga www.parallax.com/Education. Algunos proyectos utilizan
justamente el stock de partes del los kits pero demuestran nuevas formas para usarlos
junto con nuevos conceptos. Muchos de estos proyectos son como los captulos de los
libros de Texto Stamp in Class, tienen Actividades, Diagramas Esquemticos, Diagramas
de Alambrado listas completas de cdigos que pueden descargarse. Algunos incluso
tienen videos con tutoriales por ejemplo Construya su Propio Mini Temporizador que
puede construirse precisamente con las partes que usted ha estado usando en este libro.
Cualesquiera que sea la informacin que busca, o inspiracin creativa, usted prodr
encontrarla aqu.
Figura 10-12 Ejemplo del Mini Proyecto con Stamps in Class
RESUMEN
Este libro present una variedad de circuitos y tcnicas, todas ellas son bloques de
construccin en productos comunes as como en inventos. Este libro tambin present
tcnicas para juntar los diversos bloques de construccin con el microcontrolador de
Pgina 336 Qu es un Microcontrolador?
BASIC Stamp. Este captulo demostr como incorporar las tcnicas y bloques de
construccin en un prototipo, y tambin recomend algunos de los siguientes pasos para
aprender ms en su rea de interes.
La aproximacin para hacer que el BASIC Stamp interactue con un circuito dado puede
aplicarse a una variedad de circuitos y mdulos que cumplan e incluso sobrepasen sus
tareas. Dos ejemplos aplicados al prototipo de la micro alarma fueron: (1) un sensor de
movimiento con una interface similar a el botn push y (2) un sensor de presin con una
interface similara a la del potenciometro.
Mientras desarrolla el cdigo para su aplicacin, asegrese de guardar su trabajo
frecuentemente bajo nombres de revisin aumentadas. Tambin asegrese de darle
nombres significativos a los pines de E/S y nmeros a las directivas PIN Y CON.
Finalmente, agregue muchos comentarios a su cdigo que expliquen los que hacen y
como lo hacen. Las subrutinas deben incluir comentarios que expliquen que hace la
subrutina junto con sus variables y los con valores que usa para hacer su trabajo, as como
las variables que almacenan los resultados cuando termina la subrutina.
Este captulo tambin present una variedad de tcnicas de investigacin para
implementar caractersticas en su prototipo. Incluso, si al principio no tena idea de cmo
hace que trabaje una carateristica particular, usted puede usar tcnicas de bsquedas para
encontrar el componente til, el circuito y ejemplos de cdigo.
Los libros de texto Stamp in Class y sus kits tienen muchos circuitos y tcnicas tiles de
diseo, y este es un gran lugar para aprender ms en los campos de robtica, sensores,
electrnica, automatizacin, ciencias de la tierra, y ms. Todos los libros de texto que
acompaan a los Kits Stamps in Class se pueden descargar libremente.
Ahora que usted ha llegado al final del libro, reflexione un momento en cuatro ideas: (1)
las tcnicas que usted ha aprendido, (2) su siguiente invento, proyecto o prototipo, (3) lo
que usted ha aprendido aqu que puede aplicarlo en l y (4) que es lo siguiente que quiere
aprender.
Ahora, es tiempo de empezar con su siguiente proyecto o prototipo.
Asegurese de mantenerse estudiando y aprendiendo nuevas tcnicas conforme
avanza.
SEA OPTIMISTA y BUENA SUERTE!
Anexo A: Lista de partes y opciones de kits Pgina 337
Anexo A: Lista de Partes y Opciones de Kits
Libro y Partes del Kit #28152, Slo Partes #28122
Partes y cantidades sujetas a cambio sin aviso
Parallax Part # Descripcin Cantidad
150-01020 Resistor, 5%, 1/4W, 1 k 10
150-01030 Resistor, 5%, 1/4W, 10 k 4
150-01040 Resistor, 5%, 1/4W, 100 k 2
150-02020 Resistor, 5%, 1/4W, 2 k 2
150-02210 Resistor, 5%, 1/4W, 220 6
150-04710 Resistor, 5%, 1/4W, 470 6
152-01031 Potentiometer - 10 k 1
200-01031 Capacitor, 0.01 F 2
200-01040 Capacitor, 0.1 F 2
201-01080 Capacitor, 1000 F 1
201-03080 Capacitor 3300 F 1
28123
Qu es un Microcontrolador? Solo texto
(#28152 )
1
350-00001 LED Verde - T1 3/4 2
350-00005 LED - Bicolor - T1 3/4 1
350-00006 LED Rojo- T1 3/4 2
350-00007 LED Amarillo - T1 3/4 2
350-00027 Indicador de 7-segmentos LED 1
350-00029 Fototransistor, 850 nm, T1 3/4 1
400-00002 Botn Push Normalmente Abierto 2
451-00303 Conector de 3 Pines Macho/Macho 1
500-00001 Transistor 2N3904 1
604-00010 Potenciometro digital de 10 k 1
800-00016 Cables de puentes de 3 Bolsa de 10 2
900-00001 Bocina Piezo r 1
900-00005 Servo Normalizado Parallax 1
Pgina 338 Qu es un Microcontrolador?
OPCIONES COMPLETAS DE KITS
Hay algunas opciones de Kits disponibles que incluyen la Tablilla de Desarrollo del
Microcontrolador BASIC Stam 2 y todos los componentes electrnicos para completar
las actividades de este libro.
El Kit de Actividades BASIC Stamp (# 90005) incluye:
o Una Tablilla BASIC Stamp HomeWork con BS2 de montaje superficial
o Un adaptador USB de USB A a Cable Mini-B (#28031)
o Qu es un Microcontrolador? Libro y Partes (28153)
Kit Discovery BASIC Stam (Serie # 27207 o USB # 27807) que incluye
o Tablilla Board of Education (Serie #28150 o USB # 28850)
o Modulo Microcontrolador BASIC Stamp 2 (# BS2-IC)
o Cable de Programacin (Serial # 800-00003 o USB A MiniB # 805-
00006)
o Qu es un Microcontrolador? Partes y Texto (#28152)
o Manual BASIC Stamp (# 27218)
Que es un Microcontrolador? Texto y Kit de Partes (#28152) ms
Kit Completo Board of Education (Serial # 28103 o USB #28803) que incluye:
o Tablilla Board of Education (Serial # 28150 o USB # 28850)
o Modulo Microcontrolador BASIC Stamp (# BS2-IC)
o Cable de Programacin Cable de Programacin (Serial # 800-00003 o
USB A MiniB # 805-00006)
o Alambres para puente (i paquete de 10)
Un mensaje a los educadores: Descuentos por comprar en cantidad de todos los kits
arriba mencionados: para detalles vea cada pgina de productos del kit en
www.parallax.com. Adems las Tablilla HomeWork est disponible por paquetes de 10
como una solucin econmica para uso en el saln de clases, y cuesta significativamente
menos que la Board of Education ms el mdulo BASIC Stamp 2. Por favor contacte al
Equipo de Ventas de Parallax en (800) 512-1024 para saber los precios por grandes
cantidades.
Anexo B: Ms sobre electricidad Pgina 339
Anexo B: Ms sobre Electricidad
Qu es un electron?? Un electron es una de las tres partes fundamentales del tomo;
las otras dos son el protn y el neutrn. Un o ms protones y neutrones estn juntos en el
centro de la molcula en un rea llamada ncleo. Los Electrones son muy pequeos
comparados con los protones y neutrones, los electrones giran alrededor del ncleo. Los
Electrones se rechazan unos con otros, los electrons y protones se atraen uno con otror.
Qu es carga?? La tendencia de un electrn que repele otro electrn y atraer un protn
cercano se llama carga negativa . La tendencia de un protn a repeler otror protn y
atraer un electron se llama carga positive . Cuando una molcula tiene ms electrones que
protoness, se dice que est cargada negativamente Si una molcula tiene menos
electrones que protones, se dice que est cargada positivamente Si un molcula tiene el
mismo nmero de protones y electrones, se dice que tiene carga neutra.
Qu es voltaje?? Voltaje es como la presin elctrica. Cuando una molcula cargada
negativamente est cerca de una cargada positivamente, el elctrn extra de la molcula
con carga negativa trata de jalar al de la molcula cargada positivamente.. Las Baterias
tienen una sustancia con molculas cargadas negativemente separadas de un compuesto
con molculas cargadas positivamente..Cada uno de estos compuestos est conectado a
una de las terminales de la bateria; el compuesto cargado positivamente est conectado a
la terminal positiva (+) , y el compuesto negativo est conectado a la terminal negativa (-) .
El volt ies una medidad de la presin elctrica, y se abrevia con con letra maysculal V.
Quiz usted ya conoce la bateria de (9 V) usada para proporcionar energa a la Tablilla
Board of Education or HomeWork Board. Otras baterias conocidas son la de 12 V de los
carros y la AA de 1.5 V usadas en calculadoras, juegos portatiles y otros aparatos
Qu es corriente?? Corriente es una medida del nmeor de electrones por segundo que
pasan por un circuito. Algunas veces las molculas ligadas en una reaccin qumica crean
un compuesto (est neutramente cargado). Otras veces los electrones abandonan la
molcula cargada negativamente y se unen a las cargadas positivamente, fluyendo en un
circuito como el que construy y verific . La letra ms usada en libros y diagramas para
referirse a la corriente es I mayscula.
Qu es un ampere?? Un ampere es la unidad bsica de corriente, y se escribe con la
letra mayscula A Con respecto a los circuitos que usa con el BASIC Stamp,un ampere
es una cantidad de corriente muy grande Este es conveniente cuando se referiere a la
cantidad de corriente que la bateria de un carro proporciona a las luces, al ventilador de
enfriamiento y otros aparatos de gran potencia.. El miliamper (mA) y el microamper (A)
son medidas ms convenientes que maneja el mdulo BASIC Stamp en sus pines de E/S y
sus circuitos son de:. 1 mA = 1/1,000 A, y 1 A = 1/1,000,000 A.
Qu es resistencia?? Resistencie es la propiedad de un circuito a oponerse al flujo de
electrones ( corrienet) desde la terminal negativa de una bateria a la terminal positiva .
El ohm es la unidad bsica de resistencia. Ya lo presentamos y se abrevia con la letra
griega Omega ().
Qu es un conducto?r? El alambre de Cobre casi no tiene resistencia, y se llama
conductor.
Pgina 340 Qu es un Microcontrolador?
ACTIVIDAD ADICIONAL: LEY DE OHM, VOLTAJE Y CORRIENTE
Esta actividad es una aplicacin de las definiciones ya analizadas.
Partes para la Ley de Ohm
Un Resistor de 220 (rojo-rojo-caf)
Un Resistor de 470 (amarillo-violeta-caf)
Un Resistor de 1 K (caf-negro-rojo)
Un Resistor de 2 K (rojo-negro-rojo)
Un LED de cualquier color
Circuito de Prueba
El valor de la resistencia Ri en la Figura B-1 puede cambiarse. Resistencias menores
permiten ms corriente a travs del LED, y ste emitir ms brillo. Mayores valores de
resistencia harn que el LED brille menos porque no permite que pase mucha corriente a
travs del circuito.
Desconecte la alimentacin de su Tablilla Board of Education o HomeWork para
que pueda modificar el circuito.
Construya el circuito que muestra la Figura B-1 empezando con un resistor de
220 .
Modifique el circuito reemplazando el resistor de 220 por uno de 470 .
Brill menos el LED?
Repita usando el resistor de 1 K , luego el de 2 K verificando cada vez el
cambio en brillantez.
Anexo B: Ms sobre electricidad Pgina 341
R
1
R
2
R
3
R
4
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
X3
Vdd Vss Vin
Vdd
Vss
LED
R
i
+
R = 220
R = 470
R = 1 k
R = 2 k
1
2
3
4
Figura B-1
Monitor de la Corriente
del LED
Si usted est usando una bateria de 9 V, tambin puede comparar la brillantez de una
fuente Vin, de voltaje diferente. Vin se conecta directamente a la terminal + de la bateria
de 9 V y Vss se conecta directamente a la terminal negativa de la bateria. En nuestro
sistema, Vdd son 5 V regulados. Esto es cerca de la mitad del voltaje de la bateria de 9 V.
Si no est usted usando una bateria de 9 V detengase aqu y brinque a la seccin
de abajo Calculando la Corriente. Si no es as continue.
Comience con el circuito mostrado por la Figura B-1 pero use un resistor de 1
kilo ohm.
Haga una nota del brillo del LED.
Desconecte la alimentacin.
Modifique el circuito desconectando la terminal del resistor de Vdd y conctelo a
Vin.
Cundo volvi a conectar la alimentacin, como brill el LED? Cunto ms
brillante?
Haga el experimento de Vin con un resistor de 220 0 470 , porque le proporcionar al
LED mucha ms corriente que la especificada.
Calculando la Corriente
El Manual BASIC Stamp tiene algunas reglas de cuanta corriente puede proporcionar un
pin de E/S a los circuitos. Si no sigue usted estas reglas, puede terminar daando el
Pgina 342 Qu es un Microcontrolador?
BASIC Stamp. Las reglas indican cuanta corriente le est permitida que proporcione a un
pin de E/S y cuanta corriente pueden proporcionar un grupo de pines de E/S.
Reglas de Corriente de los pines del BASIC Stamp
Un pin de E/S puede proporcionar hasta 20 mA. En otras palabras, si usted manda una
seal HIGH a un pin E/S, ete no deber suministrar ms corriente de 20 mA.
Si usted conecta el LED para que el BASIC Stamp ahora haga que el LED se ilumine
cuando manda una seal LOW el pin puede absorver hasta 20 mA.
Los pines desde P0 hasta P7 solamente pueden proporcionar 40 mA. De igual manera los
pines desde P8 hasta P15 solo pueden proporcionar 40 mA. 40 mA es la corriente mxima
que puede proporcionar el mdulo BASIC Stamp 2 con una fuente regulada de 5 V,
entonces la corriente total que pueden drenar todos los pines de E/S nunca debern
exceder 40 mA. Si usted tiene muchos circuitos de LEDs, usted necesitar resistores
mayores para que los circuitos no drenen mucha corriente.
Para mayor informacin, consulte la Tabla Descripcin de Pines del BASIC Stamp en el
Manual BASIC Stamp.
Si usted sabe calcular la cantidad de corriente que usa su circuito, puede decidir si el
brillo de su LED es el correcto. Cada componente tiene reglas de lo que hace con el
voltaje, la resistencia y la corriente. Para el diodo emisor de luz, la regla es un valor que
se llama polarizacin en sentido directo del diodo. Para el resistor, la regla se llama Ley
de Ohm. Tambin hay reglas para saber cuanta corriente y voltaje se suman en un
circuito. Estas se llaman Leyes de Kirchhoff de Voltaje y Corriente.
Anexo B: Ms sobre electricidad Pgina 343
Vdd Vss = 5 V El voltaje (la presin elctrica) de Vdd a Vss es 5 V. Esto se llama Voltaje
regulado, y trabaja casi igual que una bateria que proporciona exactamente 5 V. (las
baterias no son tipicamente de 5 V, aunque cuatro baterias recargables de nickel cadmio de
1.2 V cada una, en serie nos dan 4.8 V) Las Tablillas Board of Education y BASIC Stamp
HomeWork tienen reguladores de 5 V que convierten la alimentacin de la bateria de 6 a 9
V a un voltaje regulado de 5 V para los conectores Vdd arriba de la Tablilla. El BASIC
Stamp tambien tiene un regulador interconstruido que convierte las entradad de 6 a 9 V en
5 V para sus componentes.
Ven Vss = 9 V- Si usted est usando una bateria de 9 V, el voltaje de Vin a Vss es 9 V.
Sea cuidadoso. Si usted est usando un regulador de voltaje que conecta en la pared,
incluso si dice 9 V, este podra ser tan grande como 18 V.
Tierra y/o referencia. Se refiere a la terminal negativa de un circuito, hablando de las
tablillas BASIC Stamp y Board of Education , Vss se considera la referencia a tierra. Vale
cero volts, y si usted est usando una bateria de 9 V, esta es la terminal negativa de la
bateria. La terminal positiva de la bateria es 9 V. Vdd es 5 V (arriba la referenci Vss es 0 V.)
y este es un voltaje especial hecho por un chip regulador de voltaje que suministra al BASIC
Stamp la energa.
Ley de Ohm V = I x R El voltaje medido en las terminales del resistor (V) es igual a la
corriente que pasa a travs del resistor (I) multiplicado por la resistencia del resistor.
Voltaje en Sentido Directo del Diodo Es el voltaje en las terminales del nodo y el ctodo
cuando la corriente pasa por l desde el nodo al ctodo. Para el LED verde del circuito de
la Figura 2-6, usted puede considerar que el voltaje del diodo es de aproximadamente 2.1
V, para hacer sus clculos. Si el LED es amarillo, considere 2.0 v y para el LED rojo
considere 1.7 V. Resistencias menores en serie y/o mayor voltaje aplicado al circuito dan
como resultaddo mayor flujo de corriente. Resistencias mayores en serie y/o menor voltaje
aplicado dan como resultado menor flujo de corriente.
Simplificacin de la Ley de Kirchhoff de Voltaje. Voltaje usado igual a voltaje
suministrado. Si usted alimenta un circuito con 5 v, el nmero de volts en todas las partes
usadas suma 5 V.
Simplificacin de la Ley de Kirchhoff de Corriente. La corriente de entrada es igual a la
corriente de salida. La corriente que entra a un circuito LED desde Vdd es igual a la
cantidad de corriene que sale a travs de Vss. }Tambin, si usted conecta tres LEDs al
BASIC Stamp cada circuito LED drena 5 mA, esto significa que el BASIC Stamp tiene que
suministrar a los tres circuitos un total de 15 mA
Ejemplos de Clculo: Un circuito, Dos Circuitos
Para calcular la corriente que drena un circuito LED rojo, lo hacemos en dos pasos:
1. 1.Calculamos el voltaje en los extremos del Resistor.
2. Usamos la ley de Ohm para calcular la corriente a travs del Resistor.
La Figura B-2 muestra como calcular la corriente en el resistor. El voltaje suministrado a
su izquierda es 5 V. El votaje usado por cada componente est a la derecha del circuito.
Pgina 344 Qu es un Microcontrolador?
El voltaje que no conocemos al principio es Vr, el voltaje en los extremos del resistor.
Pero conocemos que el voltaje en los extremos del LED es 1.7 V. (el voltaje en sentido
directo del diodo emisor de luz). Tambin sabemos que el voltaje en los componentes
suman 5 V de acuerdo con la Ley de Kirchhoff de Voltaje. La diferencia entre 5 V y 1.7
V es 3.3 V, entonces este debe ser el voltaje en los extremos del resistor.
V 3.3 V
V 1.7 V 5 V
V 5 V 1.7 V
R
R
R
=
=
= +
Figura B-2
El voltaje en el
circuito,
Resistor, y
LED
Kilo En el sistema mtrico decimal kilo significa 1000. En el sistema mtrico decimal 1000
se dice kilo, y se abrevia con la letra minscula k. En lugar de escribir 1000 , podemos
escribir 1 K. Y se pronuncia un K. De igual manera 2000 se escribe 2 K .
En el sistema mtrico decimal, mili es 1/1000 is se abrevia con la letra minuscula m. Si el
BASIC Stamp proporciona a un circuito LED 3.3 milesimas de Amper, esto es 3.3
miliamperes o 3.3 mA.
Qu es un mA? Se pronuncia milamper, es la notacin de una milsima de amper. La m
en mA es la notacin mtrica para mili, que es 1/1000 . La A en mA se usa para amperes.
Ponga las dos juntas y tiene miliampers, y es muy til para describir la cantidad de corriente
drenada por el BASIC Stamp y los circuitos que a l se conectan.
Ahora que hemos calculado el voltaje en los extremos del resistor, la Figura B-3 muestra
un ejemplo de usar ese valor para calcular la corriente que pasa por el resistor.
Empezamos con la ley de Ohm; V = R x I. Usted conoce la respuesta de V (3.3 V) y R
(470 ). Ahora despejamos I (la corriente).
Anexo B: Ms sobre electricidad Pgina 345
mA 7.02 I
A
1000
7.02
I
A 0.00702 I
V
0.00702 I
470
V 3.3
I
470 I V 3.3
R I V
=
=
=
=
=
=
Figura B-3
Calculo de la
corriente a travs
del Resistor
Es verdadero! 1 A = 1V / ohm (Un amper es un volt por ohm)
Cunta corriente es 7.02 mA? Es la cantidad de corriente que circula por el circuito LED
de la Figura B-2. Usted puede reemplazar el resistor de 470 y el circuito conducir cerca
de 55 mA, y el LED brillar mucho. Si usted usa un resistor de 1000 , el circuito conducir
3.3 ma y el LED brillar poquito. Un resistor de 2000 har que el LED apenas brille y la
corriente ser 1.65 mA
Digamos que usted desea que un pin E/S encienda dos LEDs al mismo tiempo. Esto
significa que internamente el BASIC Stamp deber proporcionar a los circuitos lo que
muestra la Figura B-4. Podr el circuito exceder la corriente lmite en los pins E/S de 20
mA? Calculemoslo. Recuerde que la versin simplificada de la Ley de Kirchhoff de
Corriente dice que la corriente total drenada por la fuente es igual a la corriente
suministrada a todo los circuitos. Esto significa que I en la Figura B-4 es igual al total de
las dos corrientes que son drenadas. Simplemente sume las dos corrientes drenadas, y la
respuesta ser de 14.04 mA, que se puede redondear como 14.0 mA. Como la corriente
drenada est debajo de el lmite de 20 mA de los pines de E/S, se pueden conectar con
seguridad al pin E/S y conmutar con el BASIC Stamp.
Pgina 346 Qu es un Microcontrolador?
mA mA I
mA mA I
I I I I
i 2 1
0 . 14 04 . 14
02 . 7 02 . 7
...
=
+ =
+ + =
Figura B-4
Corriente
Total
proporcionada
a los dos
Circuitos LED
Su Turno Modificando el Circuito
Repita el ejercicio de la Figura B-2 pero use Vin Vss = 9 V en lugar de Vdd
Vss = 5 V.
Considerando que el voltaje en sentido directo no cambia, la respuesta es Vr = 7.3 V. El
voltaje medido en el resitor probablemente sea menor porque el voltaje en sentido directo
del LED es mayor, porque pasa ms corriente por el circuito.
Repita el ejercicio de la Figura B-3 pero use un resistor de 1 K .
Respuesta: I = 3.3 mA
Use Vr = 7.3 V para hacer el ejercicio en la Figura B-3 con un resistor de 1 K ..
Respuesta: I = 7.3 mA
Repita el ejercicio que muestra la Figura B-4 con un resistor de 470 y el otro
de 1 K ..
Respuesta: I = 7.02 mA + 3.3 mA = 10.32 mA.
Anexo C: Resumen del formato RTTL Pgina 347
Anexo C: Resumen del Formato RTTTL
Este es un resumen que intenta ayudarte a que tenga sentido el formato RTTTL. Las
especificaciones completas del RTTTL las puedes encontrar en varios sitios web. Con
cualquier buscador, usa las palabras clave Especificaciones RTTTL para repasar las
pginas web que incluyan la especificacin.
Este es un ejemplo de un tono en formato RTTTL:
TakeMeOutToTheBallgame:d=4,o=7,b=225:2c6,c,a6,g6,e6,2g.6,2d6,p,
2c6,c,a6,g6,e6,2g.6,g6,p,p,a6,g#6,a6,e6,f6,g6,a6,p,f6,2d6,p,2a6
,a6,a6,b6,c, d,b6,a6,g6
El texto antes de los dos puntos, es lo que el telefono celular muestra como nombre de la
cancin. En este caso el tono se llama:
TakeMeOutToTheBallGame:
Entre los primeros y segundos dos puntos, se introdujeron los ajustes por default usando
d, o, y b. Esto es lo que significan:
d duration
o- octava
b batidos por minuto o tempo.
En TakeMeOutToTheBallGame, los ajustes por default son:
d= 4, o = 7, b = 225:
Las notas de la melodia se meten despues de los segundos dos puntos, y se separan con
comas. Si se usa la letra de la nota, esa nota se tocar con la duracin default in la octava
por default Por ejemplo, la segunda nota de TakeMeOutToTheBallGame es:
,c,
Como no hay otra informacin, se tocar con la duracin default de un cuarto de nota
(d=4), en la sptima octava (o=7)
Una nota puede tener hasta cinco caracteres entre las comas, esto es lo que especifica
cada carcter:
Pgina 348 Qu es un Microcontrolador?
, duracin de la nota bemol punteada, octava,
Por ejemplo:
,2g#.6,
significa toca la media nota G bemol por 1 duracin de la media nota y tcala en la
sexta octava.
Estos son unos pocos ejemplos de TakeMeOutToTheBallGame:
,2g.6, media nota, G, punteada, sexta octava
,a6, duracion de la nota de un cuarto por default. Una nota tocada en la
sexta octava
,g#6, duracin un cuarto, nota g , bemol (escrita como #), sexta octava
El carcter:
,p,
indica pausa, y se usa para los silencios. Sin informacin extra, la p se toca por defaul en
duraciones de un cuarto. Usted podra tambien tocar media nota en forma de silencio
usando:
,2p,
Este es un ejemplo de un silencio punteado:
,2p.,
En este caso el silencio podra durar media nota ms un cuarto de nota.
ndice alfabetico Pgina 349
ndice Alfabetico
- $ -
$ (Hexadecimal formatter), 209
- * -
** (Operador de multiplicacin
alta), 273
*/ (Multipicacin Media), 84
*/ (Operador de Multiplicacin
Media), 273
- : -
:, 45
- ? -
? (symbol = x formato), 45
- 1 -
16-bits error de rollover, 122
- A -
AD5220 digital potentiometer, 296
Adquisicin de datos, 204
Ajuste, 160
Alerta de la Alimenacin, 101
Algoritmo, 86
Amp, 339
AND, 78
Anidando subrutinas, 221
Anode
Indicador de 7-segmentos, 172
Anodo, 30
LED, 30
Apostrofe, 42
Area de Prototipo, 31
Argumentos, 39
Automatizacin, 334
- B -
Base
del Fototransistor, 199
Transistor, 293
Base-2 nmeros, 67
BASIC Stamp, 330
BASIC Stamp 2, 11
Bateria, 34
Batido, 255
Benjamin Franklin, 35
Bicolor LED, 50
Binario, 61
Bit, 45
Bloque de Cdigos, 78
Booleana, 61
Botn
High Activo, 69
BS1, 330
BS2, 330
BS2e, 330
BS2p24, 330
BS2p40, 330
BS2pe, 330
BS2px, 232, 330
BS2sx, 330
Bucle anidado, 253
Pgina 350 Qu es un Microcontrolador?
Bus Paralelo, 179
Byte, 45, 180
- C -
Capacitancia de unin, 238
Capacitor, 145
Capacitancia de unin, 238
Electrolytic, 145
Electrolytic Capacitor Schematic Symbol
and Part Drawing, 146
Polar identificando terminales, 146
Capacitor Electrolitico, 145
Carga, 339
Carga Negativa, 339
Carga Positiva, 339
Catodo, 30
LED, 30
Ctodo
Catodo Comn & indicador de
segmentos, 172
Chip Interpreter, 291
Ciclo, 117
Ciencias de la Tierra y Mediciones
del Clima, 334
Circuito abierto, 62
Circuito cerrado, 62
CLREOL, 169
CMOS, 61
Cdigo de Colores de los
resistores, 29
Cdigo sobrepasado, 84
Colector
del Fototransistor, 199
Comentarios al cdigo, 42
Communication products, 327
Concepto diagrama, 313
Conductor, 339
conectores, 31
Conmutar, 61
Constantes, 162
Contando, 80
Control caracteres. Vea DEBUG
Control Caracteres
Control Caracteres
DEBUG
CR, 25
Controlar, 61
Conversin hexadecimal a
decimal, 207
Corriente, 28, 35, 339
Milamper, 344
CRSRUP, 129
- D -
DATA, 259
DCD, 272
DEBUG, 39
DEBUG Control Caracteres, 129
CRSRUP, 129
DEBUG Control Characters
CLREOL, 169
DEBUG Control de Caracteres
HOME, 76
DEBUG Formato
ndice alfabetico Pgina 351
DEC (Formato decimal), 120
DEBUG formatos
? (symbol = x formato), 45
DEBUG Formatos, 129
$ (Hexadecimal Formato), 209
% (Formato Binario ), 182
DEC (Decimal formato), 209
Debug Terminal
Transmit and Receive Windowpane, 121
DEBUGIN, 120
DEC, 120, 209
Decimal formato DEC, 209
Demostracin del Concepto, 321
Derivacin del Potenciometro, 302
Desbordamiento, 276
Descripcin funcional, 313
Diagrama de Tiempo, 104
diodo, 30
diodo emisor de luz. Vea LED
Diodos Emisores de Luz. Vea LED
DIRH, 180
Disparador Schmitt, 232
Display LCD, 325
Dispositivo Paralelo, 179
Divisor de voltaje, 157
DO...LOOP, 39, 82, 124
DTMFOUT, 255
- E -
Eco, 121
Editor BASIC Stamp, 15
EEPROM, 205
Electron, 34, 339
Emisor
del Fototransistor, 199
Transistor, 293
END, 63
Entero, 273
Error de Rollover, 122
Escalamiento, 160
Especificaciones, 314
Espectro de colores, 198
Esquemtico, 35
Etiqueta, 219
EXIT, 285, 320
- F -
Farads, 166
FlexiForce Sensor, 323
FOR...NEXT, 43
Fotoresistor, 198
Fototransistor, 199
Fraccin, 84
Frecuencia, 248
Frecuencia Dual Muti Tono, 255
FREQOUT, 250, 254
- G -
Google, 328
GOSUB, 218
GOTO, 219
Grado, 101
Graphing software, 215
- H -
hertz, 250
Hertz, 248
Hexadecimal formato $, 209
Pgina 352 Qu es un Microcontrolador?
HIGH, 39, 184
High activo vs. low activo, 69
Histeresis, 230
HOME, 76
Homework board y el circuito
divisor de voltjae RCTIME, 157
- I -
IF...ELSEIF...ELSE, 75
IF...THEN, 78
IF..THEN...ELSE, 71
IN, 67
Indicador de 7 segmentos, 171, 172
Indicador LED de 7 segmentos,
173
Inicializacin de Variables, 82
Insertar, 31
Interferencia, 255
- J -
Jumper del Conector Servo, 97
- K -
KCL, 343
kHz, 248
Kilo, 344
KVL, 343
- L -
LCD 2x16 Serial, 325
LED, 27, 30
Bi-color, 50
como sensor de luz, 237
Ley de Ohm, 233, 343
Leyes de Kirchhoff de Voltaje y
Corriente, 342
Llamada a subrutina, 220
Logica transistor-transistor (TTL),
232
Longitud de onda, 198
LOOKDOWN, 188, 189
LOOKUP, 185
LOW, 39, 184
Luz visible, 198
- M -
mA, 344
Manda y Ejecuta, 291
Mandar, 61
Mapa de memoria, 205
Mapa de Memoria, 206
Mapa de pines, 172, 296
Mediciones de la Tierra, 334
Medidor de luz, 215
Memoria
Sobre escribiendo el programa, 209
microcontrolador, 11
Microcontrolador Propeller, 331
Microfarads, 145
Microsegundo, 105
Mili, 344
Milisegundo, 39
Milisengundo, 105
Modificaro WORD, 208
Motor Control product, 327
Msica
Punteadas, 267
Silencios, 262
ndice alfabetico Pgina 353
Tempo, 263
- N -
Nanometro, 198
nc, 173
Neutra, 34
Neutrn, 339
Nib, 45
No-conecta, 173
Notas bemol, 257
Notas sostenidos, 257
Ncleo, 339
Numbers
Binary, 180
Nmeros Base-10, 185
Nmeros Base-16, 185
Nmeros binarios, 67, 182
Nmeros Binarios, 180
Nmeros decimal, 185
Nmeros Decimales, 206
Nmeros hexadecimal, 185
Nmeros misteriosos, 321
- O -
Octava, 257
Ohm, 339
Omega , 28
ON GOSUB, 219
ON GOTO, 219
ondas de sonid. Vea Ondas sonoras
Operaciones matemticas, 271
OR, 78
OUTH, 180
- P -
Parallax Precaucin de Servo
Normalizado, 96
Partes del Kit de IR Remoto, 329
PBASIC Language
CLREOL, 169
HIGH, 184
LOW, 184
SELECTCASE, 275
PBASIC Lenguage
WRITE, 209
PBASIC Lenguaje
AND, 78
Argumentos, 39
Bit, 45
Byte, 45
CRSRUP, 129
DATA, 259
DCD, 272
DEBUG, 39
DEBUGIN, 120
DEC, 209
DEC. See
DIRH, 180
DO...LOOP, 39, 82, 124
END, 63
EXIT, 285, 320
FOR...NEXT, 43, 124
FREQOUT, 250, 254
Pgina 354 Qu es un Microcontrolador?
GOSUB, 218
GOTO, 219
HOME, 76
IF...ELSEIF...ELSE, 75
IF...THEN, 78
IF..THEN...ELSE, 71
IN, 67
LOOKDOWN, 188, 189
LOOKUP, 185
LOW, 39
Nib, 45
ON GOSUB, 219
ON GOTO, 219
OR, 78
OUTH, 180
PAUSE, 39
PIN, 164
PULSOUT, 105
RANDOM, 85
RCTIME, 151, 200
READ, 208
RETURN, 218
SERIN, 320
SEROUT, 320
STEP, 124
TOGGLE, 300
UNTIL, 82, 124
WHILE, 124
Word, 208
WRITE, 208
PBASIC Lrnguaje
Nib, 45
PBASIC Operador
** (Multiplicacin alta), 273
*/ (Multiplicacin Media), 273
PBASIC Operadores
*/ (Multipicacin Media), 84
DCD, 272
Orden de ejecucin, 271
Parentesis, 271
PBSIC Lenguaje
HIGH, 39
PIN, 164
Pines E/]S, 32
Pines E/S
Direccin default, 183
Polling, 80, 82
Potenciometro, 141
Potenciometro Resistor Variable
(de una vuelta), 141
Potentiometer
AD5220 (digital), 296
Procesamiento en Paralelo, 331
Program
Sobre escribir, 209
Program Listing
SimpleLookup.bs2, 185
Program Listings
ActionTones.bs2, 252
ndice alfabetico Pgina 355
Ch02Prj01_Countdown.bs2, 59
Ch03Prj01_TwoPlayerReactionTimer.bs2,
90
Ch04Prj01Soln1__KillSwitch.bs2, 137
Ch07Prj01_Blinds_Control.bs2, 245
Ch07Prj02_Blinds_Control_Extra.bs2,
246
Ch5Prj01_ControlServoWithPot.bs2, 168
Ch6Prj01_FishAndChips.bs2, 194
Ch8Prj01_PushButtonToneGenerator.bs2
, 289
Ch9Ex01_SetTapToZero.bs2, 306
Ch9Prj01_PhotoControlledDigitalPot.bs2,
308
ControlServoWithPot.bs2, 161
DialDisplay.bs2, 190
DigitalPotUpDownWithToggle.bs2, 301
DisplayDigits.bs2, 181
DisplayDigitsWithLookup.bs2, 186
DoReMiFaSolLaTiDo.bs2, 258
LightMeter.bs2, 222
MicroAlarmProto(Dev-009).bs2, 318
MicroMusicWithRtttl.bs2, 280
MusicWithMoreFeatures.bs2, 268
NestedLoops.bs2, 253
NotesAndDurations.bs2, 263
PairsOfTones.bs2, 255
PhototransistorAnalogToBinary.bs2, 229
PolledRcTimer.bs2, 149
PushbuttonControlledLed.bs2, 71
PushbuttonControlOfTwoLeds.bs2, 75
ReactionTimer.bs2, 81
ReadLightMeasurementsFromEeprom.bs
2, 212
ReadPotWithRcTime.bs2, 154
ReadPushbuttonState.bs2, 68
SegmentTestWithHighLow.bs2, 179
SelectCaseWithCharacters.bs2, 278
ServoCenter.bs2, 106
SimpleLookdown.bs2, 189
SimpleSubroutines.bs2, 219
SlowServoSignalsForLed.bs2, 114
StoreLightMeasurementsInEeprom.bs2,
210
TerminalControlledDigitalPot.bs2, 303
TestBiColorLed.bs2, 54
TestBinaryPhototransistor.bs2, 235
TestPhototransistor.bs2, 203
TestPiezoWithFreqout.bs2, 250
TestSecondLed.bs2, 48
ThreeServoPositions.bs2, 116
TwinkleTwinkle.bs2, 260
Protn, 339
Prototipo, 311
Proyecto de la Alarma, 315
Pseudo random, 86
Puerto COM, 41
PULSOUT, 105
Punteadas en msica, 267
Punto de referencia, 296
- R -
RANDOM, 85
Pgina 356 Qu es un Microcontrolador?
RCTIME, 151, 200
READ, 208
Recibir, 61
Registros
DIRH y OUTH para pines E/S, 180
Reglas de nombres de Variables,
43
Resistencia, 339
resistor, 28
Resistor, 38
E/S proteccin de pin, 69
Pull-up y Pull-down, 69
Resistor como proteccin E/S, 38
Variable, digital potentiometer, 296
Variable, potenciometro, 141
Resistor variable
potenciometro (digital), 296
RETURN, 218
Robtica con el Boe-Bot, 334
Rutina Principal, 224
- S -
SELECTCASE, 275
Semilla, 86
Sensar, 61
Sensor de Movimiento PIR, 323
Sensores Aplicados, 334
Sensores Inteligentes y
Aplicaciones, 334
Sensores Inteligentes y
Aplicacines, 326
Sensors products, 327
SERIN, 320
SEROUT, 320
Servo
Diagrama de Tiempo, 104
Frase de precaucin, 96
Servo Normalizado de Parallax
Parts diagram, 95
Silencios en msica, 262
Smbolo esquemtico, 28
Simplificacin de la Ley de
Kirchhoff de Corriente, 343
Simplificacin de la Ley de
Kirchhoff de Voltaje, 343
Sin soldar, 32
sistema incrustado, 11
Sistema mtrico decimal, 344
Sobre escribir el programa, 209
Sonidos en accin, 251
StampPlot LITE, 215
Stamps en Clase "Mini Proyectos",
335
Subrutina, 218
Etiqueta, 219
Subrutinas anidadas, 221
Sulfuro de cadmio, 198
Superposicin, 255
- T -
Take Me Out To The Ball Game,
347
Teclas naturales, 257
Tempo, 263
Tierra, 31, 343
ndice alfabetico Pgina 357
TOGGLE, 300
Tokens, 205, 209, 291
Tolerancia, 29, 302
Transistor, 199, 293
NPN, 293
Transmitir, 61
TTL, 61
Tutoriales en video, 335
- U -
UNTIL, 82, 124
- V -
Valor nominal, 302
Variable, 45
Variable range error, 122
Variable tamao Bit, 45
Variable tamao Nib, 45
Variables, 45
Almacenamiento RAM, 211
Bit, 45
Byte, 45
DIRH, 180
Nib, 45
OUTH, 180
Word, 45
Vdd, 343
Vea DEBUG Formatoss}.
Vea Pines E/S, 32
Ven, 343
Ventana de Transmisin, 121
Video
Construya su Propio Mini Temporizador,
335
Volt, 339
Voltaje, 35, 339
Voltaje decay circuit, 147
Voltaje Directo, 343
Vss, 343
- W -
WHILE, 124
Word, 45
WRITE, 208, 209
- -
F (microfarad), 145
Pgina 358 Qu es un Microcontrolador?
Las partes y cantidades estn sujetas a cambios sin aviso. Las partes pueden ser diferentes
a las que se muestran en esta imagen. Si tiene preguntas respecto a su kit, por favor
mande un email a stampsinclass.com