Você está na página 1de 528

Jos M. Rodrguez S.

Angel L. Villegas N.
Sistema de Desarrollo para MC, modelo MDK-B28
www.roso-control.com
Teora y Prctica Utilizando el Microcontrolador BASIC Stamp 2p.

Jos M. Rodrguez
ROSO Electric Supply

Angel L. Villegas
Universidad de Carabobo

Editores:
Jos M. Rodrguez
Angel L. Villegas
Teora y Prctica Utilizando el Microcontrolador BASIC Stamp 2p

Los Editores

Hecho el Depsito de Ley


Depsito Legal lf25220066203362
ISBN 980-12-2188-7

Tiraje: 50 Ejemplares (CD-ROM).


Para solicitar ejemplares comunquese con:
Jos M. Rodrguez S.
ROSO Electric Supply . Av. 127 Edificio Cotoper 10-6 La Trigalea,
Cdigo Postal 2001, Valencia - Venezuela
Telfonos: +58 414 4266490
Email :jmrs@roso-control.com

Prohibida la reproduccin total o parcial de esta obra, por cualquier medio o mtodo sin la autorizacin
escrita los editores. El uso del contenido o de los cdigos de programacin presentados en la obra slo
est permitido para fines educativos y no comerciales, y est limitado a la utilizacin de los productos de
Parallax.

Los autores no son responsables de ningn dao ocasionado a personas o cosas que resulten de una mala
aplicacin de los programas contenidos en este manual. La responsabilidad de tal utilizacin quedar
entendida y aceptada por el lector o usuario de estos cdigos.

Basic Stamp y Stamp in Class son marcas registradas de Parallax, Inc.


BS2-IC, BS2e-IC, BS2sx-IC, BS2p24-IC, BS2p40-IC, BS2pe-IC, Basic Stamp Manual rev 2.0, LCD
Character Creator, Stamp DAQ son productos y marcas registradas por Parallax, Inc.
StampPlot V3 es una marca registrada de Martin Hebel y Selmaware Solutions.
OPTAscope 81M es una marca registrada de Optimum Desings & Optimate Desings, Inc.
PIC, PICmicro, PIC16F876 son productos y marcas registradas de Microchip Technology, Inc.
iButton, 1-Wire, MicroLan son marcas registradas de Dallas Semiconductor, Inc.

Impreso en Venezuela
Contenido

Captulo No. 01 : Introduccin y Comandos Bsicos........................................................... 01


Ejercicio # 1 : Declarando Variables......................................................................... 06
Ejercicio # 2 : LED Parpadeante............................................................................... 08
Ejercicio # 3 : Declaracin de Arreglos..................................................................... 12
Ejercicio # 4 : Debug Terminal.................................................................................. 15
Evaluacin del Captulo........................................................................................... 21
Captulo No. 02 : Entradas y Salidas Digitales............................................................... 23
Ejercicio # 1 : EntradasSalidas............................................................................... 39
Ejercicio # 2 : Existencia del Rebote......................................................................... 42
Ejercicio # 3 : Contador UP/DOWN............................................................................ 50
Evaluacin del Captulo........................................................................................... 54
Captulo No. 03 : Operaciones Aritmticas y Lgicas........................................................ 55
Ejercicio # 1 : Operaciones Bsicas........................................................................... 58
Ejercicio # 2 : Generador de Onda............................................................................. 61
Ejercicio # 3 : Operaciones Aritmticas...................................................................... 66
Evaluacin del Captulo........................................................................................... 72
Captulo No. 04 : Medicin de Frecuencias y Generacin de Tonos........................................ 73
Ejercicio # 1 : Contador de Pulsos............................................................................ 75
Ejercicio # 2 : Medicin de Frecuencia........................................................................ 77
Ejercicio # 3 : Generacin de Tonos........................................................................... 84
Ejercicio # 4 : Un Simple Instrumento Musical.............................................................. 88
Evaluacin del Captulo........................................................................................... 94
Captulo No. 05 : Comunicacin Serial Sincrnica (SPI)...................................................... 95
Ejercicio # 1 : Entendiendo la pantalla de LEDs de 7 segmentos..................................... 105
Ejercicio # 2 : Contador UP/DOWNLED Parpadeante...................................................... 113
Ejercicio # 3 : Reloj Digital.................................................................................... 116
Evaluacin del Captulo........................................................................................... 120
Captulo No. 06 : Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)............... 121
Ejercicio # 1 : Conversin Analgico / Digital............................................................. 126
Ejercicio # 2 : Voltmetro Digital............................................................................. 131
Ejercicio # 3 : Medicin de dos Variables Analgicas.................................................... 136
Ejercicio # 4 : Conversin Digital / Analgica............................................................. 143
Evaluacin del Captulo........................................................................................... 149
Captulo No. 07 : Pantalla de Caracteres LCD............................................................... 150
Ejercicio # 1 : Conociendo e Inicializando al LCD......................................................... 159
Ejercicio # 2 : Acciones Bsicas con el LCD................................................................ 164
Ejercicio # 3 : Un Editor de Mensajes........................................................................ 169
Ejercicio # 4 : Caracteres Personalizados.................................................................. 173
Evaluacin del Captulo........................................................................................... 185

Sistema de Desarrollo para MC, modelo MDK-B28 -i-


www.roso-control.com
Contenido

Captulo No. 08 : Comunicacin Serial Asincrnica........................................................... 186


Ejercicio # 1 : Comunicacin Serial Asincrnica RS232................................................. 194
Ejercicio # 2 : Manejo del LCD y Teclado Serial......................................................... 200
Ejercicio # 3 : Implementacin de un Instrumento de Medicin.......................................... 206
Evaluacin del Captulo........................................................................................... 219
Captulo No. 09 : Medicin de Temperatura..................................................................... 221
Ejercicio # 1 : Termmetro Digital............................................................................ 247
Ejercicio # 2 : Termmetro Digital Avanzado............................................................... 252
Ejercicio # 3 : Interfaz Interactiva para un Termmetro Digital usando el StampPlot Pro 267
Ejercicio # 4 : Utilizando el DS1620 como un Termostato............................................... 278
Evaluacin del Captulo........................................................................................... 281
Captulo No. 10 : Control de Procesos........................................................................... 282
Ejercicio # 1 : Control ON/OFF de Temperatura........................................................... 291
Ejercicio # 2 : Control ON/OFFcon Banda Diferencial................................................... 298
Ejercicio # 3 : Estacin de Monitoreo por TCP/IP......................................................... 309
Ejercicio # 4 : Control Proporcional......................................................................... 316
Evaluacin del Captulo........................................................................................... 335
Captulo No. 11 : Movimiento Micro Controlado............................................................... 336
Ejercicio # 1 : Motor DC......................................................................................... 351
Ejercicio # 2 : El Servomotor................................................................................... 354
Ejercicio # 3 : Automatizacin de una Puerta.............................................................. 357
Ejercicio # 4 : Interfaz Interactiva para un Servomotor................................................ 359
Ejercicio # 5 : El Motor de Pasos............................................................................. 364
Ejercicio # 6 : Interfaz Interactiva para el Motor de Pasos.......................................... 368
Evaluacin del Captulo........................................................................................... 377
Captulo No. 12 : Comunicacin serial sincrnica I2C........................................................ 378
Ejercicio # 1 : Lectura y Escritura en una EEPROM I2C................................................ 393
Ejercicio # 2 : Reloj Digital utilizando un RTC DS1307.................................................. 402
Evaluacin del Captulo........................................................................................... 413
Captulo No. 13 : Comunicacin Serial Asincrnica 1Wire................................................ 414
Ejercicio # 1 : Identificacin de un dispositivo 1Wire.................................................. 422
Ejercicio # 2 : Clculo del CRC8............................................................................. 427
Ejercicio # 3 : Lectura y Escritura de datos en el DS1971............................................. 437
Ejercicio # 4 : Sistema de control de Acceso 1Wire.................................................... 447
Ejercicio # 5 : Buscando dispositivos en el bus 1Wire.................................................. 462
Evaluacin del Captulo........................................................................................... 474
Anexo No. 01 : Esquemas Elctricos del sistema MDKB28.............................................. 475
Anexo No. 02 : Especificaciones de Componentes........................................................... 480

Sistema de Desarrollo para MC, modelo MDK-B28 - ii -


www.roso-control.com
Prefacio

Este texto busca brindarle a los estudiantes de nivel Tcnico-Universitario, las herramientas necesarias para
el desarrollo de aplicaciones y contribuir al mejoramiento de su formacin en el rea de microcontroladores.
Con este ltimo fin, hemos diseado un sistema de desarrollo de altas prestaciones, que contiene todos los
elementos necesarios para la experimentacin con tecnologas de punta.

El sistema de desarrollo MDK-B28 posee una serie de componentes previamente pre-cableados, que incluye
dispositivos de uso frecuente en aplicaciones reales. Entre sus caractersticas encontramos:

Alimentacin de 6.5 a 18 Vdc. Incluye fusible trmico reseteable para proteccin general de equipo y
supresor de tensiones transitorias para proteccin de los circuitos digitales.
Banco de cuatro (4) pulsadores para ser usados como entradas digitales.
Una (1) entrada analgica mediante potencimetro y otra con fotorresistencia.
Ocho (8) salidas digitales mediante LEDs.
Display de 7 segmentos de 4 dgitos.
Bus de expansin de 20 terminales (16 E/S, GND, +5V y Vdc).
Pantalla LCD Serial (Mdulo SLCD-BD de ROSO Electric Supply).
Dispositivos de tecnologa I2C: Memoria EEPROM de 4 kbits y Reloj de Tiempo Real.
Termmetro/Termostato digital con comunicaciones 3-Wire.
Calentador.
Interfaz para motor de pasos, motor DC o relays protegida por fusible trmico reseteable.
Interfaz para 4 servomotores.
Interfaz para dispositivos 1-Wire protegida contra descargas electrostticas de hasta 27Kv.
Altavoz piezoelctrico.
Dispositivos con tecnologa SPI: Controlador de display de 7-seg y ADC de 2 canales (12 bits).
Dos (2) interfases RS232, una para programacin/depuracin y otra de uso general.
Generador de pulsos de frecuencia y ciclo til variables.
Amplificador operacional utilizado como acoplador de impedancia.
Proteccin para todos los terminales de E/S mediante resistencias de 220.
Amplia rea de protoboard de 2.06 x 6.5 ideal para la experimentacin.
Soporte para los microcontroladores: BASIC Stamp 2 y superiores yJavelin Stamp.
Interconexin de todos los componentes mediante regleta de 54 x 4 contactos

El MDK-B28, fue ideado para explotar las caractersticas del microcontrolador BASIC Stamp 2p. Este
microcontrolador, est compuesto por un conjunto de elementos, entre los cuales se encuentra un
microcontrolador intrprete pre-programado por Parallax y una memoria EEPROM donde se guarda el
programa a ejecutar. El BASIC Stamp se programa utilizando un poderoso lenguaje de alto nivel con un

Sistema de Desarrollo para MC, modelo MDK-B28 - iii -


www.roso-control.com
Prefacio

reducido conjunto de instrucciones llamado PBASIC. El microcontrolador intrprete, se encarga de leer el


cdigo almacenado en la EEPROM y realiza las operaciones de bajo nivel necesarias para ejecutar cada lnea
del programa escrito en PBASIC. El software BASIC Stamp Editor permite escribir, descargar y depurar el
programa que el BASIC Stamp deber ejecutar.

Este trabajo est inspirado en los textos del programa Stamps in Class de Parallax y se compone de 474
pginas distribuidas en 13 captulos, en los cuales se desarrollan 52 ejercicios prcticos y 73 programas.

Todos los captulos comienzan con una recopilacin de conocimientos tericos relacionados con el tema y en
ella se expone la sintaxis de todos los comandos de PBASIC utilizados, explicando de manera detallada el
uso de sus parmetros. Los captulos estn compuestos de varios ejercicios, que buscan determinados
objetivos. Durante el desarrollo de un ejercicio, se elaboran programas de dificultad creciente que explican
como lograr la meta planteada. Para el cabal desarrollo de los ejercicios, usted deber motar el circuito
(interconectado los componentes ya pre-cableados), verificar su funcionamiento, analizar y comprender los
programas e implementar las modificaciones que considere convenientes.

Al final de cada captulo, se encuentra una seccin de evaluacin que puede ser utilizada como herramienta
de auto-aprendizaje. En sta, hallar una serie de preguntas y ejercicios de programacin destinados a retar
los conocimientos recin aprendidos.

En el primer captulo, se presentan las caractersticas esenciales del microcontrolador BASIC Stamp y se
exploran los elementos bsicos de la programacin del BASIC Stamp, tales como: declaracin de variables y
constantes, manejo de arreglos y el uso del debug terminal. Tambin se experimenta con el encendido/
apagado de diodos LEDs y con temporizaciones simples.

En el captulo No. 2, usted aprender como: declarar terminales de Entrada/Salida, utilizar los modificadores
de variable y de formato, graficar seales con el software StampPlot Pro y manejar pulsadores e
interruptores.

El captulo No. 3 Operaciones Aritmticas y Lgicas. En l usted conocer cuales son los operadores
aritmticos y lgicos soportados por el BASIC Stamp. Adems, emplear las herramientas de la matemtica
entera para el manejo de nmeros con parte decimal.

El cuarto captulo, busca ensearle a medir la frecuencia y ciclo til de seales elctricas, siendo esto de
suma utilidad al momento de conectar al microcontrolador a diversos tipos de sensores. En la parte final del
captulo, aprender a generar tonos audibles que pueden ser empleados en sistemas de sealizacin y
alarma.

Sistema de Desarrollo para MC, modelo MDK-B28 - iv -


www.roso-control.com
Prefacio

En el captulo No. 5, se estudia la comunicacin serial sincrnica bajo el protocolo SPI. Este protocolo es de
particular importancia, por la gran cantidad de dispositivos que lo utilizan. Usted implementar un maestro
SPI con su microcontrolador BASIC Stamp 2p y lo utilizar para encender y manejar un display de 4x7
segmentos mediante un controlador especializado.

El sexto captulo, se describe la conversin Analgico/Digital y Digital/Analgico. Como parte de los


ejercicios, construir un voltmetro digital utilizando un ADC y el display de 7 segmentos, medir y graficar
dos seales analgicas de manera simultnea y utilizar la modulacin de ancho de pulso (PWM) para
generar una seal analgica desde su BS2p.

Uno de los perifricos ms llamativos, presente en aplicaciones con microcontroladores es la pantalla LCD. El
captulo No. 7, est destinado a estudiar las pantallas LCD de caracteres. En l, usted encender la pantalla,
mostrar mensajes y nmeros e incluso crear sus propios caracteres para generar vistosas animaciones y
otros efectos.

En el captulo No. 8, se estudian las caractersticas de la comunicacin asincrnica con la computadora


(estndar RS232) y se construye un sistema inteligente auto-baudrate para comunicaciones con sta.
Adems se introduce el manejo del mdulo SLCD-BD (pantalla LCD y teclado serial) y se implementa un
instrumento de medicin de uso general (frecuencia, resistencia y capacitancia).

En el noveno captulo se implementa la medicin de temperatura, donde usted, construir un termmetro


digital sencillo con visualizacin mediante LCD y un termmetro digital avanzado con configuracin de
alarmas y programacin desde el PC. Adicionalmente aprender como implementar un termostato.

El control de procesos industriales, es uno de los campos donde los microcontroladores han sido mejor
recibidos. Por esta razn, en el dcimo captulo de este texto, se implementan tres algoritmos de control de
mucha utilizacin: el control ON/OFF, el control ON/OFF con banda diferencial y el control Proporcional.
Usted tambin aprender a utilizar herramientas de adquisicin de datos como el StampDAQ y de monitoreo
remoto va TCP/IP.

En el captulo No. 11, se estudian las caractersticas de tres tipos de motores: el motor DC, el servomotor y
el motor de pasos. Durante el desarrollo de los ejercicios, usted encender y apagar los motores, variar su
velocidad, sentido de giro, etc.

Un bus de comunicaciones de gran importancia es, sin lugar a dudas, el I2C. El doceavo captulo le ensear
a utilizar al BASIC Stamp 2p como maestro de un bus I2C, permitindole entre otras cosas: leer y escribir

Sistema de Desarrollo para MC, modelo MDK-B28 -v-


www.roso-control.com
Prefacio

datos, texto y cualquier tipo de informacin en una memoria EEPROM y construir un avanzado
reloj/calendario digital utilizando un RTC (Reloj de tiempo real).

Para finalizar el texto, incluimos un captulo completo dedicado al estudio de la poderosa tecnologa 1-Wire
de Dallas Semiconductor. En l, usted aprender a detectar la existencia de dispositivos esclavos conectados
al bus, a leer y validar los seriales de identificacin de los dispositivos 1-Wire, construir un sencillo pero
muy seguro sistema de control de acceso y utilizar al BASIC Stamp para buscar e identificar a todos los
dispositivos que se conecten en una RED 1-Wire.

Sin ms que agregar, queremos dedicar este trabajo a todos aquellos lectores cuya motivacin sea el
conocer este nuevo e interesante mundo de los microcontroladores.

Jos M. Rodrguez S.
Angel L. Villegas N.

Sistema de Desarrollo para MC, modelo MDK-B28 - vi -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Captulo No. 01
Introduccin y Comandos Bsicos

Sistema de Desarrollo para MC, modelo MDK-B28 -1-


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Introduccin. Dado que el microcontrolador BASIC Stamp 2p y su lenguaje de programacin pueden ser poco conocidos para usted;
este primer captulo se orienta a iniciarlo en su utilizacin y no profundiza en aspectos relevantes salvo en mostrar la simplicidad y
rapidez con la cual se escribe, depura y verifica la ejecucin de un programa en PBASIC. Si usted ha tenido experiencia previa en
manejo de microcontroladores en lenguaje ensamblador; reconocer de manera inmediata la diferencia. Con el lenguaje PBASIC se
logra minimizar el tiempo de aprendizaje y programacin.

Pero Qu es un BASIC Stamp?. Bien, un BASIC Stamp es un microcontrolador desarrollado en 1992 por
la empresa norteamericana Parallax Inc. Esta conformado por un conjunto de circuitos ensamblados en una
misma placa impresa que incluye: un microcontrolador intrprete, una memoria EEPROM para
almacenamiento de programas, un regulador de 5V, un resonador y un conjunto de terminales de E/S de
uso general con niveles de tensin compatibles TTL/CMOS (0-5 V). El BASIC Stamp se programa utilizando
un grupo de directivas, comandos y funciones para la realizacin de operaciones tanto matemticas, lgicas
y de entrada salida (E/S) que conforman un poderoso lenguaje llamado PBASIC (Parallax BASIC). La figura
No. 1.1 muestra un BASIC Stamp 2p de tamao aproximado.

El BASIC Stamp se presenta en dos modelos, el BASIC Stamp 1 y 2. Todo el


estudio posterior a estas lneas se desarrolla con el BASIC Stamp 2p. Las
caractersticas de estos microcontroladores pueden verse en la tabla No. 1.1.

Figura No. 1.1: Un BS2p.


Fuente: Parallax, Inc Catlogo en CD-ROM, Agosto 2002.

Producto BS2-IC BS2e-IC BS2sx-IC BS2p24-IC BS2p40-IC BS2pe-IC

Empaque DIP 24-pines 24-pines 24-pines 24-pines 40-pines 24-pines


Microcontrolador PIC16C57 SX28AC SX28AC SX48AC SX48AC SX28AC
Reloj del Procesador 20 MHZ 20 MHZ 50 MHZ 20 MHZ 20 MHZ 8 MHZ
Instrucciones/segundo 4000 4000 10000 12000 12000 6000
Scratchpad RAM NA 64 Bytes 64 Bytes 128 Bytes 128 Bytes 128 Bytes
Memoria de Programa 2 8x2 8x2 8x2 8x2 8x2
(Kbytes) (500 Inst.) (4000 Inst.) (4000 Inst.) (4000 Inst.) (4000 Inst.) (4000 Inst.)
Memoria EEPROM (Kbytes) NA NA NA NA NA 8x2
Voltaje de Alimentacin 5-15 Vdc 5-7.5 Vdc 5-7.5 Vdc 5-7.5 Vdc 5-7.5 Vdc 5-7.5 Vdc
Consumo de Corriente
8mA / 100uA 20mA / 100uA 60mA / 200uA 40mA / 400uA 40mA / 400uA 15mA / 60uA
(a 5V) / modo sleep
Corriente por cada E/S
20mA/25mA 30mA/30mA 30mA/30mA 30mA/30mA 30mA/30mA 30mA/30mA
(Entrega / Drena)
Corriente mx. (8 E/S)
40ma/50ma 60ma/60ma 60ma/60ma 60ma/60ma 60ma/60ma 60ma/60ma
(Entrega / Drena)

Tabla No. 1.1: Comparacin entre los diferentes modelos de BASIC Stamps.
Fuente: BASIC Stamp Module Comparison, Parallax.

Sistema de Desarrollo para MC, modelo MDK-B28 -2-


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Para poder utilizar una variable hay que primero declararla, especificando su
nombre y su tipo. En el BS2p existen 4 tipos de variables: bits (unidades
binarias bsicas), nibbles (compuestas de 4 bits), bytes (8 bits) y words Nombre de Variable VAR Tipo
(en este caso de 16 bits) que pueden ser declaradas por el usuario o utilizarse
con sus nombres predefinidos. La tabla No. 1.2. muestra las variables
predefinidas del BS2p. La declaracin de una variable requiere del uso de la directiva VAR. La longitud mxima del nombre de una
variable es de 32 caracteres.

Word Byte Nibble


Bit Utilizacin
(16 bits) (8 bits) (4 bits)
A VAR Word
INL INA,INB IN0-IN7 Estado de los
INS
INH INC,IND IN8-IN15 terminales de E/S
B VAR Byte
OUTL OUTA,OUTB OUT0-OUT7 Estado de las
C VAR Nible
OUTS D VAR Bit
OUTH OUTC,OUTD OUT8-OUT15 salidas
DIRL DIRA,DIRB DIR0-DIR7 Control de
DIRS Declarar variables: significa hacerle entender al
DIRH DIRC,DIRD DIR8-DIR15 asignacin como E/S
sistema programable que se planea utilizar una
B0 Variable de uso
W0 regin de la memoria RAM disponible. A esta
B1 general
porcin de memoria, se le asignar un nombre,
B2 Variable de uso por medio del cual, se le har referencia
W1
B3 general posteriormente. Durante la declaracin se
B4 Variable de uso especifica la dimensin de la nueva variable.
W2
B5 general
B6 Variable de uso Las directivas de compilacin o pseudo-
W3
B7 general operadores son palabras reservadas de un
B8 Variable de uso lenguaje de programacin que no generan
W4 ninguna instruccin de mquina an cuando
B9 general
B10 Variable de uso aparecen en el cdigo fuente del programa y
W5 permiten controlar la manera, con la cual, son
B11 general
B12 Variable de uso procesados los operandos o interpretadas
W6 secciones del mismo.
B13 general
B14 Variable de uso
W7 $PBASIC: Es una directiva de compilacin que
B15 general
indica la versin del lenguaje en la que se escribe
B16 Variable de uso el cdigo fuente. Para usar el PBASIC versin 2.5,
W8
B17 general el programa debe incluir: '{$PBASIC 2.5}
B18 Variable de uso
W9
B19 general $STAMP: Indica la versin del BASIC Stamp
B20 Variable de uso utilizado. Si se trabaja con un BS2p, el programa
W10
B21 general se iniciar con: '{$STAMP BS2p}
B22 Variable de uso
W11
B23 general

Tabla No. 1.2: Memoria y variables predefinidas en el BS2p.

Sistema de Desarrollo para MC, modelo MDK-B28 -3-


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

TEM Descripcin Sintaxis


La definicin de PIN se utiliza para simplificar a los programas que utilicen un mismo PIN
de entrada / salida en el programa. El compilador PBASIC determinar cuando el PIN se Nombre PIN Valor
PIN
comportar como una entrada o como una salida.
CON Directiva para asignar constantes Nombre CON Valor
INPUT Declara un PIN de E/S del BASIC Stamp como una entrada y coloca a Cero (0) el INPUT PIN
correspondiente bit en el registro DIRS.
OUTPUT Declara un PIN de E/S del BASIC Stamp como una salida y coloca a Uno (1) el OUTPUT PIN
correspondiente bit en el registro DIRS.
HIGH Hace del PIN especificado una salida en estado alto (5V) HIGH PIN
LOW Hace del PIN especificado una salida en estado bajo (0V) LOW PIN
PAUSE Establece una pausa en la ejecucin del programa durante un tiempo especificado en (ms) PAUSE Tiempo(ms)
con un valor mximo de 65535 ms
GOTO Produce un salto incondicional a una direccin (etiqueta) especificada. GOTO Etiqueta

Tabla No. 1.3: Directivas e instrucciones bsicas del BASIC Stamp.


Fuente: BASIC Stamp PBASIC Online Help, Parallax 2003.

Utilizacin de Etiquetas
Como en todo lenguaje de programacin que
permita la ejecucin de saltos incondicionales Nombre de Etiqueta: Instruccin a ejecutar
y el llamado a procedimientos (subrutinas) en
PBASIC existe una manera de denotar la lnea
del programa a la cual se requiere efectuar el salto. Una etiqueta es un identificador con un mximo de 32
caracteres seguido de dos puntos (:) y puede contener cualquier secuencia de letras, nmeros y el carcter
_. Debe tenerse en consideracin que en PBASIC no existe diferencia entre maysculas y minsculas.

Comentarios
En PBASIC cualquier secuencia de caracteres
precedida de un apstrofe () es considerado como Esto es un comentario
comentario, los comentarios pueden ser de
cualquier dimensin, pues no ocupan espacio
alguno en la memoria del BASIC Stamp, ya que, son ignorados por el compilador y no son transferidos a la
memoria EEPROM del microcontrolador. El uso de comentarios permite documentar los programas en el
momento de su elaboracin, lo cual, facilita su mantenimiento y depuracin.

Sistema de Desarrollo para MC, modelo MDK-B28 -4-


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

DO ... LOOP
Esta instruccin permite generar un lazo iterativo que se repetir cierta cantidad de veces. Si se combina con
la opcin WHILE, el lazo se ejecutar mientras se cumpla la condicin; en caso de utilizar el UNTIL, se
realizar hasta que la condicin sea verdadera. Si no se establecen condiciones, se har un lazo infinito.
Pueden concatenarse hasta 16 lazos DO..LOOP.
.

DO {WHILE | UNTIL condicin}


Instrucciones
LOOP {UNTIL | WHILE condicin}

IF ... THEN
Es una estructura de decisin que evala una condicin y si sta es verdadera, se produce un salto
incondicional al punto indicado por Direccin o se ejecuta la instruccin colocada sobre la misma lnea.

IF Condicin THEN Direccin o Instrucciones a Ejecutar

Condicin: Es una expresin que puede ser evaluada como verdadera o falsa.
Direccin: Etiqueta que especifica a donde saltar en caso de que se cumpla la condicin.

En la versin 2.5 del PBASIC se ha incluido la funcionalidad de ejecutar la instruccin que se escriba en la
misma lnea del IF..THEN. Para tener acceso a sta caracterstica, recuerde colocar la directiva: $PBASIC 2.5.

Declaraciones mltiples en una lnea

El PBASIC permite concatenar en una sola lnea un grupo de instrucciones, ello permite dar una presentacin
ms compacta y lgica de las mismas. El separador entre las instrucciones es el carcter dos puntos (:).

Instruccin #1 : Instruccin # 2 : Instruccin # 3

Sistema de Desarrollo para MC, modelo MDK-B28 -5-


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Objetivo: Declarar un grupo de variables y verificar el uso de la memoria RAM del BASIC Stamp.

Inicie el programa de edicin y compilacin BASIC Stamp


Elementos a Utilizar Editor desde el icono del escritorio de Windows o en el
Men de Inicio/Programas/ Parallax Inc/Stamp Editor 2.0
Beta 2/Stamp Editor v2.0 Beta 2.1.
(1) Programa Editor para el microcontrolador BASIC
Stamp StampW (v2.0 beta 2.1 o superior).
Posteriormente aparecer el entorno de trabajo del BASIC
Stamp. Transcriba el programa 1_1.bsp.

'Programa 1_1.bsp
'Este programa muestra las diferentes formas de declarar variables y constantes
'===================================================================================
'{$STAMP BS2p} 'Directiva usada para indicar la versin del BASIC Stamp
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
'
Var0 VAR Bit 'Variable tipo Bit cuyo valor puede ser 0 1
Var1 VAR Nib 'Variable tipo Nibble cuyo valor puede ser de 0 a 15
Var2 VAR Byte 'Variable tipo Byte cuyo valor puede ser de 0 a 255
Var3 VAR Word 'Variable tipo Word cuyo valor puede ser de 0 a 65535
Ocho CON 8 'Constante igual a 8 Decimal
Diez CON $A 'Constante igual a $A en Hexadecimal 10 Decimal
Cuatro CON %0100 'Constante igual a %0100 en Binario 4 Decimal
'___________________________________________________________________________________
END 'Indica el fin del Programa

Una vez hecho esto, se procede a presionar el icono de verificacin de sintaxis . Si existe algn
problema se debe a un error de trascripcin. Una vez que aparezca el mensaje Tokenize Successful la
sintaxis ser correcta. Ahora presione sobre el icono del mapa de memoria y debe aparecer lo mostrado
en la figura No. 1.2.

Sistema de Desarrollo para MC, modelo MDK-B28 -6-


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

VAR3 ->
VAR2 ->
VAR1 ->
VAR0 ->

Figura No. 1.2: Mapa de la memoria del microcontrolador para el ejercicio # 1.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 -7-


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Objetivo: Elaborar un programa en PBASIC que encienda y apague peridicamente un LED.

Elementos a Utilizar
El sistema de desarrollo MDK-B28 cuenta con un banco de
LEDs conectados a los terminales P8 a P15 del
(1) Sistema de Desarrollo MDK-B28 con un BS2p.
(1) Banco de LEDs del sistema MDK-B28. microcontrolador. La figura No. 1.3 muestra una fotografa
(1) Cable serial DB9. del banco de LEDs, mientras que en la figura No. 1.4, se
(1) Programa Editor para el microcontrolador BASIC observa el diagrama de conexiones para la realizacin de
Stamp StampW (v2.0 beta 2.1 o superior).
ste ejercicio.

La resistencia conectada en serie con cada LED de la barra establece un lmite para la corriente que circula
por el mismo, evitando su destruccin y probablemente la del microcontrolador. En el sistema de desarrollo
MDK-B28 cada terminal de Entrada/Salida del microcontrolador se encuentra conectado en serie con una
resistencia de 220 Ohmios que funciona como medio de proteccin, eliminando la posibilidad de
cortocircuitos y permitiendo, en el caso de activar simultneamente todos los LED de la barra, que el
consumo total de sta no supere los 40mA con lo cual se garantiza la integridad del BASIC Stamp. Proceda
ahora a introducir el programa 1_2.bsp.

Figura No. 1.3: Figura No. 1.4:


Fotografa del banco de LEDs del sistema MDK-B28. Esquema de conexiones para el ejercicio #2.
Fuente: Elaboracin Propia. Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 -8-


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

'Programa 1_2.bsp
'Este programa muestra como utilizar las instrucciones: OUTPUT, PAUSE y GOTO
'===================================================================================
'{$STAMP BS2p} 'Directiva usada para indicar la versin del BASIC Stamp
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
'
Led0 CON 15 'LED conectado a Pin 15 (P15)
Led1 CON 14 'LED conectado a Pin 14 (P14)
Led2 CON 13 'LED conectado a Pin 13 (P13)
T1 CON 500 'Retardo de 500 milisegundos
'___________________________________________________________________________________
'Programa Principal

OUTPUT Led0 'Declaracin de los Pines P15 a P13 como SALIDAS


OUTPUT Led1
OUTPUT Led2

Inicio: 'Etiqueta para el retorno


OUT15 = 0 'LED 0 = OFF
OUT14 = 1 'LED 1 = ON
OUT13 = 0 'LED 2 = OFF

PAUSE (T1) 'Pausa de 0.5 seg para visualizacin


OUT15 = 1 'LED 0 = ON
OUT14 = 0 'LED 1 = OFF
OUT13 = 1 'LED 2 = ON
PAUSE 1000 'Pausa de 1 segundo antes de repetir

GOTO Inicio 'Ir al inicio


'___________________________________________________________________________________

Conecte el cable de programacin al computador.

El sistema de desarrollo MDK-B28 posee dos conectores DB9, identificados con los nombres
PROGRAMACION y RS232 DB9 respectivamente. El primero de ellos ser utilizado para descargar los
programas en la memoria del BASIC Stamp. Conecte el otro extremo del cable serial DB9 al puerto de
programacin del MDK-01, tal como se muestra en la figura No 1.5.

Sistema de Desarrollo para MC, modelo MDK-B28 -9-


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Para ejecutar el programa se utiliza CTRL+R o el icono RUN.


Los LEDS deben estar cambiando de estado indefinidamente. Si
esto no ocurre, deber revisarse la codificacin del programa.

Introduzca ahora el programa 1_3.bsp.

Figura No .1.5: Conexin del cable de programacin al sistema de desarrollo.


Fuente. Elaboracin Propia.

'Programa 1_3.bsp
'Este programa muestra como utilizar los comandos: HIGH, LOW
'===================================================================================
'{$STAMP BS2p} 'Directiva usada para indicar la versin del BASIC Stamp
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
'
Led0 CON 15 'LED conectado a Pin 15 (P15)
Led1 CON 14 'LED conectado a Pin 14 (P14)
Led2 CON 13 'LED conectado a Pin 13 (P13)
T1 CON 500 'Retardo de 500 milisegundos
'___________________________________________________________________________________
'Programa Principal

Inicio: 'Etiqueta para el retorno


LOW Led0 'LED 0 = OFF
HIGH Led1 'LED 1 = ON
LOW Led2 'LED 2 = OFF
PAUSE (T1) 'Pausa de 500 mseg para visualizacin

HIGH Led0 'LED 0 =ON


LOW Led1 'LED 1 =OFF
HIGH Led2 'LED 2 =ON
PAUSE 1000 'Pausa de 1 segundo antes de repetir

GOTO Inicio 'Ir al inicio


'__________________________________________________________________________________

Sistema de Desarrollo para MC, modelo MDK-B28 - 10 -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

La importancia de lograr un cdigo eficiente cuando se trabaja con un microcontrolador se hace impetuosa
dada la capacidad limitada de memoria que estos poseen. Si se hace una revisin de los programas No.
1_2.bsp y No. 1_3.bsp, no tardar en notar que bsicamente hacen lo mismo, la diferencia es como lo
hacen, el programa 1_3.bsp ocupa 24 localidades de la EEPROM mientras que el programa 1_2.bsp ocupa
40, es decir que hay un 70,83 % de incremento en la longitud del programa.

Sistema de Desarrollo para MC, modelo MDK-B28 - 11 -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Objetivo: Declarar arreglos de diferentes dimensiones y mostrar su distribucin en memoria la RAM del microcontrolador BASIC
Stamp.

Elementos a Utilizar
Siendo los arreglos estructuras de programacin de uso
(1) Sistema de Desarrollo MDK-B28 con un BS2p. muy comn, es evidente que todos los lenguajes de alto
(1) Cable serial DB9. nivel utilicen formas sencillas para declararlos. En PBASIC
(1) Programa Editor para el microcontrolador BASIC se utiliza la siguiente sintaxis:
Stamp StampW (v2.0 beta 2.1 o superior).

Nombre del arreglo VAR Tamao (dimensin)

Por ejemplo, el siguiente cdigo producir un vector de 10 elementos tipo byte.

Vector VAR BYTE(10)

Es de hacer notar que PBASIC no verifica la dimensin del vector, as que sta puede ser excedida durante
el acceso al mismo. Por lo tanto, el programador deber tener en consideracin que el ndice utilizado no
sea mayor que el valor de n-1, siendo n la dimensin del vector.

La forma de hacer referencia a un elemento del arreglo ser:

Nombre del arreglo (ndice)


Nombre del arreglo, si se quiere referir slo al primer elemento

Otra caracterstica resaltante es que se puede referir al elemento 0 del arreglo utilizando el nombre del
mismo pudiendo prescindir del ndice.

Inicie el programa BASIC Stamp Editor y transcriba el programa que se muestra a continuacin:

Sistema de Desarrollo para MC, modelo MDK-B28 - 12 -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

'Programa 1_4.bsp
'Este programa muestra como declarar arreglos de variables
'===================================================================================
'{$STAMP BS2p} 'Directiva usada para indicar la versin del BASIC Stamp
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

vector0 VAR Bit (8) 'Declara un arreglo de 8 elementos tipo Bit (01 Bit)
vector1 VAR Nib (5) 'Declara un arreglo de 5 elementos tipo Nib (04 Bits)
vector2 VAR Byte(5) 'Declara un arreglo de 5 elementos tipo Byte (08 Bits)
vector3 VAR Word(5) 'Declara un arreglo de 5 elementos tipo Word (16 Bits)
'___________________________________________________________________________________
'Programa Principal

Inicio:
GOTO Inicio

'___________________________________________________________________________________

El orden en el cual se declara un conjunto de arreglos no influye en su posicin definitiva dentro de la


memoria, pues el compilador ordenar, al igual que con cualquier grupo de variables en PBASIC, las
variables de mayor dimensin en la localidad superior disponible.

La figura No. 1.6 muestra el estado del mapa de memoria del microcontrolador BASIC Stamp 2p al momento
de ejecutarse el programa.

La funcin Mapa de Memoria del BASIC Stamp Editor, es una herramienta que nos permite conocer
exactamente el uso que hemos hecho de la RAM del microcontrolador al momento de declarar las variables
dentro del programa. Sin embargo, no aporta ninguna informacin del contenido de estas variables durante
la ejecucin del programa.

Sistema de Desarrollo para MC, modelo MDK-B28 - 13 -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

vector2
vector3

vector1
vector0

Figura No. 1.6: Mapa de la memoria del microcontrolador para el programa 1_4.bsp.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 14 -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Objetivo: Utilizar el Debug Terminal como medio de visualizacin de variables y/o mensajes de un programa escrito en PBASIC.

Elementos a Utilizar
Un comando poderoso utilizado para la rpida depuracin de
programas en PBASIC es el DEBUG.
(1) Sistema de Desarrollo MDK-B28 con un BS2p.
(1) Cable serial DB9.
(1) Programa Editor para el microcontrolador BASIC DEBUG Datos a mostrar
Stamp StampW (v2.0 beta 2.1 o superior).

DEBUG permite desplegar informacin en la pantalla del PC a travs de un terminal de comunicaciones


llamado DEBUG TERMINAL. Para activar dicho terminal puede hacerse clic en el icono New Debug,
desplegndose entonces una ventana como la que se muestra en la figura No. 1.7. Para establecer la
comunicacin con el microcontrolador, deber indicarse el puerto de comunicaciones (COM) donde se
encuentra este conectado.

Figura No. 1.7:


Debug Terminal e iconos New Debug y Run.
Fuente. Elaboracin Propia.

Otra forma de tener acceso al DEBUG TERMINAL es mediante el icono RUN, pues el mismo realiza una
serie de acciones que incluyen: la verificacin de la sintaxis del programa, su descarga al microcontrolador y
la apertura del mencionado terminal en caso de ser necesario.
La manera en que la informacin es mostrada puede ser ajustada mediante el uso de modificadores de
formato. Estos se muestran en la tabla No. 1.3.

Sistema de Desarrollo para MC, modelo MDK-B28 - 15 -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

FORMATO DESCRIPCIN
Muestra x = valor y coloca el cursor en la lnea inmediata inferior. El valor de x ser interpretado como un
?x
nmero. El formato por defecto es decimal, pero puede ser combinado con cualquier modificador.
ASC ? Muestra x = valor y coloca el cursor en la lnea inmediata inferior. x se interpreta como un carcter ASCII
DEC{1..5} Dato en sistema decimal de 1 a 5 dgitos
SDEC{1..5} Dato decimal con signo de 1 a 5 dgitos
HEX{1..4} Dato hexadecimal de 1 a 4 dgitos
SHEX{1..4} Dato hexadecimal con signo, de 1 a 4 dgitos
IHEX{1..4} Dato hexadecimal con el prefijo $ de 1 a 4 dgitos.
ISHEX{1..4} Dato hexadecimal con signo y el prefijo $ de 1 a 4 dgitos
BIN{1..16} Dato en binario de 1 a 16 dgitos
SBIN{1..16} Dato binario con signo de 1 a 16 dgitos
IBIN{1..16} Dato binario con el prefijo %, de 1 a 16 dgitos
ISBIN{1..16} Dato binario con signo y el prefijo % de 1 a 16 dgitos.
STR array Enva el contenido de array como cadena ASCII hasta que encuentre un = 0
STR array\n Enva una cadena ASCII con los n primeros bytes del arreglo array
REP byte\n Muestra el carcter ASCII del contenido de byte n veces
Tabla No. 1.3: Modificadores de formato en PBASIC.
Fuente: BASIC Stamp Manual V2.0.

Para lograr mejoras en el despliegue visual y darle mejor presentacin a los datos en pantalla, la instruccin DEBUG
admite el uso de los caracteres de control mostrados en la tabla No. 1.4. Estos permiten controlar la posicin del cursor
dentro del Debug Terminal.

CARCTER DE CONTROL SMBOLO CDIGO ASCII DESCRIPCIN


Borra la pantalla CLS 0 Borra la pantalla
Ir al Inicio HOME 1 Enva el cursor al comienzo de la pantalla
Mover a (x,y) CRSRXY 2 Mueve el cursor en las coordenadas: x, y
Cursor Izq. CRSRLF 3 Mueve el cursor a la Izquierda
Cursor Der. CRSRRT 4 Mueve el cursor a la Derecha
Cursor Arriba CRSRUP 5 Mueve el cursor Arriba
Cursor Abajo CRSRDN 6 Mueve el cursor Abajo
Campana BELL 7 Emite un sonido acstico por el altavoz del PC
Espacio en blanco BKSP 8 Retrocede un espacio
Tabulador TAB 9 Avanza el espacio correspondiente a la tabulacin
Ajuste de lnea LF 10 Mueve el Cursor una lnea abajo
Borrar a la derecha CLREOL 11 Limpia el contenido a la derecha del cursor
Borrar a abajo CLRDN 12 Limpia el contenido abajo del cursor
Retorno de Carro CR 13 Avanza a la siguiente lnea
Mover a la columna (horizontal) CRSRX 14 Desplaza el cursor a la columna X
Mover a la columna (vertical) CRSRY 15 Desplaza el cursor a la columna Y

Tabla No. 1.4: Caracteres de control del Debug Terminal.


Fuente: BASIC Stamp Manual V2.0.

Sistema de Desarrollo para MC, modelo MDK-B28 - 16 -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Encienda el sistema MDK-B28 y descargue al microcontrolador el programa 1.5 que se presenta a


continuacin:

'Programa 1_5.bsp
'Este programa muestra como :
' 1) Desplegar informacin a travs del Debug Terminal
' 2) Emplear algunos caracteres de control y modificadores de formato
' 3) Usar la funcin DO LOOP
' 4) Usar la funcin DO WHILE..LOOP
'===================================================================================
'{$STAMP BS2p} 'Directiva usada para indicar la versin del BASIC Stamp
'{$PBASIC 2.5} 'Directiva usada para indicar la versin del PBASIC
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
x VAR Word
'___________________________________________________________________________________
'Programa Principal

Inicio:

DO

DEBUG CLS, "EJEMPLO DEL USO DE MODIFICADORES DE FORMATO",CR


'Limpia el Terminal, Enva la cadena y avanza a la lnea siguiente
PAUSE 500
DEBUG "CARACTER",CR
PAUSE 250
DEBUG REP "-"\50,CR
'Despliega 50 veces el carcter "-"
PAUSE 150
x = 0

DO WHILE x<= 150 'Lazo desde x=0 hasta 150

'A continuacin se escribe desde 0 hasta 150 el valor de x en diferentes formatos


DEBUG "? -->",TAB,? x 'x= valor de x
DEBUG "DEC{1..5} -->",TAB,DEC4 x,CR 'como decimal con 4 dgitos
DEBUG "SDEC{1..5} -->",TAB,SDEC4 -x,CR '-x en decimal con signo y 4 dgitos
DEBUG "HEX{1..5} -->",TAB,HEX2 x,CR 'como hexadecimal de 2 dgitos
DEBUG "SHEX{1..5} -->",TAB,SHEX2 -x,CR '-x en hex. con signo y 2 dgitos
DEBUG "ISHEX{1..4} -->",TAB,ISHEX2 x,CR 'antepone el smbolo $ al valor hex.
DEBUG "BIN{1..16} -->",TAB,BIN16 x,CR 'como binario de 16 bits
DEBUG "SBIN{1..16} -->",TAB,SBIN16 -x,CR '-x en binario (COMPL.2), 16 bits
DEBUG "ISBIN{1..16} -->",TAB,ISBIN16 x,CR 'antepone el carcter % al valor bin

Sistema de Desarrollo para MC, modelo MDK-B28 - 17 -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Continuacin del Programa 1_5.bsp

DEBUG CRSRXY,0,3

'Hace que el cursor apunte a la fila 0, columna 3 para actualizar el valor de x en


'el mismo lugar donde apareci por primera vez

PAUSE 50 'pausa para poder ver al valor actual de x


x= x + 1 'incrementar x
LOOP 'cierre del ciclo DO WHILE
DEBUG CLS,HOME
'Una vez alcanzado el mximo de 150 borrar la pantalla, colocar el cursor al
'inicio de la misma para reiniciar
LOOP
'___________________________________________________________________________________

En este programa se ha hecho uso de las


construcciones del lenguaje para la creacin de
lazos iterativos. La primera de estas ya fue
empleada y es el lazo infinito con una etiqueta y
la instruccin GOTO, ahora se utiliz el
DO...LOOP, con el cual, se pueden crear lazos
repetitivos ya sean estos infinitos o condicionales.
La construccin DO...LOOP de PBASIC permite la
implementacin de lazos de uso muy comn para
los programadores: los ciclos WHILE y UNTIL.
La diferencia principal entre ambos es el momento
en el cual se verifica la condicin de permanencia
dentro del lazo, siendo sta evaluada antes de
ejecutar las instrucciones para el caso del WHILE
y luego de stas al tratarse de un UNTIL.

Durante la ejecucin del programa 1_5.bsp, en el


Debug Terminal debe verse lo mostrado en la
figura No 1.7.

Figura No. 1.7: Contenido del Debug Terminal.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 18 -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Si se requiere romper la ejecucin de un lazo iterativo construido con DO...LOOP, deber colocar EXIT
antes de llegar al punto de verificacin de la variable de control.

Ya que el Debug Terminal no es simplemente un medio de visualizacin y permite el envo de informacin


desde el PC al microcontrolador, en PBASIC se cuenta con la instruccin DEBUGIN, que funciona como
complemento de DEBUG en la depuracin de los programas. Su sintaxis se muestra a continuacin:

DEBUGIN Var

Donde Var es la variable que recibir la informacin que el computador enve al BASIC Stamp.

Introduzca el programa 1_6.bsp en el editor. En este programa usted ha de notar que la ejecucin de la
funcin DEBUGIN:

Detiene la ejecucin del programa hasta que se reciban los datos.


Permite el uso de modificadores para especificar el formato en el cual se espera recibir los datos.

Cuando se emplean modificadores, el microcontrolador descartar cualquier tipo de informacin que no


coincida con el tipo esperado.

'Programa 1_6.bsp
'Este programa muestra como:
' 1) Recibir informacin desde el PC hacia el microcontrolador con el Debug Terminal
' 2) Acotar el valor mximo de una entrada
' 3) Usar la funcin DO .. LOOP UNTIL
'====================================================================================
'{$STAMP BS2p} 'Directiva usada para indicar la versin del BASIC Stamp
'{$PBASIC 2.5} 'Directiva usada para indicar la versin del PBASIC
'____________________________________________________________________________________
'Declaracin de Variables y Constantes

x VAR Byte
y VAR Byte
Maximo VAR Word
'____________________________________________________________________________________
'Programa Principal
Inicio:

Sistema de Desarrollo para MC, modelo MDK-B28 - 19 -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Continuacin del Programa 1_6.bsp

DEBUG CLS,"EJEMPLO DEL USO DE DEBUGIN",CR


PAUSE 500
DEBUG REP "*"\50,CR
PAUSE 150
DEBUG "Favor Introducir el valor mximo de conteo (0-255)",CR
DEBUGIN DEC Maximo
'Indica al BS2p que debe esperar a que se introduzca por medio del teclado un valor,
'adems se especifica que dicho valor ser considerado como decimal y se almacenar
'en una variable de 16 bits
Maximo = Maximo MAX 255
'Ya que la cuenta se har hasta x >= maximo, el valor de maximo no puede superar
'el 255 y por ello se acota
DEBUG CRSRXY,0,3,"Contando hasta ",DEC maximo

Ciclo:
x = 0
DO
DEBUG CRSRXY,0,4
DEBUG "? -->",TAB,? x 'x= valor de x
DEBUG "DEC{1..5} -->",TAB,DEC3 x,CR 'como decimal con 3 dgitos
DEBUG "HEX{1..5} -->",TAB,HEX2 x,CR 'como hexadecimal de 2 dgitos
DEBUG "ISHEX{1..4} -->",TAB,ISHEX2 x,CR 'antepone el smbolo $ al valor hex.
DEBUG "BIN{1..16} -->",TAB,BIN8 x,CR 'como binario de 8 bits
DEBUG "ISBIN{1..16} -->",TAB,ISBIN8 x,CR 'antepone el carcter % al valor bin.
PAUSE 50
x = x + 5
LOOP UNTIL x >= Maximo
Fin:
DEBUG CLS,HOME
DEBUG "Desea Repetir (S/N)",CR
DEBUGIN y
DEBUG CLS
IF (y = "N") OR (y = "n") THEN GOTO Inicio
IF NOT ((y="S") OR (y="Y") OR (y="s") OR (y="y")) THEN DEBUG BELL : GOTO Fin
DEBUG "Reiniciando Cuenta"
x = 0
DO WHILE x <= 10
DEBUG "." : PAUSE 250 : x = x + 1
LOOP
GOTO Ciclo
END

Adicionalmente se ha hecho uso del operador MAX que se emplea


para acotar el valor de una variable o constante de modo que no Valor MAX Lmite
supere un mximo deseado o permitido por el programa.

Sistema de Desarrollo para MC, modelo MDK-B28 - 20 -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Investigue los siguientes tpicos


1. En qu se diferencia un microcontrolador de una computadora ?.
2. Cual es la diferencia entre Hardware y Software ?.
3. Qu significa Memoria RAM, ROM, EPROM, EEPROM y ScratchPad RAM ?.
4. Cuantos Bits de memoria RAM estn disponibles para el programador en BASIC Stamp ?.
5. Que significan los trminos: INS, OUTS y DIRS ?.
6. Qu se entiende por un mapa de memoria y cual es su utilidad ?.
7. Qu es una etiqueta y cual es la longitud mxima posible de ella ?.
8. Cuantos tipos de construcciones DO LOOP se pueden realizar ?.
9. Por qu en la figura No. 1.2, la memoria de programa aparece vaca ?.
10. Cual es la corriente mxima que un BASIC Stamp 2p puede entregar o consumir por PIN ?.
11. Cual es la diferencia entre el lenguaje ensamblador y el PBASIC ?.
12. Qu es un compilador, un intrprete y cuales son sus diferencias ?.
13. Qu significa el trmino en ingles Tokenize ?.
14. Cuantos tipos de variables se pueden declarar en PBASIC y cuales son ?.
15. Cual es el nmero mximo de instrucciones que se pueden programar en PBASIC para un BS2p ?.
16. De que depende la velocidad de ejecucin en instrucciones por segundo en un BASIC Stamp ?.
17. Qu significa depurar DEBUG ?.
18. Puedo visualizar a travs de la pantalla del DEBUG un nmero decimal de 6 Dgitos ?.
19. Como se puede terminar la ejecucin de un lazo iterativo DOLOOP ?.
20. Para que se utiliza el comando DEBUGIN ?.

Programacin
1. Escriba un programa que trabaje con el circuito de la figura No. 1.3. El mismo deber realizar las siguientes
operaciones:

1.1. Hacer que los tres LEDs se enciendan y apaguen en forma simultnea por 1 segundo.
1.2. Hacer encender y apagar los LEDs alternativamente; en otras palabras, mientas uno esta encendido
los otros estn apagados, y viceversa.
1.3. Hacer lo indicado en el pto. 1.2. e indicar en la pantalla del PC (utilizando el debug terminal), cual
es el LED que esta actualmente encendido.
1.4. Hacer que los LEDs se enciendan y apaguen en forma simultnea cuando el programador se lo
indique desde el debug terminal, utilizando la instruccin DEBUGIN.
1.5. Hacer lo indicado en el pto. 1.4., pero en vez de encender los LEDs en forma simultnea que se
enciendan y apaguen en forma individual.
1.6. Encender y apagar los LEDs en forma simultnea cada 10 ms. Qu Ocurri y Por qu ?.

Sistema de Desarrollo para MC, modelo MDK-B28 - 21 -


www.roso-control.com
Captulo No. 1. Introduccin y Comandos Bsicos

Programacin Cont.
El siguiente programa tiene errores, por favor indique cuales son y como puede corregirlos. Coloque comentarios.

'Programa Eval_Cap_1_1.bsp
'===================================================================================
'{$STAMP BS2p} 'Directiva usada para indicar la versin del BASIC Stamp
'{$PBASIC 2.5} 'Directiva usada para indicar la versin del PBASIC
___________________________________________________________________________________
'Declaracin de Variables y Constantes
X VAR Bit
Y CON Byte
LED 0 CON 15
LED 1 CON 14
LED 2 CON 13
___________________________________________________________________________________
Programa Principal

Output LED0
Output LED1
Output LED2

Inicio:
DO
DEBUG CLS, "Mi Primer programa",CR
PAUSE 500
DEBUG "CARACTER",CR
PAUSE 250
DEBUG REP "-"\50,CR
PAUSE
X = 0

DO WHILE x<= 150


DEBUG "DEC X = ",TAB,DEC6 x,CR
DEBUG "DEC Y = ",TAB,DEC8 Y,CR
LOOP
EXIT
LOOP

OUT15=0 : OUT14=0: OUT13=0:


PAUSE 1000
GOTO lAZO

Sistema de Desarrollo para MC, modelo MDK-B28 - 22 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Captulo No. 02
Entradas y Salidas Digitales

Sistema de Desarrollo para MC, modelo MDK-B28 - 23 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Introduccin. Para poder intercambiar informacin con el mundo exterior, un microcontrolador necesita de un conjunto de perifricos
que sean capaces de traducir un evento en una seal elctrica de niveles lgicos entendibles, es decir, binarias. Este captulo muestra
algunos de los componentes ms simples del sistema de desarrollo, ensendole a trabajar con entradas y salidas digitales por medio
de los perifricos ms utilizados en aplicaciones basadas en microcontroladores.

De acuerdo a la naturaleza de una seal esta puede ser analgica o discreta. El microcontrolador BASIC
Stamp slo es capaz de admitir de estas ltimas, ms especficamente seales digitales binarias.

Seal Analgica Seal Digital Binaria

Es aquella seal que puede tomar infinitos valores posibles Es aquella seal discreta que slo admite dos valores
entre dos lmites, por lo cual, se denominan continuas. lgicos: el Cero (0) y el Uno (1).

Figura No. 2.1: Grfico de una seal analgica y cuatro digitales.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 24 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Pulsadores e Interruptores
Los perifricos de entrada ms simples y ms utilizados con los Microcontroladores son los pulsadores e
interruptores. Para conectarlos se utilizan las configuraciones mostradas en las figuras No. 2.2 y No. 2.3.

Figura No. 2.2: Figura No. 2.3:


Conexin activa baja con resistencia de pull-up. Conexin activa alta con resistencia de pull-down.
Fuente: Elaboracin Propia. Fuente: Elaboracin Propia.

EL REBOTE: ||||||||||..........||||||||||..........||||||| El sistema de desarrollo MDK-B28, posee 4


pulsadores tipo N.A. con conexin activa baja
Todos los dispositivos electromecnicos originan un similar a la figura No. 2.2. Los pulsadores estn
fenmeno denominado rebote en el momento en que
cambian de estado. El rebote produce una serie de
representados por los terminales PB1, PB2, PB3 y
oscilaciones con una duracin tpica de 10 a 20 ms. La PB4 en la regleta de conexiones. Adicionalmente,
aparicin de estas falsas transiciones se debe a que, siendo el MDK-B28 cuenta con la posibilidad de conectar
en ltima instancia un pulsador (o interruptor) un par de el mdulo SLCD-BD, el cual, posee un LCD y 6
lminas de material conductor que se unen para formar un
contacto elctrico, ste no se produce de manera
pulsadores tipo N.A. con conexin activa alta. Sin
instantnea, sino que, las rugosidades existentes en los embargo, estos pulsadores no tienen sus contactos
bordes del material colisionan repetidas veces hasta alcanzar en la regleta general de conexiones. En la figura
una posicin estable que permite definir si se efectu o no el No. 2.4. se muestra el banco de pulsadores del
contacto. Al ser los sistemas digitales muy veloces, el tiempo
que toma la seal en estabilizarse es suficiente para
sistema MDK-B28.
interpretar muchas transiciones en la lnea.

Figura No. 2.4: Fotografa del banco de pulsadores


del sistema MDK-B28.

Sistema de Desarrollo para MC, modelo MDK-B28 - 25 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Entradas y Salidas Digitales Opto-Aisladas.


Existen circunstancias en las cuales se hace necesario aislar una entrada
del microcontrolador, ello puede obedecer a: diferencia en la tensin de la
entrada y la de trabajo del microcontrolador, necesidad de proteger al
microcontrolador ante fallas elctricas en los circuitos externos que
eventualmente pudieran destruirlo. Ejemplo de ello, est implementado en
la tarjeta electrnica opto-aislada modelo DM-IO2 fabricada por ROSO
Electric Supply.

La DM-IO2, es una tarjeta electrnica diseada para trabajar dos canales


digitales independientes de entradas o salidas intercambiables que utilicen
mdulos industriales estndar de tamao completo desde un
microcontrolador BASIC Stamp 2p. La tarjeta DM-IO2 puede utilizarse con
mdulos AC/DC de hasta 280 Voltios y corrientes sobre los cuatro (4)
amperes; incluso mdulos con salida a contacto seco. Todos los mdulos
industriales brindan un aislamiento de 4000 VAC. Los conectores de la
tarjeta DM-IO2 son del tipo extrables para facilitar las labores de prueba y
mantenimiento en campo. La tarjeta DM-IO2 utiliza un controlador interno
(DS2406), el cual, asegura un nico nmero de identificacin de 64 bits
eliminando los errores de seleccin con una absoluta y garantizada
identidad. Cada tarjeta incluye un protector por esttica de al menos 27
KVolt, utilizando para ello el dispositivo, DS9503. Figura No. 2.5: Tarjeta DM-IO2

Especificaciones Tcnicas

Parmetro Min. Tpico Max.


Voltaje de Alimentacin (Vcc) Vdc. 6 9 15
Consumo (Icc) mamp dc, sin mdulos. --- --- 5
Consumo (Icc) mamp dc, con dos mdulos. --- 50 100
Dimensiones (Pulgadas) Aprox. --- 1.5x2.6 ---
Dimensiones (Milmetros) Aprox. --- 38x66 ---

Tabla No. 2.1: Especificaciones tcnicas de la Tarjeta DM-IO2.

Sistema de Desarrollo para MC, modelo MDK-B28 - 26 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Mdulos Digitales de entrada / salida


Estos mdulos proveen una indicacin visual mediante un LED y en aquellos mdulos de salida se ha
colocado un fusible reemplazable. Entre sus caractersticas ms relevantes tenemos:

El LED de status de entrada o salida es muy visible.


El fusible puede ser probado y cambiado sin desconectar al mdulo.
Acepta fusibles estndar y populares tipo CE, UL, CSA.
Las dimensiones de los mdulos entre diferentes fabricantes son las mismas.

Figura No. 2.6: Esquema Elctrico de Mdulos Digitales de Entrada / Salida.

Mdulo Entrada Mdulo Entrada Mdulo Entrada Mdulo Entrada


90-140 Vac/dc 3.3-32 Vdc 180-280 Vac/dc 10-60 Vac/dc
WRC WRC4-IA5S WRC4-IB5S WRC4-IM5S WRC4-IN5S
Potter Brumfield IAC-5 IDC-5 IAC-5A IAC-5E
OPTO-22 IAC5 IDC5D(B) IAC5A IDC5(G)
Grayhill 70-IAC5 70-IDC5 70-IAC5A 70-IDC5NP
Crouzedt/Gordos IAC5(N) IDC5(N) IAC5A IDC5(N)
Continental I/O3-IAC-05-000 I/O3-IDC-05-000 I/O3-IAC-05-A00 I/O3-IDC-05-A00

Tabla No. 2.2: Diferentes Mdulos de Entrada Digital.

Sistema de Desarrollo para MC, modelo MDK-B28 - 27 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Mdulo Salida Mdulo Salida Mdulo Salida Mdulo Salida


12-140 Vac Z.C. 3-60 Vdc 5-200 Vdc 0-100 Vdc
MOSFET
WRC WRC4-OA5S WRC4-OB5S WRC4-OC5S WRC4-OG5S
Potter Brumfield OAC-5 ODC-5 ODC-5A ---
OPTO-22 OAC5 ODC5 ODC5A ---
Grayhill 70-OAC5 70-ODC5 70-OAC5A 70-ODC24B
Crouzedt/Gordos OAC5 ODC5(F) ODC5A ODC24MA
Continental I/O3-OAC-05-A00 I/O3-ODC-05-A00 --- ---

Tabla No. 2.3: Diferentes Mdulos de Salida Digital.

Mdulo Salida Mdulo Salida Mdulo Salida Mdulo Salida


24-280 Vac Z.C. 24-280 Vac N.O. RELAY N.C. RELAY
IOOUT
WRC WRC4-OL5S WRC4-OM5SR WRC4-RO5S WRC4-RC5S
Potter Brumfield OAC-5A OAC5R --- ---
OPTO-22 OAC5A OAC5A11 ODC5R ODC5R5
Grayhill 70-OAC5A 70-OAC5A-1 70-ODC5R ---
Crouzedt/Gordos OAC5A OAC5(A)R ORR5 ---
Continental I/O3-OAC-05-A00 --- --- ---

Tabla No. 2.4: Diferentes Mdulos de Salida Digital.

Figura No. 2.7: Fotografa de Mdulos de entrada Digital (Izquierda) y Mdulos de Salida Digital (Derecha).
Fuente: www.opto22.com

Sistema de Desarrollo para MC, modelo MDK-B28 - 28 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Diodos LEDs
Un LED (Light Emitting Diode) es un perifrico de salida capaz de emitir
un haz de luz visible cuando por l circula una determinada cantidad de
corriente. Constituye el elemento de visualizacin ms comn que se
encuentra en cualquier tipo de aplicacin.

El sistema de Desarrollo MDK-B28 posee una barra de 8 LEDs conectados


a los pines P15, P14, P13, P12, P11, P10, P9 y P8 respectivamente, segn
se muestra en la figura No. 2.9. Cada LED est acompaado de una
resistencia de 470 para limitar la corriente que por l fluye a niveles
permisibles para el BASIC Stamp. En la figura No. 2.10 puede observarse
este arreglo de LEDs dentro del MDK-B28. Figura No. 2.8: Fotografa de diversos
LEDs.

Figura No. 2.9: Figura No. 2.10: Fotografa de la barra


Esquema elctrico de conexin de la barra de LEDs incluidos con el Sistema MDK-B28.
de LEDs incluidos con el Sistema MDK-B28.

Pantalla LCD
Si bien los LEDs son excelentes como elementos indicadores de salida,
habrn proyectos que requerirn proveer informacin ms completa al
usuario. Por supuesto, nada supera la pantalla de video de un PC, sin
embargo, estas son grandes costosas y casi siempre imprcticas para
realizar un proyecto con microcontroladores. Los mdulos LCD por otro
lado, son ideales para estas aplicaciones. Estos mdulos son en general
econmicos y permiten visualizar texto y variables en forma
alfanumrica. Figura No. 2.11: Fotografa de un LCD.

Sistema de Desarrollo para MC, modelo MDK-B28 - 29 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

La memoria RAM del BASIC Stamp contiene 32 bytes


organizados en 16 registros de 16 bits cada uno. Los
primeros tres registros estn reservados para el TIPOS DE MEMORIAS
direccionamiento y control de los pines de entrada-salida. Los
siguientes 13 registros estn disponibles y pueden ser
utilizados como variables de propsito general. EEPROM (Electrically Erasable Programmable
Read Only Memory): Utilizada para almacenar el
El registro INS, es slo de lectura y contiene el valor lgico cdigo del programa o para guardar datos en
forma permanente. Su contenido no se pierde al no
(0/1) de los pines P0 a P15, no importando, si estos se estar alimentada. El BS2p posee 8 bancos de 2
encuentran definidos como entradas o salidas. En la tabla No. Kbytes de este tipo de memoria.
2.5 se detalla la organizacin del registro INS.

El registro OUTS, es de lectura-escritura y contiene el estado RAM (Random Access Memory): Utilizada para
almacenar variables del programa y la
de los pines declarados como salidas. En la tabla No. 2.6 configuracin de los pines de E/S de
puede verse la organizacin del registro OUTS. microcontrolador. A diferencia de la EEPROM su
contenido se pierde al desconectarse de su fuente
Mediante la manipulacin de los bits del registro DIRS puede de alimentacin.
modificarse la configuracin de un determinado Pin de E/S.
Colocando en 0 un bit de DIRS, se har que este terminal RAM SCRATCHPAD
sea una entrada. Por ejemplo, si se coloca el bit 15 de DIRS Es empleada para el intercambio de datos entre
(DIR15) en 0, P15 ser una entrada. Al colocar en 1 a un programas que estn ubicados en bloques de
bit de DIRS, el correspondiente terminal ser una salida. En programacin distintos. A diferencia de la RAM
convencional, en sta no existe un nombre
la tabla No .2.7 se detalla la organizacin de este registro. asignado directamente a una direccin de
memoria. El BS2p tiene 128 bytes de RAM
Cuando se energiza al BASIC Stamp, todas las localidades de Scratchpad.
memoria RAM son inicializadas en 0, as que todos los pines
de P0 a P15 quedarn declarados como entradas y al
momento de convertirse en salidas estarn en estado bajo.

INS

INH INL

IND INC INB INA

IN15 IN14 IN13 IN12 IN11 IN10 IN9 IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1 IN0

Tabla No. 2.5: Registro INS.

Sistema de Desarrollo para MC, modelo MDK-B28 - 30 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

OUTS

OUTH OUTL

OUTD OUTC OUTB OUTA

OUT15 OUT14 OUT13 OUT12 OUT11 OUT10 OUT9 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 OUT0

Tabla No. 2.6: Registro OUTS.

DIRS

DIRH DIRL

DIRD DIRC DIRB DIRA

DIR15 DIR14 DIR13 DIR12 DIR11 DIR10 DIR9 DIR8 DIR7 DIR6 DIR5 DIR4 DIR3 DIR2 DIR1 DIR0

Tabla No. 2.7: Registro DIRS.

Sistema de Desarrollo para MC, modelo MDK-B28 - 31 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

FORNEXT
Crea un lazo iterativo que se repetir hasta que el Contador sobrepase al Valor Final.

FOR Contador = Valor Inicial TO Valor Final {STEP Incremento} ... NEXT

Contador: Variable de control del lazo.


Valor Inicial: Valor de inicio de contador.
Valor Final: Valor al que deber llegar la cuenta para dar por finalizado el ciclo.
Incremento: Parmetro opcional que indica la cantidad en la cual Contador se va a incrementar o a
disminuir en cada repeticin del lazo.

Si se declara a Valor Final menor que Valor Inicial, la variable de control se disminuir en la cantidad
expresada por el parmetro Incremento, si ste se omite se considera igual a uno (1).

IF THEN ELSE
Esta construccin permite decidir en base a una o varias expresiones condicionales la ejecucin, o no, de
determinados segmentos de cdigo.

IF Expresin Condicional THEN


Instruccin(es) a Ejecutar
{ ELSEIF Expresin Condicional THEN
Instruccin(es) a Ejecutar}
{ ELSE
Instruccin(es) a Ejecutar}
ENDIF

Expresin Condicional: Es una expresin cualquiera que puede ser evaluada como verdadera o
falsa. Puede ser una comparacin simple o compleja.

Sistema de Desarrollo para MC, modelo MDK-B28 - 32 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Tambin puede usarse en formato de una lnea, con lo cual, se elimina el uso ENDIF.

IF Expr Cond THEN Inst a Ejecutar { ELSEIF Expr Cond THEN Instr a Ejecutar} { ELSE Instr a Ejecutar}

PIN
Es una definicin de tipo utilizada para simplificar la declaracin de los terminales de Entrada/Salida. El
compilador determinar de acuerdo a la instruccin, si el valor de Pin se debe considerar como una
constante o como una variable de E/S (estado del terminal).

PIN Pin

SELECT... CASE
Es una estructura de decisin que permite evaluar una expresin y dependiendo del resultado obtenido
ejecutar un segmento de cdigo.

SELECT Expresin
CASE Condicin
Instrucciones
{CASE Condicin
Instrucciones
CASE ELSE
Instrucciones }
ENDSELECT

Expresin: Variable, constante o expresin que ser evaluada.


Condicin: Variable, constante o expresin cuyo valor se compara con el resultado obtenido al
evaluar la Expresin. Puede llevar operadores condicionales en el formato: CASE operador Valor.

Se puede emplear la palabra TO para hacer referencia a un rango de valores, incluyendo los extremos de
dicho rango. Mltiples condiciones pueden necesitarse en un mismo CASE; stas se escriben una a
continuacin de la otra, separadas por comas (,).

Sistema de Desarrollo para MC, modelo MDK-B28 - 33 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

GOSUB
Esta instruccin se utiliza para llamar a una subrutina. En trminos generales, lo que hace es almacenar la
direccin de la instruccin que sigue al GOSUB y saltar a la etiqueta especificada por Direccin. Una vez
que ha ejecutado la subrutina, el retorno al programa se hace mediante la instruccin RETURN.

GOSUB Direccin

Un programa escrito en PBASIC puede contener hasta 256 llamadas a subrutinas. El mximo de GOSUBs
que se pueden concatenar es de cuatro (4).

ON...GOSUB
Efecta el llamado a una subrutina dependiendo del valor de un ndice. El ndice puede ser una variable,
constante o expresin de 0-255; si este valor es excedido o supera la dimensin del listado de rutinas,
PBASIC ignora la instruccin ON...GOSUB y contina con la ejecucin de la instruccin que prosegua a
sta.

ON ndice GOSUB Etiqueta0 {, Etiqueta1, Etiqueta2,.. EtiquetaN}

RETURN
Permite retornar desde una subrutina, asumiendo que hubo un GOSUB u ON..GOSUB ejecutado
previamente.

RETURN

Este comando enva al programa a ejecutar la instruccin que se encuentra en la direccin que sigue al
GOSUB ms reciente. Si el programa encuentra a un RETURN sin antes haber ejecutado una llamada a
una rutina con GOSUB, el BASIC Stamp retornar a la primera lnea ejecutable del programa.

TOOGLE
Invierte el estado de un Pin de salida. Declara al terminal como salida modificando el registro DIRS y luego
invierte el estado del bit correspondiente en el registro de salidas OUTS.

TOOGLE Pin

Sistema de Desarrollo para MC, modelo MDK-B28 - 34 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

COUNT
Cuenta el nmero de ciclos (0-1-0 1-0-1) que ocurren en un terminal durante un perodo de tiempo.

COUNT Pin, Duracin, Conteo

Pin: Variable, constante o expresin de (0 - 15) que indica cual terminal de E/S ser utilizado, el
mismo ser convertido en entrada.
Duracin: Variable, constante o expresin de (0-65535) que especifica el tiempo durante el cual, se
har el conteo. La unidad de tiempo que utiliza el BS2p para este comando es de 287 s.
Conteo: Variable que almacena el resultado de la cuenta.

BUTTON
Esta instruccin es una til herramienta que permite: eliminar el rebote en entradas digitales, ejecutar auto
repeticiones de un segmento de cdigo y saltar a una direccin dependiendo del estado de un pulsador.

BUTTON Pin, Presionado, Retardo, Velocidad, Espacio de Trabajo, Estado, Etiqueta

Pin: Variable, constante o expresin (0-15) que especifica el terminal de entrada empleado.
Presionado: Variable, constante o expresin (0-1) que especifica el estado lgico que ocurre en caso
de ser oprimido el pulsador.
Retardo: Variable, constante o expresin (0-255) que especifica el tiempo que el pulsador debe
mantenerse presionado para iniciar las auto repeticiones. Si es 0 no se elimina el rebote y no hay
auto repeticin, si es 255 se elimina el rebote pero no hay auto repeticin.
Velocidad: Variable, constante o expresin (0-255) que especifica el numero de ciclos de la
instruccin BUTTON que deben transcurrir antes de comenzar las auto repeticiones.
Espacio de Trabajo: Es una variable tipo byte usada internamente por el comando BUTTON que no
debe ser alterada o modificada por ninguna otra instruccin.
Estado: Variable, constante o expresin (0-1). Especifica el estado del pulsador para que ocurra el
salto (0= no presionado, 1= presionado).
Etiqueta: Especifica el lugar a donde se producir el salto.

Sistema de Desarrollo para MC, modelo MDK-B28 - 35 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Modificadores de Variables
En PBASIC se permite hacer referencia a bits independientes de una variable, a travs, del conjunto de
modificadores que se muestran en la tabla No. 2.8.

Modificador Definicin
LOWBYTE Byte menos significativo (LSByte) de una palabra (word)
HIGHBYTE Byte ms significativo (MSByte) de una palabra (word)
BYTE0 Byte 0 (LSByte) una palabra (word)
BYTE1 Byte 1(MSByte) de una palabra (word)
LOWNIB Nibble inferior de una palabra o de un byte
HIGHNIB Nibble superior de una palabra o de un byte
NIB0 Primer nibble de una palabra o de un byte
NIB1 Segundo nibble de una palabra o de un byte
NIB2 Tercer nibble de una palabra
NIB3 Cuarto nibble de una palabra
LOWBIT LSB BIT de una palabra, byte o nibble
HIGHBIT MSB BIT de una palabra, byte o nibble
BIT0 Primer bit (LSB) de una palabra, byte o nibble
BIT1 Segundo bit de una palabra, byte o nibble
BIT2 Tercer bit de una palabra, byte o nibble
BIT3 Cuarto bit de una palabra, byte o nibble
BIT4BIT7 Bits 4 al 7 de una palabra o byte
BIT8BIT15 Bits 8 al 15 de una palabra

Tabla No. 2.8: Modificadores de variable del Basic Stamp 2p.


Fuente: BASIC Stamp Manual v2.0.

WORD
BYTE1 (HIGH BYTE) BYTE0 (LOW BYTE)

NIB3 NIB2 NIB2 NIB1

BIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Tabla No. 2.9: Modificadores de Variable.


Fuente: The Nuts and Volts of BASIC Stamps Volume 4, p54.

Sistema de Desarrollo para MC, modelo MDK-B28 - 36 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

El StampPlot Pro V3, es una aplicacin de la casa Selmaware Solutions, que permite construir una interfaz
para la visualizacin de informacin proveniente desde un microcontrolador. Es una herramienta poderosa
que permite construir diversos tipos de grficas y animaciones, almacenar datos e intercambiar informacin
entre el microcontrolador y el PC.

Para configurar y controlar el comportamiento de las grficas, el microcontrolador debe de enviarle al


StampPlot Pro, a travs del puerto serial, una serie de comandos. Algunos de estos se detallan el la tabla
No. 2.10. Un comando enviado al StampPlot Pro, se reconoce como una cadena ASCII que se inicia con el
carcter ! (Exclamacin).

Comando Descripcin
!TITL titulo Ttulo de la ventana.
!USRS mensaje Permite mostrar un mensaje en el recuadro User Status en el PC.
!BELL Permite emitir un sonido por el altavoz del PC.
!AMAX Valor Fija el mximo valor analgico del eje vertical de la grfica.
!AMIN Valor Fija el mnimo valor analgico del eje vertical de la grfica.
!SPAN minValor, maxValor Permite fijar el SPAN o recorrido de la grfica.
!AMUL, Valor Permite fijar un factor de multiplicacin para los datos entrantes.
!TMAX Valor Fija el tiempo mximo en segundos del eje horizontal de la grfica.
!TMIN Valor Fija el tiempo mnimo en segundos del eje horizontal de la grfica.
!PNTS Valor Permite fijar el nmero mximo de datos que se recibirn.
!PLOT ON/OFF Permite habilitar o deshabilitar la graficacin de los datos.
!RSET Reinicia la grfica.
!CLRM Permite limpiar la lista de mensajes.
!CLMM Permite limpiar los valores mximo y mnimo registrados.
!CMMR ON/OFF Permite habilitar o deshabilitar el borrado del registro de valores mnimo y mximo en el reset.
!MAXS Detiene la grfica cuando se alcanza la cantidad mxima de puntos o tiempo.
!MAXR Reinicia la grfica cuando se alcanza la cantidad mxima de puntos o tiempo.
!MAXT Define el tiempo mximo de duracin de la grfica.
!MAXP Define la cantidad mxima de puntos que contendr la grfica.
!SAVD ON/OFF Permite habilitar o deshabilitar el guardar en archivo de los datos digitales y analgicos.
!SAVM ON/OFF Permite guardar los mensajes en un archivo.
!DELD Borra el archivo de datos.
!DELM Borra el archivo de mensajes.
!TBAR OFF Permite habilitar/deshabilitar la barra de herramientas.
!MENU OFF Permite habilitar/deshabilitar el men de opciones del programa.

Tabla No. 2.10: Algunos comandos de configuracin del StampPlot.


Fuente: StampPlot Pro V3 Control Instruction Summary.

Sistema de Desarrollo para MC, modelo MDK-B28 - 37 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

ALGUNAS POTENCIALIDADES DEL


HERRAMIENTAS del STAMP PLOT V3 STAMPPLOT V3
Grafica hasta 10 variables analgicas y 8
MULTIMEDIA
digitales simultneamente.
StampPlot Pro permite colocar archivos de imagen
Permite usar escala lineal o logartmica y
dentro de las grficas, en el fondo o en ciertos objetos.
asiste al microcontrolador en clculos
Tambin puede reproducir archivos de sonido.
matemticos.
Contiene instrucciones para reproducir
CONTROLES GRFICOS
archivos de sonido y desplegar imgenes.
Los controles grficos son elementos tpicos de una
Fcil creacin de interfases grficas (GUI)
interfaz en un computador y pueden ser usados para
para monitoreo o control interactivo.
mostrar informacin, controlar la grfica o un establecer
Guarda archivos de grficas e imgenes en
un control interactivo con el microcontrolador. Estos
formato *.jpg
objetos incluyen barras de deslizamiento, cajas de texto,
La configuracin se puede hacer desde el
medidores, barras de progreso, botones, entre otros.
Microcontrolador o el PC (Macro).
MACROS
Un macro es un conjunto de instrucciones que el
StampPlot interpreta y ejecuta para realizar una
determinada tarea. Los macros se almacenan en
archivos de texto con extensin *.spm. Su uso permite
optimizar el tiempo de ejecucin y disminuir el tamao
del programa almacenado en el microcontrolador.

DIBUJO
Cuenta con una variedad de instrucciones para dibujar
en una grfica o en el fondo de la aplicacin.
Pudindose colocar imgenes, lneas, crculos y textos.

APLICACIONES EXTERNAS.
Con StampPlot Pro, cualquier aplicacin externa (que se
ejecute bajo el sistema operativo Windows) puede ser
ejecutada y recibir los datos provenientes de un
microcontrolador.

CONTROL POR INTERNET:


Normalmente el StampPlot Pro se conecta por medio del
puerto serial del computador al microcontrolador, pero
tambin puede conectarse va TCP/IP a otro
computador, para aplicaciones de control y adquisicin
de datos en forma remota.
Figura No. 2.12: Pantalla de inicio del StampPlot Pro.

Sistema de Desarrollo para MC, modelo MDK-B28 - 38 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Objetivos: Declarar los pines del microcontrolador BASIC Stamp 2p como entradas o salidas. Utilizar modificadores de variable para
referir a una subdivisin de una variable. Usar el programa StampPlot Pro para graficar seales digitales.

Elementos a Utilizar Conecte los pulsadores PB1 y PB2 a los terminales P0 y


P1 del BASIC Stamp. Para hacer esto, identifique en el
terminal de conexiones los puntos etiquetados como
(1) Un BASIC Stamp 2p.
(1) Banco de pulsadores del sistema MDK-B28.
PB1 y PB2, a continuacin nalos con un cable a los
(1) Barra de LEDs del sistema MDK-B28. puntos P0 y P1, respectivamente. Teniendo a la mano
(1) Un cable serial DB9 el esquema elctrico del sistema de desarrollo MDK-
(1) StampW (v2.0 beta 2.1 o superior). B28, tmese un tiempo para identificar todos los puntos
(1) Programa StampPlot Pro V3 (release 1.6 o sup).
disponibles en el terminal de conexiones, ello le
ayudar a familiarizarse con el sistema.

Inicie el programa BASIC Stamp Editor. Transcriba y descargue al microcontrolador el programa 2_1.bsp.
Presione el pulsador PB1 y observe que ocurre, repita para el pulsador PB2.

'Programa 2_1.bsp
'Este programa tiene por objetivo mostrar:
'1) La declaracin de entradas y salidas mediante la manipulacin directa del reg.
' de control DIRS
'2) El uso de los modificadores de variable
'3) La configuracin de una grfica con StampPlot desde el microcontrolador
'4) La forma de graficar seales digitales con StampPlot
'=================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'_________________________________________________________________________________
'Declaracin de Entradas/Salidas

DIR0 = 0 'Declara al Pin P0 como entrada


DIRS.LOWBYTE.NIB0.BIT1=0 'Declara al Pin P1 como entrada
DIRH = $FF 'Declara los pines de P15 a P8 como salidas
'_________________________________________________________________________________

Sistema de Desarrollo para MC, modelo MDK-B28 - 39 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Continuacin del Programa 2_1.bsp

'Configuracin de la grfica

PAUSE 500
DEBUG "!NEWP ",CR 'Crea una nueva grfica
DEBUG "!TITL Manejo E/S Digitales", CR 'Ttulo para la ventana del StampPlot
DEBUG "!TMAX 10", CR 'Conf. el tiempo eje X a un mx.10 seg
DEBUG "!AMAX 5",CR 'Limita el valor mximo del eje Y
DEBUG "!AMIN 0", CR 'Limita el valor mnimo del eje Y
DEBUG "!MAXT ",CR 'Mximo de la grfica en tiempo
DEBUG "!USRS Seguimiento de un pulsador",CR 'Mensaje en el cuadro de status
DEBUG "!MAXR ",CR 'Re-inicializar al transcurrir 10 seg.
DEBUG "!COLR B15,A12,D12,S0,G0",CR 'Configuracin de colores
DEBUG "!PLOT ON ",CR 'Empieza a graficar los datos
DEBUG "!RSET ",CR 'Re-inicializar la grfica

'Programa Principal:
DO 'Ciclo infinito
OUT8=IN0 'Asigna a las salidas el estado de los
OUT9=IN1 'pulsadores de entrada
DEBUG IBIN OUT8,BIN OUT9,CR 'Enva los bits al StampPlot
PAUSE 50
LOOP
'___________________________________________________________________________________

Al inicializarse el programa se abrir un debug terminal, observe el contenido desplegado en el mismo y


verifique que no existan errores de trascripcin en la seccin de configuracin de la grfica. Luego cierre el
debug terminal, haciendo clic sobre el botn Close, dejando as el puerto del computador disponible para
el programa StampPlot Pro.

A continuacin inicie el programa StampPlot Pro haciendo clic en: Inicio/Programas/StampPlot Pro Versin 3/
StampPlotV3.exe. Para permitir la comunicacin, en la barra de herramientas seleccione del men Plot la
opcin Connected, ver figura No. 2.13.

Presione el pulsador de RESET del sistema de desarrollo MDK-B28. Al hacer esto, ver como se comienza a
dibujar una grfica como la mostrada en la figura No. 2.14. Al finalizar la experiencia presione F6 para
permitir programar al BASIC Stamp. No desconecte los pulsadores PB1 y PB2.

Sistema de Desarrollo para MC, modelo MDK-B28 - 40 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Figura No. 2.13: Detalle del StampPlot V3.


Fuente: Elaboracin Propia.

Figura No. 2.14:


El programa StampPlot Pro, graficando el
estado de los pulsadores del programa
2_1.bsp.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 41 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Objetivos: Mostrar la existencia del rebote en interruptores mecnicos. Utilizar la directiva PIN para declarar terminales de E/S.

Descargue al microcontrolador el programa 2_2.bsp. Presione el pulsador PB1 repetidas veces y observe el
valor que aparece en el debug terminal. Debe obtener un resultado similar al de la figura No. 2.15.

Mediante la instruccin COUNT en PBASIC se


cuentan la cantidad de pulsos que son
aplicados en un Pin del BASIC Stamp. Un
pulso es un cambio de estado lgico y el
retorno al mismo luego de transcurrido un
perodo de tiempo. En el programa 2_2.bsp,
resulta evidente, que an cuando siempre se
oprime el pulsador una vez, el pulso que
ocurren no es uno, de hecho, la cantidad de
pulsos no es siquiera repetitiva. Esto se debe
al efecto del rebote. El BASIC Stamp cuenta
cuantos rebotes ocurren en el pulsador
durante unos 20 ms. Segn lo mostrado en la
figura No. 2.15, bajo el texto PULSOS
DETECTADOS : 4, el pulsador produjo varios
pulsos falsos al momento de ser presionado.
Figura No. 2.15: Debug Terminal para el programa 2_1.bsp

'Programa 2_2.bsp
'Este programa tiene por objetivo mostrar:
'1) La existencia del efecto de rebote en una entrada digital
'2) La Declaracin de una entrada mediante INPUT
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

x VAR Word 'Pulsos que ocurren


PB1 CON 0 'Ubicacin del pulsador PB1
'___________________________________________________________________________________

Sistema de Desarrollo para MC, modelo MDK-B28 - 42 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Continuacin del Programa 2_2.bsp

'Programa Principal:
INPUT PB1 'Declara al terminal P0 como entrada
DO
COUNT PB1,70,x 'Cuenta por 70*287 us = 20 ms
IF x<>0 THEN DEBUG CLS, "PULSOS DETECTADOS: ",DEC x,CR : x = 0
LOOP

Sin embargo, cuando se trabaja con un BASIC Stamp el efecto del rebote es poco apreciable, para verificar
esto descargue el programa 2_3.bsp.

'Programa 2_3.bsp
'Este programa tiene por objetivo mostrar:
'1) Que los rebotes en los pulsadores afectan poco al BASIC Stamp
'2) La declaracin de un terminal de E/S mediante PIN
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
PB1 PIN 0 'Terminal donde se conecta a PB1
Conteo VAR Word 'Cuenta que se incrementa cada vez que se oprime a PB1
Pulsos VAR Word 'Cantidad de rebotes que ocurren al liberar a PB1
'___________________________________________________________________________________
'Programa Principal:
DO
DO WHILE PB1 = 1 : LOOP 'Esperar que se presione a PB1
Conteo = Conteo + 1 'Contar el pulso
DO WHILE PB1 = 0 : COUNT PB1,70,Pulsos : LOOP 'Mientras se PB1 est presionado,se
DEBUG CLS,? Conteo,? Pulsos 'cuenta la cantidad de rebotes que
LOOP 'ocurren en P0 y se muestra por el
'debug terminal
'___________________________________________________________________________________

Presione varias veces el pulsador PB1 y observe que ocurre. La variable Conteo almacena el nmero de
veces que el BASIC Stamp detect que el pulsador fue oprimido, mientras que la variable Pulsos cuenta el
nmero de transiciones 0-1-0 que recibi el terminal P0 antes de volver a su estado inicial.

Sistema de Desarrollo para MC, modelo MDK-B28 - 43 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Por qu si hay rebote el incremento en la


variable Conteo es ordenado, limpio y de uno
en uno?. La respuesta a esto se encuentra en
la velocidad de ejecucin de las instrucciones
del BASIC Stamp 2p. Un BS2p ejecuta en
promedio unas 12000 instrucciones por
segundo, es decir, que cada instruccin en
teora se ejecutara en 83.33 s. Si se omite
la instruccin DEBUG del programa 2_3.bsp,
podramos hacer las siguientes
aproximaciones: El lazo DO WHILE es una
instruccin que efecta una comparacin y
luego ejecuta un salto, por lo cual, su tiempo
de ejecucin puede equipararse a dos
instrucciones tpicas. Existen dos lazos de este
tipo que equivalen a cuatro instrucciones.
Figura No. 2.16: Debug Terminal para el programa 2_2.bsp

La instruccin de suma de la variable Conteo y el salto que implica el lazo exterior DO...LOOP se pueden
considerar instrucciones simples, por lo cual, todo el programa puede verse como un conjunto de 6 lneas de
cdigo que al ejecutarse demoran al menos 0.5 ms. Esto quiere decir que cualquier cambio que ocurra en el
terminal P0 y que dure menos de 0.5 ms no podr ser apreciado por el BASIC Stamp.

El manejo de entradas digitales no se reduce solamente a eliminar el rebote que pueda existir en los
pulsadores e interruptores. Surgen otros problemas como el lograr que un segmento de cdigo se ejecute
una sola vez al oprimir un pulsador o que se ejecute repetidas veces mientras se encuentra el pulsador
presionado. Tambin puede requerirse que, sin importar el estado del pulsador otras partes del cdigo sean
ejecutadas (por ejemplo el monitoreo de otras entradas). El ejercicio # 3 de ste captulo, presenta las
herramientas a utilizar en estos casos.

Sistema de Desarrollo para MC, modelo MDK-B28 - 44 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Objetivos: Implementar soluciones de software para la eliminacin del rebote que incluyen acciones como la generacin de retardos y
la utilizacin de la instruccin BUTTON, como una herramienta para este fin.

Mantenga conectado los pulsadores utilizados en el


Elementos a Utilizar circuito anterior. Para este ejercicio, se desea lograr un
programa que opere de manera que similar al diagrama
(1) Un BASIC Stamp 2p.
de flujo que se muestra en la figura No. 2.17. Adems,
(1) Un cable serial DB9. se desea que cada vez que se presione algn pulsador,
(1) StampW (v2.0 beta 2.2 o superior). el respectivo conteo debe incrementarse en una unidad.
(1) Programa StampPlot Pro V3 (release 1.6). Si se presionan ambos pulsadores ambas cuentas
(1) Banco de pulsadores.
(1) Banco del LEDS.
debern incrementarse. Los contadores C0 y C1 sern
de cuatro bits y se desplegar su valor en la barra de
LEDs del sistema de desarrollo.

INICIO

Declarar P0 y P1 como entradas ENTRADAS ASINCRNICAS Y


P8 a P15 como salidas RPIDAS

Cuando se utiliza a un BASIC Stamp para


el monitoreo de entradas digitales que
Si Presionado presentan cambios muy rpidos y de
PB1 corta duracin, el preguntar por el
C0 = C0+ 1 estado de las mismas puede producir
No resultados errneos. Para este tipo de
aplicaciones, existen comandos que
Si responden a velocidades superiores que
Presionado
las instrucciones de E/S de uso comn y
PB2
que sern empleados en captulos
posteriores (COUNT es uno de ellas).
No
C1 = C1 + 1

Figura No. 2.17: Diagrama de flujo para el programa 2_4.bsp

Sistema de Desarrollo para MC, modelo MDK-B28 - 45 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

A continuacin, inicie el BASIC Stamp Editor y dentro del entorno de trabajo del Stamp, trascriba el
programa 2_4.bsp

Oprima a PB1 y PB2 varias veces y observe el resultado.

'Programa 2_4.bsp
'Este programa tiene como objetivos:
'1) Utilizar la barra de LEDs como dispositivo de salida
'2) Implementar dos contadores simples de 4 bits
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

C0 VAR Nib 'Contador 0


C1 VAR Nib 'Contador 1
'___________________________________________________________________________________
'Programa Principal

DIRH = $FF
DO
IF IN0 = 0 THEN C0 = C0 + 1 'Si se presion PB1 incrementar C0
IF IN1 = 0 THEN C1 = C1 + 1 'Si se presion PB1 incrementar C1
OUTH = C0<<4 + C1 'Muestra C0 en parte alta del byte
LOOP

Este programa implementa una solucin al problema planteado, pero incurre en el error de no verificar, que
el pulsador se libere una vez que ste ha sido presionado. El programa 2_5.bsp, implementa una mejora
importante. Ejectelo y vea su comportamiento.

'Programa 2_5.bsp
'Este programa tiene por objetivo mostrar:
'1) El uso de IF...THEN...ELSE para discriminar entre mltiples opciones
'2) Eliminacin del rebote por medio de retardo
'3) Como ejecutar un segmento de cdigo una vez al presionar un pulsador
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________

Sistema de Desarrollo para MC, modelo MDK-B28 - 46 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Continuacin del Programa 2_5.bsp

'Declaracin de Variables y Constantes


Sw VAR Nib 'Variable que contiene el estado de los pulsadores
C0 VAR Nib 'Contador 0
C1 VAR Nib 'Contador 1
'___________________________________________________________________________________
'Programa Principal

DIRH = $FF 'P8 a P15 como salidas


DO
Sw = (IN1 <<1 + IN0 ) 'Determina cual pulsador fue presionado
IF Sw=0 THEN 'Ambos pulsadores presionados
C0 = C0 + 1 'Incrementa Contador 0
C1 = C1 + 1 'Incrementa Contador 1
ELSEIF Sw=1 THEN 'Presionado pulsador PB2
C1 = C1 + 1 'Incrementa Contador 1
ELSEIF Sw=2 THEN 'Presionado pulsador PB1
C0 = C0 + 1 'Incrementa Contador 2
ENDIF
OUTH = C0<<4 + C1 'Muestra cuentas en barra de LEDs
Liberar: 'Se espera hasta que se liberen los pulsadores
PAUSE 20 'Espera que las seales se estabilicen eliminando el rebote
IF Sw =(IN1 <<1 + IN0 ) THEN Liberar
LOOP

Para lograr que el conteo sea efectuado de unidad en unidad, cada vez que se presionan y liberan PB1 y
PB2, el programa 2_5.bsp utiliza una variable llamada (Sw), en la cual, se almacena el estado de los
pulsadores. La presencia de esta variable permite efectuar la eliminacin de posibles rebotes en ambos
pulsadores de una manera muy simple. El retardo colocado en el lazo que espera un nuevo cambio en el
estado de PB1 y PB2, garantiza que las seales se estabilicen antes de empezar un nuevo ciclo de programa.

La construccin IF...THEN...ELSEIF, permite discriminar entre las posibles combinaciones de valores que
representan el estado de los pulsadores. Al analizar el comportamiento del programa usted ver que al
presionar ambos pulsadores, si uno se mantiene presionado y el otro se oprime varias veces, el programa no
funciona correctamente. Para explicar el por qu de esto, supngase que PB1 se deja presionado y se
comienza a presionar y a liberar alternadamente a PB2. Cuando ambos se encuentren activos (en 0 V), se
cumplir la condicin Sw=0, con lo cual, ambos contadores se incrementarn. Al liberar a PB2, la condicin
Sw=2 se har vlida, entonces el contador C0 se incrementar. El programa 2_6.bsp corrige tal

Sistema de Desarrollo para MC, modelo MDK-B28 - 47 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

comportamiento mediante el uso de una bandera, adems se ha empleado la funcin SELECT..CASE. Al ser
la discriminacin del estado de los pulsadores una seleccin de acuerdo al valor de una expresin numrica
(y no condicional o lgica), la funcin SELECT...CASE representa una mejor alternativa de programacin
que una construccin del tipo IF...THEN...ELSEIF.

'Programa 2_6.bsp
'Este programa tiene por objetivo mostrar:
'1) El uso de SELECT..CASE para discriminar entre mltiples opciones
'2) Eliminacin del rebote por medio de retardo
'3) Como ejecutar un segmento de cdigo una vez al presionar un pulsador
'====================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'____________________________________________________________________________________
'Declaracin de Variables y Constantes
Sw VAR Nib 'Variable que contiene el estado de los pulsadores
C0 VAR Nib 'Contador 0
C1 VAR Nib 'Contador 1
Band VAR Bit 'Bandera usada para el manejo de presin simultnea

'____________________________________________________________________________________
'Programa Principal

DIRH = $FF 'P8 a P15 como salidas


DO
'Determina cual pulsador fue presionado
Sw = (IN1 <<1 + IN0 )
SELECT Sw
CASE = 0
IF Band = 0 THEN C0 = C0 + 1 : C1 = C1 + 1: Band = 1 'Ambos presionados
CASE = 1
IF Band = 0 THEN C1 = C1 + 1 : Band = 1 ELSE C0 = C0 + 1 'Presionado PB1
CASE = 2
IF Band = 0 THEN C0 = C0 + 1: Band = 1 ELSE C1 = C1 + 1 'Presionado PB2
CASE ELSE
Band = 0 'Ninguno presionado
ENDSELECT
Liberar:
OUTH = C0<<4 + C1 'Actualizar barra de LEDs
PAUSE 20 'Garantiza que no hay rebote
IF Sw =(IN1 <<1 + IN0 ) THEN Liberar 'Esperar que se liberen los pulsadores
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 48 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Finalmente, el programa 2_6.bsp cumple con el enunciado deseado y sus resultados son totalmente
satisfactorios. Pero desde el punto de vista de programacin, resulta ser extremadamente ineficiente. El
programa pierde casi todo el tiempo de ejecucin dentro de un lazo de espera, sin poder ejecutar otras
instrucciones.

Para subsanar todas las dificultades planteadas hasta el momento, PBASIC incluye una poderosa instruccin
llamada BUTTON. BUTTON no slo permite eliminar rebote sino que puede efectuar auto repeticin de un
segmento de cdigo mientras se mantenga el interruptor (o el pulsador) en un estado deseado, trabaja con
conexin de pulsadores en configuracin activa baja o alta, permite seleccionar si se toma un salto segn se
presione o no el pulsador y adems no detiene la ejecucin del resto del programa.

El programa 2_7.bsp, cumple con el enunciado del ejercicio de una manera sencilla y bastante eficiente.

'Programa 2_7.bsp
'Este programa tiene por objetivo mostrar:
'1) El uso de la funcin BUTTON para el manejo de pulsadores e interruptores
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Entradas/Salidas

C0 VAR Nib 'Contador 0


C1 VAR Nib 'Contador 1
esp0 VAR Byte 'Espacio de trabajo para PB1
esp1 VAR Byte 'Espacio de trabajo para PB2
PB1 PIN 0 'Terminal P0
PB2 PIN 1 'Terminal P1
'___________________________________________________________________________________
'Programa Principal
DIRH = $FF 'P8 a P15 como salidas
DO
CheckPB1:
OUTH = C0<<4 + C1 'Muestra la Cuenta
BUTTON PB1,0,255,0,esp0,0,CheckPB2 'Si no se presiona se verifica el PB2
C0=C0 + 1 'Si se presiona PB1 se increm. a Contador 0
CheckPB2:
BUTTON PB2,0,255,0,esp1,0,CheckPB1: 'Si no se presiona se verifica el PB1
C1=C1 + 1 'Si se presiona PB2 se increm. a Contador 1
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 49 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Objetivos: Implementar un contador UP/DOWN. Graficar la cuenta como una seal analgica con StampPlot Pro.

Sin desconectar el montaje anterior, arme el circuito de la figura No. 2.18.

Elementos a Utilizar

(1) Un BASIC Stamp 2p.


(1) Un cable serial DB9.
(1) Banco de pulsadores.
(1) Banco del LEDS.
(1) StampW (v2.0 beta 2.2 o superior).
(1) Programa StampPlot Pro V3 (release 1.6).

Descargue y ejecute el programa 2_8.bsp.


Cierre el debug terminal, que aparecer en su PC e
inicialice el software StampPlot Pro. Presione F6
para conectar al BASIC Stamp y continuacin
reinicie al microcontrolador. Figura No. 2.18: Esquema elctrico del ejercicio #3.

Lo primero que aparecer en pantalla es un pequeo cuadro de dialogo como el de la figura No. 2.19. Este
cuadro junto con la configuracin del grfico, han sido enviados desde el microcontrolador hacia el
computador. El programa 2_8.bsp, implementa un contador ascendente/descendente, la cuenta se efecta
al pulsar PB1. Con el pulsador PB3 se reinicia al contador mientras que por medio PB2 se cambia el sentido
del conteo.

'Programa 2_8.bsp
'Este programa tiene por objetivo mostrar:
'1) Como implementar un contador digital de 8 bits UP/DOWN
'2) Usar la funcin ON..GOSUB
'3) Graficar valores analgicos con el StampPlot Pro
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Entradas/Salidas
Conteo VAR Byte 'Variable que mantiene la cuenta
esp1 VAR Byte 'Espacio de trabajo para PB1
esp2 VAR Byte 'Espacio de trabajo para PB2
esp3 VAR Byte 'Espacio de trabajo para PB3

Sistema de Desarrollo para MC, modelo MDK-B28 - 50 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Continuacin del Programa 2_8.bsp

Modo VAR Bit 'Variable usada para conocer el sentido de la cuenta

Contar PIN 0 'Pulsador de conteo en PB1


UpDown PIN 1 'Pulsador para cambiar el sentido de la cuenta en PB2
Reset PIN 2 'Pulsador de re-inicializacin en PB3
'___________________________________________________________________________________
'Programa Principal

GOSUB StampPlot 'Configura la grfica del StampPlot


Modo = 0

DO
BUTTON Reset ,0,255,0,esp1,1,Reiniciar 'Si presiona Reset reinicia la cuenta
BUTTON UpDown,0,255,0,esp2,1,ModoSeleccion 'Si se presiona UpDown cambia el modo
BUTTON Contar,0,255,0,esp3,1,Cuenta 'Si se presiona va a Cuenta
Fin:
LOOP

Cuenta:
ON modo GOSUB CuentaArriba,CuentaAbajo 'De acuerdo al modo se ejecuta GOSUB
GOTO Fin

Reiniciar:
Conteo=0
DEBUG "!USRS La cuenta ha reiniciado: ", DEC Conteo,CR 'Mensaje en el User Box
DEBUG DEC Conteo,CR 'Grafica la cuenta
GOTO Fin

ModoSeleccion:
Modo=~Modo
IF Modo=0 THEN
DEBUG "!UMSG 2, Cuenta Ascendente",CR 'Mensajes en cuadro de dialogo
ELSE
DEBUG "!UMSG 2, Cuenta Descendente",CR
ENDIF
GOTO Fin

'===================================================================================
'SUBRUTINAS
CuentaAbajo:
Conteo=Conteo-1
DEBUG "!USRS Cuenta: ",DEC Conteo,CR 'Muestra la cuenta en el User Box
DEBUG DEC Conteo,CR 'Grafica el valor de la cuenta
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 51 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Continuacin del Programa 2_8.bsp

CuentaArriba:
Conteo=Conteo+1
DEBUG "!USRS Cuenta: ",DEC Conteo,CR 'Muestra la cuenta en el User Box
DEBUG DEC Conteo,CR 'Grafica el valor de la cuenta
RETURN

StampPlot:
PAUSE 1000
DEBUG "!NEWP ",CR 'Crea una nueva Grfica
PAUSE 500
DEBUG "!TITL Manejo E/S Digitales", CR 'Ttulo para la ventana
DEBUG "!TMAX 10", CR 'Configura el tiempo eje X, mximo 10
seg.
DEBUG "!AMAX 255",CR 'Limita el valor mximo del eje Y
DEBUG "!AMIN 0", CR 'Limita el valor mnimo del eje Y
DEBUG "!MAXT ",CR 'Define el mximo de la grfica en tiempo
DEBUG "!USRS Contador Up/Down",CR 'Mensaje en el cuadro de status
DEBUG "!MAXR ",CR 'Re-inicializar al transcurrir 10 seg.
DEBUG "!COLR B15,A12,D12,S0,G0",CR 'Configuracin de colores
DEBUG "!PLOT ON ",CR 'Los datos recibidos debern graficarse
DEBUG "!RSET ",CR 'Re-inicializa la grfica
DEBUG "!TBAR OFF",CR 'Esconde la barra de tareas
DEBUG "!MENU OFF",CR 'Esconde el men de opciones
DEBUG "!UMSG 5, Programa 2_8.bsp\n Contador UP/DOWN con el\n BASIC Stamp 2p",CR
'Despliega un mensaje en forma de cuadro de dialogo
RETURN

Para desconectar al StampPlot Pro del puerto serial del computador presione F6 o en el men contextual que
aparece al oprimir el botn derecho del ratn, seleccione la opcin Disconnect. Al concluir no olvide apagar
el sistema. La figura No. 2.20 muestra el resultado de la ejecucin del programa.

Figura No. 2.19: Cuadro de Dilogo del ejercicio #3.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 52 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Figura No. 2.20: Detalle de la ejecucin del programa 2_8.bsp.


Fuente: Elaboracin Propia.

Ejercicios Propuestos
Modifique el programa 2_7.bsp para que durante la ejecucin del lazo principal del programa, se efecte
alguna labor y compruebe que tanto el incremento de los contadores como sta tarea se pueden realizar sin
tener que detener la ejecucin del programa en ningn lazo de espera.

Realice los cambios necesarios el programa 2_8.bsp para que en lugar de disponer de un pulsador para
cambiar el sentido de la cuenta, tener un pulsador para que cuente ascendente, otro para que cuente
descendente y finalmente el pulsador para ejecutar una accin de reset.

Sistema de Desarrollo para MC, modelo MDK-B28 - 53 -


www.roso-control.com
Captulo No. 2. Entradas y Salidas Digitales

Investigue los siguientes tpicos


1. Qu es una seal analgica y una seal digital?. Cuales son sus diferencias ?.
2. Puede usted nombrar diez (10) tipos diferentes de seales analgicas ?.
3. Qu es un pulsador y como se pueden conectar a un microcontrolador ?.
4. Qu se entiende por resistencia de Pull-Up y Pull-Down ?.
5. Qu se entiende por rebote de una seal ?.
6. Puede una seal analgica tener rebotes ?.
7. Qu diferencias hay entre eliminar el efecto del rebote por hardware o por software ?.
8. Qu es una entrada / salida opticamente aislada y para que sirve ?.
9. Para que se utilizan las entradas y salidas digitales ?.
10. Qu es un LED, un LED de 7 Segmentos y una Pantalla LCD ?.
11. Como se calcula la resistencia limitadora de corriente para un LED ?.
12. Tiene un LED polaridad ?, Como se diferencia el ctodo del nodo en un LED ?.
13. Cuantos registros de memoria RAM posee el BASIC Stamp ?.
14. Cuantos registros de memoria Scratchpad posee el BASIC Stamp ?.
15. Qu son los modificadores de variable y para que sirven ?.
16. Qu se entiende por INS, INH, INC e IN14 ?.
17. Qu se entiende por OUTH, OUTB y OUT2 ?.
18. Si DIRS11 = 0, el Pin 11 est declarado como una entrada o como una salida ?.
19. Para que sirve la memoria EEPROM en el BASIC Stamp 2p ?.
20. Como se puede terminar la ejecucin de un lazo iterativo FOR NEXT ?.
21. Como se puede terminar la ejecucin de un lazo iterativo DO LOOP ?.
22. Cual es la finalidad de utilizar la sentencia CASE ?.
23. Puedo utilizar la sentencia BUTTON ms de una vez en el programa ?.
24. Cual es la base de tiempos para una sentencia COUNT en un BASIC Stamp 2p ?.
25. Si Hola es una variable tipo Byte, que significado tiene Hola.NIB0 ?.
26. Qu es el software StampPlot Pro?.
27. Como puedo graficar una variable analgica con el StampPlot Pro?.
28. Como puedo graficar una variable digital con el StampPlot Pro?.
29. Como se comunica el StampPlot Pro con el BASIC Stamp ?.

Programacin
1. Escriba un programa que simule el funcionamiento de un juego de ping-pong para dos jugadores. Cada jugador
utilizar un pulsador como raqueta, y la pelota se debe simular con la barra de LEDs del sistema de desarrollo. El
juego debe presentar la puntuacin de cada jugador en el Debug Terminal. El juego debe finalizar cuando
cualquiera de los jugadores tenga una puntuacin mayor o igual a diez (10) puntos.

Sistema de Desarrollo para MC, modelo MDK-B28 - 54 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

Captulo No. 03
Operaciones Aritmticas y Lgicas

Sistema de Desarrollo para MC, modelo MDK-B28 - 55 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

Introduccin. Cuando se comienza a trabajar con las operaciones aritmticas y lgicas del microcontrolador BASIC Stamp surgen
numerosas inquietudes cuya resolucin puede demorar un tiempo valioso en hacerse visible. Esto no es motivado a errores en el
lenguaje PBASIC, aunque a veces pudiera esto parecer, sino ms bien, a una incomprensin de la forma en que tales operadores
trabajan, a que tipos de operandos son aplicables, y sobre todo, cual es la interpretacin que debe darse a un resultado no esperado.
Este captulo tiene por objeto descubrir algunas potencialidades y limitaciones del lenguaje PBASIC.

PBASIC es un lenguaje de alto nivel que permite lograr un alto grado de abstraccin, lo cual, es muy positivo
al momento de emprender proyectos de envergadura; sin embargo; trae como desventaja el sobreestimar
las capacidades de cmputo que puede desarrollar este microcontrolador. Es por ello, que resulta comn
desconocer u olvidar las caractersticas bsicas del lenguaje que comprometen el funcionamiento adecuado
de los programas. Al efectuar operaciones aritmticas y lgicas con el BASIC Stamp, se debe tener en
cuenta que:

No existe precedencia entre los operadores binarios, siendo evaluadas las expresiones de izquierda a derecha.
Los operadores unitarios tienen precedencia sobre los binarios.
Se permite el uso de parntesis para cambiar el orden en que se evalan las expresiones.
Al encerrar entre parntesis a una expresin, se le asigna una prioridad superior, por lo cual, ser evaluada antes
que cualquier otra expresin.
Es posible estructurar expresiones complejas de manera ordenada y correcta, incluyendo parntesis dentro de
parntesis, pues estos se evaluarn desde el ms interno hacia el ms externo.
El BASIC Stamp trabaja con matemtica entera, es decir, que no opera con nmeros reales (o en punto flotante);
sino mas bien, con nmeros enteros descartando (truncando) cualquier parte fraccionaria.
Los operadores trabajan en un espacio de 16 bits sin Operador Descripcin
importar la naturaleza de los operandos, esto no implica ABS Clculo del valor absoluto.
que no puedan utilizarse en variables de menor COS Coseno.
dimensin (bytes, nibbles o bits). Sin embargo, para DCD Decodificador de potencias de base 2.
interpretar los resultados debe recordarse que todos los ~ Negado de un nmero.
bits faltantes en los operandos para llegar a los 16 bits - Inverso de un nmero.
habrn sido completados con 0s antes de efectuarse la NCD Codificador de prioridad.
operacin. NOT Retorna el negado de una expresin.
Al momento de efectuar clculos, el BASIC Stamp asume SIN Seno.
que los valores son positivos, esto arroja resultados SQRT Raz cuadrada entera de un nmero.
correctos si los operandos son positivos. Tabla No. 3.1: Operadores Unitarios del BS2p.
Cuando se trabaja con nmeros negativos, en complemento a dos, el bit de signo altera la operacin de divisin
produciendo resultados incorrectos. Para solventar este problema, deben verificarse los bits de signo de cada
operando, efectuar la divisin entre los mdulos de los operandos (usando el operador ABS) y posteriormente
corregir el signo del resultado.

Sistema de Desarrollo para MC, modelo MDK-B28 - 56 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

Operador Descripcin
+ Suma en 16 bits entre dos nmeros con o sin signo.
- Resta en 16 bits entre 2 nmeros sin signo.
* Retorna los 16 bits menos significativos de la multiplicacin.
** Retorna los 16 bits ms significativos de la multiplicacin.
*/ Retorna los 16 bits medios de los 32 resultantes de una multiplicacin.
/ Divisin entera sin signo de dos nmeros.
// Retorna el residuo de una divisin.
MIN Acota una variable con un valor mnimo de 16 bits.
MAX Acota una variable con un valor mximo de 16 bits.
DIG Retorna cualquier dgito decimal de un nmero de 16 bits.
REV Retorna una copia de cierta cantidad de bits revertidos de un nmero.
>> Desplaza los bits hacia la derecha una cierta cantidad de veces.
<< Desplaza los bits hacia la izquierda una cierta cantidad de veces.
& Efecta un AND bit por bit entre dos nmeros.
| Efecta un OR bit por bit entre dos nmeros.
^ Efecta un XOR bit por bit entre dos nmeros.
AND Efecta un AND entre dos expresiones. Tabla No. 3.2:
Operadores Binarios del BS2p.
OR Efecta un OR entre dos expresiones.
Fuente: BASIC Stamp Manual
XOR Efecta un XOR entre dos expresiones. v2.0.
ATN Calcula el ngulo que forma un par ordenado con el eje horizontal.
HYP Calcula la hipotenusa de un tringulo rectngulo dados sus lados.

Sistema de Desarrollo para MC, modelo MDK-B28 - 57 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

Objetivo: Efectuar operaciones lgicas con bits y expresiones.

Elementos a Utilizar

(1) Sistema de Desarrollo MDK-B28 con un BS2p.


(1) Cable serial DB9. Inicialice el software de edicin del BASIC Stamp y
(1) StampW (v2.0 beta 2.1 o superior). descargue al microcontrolador el programa 3_1.bsp.

'Programa 3_1.bsp
'Este programa tiene por objetivo mostrar el uso de los operadores lgicos: &,|,^,~
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
x VAR Byte 'Variable de uso general
y VAR Byte 'Variable de uso general
'___________________________________________________________________________________
'Programa Principal

x = %10001110 'Asignacin del valor a la variable x


y = %01101101 'Asignacin del valor a la variable y

DEBUG "Operandos",CR
DEBUG "x=",IBIN16 x, " y=",IBIN16 y,CR 'Muestra el valor de los operandos
DEBUG "Operacin x&y ", IBIN16 x&y,CR 'Resultado de la operacin & (and)
DEBUG "Operacin x|y ",IBIN16 x|y,CR 'Resultado de la operacin | (or)
DEBUG "Operacin x^y ",IBIN16 x^y,CR 'Resultado de la operacin ^ (xor)
DEBUG "Operacin ~x ",IBIN16 ~x,CR 'Resultado de la operacin ~ (not)
'___________________________________________________________________________________
END

Sistema de Desarrollo para MC, modelo MDK-B28 - 58 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

En el debug terminal deber verse lo mostrado en la figura No. 3.1.

Los operadores &,|,^ y ~ operan en 16 bits


como se mencion con anterioridad, para
los tres (3) primeros esto no tiene
importancia alguna, pero para el ltimo, el
resultado no es el esperado, la explicacin
de lo ocurrido puede verse en la figura No.
3.2.

El resultado esperado es 10111001 es


decir, 185 en decimal, y lo que se ha
obtenido a travs del debug terminal es
1111111101110001, lo que equivale a
65393. Para que el resultado sea correcto
hay que eliminar los 8 bits de mayor peso
del mismo. Si este resultado de 16 bits, es
asignado a una variable tipo byte; esta
variable si contendr el resultado esperado.
Figura No. 3.1: Debug Terminal para el programa 3_1.bsp.

Estos operadores lgicos se aplican bit a bit en cualquier variable de cualquier dimensin. Por esta razn,
resultan ser los adecuados para evaluar funciones lgicas, de las que se espera extraer un resultado
numrico. Cuando se requiere evaluar una expresin para tomar una decisin o efectuar operaciones lgicas
sobre expresiones, se pueden utilizar los operadores equivalentes AND, OR, XOR y NOT. Podemos preguntar
entonces: Para qu existen dos tipos de operadores que realizan las mismas funciones lgicas?. Introduzca
el programa 3_2.bsp al BASIC Stamp y ejectelo.

Figura No. 3.2:


Funcionamiento del operador ~.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 59 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

'Programa 3_2.bsp
'Este programa muestra la diferencia existente entre los operadores
'lgicos binarios (&,|,^,~) y los operadores lgicos para expresiones
'(AND,OR,XOR,NOT)
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
x VAR Word 'Variable de uso general
y VAR Word 'Variable de uso general
'___________________________________________________________________________________
'Programa Principal
x=12 'Asignacin del valor a la variable x
y=10 'Asignacin del valor a la variable y
Inicio:
IF ~ x > y THEN DEBUG "Verdadero", CR : GOTO Seguir
DEBUG "Falso",CR
Seguir:
IF NOT x > y THEN DEBUG "Verdadero", CR : END
DEBUG "Falso", CR
'___________________________________________________________________________________
END

A simple vista el programa no tiene nada de especial, slo se ha cambiado el operador ~ por NOT, pero ello
implica un cambio completo en la operacin efectuada antes de decidir con la instruccin IF..THEN. El
debug terminal de su computador debe mostrar en este momento las palabras Verdadero y Falso. Cul de
los dos resultados es el correcto ?.

Ello depender de la intencin con la que se quiera interpretar el resultado. Si se quera saber si el
complemento de x era mayor que y, entonces el primer resultado ser el correcto (Verdadero). Esto se
debe a que ~x cuando x= 12 es 65523 y este nmero es evidentemente mayor que 10. Por otra parte, si su
intencin era saber si el resultado de la expresin NO ES x mayor que y; el resultado correcto es el
segundo (Falso).

AND, OR, XOR y NOT trabajan de manera diferente a todos los dems operadores existentes en PBASIC,
pues posponen la operacin a realizar hasta que todas las expresiones que intervienen sean evaluadas
(tienen una precedencia menor). Esta caracterstica los adecua para ser utilizados en las instrucciones de
decisin, minimizando el uso de parntesis y mostrando un cdigo ms claro y fcil de comprender.

Sistema de Desarrollo para MC, modelo MDK-B28 - 60 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

Objetivo: Construir un codificador de prioridad. Graficar una seal sinusoidal segn se presione un banco de pulsadores.

Conecte los pulsadores PB1 a PB4 a los terminales P0 a P3 respectivamente, como lo muestra la figura No.
3.3. Para ello bastar con interconectar los puntos identificados como PB1, PB2, PB3 y PB4 de la regleta de
conexiones con los puntos etiquetados como P0, P1, P2 y P3.

Elementos a Utilizar

(1) BASIC Stamp 2p.


(1) Cable serial DB9.
(1) Programa StampPlot V3 versin 1.6 o superior.
(1) Banco de Pulsadores.

Figura No. 3.3: Esquema de conexiones del ejercicio #2.


Fuente: Elaboracin Propia.

Conecte el cable de programacin y encienda el sistema de desarrollo MDK-B28, a continuacin descargue al


microcontrolador el programa 3_3.bsp y ejectelo.

En este momento un terminal de depuracin se muestra en la pantalla


de su computador, cirrelo y abra el programa StampPlot Pro, ya sea
desde el escritorio de Windows o desde el Men de Inicio /Programas
/Stamp PlotV3 /Stamp PlotV3.exe. Ahora seleccione desde el Men Plot
la opcin Configure Port como muestra la figura No. 3.4. Una vez
hecho esto, aparecer el cuadro de configuracin. Deber llenarlo como
muestra la figura No. 3.5, salvo por el parmetro COM Port que deber
corresponderse con el puerto COM disponible en su computador y
usado para la programacin del BASIC Stamp.

Figura No. 3.4: Configurando el StampPlot Pro.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 61 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

Oprima el icono para conectar el microcontrolador al PC y luego

oprima en para iniciar la graficacin de los datos.

Ahora cambie el recorrido del eje horizontal de la grfica a 25


segundos segn se muestra en la figura No. 3.6.

Figura No. 3.5: Configuracin de la conexin.


Fuente: Elaboracin Propia.
Figura No. 3.6: Seleccin del tiempo mximo del eje horizontal.
Fuente: Elaboracin Propia.

'Programa 3_3.bsp
'Este programa tiene por objetivo mostrar el uso de los operadores NCD y SIN
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

Sistema de Desarrollo para MC, modelo MDK-B28 - 62 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

Continuacin del Programa 3_3.bsp

x VAR Byte 'Variable de uso general


y VAR Word 'Variable de uso general
Seno VAR Word 'Variable de uso general
'___________________________________________________________________________________
'Programa Principal
DIRA =$0 'Declara los terminales P0 a P3 como entradas
DO 'Repetir indefinidamente
x = NCD (((~INA))&($F))
'Asigna en x el pulsador presionado siendo :
'0 si ningn pulsador se ha presionado,
'1 si se presiona a PB1, 2 si se presiona a PB2
'3 si se presiona a PB3 y 4 si se presiona a PB4
FOR y = 0 TO 360 STEP 10 'Lazo iterativo de 0 a 360 en pasos de 10
Seno = SIN (x*(y * 128 / 180)) 'Convierte de grados a brads y multiplica por el
DEBUG SDEC Seno, CR 'valor correspondiente de acuerdo al pulsador
PAUSE 50 'presionado para cambiar la frecuencia de la onda
NEXT
LOOP

Oprimiendo F8 o en el men Plot se selecciona la opcin Max based


on time, con lo cual, se logra que al transcurrir 25 segundos se
reinicie la grfica.

Presione el pulsador PB1 y observe en la pantalla del PC como se


construye una seal sinusoidal. Si no puede apreciar la onda completa
presione CTRL+A o en el men Axis, que puede verse en la figura
No. 3.6 escoja la opcin Auto Scale. Oprima diferentes pulsadores y
vea como cambia la seal graficada.

Figura No. 3.7: Seleccin de tiempo mximo del eje horizontal.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 63 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

Figura No. 3.8: Resultado obtenido al presionar los pulsadores.


Fuente: Elaboracin Propia.

La figura No. 3.9, es el diagrama de flujo que corresponde al programa 3_3.bsp. El operador NCD es un
decodificador de prioridad que toma una variable de 16 bits y retorna la posicin del uno (1) ms
significativo que sta contiene. Los operadores SIN y COS calculan el valor en complemento a dos del seno y
el coseno, respectivamente. El ngulo utilizado se expresa como una variable de 8 bits (0 a 255) y equivale
a 1.406 grados (un brad). Estos operadores devuelven un valor comprendido entre -127 y 127.

Antes de avanzar al ejercicio siguiente, recuerde desconectar al Stamp Plot Pro del puerto de
programacin del BASIC Stamp oprimiendo el icono mostrado (Connect To) o presionando F6,
de lo contrario en el BASIC Stamp Editor obtendr un mensaje de error como el mostrado en la
figura No. 3.10.

Sistema de Desarrollo para MC, modelo MDK-B28 - 64 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

INICIO

Declarar P0 a P3 como entradas

Si
Presionado
PB4
Graficar Seno 4x No

Si
Presionado
PB3
Graficar Seno 3x
No

Si Presionado
PB2
Graficar Seno 2x
No

Si Presionado
PB1
Graficar Seno x No

Figura No. 3.9: Figura No. 3.10:


Diagrama de flujo del programa 3_3.bsp. StampPlot Pro ocupando el puerto de programacin.
Fuente: Elaboracin Propia. Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 65 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

Objetivo: Implementar las operaciones de multiplicacin y divisin enteras. Obtencin de resultados fraccionarios a partir de nmeros
enteros.

Desconecte el circuito anterior y descargue al BASIC Elementos a Utilizar


Stamp el programa 3_4.bsp. Introduzca el nmero 1.75
cuando se le solicite por el debug terminal. (1) Sistema de Desarrollo MDK-B28 con un BS2p.
(1) Cable serial DB9.
El debug teminal debe ser como el mostrado en la (1) StampW (v2.0 beta 2.1 o superior).
figura No. 3.11.

'Programa 3_4.bsp
'Este programa tiene por objetivo mostrar el uso del operador */ para multiplicar
'a un nmero entero por otro con parte decimal.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

Multiplic VAR Word 'Variable de uso general usada como multiplicando


Res VAR Word 'Resultado de la multiplicacin
Entero VAR Byte 'Parte entera del multiplicador
Decimal VAR Byte 'Parte decimal del multiplicador
DecAjuste VAR Word 'Parte entera del multiplicador
Multi VAR Word 'Variable de uso general
'___________________________________________________________________________________
'Programa Principal:

DEBUG "Multiplicacin por un numero con decimales",CR


DEBUG "Introduzca Numero decimal (con 2 decimales)",CR
DEBUGIN NUM Entero 'Acepta cuatro dgitos separados por cualquier otro
DEBUGIN NUM Decimal 'carcter, por ejemplo 10.33
DecAjuste = Decimal */ $0290 'Multiplica por 2.56 para transformar el valor que
Multi=Entero*256+DecAjuste 'introdujo el usuario al formato requerido para usar
FOR Multiplic=0 TO 2000 STEP 10 'el operado */ de manera correcta
Res = Multiplic */ Multi 'Clculo del resultado
DEBUG DEC Multiplic ," * ", DEC Entero, ".",DEC2 Decimal," =",DEC Res,CR
PAUSE 50
NEXT
DEBUG "Presione RESET para repetir",CR
PAUSE 1500
'___________________________________________________________________________________
END

Sistema de Desarrollo para MC, modelo MDK-B28 - 66 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

El operador */ retorna los 16 bits medios del


resultado de la multiplicacin de 2 nmeros de 16
bits, esto produce el mismo efecto que la
multiplicacin por un nmero con parte decimal.
La parte entera de dicho nmero se ubica en el
byte superior del multiplicador y la parte decimal
en el byte inferior del mismo pero expresado
como unidades de 1/256. As cuando se quiere
expresar al multiplicador 1.75, ste tendr que
ser expresado como se muestra en la figura No.
3.12.

Figura No. 3.11: Ejecucin del programa 3_4.bsp.


Fuente: Elaboracin Propia.

Figura No. 3.12: Separacin del multiplicador.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 67 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

Las lneas 23 y 24 del programa se encargan de hacer esto cada vez que el usuario introduce un
multiplicador. Si an tiene duda de la funcionalidad del operador */ y de que sea correcta su utilizacin
puede mirar en la figura No. 3.13, en la cual, se multiplica el numero 180 por 1.75.

Figura No. 3.13: Multiplicacin de 180 por 1.75


Fuente: Elaboracin Propia.

Presione el pulsador de RESET del sistema de desarrollo MDK-B28 para volver a ejecutar el programa.
Cambie el valor del multiplicador y observe los resultados, comente y concluya sobre la exactitud de mismos.

Tal vez la limitacin ms grande que sufren los microcontroladores que operan slo con matemtica entera,
se encuentra al momento de efectuar divisiones, las prdidas de informacin que ocurren pueden acarrear
resultados totalmente impredecibles y errneos que son arrastrados por todo el sistema pudiendo conllevar
al fracaso del mismo. El programa 3_5.bsp, calcula el valor de una divisin con 4 dgitos decimales de
resolucin sin correccin para el ltimo dgito y demuestra ser bastante preciso en un amplio rango de
valores. Introdzcalo al BASIC Stamp y observe los resultados obtenidos al introducir diferentes valores.

Sistema de Desarrollo para MC, modelo MDK-B28 - 68 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

'Programa 3_5.bsp
'Este permite utilizar las herramientas de la matemtica entera para obtener
'resultados con 2 o ms dgitos de resolucin en una divisin
'====================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'____________________________________________________________________________________
'Declaracin de Variables y Constantes

Dividendo VAR Word 'Dividendo


Divisor VAR Word 'Divisor
Cociente VAR Word 'Cociente (resultado entero)
Resto VAR Word 'Residuo de la divisin entera
ParteDec VAR Word 'Variable usada para almacenar los dgitos decimales
i VAR Byte 'Variable de uso general
'____________________________________________________________________________________
'Programa Principal:
DEBUG "Obtencin de decimales de la divisin",CR
DEBUG "Introduzca Dividendo ",CR
DEBUGIN NUM Dividendo
DEBUG "Introduzca Divisor ",CR
DEBUGIN NUM Divisor
'Una vez que el usuario introduce el dividendo y el divisor se calcula el cociente
'entero y el primer residuo

Cociente = Dividendo/Divisor
Resto = Dividendo//Divisor
ParteDec = 0 'Inicializa la parte entera en 0

FOR i=0 TO 3 'Calcula hasta 4 decimales


'Para el clculo sucesivo de los decimales se toma al resto anterior y se corre un 0
'a la derecha. La parte decimal se construye a medida que se van calculando los
'decimales desde el ms significativo hacia el menos.
Resto = Resto*10
ParteDec = (ParteDec*10)+(Resto/Divisor)
Resto = Resto//Divisor
NEXT
DEBUG DEC Cociente,".",DEC ParteDec,CR
'____________________________________________________________________________________
END

Sistema de Desarrollo para MC, modelo MDK-B28 - 69 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

El algoritmo usado para el clculo decimal es muy simple, para ilustrarlo, la figura No. 3.14 desarrolla la
divisin de 535 /14 con 2 decimales de resolucin. El programa 3_6.bsp implementa la correccin por
redondeo a tres (3) dgitos de resolucin.

535 14
Primer Residuo Cocient e
3 38

Primer Residuo *10 = 30

30 14
Segundo Residuo Primer Decimal
2 2
Segundo Residuo *10 = 20

20 14
Tercer Residuo Segundo Decimal
6 1
Result ado en 2 dgit os = 38.21

Figura No. 3.14: Algoritmo para calcular los decimales en una divisin.
Fuente: Elaboracin Propia.

'Programa 3_6.bsp
'Este permite utilizar las herramientas de la matemtica entera para obtener
'resultados con 3 dgitos de resolucin y correccin del ltimo dgito en la
'divisin de dos nmeros.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

Sistema de Desarrollo para MC, modelo MDK-B28 - 70 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

Continuacin del Programa 3_6.bsp

Dividendo VAR Word 'Dividendo


Divisor VAR Word 'Divisor
Cociente VAR Word 'Cociente (resultado entero)
Resto VAR Word 'Residuo de la divisin entera
ParteDec VAR Word 'Variable usada para almacenar los dgitos decimales
i VAR Byte 'Variable de uso general
'___________________________________________________________________________________
'Programa Principal:

DEBUG "Obtencin de decimales de la divisin",CR


DEBUG "Introduzca Dividendo ",CR
DEBUGIN NUM Dividendo
DEBUG "Introduzca Divisor ",CR
DEBUGIN NUM Divisor
'Una vez que el usuario introduce el dividendo y el divisor se calcula el resultado
'entero y el residuo que ser utilizado para determinar la parte decimal

Cociente = Dividendo/Divisor
Resto = Dividendo//Divisor
ParteDec = 0
FOR i=0 TO 3
Resto = Resto*10
ParteDec = (ParteDec*10)+(Resto/Divisor)
Resto = Resto//Divisor
NEXT
'Para aproximar a 3 dgitos se toma el 4 decimal y se verifica que sea mayor que 5
i = ParteDec DIG (0)
i = i/5
ParteDec = (ParteDec/10)+i 'Elimina el LSDgito y corrige si fuese necesario
IF ParteDec=1000 THEN
Cociente=Cociente+1 'Ajuste para compensar que la correccin se desborde
Partedec=0 'hacia el entero
ENDIF
DEBUG DEC Cociente,".",DEC ParteDec,CR 'Muestra el resultado
'___________________________________________________________________________________
END

Sistema de Desarrollo para MC, modelo MDK-B28 - 71 -


www.roso-control.com
Captulo No. 3. Operaciones Aritmticas y Lgicas

Investigue los siguientes tpicos


1. Cual es la diferencia entre operaciones lgicas y aritmticas ?.
2. Como se aplica el operador ABS, DCD y NCD ?.
3. Como se aplica el operador MIN y el MAX, para qu sirven en la prctica ?.
4. Que significan los operadores OR, NOT, XOR y AND ?. Donde se aplican ?.
5. Puede el BASIC Stamp trabajar con matemtica no entera ?.
6. Qu es un sistema de numeracin entero y en punto flotante ?.
7. Se puede representar con el BASIC Stamp un nmero en pto. flotante ?.
8. Como trabaja el operador */ ?.
9. Como trabaja el operador DIG ?.
10. Puedo obtener el dgito nmero ocho de una variable con el operador DIG ?.
11. Como trabaja el operador << ?.
12. Como se selecciona el tiempo mximo de la escala horizontal en el StampPlot Pro ?.
13. Cual es el valor mnimo de la escala horizontal en el StampPlot Pro ?.
14. Como se puede ajustar el mn. y el mx. tiempo de la escala vertical en el StampPlot Pro desde el BS2p?.
15. Como se puede ajustar el mn. y el mx. tiempo de la escala horizontal en el StampPlot Pro desde el BS2p?.
16. Como trabajan los operadores SIN y COS ?.
17. Como se representan los nmeros negativos en un BASIC Stamp ?.
18. Cual es el bit de signo de una palabra o Word ?.
19. Puede representarse un nmero negativo con un byte en el BASIC Stamp?.
20. Por que no se pueden dividir nmeros negativos directamente con el BASIC Stamp ?.
21. Cual es el operador para multiplicar dos nmeros de 16 bits cada uno ?.

Programacin
1. Haga un subprograma que calcule el permetro de un triangulo rectngulo, conociendo en valor de
sus catetos. Utilice el debug terminal para cambiar los valores de cada cateto y visualizar el
resultado. Los catetos pueden variar entre un mnimo valor de 10 unidades y un mximo de 100
unidades.
2. Elabore un programa que permita dividir dos nmeros con signo. Ambos nmeros sern introducido
por el debug terminal.

Sistema de Desarrollo para MC, modelo MDK-B28 - 72 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Captulo No. 04
Medicin de Frecuencias y Generacin de Tonos

Sistema de Desarrollo para MC, modelo MDK-B28 - 73 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Introduccin. Una de las variables de mayor inters que puede ser medida por un microcontrolador es la frecuencia de una seal,
pues muchos sensores entregan una salida de frecuencia proporcional a la magnitud de la medicin efectuada. Por otra parte, suele ser
comn la produccin de tonos audibles para aplicaciones en comunicaciones, control, sealizacin y sistemas de alarma. En este
captulo se estudiarn las herramientas de las que dispone el microcontrolador BASIC Stamp para determinar la frecuencia de un tren
de pulsos y para generar todos audibles.

La frecuencia de una seal peridica es una medicin de la cantidad


de ciclos de repeticin (veces que se repite la forma de onda) en un
perodo de tiempo especificado. Si la seal es binaria existen dos UNIDADES DE MEDICIN
maneras de determinar la frecuencia de una seal: Tpicamente la frecuencia es
expresada en ciclos por segundo
Contando la cantidad de pulsos que ocurren en un tiempo (cps), esta unidad es llamada Hertz.
predeterminado.
Midiendo directamente el tiempo que duran los estados (alto y Existen otras unidades de utilidad
bajo) de la seal. especialmente al medir velocidad de
motores, la ms utilizada es las
Para poder experimentar con la medicin de frecuencias, el sistema de revoluciones por minuto (rpm), que
equivalen a la cantidad de vueltas
desarrollo MDK-B28 cuenta con un generador de pulsos. Este mdulo que efecta el eje de motor en un
es capaz de producir una seal variable tanto en frecuencia como en minuto.
ciclo til (CU). La figura No. 4.1 muestra una fotografa del mdulo.

El generador de seales del MDK-B28, est basado en un microcontrolador PIC12F675 preprogramado y


permite seleccionar entre un conjunto de 16 seales de salida. Las caractersticas de stas, pueden verse en
la tabla No. 4.1.

SELT. Salida Ciclo Util SELT. Salida Ciclo Util


0 500ms Monoestable 8 100 Hz 50 % CU
1 1 Hz 25 % CU 9 100 Hz 75 % CU
2 1 Hz 50 % CU A 1000 Hz 25 % CU
3 1 Hz 75 % CU B 1000 Hz 50 % CU
4 10 Hz 25 % CU C 1000 Hz 75 % CU
5 10 Hz 50 % CU D 10000 Hz 25 % CU
6 10 Hz 75 % CU E 10000 Hz 50 % CU
7 100 Hz 25 % CU F 10000 Hz 75 % CU

Figura No. 4.1: Mdulo generador de seales. Tabla No. 4.1: Funcionamiento del generador de seales.
Fuente: Elaboracin Propia. Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 74 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Objetivo: Utilizar al microcontrolador BASIC Stamp para determinar la cantidad de pulsos que ocurren en un terminal de entrada
durante un cierto intervalo de tiempo.

Elementos a Utilizar Arme el montaje de la figura No. 4.2, para ello slo
tendr que conectar el terminal de salida del generador
(PGEN) con el Pin P0 del Stamp. Introduzca al
(1) BASIC Stamp 2p.
(1) Un cable serial DB9.
microcontrolador el programa 4_1.bsp. Ajuste el
(1) Generador de Pulsos. generador de seales para producir una seal de 50%
(1) StampW (v2.0 beta 2.1 o superior). de ciclo til y 10 Hz.

Ciclo til (Duty Cycle)


Relacin porcentual entre el tiempo
de duracin en estado alto y el
perodo de una seal.

Ton
CU = 100%
T

El programa 4_1.bsp le solicita al usuario que


introduzca un tiempo en segundos. Durante ste
tiempo el BASIC Stamp 2p contar la cantidad de
pulsos que son recibidos por el terminal P0. Dicho Figura No. 4.2: Esquema de Conexiones del ejercicio #1.
tiempo; en correspondencia con lo expresado en la Fuente: Elaboracin Propia
sintaxis del comando COUNT, no podr ser mayor a
18 segundos. Esto se debe a que el parmetro de duracin de la instruccin, se expresa en unidades de 287
s. El mayor tiempo de conteo posible con un BASIC Stamp 2p, es de: 65535*287 s = 18,808 segundos.

El factor de conversin 3484 utilizado en el programa 4_1.bsp, que multiplica a la variable segundos,
equivale al valor 1/287s y corresponde a la cantidad de unidades de tiempo de la funcin COUNT
contenidas en un segundo.

Sistema de Desarrollo para MC, modelo MDK-B28 - 75 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

'Programa 4_1.bsp
'Este programa muestra como medir la cantidad de pulsos aplicados a un terminal
'durante un intervalo de tiempo. Se utiliza la instruccin COUNT.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

Cuenta VAR Word 'Variable que almacena los pulsos detectados


Tiempo VAR Byte 'Tiempo en seg. introducido por el usuario
Segundos VAR Byte 'Tiempo real de medicin
Contador PIN 0 'Terminal empleado
'___________________________________________________________________________________
'Programa Principal

Inicio:
DEBUG CLS,"Contador de pulsos",CR 'Ttulo para el Debug Terminal
PAUSE 500
DEBUG REP "*"\50,CR 'Muestra una divisin en la pantalla
PAUSE 150 'mediante el carcter *
Cuenta=0 'Inicializacin del conteo
DEBUG CRSRXY, 0,2,"Introduzca Tiempo de Espera (en segundos)",CR
DEBUGIN DEC Tiempo
'Se le solicita al usuario que introduzca el tiempo de espera
Segundos = Tiempo MAX 18 'Acotamiento adaptado al mximo aceptado por COUNT
DO
COUNT Contador,3484*Segundos,Cuenta 'Cuenta durante la cantidad de segundos deseada
DEBUG CRSRXY, 0,3,"Pulsos detectados en ",DEC Tiempo, " segundos: ", DEC5 Cuenta,CR
LOOP

Cambie el ciclo til de la seal a 25% y luego a 75 %. Observe si ocurre algn cambio en el valor de la
medicin. Proceda a cambiar la frecuencia del generador a 100 Hz, 1K Hz, 10Khz. En cada paso, observe y
anote los resultados de las diferentes mediciones realizadas, luego podr analizar los resultados.

Sistema de Desarrollo para MC, modelo MDK-B28 - 76 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Objetivo: Utilizar al BASIC Stamp para la medicin de la frecuencia de una seal. Determinar el perodo y ciclo til de una seal.

Arme el circuito del ejercicio anterior. Ajuste el Elementos a Utilizar


generador de seales para producir una onda de 50%
de ciclo til y 1K Hz. Introduzca al microcontrolador el
(1) Un mdulo BASIC Stamp 2p.
programa 4_2.bsp. Ahora vare la frecuencia y el ciclo (1) Un cable serial DB9.
til de la seal. Observe el comportamiento del (1) Generador de Pulsos.
programa ante las nuevas condiciones. (1) StampW (v2.0 beta 2.1 o superior).

'Programa 4_2.bsp
'Este programa muestra como utilizar la instruccin COUNT para determinar la
'frecuencia de una seal.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

Freq VAR Word


Contador PIN 0
Led PIN 8
'___________________________________________________________________________________
'Programa Principal
Inicio:

DEBUG CLS,"Medicin de Frecuencia",CR


PAUSE 500
DEBUG REP "*"\32,CR
PAUSE 150
LOW Led
DEBUG "Observe el parpadeo del LED..."

DO
COUNT Contador,3484,freq
DEBUG CRSRXY, 0,3,"Frecuencia: -- ", DEC5 Freq , " Hz -- "
TOGGLE Led
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 77 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Durante la ejecucin del programa ver parpadear al LED conectado al terminal P0. Con ste programa se
ha implementado un frecuencmetro simple, pero de poca aplicacin en un campo real. El principio usado en
la medicin de frecuencia, es el contar cuantos pulsos ocurren en un segundo y eso es exactamente la
frecuencia en Hertz (Hz). Pero, Cul es el costo de esta simplicidad ?. En la velocidad de parpadeo del LED
est la respuesta. La medicin de la frecuencia es muy lenta y se toma todo un segundo en dar el resultado.
Para un microcontrolador como el BASIC Stamp 2p que puede ejecutar unas 12000 instrucciones por
segundo, este tiempo es toda una eternidad. Si queremos mejorar la eficiencia de ste programa, podemos
realizar algunos cambios, vea y transcriba el programa 4_3.bsp a continuacin mostrado:

'Programa 4_3.bsp
'Este programa mide la frecuencia de una seal mediante el comando COUNT
'=================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'_________________________________________________________________________________
'Declaracin de Variables y Constantes

Freq VAR Word

Contador PIN 0
Led PIN 8
'_________________________________________________________________________________
'Programa Principal
Inicio:

DEBUG CLS,"Medicin de Frecuencia",CR


PAUSE 500
DEBUG REP "*"\50,CR
PAUSE 150
LOW Led
DEBUG "Observe el parpadeo del LED..."

DO
COUNT Contador,67,Freq
Freq = 52*Freq
DEBUG CRSRXY, 0,3,"Frecuencia: -- ", DEC5 Freq ," Hz --"
TOGGLE Led
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 78 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Al ejecutar ste programa, podemos observar que se ha disminuido el tiempo de espera del comando
COUNT de un segundo a tan solo 19,23 ms. Usted ver como el LED ahora parpadea ms rpido.

Observe con cuidado la codificacin y verificar que: 67 * 52 = 3484. Como ahora el programa ejecuta el
comando COUNT por menos tiempo, el resultado almacenado en la variable Freq no es el valor real de la
frecuencia medida; as que, se debe multiplicar por un factor de escalamiento. Este programa ha mejorado
su eficiencia pero a costa de algo: la prdida de resolucin en la medicin. En el programa 4_2.bsp, la
lectura o no de un pulso afectaba al resultado en 1 Hz. Por su parte, en el programa 4_3.bsp la misma
causa produce una variacin en la lectura final de 52 Hz. Es cuestin de compromiso entre rapidez /
calidad de la medicin.

El factor de escalamiento se puede calcular utilizando


la siguiente expresin:

1
Factor escalamien to =
Tespera

Donde Tespera es el intervalo de duracin en


segundos, durante el cual, se desea hacer el conteo.
El parmetro a introducir en la instruccin COUNT,
para un BASIC Stamp 2p ser:

3484
Duracin =
Factor Escalamien to
Figura No. 4.3: Operacin del comando COUNT.
Fuente: Elaboracin Propia.

Existe una forma ms eficiente de medir frecuencia con un BASIC Stamp, utilizando el comando PULSIN.
Con PULSIN se puede medir adicionalmente el ciclo til de la seal. En la figura No. 4.4, se representa
mediante un diagrama de flujo, como se puede medir la frecuencia de una seal mediante el comando
PULSIN.

Ajuste el generador de ondas para producir una seal de 1Khz y ciclo til de 50%. A continuacin introduzca
el programa 4_4.bsp y ejectelo, el debug terminal deber verse como el de la figura No. 4.5.

Sistema de Desarrollo para MC, modelo MDK-B28 - 79 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

La unidad de medicin del comando PULSIN es 0.75 s, por lo cual, para obtener el perodo en
microsegundos (s) bastar con multiplicar por 0.75. Sin embargo, recuerde que los microcontroladores
BASIC Stamp slo trabajan con matemtica entera, as que se ha empleado el operado */ ampliamente
comentado en el capitulo No. 3.

INICIO
'Programa 4_4.bsp
'Este programa muestra como :
Declarar P0
' 1) Medir la frecuencia de una seal mediante
como entrada
' la instruccin PULSIN
'==========================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'__________________________________________________________ TAlto = Tiempo que
'Declaracin de Variables y Constantes dura en nivel 1
Tbajo VAR Word
Talto VAR Word
Freq VAR Word TBajo = Tiempo que
Periodo VAR Word dura en nivel 0
Fin PIN 0
'__________________________________________________________
'Programa Principal
Inicio: Periodo = TBajo + TAlto
DEBUG CLS,"Medicin de Frecuencia con el BS2p y PULSIN",CR Periodo = Periodo *0.75
PAUSE 500
DEBUG REP "*"\50,CR
PAUSE 150
Frecuencia = 1.000.000 / Periodo
DO
PULSIN Fin,1,Talto 'Medicin de Thigh
PULSIN Fin,0,Tbajo 'Medicin de Tlow
Periodo = Talto + Tbajo 'Perodo en PULSIN Desplegar valor medido
Periodo = Periodo*/$0C0 'Perodo en us
Freq =16*(62500/Periodo) 'Frecuencia en Hz
DEBUG CRSRXY, 0,3,"Frecuencia Medida: ", DEC5 Freq," Hz",CR
LOOP

Figura No. 4.4:


Diagrama de Flujo del
Programa 4_4.bsp.

Sistema de Desarrollo para MC, modelo MDK-B28 - 80 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Para obtener la frecuencia en Hertz a partir del perodo


expresado en s, hay efectuar la operacin: 1.000.000
* (1/T) pero, De donde obtendr una variable de 20
bits en un BS2p?, simplemente NO HAY FORMA. Sin
embargo, si se multiplica 16*62500 esto dar como
resultado 1000000, con la diferencia, de que ambos
nmeros pueden ser expresados en 16 bits.

Al igual que antes, vare tanto la frecuencia como el


ciclo til y observe los resultados. Disminuya la
frecuencia del generador a 10 Hz y observe el
comportamiento del programa. Ya que PULSIN emplea
una base de tiempo de 0.75 s, el pulso ms grande
que puede detectar tendr una duracin de 49,15 ms,
es decir, que con seales de una frecuencia menor a
20.35 Hz el comando PULSIN no funcionar.

Figura No. 4.5: Ejecucin del Programa 4_4.bsp.


Fuente: Elaboracin Propia.

Ya se ha logrado una medicin rpida y de una calidad


aceptable, el siguiente paso ser determinar el ciclo til de
la onda. Para ello, introduzca el programa 4_5.bsp en el
microcontrolador y ajuste el generador de seales en 1Khz
y 50% de ciclo til.

En el programa 4_5.bsp, para la obtencin del ciclo til se


ha empleado el algoritmo de divisin desarrollado en el
captulo No. 3. A fin de evitar posibles desbordamientos
las variables Talto y Periodo se han dividido entre
10, con ello se garantiza que el mayor de los residuos
obtenidos no exceda de 65535. En el peor caso (la menor
frecuencia) el periodo ser de 10000 s; al dividir este
valor entre 10 se garantiza que ningn residuo parcial
puede ser mayor que 1000.
Figura No. 4.6: Ejecucin del Programa 4_5.bsp.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 81 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

'Programa 4_5.bsp
'Este programa tiene como objetivo:
' 1) Medir la frecuencia de una seal mediante la instruccin PULSIN
' 2) Calcular el Ciclo til (Duty Cycle) de una seal utilizando las herramientas
' aprendidas en el captulo No. 3
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
Tbajo VAR Word 'Tiempo que dura el nivel alto
Talto VAR Word 'Tiempo que dura el nivel bajo
Freq VAR Word 'Frecuencia de la seal
Periodo VAR Word 'Perodo de la seal
DC VAR Word '% de la seal en estado alto
Resto VAR Word 'Variable auxiliar
i VAR Nib 'Variable auxiliar

Fin PIN 0 'Terminal donde se aplica la seal


'___________________________________________________________________________________
'Programa Principal
Inicio:
DEBUG CLS,"Programa 4_5.bsp: Medicin de Frecuencia",CR
PAUSE 500
DEBUG REP "*"\50,CR
PAUSE 150
DO
PULSIN Fin, 1,Talto 'Medicin de Thigh
PULSIN Fin, 0,Tbajo 'Medicin de Tlow
Periodo = Talto + Tbajo 'Perodo en unidades de PULSIN
Periodo = Periodo*/$C0 'Perodo en us
Talto = Talto*/$C0 'Thigh en us
Tbajo = Tbajo*/$C0 'Tlow en us

DEBUG CRSRXY, 0,3,"Resultados de la Medicin",CR


DEBUG REP "-"\50,CR
DEBUG "Periodo: ", DEC4 Periodo," us",CR
DEBUG "tHigh: ", DEC4 Talto," us",CR
DEBUG "tLow: ", DEC4 Tbajo," us",CR

Sistema de Desarrollo para MC, modelo MDK-B28 - 82 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Continuacin del Programa 4_5.bsp

Freq =16*(62500/Periodo) 'Frecuencia en Hz


GOSUB CicloUtil 'Clculo de Ciclo til

DEBUG REP "-"\50,CR


DEBUG "Resultado de los Clculos",CR
DEBUG REP "-"\50,CR
DEBUG "Ciclo Util: ",DEC DC DIG(2),DEC DC DIG(1),".",DEC DC DIG(0),"%",TAB,
"= tHigh/Periodo"
DEBUG CR,"Frecuencia: ", DEC5 Freq," Hz",TAB,"= 1/Periodo",CR
LOOP
'===================================================================================
'SUBRUTINAS
CicloUtil:
Talto = Talto/10 : Periodo = Periodo/10 'Ajuste para evitar desbordamiento
Resto = Talto//Periodo 'No hay parte entera pues Thigh < Periodo
DC = 0 'Inicializacin de variable
FOR i=0 TO 2
Resto = Resto*10
DC = (DC*10) + (Resto/Periodo)
Resto = Resto//Periodo
NEXT
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 83 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Objetivo: Utilizar al microcontrolador BASIC Stamp 2p para generar tonos audibles.

Elementos a Utilizar
El BASIC Stamp 2p, permite la generacin de una o dos
(1) Sistema de Desarrollo MDK-B28 con un BS2p.
ondas sinusoidales de frecuencias comprendidas entre
(1) Banco de Pulsadores. (0 y 32.767 Hz). Para aquellas aplicaciones donde se
(1) Altavoz piezoelctrico sistema MDK-B28. requiera la utilizacin de un sistema de sealizacin
(1) Un cable serial DB9. audible, sta capacidad es de especial inters.
(1) StampW (v2.0 beta 2.1 o superior).

En el siguiente programa se utiliza el comando FREQOUT, con la finalidad de generar tonos a distintas
frecuencias. Para ello, se ha establecido que cada pulsador tiene asociado un tono distinto. En caso de
presionar dos pulsadores al mismo tiempo, se mezclarn los dos tonos particulares de cada pulsador. El
diagrama de flujo del programa puede verse en la figura No. 4.7. La figura No. 4.8 es una fotografa del
altavoz piezoelctrico incorporado al sistema MDK-B28.

Figura No. 4.7:


Diagrama de flujo para el ejercicio # 3.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 84 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Con el sistema de desarrollo apagado, conecte los pulsadores como se muestra en la figura No. 4.9 y el
altavoz piezoelctrico segn la ilustracin No. 4.10.

Figura No. 4.8:


Fotografa del Altavoz piezoelctrico
del Sistema MDK-B28. Figura No. 4.10:
Fuente: Elaboracin Propia. Conexin del altavoz
piezoelctrico.
Figura No. 4.9: Fuente: Elaboracin Propia.
Conexin de los pulsadores
Fuente: Elaboracin Propia.

Energice el sistema de desarrollo y descargue al BASIC Stamp el programa 4_6.bsp. Presione el pulsador
PB1 y escuche el sonido que emite el altavoz. Sino escucha ningn sonido, apague el sistema y revise las
conexiones. Presione PB1, PB2 y PB3 de forma aleatoria. Escuche como el BASIC Stamp efecta la mezcla
de las seales superponiendo las dos ondas sinusoidales. El programa 4_6.bsp fue constituido utilizando
bloques bien definidos como se detallas a continuacin:

Un lazo principal que verifica el estado de los pulsadores PB1, PB2 y PB3.
La rutina VerEdo que discrimina cuales sern las frecuencias de los tonos a emitir.
La rutina GenerarTono encargada de producir el o los tonos deseados.

El cdigo del programa 4_6.bsp se presenta a continuacin:

'Programa 4_6.bsp
'Este programa tiene por objetivo mostrar:
'1) El uso del comando FREQOUT para generar un Tono audible
'2) El uso del comando FREQOUT para mezclar Tonos cuando dos
' pulsadores son presionados

Sistema de Desarrollo para MC, modelo MDK-B28 - 85 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Continuacin del Programa 4_6.bsp

'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
Tono1 CON 1200 'Frecuencia del primer tono = 4524 Hz
Tono2 CON 1400 'Frecuencia del segundo tono = 5278 Hz
Tono3 CON 1600 'Frecuencia del tercer tono = 6032 Hz
Silencio CON 0 'Tono de silencio
Falso CON 0

Esp1 VAR Byte 'Variable de trabajo para el pulsador 1


Esp2 VAR Byte 'Variable de trabajo para el pulsador 2
Esp3 VAR Byte 'Variable de trabajo para el pulsador 3
Estado VAR Nib 'Indica cuales pulsadores han sido presionados
freq1 VAR Word 'Guarda la primera frecuencia
freq2 VAR Word 'Guarda la segunda frecuencia

PB1 PIN 0 'Pulsador conectado a PB1


PB2 PIN 1 'Pulsador conectado a PB2
PB3 PIN 2 'Pulsador conectado a PB3
BUZ PIN 3 'Altavoz Piezoelctrico
'___________________________________________________________________________________
'Programa Principal:
DO
PS1: BUTTON PB1,0,255,0,Esp1,0,PS2 'Si PB1 no fue presionado salta a PS2
Estado.BIT0 = 1
PS2: BUTTON PB2,0,255,0,Esp2,0,PS3 'Si PB2 no fue presionado salta a PS3
Estado.BIT1 = 1
PS3: BUTTON PB3,0,255,0,Esp3,0,Edo 'Si PB3 no fue presionado salta a Edo
Estado.BIT2 = 1
Edo: GOSUB VerEdo 'Verifica los pulsadores presionados
GOSUB GenerarTono
Estado=0
LOOP
'===================================================================================

Sistema de Desarrollo para MC, modelo MDK-B28 - 86 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Continuacin del Programa 4_6.bsp

'SUBRUTINAS

VerEdo: '----------------------------------
SELECT Estado '| Pulsadores | Sonido |
CASE 1 '---------------------------------|
freq1 = Tono1 : freq2 = Silencio '| OFF OFF OFF | Ninguno |
CASE 2 '| OFF OFF ON | Tono 1 |
freq1 = Silencio : freq2 = Tono2 '| OFF ON OFF | Tono 2 |
CASE 3 '| OFF ON ON | Tono1 + Tono2 |
freq1 = Tono1 : freq2 = Tono2 '| ON OFF OFF | Tono3 |
CASE 4 '| ON OFF ON | Tono3 + Tono1 |
freq1 = Tono3 : freq2 = Silencio '| ON ON OFF | Tono3 + Tono2 |
CASE 5 '| ON ON ON | Tono1 + Tono2 |
freq1 = Tono3 : freq2 = Tono1 '----------------------------------
CASE 6
freq1 = Tono3 : freq2 = Tono2
CASE 7
freq1 = Tono1 : freq2 = Tono2
CASE ELSE
freq1 = Silencio : freq2 = Silencio
ENDSELECT
RETURN

GenerarTono:
DEBUG CLS,"Frecuencia 1: ", DEC freq1,CR,"Frecuencia 2: ", DEC freq2,CR
IF (freq1 | freq2) <> FALSO THEN FREQOUT Buz,1890, freq1, freq2 ELSE PAUSE 150

'Si se ha presionado algn pulsador, se genera el tono correspondiente por


'unos 500ms, sino se hace una pequea pausa de 150 para evitar el parpadeo
'excesivo en el debug terminal
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 87 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Objetivo: Utilizar al BASIC Stamp para generar tonos audibles en funcin de la iluminacin presente en un ambiente.

En este ejercicio se utilizar al comando FREQOUT Elementos a Utilizar


para la generacin de sonidos audibles. Sin embargo y
a diferencia del programa anterior, la frecuencia vendr
dada por el nivel de iluminacin presente en el (1) Sistema de Desarrollo MDK-B28 con un BS2p.
ambiente. El nivel de iluminacin se podr medir a (1) Fotorresistencia del MDK-B28.
(1) Condensador de 1 uF x 25V.
travs del cambio del valor en ohmios de la (1) Resistencia de 1 KOhms.
fotorresistencia incluida el sistema MDK-B28, ver figura (1) Cable serial DB9.
No. 4.11. (1) StampW (v2.0 beta 2.1 o superior).

La medicin del nivel de iluminacin se har por medio del


comando RCTIME. Este comando, permite interpretar las
variables medidas por dispositivos cuyo principio de medicin
se base en cambios de resistencia o de capacitancia, es decir,
este comando le permite al microcontrolador cuantificar de una
manera simple, la magnitud de una variable analgica.

Pero, antes de implementar el instrumento musical, es


necesario conocer el valor de la resistencia existente bajo los
niveles de iluminacin del ambiente. Para efectuar, esto arme el
circuito de la figura No. 4.12.
Figura No. 4.11: Ubicacin de la fotorresistencia.
Fuente: Elaboracin Propia.

Figura No. 4.12: Esquema de Conexiones para


la realizacin del ejercicio # 4.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 88 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Para obtener la alimentacin de +5v requerida, el MDK-B28 cuenta con una conexin disponible tanto para
esta tensin como para la referencia de 0V (GND). Con ellas se puede alimentar a cualquier dispositivo o
circuito que se coloque en el rea de protoboard. Encienda al sistema de desarrollo MDK-B28 y descargue al
BASIC Stamp el programa 4_7.bsp.

'Programa 4_7.bsp
'Este programa tiene por objetivo mostrar:
'1) El uso del comando RCTIME para determinar el nivel de iluminacin por medio de
' una fotorresistencia
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
Valor VAR Word 'Variable que contiene el resultado del comando RCTIME
Prom VAR Word 'Promedio entre las medidas tomadas
i VAR Nib 'Variable de uso general
P0 PIN 0 'Terminal conectado al circuito RC
'___________________________________________________________________________________
'Programa Principal:
DO
Prom = 0
FOR i=0 TO 3 'El lazo iterativo es empleado para calcular el promedio
HIGH P0 'entre 4 medidas consecutivas antes de proseguir con el
PAUSE 10 'programa, con esto se logra estabilizar la medicin
RCTIME P0,1,Valor 'efectuada y minimizar el error de en la medida
PAUSE 10
Prom = Prom + (Valor/4)
NEXT
PAUSE 1000
DEBUG HOME,"Valor Base: ",DEC5 Prom,CR
LOOP

El resultado obtenido para las condiciones particulares de este experimento fue 2130. Anote el valor que
usted obtuvo:

A continuacin conecte el altavoz piezoelctrico (buzzer) al punto P3 del BASIC Stamp. Si los resultados de
ejecucin no son los esperados, ajuste la instruccin:

Sistema de Desarrollo para MC, modelo MDK-B28 - 89 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Freq = (ABS (Prom-2130))/6 'Clculo de la frecuencia del tono

Reemplazando el valor 2130 por el obtenido mediante el programa 4_7.bsp.

'Programa 4_8.bsp
'Este programa tiene por objetivo mostrar:
'1) El uso del comando FREQOUT para generar sonidos en funcin de la iluminacin de
' un ambiente
'2) El empleo del operador ABS
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
Valor VAR Word 'Variable que contiene el resultado del comando RCTIME
Freq VAR Word 'Valor de la frecuencia del tono
Prom VAR Word 'Promedio entre las medidas tomadas
i VAR Nib 'Variable de uso general
P0 PIN 0 'Terminal conectado al circuito RC
Buz PIN 3 'Terminal conectado al Altavoz piezoelctrico
'___________________________________________________________________________________
'Programa Principal:
DO
Prom = 0
FOR i=0 TO 3
HIGH P0 : PAUSE 10 'Carga del condensador
RCTIME P0,1,Valor 'Descarga del condensador
Prom = Prom + (Valor/4) 'Clculo del promedio
NEXT

'Una vez que se calcula el promedio de las mediciones, se busca el valor de la


'frecuencia de manera tal que en condiciones de mxima iluminacin no se escuche
'ningn sonido y conforme aumenta la resistencia los tonos se hagan cada vez ms
'agudos

Freq = (ABS (Prom-2130))/6 'Clculo de la frecuencia del tono


DEBUG HOME,"Frecuencia: ", DEC5 (Freq*/$3C5), " Hz",CR
FREQOUT Buz,250,Freq 'Produce un tono entre 0 Hz y unos 15000 Hz
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 90 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

El valor de la constante que divide la expresin no es arbitrario; ste se ha calculado para que en el
momento en que la resistencia aumente a 20 k el altavoz piezoelctrico (buzzer) emita un sonido cercano
a 12 kHz.

En la grfica que se muestra a continuacin, puede verse la caracterstica de la resistencia (KOhm) vs. nivel
de iluminacin (Lux), para una fotorresistencia marca Photonic Detectors serie 8100.

Figura No. 4.13: Curvas caractersticas de KOhms vs. Lux


para las fotorresistencia serie 8100.
Fuente: Photonic Detectors INC.

Las fotorresistencias son usadas en diversas aplicaciones, ya sea para detectar la presencia de objetos
mediante la obstruccin de un haz luminoso, para medir y controlar la intensidad luminosa en ambientes de
baja iluminancia o para el encendido automtico de luces nocturnas, donde superan a otros tipos de
sensores bsicamente por su bajo precio.

Sistema de Desarrollo para MC, modelo MDK-B28 - 91 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

PULSIN
Mide el ancho de un pulso aplicado a un terminal.

PULSIN Pin, Estado ,Variable

Pin: Variable, constante o expresin de (0 - 15) que indica cual terminal de E/S ser utilizado, el mismo
ser convertido en entrada.
Estado: Variable, constante o expresin de 1 bit (0 1) que especifica si el pulso a medir es alto (1) o
bajo (0). La medicin comenzar cuando se produzca una transicin beta o alfa segn sea.
Variable: Variable en la cual se almacena un conteo representativo de la duracin del pulso. La unidad
de este parmetro en un BS2p equivale a 0,75 us.

FREQOUT
Genera uno o dos tonos sinusoidales de un periodo de tiempo especfico, usando un algoritmo de modulacin de
ancho de pulso. En caso de ser dos tonos, estos se mezclaran a travs del terminal especificado, para de esta
forma generar un nico tono.

FREQOUT Pin, Duracin, Frecuencia1 {,Frecuencia2}

Pin: Variable, constante o expresin de 0 a 15 que especifica el terminal de E/S usado. Este ser
configurado como salida.
Duracin: Variable, constante o expresin de 0 a 65535. Especifica el periodo de tiempo que dura el
tono generado.
Frecuencia1: Variable, constante o expresin de 0 a 32767. Especifica la frecuencia del primer tono.
Frecuencia2: Variable, constante o expresin de 0 a 32767. Especifica la frecuencia del segundo tono.

En un BS2p, la unidad de tiempo de FREQOUT para el parmetro Duracin equivale a 0.265ms y para los
parmetros Frecuencia1 y Frecuencia2 la unidad de frecuencia equivale a 3.77 Hz.

Sistema de Desarrollo para MC, modelo MDK-B28 - 92 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

RCTIME
Mide el tiempo que un Pin permanece en un estado especfico, usualmente encuentra su utilidad en
aplicaciones para medir los tiempos de carga y descarga en circuitos RC.

RCTIME Pin, Estado, Variable

Pin : Variable, constante o expresin (0-15) que indica cual ser el Pin de Entrada/Salida a usar.
Este Pin ser configurado como entrada.
Estado: Variable, constante o expresin (0-1) que especifica el estado en que se encuentra el Pin,
que se desea medir. Cuando el estado cambia, el comando termina y almacena el resultado en una
variable.
Variable: Variable (usualmente tipo word) en la que se guarda el tiempo medido.

El comando RCTIME permite medir la salida de sensores resistivos o capacitivos, tales como
termistores o sensores capacitivos de humedad, presin o nivel. La unidad de tiempo de sta
instruccin en un BS2p es de 0.9 s. El tiempo mximo de medicin es de 58.982 ms. Figura No. 4.14:

Respuesta del circuito RC


mostrado en la figura No. 4.12 a
un escaln de entrada negativo
para tres valores de resistencia
distintos. Note como cada salida
demora una distinta cantidad de
tiempo para decaer de 5 a 1.4
Voltios.
La diferencia en el tiempo que
demora cada circuito en decaer,
puede ser usada para determinar
el valor de la resistencia si el valor
de la capacitancia permanece fijo.
Del mismo modo, si se fija el valor
de la resistencia, pero vara la
capacitancia, sta puede
determinarse midiendo el tiempo
entre el escaln de tensin y el
cruce por el umbral.

Fuente: Analgicos y Digitales


Bsicos, Gua del Estudiante
Versin 1.1. Pgina 135. Parallax.

Sistema de Desarrollo para MC, modelo MDK-B28 - 93 -


www.roso-control.com
Captulo No. 4. Medicin de Frecuencias y Generacin de Tonos.

Investigue los siguientes tpicos


1. Qu se entiende por medicin de frecuencias ?.
2. Se puede medir la frecuencia de una seal de Corriente Continua; ejemplo 5 Vdc. ?.
3. Qu es una seal peridica, peridica simtrica y peridica asimtrica ?.
4. Qu es un generador de pulsos ?.
5. Qu se entiende por ciclo til de una seal ?.
6. Qu valor utiliza el BASIC Stamp como unidad de tiempo para el comando COUNT ?.
7. Puede un ciclo til valer 0%, cuando ?.
8. Puede un ciclo til ser 100%, cuando ?.
9. Cual es el valor de la mnima frecuencia que puede leer el BS2p con el comando COUNT ?.
10. Cual es el valor de la mxima frecuencia que puede leer el BS2p con el comando COUNT?.
11. Qu es un factor de escalamiento y como se calcula ?.
12. Como trabaja el comando PULSIN ?.
13. Como trabaja el comando FREQOUT ?.
14. Cual es el mnimo valor de frecuencia que se puede obtener con el comando FREQOUT ?.
15. Cual es el mximo valor de frecuencia que se puede obtener con el comando FREQOUT ?.
16. Qu es un sensor y por qu el BASIC Stamp necesita uno ?.
17. Qu significa el trmino piezoelctrico ?.
18. Qu es una fotorresistencia?. Cuantos tipos existen ?.
19. Como trabaja el comando RCTIME ?.
20. Cual es el tiempo mximo de medicin del comando RCTIME ?.

Programacin
1. Utilizando como referencia la figura No. 4.13. Construya la curva caracterstica de la fotorresistencia
que viene instalada su sistema de desarrollo MDK-B28. Utilice para ello, un medidor de intensidad
luminosa (Luxmetro) y haga la medicin de la resistencia con el BASIC Stamp 2p utilizando el
comando RCTIME y el debug terminal. Tome al menos 10 puntos o medidas entre 10 Lux y 100 Lux.
Haga una representacin grfica de los puntos, construya una curva caracterstica KOhm vs. Lux
para su fotorresistencia. Con los valores obtenidos, ahora modifique el programa para que en la
pantalla de su PC se observen los valores de intensidad luminosa (Lux) y compare los resultados con
el valor que mide su Luxmetro. Los resultados son iguales o muy diferentes? Comente los
resultados.

Sistema de Desarrollo para MC, modelo MDK-B28 - 94 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Captulo No. 05
Comunicacin Serial Sincrnica (SPI)

Sistema de Desarrollo para MC, modelo MDK-B28 - 95 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Introduccin. El intercambio de informacin digital entre un microcontrolador y los perifricos puede ser de dos formas: de manera
paralela o serial. La primera implica el envo simultneo de la informacin, es decir, de varios bits (incluso de todos) pertenecientes al
dato, esto no slo ocasiona problemas de costo debido a la necesidad de mayor cableado y de conexiones, sino que afecta un aspecto
crtico del microcontrolador: la cantidad de terminales de E/S utilizados. La comunicacin serial plantea justamente lo contrario, en vez
de enviar los bits del dato de manera simultnea, los enva por separado, uno detrs del otro. El receptor deber entonces invertir el
proceso y reconstruir el dato original. En ste captulo se explicar en detalle todo lo relacionado a la comunicacin serial sincrnica
entre un BASIC Stamp 2p y algunos circuitos perifricos existentes en el sistema de desarrollo MDK-B28.

Existen dos formas de establecer una comunicacin serial: en


forma Sincrnica y Asincrnica. Comunicacin Paralela
Usa una lnea por bit.
Mayores velocidades de transmisin.
El trmino sincrnica, se refiere a la existencia de una seal de Alcance limitado (Distancia).
reloj comn para los sistemas digitales que se interconectan.
Esta forma de comunicacin es muy utilizada para conectar Comunicacin Serial
Una lnea para transmitir todos los bits.
perifricos como convertidores Analgicos/Digitales (ADC), Velocidades de transmisin menores.
memorias, procesadores digitales de seales (DSPs), entre Gran alcance (Distancia).
otros.
Comunicacin Sincrnica
Existe una seal de reloj que sincroniza
Existen numerosos estndares utilizados para implementar la ambos sistemas.
comunicacin serial sincrnica, cada uno es propio de un Dispositivos esclavos no requieren de base
fabricante y presenta caractersticas que lo hacen ms o menos de tiempo propia, la obtienen del maestro.
adecuado, para una aplicacin en particular.
Comunicacin Asincrnica
Necesidad de sincronizacin por medio de
El sistema de desarrollo MDK-B28 incluye dispositivos que software/hardware o ambos.
implementan la comunicacin serial sincrnica de tres formas Cada dispositivo tiene una base de tiempo
diferentes: SPI (Motorola), 3-Wire (Dallas-Maxim) e I2C propia que debe estar en concordancia con
la base de tiempo de los otros dispositivos.
(Phillips). Cada uno de ellos corresponde a una tecnologa
diferente, no slo en cuanto al nmero de conductores BUS
utilizados en el bus, sino a la forma de transmisin de la Conjunto de conductores comunes a un grupo de
informacin, direccionamiento de los dispositivos, formato de los dispositivos que permiten la interconexin y el
intercambio de informacin entre los mismos.
datos enviados y velocidad de transferencia.
La estandarizacin de los buses ha permitido a los
fabricantes de circuitos integrados desarrollar
infinidades de productos compatibles y de fcil
conexin.

Sistema de Desarrollo para MC, modelo MDK-B28 - 96 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

SPI, es un estndar establecido por Motorola que utiliza un bus de 4 lneas para interconectar dispositivos
perifricos de baja y media velocidad. La comunicacin se realiza siguiendo un modelo maestro/esclavo
donde el maestro selecciona al esclavo y comienza el proceso de transmisin/recepcin de informacin. SPI
constituye un bus full duplex, es decir, que se puede enviar y recibir informacin de manera simultnea, lo
cual, eleva la tasa de transferencia de los datos. En este popular estndar no existe ningn medio de
direccionamiento de los dispositivos esclavos y mucho menos reconocimiento (Acknowledgement) de la
recepcin de los datos, as que, no existe forma alguna para que el dispositivo maestro pueda detectar la
presencia de un esclavo o establecer un medio de control del flujo de datos. La figura No. 5.1 muestra la
conexin tpica de un grupo de dispositivos en un bus SPI.

Los nombres de las seales son definidos dentro del


estndar como: SCLK reloj del bus, MOSI (Master
Output Slave Input) salida de datos del maestro y
entrada de datos a los esclavos, MISO (Master Input
Slave Output) salida de datos de los esclavos y entrada
de datos al maestro y SS (Slave Select) habilitacin
del esclavo por parte del maestro.

Dependiendo del nmero de esclavos presentes en el


bus, se requerirn ms o menos lneas de seleccin
para estos, cada una de ellas ser nombrada como
SS1,SS2,SS3,etc. Este medio de seleccin permite
conectar varios esclavos de manera muy simple.

Se definen dos parmetros CPOL (Clock Polarity) y


CPHA (Clock Phase) con los cuales se determina, con
respecto al pulso del reloj, el momento en el cual se
considera vlido un dato de entrada o se genera un
dato de salida. Estos dos parmetros ofrecen hasta
cuatro (4) combinaciones distintas, su significado
puede verse en la figura No. 5.2.

Figura No. 5.1: Conexin de varios dispositivos SPI.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 97 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

INTERCONEXIN DE COMPONENTES
El sistema de desarrollo MDK-B28, contiene un amplio conjunto de perifricos disponibles para la experimentacin, estos
abarcan los aspectos ms importantes del aprendizaje con microcontroladores para el desarrollo de aplicaciones. La
interconexin entre los dispositivos, se efecta mediante un terminal de distribucin de 54 x 4 puntos en el que se encuentran
disponibles todas las seales elctricas de importancia para el usuario. Ello reduce al mnimo las posibilidades de errores de
cableado, evitando el deterioro de los componentes del sistema y provee de un elegante e ingenioso medio de conexin.

Figura No. 5.2: Modos de operacin del bus SPI.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 98 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Estas cuatro combinaciones constituyen los cuatro (4) modos de trabajo del bus SPI, para lograr una
comunicacin exitosa cada par maestro-esclavo dentro del bus tiene que operar en el mismo modo, el cual,
est definido generalmente por el dispositivo esclavo.

El estndar SPI no define un protocolo para la transmisin de los datos y aunque especifica que el nmero
de bits que componen cada dato a transmitir sea de ocho (8) bit, existen muchos dispositivos SPI-
compatibles que no emplean exactamente esta definicin. Ante esto, se hace indispensable recurrir a los
diagramas y especificaciones de tiempo propias del circuito integrado dadas por el fabricante.

Para utilizar al BASIC Stamp como maestro en un bus SPI, se dispone de dos instrucciones: SHIFTIN y
SHIFTOUT, que implementan los modos 0 y 1 del bus a una velocidad de unos 42 kbps y en forma half
duplex.

El sistema de desarrollo MDK-B28, incluye un bus de dispositivos SPI/3-Wire compuesto de 3 elementos:

Un controlador de displays de 7 segmentos MC14489 marcado como U4. Interfaz SPI.


Un conversor Analgico/Digital de 12 bits LTC1298 marcado como U5. Interfaz SPI.
Un termmetro/termostato digital DS1620 marcado como U6. Interfaz 3-Wire.

Estos dispositivos pueden utilizarse de manera individual o compartiendo el bus. En los captulos posteriores
se utilizarn cada uno de stos componentes. En ste captulo slo utilizaremos el controlador de displays
de 7 segmentos. El diagrama de conexin de estos dispositivos se muestra en la figura No. 5.4.

DISPLAY 7 SEGMENTOS

Es un dispositivo de visualizacin de gran utilidad, bajo costo y


simplicidad. Est conformado por un arreglo de LEDs
dispuestos dentro de un encapsulado plstico en forma de
dgito. Al energizar correctamente los segmentos
correspondientes de LEDs, se pueden representar dgitos.

El sistema de desarrollo MDK-B28, posee un display de 4 x 7


segmentos multiplexados en sus conexiones y manejados por
medio de un circuito integrado fabricado por Motorola, el
MC14489.
Figura No. 5.3: Display de 4 x 7 segmentos.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 99 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

El controlador MC14489, puede utilizarse para manejar un mdulo de 5 dgitos o hasta 25 LEDs por
separado. Cuando el mdulo recibe un dato, este puede ser codificado de acuerdo a la tabla No. 5.1,
pudindose elegir entre la codificacin: Hexadecimal, Especial y No Decodificado.

Valor Escrito al Banco Codificacin No DECODIFICADO


Codificacin ESPECIAL
(HEX) HEXADECIMAL d c b a
0
1 On
2 On
3 On On
4 On
5 On On
6 On On
7 On On On
8 On
9 On On
A On On
B On On On
C On On
D On On On
E On On On
F On On On On

Tabla No. 5.1: Modos de decodificacin del MC14489.


Fuente: Modificado del Manual del MC14489 rev4.

Cuando se elige el modo No Decodificado para algn banco, las salidas correspondientes a los terminales e, f y g del
display se colocan en nivel bajo (0 V).

Sistema de Desarrollo para MC, modelo MDK-B28 - 100 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Figura No. 5.4: Dispositivos SPI integrados en el Sistema MDK-B28.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 101 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

SHIFTIN
Recibe informacin desde un dispositivo de comunicacin serial sincrnica, esto permite al microcontrolador
interactuar con un gran nmero de dispositivos, conversores A/D, D/A, relojes, memorias, etc.

SHIFTIN DPin, CPin, Modo, [Variable {\Bits} {, Variable {\Bits}..}]

DPin: Es una variable, constante o expresin (0 - 15) que especifica el terminal de E/S que ser
conectado a la lnea de datos de salida del dispositivo serial. Este terminal ser convertido en entrada
por la instruccin SHIFTIN.
CPin: Variable, constante o expresin (0 - 15) que especifica el terminal de E/S que ser utilizado
como reloj para la recepcin. La generacin de esta seal de reloj es responsabilidad del dispositivo
maestro, es decir, del BASIC Stamp, por lo cual, este Pin ser usado como salida.
Modo: Es una variable, constante o expresin (0 - 3) que especifica el modo de recepcin, a
utilizar por el comando SHIFTIN. Especifica el orden en el que los bits son recibidos y el flanco
correspondiente de la seal de reloj para lograr una correcta recepcin.
Variable: Es la variable donde se almacenan los bits recibidos.
Bits: Parmetro opcional (1 - 16) que indica la cantidad de bits a recibir. Si no se especifica, el
BS2p asume el valor predeterminado de 8 Bits.

La velocidad de recepcin de los datos, est determinada por la frecuencia del reloj en el Pin Cpin y es de
42.37 Khz, la forma de onda de esta seal se muestra en la figura No. 5.5.

5 Volt ->

Figura No. 5.5:


Reloj para las instrucciones
SHIFTIN / SHIFTOUT.
Fuente: Elaboracin Propia.

Tiempo (us)

Sistema de Desarrollo para MC, modelo MDK-B28 - 102 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Como se mencion con anterioridad, la instruccin SHIFTIN convierte al terminal Cpin en salida y lo
coloca en estado bajo, mientras que Dpin es colocado como entrada (en modo de alta impedancia), y a
continuacin opera segn el modo seleccionado como se muestra a continuacin:

Modo PRE: Lee el estado del pin Dpin y genera un pulso de reloj.
Modo POST: Genera un pulso de reloj y posteriormente lee el estado del Pin.

La tabla No. 5.2 muestra los posibles modos de operacin del comando SHIFTIN.

Smbolo Valor Descripcin


MSBPRE 0 MSB primero; los bits del dato estn disponibles antes del pulso de reloj.
LSBPRE 1 LSB primero; los bits del dato estn disponibles antes del pulso de reloj.
MSBPOST 2 MSB primero; los bits del dato estn disponibles luego del pulso de reloj.
LSBPOST 3 LSB primero; los bits del dato estn disponibles luego del pulso de reloj.

Tabla No. 5.2: Modos de recepcin del comando SHIFTIN.


Fuente: BASIC Stamp Manual v2.0.

SHIFTOUT
Enva informacin hacia un dispositivo de comunicacin serial sincrnica.

SHIFTOUT DPin, CPin, Modo, [Dato {\Bits} {, Dato {\Bits}..}]

DPin: Es una variable, constante o expresin (0 - 15). Especifica el terminal de E/S que ser
conectado a la lnea de datos de entrada del dispositivo serial. Este terminal ser convertido en
salida por la instruccin SHIFTOUT.
CPin: Variable, constante o expresin (0 - 15) que especifica el terminal de E/S que ser utilizado
como reloj para la transmisin.
Modo: Variable, constante o expresin (0 - 1), que especifica el modo de transmisin.
Dato: Variable, constante o expresin que contiene la informacin a ser enviada.
Bits: Parmetro opcional (1 - 16) que especifica la cantidad de bits a enviar. De no especificarse se
asume el envo de 8 bits.

Al igual que para la recepcin, la velocidad de transmisin es de 42.37 Khz. El funcionamiento de la


instruccin SHIFTOUT es siguiente: el terminal CPin es definido como salida y colocado en estado bajo. El
pin DPin es utilizado como salida y se enva el primer bit del dato; a continuacin se genera un pulso de

Sistema de Desarrollo para MC, modelo MDK-B28 - 103 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

reloj (por CPin). Esto se repite hasta concluir con la transmisin del ltimo bit. Existen dos modos de
transmisin que dependen de la forma como los bits son enviados, ver tabla No. 5.3.

Smbolo Valor Descripcin


LSBFIRST 0 El bit menos significativo del dato se enva primero
MSBFIRST 1 El bit ms significativo del dato se enva primero
Tabla No. 5.3: Modos de transmisin con SHIFTOUT.
Fuente: BASIC Stamp Manual v2.0.

Figura No. 5.6: Base de tiempo para el comando


SHIFTIN. Th = 5.6 us, Ti = 18.8 us para un BASIC
Stamp 2p.
Fuente: Modificado del BASIC Stamp Manual,
versin 2.0. Parallax.

Figura No. 5.7: Base de tiempo para el comando


SHIFTOUT. Th = 5.6 us, Ti = 18.8 us, Ta = 5.6
us, Tb = (Ti-Ta) us. Para un BASIC Stamp 2p.
Fuente: Modificado del BASIC Stamp Manual,
versin 2.0. Parallax.

Sistema de Desarrollo para MC, modelo MDK-B28 - 104 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Objetivos: Utilizar el comando SHITFOUT para enviar informacin a un dispositivo SPI. Inicializar el display de 7 segmentos y mostrar
datos en l. Controlar los modos de operacin y el brillo del display de 7 segmentos.

Elementos a Utilizar Conecte los terminales MOSI,SCK,SS0 del bus SPI/3-


Wire con P0, P1 y P5 respectivamente para armar el
circuito de la figura No. 5.8. No desconecte ste
(1) Sistema de Desarrollo MDK-B28 con un BS2p. circuito, pues lo usar en toda la actividad.
(1) Controlador de display de 7 seg. MC14489.
(1) Display de 4x7 segmentos LITEON LTC4727JR.
(1) Cable de programacin.
Energice el sistema MDK-B28 e introduzca el programa
(1) StampW (ver 2.0 Beta 2.1 o sup). 5_1.bsp al BASIC Stamp. Ejecute el programa.

Figura No. 5.8: Esquema de conexiones para el ejercicio #1.

Sistema de Desarrollo para MC, modelo MDK-B28 - 105 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Deber ver encender los displays 7 segmentos con un conteo en todos sus dgitos, si no es as revise las
conexiones. Se ha logrado mostrar la informacin enviada desde el microcontrolador por medio de los
displays de una forma muy simple pero poco esttica y difcilmente til, observe por ejemplo como los LEDs
L1, L2 y L3 (ver figura No. 5.11) nunca se apagan en forma simultnea. Otra caracterstica que no se ha
utilizado es la manipulacin de los puntos decimales, trate de encender al menos uno de ellos apyese en
las figuras No. 5.10 y No. 5.12.

'Programa 5_1.bsp
'Este programa muestra como :
' 1) Utilizar la instruccin SHIFTOUT para enviar informacin a un disp. serial.
' 2) Manipular el display de 7 segmentos del Sistema de Desarrollo MDK-B28
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
MOSI PIN 0 'Terminal de entrada de datos al MC14489 conectado a P0
SCK PIN 1 'Terminal de reloj conectado a P1
SS0 PIN 5 'Seal de activacin del MC14489 conectada en P5

LowPower CON 0 '7 SEG Apagado


Normal CON 1 '7 SEG Encendido
x VAR Nib 'Variable de uso general
'___________________________________________________________________________________
'Programa Principal
Inicio:
GOSUB Inicia_7SEG
DO
LOW SCK 'Reloj en estado bajo
FOR x=0 TO 15 'Enva un valor a los 5 Bancos con los puntos decimales apagados
LOW SS0
SHIFTOUT MOSI,SCK,MSBFIRST,[$0\4,x\4,x\4,x\4,x\4,x\4]
HIGH SS0
PAUSE 1000
NEXT
GOSUB Low_Power_7SEG
PAUSE 1000
GOSUB Inicia_7SEG
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 106 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Continuacin del Programa 5_1.bsp

'===================================================================================
'SUBRUTINAS
'La rutina Inicia_7SEG define la configuracin dada a los bancos de 7 segmentos
'y enciende la pantalla en este caso se ha usado el modo HEXADECIMAL

Inicia_7SEG:
HIGH SS0
LOW SCK
LOW SS0
SHIFTOUT MOSI,SCK,MSBFIRST,[Normal]
HIGH SS0
RETURN

'La rutina Low_Power_7SEG apaga todos los LED's de la pantalla


Low_Power_7SEG:
HIGH SS0
LOW SCK
LOW SS0
SHIFTOUT MOSI,SCK,MSBFIRST,[LowPower]
HIGH SS0
RETURN

Ahora bien, existen aplicaciones en las cuales no todos los dgitos son nmeros o se requiere del manejo de
cada LED de manera individual, para tal fin es que el controlador MC14489 dispone varios modos de
decodificacin. Descargue el programa 5_2.bsp al BASIC Stamp y observe cuidadosamente su
funcionamiento.

'Programa 5_2.bsp
'Este programa muestra como:
' 1) Utilizar la instruccin SHIFTOUT para enviar inf. a un dispositivo serial
' 2) Manipular la configuracin del display de 7 SEG para lograr representar
' caracteres No-Numricos o controlar LED's en forma individual.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}

Sistema de Desarrollo para MC, modelo MDK-B28 - 107 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Continuacin del Programa 5_2.bsp

'___________________________________________________________________________________
'Declaracin de Variables y Constantes
MOSI PIN 0 'Terminal de entrada de datos al MC14489 conectado a P0
SCK PIN 1 'Terminal de reloj conectado a P1
SS0 PIN 5 'Seal de activacin del MC14489 conectada en P5

LowPower CON 0 '7 SEG Apagado

x VAR Nib 'Variable de uso general


'___________________________________________________________________________________
'Programa Principal

Inicio:
GOSUB Inicia_7SEG
DO
LOW SCK
FOR x=0 TO 15
LOW SS0
SHIFTOUT MOSI,SCK,MSBFIRST,[x\4,x\4,x\4,x\4,x\4,x\4]
'Se enva un valor entre 0 y 15 a todos los bancos de 7 segmentos, a la
'configuracin del brillo y de los puntos decimales
HIGH SS0
PAUSE 1000
NEXT
GOSUB Low_Power_7SEG
PAUSE 1000
GOSUB Inicia_7SEG
LOOP

'===================================================================================
'SUBRUTINAS
'Inicia_7SEG define la configuracin dada a los bancos de 7 segmentos y enciende la
'pantalla. En este caso se han dispuesto los Bancos 3 y 4 como HEXADECIMAL, los
'Bancos 1 y 2 como ESPECIAL y el Banco 5 como No DECODIFICADO.

Sistema de Desarrollo para MC, modelo MDK-B28 - 108 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Continuacin del Programa 5_2.bsp

Inicia_7SEG:
HIGH SS0
LOW SCK
LOW SS0
SHIFTOUT MOSI,SCK,MSBFIRST,[%01100111\8]
HIGH SS0
RETURN

'La rutina Low_Power_7SEG apaga todos los LED's de la pantalla


Low_Power_7SEG:
HIGH SS0
LOW SCK
LOW SS0
SHIFTOUT MOSI,SCK,MSBFIRST,[LowPower]
HIGH SS0
RETURN

En este programa ver como los dos ltimos dgitos del banco de displays muestran el mismo conteo del
programa anterior. Pero, el comportamiento de los dos primeros dgitos es diferente coincidiendo con lo
indicado en la columna # 3 de la tabla No. 5.1. Esta cualidad de poder disponer de algunos de los
segmentos para representar nmeros y otros para letras permite desarrollar aplicaciones en las cuales se
presenten pequeas indicaciones que faciliten el uso de las mismas. Por ejemplo, si los displays se utilizarn
como elemento de visualizacin de un sistema de medicin de temperatura, pudiera indicarse con nmeros
la magnitud y con letras las unidades utilizadas para la indicacin.

La otra caracterstica resaltante en este programa es la manipulacin de los LEDs L1, L2 y L3 as como de
los 4 puntos decimales, para comprender esto hace falta estudiar un poco el proceso de configuracin del
circuito MC14489 y la conexin de los mencionados LEDs. Para configurar al controlador MC14489 basta con
enviarle un byte de informacin, en el cual, se especifica el modo de codificacin de los datos recibidos para
cada banco y el estado deseado para los mismos segn se explica en la figura No. 5.9.

Para enviar la informacin a cada uno de los bancos (que se corresponder con lo mostrado en los displays),
se enva un grupo de 24 bits como se muestra en la figura No. 5.10. El primer grupo de 4 bits controla el
brillo de los displays y el encendido de los puntos decimales, cuando se coloca el modo de bajo brillo la
intensidad lumnica emitida por cada diodo LED se disminuye en un 50% con respecto al modo de
alto brillo. Esta es la reduccin en igual proporcin del consumo de corriente. Los dems bits corresponden a

Sistema de Desarrollo para MC, modelo MDK-B28 - 109 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

cada uno de los datos que se quieren colocar en los bancos del 5 al 1; el envo de informacin se hace
comenzando por el byte mas significativo MSB. El parmetro /4 aadido al comando SHIFTOUT garantiza el
envo de paquetes de 4 bits por vez.

ENABLE

CLOCK

DATA IN C7 C6 C5 C4 C3 C2 C1 C0

C7 0 = No Decodificado, 1 = Modo Especial C4 & C5

C6 0 = No Decodificado, 1 = Modo Especial C1, C2 & C3

C5 Configuracin Banco No. 5: 0 = HEX, 1 = Depende de C7

C4 Configuracin Banco No. 4: 0 = HEX, 1 = Depende de C7

C3 Configuracin Banco No. 3: 0 = HEX, 1 = Depende de C6

C2 Configuracin Banco No. 2: 0 = HEX, 1 = Depende de C6

C1 Configuracin Banco No. 1: 0 = HEX, 1 = Depende de C6

C0 0 = Display apagado, 1 = Display encendido

Figura No. 5.9: Byte de configuracin del Integrado MC14489


Fuente: Modificado del manual del MC14489 rev4.

Sistema de Desarrollo para MC, modelo MDK-B28 - 110 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

ENABLE

CLOCK

23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00

DATO DEL BCO 5 DATO DEL BCO 4 DATO DEL BCO 3 DATO DEL BCO 2 DATO DEL BCO1

22 21 20
PUNTOS DECIMALES

0 0 0 TODOS APAGADOS
0 0 1 ACTIVADO EN BCO 1
0 1 0 ACTIVADO EN BCO 2
0 1 1 ACTIVADO EN BCO 3
1 0 0 ACTIVADO EN BCO 4
1 0 1 ACTIVADO EN BCO 5
1 1 0 ACTIVADO EN BCOS 1 y 2
1 1 1 ACTIVADO EN TODOS

0=BAJO BRILLO, 1= ALTO BRILLO

Figura No. 5.10: Formato de envo de datos al controlador MC14489.


Fuente: Modificado del manual del MC14489 rev4.

Sistema de Desarrollo para MC, modelo MDK-B28 - 111 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

El display de 7 segmentos contenido en el sistema MDK-


B28, presenta la distribucin mostrada en la figura No.
5.11. Sus conexiones internas pueden verse en la figura
No. 5.12. Los LEDs L1,L2 y L3 han sido conectados al
Banco 5 del controlador.

Figura No. 5.11: Display 7 Segmentos.


Fuente: Modificado de hoja de especificaciones del
display LITEON LTC-4727JR.

Figura No. 5.12: Conexiones internas del display de 7 segmentos.


Fuente: Hoja de especificaciones del display LITEON LTC-4727JR.

Sistema de Desarrollo para MC, modelo MDK-B28 - 112 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Objetivos: Implementar un contador UP/DOWN haciendo uso del banco de displays 7 segmentos como elemento de visualizacin.

Elementos a Utilizar Identifique los terminales PB1, PB2 y PB3 del sistema
MDK-B28. Conctelos con P8, P9 y P10 del BASIC
Stamp, respectivamente. Con ello armar el circuito de
(1) Sistema de Desarrollo MDK-B28 con un BS2p.
(1) Controlador de display de 7 seg MC14489. la figura No. 5.13.
(1) Display de 4x7 segmentos LITEON LTC4727JR.
(1) Banco de Pulsadores.
(1) Cable de programacin.
(1) StampW (ver 2.0 o sup).

Energice el sistema e introduzca ahora el programa


5_3.bsp al Microcontrolador. En estos momentos el valor
0000 debe aparecer en su display. Presione el pulsador
PB1 para incrementar o decrementar la cuenta, PB2 le
servir para re-inicializar el conteo y PB3 para cambiar el
sentido del mismo. Este programa ya fue comentado
ampliamente en el Captulo No. 2, restando solamente por
explicar, la nueva forma de presentacin del valor del
conteo.
Figura 5.13: Conexin de los pulsadores en el ejercicio #2
Fuente: Elaboracin Propia

'Programa 5_3.bsp
'Este programa tiene por objetivos:
'1) Mostrar el valor de una cuenta por medio de 4 displays de 7 segmentos
'2) Utilizar el operador DIG para extraer los dgitos decimales de una variable
'3) Reforzar los conocimientos adquiridos en el Captulo No. 2.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

Sistema de Desarrollo para MC, modelo MDK-B28 - 113 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Continuacin del Programa 5_3.bsp

Cta VAR Byte 'Variable que mantiene la cuenta


EspTrab VAR Byte 'Espacio de Trabajo de BUTTON para pulsador S1
EspTrab1 VAR Byte 'Espacio de Trabajo de BUTTON para pulsador S2
EspTrab2 VAR Byte 'Espacio de Trabajo de BUTTON para pulsador S3
Modo VAR Bit 'Variable usada para conocer el sentido de la cuenta
I VAR Byte
MOSI PIN 0 'Terminal por que entran los datos al MC14489 conectado a P0
SCK PIN 1 'Terminal de reloj conectado a P1
SS0 PIN 5 'Seal de activacin del MC14489 conectada en P5
Contar PIN 8 'Pulsador para contar
Reset PIN 9 'Pulsador para inicializar la cuenta
Up_Down PIN 10 'Pulsador para cambiar el sentido de la cuenta
'___________________________________________________________________________________
'Programa Principal
'Configuracin del driver 7 segmentos
LOW SS0
SHIFTOUT MOSI,SCK,MSBFIRST,[%01100001\8]
HIGH SS0
DO
LOW SS0
'Enviar cada uno de los dgitos a mostrar
SHIFTOUT MOSI,SCK,MSBFIRST,[$0\4,$8\4,Cta DIG(0)\4,Cta DIG(1)\4,Cta DIG(2)\4,
Cta DIG(3)\4]
HIGH SS0
BUTTON Reset,0,255,1,EspTrab,1,Reiniciar 'Se determina si el pulsador
BUTTON Up_Down,0,255,1,EspTrab1,1,Modo_seleccion 'presionado es el de RESET, el
BUTTON Contar,0,250,250,EspTrab2,1,Cuenta 'UP_DOWN o el de Contar
Fin:
LOOP

Cuenta:
ON Modo GOSUB Cuenta_Arriba,Cuenta_Abajo 'Dependiendo del modo la cuenta
GOTO Fin 'ser ascendente o descendente
Reiniciar: ' Reiniciar la cuenta en cero
Cta = 0
GOTO Fin

Modo_seleccion: ' Cambiar el sentido de la cuenta


Modo = ~Modo
GOTO Fin

Sistema de Desarrollo para MC, modelo MDK-B28 - 114 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Continuacin del Programa 5_3.bsp

'===================================================================================
'SUBRUTINAS
Cuenta_Abajo:
Cta = Cta - 1
RETURN

Cuenta_Arriba:
Cta = Cta+1
RETURN

En la lnea de programacin que contiene a la instruccin SHIFTOUT dentro del lazo DO...LOOP, se
maneja la actualizacin del conteo. El primer nibble enviado indica modo bajo brillo, con todos los puntos
decimales apagados. El segundo nibble apaga los LEDs L1, L2 y L3. A continuacin, se envan uno por uno
los dgitos de la cifra a mostrar comenzando con el menos significativo. Para extraer un dgito de una
variable se utiliza el operador DIG. Observe como los argumentos de la instruccin SHIFTOUT pueden
incluir incluso operaciones matemticas lo que permite presentar un cdigo compacto y sencillo de entender.

Sistema de Desarrollo para MC, modelo MDK-B28 - 115 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Objetivo: Implementar un reloj digital AM/PM con el microcontrolador BASIC Stamp.

Elementos a Utilizar
Identifique los terminales PB0 y PB1 del MDK-B28, y
(1) Sistema de Desarrollo MDK-B28 con un BS2p. conctelos con P8, P9 del BASIC Stamp. Descargue el
(1) Controlador de display de 7 seg MC14489. programa 5_4.bsp al microcontrolador.
(1) Display de 4x7 segmentos LITEON LTC4727JR.
(1) Banco de Pulsadores.
(1) Cable de programacin.
(1) StampW (ver 2.0 Beta 2.1 o sup)
INICIO

La figura No. 5.14 muestra el diagrama de flujo del programa


Inicializar
5_4.bsp, en ella, se aprecia la existencia de las rutinas
Display
Sel_Hora y Sel_Min, las mismas se encargan de incrementar
los contadores de horas y de minutos transcurridos. El
funcionamiento del programa es sumamente sencillo: un ciclo
de actualizacin ocurre cada un segundo e incrementa a un Actualizar
contador. Cuando este alcanza el valor de 60, incrementa a un Display
contador de minutos y este a su vez har lo propio con el
contador de horas. La precisin de este primer reloj no es muy Segundos = Segundos +1
buena, aunque se pueden realizar mejoras para lograr
resultados aceptables.

Los displays de 7 segmentos son dispositivos de uso muy Si Presionado


comn pero su principal inconveniente es el elevado costo en PB0?
lneas de E/S requeridas para su funcionamiento. Igualmente,
la necesidad del refrescamiento continuo requerido para lograr Sel_Hora
No
una buena visualizacin, agota tiempo que el microcontrolador
pudiera emplear en actividades de mayor importancia. Por
estas razones, en el sistema MDK-B28 se ha incluido una Si
forma sencilla, eficiente y poderosa de conectar un banco de Presionado
displays con el microcontrolador que libera al mismo de las PB1?
labores de refrescamiento y multiplexin de los dgitos.
Sel_Min No
Figura No. 5.14: Diagrama de flujo del programa 5_4.bsp.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 116 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

'Programa 5_4.bsp
'Este programa tiene por objetivo:
'1) Implementar un reloj digital simple.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

Hora VAR Byte ' Hora


Minu VAR Byte ' Minutos
Seg VAR Byte ' Segundos
AM_PM VAR Nib ' Punto AM/PM
EspTrab0 VAR Byte ' Espacio de Trabajo de BUTTON para pulsador S1
EspTrab1 VAR Byte ' Espacio de Trabajo de BUTTON para pulsador S2

MOSI PIN 0 ' Terminal de entrada de datos al MC14489 conectado a P0


SCK PIN 1 ' Terminal de reloj conectado a P1
SS0 PIN 5 ' Seal de activacin del MC14489 conectada en P5
Horas PIN 8 ' Pulsador para incrementar Horas
Minutos PIN 9 ' Pulsador para incrementar Minutos

LedOn CON $3 ' Dos puntos del reloj encendidos


LedOff CON $8 ' Dos puntos del reloj apagados
Am CON $0 ' Hora es AM
Pm CON $4 ' Hora es PM
'___________________________________________________________________________________
'Programa Principal
GOSUB Init ' Rutina que inicializa el display DE 7 SEG
DO
Inicio:
GOSUB Update ' Rutina que actualiza el contenido del display de 7 SEG
Seg = Seg+1 ' Incrementa el contador de segundos
GOSUB Check_Segundos ' Rutina que verifica que transcurran 60 segundos
BUTTON Horas,0,2,1,EspTrab0,0,Fin
GOSUB Sel_Hora ' Si presiona el puls. de horas se ejecuta esta rutina
Fin: BUTTON Minutos,0,2,1,EspTrab1,0,Inicio
GOSUB Sel_Min ' Si presiona el puls. de minutos se ejecuta esta rutina
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 117 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Continuacin del Programa 5_4.bsp

'===================================================================================
'SUBRUTINAS
'Init configura al display para que los bancos 1,2,3,4 operen en modo HEX y el 5
'en modo No Decodificado para poder manipular directamente a L1,L2,L3

Init:
LOW SS0 : SHIFTOUT MOSI,SCK,MSBFIRST,[%01100001\8] : HIGH SS0
Hora = 12 : Seg =0 : Minu = 0 : AM_PM = Am
'La hora predeterminada durante la inicializacin es 12:00 am
RETURN

'UpDate muestra la hora y hace parpadear los dos puntos del display, adems en ella
'transcurre la mayor parte de la temporizacin de la base de tiempo de 1 segundo

UpDate:
LOW SS0 :
SHIFTOUT MOSI,SCK,MSBFIRST,[$0\4,($8+AM_PM)\4,Minu DIG (0)\4,Minu DIG(1)\4,
Hora DIG(0)\4,Hora DIG(1)\4]
HIGH SS0 : PAUSE 490
LOW SS0
SHIFTOUT MOSI,SCK,MSBFIRST,[$0\4,($3+AM_PM)\4,Minu DIG (0)\4,Minu DIG(1)\4,
Hora DIG(0)\4,Hora DIG(1)\4]
HIGH SS0 : PAUSE 500
RETURN

'Check_Segundos, verifica la llegada del contador de segundos a 60


'y actualiza el contador de los Minutos

Check_Segundos:
IF Seg<60 THEN RETURN
Minu = Minu + 1
Seg = 0
GOSUB Check_Minutos
RETURN

'Check_Minutos, verifica la llegada del contador de segundos a 60


'y actualiza el contador de las Horas

Sistema de Desarrollo para MC, modelo MDK-B28 - 118 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Continuacin del Programa 5_4.bsp

Check_Minutos:
IF Minu < 60 THEN RETURN
Hora = Hora+1
Minu = 0
GOSUB Check_Hora
RETURN

'Check_Hora, verifica la llegada del contador de horas a 12


'y actualiza la variable que controla el punto de AM/PM.

Check_Hora:
IF Hora = 12 THEN
IF AM_PM = Am THEN AM_PM = Pm ELSE AM_PM = Am
ELSEIF Hora >12 THEN
Hora = 1
ENDIF
RETURN

'Sel_Hora incrementa el contador de horas


Sel_Hora:
Hora = Hora + 1
GOSUB Check_Hora
RETURN

'Sel_Min incrementa el contador de minutos


Sel_Min:
Minu = Minu + 1
GOSUB Check_Minutos
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 119 -


www.roso-control.com
Captulo No. 5. Comunicacin Serial Sincrnica (SPI)

Investigue los siguientes tpicos


1. Qu se entiende por comunicacin serial sincrnica ?.
2. Cual es la diferencia entre comunicacin serial sincrnica y asincrnica ?.
3. Qu es un bus de comunicaciones ?.
4. Cuantas formas de comunicacin serial sincrnica usted conoce ?.
5. Qu es el estndar SPI ?.
6. Qu significa Half Duplex y Full Duplex ?.
7. Explique los cuatro modos de operacin del bus SPI ?.
8. Cuantos integrados con comunicacin serial sincrnica estn incluidos en el sistema MDK-B28 ?.
9. Qu es un display de 7 Segmentos ?.
10. Qu es un controlador para un display de 7 Segmentos ?. Como trabaja ?.
11. Qu es un modo de decodificacin en el MC14489 ?.
12. Para que se utilizan los comandos SHIFTIN y SHIFTOUT?.
13. A que velocidad se reciben y envan los datos utilizando los comandos SHIFTIN y SHIFOUT ?.
14. Cual es el ancho del pulso en us, de la seal de reloj del comando SHIFTOUT ?.
15. Explique como funcionan los modo de operacin del comando SHIFTIN ?.
16. En el comando SHIFTOUT, primero se coloca el dato y luego se genera un pulso de reloj, explique ?.
17. Cuantos modos de operacin tiene el comando SHIFTOUT ?.

Programacin

1. Elabore un programa para crear un contador digital utilizando el display de 7 segmentos de la


unidad de desarrollo. Se deber mostrar en el display una cuenta progresiva desde el nmero 0.0
hasta el nmero 9.9 en pasos de 0.1 unidades. Los displays debern encender en modo de alto y
bajo brillo alternadamente cada vez que se genere un conteo. Utilice slo los dgitos de la derecha
del display.

2. Repita el programa anterior y agregue lneas para que ahora, los dos displays no utilizados indiquen
H-, cuando se est en el modo de alto brillo y L- cuando se trabaje en modo de bajo brillo.
Introduzca una pausa de 250 ms cada vez que se incremente el conteo.

Figura 5.15: Ejemplo del resultado deseado en el ejercicio de programacin.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 120 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Captulo No. 06
Conversin Analgica a Digital (A/D) y
Digital a Analgica (D/A)

Sistema de Desarrollo para MC, modelo MDK-B28 - 121 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Introduccin. La funcin principal de un microcontrolador


es ejercer una accin de direccin y control sobre el sistema ALGUNOS TIPOS DE ADC
que gobiernan, para ello, requieren obtener informacin del Conversores A/D por Integracin
mundo exterior por medio de los perifricos conectados a l. En este tipo de conversores se utiliza un integrador por medio de
La gran mayora de los perifricos primarios utilizados para un condensador que se carga o descarga durante un tiempo
cuantificar variables como: velocidad, posicin, nivel, proporcional a la tensin de entrada. Al medir este tiempo, se
temperatura, humedad, intensidad luminosa, presin y flujo logra cuantificar la tensin aplicada al condensador. Su
entre otras; utilizan como representacin de la magnitud funcionamiento es extremadamente simple pero posee las
leda la variacin de una tensin que es proporcional a la siguientes desventajas:
variable fsica medida. En este captulo, se presentan .- El tiempo de duracin de la conversin es proporcional a la
algunos conceptos bsicos relacionados con la conversin magnitud de la entrada analgica, no es constante.
A/D - D/A y la manera de implementarlas con el BASIC .- Son muy sensibles al ruido, as como a cambios en la
Stamp y el sistema de desarrollo MDK-B28. temperatura.

La mayora de las magnitudes fsicas se Conversor A/D por Aproximaciones Sucesivas


presentan en la naturaleza de forma analgica, En este tipo de conversor, la conversin se realiza desde el MSB al
por esta razn, durante mucho tiempo la LSB. El tiempo de conversin es proporcional al nmero de bits
del conversor. Su funcionamiento se basa, en asumir un valor
medicin de estas variables se realiz mediante igual a 1 en el bit de mayor peso (MSB) y comparar el resultado
el uso de tcnicas y circuitos analgicos. Con la de la salida de un convertidor D/A interno con la entrada, si sta
llegada de la era digital, esta manera de ltima es superior al resultado actual de la conversin, entonces el
efectuar las mediciones fue reemplazada bit asumido es correcto y debe tener el valor (1), de lo contrario
debe asignrsele el valor (0). Una vez obtenido el valor de ste
rpidamente. La informacin digitalizada puede bit, se repite el proceso con el bit siguiente hasta alcanzar los n
ser procesada, transmitida y almacenada de bits de la conversin. Estos conversores son ms lentos que los
manera sencilla, veloz y limpia. Pero, para poder conversores FLASH pero se logra alcanzar resoluciones superiores.
procesar la seal de manera digital hay que
ADC Flash
cuantificarla haciendo uso de los convertidores Brinda una de las ms altas velocidades de conversin disponible
analgicos a digitales. en el mercado. Basa su funcionamiento en el uso de
comparadores, cada uno asociado a un valor de tensin. Las
Un conversor Analgico/Digital (ADC) es un salidas de todos los comparadores se conecta a una lgica de
dispositivo capaz de procesar una seal decodificacin que determina cuales valores de tensin fueron
superados y cuales no. Sus desventajas son:
analgica y representarla en forma discreta o .- Consumen una corriente elevada al requerir 2n comparadores.
digital. .- No se encuentran disponibles para grandes resoluciones.

Cuando un ADC convierte una seal DC, sta se deber mantener constante durante todo el tiempo que
demora la conversin; permitiendo as efectuar una correcta digitalizacin del valor de la entrada. Por el
contrario, cuando la seal vara como funcin del tiempo en ms de un LSB (durante la digitalizacin), el
ADC producir un resultado incorrecto (error de la lectura). Para reducir este error suelen aplicarse dos
soluciones: el uso de un filtro pasa bajo que evita que el ADC perciba variaciones mayores a 1 LSB o
mediante el uso de un circuito de muestreo y retencin.

Sistema de Desarrollo para MC, modelo MDK-B28 - 122 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

El circuito de muestreo y retencin se coloca a la entrada


del ADC y se compone de un condensador, un interruptor RESOLUCIN
de estado slido y un buffer de alta impedancia. Su
funcin principal es mantener una muestra de la seal Es el cambio ms pequeo en la entrada de un
analgica durante el tiempo que dura la conversin. conversor A/D que ocasiona un cambio en un
bit de la salida. Suele especificarse en voltios
DC. La resolucin en voltios para un ADC o un
El tiempo que transcurre para que el condensador
DAC de n bits vendr dada por la expresin:
adquiera el mismo nivel de tensin de la seal de entrada
es denominado tiempo de adquisicin, durante este, el
circuito de muestreo y retencin se encontrar en estado
Vref
de muestreo (sample). Una vez que se ha cargado el Re solucin =
condensador, se pasa al estado de hold, donde es 2n
retenido el valor muestreado.
El ADC que incluye el MDK-B28 es un conversor
Ya que el microcontrolador BASIC Stamp no posee un
A/D modelo LTC1298, de dos canales de 12 bits
conversor A/D, es necesaria la utilizacin de un circuito con un rango de conversin de 0-5 VDC. Su
especializado para tal fin. El sistema de desarrollo MDK- resolucin es de 1.2 mV.
B28, posee un conversor analgico digital LTC1298
fabricado por Linear Technology que posee las siguientes
caractersticas:

Resolucin de 12 bits.
Velocidad mxima de muestreo de 11.1 ksps.
2-Canales multiplexados de entrada con posibilidad de medicin en modo diferencial.
Interconexin compatible con bus SPI y Microwire, con comunicacin Half Duplex.
Consumo de 1nA mientras no se efecta conversin y de 350 A cuando se convierte.
Circuito de Sample and Hold en el propio integrado.
Conversin por medio de aproximaciones sucesivas.
Encapsulado PDIP de 8 terminales.

CS/SHDN: Habilitacin del Convertidor A/D.


CH0 y CH1: Canales de entrada analgicos.
GND: Seal de referencia 0 Volt.
Din: Entrada de datos desde el microcontrolador.
Dout: Salida de los datos de la conversin A/D.
CLK: Reloj del sistema
VCC(Vref): Alimentacin y Referencia. Figura No. 6.1: Pines de Conexin del convertidor
analgico a digital LTC1298.
Fuente: Elaboracin Propia.
Sistema de Desarrollo para MC, modelo MDK-B28 - 123 -
www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

En el sistema de desarrollo MDK-B28, el conversor A/D se


encuentra ubicado dentro del bus de dispositivos SPI/3-Wire. El
MUESTREO
mismo, est identificado como U5. La figura No. 6.2 muestra el
diagrama de conexiones del circuito en el sistema de desarrollo. Es la accin de tomar muestras de una
seal en una sucesin de instantes sin
Los canales CH0 y CH1 se encuentran disponibles en el terminal importar lo que sucede el resto del tiempo.
de conexiones. La figura No. 6.3 muestra una fotografa del Ello implica poder conmutar la seal de
convertidor LTC1298 dentro del sistema MDK-B28. manera que en el instante deseado sea
leda y fuera de ese instante la entrada
quede conectada a tierra o simplemente
desconectada.

De acuerdo al teorema del muestreo, si una


seal desea reproducirse de manera
analgica luego de ser digitalizada, la
frecuencia a la cual se efecto el muestreo
durante el proceso de conversin viene
dada por:

m 2 max

Es decir que la velocidad a la que se realiza


el muestreo (expresada en muestras por
segundo), debe ser al menos del doble del
valor de la mxima frecuencia de la seal
Figura No. 6.2: Esquema de conexiones para el convertidor original.
A/D modelo LTC1298.
Fuente: Elaboracin Propia.

Para poder realizar una conversin A/D con el convertidor LTC1298, se


deben realizar los siguientes pasos:

Colocar la lnea de reloj (SCK) en estado alto durante al menos 2s.


Colocar la lnea de reloj (SCK) en estado bajo por 2s o ms.
Enviar la seal de inicio y la configuracin al ADC (ver tabla No. 6.1 y
figura No. 6.4).
Recibir el bit nulo y los 12 bits de la conversin.
Colocar la lnea de reloj (SCK) en estado alto.
Figura No. 6.3: El LTC1298 dentro del MDK-B28.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 124 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Figura No. 6.4: Secuencia de operacin para un convertidor A/D LTC1298.


Fuente: LTC1298 Micropower Sampling 12-Bit A/D Converters.

Sistema de Desarrollo para MC, modelo MDK-B28 - 125 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Bits de seleccin del


Modo de Canal
Canal
Operacin Seleccionado
SGL,/DIFF ODD,SIGN
Modo de un 1 0 Canal 0
canal 1 1 Canal 1
0 0 Canal 0 - Canal 1
Modo diferencial
0 1 Canal 1 - Canal 0

Tabla No. 6.1: Seleccin del canal y del modo operacin del LTC1298.
Fuente: Modificado de LTC1298 Micropower Sampling 12-Bit A/D Converters.

Objetivo: Medir una tensin analgica DC de 0-5 Voltios por medio del conversor A/D LTC1298.

Elementos a Utilizar Arme el montaje de la figura No. 6.5. Para alimentar al


canal de de conversin del LCT1298 con una fuente de
tensin variable, slo tendr que conectar el terminal
(1) Sistema de Desarrollo MDK-B28 con un BS2p.
(1) Un cable serial DB9. de salida del potencimetro identificado como POUT al
(1) Potencimetro de 10 KOhms. canal 0 del LTC1298 (CH0).
(1) ADC 12 bits LTC1298.
(1) StampW (v2.0 beta 2.1 o superior).

Este ejercicio plantea la construccin de un


voltmetro en el rango de 0 a 5 Vdc con una
resolucin de 1.22 mV. Encienda el sistema MDK-
B28 e introduzca al BASIC Stamp el programa
6_1.bsp. Este programa se basa en el diagrama de
la figura No. 6.6.

Figura No. 6.5: Montaje para el ejercicio #1.


Fuente: Elaboracin propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 126 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Al iniciar el programa, la lnea SS1


se coloca a +5V para garantizar
INICIO Conv_A2D Voltios
que al entrar por primera vez al
lazo, se produzca la transicin de
alto a bajo necesaria para iniciar
todo el proceso de conversin.
Inicializar BUS SS1 = 0
Dentro del lazo principal se Calcular divisin
SPI (habilita al ADC)
efecta el llamado a dos Vref
N
subrutinas: Conv_A2D y Voltios. 4096
La primera de ellas se encarga de
la conversin A/D de la seal,
mientras que la segunda, Enviar
interpreta el resultado de la Conv_A2D configuracin
conversin para mostrarlo en Corregir el
unidades de tensin (Voltios) a LSDigito
travs del debug terminal.
Recibir conversin
El resultado de la conversin A/D
se expresa como un nmero Voltios
comprendido entre 0 y 4095, para
determinar la equivalencia en RETURN
voltios se utiliza la conocida SS1 = 1
Vref (deshabilitar ADC)
expresin: Vin = * N ; donde
2n
Mostrar Resultado en
Vin es el valor analgico que
el debug terminal
produce una representacin
digital igual a N, Vref es la tensin RETURN
de referencia (5V en este caso) y
n es el nmero de bits del ADC.
Figura No. 6.6: Diagrama de flujo del programa 6_1.bsp.
Fuente: Elaboracin propia.

Gire la perilla del potencimetro y observe como cambia el valor de la tensin mostrado en la pantalla. Si
esto no ocurre, apague el sistema y revise las conexiones.

Sistema de Desarrollo para MC, modelo MDK-B28 - 127 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

'Programa 6_1.bsp
'Este programa muestra como utilizar el conversor A/D LTC1298 para medir una tensin
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

MOSI PIN 0 'Terminal de entrada de datos al bus conectado a P0


SCK PIN 1 'Terminal de reloj conectado a P1
MISO PIN 2 'Terminal de salida de datos del bus conectado a P2
SS1 PIN 4 'Seal de activacin del LTC1298 conectada en P5

Conv VAR Word 'Variable que contiene el resultado de la conversin


Resto VAR Word 'Variable de uso general
Volts VAR Word 'Voltaje medido
i VAR Nib 'Resolucin del clculo decimal

'___________________________________________________________________________________
'Programa Principal

HIGH SS1 'Inicializacin del bus SPI


DO
DEBUG HOME, "Conversin Analgica a Digital",CR
DEBUG "Programa 6_1.bsp",CR
DEBUG REP "*" \35

'Convierte de A->D y muestra el resultado


GOSUB Conv_A2D
DEBUG CRSRXY,0,4,"Resultado de la conversin : ",DEC4 Conv,CR

'Calcula el equivalente en voltios y lo muestra


GOSUB Voltios
DEBUG "Equivalente a : ",DEC Volts DIG (3),".", DEC3 Volts," Voltios",CR
DEBUG REP "-" \35 ,CR
DEBUG "Gire el potencimetro y observe..."
PAUSE 500
LOOP

'===================================================================================
'SUBRUTINAS

Sistema de Desarrollo para MC, modelo MDK-B28 - 128 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Continuacin del Programa 6_1.bsp

'La subrutina Conv_A2D efecta el proceso de conversin

Conv_A2D:
LOW SS1 'Inicia la transaccin de datos
SHIFTOUT MOSI,SCK,MSBFIRST,[%1101\4] 'Modo No diferencial, MSB primero , Canal 0
SHIFTIN MISO,SCK,MSBPOST,[Conv\12] 'Recibe los datos de la conversin
HIGH SS1
RETURN

'La subrutina Voltios transforma el valor de la conversin en su equivalente en


'voltios para una referencia de 5 voltios, corrigiendo el resultado del 3er dgito.

Voltios:
Volts = 0
Resto = Conv//4096
FOR i=0 TO 3
Resto = Resto*10
Volts = (Volts*10)+(Resto/4096)
Resto = Resto//4096
NEXT
Volts = Volts * 5
i = Volts DIG (0)
i = i/5
Volts = (Volts/10)+i
RETURN

An cuando en las especificaciones del ADC se observa claramente que existe un null bit (bit nulo), que es
enviado desde el LTC1298 al microcontrolador luego de recibir la configuracin, se ha empleado la
instruccin:

SHIFTIN MISO,SCK,MSBPOST,[Conv\12]

Es decir, que se generaran 12 pulsos de reloj y se leern 12 bits y no 13 como se esperaba (el bit nulo + 12
de la conversin). Esto a primera vista puede parecer un error, pero podemos encontrar la explicacin
observando el diagrama presentado en la figura No. 6.7.

Sistema de Desarrollo para MC, modelo MDK-B28 - 129 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Figura No. 6.7: Diagrama de tiempo para una conversin A/D,


utilizando el LTC1298.
Fuente: Modificado de LTC1298 Micropower Sampling 12-Bit A/D Converters.

Los primeros cuatro pulsos del reloj corresponden al envo de la configuracin desde el microcontrolador al
LTC1298. Al ocurrir el cuarto flanco de bajada en la seal de reloj, el LTC1298 toma el control de la lnea
Dout y la coloca a 0V. Esto se mantiene hasta el prximo flanco de bajada del reloj. Al utilizar el modo
MSBPOST, resulta evidente que cuando el BASIC Stamp lee el valor del pin Dout (poco antes de generar el
siguiente pulso de reloj) ya no est presente el null bit en l, sino que, en ese pin est el valor del bit 11 de
la conversin A/D, fjese en la parte superior de la figura No. 6.7. Si se usa el modo MSBPRE, la situacin
cambia totalmente y el valor del null bit si es ledo por el BS2p, requiriendo entonces cambiar la instruccin
que recibe los datos por: SHIFTIN MISO,SCK,MSBPRE,[Conv\13].

Sistema de Desarrollo para MC, modelo MDK-B28 - 130 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Objetivos: Implementar con el BASIC Stamp y el LTC1298 un voltmetro DC de 0 a 5 Voltios que muestra el valor del voltaje medido
en un display de 7 segmentos. Utilizar ms de un dispositivo conectado al bus SPI/ 3-Wire del sistema desarrollo MDK-B28 de manera
simultnea.

Elementos a Utilizar

(1) BASIC Stamp 2p.


(1) Un cable serial DB9. Arme el montaje de la figura No. 6.8. Encienda el MDK-
(1) Potencimetro 10 KOhms. B28 y ejecute el programa 6_2.bsp.
(1) ADC 12 bits LTC1298. Gire la perilla del potencimetro y observe el valor
(1) Display de 4x7 segmentos LTC4727JR.
(1) Controlador de display 7 seg. MC14489.
mostrado en el display de 7 segmentos.
(1) StampW (v2.0 beta 2.1 o superior).

'Programa 6_2.bsp
'Este programa muestra como:
'1) Utilizar el conversor AD LTC1298 para medir una tensin Vdc.
'2) Promediar un conjunto de muestras tomadas de una variable
'3) Manejar mltiples dispositivos sobre el BUS SPI/3-Wire
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

MOSI PIN 0 'Terminal de entrada de datos al bus conectado a P0


SCK PIN 1 'Terminal de reloj conectado a P1
MISO PIN 2 'Terminal de salida de datos del bus conectado a P2
SS1 PIN 4 'Seal de activacin del LTC1298 conectada en P4
SS0 PIN 3 'Terminal de habilitacin del MC14489 conectado a P3

Conv VAR Word 'Variable que contiene el resultado de la conversin


Resto VAR Word 'Variable de uso general
Volts VAR Word 'Tensin medida en voltios
Prom VAR Word 'Variable que contiene el promedio de las ltimas conversiones
i VAR Nib 'Resolucin del clculo decimal

Sistema de Desarrollo para MC, modelo MDK-B28 - 131 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Continuacin del Programa 6_2.bsp

'___________________________________________________________________________________
'Programa Principal

GOSUB Init_7seg 'Inicializa y configura el funcionamiento del display 7 seg


HIGH SS1 'Estado inicial del BUS
DO
Prom = 0
GOSUB Obtener_Medida
GOSUB Voltios
LOW SS0
'Enviar cada uno de los dgitos a mostrar
SHIFTOUT MOSI,SCK,MSBFIRST,[%0001\4,$0\4]
SHIFTOUT MOSI,SCK,MSBFIRST,[Volts DIG (0)\4,Volts DIG (1)\4,Volts DIG (2)\4,
Volts DIG (3)\4]
HIGH SS0
LOOP

'===================================================================================
'SUBRUTINAS

'Init_7seg inicializa al controlador del display


Init_7seg:
LOW SS0
SHIFTOUT MOSI,SCK,MSBFIRST,[$61]
HIGH SS0
RETURN

'Obtener_Medida toma 16 muestras de la variable analgica, espaciadas 10 ms cada


'una, con esto logra reducir la velocidad de actualizacin del valor mostrado en
'el display 7 Segmentos sin dejar de mantener un seguimiento constante de la seal

Obtener_Medida:
FOR i = 0 TO 15
Conv = 0
GOSUB Conv_A2D
PAUSE 10
Prom = Prom + Conv
NEXT
Prom = Prom / 16
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 132 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Continuacin del Programa 6_2.bsp

'La subrutina Conv_A2D Efecta el proceso de conversin

Conv_A2D:
LOW SS1
SHIFTOUT MOSI,SCK,MSBFIRST,[%1101\4]
SHIFTIN MISO,SCK,MSBPOST,[Conv\12]
HIGH SS1
RETURN

'La subrutina Voltios transforma el resultado de la conversin en su equivalente en


'voltios para una referencia de 5 voltios, corrigiendo el resultado del 3er dgito

Voltios:
Volts = 0
Resto = Prom//4096
FOR i=0 TO 3
Resto = Resto*10
Volts = (Volts*10)+(Resto/4096)
Resto = Resto//4096
NEXT
Volts = Volts * 5
i = Volts DIG (0)
i = i/5
Volts = (Volts/10) + i
RETURN

En el programa 6_2.bsp, se ha utilizado el BUS SPI/3-Wire del sistema de desarrollo de una manera
diferente a como se hizo en el Captulo No. 5. Esta vez, son dos los dispositivos que se encuentran
conectados al bus, por lo cual, hay que utilizar a dos seales de habilitacin (SS0 y SS1) y mantener un
estricto control sobre stas, a fin de evitar, que un dispositivo reciba informacin que no estaba dirigida a l.

Otra diferencia notable con el programa anterior, es el clculo del promedio antes de mostrar un resultado.
Si no se implementa un ciclo de espera entre cada medicin de la seal, el resultado mostrado en el display
estara variando constantemente (debido a los errores de medicin y al ruido presente en la seal de DC que
estamos midiendo); esto evitara una visualizacin correcta del ltimo dgito en el display. Para solventar
este inconveniente podemos utilizar cualquiera de estos dos procedimientos:

Sistema de Desarrollo para MC, modelo MDK-B28 - 133 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Figura No. 6.8: Esquema de conexiones para el ejercicio # 2.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 134 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

El primero, sera el uso de filtros aplicados en la entrada analgica del convertidor A/D. Ello evitara la
presencia del ruido pero persistira el constante cambio debido al error del ltimo dgito de la conversin,
adems de la evidente necesidad de instalar el filtro y calcular la frecuencia de corte del mismo.

El segundo, fue implementado en el programa 6_1.bsp. Consiste en aadir un retardo suficientemente


grande como para que el ojo humano logre captar y fijar el valor mostrado antes de cambiarlo por el de la
nueva medida. Este mtodo es simple y elemental, pero al dejar de medir la variable durante un tiempo
considerable, sta puede cambiar en forma considerable sin que el microcontrolador se percate de ello.

La forma en que se ha resuelto el problema en el programa 6_2.bsp es mucho ms eficiente. Al tomar el


promedio de 16 muestras de la seal, espaciadas estas por 10 ms se logra:

Reducir la velocidad con la que se muestra


un cambio en el display de varios milisegundos
a unos 170 ms. Con esto, cada valor mostrado
es claramente percibido antes de ser
actualizado el display.

Reducir el efecto sobre la medicin final de


la interferencia electromagntica existente, ya
que, al ser esto un efecto completamente
aleatorio y provenir generalmente de fuentes
variantes en el tiempo de manera alterna, la
induccin de tensin debida a la EMI ser unas
veces negativa y otras positivas, efectuando
una sumatoria de los posibles voltajes
inducidos, se anularn unos con otros y no se
reflejarn en la medida final (similar al efecto
de usar cables trenzados).
Figura No. 6.9: El voltmetro funcionando.
Fuente: Elaboracin propia.

Se minimiza el error de la propia medicin. Este error se especifica como una fraccin del LSB la suma
contendr el promedio de los errores positivos y negativos, lo cual, en el peor de los casos ser igual al
mximo error especificado por el fabricante.

La figura No. 6.9 muestra al programa 6_2.bsp en funcionamiento. Al terminar apague el sistema de
desarrollo MDK-B28.

Sistema de Desarrollo para MC, modelo MDK-B28 - 135 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Objetivos: Utilizar al BASIC Stamp para medir dos variables analgicas y graficar el valor de estas en el computador.

Elementos a Utilizar

Arme el circuito de la figura No. 6.10.


(1) BASIC Stamp 2p. Descargue el programa 6_3.bsp al BS2p y cierre el
(1) Un cable serial DB9.
(1) Potencimetro 10 KOhms.
debug terminal. Inicie el programa StampPlot Pro y
(1) ADC 12 bits LTC1298. conctelo al puerto COM que usted utiliza para
(1) Fotorresistencia. programar al BASIC Stamp. Reinicie al BS2p
(1) Resistencia de 4.7 KOhms. presionando el pulsador RESET del sistema MDK-B28.
(1) StampW (v2.0 beta 2.1 o superior).
(1) Programa StampPlot V3 (rev 1.6 o superior).

Gire el potencimetro y posicione su mano


sobre la fotorresistencia. Observe como se
modifica el valor de las variables medidas.
En este ejercicio se ha utilizado la
fotorresistencia y una resistencia fija para
producir una variacin de tensin que luego
es cuantificada por el LTC1298 y finalmente
recibida por el microcontrolador. La
medicin de variables de manera simultnea
es muy comn, por ello, los convertidores
A/D suelen traer mltiples canales de
entrada en los cuales se podran conectar
sensores para la medicin de la
temperatura, humedad, presin, velocidad,
aceleracin, luminosidad, etc.

Figura No. 6.10: Montaje para el ejercicio # 3.


Fuente: Elaboracin propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 136 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

'Programa 6_3.bsp
'Este programa muestra como medir dos variables analgicas de manera simultanea con
'el convertidor analgico a digital modelo LTC1298.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

MOSI PIN 0 'Terminal de entrada de datos al bus conectado a P0


SCK PIN 1 'Terminal de reloj conectado a P1
MISO PIN 2 'Terminal de salida de datos del bus conectado a P2
SS1 PIN 4 'Seal de activacin del LTC1298 conectada en P4

Conv VAR Word 'Variable que contiene el resultado de la conversin


Var_1 VAR Word 'Canal analgico 0
Var_2 VAR Word 'Canal analgico 1
Config VAR Nib 'Configuracin del canal a medir

'___________________________________________________________________________________
'Programa Principal
PAUSE 500
DEBUG "!NEWP",CR 'Nueva grfica
DEBUG "!PLOT ON",CR 'Activar la graficacin
DEBUG "!MAXT",CR 'Mximo basado en tiempo
DEBUG "!TMAX 5",CR 'Tiempo mximo en eje horizontal = 5 seg
DEBUG "!AMAX 4096",CR 'Mximo en el eje vertical
DEBUG "!AMSK 0",CR 'Eje de vertical en escala de enteros
DEBUG "!MENU OFF",CR 'Desactivar Men de opciones
DEBUG "!TBAR OFF",CR 'Desactivar la barra de tareas
DEBUG "!FLSH ON",CR 'Libera un 20% espacio de la memoria utilizada por el SPlot
DEBUG "!FAMT 20",CR 'durante la graficacin al alcanzar el mx. de puntos o tiempo
DEBUG "!REFR",CR 'Actualiza la grfica
PAUSE 500 'Espera de 500 ms

HIGH SS1 'Deshabilitar al LTC1298


DO
Config = %1101 'Convertir por el canal 0 en modo No-Diferencial
GOSUB Conv_A2D 'Efectuar la conversin
Var_1 = Conv 'Almacena el resultado de la conversin en la variable Var_1
PAUSE 50 'Espera de 50 ms

Sistema de Desarrollo para MC, modelo MDK-B28 - 137 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Continuacin del Programa 6_3.bsp

Config = %1111 'Convertir por el canal 1 en modo No-Diferencial


GOSUB Conv_A2D 'Efectuar la conversin
Var_2 = Conv 'Almacena el resultado de la conversin en la variable Var_2
DEBUG DEC Var_1,",",DEC Var_2,CR 'Grafica las dos variables en el StampPlot
PAUSE 50 'Espera de 50 ms
LOOP 'Repetir indefinidamente

'===================================================================================
'SUBRUTINAS
'La subrutina Conv_A2D Efecta el proceso de conversin
Conv_A2D:
LOW SS1 'Inicia la transaccin de datos
SHIFTOUT MOSI,SCK,MSBFIRST,[Config\4] 'Modo No diferencial, MSB primero , Canal 0
SHIFTIN MISO,SCK,MSBPOST,[Conv\12] 'Recibe los datos de la conversin
HIGH SS1
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 138 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Figura No. 6.11: Medicin de dos variables analgicas.


Utilizando el LTC1298 y representando
sus magnitudes con el StampPlot Pro.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 139 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

La conversin Digital a Analgica se basa en la


conversin de un valor discreto (digital) a un valor ALGUNOS TIPOS DE DAC
continuo (analgico) a travs de un dispositivo
construido para tal fin. Estos dispositivos son Conversor Paralelo
llamados convertidores D/A. Sin embargo, la Tambin conocido como conversor de ponderacin binaria,
conversin D/A tambin se puede lograr a travs utiliza una red resistiva en la que los valores de cada
de un microcontrolador que disponga de un resistencia equivalen al peso binario del bit de entrada del
algoritmo para modulacin del ancho del pulso cdigo digital al que corresponde. Sus principales desventajas
son:
(PWM).
Resistencia de carga variable para el circuito que entrega
La modulacin de ancho de pulsos (PWM) es una el valor digital.
tcnica frecuentemente utilizada por los sistemas Necesita de resistencias de diversos valores, por lo cual,
la tolerancia de stas tiene que ser muy pequea para no
digitales para controlar, por medio de salidas de influir de modo diferente sobre cada bit.
tipo digital, circuitos analgicos. La seal de PWM
consiste en una onda cuadrada de alta frecuencia,
Conversor con Red Resistiva R2R.
cuyo ciclo til es modificado a fin de aplicar, en el
intervalo de tiempo que dura el periodo de la seal, Estos conversores basan su funcionamiento en la conocida red
una tensin promedio equivalente a ste. Esta resistiva R2R. El principio de su operacin es que la sumatoria
tensin DC promedio se expresa como: de las corrientes que generan los valores lgicos de cada bit,
es proporcional a la salida analgica deseada. Proporcionan
una resistencia de entrada constante en cada bit y requieren
de slo dos valores de resistencia (R y 2R), pero utilizan para
Vdc = CU * 5Volt una conversin de n bits, un total de 2n resistores.

Figura No. 6.12: Seales de PWM y su equivalencia en tensin DC.

Sistema de Desarrollo para MC, modelo MDK-B28 - 140 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Con el BASIC Stamp 2p, se puede realizar la conversin D/A haciendo uso del comando PWM. Este
comando permite convertir un valor digital a una salida analgica por medio de la modulacin del ancho de
pulso (PWM).

PWM Pin, Ciclo Util, Ciclo

Pin: Es una variable, constante o expresin (0-15) que especifica el Pin de Entrada/Salida usado.
Este terminal es configurado como salida inicialmente y colocado como entrada cuando termina la
ejecucin de la instruccin.
Ciclo til: Es una variable, constante o expresin (0-255) que especifica el ciclo til de la seal,
referido a niveles de tensin analgica de salida (0-5) Volt DC.
Ciclo: Es una variable, constante o expresin (0-255) que especifica los ciclos de la seal PWM que
se van a generar.

Explicacin PWM, la modulacin por ancho de pulsos es capaz de generar un voltaje anlogo. Recuerde
que con los microcontroladores slo podemos obtener dos valores discretos Cero (0 Volt.) y Uno (5 Volt.). Si
usted define un Pin como salida, slo puede obtener un voltaje de 0 voltios o de 5 voltios. Pero, si se logra
cambiar rpidamente la salida de una seal baja a una seal alta, el resultado es un tren de pulsos de modo
que estaran la mitad del tiempo en 0 Voltios y la otra mitad en 5 Voltios, el voltaje promedio en el Pin PWM
sera de 2.5 Voltios y el ciclo til sera 50%. De esta forma, se pueden producir voltajes analgicos
comprendidos entre 0 Volts. y 5 Volts. La relacin entre la cantidad de niveles altos y bajos se denomina
ciclo til. El ciclo til controla el voltaje analgico de una manera directa y proporcional. Mientras ms alto es
el valor del ciclo til, ms alto debe ser el voltaje de salida. En el caso del BS2p, el ciclo til puede
representarse entre (0 - 255) lo que equivaldra a (0% - 100%).

Para convertir la seal de PWM en un voltaje


analgico, tenemos que filtrar los pulsos y
almacenar el voltaje promedio. La combinacin
de resistor/condensador como se muestra en la
figura No. 6.13 har el trabajo. El condensador
mantendr por unos instantes el voltaje de PWM
incluso despus que la instruccin haya
terminado.

Figura No. 6.13: Circuito RC para el PWM.

Sistema de Desarrollo para MC, modelo MDK-B28 - 141 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Cunto tiempo mantendr el condensador el voltaje depender de cunta corriente sea consumida por el
circuito externo. Para que el voltaje se mantenga relativamente constante, el programa debe repetir
peridicamente la instruccin de PWM para mantener al condensador cargado. As como toma tiempo el
descargar al condensador, tambin toma el mismo tiempo cargarlo. La instruccin de PWM le permite
especificar el tiempo de carga en trminos de los ciclos de PWM. Cada ciclo es un perodo de
aproximadamente 652 us, para un BASIC Stamp 2p. As que, para cargar un condensador durante 6.52ms,
usted deber utilizar 10 ciclos de (652 s) de la instruccin de PWM. Ahora bien, Cmo usted determina
cuanto tiempo necesita para cargar un condensador?

En un circuito RC, es evidente que la respuesta temporal ante una entrada de tipo escaln viene dada por la
expresin:

t

Vc = Vf * 1 e RC

La representacin grfica de esta funcin se muestra


en la figura No. 6.14. Si se evala la expresin del
voltaje en terminales del condensador para un tiempo
t0, tal que el valor de Vc sea el 98% de Vf, se puede
fcilmente deducir que t0 = 4RC. De esta manera
puede asegurarse que cuando ha transcurrido un
tiempo igual o mayor a 4RC, el condensador se
encontrar cargado a una tensin igual a la tensin
DC aplicada.

Ahora bien, este valor al que se cargue el


condensador, corresponder al valor DC producto de
Figura No. 6.14: Carga y descarga de un circuito RC.
la seal de PWM. La seleccin de RC es arbitraria, Fuente: Elaboracin propia.
pero debe ser tal que el producto 4*RC sea mayor
que un ciclo de PWM y a la vez debe ser suficientemente grande como para que durante la ejecucin del
resto del programa no se descargue el condensador. Otra consideracin importante es que mientras mayor
sea condensador colocado, ste tendr ms capacidad de suministrar corriente al circuito que lo descarga.

Por ejemplo, en la figura No. 6.13 una resistencia de 10k y un condensador de 1F. Tiempo de Carga = 4 *
R * C. Tiempo de Carga = 4 * 10,000 (ohmios) * 1E-6 (F) Tiempo de Carga = 40 ms. Puesto que cada ciclo
es aproximadamente de un 652 us, tomara por lo menos 61.35 ciclos para cargar el condensador. Sin

Sistema de Desarrollo para MC, modelo MDK-B28 - 142 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

embargo, la instruccin PWM slo acepta operandos enteros, lo que nos lleva a
escoger el entero superior del valor 61.35, o sea 62. Asumiendo que el circuito PWM 0, 127,62
este conectado al Pin 0, para cargar el condensador a 2.5 Volt, la instruccin
completa de PWM ser como la mostrada en el cuadro anexo.

Objetivo: Utilizar la instruccin PWM para controlar el brillo de un LED.

Elementos a Utilizar Energice el sistema de desarrollo MDK-B28 y ejecute el


programa 6_4.bsp. Observe el brillo del diodo LED
(1) BASIC Stamp 2p. conectado al terminal P8.
(1) Controlador de display 7 seg. MC14489.
(1) Amplificador Operacional. Usted debe ver como el LED comienza a aumentar su
(1) Resistencia de 10 KOhms. brillo para luego disminuir hasta apagarse. Sin
(1) Resistencia de 4.7 KOhms.
embargo, no se est realizando la conversin D/A (ver
(1) Condensador de 10 uF.
(1) Un cable serial DB9. figura No. 6.15), para convertir esta seal de PWM en
(1) StampW (v2.0 beta 2.1 o superior). una tensin analgica, debe emplearse un circuito RC,
como el mostrado en la figura No. 6.13.

Figura No. 6.15: Seal de PWM generada por el BS2p.


Fuente: Elaboracin propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 143 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

'Programa 6_4.bsp
'Este programa muestra como controlar el brillo de un LED mediante PWM
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

LED PIN 8 'Terminal de entrada de datos al bus conectado a P0


CicloUtil VAR Byte 'Ciclo til
'___________________________________________________________________________________
'Programa Principal

DO
PAUSE 250
FOR CicloUtil = 0 TO 255
PWM LED,CicloUtil,25
NEXT
FOR CicloUtil = 255 TO 0
PWM LED,CicloUtil,25
NEXT
LOOP

Arme el circuito de la figura No. 6.16. Introduzca al microcontrolador el programa 6_5.bsp. Observe la
lectura en el display de 7 segmentos. Cambie el valor de la constante CicloUtil a 100 y descargue
nuevamente el programa.

Sistema de Desarrollo para MC, modelo MDK-B28 - 144 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Figura No. 6.16: Esquema de conexiones para el ejercicio # 4.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 145 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

'Programa 6_5.bsp
'Este programa muestra como generar una tensin analgica con PWM y un circuito RC
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

PWMPin PIN 7 'Terminal de generacin de la PWM


MOSI PIN 0 'Terminal de entrada de datos al bus conectado a P0
SCK PIN 1 'Terminal de reloj conectado a P1
MISO PIN 2 'Terminal de salida de datos del bus conectado a P2
SS1 PIN 4 'Seal de activacin del LTC1298 conectada en P5
SS0 PIN 3 'Terminal de habilitacin del MC14489 conectado a P3

CicloUtil CON 127 'Valor del Ciclo til

Conv VAR Word 'Variable que contiene el resultado de la conversin


Resto VAR Word 'Variable de uso general
Volts VAR Word 'Tensin medida en voltios
Prom VAR Word 'Variable que contiene el promedio de las ltimas conversiones
i VAR Nib 'Resolucin del clculo decimal

'___________________________________________________________________________________
'Programa Principal

GOSUB Init_7seg 'Inicializa y configura el funcionamiento del display 7 seg


HIGH SS1 'Estado inicial del BUS
DO
Prom = 0
PWM PWMPin,CicloUtil,62 'Genera la tensin analgica
GOSUB Obtener_Medida 'Mide la seal generada
GOSUB Voltios
LOW SS0
SHIFTOUT MOSI,SCK,MSBFIRST,[%0001\4,$0\4]
SHIFTOUT MOSI,SCK,MSBFIRST,[Volts DIG (0)\4,Volts DIG (1)\4,
Volts DIG (2)\4,Volts DIG (3)\4]
HIGH SS0
LOOP

'===================================================================================

Sistema de Desarrollo para MC, modelo MDK-B28 - 146 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Continuacin del Programa 6_5.bsp

'SUBRUTINAS

Init_7seg:
LOW SS0 : SHIFTOUT MOSI,SCK,MSBFIRST,[$61] : HIGH SS0
RETURN

Obtener_Medida:
FOR i = 0 TO 15
Conv = 0 : GOSUB Conv_A2D : PAUSE 10
Prom = Prom + Conv
NEXT
Prom = Prom / 16
RETURN

Conv_A2D:
LOW SS1
SHIFTOUT MOSI,SCK,MSBFIRST,[%1101\4]
SHIFTIN MISO,SCK,MSBPOST,[Conv\12]
HIGH SS1
RETURN

Voltios:
Volts = 0 : Resto = Prom//4096
FOR i=0 TO 3
Resto = Resto*10 : Volts = (Volts*10)+(Resto/4096) : Resto = Resto//4096
NEXT
Volts = Volts * 5
i = Volts DIG (0)
i = i/5
Volts = (Volts/10)+i
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 147 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Conecte una resistencia de 4.7 Kohms entre el terminal P7 y 0v (tierra) y observe el resultado. Desconecte
esa resistencia y conctela ahora al terminal CH0. El comando PWM del BS2p es una herramienta de suma
utilidad para generar una seal analgica de manera sencilla. Para su correcto funcionamiento la red RC
colocada a la salida del PIN que genera la onda modulada, debe ser bien calculada lograr mantener el valor
de voltaje DC deseado. Cuando se conecta la resistencia de 4.7 Kohms a P7 se altera directamente el
circuito RC, especialmente en el proceso de descarga. La instruccin PWM una vez que han finalizado los
ciclos que efecta, convierte al terminal usado en una entrada (con una resistencia aproximada de 1 Mohm),
por lo cual, el circuito de descarga del condensador al tener un valor resistivo tan elevado, demora un
tiempo considerable en descargarse. Al colocar la resistencia de 4.7 Kohms, este valor se reduce hasta el
orden de varios Kohms descargndose el condensador en un tiempo muy corto (an antes de que se le
refresque la carga con una nueva PWM).

Para solventar este problema y poder efectuar una conversin til que maneje un cierto nivel de carga, es
necesario el uso de un circuito que acte como amplificador y brinde una entrada de muy alta impedancia
que no altere de manera considerable al arreglo RC. Con este fin, el sistema de desarrollo MDK-B28 cuenta
con un circuito seguidor de tensin basado en un amplificador operacional que permite manipular una carga
de hasta 50 mA. El amplificador operacional de ganancia unitaria, se est utilizando como acoplador de
impedancias en este ejercicio. Sin embargo, este amplificador se puede utilizar en cualquier ejercicio futuro,
ya que, sus terminales de entrada y salida estn disponibles en la regleta de conexin principal.

Al ejecutar la instruccin PWM PWMPin,CicloUtil,62 se est especificando que se producirn 62 ciclos de


PWM por el terminal PWMPin con un ciclo til igual a la constante CicloUtil. El valor 62 corresponde al
cociente de 4RC / 652 s y corresponde al nmero de ciclos de la instruccin requeridos para cargar al
condensador.

Sistema de Desarrollo para MC, modelo MDK-B28 - 148 -


www.roso-control.com
Captulo No. 6. Conversin Analgica a Digital (A/D) y Digital a Analgica (D/A)

Investigue los siguientes tpicos


1. Por qu la mayora de las magnitudes fsicas presentes en la naturaleza son del tipo analgico ?.
2. Qu es un convertidor analgico a digital ?.
3. Cuantos tipos de convertidores A/D usted conoce, explique como trabajan ?.
4. Qu es un conversor A/D por integracin ?.
5. Como trabajan los convertidores A/D por aproximaciones sucesivas ?.
6. Como se puede reducir el error de lectura en un convertidor A/D ?.
7. Qu es un circuito de muestreo y retencin, para que sirve ?.
8. Cuantos convertidores A/D incorpora el BASIC Stamp 2p ?.
9. Como se define el tiempo de adquisicin de un convertidor A/D ?.
10. Qu significa muestreo y retencin (Sample & Hold) ?.
11. Como se configura a un convertidor A/D LTC1298, para leer los canales en forma diferencial ?.
12. Como se representa el valor de una conversin A/D en funcin de Vref y los bits de resolucin n ?.
13. Qu es una conversin digital a analgica ?.
14. Qu es PWM y como trabaja ?.
15. Qu es ciclo til y como se representa ?.
16. Cuantos microsegundos (us) tiene un perodo de cada ciclo PWM en un BASIC Stamp 2p ?.
17. Qu es un acoplador de impedancias y para que se utiliza ?.

Programacin

1. Utilizando un BASIC Stamp 2p, construya un convertidor de seales. La entrada podr variar de 0 a
5 Volt DC y la salida deber variar entre 4 y 20 mili-amp. Muestre en el display de 7 Segmentos los
valores de corriente en mili-amp. Con una exactitud de 0.01 mili-amp. Utilice los componentes que
se indican a continuacin y explique cual es la funcin cumplen cada uno de ellos.

Convertidor Filtro Resistor


A/D BASIC RC 250 Ohm
LTC1298 Stamp
2p
Amplificador
Operacional Display 7 Segmentos
Potencimetro

Sistema de Desarrollo para MC, modelo MDK-B28 - 149 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Captulo No. 07
Pantalla de Caracteres LCD

Sistema de Desarrollo para MC, modelo MDK-B28 - 150 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Introduccin. En captulos anteriores, se han utilizado como dispositivos de visualizacin los diodos LED y la pantalla de LEDs de siete
segmentos. Estos han demostrado ser sencillos, eficientes y econmicos como elementos de visualizacin. Sin embargo, existirn
ocasiones donde se necesite visualizar una gran cantidad de informacin o texto alfanumrico, y es precisamente aqu, donde la
pantalla de cristal lquido (LCD) lo puede hacer mejor que cualquier otro dispositivo. En este captulo, se har una explicacin detallada
acerca del funcionamiento de una pantalla LCD de caracteres, la misma, se utilizar de ahora en adelante en casi la totalidad de los
experimentos.

La Pantalla LCD es uno de los perifricos ms empleados para la presentacin de mensajes, variables y casi
cualquier informacin proveniente de un microcontrolador. Gracias a su flexibilidad, buena visibilidad y
precio reducido se ha introducido de manera determinante en el mercado.

Vocabulario sobre LCD

LCD Alfanumrica
Pantalla en la cual, se pueden presentar caracteres y
smbolos especiales en las lneas predefinidas del LCD. Su
especificacin viene dada como cantidad de caracteres por
columna y nmero de filas del display. Por ejemplo: 2 x 16, 4
x 20.

LCD Grfica
Pantalla en la cual, se pueden presentar caracteres, smbolos
especiales y grficos. Su especificacin viene dada en
pxeles. Por ejemplo 128 x 64.

LCD Paralela
Los datos y comandos son enviados a travs de un bus de
datos paralelo, ya sea en modo de 4 o de 8 bits.

LCD Serial
La pantalla es capaz de recibir la informacin de manera
serial asincrnica utilizando slo 2 lneas para este fin. Toda
pantalla paralela puede ser convertida a serial mediante un
circuito especializado, como por ejemplo el Controlador serial
para LCD modelo SLCD-IC.

Las pantallas de LCD poseen un controlador empotrado


Figura No. 7.1: Arriba. pantalla LCD Alfanumrica de 2 x 16. dentro de su propio mdulo, el cual, se encarga de gestionar
Abajo, pantalla LCD Grfica de 128 x 64 pxel. el control de sus terminales para la presentacin de los
Fuente: http://www.crystalfontz.com. caracteres y almacena el conjunto predefinido de caracteres
en una memoria no voltil. El controlador ms utilizado para
las pantallas alfanumricas es el HITACHI 44780.

Sistema de Desarrollo para MC, modelo MDK-B28 - 151 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Las pantallas LCD que incluyen un controlador interno y dedicado como el HITACHI 44780 pueden:

Presentar caracteres ASCII y griegos. Vocabulario sobre LCD


Recibir y mostrar caracteres personalizados.
Desplazar los caracteres (scroll) tanto a la derecha como a la CGRAM
(Character Generator RAM)
izquierda.
Cambiar el aspecto y el movimiento del cursor. Memoria voltil de 64 bytes que permite
almacenar hasta 8 caracteres
Direccionar de manera simple la posicin de visualizacin de personalizados para ser mostrados en la
los caracteres. pantalla.

Los terminales de conexin de las pantallas LCD de caracteres han DDRAM (Display Data RAM)
sido estandarizados, siendo generalmente compatibles pin a pin con Memoria voltil de 80 bytes, en la cual,
la tabla No. 7.1. se almacenan los caracteres que se van a
mostrar en la pantalla.

CGROM
Terminal Nombre Funcin Descripcin (Character Generator ROM)
1 Vss Energa Referencia 0 V. GND Memoria no voltil que almacena los
2 Vdd Energa +5 V DC caracteres predefinidos soportados por la
3 Vee Ajuste Contraste Variable de 0 a 5 V pantalla y su controlador.
4 RS Comando Seleccin de Dato/Comando
Ocho Bits
5 R/W Comando Control de Lectura/Escritura Modo de trabajo en el que se utilizan
6 E Comando Habilitacin todos los bits para la transmisin de los
7 D0 E/S DATO LSB datos y los comandos hacia una LCD.
8 D1 E/S DATO
Cuatro Bits
9 D2 E/S DATO
Modo de trabajo en el cual la
10 D3 E/S DATO transferencia de informacin se efecta
11 D4 E/S DATO por medio de los cuatro (4) bits ms
12 D5 E/S DATO significativos.
13 D6 E/S DATO
El modo de trabajo de 4 bits permite
14 D7 E/S DATO MSB
reducir el nmero de terminales del
microcontrolador destinados a la interfaz
Tabla No. 7.1: Terminales de Conexin para una LCD del LCD, pero se obtiene una menor
alfanumrica estndar. velocidad de transferencia de la
Fuente: The Extended Concise LCD Data Sheet for HD44780, informacin.
http://www.beyondlogic.com.

Sistema de Desarrollo para MC, modelo MDK-B28 - 152 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

La informacin que se enva a la pantalla LCD puede interpretarse de dos maneras: como un comando,
cuando se coloca al terminal denominado RS en nivel bajo. Y como un carcter, cuando el terminal RS est
en nivel alto. Un comando es un dato numrico de 8 bits que le indica al controlador HITACHI 44780 o
compatible, que debe realizar una cierta operacin.

Valor
Comandos Descripcin
Numrico
No se efecta ninguna
Nulo 0
operacin especial.
Limpia la pantalla y desplaza
Limpiar LCD 1 el cursor a la posicin 0
(Home).
Mueve el cursor a la posicin
Home LCD 2
de inicio.
Incrementar Mueve el cursor a la derecha
6
cursor sin desplazar la pantalla.
Apaga al LCD sin perder los
Off LCD 8
datos que esta tena.
Enciende al LCD sin mostrar
el cursor y con el ltimo
On LCD 12
contenido almacenado en
buffer.
Parpadeo del Enciende el LCD con el
13
cursor cursor parpadeando.
Cursor Enciende el LCD con el
14
subrayado cursor con un subrayado.
Cursor Mueve el cursor un carcter
16
izquierda a la izquierda.
Cursor Mueve el cursor un carcter
20
derecha a la derecha.
Scroll Desplaza la pantalla 1
24
izquierda carcter a la izquierda.
Desplaza la pantalla 1
Scroll derecha 28
carcter a la derecha.
Mueve el apuntador a una
Mover a
64 localidad de la memoria de
direccin
+ direccin generacin de caracteres
CGRAM
(Character Generator RAM).
Mueve el cursor a una
Mover a
128 localidad de la memoria de
direccin
+ direccin visualizacin de caracteres
DDRAM
(Display Data RAM).
Tabla No. 7.2: Comandos de uso comn de un LCD. Tabla No. 7.3: Set de caracteres para un Hitachi 44780.
Fuente: PBASIC Syntax Guide, Parallax 2003. Fuente: Manual del controlador HD44780.

Sistema de Desarrollo para MC, modelo MDK-B28 - 153 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

An cuando los comandos de la tabla No. 7.2 son suficientes para manejar la pantalla LCD en la mayora de
las aplicaciones, el programador puede crear sus propios comandos de control, utilizando para ello las
especificaciones que suministra el fabricante. En el caso de las pantallas que utilizan el controlador HITACHI
44780, se puede emplear la tabla No. 7.5.

Posiciones Visibles Posiciones no Visibles

Lnea 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 39
Lnea 2 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 ... 103
Posiciones Visibles
Lnea 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Lnea 2 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
Lnea 3 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
Lnea 4 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

Tabla No. 7.4: Posiciones en una pantalla LCD de 2x16 y 4x20. Nmeros en Hexadecimal.
Fuente: PBASIC Syntax Guide, Parallax 2003.

Figura No. 7.2: Esquema de


conexiones entre una pantalla LCD
y un BASIC Stamp modelo BS2p.
Fuente: PBASIC Syntax Guide,
Parallax 2003.

Sistema de Desarrollo para MC, modelo MDK-B28 - 154 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Tabla No. 7.5: Registro de configuracin para el controlador HITACHI 44780.


Fuente: The Extended Concise LCD Data Sheet for HD44780, http://www.beyondlogic.com.

Instruccin RS RW D7 D6 D5 D4 D3 D2 D1 D0 Descripcin
Direccin del cursor (I/D).
Modo de entrada 0 0 0 0 0 0 0 1 I/D S
Auto desplazamiento de la pantalla(S)
Encendido/Apagado de la LCD (D) y del
Control de pantalla y del cursor 0 0 0 0 0 0 1 D C B
cursor ( C). Parpadeo del cursor (B).
Desplaza la pantalla o el cursor (S/C) en la
Desplazamiento 0 0 0 0 0 1 S/C R/L x x
direccin especificada por (R/L).
Ancho del bus de datos (DL). Nmero de
Seleccin de Funciones 0 0 0 0 1 DL N F x x
lneas (N). Tamao de la letra (F).
Mueve el apuntador de la CGRAM a la
Mover a direccin CGRAM 0 0 0 1 Direccin
posicin indicada.
Mueve el apuntador de la DDRAM a la
Mover a direccin DDRAM 0 0 1 Direccin
posicin indicada.
Escribir al LCD 1 0 Dato Escribe informacin (CGRAM o DDRAM).

Leer desde el LCD 1 1 Dato Lee informacin (CGRAM o DDRAM).

Descripcin de los Bits


1 Movimiento del cursor a la derecha
I/D
0 Movimiento del cursor a la izquierda
1 Desplazamiento automtico de la pantalla: SI
S
0 Desplazamiento automtico de la pantalla: NO
1 Pantalla encendida
D
0 Pantalla apagada
1 Cursor visible
C
0 Cursor invisible
1 Cursor parpadeando
B
0 Cursor sin parpadeo
1 Desplazamiento de la pantalla
S/C
0 Desplazamiento del cursor
1 Desplazamiento a la derecha
R/L
0 Desplazamiento a la izquierda
1 Modo de 8 bits
DL
0 Modo de 4 bits
1 2 lneas
N
0 1 lnea
1 5x10
F
0 5x7

Sistema de Desarrollo para MC, modelo MDK-B28 - 155 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

LCDCMD
Enva un comando a una pantalla LCD.

LCDCMD Pin, Comando

Pin : Es una variable, constante o expresin (0 - 1 8 - 9) que indica cuales de los pines de E/S
sern usados para manipular la pantalla LCD.
Comando: Es una variable, constante o expresin (0 - 255) con el valor del comando a enviar
al LCD, ver tabla No. 7.2.

LCDIN
Recibe informacin proveniente de una pantalla LCD y es empleada para leer el contenido de las memorias
DDRAM y CGRAM.
LCDIN Pin, Direccin, [Datos]

Pin: Es una variable, constante o expresin (0 - 1 8 - 9) que indica cuales de los pines de E/S
sern usados para manipular la pantalla LCD.
Direccin: Es una variable, constante o expresin (0 - 255) que indica la direccin de memoria
RAM de la pantalla LCD que se quiere leer.
Datos: Es un listado de variables con sus respectivos modificadores de formato que definen
como ser interpretada la informacin entrante.

LCDOUT
Enva un comando, seguido de al menos un byte de datos al LCD.

LCDOUT Pin, Comando, [Datos]

Pin: Es una variable, constante o expresin (0 - 1 8 - 9) que indica cuales de los pines de E/S
sern usados para manipular la pantalla.
Comando: Es una variable, constante, expresin (0 - 255) con el valor del comando a enviar al
LCD.
Datos: Es una lista de variables, constantes o expresiones con sus respectivos modificadores
que indican la forma en que sern transmitidos a la pantalla.

Sistema de Desarrollo para MC, modelo MDK-B28 - 156 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

LOOKUP
Efecta la bsqueda de un elemento, dado su ndice, dentro de una lista.

LOOKUP Indice, [Valor0, Valor1, ValorN] , Variable

Indice: Es una variable, constante o expresin en el rango de 0 a 255 que indica la posicin
dentro de la lista del elemento que se desea extraer.
Valor0, Valor1 ValorN : Son variables, constantes o expresiones de 0 a 65535, que
componen la lista.
Variable: Es una variable en el rango de 0 a 65535 que contendr el valor del elemento
encontrado en la posicin Indice.
Si Indice excede el tamao de la lista de elementos, Variable no cambiar su valor.

LOOKDOWN
Permite hacer la bsqueda de un elemento dentro de una lista de acuerdo a un criterio y retorna la
ubicacin del primer elemento que satisface la condicin.

LOOKDOWN Elemento, {Operador Condicional} [Valor0, Valor1, ValorN], Variable

Elemento: Variable, constante o expresin (0 - 65535) que constituye el elemento a comparar.


Operador Condicional: Operador relacional que puede ser usado como criterio durante la
comparacin. Si se omite se utilizar el igual (=) que es el predeterminado.
Valor0, Valor1ValorN : Son variables, constantes o expresiones de 0 a 65535, que componen la
lista contra la que se compara a Elemento.
Variable: Es una variable en el rango de 0 a 255, que contendr el valor del ndice del primer
elemento que satisface la comparacin. Si la comparacin resultara falsa para todos los elementos
de la lista; Variable no cambiar su valor.
Los operandos que intervengan en la instruccin LOOKDOWN deben ser nmeros enteros sin signo.

Sistema de Desarrollo para MC, modelo MDK-B28 - 157 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

DATA
Permite escribir informacin en la EEPROM durante el proceso de descarga del programa al BASIC Stamp.

{Simbolo} DATA {@Direccin,} {Word} Dato {, Dato ...}

Smbolo: Es un parmetro opcional. Consiste en un nombre simblico que ser definido


automticamente como una constante igual a la localidad de memoria donde se almacene el primer
dato.
Direccin: Es un parmetro que indica la localidad de inicio donde se desea grabar los datos.
Dato: Constante o expresin de 0 a 65535, que se desea almacenar en la EEPROM del BS2p.
Word: Modificador opcional para manipular variables de 16 bits.

READ
Lee una o ms localidades de la memoria EEPROM y almacena en una o ms variables el contenido de la(s)
misma(s).

READ Localidad, {Word} Variable {, {Word} Variable ...}

Localidad: Es una variable, constante o expresin de 0 a 2047 que indica la direccin de la


EEPROM cuyo contenido se quiere leer.
Variable: Es una variable (generalmente tipo byte) donde se almacena el contenido de la localidad
leda.
Word: Modificador opcional para manipular variables de 16 bits.

Sistema de Desarrollo para MC, modelo MDK-B28 - 158 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Objetivo: Manipular una pantalla de cristal lquido paralela de 2x16 como elemento de visualizacin.

Elementos a Utilizar Monte en el protoboard que acompaa al sistema de


desarrollo MDK-B28, el esquema de la figura No. 7.3.
(1) BASIC Stamp 2p.
(1) LCD alfanumrico 2 x 16 tipo paralelo.
(1) Resistencia de 10 KOhms.
(1) Potencimetro de 10 Kohms.
(1) Banco de Pulsadores.
(1) Un cable serial DB9.
(1) StampW ( v2 Beta 2.1 o superior).

Antes de energizar el sistema de desarrollo,


verifique cuidadosamente las conexiones pues
podra destruir la pantalla. Los circuitos de la
figuras No. 7.3 y No. 7.4 sern utilizados durante
los 4 ejercicios de este actividad, por favor no los
desmonte. Ajuste el potencimetro en un nivel
medio e introduzca al microcontrolador el
programa 7_1.bsp.

Figura No. 7.3: Conexin del LCD


al microcontrolador para el ejercicio # 1.
Fuente: BASIC Stamp PBASIC Online Help.

Figura No. 7.4: Conexin de pulsadores


y altavoz para el ejercicio # 1.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 159 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

'Programa 7_1.bsp
'Este programa tiene por objetivo mostrar:
'1) El uso de la pantalla LCD como dispositivo de visualizacin
'2) El uso de LCDCMD y LCDOUT para enviar comandos y mensajes a la pantalla LCD
'3) Ejecutar la rutina de inicializacin de la pantalla LCD
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

BorrarLCD CON %00000001 'Limpiar pantalla


MoverCrsr CON %10000000 'Posicionar el cursor
Despertar CON %00110000 'Despertar al LCD
Modo4bits CON %00100000 'modo de 4 bits de datos
Modo2linea CON %00101000 'modo de 2 lneas, tamao de 5x8
LCDOFF CON %00001000 'Apagar la pantalla
LCDON CON %00001100 'Encender, con cursor la pantalla
IncrCrsr CON %00000110 'Auto-incremento del cursor

Pulset1 VAR Byte 'Espacio de trabajo de PB1


Pulset2 VAR Byte 'Espacio de trabajo de PB2
Pulset3 VAR Byte 'Espacio de trabajo de PB3
Pos VAR Byte 'Variable de uso general
x VAR Nib 'Variable de uso general

LCDPin PIN 0
PB1 PIN 8 'Pulsador PB1
PB2 PIN 9 'Pulsador PB2
PB3 PIN 10 'Pulsador PB3
BZ PIN 11 'Salida al piezoelctrico
LED PIN 12 'Salida al LED

'___________________________________________________________________________________
'Programa Principal:
Inicio:
GOSUB IniLcd 'Inicializacin de la pantalla
LOW LED 'Apagar el LED conectado a P12

Sistema de Desarrollo para MC, modelo MDK-B28 - 160 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_1.bsp

Menu:
LCDCMD LCDPin ,BorrarLCD 'Limpiar la pantalla
DO
LCDOUT LCDPin ,MoverCrsr + 3,["***MENU****"] 'Ttulo del Men
LCDOUT LCDPin ,MoverCrsr+64,["1 BZ 2 LED 3 MSG"] 'Items del Men
BUTTON PB1,0,255,0,pulset1,1,PS1 'Si PB1 fue presionado va a PS1
BUTTON PB2,0,255,0,pulset2,1,PS2 'Si PB2 fue presionado va a PS2
BUTTON PB3,0,255,0,pulset3,1,PS3 'Si PB3 fue presionado va a PS3
LOOP
PS1:
LCDCMD LCDPin ,BorrarLCD 'Limpiar pantalla
LCDOUT LCDPin ,MoverCrsr+64,["Sonido..."] 'Enviar mensaje a la posicin
FREQOUT BZ,1500,1200 'Generar el sonido
PAUSE 1000
GOTO Menu
PS2:
LCDCMD LCDPin ,BorrarLCD 'Limpiar la pantalla
LCDOUT LCDPin ,MoverCrsr+2,["OBSERVE COMO"] 'Mostrar mensaje
LCDOUT LCDPin ,MoverCrsr+64+3,["P12 CAMBIA"]
TOGGLE LED 'Cambiar el estado del LED
PAUSE 1000
GOTO Menu
PS3:
FOR x=0 TO 4
LCDCMD LCDPin ,BorrarLCD 'Limpiar pantalla
LCDOUT LCDPin ,MoverCrsr,["PANTALLA LCD"] 'Enviar el mensaje a la lnea 0
PAUSE 300
LCDCMD LCDPin ,BorrarLCD 'Limpiar pantalla
LCDOUT LCDPin ,MoverCrsr+64,["PANTALLA LCD"] 'Enviar el mensaje a la lnea 1
PAUSE 300
NEXT
PAUSE 300
FOR x=0 TO 5 'Genera el efecto de parpadeo
LCDCMD LCDPin ,LCDOFF 'del mensaje en pantalla
PAUSE 200
LCDCMD LCDPin ,LCDON
PAUSE 200
NEXT
GOTO Menu

Sistema de Desarrollo para MC, modelo MDK-B28 - 161 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_1.bsp

'===================================================================================
'SUBRUTINAS

'Rutina de inicializacin de la pantalla LCD en modo de 4 bits, 2 lneas


IniLcd:
PAUSE 1000
LCDCMD LCDPin ,Despertar : PAUSE 10 'Despertar la pantalla
LCDCMD LCDPin ,Despertar : PAUSE 1 'Despertar la pantalla
LCDCMD LCDPin ,Despertar : PAUSE 1 'Despertar la pantalla
LCDCMD LCDPin ,Modo4bits 'Configurar el bus de dato en 4 bits
LCDCMD LCDPin ,Modo2linea 'Se configura a dos lneas de 5 x 8
LCDCMD LCDPin ,LCDOFF 'Apagar la pantalla
LCDCMD LCDPin ,LCDON 'Encender la pantalla sin cursor
LCDCMD LCDPin ,IncrCrsr 'Ajusta la pantalla para auto-incremento
LCDCMD LCDPin ,BorrarLCD 'Limpia la pantalla
RETURN

El programa 7_1.bsp, muestra como efectuar las operaciones ms simples con una pantalla LCD, es decir,
inicializarla y mostrar en ella una serie de caracteres. Merece especial atencin la rutina de inicializacin,
pues de su correcto funcionamiento depender que la pantalla reconozca los comandos y datos que le sern
enviados posteriormente. Si no puede lograr una visualizacin correcta de la pantalla, ajuste el contraste
mediante el potencimetro RP.

La figura No. 7.5. muestra el diagrama de flujo para inicializar una pantalla LCD en modo de 4 bits. La rutina
IniLcd, hace uso de este diagrama para inicializar al LCD en modo de 4 bits, 2 lneas, fuente 5x8, pantalla
sin cursor y con auto-incremento. IniLcd se inicia con una espera de 1000 ms, tiempo mucho mayor que el
requerido, que garantiza la estabilizacin de la pantalla y de sus circuitos internos.

El programa presenta un men al usuario y ejecuta una cierta accin de acuerdo a la seleccin que se
efecte. Si se selecciona la opcin 1 del men (BZ) se producir un sonido de unos 4.5 Khertz. Al seleccionar
la opcin 2 (LED) se cambiar el estado del pin P12 del BASIC Stamp, encendiendo y apagando
alternadamente al LED conectado a ste. La opcin 3 desencadena un efecto mucho ms llamativo al
mostrar el mensaje PANTALLA LCD en las dos lneas del LCD para luego hacerlo parpadear.

Sistema de Desarrollo para MC, modelo MDK-B28 - 162 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

IniLcd

Esperar al menos 15ms luego que


Vdd sobrepase de 4.5V

RS R/W DB7 DB6 DB5 DB4


0 0 0 0 1 1

Esperar al menos 4.1ms

RS R/W DB7 DB6 DB5 DB4


0 0 0 0 1 1

Esperar al menos 100us

RS R/W DB7 DB6 DB5 DB4


0 0 0 0 1 1

RS R/W DB7 DB6 DB5 DB4 CAMBIA A MODO DE 4 BITS


0 0 0 0 1 0
0 0 0 0 1 0
SELECCIN DE NMERO DE LNEAS Y FUENTE
0 0 N F * *
0 0 0 0 0 0 APAGA EL LCD
0 0 1 0 0 0
0 0 0 0 0 0 ENCIENDE EL LCD Y CONFIGURA CURSOR
0 0 1 D C B
0 0 0 0 0 0
AJUSTA EL DESPLAZAMIENTO DEL CURSOR
0 0 0 0 I/D S
0 0 0 0 0 0
BORRAR CONTENIDO DEL LCD
0 0 0 0 0 1

Figura No. 7.5: Diagrama de flujo para la inicializacin de un LCD con el controlador HITACHI 44780.
Fuente: Fuente: Hitachi HD44780, Manual del usuario.

Sistema de Desarrollo para MC, modelo MDK-B28 - 163 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Objetivo: Utilizar el BASIC Stamp 2p para manipular una pantalla de cristal lquido paralela de 2x16 y configurarla en sus distintos
modos de operacin.

Elementos a Utilizar Monte el circuito de la figura No. 7.6 y proceda a


descargar el programa 7_2.bsp.

(1) BASIC Stamp 2p. En este programa se implementan las distintas


(1) Un cable serial DB9. instrucciones que soporta el controlador HITACHI 44780
(1) LCD alfanumrico 2x16 paralelo.
(1) Resistencia de 10 Kohms. que maneja al LCD. Entre las instrucciones se
(1) Potencimetro de 10 Kohms. encuentran: desplazar el mensaje a la derecha,
(1) Banco de Pulsadores. desplazar el mensaje a la izquierda, mover el cursor a la
(1) StampW ( v2 Beta 2.1 o superior). derecha, mover el cursor a la izquierda, posicionar el
cursor en un carcter especfico y las distintas
configuraciones que se pueden aplicar al cursor de la
pantalla. Todas estas acciones se consideran instrucciones bsicas en el manejo de un LCD, por medio de
ellas puede implementar efectos visuales muy tiles para su proyecto.

Cuando se trabaja con un LCD hay que optimizar el


espacio visual proporcionado por la pantalla. Es
necesario disponer del mismo de forma correcta a
efectos de no confundir al usuario. Tambin, es
especialmente importante definir la cantidad y calidad
de la informacin a desplegar.

Figura No. 7.6: Conexin de los pulsadores


al Basic Stamp, para el ejercicio #2.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 164 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

'Programa 7_2.bsp
'Este programa tiene por objetivo mostrar como configurar en los distintos modos de
'operacin de la pantalla LCD
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

BorrarLCD CON %00000001 'Limpiar pantalla


MoverCrsr CON %10000000 'Posicionar el cursor
Despertar CON %00110000 'Despertar al LCD
Modo4bits CON %00100000 'Modo de 4 bits de datos
Modo2linea CON %00101000 'Modo de 2 lneas, tamao de 5x8 (%00101100 5x10)
LCDOFF CON %00001000 'Apagar la pantalla
LCDON CON %00001100 'Encender, sin cursor la pantalla
LCDONCrsr CON %00001110 'Encender, con cursor la pantalla
LCDONCrsrParp CON %00001111 'Encender, con cursor la pantalla
LCDONParp CON %00001101 'Encender, sin cursor la pantalla
IncrCrsr CON %00000110 'Auto-incremento del cursor
Moverpizq CON %00011000 'Desplazar pantalla a la izquierda
Moverpder CON %00011100 'Desplazar pantalla a la derecha
Movercizq CON %00010000 'Desplazar cursor a la izquierda
Movercder CON %00010100 'Desplazar cursor a la derecha
Linea2 CON %11000000 'Ir a la lnea inferior de la pantalla
LCDpin CON 0 'Terminal Enable de la LCD
Pulset1 VAR Byte 'Espacio de trabajo del pulsador 1
Pulset2 VAR Byte 'Espacio de trabajo del pulsador 2
Pulset3 VAR Byte 'Espacio de trabajo del pulsador 3
Pulset4 VAR Byte 'Espacio de trabajo del pulsador 4
S1 PIN 8 'Pulsador PB1
S2 PIN 9 'Pulsador PB2
S3 PIN 10 'Pulsador PB3
S4 PIN 11 'Pulsador PB4
x VAR Byte 'Variable de uso general

'___________________________________________________________________________________
'Programa Principal:

Inicio:
GOSUB IniLcd

Sistema de Desarrollo para MC, modelo MDK-B28 - 165 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_2.bsp

Menu:
LCDCMD LCDpin,LCDON 'Configuracin Inicial
LCDOUT LCDpin,MoverCrsr,["PROGRAMA 7_2.bsp"]
LCDOUT LCDpin,Linea2,["PB1 = CONTINUAR"]
NPS1:
BUTTON S1,0,255,0,pulset1,0,NPS1 'Espera hasta que PB1 sea presionado
PAUSE 100
LCDCMD LCDpin,BorrarLCD 'Limpiar la pantalla
LCDOUT LCDpin,MoverCrsr,["1-SCur 2-CCur"] 'Permite desplegar el
LCDOUT LCDpin,Linea2,["3-SCurB 4-CCurB"] 'siguiente men de opciones

DO
BUTTON S1,0,255,0,pulset1,1,SinCrsr 'Si PB1 fue presionado => Sin Cursor
BUTTON S2,0,255,0,pulset2,1,ConCrsr 'Si PB2 fue presionado => Con Cursor
BUTTON S3,0,255,0,pulset3,1,SinCrsrPar 'Si PB3 fue presionado => Con Parpadeo
BUTTON S4,0,255,0,pulset3,1,ConCrsrPar 'Si PB4 fue presionado => Sin Parpadeo
LOOP

SinCrsr:
LCDCMD LCDpin,LCDOFF 'Apagar pantalla
LCDCMD LCDpin,LCDON 'Encender la pantalla sin cursor
GOSUB Efectos 'Llamar a la subrutina Efectos
GOTO Menu

ConCrsr:
LCDCMD LCDpin,LCDOFF 'Apagar pantalla
LCDCMD LCDpin,LCDONCrsr 'Encender pantalla con cursor
GOSUB Efectos 'Llamar a la subrutina Efectos
GOTO Menu

SinCrsrPar:
LCDCMD LCDpin,LCDOFF 'Apagar pantalla
LCDCMD LCDpin,LCDONParp 'Encender pantalla con parpadeo activo,
GOSUB Efectos 'sin cursor
GOTO Menu

ConCrsrPar:
LCDCMD LCDpin,LCDOFF 'Apagar pantalla
LCDCMD LCDpin,LCDONCrsrParp 'Encender pantalla con parpadeo activo,
GOSUB Efectos 'con cursor
GOTO Menu

Sistema de Desarrollo para MC, modelo MDK-B28 - 166 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_2.bsp

'===================================================================================
'SUBRUTINAS
'La rutina Efectos se encarga de generar un conjunto de mensajes que demuestran la
'diferencia entre las opciones seleccionadas

Efectos:
LCDCMD LCDpin,BorrarLCD 'Limpiar la pantalla
LCDOUT LCDpin,MoverCrsr,["1-Mover Pantalla"] 'Mostrar por pantalla las opciones
LCDOUT LCDpin,Linea2,["2-Mover Cursor"]

DO
BUTTON S1,0,255,0,pulset1,1,MoverPant 'PB1 presionado se desplaza pantalla
BUTTON S2,0,255,0,pulset2,1,MoverCr 'PB2 presionado se desplaza cursor
LOOP

MoverPant:
LCDCMD LCDpin,BorrarLCD 'Limpiar pantalla
LCDOUT LCDpin,MoverCrsr,["Desplazar LCD"]
LCDOUT LCDpin,Linea2,["1-Izq 2-Der 3-Ex"]
DO
BUTTON S1,0,250,100,pulset1,1,Despizq 'PB1 presionado, cursor a la der.
BUTTON S2,0,250,100,pulset2,1,Despder 'PB2 presionado, cursor a la izq.
BUTTON S3,0,255,0,pulset3,1,Salir 'Retornar al programa
LOOP

Despder:
LCDCMD LCDpin,BorrarLCD 'Limpiar pantalla
LCDOUT LCDpin,Linea2+3,["PRUEBA LCD.."] 'Mensaje de prueba
PAUSE 500
FOR x= 0 TO 14 'Ciclo para desplazamiento
LCDCMD LCDpin,Moverpizq 'Desplazar mensaje a la izquierda
PAUSE 300
NEXT
FOR x= 0 TO 14 'Ciclo para desplazamiento
LCDCMD LCDpin,Moverpder 'Desplazar a la derecha el mensaje
PAUSE 300
NEXT
GOTO MoverPant

Sistema de Desarrollo para MC, modelo MDK-B28 - 167 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_2.bsp

MoverCr:
LCDCMD LCDpin,BorrarLCD 'Limpiar la pantalla
LCDOUT LCDpin,MoverCrsr,["1-Izq 2-Der 3-Ex"] 'Mostrar el siguiente men de opciones
LCDOUT LCDpin,Linea2+3,["PRUEBA LCD"]

Ciclo:
BUTTON S1,0,250,100,pulset1,1,Crizq 'PB1 presionado mover cursor a la der
BUTTON S2,0,250,100,pulset2,1,Crder 'PB2 presionado mover cursor a la izq
BUTTON S3,0,255,0,pulset3,1,Salir 'PB3 presionado retornar al programa
GOTO Ciclo
Crder:
LCDCMD LCDpin,Movercder 'Desplazar cursor a la derecha
PAUSE 300
GOTO Ciclo

Crizq:
LCDCMD LCDpin,Movercizq 'Desplazar cursor a la izquierda
PAUSE 300
GOTO Ciclo

Salir:
LCDCMD LCDpin,BorrarLCD 'Limpiar la pantalla
RETURN 'Retornar
'===================================================================================
'IniLcd inicializa la pantalla en modo 4 bits, 2 lneas

IniLcd:
PAUSE 1000
LCDCMD LCDpin,Despertar 'Despertar la pantalla
PAUSE 10
LCDCMD LCDpin,Despertar 'Despertar la pantalla
PAUSE 1
LCDCMD LCDpin,Despertar 'Despertar la pantalla
PAUSE 1
LCDCMD LCDpin,Modo4bits 'Configurar el bus de dato en modo de 4 bits
LCDCMD LCDpin,Modo2linea 'Se configura a dos lneas de 5 x 8
LCDCMD LCDpin,LCDOFF 'Apagar la pantalla
LCDCMD LCDpin,LCDON 'Encender la pantalla sin cursor
LCDCMD LCDpin,IncrCrsr 'Ajusta la pantalla para auto incremento
LCDCMD LCDpin,BorrarLCD 'Limpia la pantalla
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 168 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Objetivos: Manipular una pantalla de cristal lquido paralela de 2x16, por medio de los comandos soportados por el microcontrolador
BS2p para implementar un programa que permita editar un mensaje mostrado por la pantalla LCD. Utilizar los comandos LOOKUP y
LOOKDOWN de PBASIC para buscar informacin en arreglos.

Elementos a Utilizar
Mantenga en el protoboard del sistema de desarrollo
MDK-B28 el esquema electrnico que se muestra en la
(1) BASIC Stamp 2p. figura No. 7.6. En el siguiente programa se
(1) LCD alfanumrico 2 x 16 paralelo. implementar un sencillo editor de texto, donde, por
(1) Resistencia de 10 Kohms. medio de cuatro pulsadores, se le permitir al usuario
(1) Potencimetro de 10 Kohms.
(1) Banco de Pulsadores. desplazarse dentro de la pantalla (en la primera fila) y
(1) Un cable serial DB9. modificar un texto de 16 caracteres. El pulsador 4 (PB4),
(1) StampW ( v2 Beta 2.1 o superior). ubicado en el terminal P11 permite mover a la derecha
el cursor. El pulsador 3 (PB3), permite cambiar la letra
en orden ascendente, es decir, A,B,C, etc. El pulsador 2
(PB2), permite cambiar la letra en orden descendente, es decir, C,B,A, ,Z.etc. El pulsador 1 (PB1), permite
mover el cursor a la izquierda. Proceda a descargar en el BASIC Stamp el programa 7_3.bsp.

'Programa 7_3.bsp
'Este programa tiene por objetivo mostrar:
'1) El uso de los comandos LCDCMD y LCDOUT para enviar comandos y mensajes al LCD
'2) El uso del comando LCDIN para leer informacin de la memoria DDRAM
'2) El uso de los comandos LOOKUP Y LOOKDOWN
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

BorrarLCD CON %00000001 'Limpiar pantalla


MoverCrsr CON %10000000 'Posicionar el cursor
Despertar CON %00110000 'Despertar
Modo4bits CON %00100000 'Modo de 4 bits de datos
Modo2linea CON %00101000 'Modo de 2 lneas, tamao de 5x8
LCDOFF CON %00001000 'Apagar la pantalla
LCDON CON %00001100 'Encender, con cursor la pantalla
IncrCrsr CON %00000110 'Auto-incremento del cursor
InicioLCD CON %00000010 'Posicin inicial del LCD
LCDONCrsr CON %00001110 'Encender, con cursor la pantalla

Sistema de Desarrollo para MC, modelo MDK-B28 - 169 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_3.bsp

EspBlanco CON $10 'Espacio en blanco

Pulset1 VAR Byte 'Espacio de trabajo de PB1


Pulset2 VAR Byte 'Espacio de trabajo de PB2
Pulset3 VAR Byte 'Espacio de trabajo de PB3
Pulset4 VAR Byte 'Espacio de trabajo de PB4
Letra VAR Byte 'Contiene el dato a mostrar
Pos VAR Byte 'Guarda la posicin en la pantalla
x VAR Byte 'Variable de uso general

LCDpin PIN 0 'Terminal Enable del LCD


PB1 PIN 8 'Pulsador PB1
PB2 PIN 9 'Pulsador PB2
PB3 PIN 10 'Pulsador PB3
PB4 PIN 11 'Pulsador PB4
'___________________________________________________________________________________
'Programa Principal:

Inicio:
GOSUB IniLcd
GOSUB Mensaje_Inicial

DO
BUTTON PB4,0,255, 0 ,Pulset4,1,Derecha 'Si PB4 fue presionado va a la derecha
BUTTON PB3,0,254,254,Pulset3,1,Arriba 'Si PB3 fue presionado cambiar letra
BUTTON PB2,0,254,254,Pulset2,1,Abajo 'Si PB2 fue presionado cambiar letra
BUTTON PB1,0,255, 0 ,Pulset1,1,Izquierda 'Si PB1 fue presionado va a la izquierda
Salto:
LOOP

Derecha:
IF Pos = 15 THEN 'Si Pos es 15 implica el fin
LCDOUT LCDpin,MoverCrsr+79,[EspBlanco] 'por la derecha, solo mostrar flecha
LCDCMD LCDpin,MoverCrsr+Pos 'flecha a la izq.
ELSE
Pos = Pos+1 'Incrementar posicin a hacia la derecha
GOSUB Mostrar_Flechas 'Mostrar ambas flechas de desplazamiento
ENDIF
GOTO Salto

Sistema de Desarrollo para MC, modelo MDK-B28 - 170 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_3.bsp

Arriba:
GOSUB Obtener_LCDChar 'Lee del LCD la letra que se quiere editar
x = (x+1) MAX 26 'Determina cual es la nueva letra a mostrar
GOSUB Mostrar_LCDChar 'Presentar nueva letra en la LCD
GOTO Salto

Abajo:
GOSUB Obtener_LCDChar 'Lee del LCD la letra que se quiere editar
x = (x-1) MIN 0 'Determina cual es la nueva letra a mostrar
GOSUB Mostrar_LCDChar 'Presentar nueva letra en la LCD
GOTO Salto

Izquierda:
IF Pos = 0 THEN 'Si pos es 0, implica que el fin de
LCDOUT LCDpin,MoverCrsr+64,[EspBlanco] 'la pantalla por la izquierda, en
LCDCMD LCDpin,MoverCrsr 'cuyo caso, slo se muestra la flecha
ELSE 'a la derecha
Pos = Pos-1 'Mover una posicin a la izquierda
GOSUB Mostrar_Flechas 'Mostrar las dos flechas
ENDIF
GOTO Salto

'===================================================================================
'SUBRUTINAS
'Inicializacion de la pantalla:
IniLcd:
PAUSE 1000
LCDCMD LCDpin,Despertar 'Despertar la pantalla
PAUSE 10
LCDCMD LCDpin,Despertar 'Despertar la pantalla
PAUSE 1
LCDCMD LCDpin,Despertar 'Despertar la pantalla
PAUSE 1
LCDCMD LCDpin,Modo4bits 'Configurar el bus de dato en modo de 4 bits
LCDCMD LCDpin,Modo2linea 'Se configura a dos lneas de 5x8
LCDCMD LCDpin,LCDOFF 'Apagar la pantalla
LCDCMD LCDpin,LCDONCrsr 'Encender la pantalla con parpadeo activo
LCDCMD LCDpin,IncrCrsr 'Ajusta la pantalla para auto-incremento
LCDCMD LCDpin,BorrarLCD 'Limpia la pantalla
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 171 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_3.bsp

'Mensaje a mostrarse al iniciar el programa


Mensaje_Inicial:
LCDCMD LCDpin,BorrarLCD 'Limpiar la pantalla
LCDOUT LCDpin,MoverCrsr,["ROSO ELECTRIC S"] 'Enva el mensaje a la pos. indic.
LCDOUT LCDpin,MoverCrsr+64,[$7F] 'Enviar flecha a la izquierda
LCDOUT LCDpin,MoverCrsr+79,[$7E] 'Enviar flecha a la derecha
LCDCMD LCDpin,InicioLCD 'Ir al inicio de la pantalla (Home)
RETURN

'Obtiene el carcter visualizado en la posicin actual del LCD


Obtener_LCDChar:
x = 255
LCDIN LCDPin, 0, [x] 'Lee la letra en la pos actual LCD
LOOKDOWN x,["ABCDEFGHIJKLMNOPQRSTUVWXYZ "],x 'Busca el ndice de la letra
RETURN

'Muestra el carcter apuntado por x en la posicin pos


Mostrar_LCDChar:
LOOKUP x,["ABCDEFGHIJKLMNOPQRSTUVWXYZ "],Letra 'Muestra el carcter x de la lista
LCDOUT LCDpin,MoverCrsr+Pos,[Letra] 'Mostrar la letra
LCDCMD LCDpin,MoverCrsr+Pos
RETURN

'Muestra las flechas que indican en cual sentido se puede seguir avanzando

Mostrar_Flechas:
LCDOUT LCDpin,MoverCrsr+64,[$7F]
LCDOUT LCDpin,MoverCrsr+79,[$7E]
LCDCMD LCDpin,MoverCrsr+Pos
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 172 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Objetivo: Utilizar el Software LCD Character Creador para generar caracteres personalizados y visualizarlos en la pantalla. Construir
una pequea animacin en el LCD.

Elementos a Utilizar Monte en el protoboard que acompaa al sistema de


desarrollo MDK-B28 el esquema de la figura No. 7.6.
Conecte el altavoz piezoelctrico del sistema al pin P12
(1) BASIC Stamp 2p. del BASIC Stamp.
(1) Mdulo LCD alfanumrico 2x16 paralelo.
(1) Software LCD Character Creator.
(1) Resistencia de 10 Kohms. LCD Character Creator
(1) Potencimetro de 10 Kohms.
(1) StampW ( v2 Beta 2.1 o superior). LCD Character Creator, es un programa propiedad de
(1) Cable serial DB9. Parallax, Inc, el cual, facilita la creacin de caracteres
personalizados en pantallas LCD que utilicen el controlador
HD44780 de HITACHI o algn otro compatible con ste.

En los ejercicios anteriores se ha manejado la pantalla LCD de casi todas las formas posibles, pero se ha
hecho uso exclusivo del conjunto de caracteres almacenado en la memoria CGROM propia del controlador de
la pantalla. Ahora bien, en este ejercicio vamos a crear nuestro propio conjunto de caracteres, para de esta
forma ,mejorar del despliegue visual en la pantalla LCD.

La pantalla LCD dispone de un espacio de memoria RAM, en el cual, se pueden almacenar hasta 8 caracteres
personalizados de 5x8 pxeles. Este espacio es llamado CGRAM. El contenido de la CGRAM puede ser
modificado dinmicamente durante la ejecucin del programa, razn por la cual, es ilimitado el nmero de
caracteres que se pueden crear y mostrar, considerando claro que cada uno de ellos ocupa 8 bytes ( en caso
de ser fuente 5x8, si se usa fuente 5x11 sern 11 bytes por carcter) de la memoria del microcontrolador.

La creacin de un carcter es sencilla si utilizamos el programa LCD Character Creador. Tomando como
referencia la figura No. 7.7, podemos darnos cuenta que cada fila de la matriz representa un byte donde
cada columna es un bit del mismo. El valor lgico de cada bit se relaciona con el estado de cada pxel, de
modo que si el correspondiente bit es uno, el pxel se mostrar oscuro (opaco), de lo contrario ser claro
(transparente).

Sistema de Desarrollo para MC, modelo MDK-B28 - 173 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Figura No. 7.7: Ejemplos de creacin de caracteres con


el programa LCD Character Creator.
Fuente: Elaboracin Propia.

Introduzca el programa 7_4.bsp, ejectelo y analice su funcionamiento.

'Programa 7_4.bsp
'Este programa tiene por objetivo:
'1) Utilizar la directiva DATA para almacenar informacin en la EEPROM del BS2p
'2) Visualizar en la pantalla LCD caracteres personalizados
'3) Crear una animacin sencilla

'==================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'__________________________________________________________________________________

Sistema de Desarrollo para MC, modelo MDK-B28 - 174 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_4.bsp

'Declaracin de Variables y Constantes

Pack0 DATA $0E,$1F,$1C,$18,$1C,$1F,$0E,$00 'Carcter # 1


Pack1 DATA $0E,$1F,$1F,$18,$1F,$1F,$0E,$00 'Carcter # 2
Pack2 DATA $0E,$1F,$1F,$1F,$1F,$1F,$0E,$00 'Carcter # 3
Pack3 DATA $0E,$1F,$1F,$03,$1F,$1F,$0E,$00 'Carcter # 4
Pack4 DATA $0E,$1F,$07,$03,$07,$1F,$0E,$00 'Carcter # 5

BorrarLCD CON %00000001 'Limpiar pantalla


MoverCrsr CON %10000000 'Posicionar el cursor
Despertar CON %00110000 'Despertar
Modo4bits CON %00100000 'Modo de 4 bits de datos
Modo2linea CON %00101000 'Modo de 2 lneas, tamao de 5x8 (%00101100 5x10)
LCDOFF CON %00001000 'Apagar la pantalla
LCDON CON %00001100 'Encender, sin cursor la pantalla
IncrCrsr CON %00000110 'Auto-incremento del cursor
CGRam CON %01000000 'Apuntador a la CGRAM
Linea1 CON %10000000 'Lnea 1 de la pantalla
Linea2 CON %11000000 'Lnea 2 de la pantalla

Dir VAR Byte 'Direccin de la EEPROM a leer


Caracter VAR Byte 'Bytes del carcter
Verificar VAR Byte 'Bytes escritos en CGRAM
Pos VAR Byte 'Posicin en la pantalla
Ani VAR Byte 'Caracteres de la animacin

LCDpin CON 0 'Pin de habilitacin del LCD


'___________________________________________________________________________________
'Programa Principal

Inicio:
PAUSE 500
GOSUB IniLcd 'Inicializa al LCD
LCDCMD LCDpin,BorrarLCD 'Borrar pantalla
LCDCMD LCDpin,CGRam 'Apuntar a CGRAM
FOR Dir = Pack0 TO Pack4+7
READ Dir,Caracter 'Leer caracteres desde EEPROM
LCDOUT LCDpin,0,[Caracter] 'Cargar los 5 caracteres en CGRAM
NEXT

Sistema de Desarrollo para MC, modelo MDK-B28 - 175 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_4.bsp

DO
LCDCMD LCDpin,MoverCrsr: LCDOUT LCDpin,Linea1+3,["CARACTERES"]
LCDOUT LCDpin,Linea2+1,["PERSONALIZADOS"]
'Mensaje inicial a ser devorado
FOR Pos=0 TO 15 'Desplazamiento por toda la lnea
FOR Ani=0 TO 2 'Ciclo para producir
LCDOUT LCDpin,Linea1+Pos,[Ani]: PAUSE 100 'animacin en sentido
NEXT 'izquierda a derecha
LCDOUT LCDpin,Linea1+Pos,[" "] 'Borrado de posicin
NEXT
LCDCMD LCDpin,MoverCrsr
FOR Pos=15 TO 0
FOR Ani=2 TO 4 'Ciclo para producir
LCDOUT LCDpin,Linea2+Pos,[Ani]: PAUSE 100 'animacin en sentido
NEXT 'derecha a izquierda
LCDOUT LCDpin,Linea2+Pos,[" "]
NEXT
LOOP

'___________________________________________________________________________________
'SUB-RUTINAS
'Inicializacion de la pantalla:
IniLcd:
PAUSE 500
LCDCMD LCDpin,Despertar : PAUSE 10 'Despertar la pantalla
LCDCMD LCDpin,Despertar : PAUSE 1 'Despertar la pantalla
LCDCMD LCDpin,Despertar : PAUSE 1 'Despertar la pantalla
LCDCMD LCDpin,Modo4bits 'Configurar el bus de dato en modo de 4 bits
LCDCMD LCDpin,Modo2linea 'Se configura a dos lneas de 5x8
LCDCMD LCDpin,LCDOFF 'Apagar la pantalla
LCDCMD LCDpin,LCDON 'Encender la pantalla sin cursor
LCDCMD LCDpin,IncrCrsr 'Ajusta la pantalla para auto-incremento
LCDCMD LCDpin,BorrarLCD 'Limpia la pantalla
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 176 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

En la pantalla LCD debe aparecer el mensaje (CARACTERES PERSONALIZADOS) que ser literalmente
devorado por el conocido personaje de video juego (Packman). Para lograr la animacin se utilizan los
caracteres de la figura No. 7.7. (sentido derecha a izquierda), mostrndolos uno a continuacin del otro en
un intervalo de 100 ms para producir la sensacin de movimiento.

Figura 7.8:
Visualizacin del programa 7_4.bsp
visto en una pantalla LCD de 16
caracteres x 4 lneas.
Fuente: Elaboracin Propia.

Para la mayor comprensin del proceso de carga y utilizacin de los caracteres personalizados, se incluye el
diagrama de flujo mostrado en la figura No. 7.9.

Sistema de Desarrollo para MC, modelo MDK-B28 - 177 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

IN IC IO

In iLcd
A
B

Lee r p rxim o c arcte r


d e la E E P R O M B S 2 p A sig n ar i = 2

E scrib ir ca rcter e n la
C G R A M d e la p a n ta lla
M o stra r ca rcte r # i en p o sici n
actu a l d el LC D
No ltim o
C arcter ?
E sp e rar 1 00 m s
Si B o rra r ca rcte r en p os actu a l LC D
M ostrar m en saje
asig n a r i = 0
No
i = i+ 1 i = 4 ?

M ostrar car cter # i e n p o sici n Si


a ctu al d e l LC D
D ism in u ir p o sici n LC D

E sp era r 1 00 m s
B o rra r ca r cte r en p o s actu a l LC D No
In icio d e la
P a n ta lla
No

i = i+ 1 i = 2 ? Si

Si B
In cre m e n ta r p o sici n LC D
i = 0

No Si
F in d e la
A
P a n ta lla

Figura No. 7.9: Diagrama de flujo para el programa 7_4.bsp.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 178 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Analizando el programa 7_4.bsp, podemos entender como trabaja la memoria CGRAM y como puede
almacenar los caracteres creados con el programa LCD Character Creator. Al mismo tiempo, se pudo
implementar una animacin con los caracteres personalizados. Si deseamos utilizar la pantalla LCD con otra
animacin, podemos introducir en el BASIC Stamp el programa 7_5.bsp.

EL programa 7_5.bsp, simula una medicin de temperatura con indicacin grfica que activar una alarma
visual y sonora cuando la variable temperatura llegue a valores predeterminados. Este programa deber ser
comprendido y asimilado completamente pues ser la base para un ejercicio posterior.

Por sus dimensiones pudiera parecer que es un programa sumamente complejo, pero al comenzar el
anlisis, resultar evidente que las primeras 63 lneas del programa corresponden a la descarga de las
pantallas en la memoria EEPROM del BASIC Stamp. El cuerpo principal del programa inicializa al LCD y
escala a la variable x, de modo que su recorrido desde 0 hasta 255 sea interpretado como el desplazamiento
a lo largo de las 15 pantallas que componen la animacin. Posteriormente, se efectan las llamadas a las
subrutinas que muestran el valor de una temperatura. La figura No. 7.10 muestra el resultado de la
ejecucin de ste programa, utilizando el sistema de desarrollo MDK-B28 y una pantalla LCD.

Figura No. 7.10: Simulacin en la LCD. Utilizando el programa 7_5.bsp.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 179 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

'Programa 7_5.bsp
'Este programa tiene por objetivos:
'1) La grabacin y posterior lectura de datos en la EEPROM (DATA y READ)
'2) Descarga y visualizacin de caracteres personalizados
'3) Construccin de una animacin compleja
'4) Actualizar la memoria CGRAM de una LCD dinmicamente
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Las pantallas a mostrar son cargadas en la parte superior de la memoria EEPROM
'Pantalla #0
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$02,$04,$08,$08,$08,$04,$03 : DATA $08,$08,$04,$02,$02,$02,$04,$18
'Pantalla #1
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$02,$04,$08,$08,$08,$07,$03 : DATA $08,$08,$04,$02,$02,$02,$1C,$18
'Pantalla #2
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$02,$04,$08,$08,$0F,$07,$03 : DATA $08,$08,$04,$02,$02,$1E,$1C,$18
'Pantalla #3
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$02,$04,$08,$0F,$0F,$07,$03 : DATA $08,$08,$04,$02,$1E,$1E,$1C,$18
'Pantalla #4
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$02,$04,$0F,$0F,$0F,$07,$03 : DATA $08,$08,$04,$1E,$1E,$1E,$1C,$18
'Pantalla #5
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$02,$07,$0F,$0F,$0F,$07,$03 : DATA $08,$08,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #6
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $08,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #7
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #8
DATA $03,$02,$02,$02,$02,$02,$02,$03 : DATA $18,$08,$08,$08,$08,$08,$08,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18

Sistema de Desarrollo para MC, modelo MDK-B28 - 180 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_5.bsp

'Pantalla #9
DATA $03,$02,$02,$02,$02,$02,$03,$03 : DATA $18,$08,$08,$08,$08,$08,$18,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #10
DATA $03,$02,$02,$02,$02,$03,$03,$03 : DATA $18,$08,$08,$08,$08,$18,$18,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #11
DATA $03,$02,$02,$02,$03,$03,$03,$03 : DATA $18,$08,$08,$08,$18,$18,$18,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #12
DATA $03,$02,$02,$03,$03,$03,$03,$03 : DATA $18,$08,$08,$18,$18,$18,$18,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #13
DATA $03,$02,$03,$03,$03,$03,$03,$03 : DATA $18,$08,$18,$18,$18,$18,$18,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #14
DATA $03,$03,$03,$03,$03,$03,$03,$03 : DATA $18,$18,$18,$18,$18,$18,$18,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla de Alarma
UltimaP DATA $1C,$1D,$1D,$1D,$1D,$1D,$1D,$1D
DATA $07,$17,$17,$17,$17,$17,$17,$17
DATA $1D,$1D,$1B,$17,$17,$17,$1B,$1C
UltimoC DATA $17,$17,$1B,$1D,$1D,$1D,$1B,$07
'___________________________________________________________________________________

'Declaracin de Variables y Constantes


'Constantes de LDC

NoComando CON %00000000


BorrarLCD CON %00000001 'Limpiar pantalla
MoverCrsr CON %10000000 'Posicionar el cursor
Despertar CON %00110000 'Despertar
Modo4bits CON %00100000 'Modo de 4 bits de datos
Modo2linea CON %00101000 'Modo de 2 lneas, tamao de 5x8 (%00101100 5x10)
LCDOFF CON %00001000 'Apagar la pantalla
LCDON CON %00001100 'Encender, sin cursor la pantalla
IncrCrsr CON %00000110 'Auto-incremento del cursor
CGRam CON %01000000 'Apuntador a la CGRAM
Linea1 CON %10000000 'Lnea 1 de la pantalla
Linea2 CON %11000000 'Lnea 2 de la pantalla

Sistema de Desarrollo para MC, modelo MDK-B28 - 181 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_5.bsp

'___________________________________________________________________________________

LCDpin PIN 0 'Conexin del LCD


Alarmapin PIN 12
Dir VAR Word 'Direccin de la EEPROM a leer
Caracter VAR Byte 'Bytes del carcter
Pos VAR Byte 'Posicin en la pantalla
x VAR Byte 'Variable que simula la medicin
i VAR Nib 'Repeticin de Seal de Alarma
Pantalla VAR Nib 'Pantallas que componen la animacin

'___________________________________________________________________________________
'Programa Principal
Inicio:
PAUSE 500
GOSUB InitLCD 'Rutina de inicializacin del LCD

DO
FOR x=0 TO 255 'Simulacin de la medicin de temperatura
Pantalla=x/18 'Equivalencia entre la medicin y el termmetro
GOSUB Cargar_Pantalla 'Carga de la pantalla segn temperatura
GOSUB Actualizar_Pantalla 'Muestra la pantalla adecuada
GOSUB Actualizar_Texto 'Actualizacin de mensajes
PAUSE 250
NEXT
LOOP
'===================================================================================
'SUBRUTINAS
'Inicializacion de la pantalla
InitLCD:
PAUSE 1000
LCDCMD LCDpin,Despertar : PAUSE 10 'Despertar la pantalla
LCDCMD LCDpin,Despertar : PAUSE 1 'Despertar la pantalla
LCDCMD LCDpin,Despertar : PAUSE 1 'Despertar la pantalla
LCDCMD LCDpin,Modo4bits 'Configurar el bus de dato en modo de 4 bits
LCDCMD LCDpin,Modo2linea 'Se configura a dos lneas de 5x8
LCDCMD LCDpin,LCDOFF 'Apagar la pantalla
LCDCMD LCDpin,LCDON 'Encender la pantalla sin cursor
LCDCMD LCDpin,IncrCrsr 'Ajusta la pantalla para auto-incremento
LCDCMD LCDpin,BorrarLCD 'Limpia la pantalla
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 182 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_5.bsp

'Rutina para cargar la pantalla en la GCRAM


Cargar_Pantalla:
LCDCMD LCDpin,CGRam 'Iniciar en carcter 0 de CGRAM
FOR Dir = 32*Pantalla TO (32*(Pantalla+1)-1)
'Lazo iterativo para leer desde la EEPROM del BS, los 4 caracteres de cada pantalla
READ Dir,Caracter
LCDOUT LCDpin,NoComando,[Caracter]
NEXT
RETURN

'Rutina para actualizar la animacin, muestra los caracteres almacenados en la CGRAM


'en la pantalla

Actualizar_Pantalla:
LCDOUT LCDpin,Linea1+1 ,[0] : LCDOUT LCDpin,Linea1+2 ,[1] 'Termmetro lado Izq
LCDOUT LCDpin,Linea2+1 ,[2] : LCDOUT LCDpin,Linea2+2 ,[3]
LCDOUT LCDpin,Linea1+13 ,[0] : LCDOUT LCDpin,Linea1+14,[1] 'Termmetro lado Der
LCDOUT LCDpin,Linea2+13 ,[2] : LCDOUT LCDpin,Linea2+14,[3]
RETURN

'Rutina para actualizar el texto de acuerdo a la medicin de temperatura

Actualizar_Texto:
LCDOUT LCDpin,Linea2+5,[DEC3 x,$20,$DF,"C"]
SELECT Pantalla
CASE 0 TO 2
LCDOUT LCDpin,Linea1+4,[" Frio "]
CASE 3 TO 6
LCDOUT LCDpin,Linea1+4,[" Tibio "]
CASE 7 TO 10
LCDOUT LCDpin,Linea1+4,["Caliente"]
CASE 11 TO 13
LCDOUT LCDpin,Linea1+4,["Muy Cal"]
CASE ELSE
GOSUB Alarma
ENDSELECT
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 183 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Continuacin del Programa 7_4.bsp

'Rutina que genera una Seal de Alarma


Alarma:
LCDCMD LCDpin,CGRam
FOR Dir = 0 TO 31
READ Dir,Caracter
LCDOUT LCDpin,NoComando,[Caracter]
NEXT
LCDCMD LCDpin,CGRam+32
FOR Dir = UltimaP TO (UltimoC+7)
READ Dir,Caracter
LCDOUT LCDpin,NoComando,[Caracter]
NEXT
FOR i=0 TO 8
LCDOUT LCDpin,Linea1+1,[0]: LCDOUT LCDpin,Linea1+13,[0]:
LCDOUT LCDpin,Linea1+2,[1]: LCDOUT LCDpin,Linea1+14,[1]
LCDOUT LCDpin,Linea2+1,[2]: LCDOUT LCDpin,Linea2+13,[2]:
LCDOUT LCDpin,Linea2+2,[3]: LCDOUT LCDpin,Linea2+14,[3]

FREQOUT Alarmapin,943,1194
LCDOUT LCDpin,128+4,[" Peligro "]
LCDOUT LCDpin,Linea1+1,[4]: LCDOUT LCDpin,Linea1+13,[4]:
LCDOUT LCDpin,Linea1+2,[5]: LCDOUT LCDpin,Linea1+14,[5]
LCDOUT LCDpin,Linea2+1,[6]: LCDOUT LCDpin,Linea2+13,[6]:
LCDOUT LCDpin,Linea2+2,[7]: LCDOUT LCDpin,Linea2+14,[7]
FREQOUT Alarmapin,943,1061
NEXT
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 184 -


www.roso-control.com
Captulo No. 7. Pantalla de Caracteres LCD

Investigue los siguientes tpicos


1. Qu es una pantalla LCD de caracteres y para que sirve ?.
2. Cuantos tipos de pantallas LCD conoce usted, explique ?.
3. Cual es la diferencia entre una pantalla de LCD de caracteres y una grfica ?.
4. Cual es la diferencia entre una pantalla de LCD paralela y una serial ?.
5. Qu es la memoria CGRAM y cual es su utilidad ?.
6. Qu es la memoria CGROM y cual es su utilidad ?.
7. Cuales son las posiciones visibles y no visibles en una pantalla LCD ?.
8. Cual es la diferencia entre un comando y un dato para una pantalla LCD ?.
9. Por qu se tiene que inicializar a una pantalla LCD ?.
10. Qu comandos debo utilizar para inicializar una pantalla LCD ?.
11. Para que sirve el Comando LCDIN ?.
12. Para que sirve el comando LCDOUT ?.
13. Cuantos registros tiene la memoria EEPROM en un BASIC Stamp 2p ?.
14. Para que se utiliza el comando DATA ?.
15. Explique como funcionan los comandos READ y WRITE ?.
16. Cuantas pantallas LCD se pueden conectar en forma simultnea en un BASIC Stamp 2p ?.

Programacin

1. Construya un programa junto a sus subrutinas para colocar en una pantalla LCD de caracteres, tipo
paralela, slo su nombre en la primera lnea. Nota: No deber utilizar ninguno de stos comandos:
LCDIN, LCDOUT. Si puede utilizar el comando LCDCMD. Ahora repita el programa sin utilizar los
comandos LCDIN, LCDOUT ni el comando LCDCMD.

Sistema de Desarrollo para MC, modelo MDK-B28 - 185 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Captulo No. 08
Comunicacin Serial Asincrnica

Sistema de Desarrollo para MC, modelo MDK-B28 - 186 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Introduccin. La forma ms comn de intercambiar informacin equipos electrnicos es la comunicacin serial. Existen dos tipos
de comunicacin serial, sincrnica como hemos visto en el captulo nmero 5 y asincrnica. En este captulo, trataremos la
comunicacin asincrnica que significa sin "reloj" o sin sincrona. En este tipo de comunicacin serial, los datos se transmiten y
reciben sin necesidad de usar una seal de reloj, requiriendo entonces de slo dos cables de comunicacin; uno para la recepcin (Rx)
y otro para la transmisin (Tx), referidos siempre a la tierra o conexin comn. En un computador por ejemplo, se encuentra uno o
varios puertos seriales para la comunicacin asincrnica, son llamados los puertos COM o puertos RS232.

Comunicacin Serial Asincrnica


Ya que el trmino asincrnico significa sin reloj, ambos equipos el transmisor y el receptor debern tener
bases de tiempo iguales. Tpicamente, los datos enviados o recibidos son de 7 u 8 bits pero el conjunto de
bits transmitidos es superior, pues se incluye un bit de arranque (que le indica al receptor que a
continuacin vendr una serie de bits que corresponden al dato), un bit de paridad (opcional para el control
de errores) y uno o dos bits de parada (que indican que ha finalizado la transmisin).

Los niveles de tensin para poder establecer una comunicacin serial asincrnica debern ser los mismos
tanto para el receptor como para el transmisor, pudiendo ser stos niveles de tensin compatibles con la
lgica TTL/CMOS como en el caso del BASIC Stamp y de otros microcontroladores o estar comprendido
entre -25 y 25 Volt DC, siguiendo el estndar RS-232C. Todos estos niveles de tensin estn referidos al
conductor comn de 0 Volt. DC.

Estndar RS232
Protocolo de comunicaciones desarrollado por la EIA (Asociacin de Industrias Electrnicas) a principio de la
dcada de los 60s y que, luego de sufrir varias actualizaciones, constituye uno de los ms empleados para
transmisin en cortas distancias. Parte de su xito y permanencia en el tiempo se debe a la implementacin
en un conector DB9 disponible en todos los computadores personales, donde ha encontrado el medio para
servir como puerto de interfaz entre el PC y cualquier cantidad de dispositivos perifricos como: el ratn,
escneres, mdems, entre otros.

Caractersticas del estndar RS-232

El 0 lgico (llamado Espacio "Space") comprendido entre +3 y +25 Voltios. Preferiblemente +12V.
El 1 lgico (llamado Marca "Mark") comprendido entre -3 y -25 Voltios. Preferiblemente -12V. Este constituye el
estado que ha de tener la lnea de transmisin cuando no se estn enviando datos.
La regin indeterminada comprendida entre -3V y +3V, no deber ser usada, pues est concebida para
absorber el ruido producto de EMI (Interferencia Electro Magntica) en la lnea.
Velocidad de transmisin de hasta 350Kbps.

Sistema de Desarrollo para MC, modelo MDK-B28 - 187 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

La distancia mxima entre los equipos est determinada por la capacitancia del cable de conexin
permitindose hasta 2500pf.
Comunicacin Full Duplex, es decir, envo y recepcin simultneo de informacin por canales independientes
(Tx y Rx).
El bit ms significativo del byte es trasmitido primero.

Los niveles lgicos de un puerto RS232 son igualmente un cero (0) y un uno (1). Sin embargo, los voltajes
de trabajo en de estos niveles son totalmente diferentes a los que hemos estados acostumbrados a
utilizar hasta el momento. Para el RS232, un cero (0) lgico equivale a +12 Vdc, mientras que un uno
(1) lgico equivale a -12 Vdc. Muchos circuitos que trabajan con RS232 utilizan un convertidor de
niveles llamado "Line driver/ receiver", el cual, tiene dos funciones: convierte los voltajes de +- 12 Vdc a
niveles TTL compatibles ( 0 a 5 Vdc), invierte los valores lgicos para el voltaje, 0 Volts ser un cero (0)
lgico y 5 Volts ser un uno (1) lgico. Todos los MicroControladores BASIC Stamp, tienen incluido un
"Line driver/ receiver" y por sta razn se pueden conectar directamente al puerto RS232 de la PC. En la
figura No. 8.1, vemos un circuito tpico de conexin serial RS232 de nueve pines denominado DB-9
conectado a un microcontrolador BASIC Stamp.

Figura No. 8.1: Conexiones de un BASIC Stamp al puerto serial (COM) de un PC.
Fuente: BASIC Stamp Manual ver 2.0. Parallax.

La figura No. 8.2 muestra la transmisin del dato binario (11011011) de acuerdo al protocolo RS-232.

Sistema de Desarrollo para MC, modelo MDK-B28 - 188 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Voltios
0 1 1 0 1 1 0 1 1 0 1 1
+12

0 Lgico
Regin
+3 Indeterminada
0
-3
Tiempo (s)

1 Lgico 2 Bits Parada

-12

Bit Inicio Dato de 8 bits Bit Paridad

Figura No. 8.2: Transmisin de un dato binario utilizando RS-232


Fuente: Elaboracin Propia.

UART
La comunicacin serial asincrnica con el BASIC Siglas que denotan Universal Asynchronous Receiver
Stamp 2p es muy flexible. Puede ser efectuada a Transmitter. Son circuitos integrados seriales cuyo principal
travs de cualquiera de los 16 pines de E/S y propsito durante la transmisin es el de convertir los bytes de
adicionalmente por los pines SIN y SOUT utilizados datos que se desean enviar en un tren de bits seriales (a veces
llamado bit stream). Durante el proceso de recepcin, el UART
para la programacin. La velocidad de la toma los bits que arriban por el terminal de entrada del puerto
comunicacin puede variar desde 608 bps hasta y los convierte en bytes paralelos para reconstruir el dato. En
115 KBps con la posibilidad de utilizar el control de este dispositivo se suele incluir la circuitera necesaria para el
flujo hasta los 19,2 KBps y adems da soporte al cambio de niveles lgicos de los empleados en la transmisin
(tpicamente +12 V y -12V) a TTL/CMOS (0-5V).
uso de los modificadores de formato, tanto para
los datos entrantes como para los de salida. Nota: Otra funcin que le atae es la inclusin de los bits extras de
Debido a que el BASIC Stamp no posee un buffer inicio, paridad y fin.
de transmisin/recepcin de datos, no se Dado que el BASIC Stamp no cuenta con un UART en hardware
recomienda trabajar a una velocidad mayor de debe emular su comportamiento mediante software, de esta
9600 Baudios. labor se encarga el intrprete de PBASIC.

Sistema de Desarrollo para MC, modelo MDK-B28 - 189 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

SERIN
Instruccin destinada a la recepcin de datos de manera serial asincrnica.

SERIN RPin {\FPin}, Baudmodo, {Plabel,} {Tiempo de Espera, Tlabel,} [Dato de Entrada]

RPin: Es una variable, constante o expresin (0-16) que especifica el Pin de E/S a travs del cual se
recibir el dato.
FPin: Es una variable, constante o expresin (0-15). Especifica el terminal de E/S que indica el
estado del control de flujo y ser configurado como salida. Su uso implica la especificacin
obligatoria de los parmetros Tiempo de Espera y Tlabel. Es empleado para informarle al equipo
transmisor que el BASIC Stamp est listo para recibir informacin.
Baudmodo: Variable, constante o expresin (0-65535) que especifica la configuracin y la
velocidad de transmisin/recepcin en baudios. La tabla NO .8.1 muestra los valores de uso ms
frecuente.
Plabel: Es una etiqueta opcional que indica donde el programa debe saltar en caso de detectarse
un error de paridad.
Tiempo de Espera: Parmetro opcional de que especifica cuanto tiempo se debe esperar por el
dato de entrada en unidades de 400s para el BS2p. Si el dato no llega en este tiempo, el programa
saltar a la direccin especificada por Tlabel.
Tlabel: Etiqueta opcional que debe emplearse con el argumento Tiempo de Espera. Indica a
donde debe saltar el programa en caso de que el dato no llegue en el tiempo especificado por el por
el argumento Tiempo de Espera.
Dato de Entrada: Es una lista de variables con sus respectivos modificadores de formatos (de
existir) que indican como y donde almacenar los datos recibidos

8N 8N 7E 7E
Baudios
invertido sin invertir invertido sin invertido Tabla No. 8.1: Argumento Baudmodo
1200 18447 2063 26639 10255 para distintas velocidades en el BS2p.
2400 17405 1021 25597 9213 Fuente: BASIC Stamp Manual v2.0.
4800 16884 500 25076 8692
9600 16624 240 24816 8432

En una transmisin/recepcin no invertida (True) el Cero (0) lgico se representa mediante una tensin de 0
Volts. DC y el 1 Uno (1) lgico es representado por 5 Volts. DC, ver figura No. 8.3.

Sistema de Desarrollo para MC, modelo MDK-B28 - 190 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Figura No. 8.3: Envo de un byte (01000001) en forma invertido y no invertido.


Fuente: Elaboracin Propia.

SEROUT
Enva datos de manera serial asincrnica.

SEROUT Tpin {\Fpin}, Baudmodo, {Paso,} {Tiempo de Espera, Tlabel,} [Dato de Salida]

TPin: Variable, constante o expresin (0-16) que especifica el Pin de E/S a travs del cual se
transmitirn los datos.
FPin: Variable, constante o expresin (0-15). Especifica el terminal de E/S que indica el estado del
control de flujo. Este ser configurado como entrada y lo emplear el BS2p para determinar si el
dispositivo con el que se quiere comunicar puede recibir datos.
Baudmodo: Variable, constante o expresin (0-65535) que especifica la configuracin y la
velocidad de la comunicacin.
Paso: Variable, constante o expresin (0-65535) que determina el tiempo a esperar entre los bytes
trasmitidos. Este no puede emplearse simultneamente con el argumento Tiempo de Espera.

Sistema de Desarrollo para MC, modelo MDK-B28 - 191 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Tiempo de Espera: Es una variable, constante o expresin (0-65535) opcional. Especifica cuanto
tiempo se debe esperar por la autorizacin de FPin para enviar los datos. Si la autorizacin no llega
a tiempo, el programa saltar a la direccin especificada por Tlabel.
Tlabel: Etiqueta opcional que indica a donde debe saltar el programa en caso de que el permiso
para enviar los datos no ocurra en el tiempo especificado por el argumento Tiempo de Espera.
Dato de Salida: Lista de variables, constantes, expresiones y modificadores de formato que indican
como deben enviarse los datos.

Cualquiera de los pines de E/S en el BASIC


Stamp (P0 a P15) puede ser conectado
directamente al puerto serial RS232 de un
PC. Sin embargo, hay que tener especial
cuidado de colocar una resistencia de 22
KOhms conectada en serie con el terminal
de recepcin, a fin de no destruir al
microcontrolador BASIC Stamp 2p.

Figura No. 8.4: Conexin directa entre el BS2p y un Puerto del PC.
Fuente: BASIC Stamp Manual v2.0.

En general una comunicacin de 7 bits/ paridad impar (7E), es utilizada cuando deseamos transmitir - recibir
texto y 8 bits/ sin paridad (8N) para datos. Cuando utilizamos un bit de paridad, podemos tener la ventaja
de detectar errores de transmisin y/o recepcin de los datos, sin embargo, se perder un bit. Por ejemplo,
si usamos el modo (7E) siete bits para los datos y uno de paridad, con siete bits podemos representar
valores desde 0 hasta 127, mientras si utilizamos el modo (8N), podemos representar valores desde 0 a 255.

RUN
Ejecuta un programa ubicado en un bloque de memoria especificado.

RUN (Bloque de Memoria)

Bloque de Memoria: Variable, constante o expresin (0-7). Indica la ubicacin del programa a ejecutar
Cuando el BASIC Stamp se enciende o se hace un reset, se ejecuta el programa
que se encuentre en bloque cero (0) de la EEPROM.

Sistema de Desarrollo para MC, modelo MDK-B28 - 192 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

PUERTOS RS232 DEL SISTEMA MDK-B28

El sistema de desarrollo MDK-B28, incorpora dos puertos seriales RS232. Uno de ellos dedicado para la
programacin del BASIC Stamp y otro para uso general. Este puerto de uso general, est identificado con el
nombre RS232 DB9 y utiliza un "line driver receiver basado en el circuito integrado DS275 de Dallas
Semiconductors (U3). Los terminales para la transmisin y recepcin de datos se encuentran disponibles en
la regleta de conexiones e identificados como TX y RX, respectivamente. En la figura No. 8.5 se muestra el
esquema de conexiones del puerto RS232, mientras que en la figura No. 8.6, se observa su ubicacin dentro
del sistema de desarrollo MDK-B28.

Figura No. 8.5: Puerto RS232 del MDK-B28. Figura No. 8.6: Vista del Puerto RS232.
Fuente: Elaboracin Propia. Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 193 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Objetivo: Construir un programa que permita al BS2p detectar en forma automtica, la velocidad de transmisin de los datos en una
comunicacin RS232.

Arme el circuito mostrado en la figura No. 8.7. Descargue


al BASIC Stamp el programa 8_1.bsp y ejectelo. En el Elementos a Utilizar
editor de PBASIC abra un nuevo debug terminal, ya sea,
haciendo clic sobre el icono New Debug o presionando
(1) BASIC Stamp 2p.
CTRL + D. (1) DS275 conversor RS232/TTL (Dallas).
(1) Cable de programacin.
En el campo Com Port seleccione el puerto COM que (1) StampW (Ver 2.0 beta 2.1 o superior).
utiliza para programar al BASIC Stamp (Si no lo recuerda
puede presionar CTRL + I para identificar donde se encuentra conectado el BS2p). En el campo BaudRate
seleccione 1200 baudios. Deje las opciones Parity y Data Bits en None y 8 respectivamente. Desconecte
el cable de programacin del conector DB9 identificado como PROGRAMACION y conctelo en el RS232 DB9
del sistema de desarrollo MDK-B28.

Figura No. 8.7: Esquema de conexiones Figura No. 8.8: Determinando la velocidad
para el experimento # 1. de la conexin con un BS2p.
Fuente: Elaboracin Propia. Fuente: Elaboracin Propia.

En el debug terminal que configur anteriormente, posicione el cursor del PC en la casilla de transmisin y
teclee la letra U. En este momento el BASIC Stamp le enviar un mensaje dicindole la velocidad a la cual
se estableci la conexin.

Sistema de Desarrollo para MC, modelo MDK-B28 - 194 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Vare el contenido de BaudRate, repita el procedimiento de enviar la U y observe los resultados.

'Programa 8_1.bsp
'Este programa tiene por objetivos:
'1) Mostrar el uso de las instruccin SEROUT
'2) Detectar la velocidad en baudios de una conexin RS232
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de variables y constantes
Baudios VAR Word 'Velocidad de conexin en unidades de SERIN/SEROUT
Talto VAR Word 'Duracin del pulso alto
Baud VAR Word 'Velocidad de conexin en baudios
Index VAR Nib 'Variable de uso general
Rx PIN 9 'Terminal de Recepcin de datos
Tx PIN 10 'Terminal de Transmisin de datos
Buz PIN 11 'Terminal conectado al altavoz piezoelctrico
'___________________________________________________________________________________
'Programa Principal:

DO
DO : PULSIN Rx ,1 , Talto : LOOP UNTIL Talto<>0 'Medir el primer bit que llega
PAUSE 10 'Pausa para medir una sola vez
Talto = Talto*/$C0 'Conversin a us
Index=15
LOOKDOWN Talto, <= [29,58,114,229,458,916], Index
'Compara el bit medido con los tiempos mximos permitidos segn la velocidad
'de la conexin
LOOKUP Index, [45,110,240,500,1021,2063], Baudios
'Obtiene la velocidad en unidades para SERIN /SEROUT
LOOKUP Index,[38400,19200,9600,4800,2400,1200], Baud
'Obtiene la velocidad en baudios de acuerdo a la medicin efectuada
IF Index=15 THEN 'Si el dato es invlido
FREQOUT Buz,4500,1200 'emitir un sonido de alarma
ELSE
SEROUT Tx, Baudios, [HOME, "**Comunicacin Serial Asincrnica RS232**",CR]
SEROUT Tx, Baudios, [" Equipo comunicndose a ", DEC Baud, " Baudios "]
'Envo de un mensaje a la velocidad detectada
FREQOUT Buz,2000,1500 'Emite un Bip
ENDIF
Talto = 0 'Borra el contenido de la medicin anterior
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 195 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

La comunicacin RS-232 es utilizada cada vez que se programa al BS2p, cuando se hace una instruccin de
depuracin (DEBUG o DEBUGIN) o cuando se utiliza el StampPlot Pro. Por ello, el resto de este captulo ha
sido enfocado hacia el manejo en forma serial asincrnica de un circuito controlador serial de pantallas LCD
(SLCD-IC).

Qu es el controlador serial de pantallas LCD, SLCD-IC ?

Es un microcontrolador preprogramado cuya funcin principal es la de controlar


a una pantalla de caracteres tipo LCD paralela, en forma serial. Se puede utilizar
con cualquier tipo de pantalla LCD, que tenga un controlador Hitachi HD44780 o
compatible. Tambin soporta a seis pulsadores del tipo SPST N.O. y cualquier
LCD que posea dos o ms lneas y hasta ochenta caracteres de presentacin en
pantalla, acepta comunicacin serial asincrnica compatible con niveles
lgicos TTL/CMOS a 9600 baud con el formato "8N1".

El SLCD-IC, trabaja con dos tipos de datos: texto e instrucciones. Por defecto, trabaja en modo texto.
Cualquier dato que sea enviado al SLCD-IC es mostrado en la pantalla del LCD. Para distinguir entre un texto
y una instruccin el SLCD-IC verifica si en la comunicacin serial se ha enviado un prefijo de una instruccin,
el cual, debe ser el carcter (ASCII 254) o $FE, si esto ocurre; el byte enviado despus de ste prefijo es
tratado como una instruccin. Despus de ejecutar la instruccin el controlador regresa a modo texto.

INSTRUCCIN CDIGO
LIMPIAR Pantalla 1
Debido a que el SLCD-IC inicializa a la
Cursor al INICIO 2
pantalla LCD despus de ser energizado,
ESCONDER pantalla sin perder datos 8
usted solamente tendr que esperar un (1)
RESTAURAR pantalla sin cursor 12
segundo antes de enviar cualquier dato al
Cursor en modo PARPADEO 13
controlador. Esto garantiza el tiempo
Cursor en modo BAJO LNEA 14 suficiente para que el controlador inicialice
MOVER cursor a la IZQUIERDA 16 correctamente a la pantalla LCD. En la
MOVER cursor a la DERECHA 20 pantalla LCD se mostrar un mensaje como:
DESPLAZAR pantalla a la IZQUIERDA 24 http://roso-control.com, el cual, desaparecer
DESPLAZAR pantalla a la DERECHA 28 una vez que usted enve el primer dato al
Apuntador a la memoria CGRAM 64 + Addr. controlador SLCD-IC.
Posiciona el Cursor en la Pos. DDRAM 128 + Addr.

Tabla No. 8.2: Instrucciones para el controlador SLCD-IC.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 196 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Posicionando el Cursor de la Pantalla LCD.


Usted podr enviar el cursor a cualquier parte de la pantalla enviando la instruccin correcta. La posicin del
cursor depender del tipo de pantalla LCD utilizada y de la cantidad de lneas de la misma como se muestra
a continuacin.
< ------------------------- CARCTER No. -------------------------->
1 2 3 4 5 6 7 8 9 ... 20
Lnea_1 128 129 130 131 132 133 134 135 136 ... 147
Lnea_2 192 193 194 195 196 197 198 199 200 ... 211
Lnea_3 148 149 150 151 152 153 154 155 156 ... 167
Lnea_4 212 213 214 215 216 217 218 219 220 ... 231

Tabla No. 8.3: Posiciones posibles de los caracteres. Valores en Decimal.


Fuente: Elaboracin Propia

Creando sus propios caracteres


Usted podr crear sus propios smbolos; simplemente vaya a la direccin de la memoria de smbolos del LCD
llamada CGRAM y escriba en ella los ocho bytes que contienen su seleccin. Slo se utilizarn los bit 0 al 4.

Figura No. 8.9: Bytes para la creacin de caracteres propios.


Fuente: Elaboracin Propia.

Localizacin de los smbolos


Todos los smbolos creados se podrn representar con los caracteres ASCII 0 al 7 y estarn almacenados en
la memoria RAM de la pantalla LCD una vez creados. Para cargar en la memoria un smbolo como el
mostrado arriba y poder representarlo como el ASCII 0, se deber enviar al SLCD-IC los siguientes bytes:
254 64 31 4 14 10 10 14 4 31 254 128

Sistema de Desarrollo para MC, modelo MDK-B28 - 197 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

CDIGO ASCII DIRECCIN CGRAM


0 64
1 72
2 80
3 88
4 96
5 104
6 112
7 120

Tabla No. 8.4: Direcciones de la memoria CGRAM para almacenar caracteres propios.
Fuente: Elaboracin Propia.

Salida Serial Asincrnica (Estatus de los pulsadores)


El SLCD-IC, enva en forma serial la informacin del pulsador que fue presionado a travs de un byte que
contiene el carcter ASCII del pulsador presionado. La comunicacin serial solamente se realizar si la
habilitacin de la salida serial (/OE) se encuentra en un nivel bajo. Esta comunicacin serial se realiza a
9600 baud, 1N8 como se muestra a continuacin:
[ SLCD-IC SALIDA PIN 8 ]

/OE Pulsador SALIDA SALIDA SALIDA


PIN Presionado CARCTER HEX DEC
ALTO Cualquiera No hay No Hay No Hay
BAJO S1 1 31 49
BAJO S2 2 32 50
BAJO S3 3 33 51
BAJO S4 4 34 52
BAJO S5 5 35 53
BAJO S6 6 36 54
BAJO Dos o Ms No Hay No Hay No Hay

Tabla No. 8.5: Byte transmitido al presionar un pulsador conectado al SLCD-IC.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 198 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Especificaciones Bsicas (SLCD-IC)


Voltaje de Operacin : 4.5 a 5.5 Volt DC.
Consumo : < 2 Amp. @ 5.0 Volt DC.
Entrada Serial PIN 7 : Normal TTL/CMOS Datos seriales a: 9600 baud, (1) Bit Arranque,
(8) Bits Datos, (1) Bit de Parada, Sin bit de paridad. "8N1".
Salida Serial PIN 8 : Normal TTL/CMOS Datos seriales a: 9600 baud, (1) Bit Arranque,
(8) Bits Datos, (1) Bit de Parada, Sin bit de paridad. "8N1".

Figura 8.10: Esquema electrnico de conexin del PIC 16F628 (SLCD_IC),


junto a seis pulsadores S.P.S.T. normalmente abiertos N.A. y una pantalla LCD
alfanumrica. A ste arreglo lo llamaremos de ahora en adelante mdulo SLCD-BD.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 199 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Objetivo: Comprender el funcionamiento del mdulo SLCD-BD, ya que, de ahora en adelante se utilizar en la mayora de los
ejercicios.

Conecte el mdulo SLCD-BD del sistema de desarrollo


Elementos a Utilizar
MDK-B28 a los pines del BASIC Stamp 2p, segn se
muestra en la figura No. 8.11. Introduzca el programa
8_2.bsp al microcontrolador y observe el resultado en (1) Un mdulo BASIC Stamp 2p.
(1) Sistema de Desarrollo MDK-B28.
la pantalla del LCD. Este programa realiza una (1) Mdulo SLCD-BD.
comunicacin serial asincrnica entre dos dispositivos, (1) Cable de programacin.
el BASIC Stamp 2p por un lado y el microcontrolador (1) StampW (ver 2.0 beta 2.1 o superior).
SLCD-IC por el otro.

Figura 8.11: Esquema electrnico de conexin para el experimento # 2.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 200 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

En el programa 8_2.bsp, se muestra como trabajar con la pantalla LCD en forma serial a travs de la
utilizacin del mdulo SLCD-BD. El programa explota al mximo todas las formas de trabajar con una
pantalla LCD cuyo controlador sea el Hitachi HD44780 o compatible. En el programa 8_3.bsp, se desarrolla
una aplicacin para leer el estado de los seis (6) pulsadores del mdulo SLCD-BD utilizando el Pin de
control de flujo de la instruccin SERIN. Antes de ejecutarlo, conecte el altavoz piezoelctrico del MDK-B28
al terminal P11 del BASIC Stamp.

'Programa 8_2.bsp
'Este programa tiene por objetivo manejar el mdulo SLCD-BD para desplegar
'informacin en una pantalla LCD de 2x16
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de variables y constantes
BorrarLCD CON 1 'Limpiar pantalla
IraHome CON 2 'Mueve el cursor al inicio de la pantalla
Off_LCD CON 8 'Apaga el LCD sin borrar su contenido
On_LCD CON 12 'Enciende el LCD sin cursor
Cursor_Blink CON 13 'Activa el parpadeo
Cursor_Undrl CON 14 'Activa el cursor
Cursor_Izq CON 16 'Desplaza el cursor a la izquierda
Cursor_Der CON 20 'Desplaza el cursor a la derecha
Scroll_Izq CON 24 'Desplaza la pantalla a la izquierda
Scroll_Der CON 28 'Desplaza la pantalla a la derecha
CGRAM_0 CON 64 'Posicin del Carcter Personalizado #1
CGRAM_1 CON 72 'Posicin del Carcter Personalizado #2
CGRAM_2 CON 80 'Posicin del Carcter Personalizado #3
CGRAM_3 CON 88 'Posicin del Carcter Personalizado #4
CGRAM_4 CON 96 'Posicin del Carcter Personalizado #5
CGRAM_5 CON 104 'Posicin del Carcter Personalizado #6
CGRAM_6 CON 112 'Posicin del Carcter Personalizado #7
CGRAM_7 CON 120 'Posicin del Carcter Personalizado #8
Inst CON 254 'Envo de una Instruccin
MoverCrsr CON 128 'Posicionar el cursor
Baudios CON 240 'Velocidad de la Transmisin/Recepcin
Linea_2 CON 64 'Primer carcter de la lnea 2 respecto a posicin Home
Tecla VAR Byte 'Tecla leda (cdigo ASCII)
i VAR Nib
j VAR Nib 'Variables de propsito general
Slcd_Rx PIN 9 'Terminal que enva informacin al controlador

Sistema de Desarrollo para MC, modelo MDK-B28 - 201 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Continuacin del Programa 8_2.bsp

'___________________________________________________________________________________
'Programa Principal
PAUSE 1000 'Pausa para que el SLCD-IC inicialice la pantalla
DO
SEROUT Slcd_Rx,Baudios,[Inst,BorrarLCD] 'Borra el contenido
SEROUT Slcd_Rx,Baudios,[" Pantalla LCD y Controlados por"]
'Escritura en la primera lnea
SEROUT Slcd_Rx,Baudios,[Inst,MoverCrsr+Linea_2]
SEROUT Slcd_Rx,Baudios,[" Teclado Serial el SLCD-IC"]
'Escritura en la segunda lnea
PAUSE 1500
'Posiciona al cursor al inicio de la pantalla y activa el cursor
SEROUT Slcd_Rx,Baudios,[Inst,IraHome]
SEROUT Slcd_Rx,Baudios,[Inst,Cursor_Undrl]
FOR i=0 TO 15 'El cursor recorre el mensaje de izquierda a derecha
PAUSE 300
SEROUT Slcd_Rx,Baudios,[Inst,Cursor_Der]
NEXT

'Posiciona al cursor al final de la pantalla y recorre sta de derecha a izquierda


'mientras el cursor parpadea
SEROUT Slcd_Rx,Baudios,[Inst,MoverCrsr+Linea_2+15]
SEROUT Slcd_Rx,Baudios,[Inst,Cursor_Blink]
FOR i=0 TO 15
PAUSE 300
SEROUT Slcd_Rx,Baudios,[Inst,Cursor_Izq]
NEXT

'Desplaza el texto para mostrar lo que estaba oculto


FOR i=0 TO 15
PAUSE 300
SEROUT Slcd_Rx,Baudios,[Inst,Scroll_Izq]
NEXT

PAUSE 1500
FOR i=0 TO 15
PAUSE 300
SEROUT Slcd_Rx,Baudios,[Inst,Scroll_Der]
NEXT
PAUSE 1500

Sistema de Desarrollo para MC, modelo MDK-B28 - 202 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Continuacin del Programa 8_2.bsp

'Efecto de parpadeo en la pantalla del mensaje escrito


SEROUT Slcd_Rx,Baudios,[Inst,BorrarLCD]
SEROUT Slcd_Rx,Baudios,[" COMUNICACION "]
SEROUT Slcd_Rx,Baudios,[Inst,MoverCrsr+Linea_2]
SEROUT Slcd_Rx,Baudios,[" ASINCRONICA "]

FOR i=0 TO 4
PAUSE 400
SEROUT Slcd_Rx,Baudios,[Inst,Off_LCD]
PAUSE 400
SEROUT Slcd_Rx,Baudios,[Inst,On_LCD]
NEXT

'Carga de caracteres personalizados


SEROUT Slcd_Rx,Baudios,[Inst,CGRAM_0]
SEROUT Slcd_Rx,Baudios,[$04,$0A,$15,$0E,$04,$04,$0A,$0A] 'Carga carcter #1
SEROUT Slcd_Rx,Baudios,[Inst,CGRAM_1]
SEROUT Slcd_Rx,Baudios,[$04,$0A,$04,$1F,$04,$04,$0A,$11] 'Carga carcter #2
SEROUT Slcd_Rx,Baudios,[Inst,CGRAM_2]
SEROUT Slcd_Rx,Baudios,[$04,$0A,$04,$0E,$15,$04,$0A,$11] 'Carga carcter #3
SEROUT Slcd_Rx,Baudios,[Inst,CGRAM_3]
SEROUT Slcd_Rx,Baudios,[$04,$0A,$04,$0E,$15,$04,$0A,$0A] 'Carga carcter #4
SEROUT Slcd_Rx,Baudios,[Inst,CGRAM_4]
SEROUT Slcd_Rx,Baudios,[$04,$0A,$15,$0E,$04,$04,$0A,$11] 'Carga carcter #5
SEROUT Slcd_Rx,Baudios,[Inst,CGRAM_5]
SEROUT Slcd_Rx,Baudios,[$04,$0A,$04,$0E,$15,$04,$0A,$11] 'Carga carcter #6
SEROUT Slcd_Rx,Baudios,[Inst,CGRAM_6]
SEROUT Slcd_Rx,Baudios,[$04,$0A,$04,$0E,$15,$04,$0A,$0A] 'Carga carcter #7
SEROUT Slcd_Rx,Baudios,[Inst,BorrarLCD]

'Muestra los caracteres personalizados que fueron creados y descargados previamente


SEROUT Slcd_Rx,Baudios,[Inst,BorrarLCD]
SEROUT Slcd_Rx,Baudios,["Pueden crearse "]
PAUSE 1500
SEROUT Slcd_Rx,Baudios,[Inst,MoverCrsr]
SEROUT Slcd_Rx,Baudios,["Caract. Propios "]
SEROUT Slcd_Rx,Baudios,[Inst,MoverCrsr+Linea_2]
FOR i =0 TO 6
SEROUT Slcd_Rx,Baudios,[" ",i]
PAUSE 1000
NEXT

Sistema de Desarrollo para MC, modelo MDK-B28 - 203 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Continuacin del Programa 8_2.bsp

PAUSE 2500
SEROUT Slcd_Rx,Baudios,[Inst,BorrarLCD]
SEROUT Slcd_Rx,Baudios,["Tambien animarse"]
PAUSE 1500

'Crea una pequea animacin, con lo que se completan las funciones ms usadas
FOR i =0 TO 2
FOR j=0 TO 6
SEROUT Slcd_Rx,Baudios,[Inst,Movercrsr+Linea_2]
SEROUT Slcd_Rx,Baudios,[j]
SEROUT Slcd_Rx,Baudios,[j]
SEROUT Slcd_Rx,Baudios,[Inst,Movercrsr+Linea_2+14]
SEROUT Slcd_Rx,Baudios,[j]
SEROUT Slcd_Rx,Baudios,[j]
PAUSE 250
NEXT
NEXT
PAUSE 1500
LOOP

'Programa 8_3.bsp
'Este programa muestra como:
'1) Leer el estado de los pulsadores conectados al SLCD-BD
'2) Utilizar el control de flujo en la instruccin SERIN
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
BorrarLCD CON 1 'Limpiar pantalla
Inst CON 254 'Envo de una Instruccin
MoverCrsr CON 128 'Posicionar el cursor
Baudios CON 240 'Velocidad de la Transmisin/Recepcin
Linea_2 CON 64 'Primer carcter de la lnea 2 respecto a posicin Home
Buz PIN 11 'Terminal donde se conecta el altavoz piezoelctrico
Slcd_Tx PIN 10 'Terminal que recibe informacin del controlador
Slcd_Rx PIN 9 'Terminal que enva informacin al controlador
Slcd_Enable PIN 8 'Terminal que habilita lectura del teclado
Tecla VAR Byte 'Tecla leda (cdigo ASCII)

Sistema de Desarrollo para MC, modelo MDK-B28 - 204 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

'___________________________________________________________________________________
'Programa Principal
'Lectura de las teclas presionadas
DO
Principal:
Tecla = 0
SEROUT Slcd_Rx, Baudios,[Inst,BorrarLCD]
SEROUT Slcd_Rx, Baudios,["Presione 1 tecla"]
'Lectura de carcter con control de flujo
SERIN Slcd_Tx\Slcd_Enable,Baudios,[HEX2 Tecla]
'Pone en bajo la lnea Enable y espera el carcter ASCII correspondiente
'al pulsador presionado.
'presionada, he informa al usuario cual tecla oprimi
SEROUT Slcd_Rx,Baudios,[Inst,MoverCrsr+Linea_2]
SEROUT Slcd_Rx,Baudios,["Ud. Presiono: ",Tecla]
IF Tecla = "0" THEN Principal
'Si se presion una tecla emite un tono cuya frecuencia depende de cual fue
'el pulsador presionado.
FREQOUT Buz,1500,150*(Tecla-49)+800
LOOP

Oprima el pulsador S3 del mdulo SLCD-IC, en la pantalla deber aparecer el texto Ud. Presiono: 3 al
tiempo que se escucha un tono de unos 4147 Hz por el altavoz. Presione los pulsadores en forma aleatoria,
observe y escuche el resultado.

Este programa ilustra la comunicacin bidireccional (half duplex) entre dos dispositivos, pues al controlador
de la pantalla le son enviados los datos y se recibe de l el estado de los pulsadores. Observe que, en el
momento que el BS2p quiere saber el estado de los pulsadores se ejecuta la instruccin:

SERIN Slcd_Tx\Slcd_Enable,Baudios,[HEX2 Tecla]

El uso del control de flujo le indica al equipo que enva los datos (el SLCD-IC) cuando se encuentra listo para
recibir el otro dispositivo (el BS2p).

Sistema de Desarrollo para MC, modelo MDK-B28 - 205 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Objetivo: Implementar un instrumento de medicin capaz de determinar la frecuencia y ciclo til de una seal, el valor de una
resistencia y el valor de la capacitancia de un condensador. Utilizacin de mltiples bancos de programacin.

Elementos a Utilizar

Anexe al montaje de la figura No 8.11, el circuito de


(1) Sistema de Desarrollo MDK-B28 con un BS2p. la figura No. 8.13. Ajuste la salida del generador de
(1) Mdulo SLCD-BD. seales para producir una onda de 100 Hz y 50% de
(1) Condensador de: 0.1uF, 1uF, 10uF y 100uF x25 V.
(1) Resistencia de: 1 KOhms, 10 KOhms.
ciclo til.
(1) StampW (Ver 2.0 beta 2.1 o superior).

Coloque un condensador de 10F y una resistencia de 1 kOhm en los puntos identificados como Cx y Rx
respectivamente. Introduzca al microcontrolador los programas 8_4.bsp, P8_4a.bsp, P8_4b.bsp y P8_4c.bsp,
en los bancos de programacin 0,1,2,3 del BASIC Stamp 2p. Para ello, deber ubicar a todos los programas
en un mismo directorio y al abrir al programa 8_4.bsp se desplegarn todos los dems. La barra que
contiene los programas abiertos en el BASIC Stamp Editor, lucir como se muestra en la figura No. 8.12.

Programas en los Bancos 2 y 3 enlazados


con el programa que se muestra
Programa en el Banco 0 que enlaza a todos los dems entre corchetes

Programa en el Banco 1 enlazado


con el programa que se muestra
entre corchetes

Figura No. 8.12: Ejemplo de programacin en mltiples bancos de un BS2p.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 206 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

En PBASIC, cuando se programa en


varios bancos, la revisin de
sintaxis y descarga de programas al
BASIC Stamp se hace para el
programa que se est editando
actualmente y todos los dems
involucrados. Descargue y ejecute
el programa mediante el icono
y deber observar como se
transfieren todos los programas al
microcontrolador, como lo indica en
la figura No.8.14.

Figura No. 8.13: Esquema de montaje


para el ejercicio # 3.
Fuente: Elaboracin Propia.

Figura No. 8.14: Descarga de


programa a mltiples bancos de
memoria EEPROM en un BS2p.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 207 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

INICIO

Esperar Inicializacin de Pantalla

Cargar Caracteres personalizados

Mostrar Men en el LCD

Esperar durante 100ms


A que se presione algn pulsador

No Algo
Presionado

Si

CASE Tecla pulsada OF

S1 Otra
S2 S3

Ejecutar Ejecutar Ejecutar Emitir


Banco 1 Banco 2 Banco 3 Sonido

Figura No. 8.15: Diagrama de flujo del programa


del ejercicio # 3. (Men principal).
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 208 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Una vez que el programa se encuentra en ejecucin se podr ver el men que se muestra en la figura No.
8.16. Seleccione la opcin Hz para medicin de frecuencia, ver figura No. 8.17. Eleve la frecuencia a 10Khz y
vare el ciclo til, observe los resultados.

Retorne al men principal y seleccione la opcin Ohms (). Cambie la resistencia Rx de 1 K a 10 k y


observe el resultado. Vare a Rx hasta el mximo posible y determine: Cual es el valor mximo de
resistencia que se puede medir con ste equipo y Por qu ?. Repita la experiencia con el medidor de
capacitancia comenzando por el condensador de 1F disminuya hasta 0.1 F y luego aumente todo lo que le
sea posible. La medicin de variaciones de resistencia y de capacitancia por parte de un microcontrolador le
permite al mismo interpretar la informacin proveniente de gran cantidad de sensores primarios de variables
tpicas como presin, temperatura y nivel entre otras.

Figura No. 8.16: Men Principal Figura No. 8.17: Medicin de Frecuencia,
para el programa 8_4.bsp Para el programa 8_4.bsp.
Fuente: Elaboracin Propia. Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 209 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

'Programa 8_4.bsp
'Este programa tiene por objetivos:
'1) Implementar un instrumento para la medicin de frecuencia, resistencia y
'capacitancia
'2) Utilizar el teclado del mdulo SLCD-BD
'3) Manejo de mltiples bancos de programacin
'===================================================================================
'{$STAMP BS2p,P8_4a.bsp,P8_4b.bsp,P8_4c.bsp}
'La directiva $STAMP se ve modificada con la inclusin de los archivos que contienen
'los programas que estarn ubicados en los bancos 1,2 y 3
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de variables y constantes
BorrarLCD CON 1 'Limpiar pantalla
Off_LCD CON 8 'Apaga el LCD sin borrar su contenido
On_LCD CON 12 'Enciende el LCD sin cursor
CGRAM_0 CON 64 'Posicin del primer carcter en la CGRAM
Baudios CON 240 'Parmetro Baudmode de SERIN/SEROUT
Inst CON 254 'Envo de una Instruccin
Linea1 CON 128 'Posiciona al apuntador de DDRAM al inicio de la lnea 1
Linea2 CON 192 'Posiciona al apuntador de DDRAM al inicio de la lnea 2

Buz PIN 11 'Terminal donde se conecta al altavoz


Slcd_Tx PIN 10 'Terminal que recibe informacin del controlador
Slcd_Rx PIN 9 'Terminal que enva informacin al controlador
Slcd_Enable PIN 8 'Terminal que habilita lectura del teclado

Tecla VAR Byte 'Contiene el cdigo ASCII del carcter presionado


'___________________________________________________________________________________
Inicio:
PAUSE 1500
SEROUT Slcd_Rx,Baudios,[Inst,Off_LCD] : SEROUT Slcd_Rx,Baudios,[Inst,On_LCD]
SEROUT Slcd_Rx,Baudios,[Inst,BorrarLCD] : SEROUT Slcd_Rx,Baudios,[Inst,CGRAM_0]
SEROUT Slcd_Rx,Baudios,[$1B,$13,$1B,$1B,$1B,$1B,$11,$1F] 'Nmero 1
SEROUT Slcd_Rx,Baudios,[$13,$0D,$1D,$1B,$17,$0F,$01,$1F] 'Nmero 2
SEROUT Slcd_Rx,Baudios,[$13,$0D,$1D,$13,$1D,$0D,$13,$1F] 'Nmero 3
SEROUT Slcd_Rx,Baudios,[$1F,$17,$1B,$11,$1B,$17,$1F,$1F] 'Smbolo >
SEROUT Slcd_Rx,Baudios,[$00,$04,$0C,$1F,$1F,$0C,$04,$00] 'Carcter de retorno
SEROUT Slcd_Rx,Baudios,[Inst,Linea1]

Sistema de Desarrollo para MC, modelo MDK-B28 - 210 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Continuacin del Programa 8_4.bsp

DO
SEROUT Slcd_Rx,Baudios,[Inst,Linea1+3,"FUNCIONES"]
SEROUT Slcd_Rx,Baudios,[Inst,Linea2+1,0,3,"Hz ",1,3,$F4," ",2,3,$E4,"F"]
'Menu de seleccin 1= Frecuencmetro , 2=Ohmmetro, 3=Capacmetro
Tecla =" " : LOW Slcd_Enable : PAUSE 1
'Habilita el SLCD-IC para lectura del teclado
SERIN Slcd_Tx,Baudios,250,No_Tecla ,[HEX2 Tecla]
'Espera durante 100ms y si no se presiona ninguna tecla salta a la etiqueta No_Tecla
HIGH Slcd_Enable

SELECT Tecla
CASE "1": SEROUT Slcd_Rx,Baudios,[Inst,BorrarLCD]: RUN 1
'Si se presiona 1,se ejecuta el programa P8_4a.bsp
CASE "2": SEROUT Slcd_Rx,Baudios,[Inst,BorrarLCD]: RUN 2
'Si se presiona 2,se ejecuta el programa P8_4b.bsp
CASE "3": SEROUT Slcd_Rx,Baudios,[Inst,BorrarLCD]: RUN 3
'Si se presiona 3,se ejecuta el programa P8_4c.bsp
CASE ELSE
'Si se presiona cualquier otra tecla es ignorada y se emite un aviso sonoro
FREQOUT Buz,943,1194
ENDSELECT

No_Tecla:
HIGH Slcd_Enable
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 211 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

'Programa P8_4a.bsp Este programa ser ejecutado para la medicin de frecuencia


'en el rango de 100 Hz a 10kHz
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de variables y constantes
BorrarLCD CON 1 'Limpiar pantalla
Inst CON 254 'Envo de una Instruccin
Linea1 CON 128 'Posiciona al apuntador de DDRAM al inicio de la lnea 1
Linea2 CON 192 'Posiciona al apuntador de DDRAM al inicio de la lnea 2
Baudios CON 240 'Parmetro Baudmode de SERIN/SEROUT
Tbajo VAR Word 'Tiempo que dura el nivel alto
Talto VAR Word 'Tiempo que dura el nivel bajo
Freq VAR Word 'Frecuencia de la seal
Periodo VAR Word 'Perodo de la seal
DC VAR Word '% de la seal en estado alto
Resto VAR Word 'Variable auxiliar
Tecla VAR Byte 'Tecla presionada
i VAR Nib 'Variable auxiliar
Flecha VAR Bit 'Variable auxiliar
Buz PIN 11 'Terminal donde se conecta al altavoz
Fin PIN 7 'Terminal donde se aplica la seal
Slcd_Tx PIN 10 'Terminal que recibe informacin del controlador
Slcd_Rx PIN 9 'Terminal que enva informacin al controlador
Slcd_Enable PIN 8 'Terminal que habilita lectura del teclado
'___________________________________________________________________________________
'Programa Principal
PAUSE 500
DO
SEROUT Slcd_Rx,Baudios,[INST,Linea1,"FREQ: ",DEC5 Freq," Hz "]
SEROUT Slcd_Rx,Baudios,[INST,Linea2,"CU: ",DEC DC DIG (2),DEC DC DIG (1),
" % ",0,3]
'Muestra los resultados de la medicin anterior
GOSUB Flecha_Ret 'Efecto de flecha parpadeando
Tecla = " " : LOW Slcd_Enable 'Habilitacin de la lectura del teclado
SERIN Slcd_Tx,Baudios,250,No_Tecla,[HEX2 Tecla]
'Espera por 100ms si no recibe datos, salta a No_Tecla
HIGH Slcd_Enable 'Indica al SLCD-IC que no enve el estado de las teclas
IF Tecla = "1" THEN RUN 0 'Al presionar la tecla 1, retorna al programa el conte-
FREQOUT Buz,943,1194 'nido en el banco 0 de lo contrario emite un sonido

Sistema de Desarrollo para MC, modelo MDK-B28 - 212 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Continuacin del Programa P8_4a.bsp

No_Tecla:
HIGH Slcd_Enable 'Deshabilita la transmisin de datos del SLCD-IC
GOSUB Medir 'Efecta la medicin
LOOP

'===================================================================================
'SUBRUTINAS
'Rutina para efectuar medicin de Frecuencia y Ciclo til
Medir:
PULSIN Fin , 1,Talto 'Medicin de Thigh
PULSIN Fin , 0,Tbajo 'Medicin de Tlow
Periodo = Talto + Tbajo 'Perodo en unidades de PULSIN
Periodo = Periodo*/$C0 'Perodo en us
Talto = Talto*/$C0 'Thigh en us
Tbajo = Tbajo*/$C0 'Tlow en us
Freq = 16*(62500/Periodo) 'Frecuencia en Hz
GOSUB CicloUtil 'Rutina de clculo del CU
RETURN

CicloUtil:
Talto = Talto/10 : Periodo = Periodo/10 'Ajuste para evitar desbordamiento
Resto = Talto//Periodo 'No hay parte entera pues Thigh < Periodo
DC = 0 'Inicializacin de variable
FOR i=0 TO 2
Resto = Resto*10
DC = (DC*10) + (Resto/Periodo)
Resto = Resto//Periodo
NEXT
RETURN

'Rutina para producir el efecto de parpadeo en la flecha de retorno


Flecha_Ret:
Flecha = ~Flecha 'Cambiar el estado de la flecha
IF Flecha THEN
SEROUT Slcd_Rx,Baudios,[INST,Linea2+13,4] 'Mostrar Flecha
ELSE
SEROUT Slcd_Rx,Baudios,[INST,Linea2+13," "] 'Mostrar espacio en blanco
ENDIF
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 213 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

'Programa P8_4b.bsp Este programa ser ejecutado para la medicin de Resistencia


'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de variables y constantes
BorrarLCD CON 1 'Limpiar pantalla
Inst CON 254 'Envo de una Instruccin
Linea1 CON 128 'Posiciona al apuntador de DDRAM al inicio de la lnea 1
Linea2 CON 192 'Posiciona al apuntador de DDRAM al inicio de la lnea 2
Baudios CON 240 'Parmetro Baudmode de SERIN/SEROUT
Buz PIN 11 'Terminal donde se conecta al altavoz
Rpin PIN 5 'Terminal de Conexin de la resistencia a medir
Slcd_Tx PIN 10 'Terminal que recibe informacin del controlador
Slcd_Rx PIN 9 'Terminal que enva informacin al controlador
Slcd_Enable PIN 8 'Terminal que habilita lectura del teclado
Res VAR Word 'Variable para el comando RCTime
Tecla VAR Byte 'Contiene el cdigo ASCII del carcter presionado
Flecha VAR Bit 'Variable auxiliar
'___________________________________________________________________________________

Resistencia:

Res = 0

DO
SEROUT Slcd_Rx,Baudios,[INST,Linea1,"RESIST: ",DEC5 Res," ",$F4]
SEROUT Slcd_Rx,Baudios,[INST,Linea2+4,0,3,4,"SALIR"]
'Muestra el resultado de la ltima medicin efectuada
GOSUB Medir
Tecla = " " : LOW Slcd_Enable : PAUSE 1
GOSUB Flecha_ret
SERIN Slcd_Tx,Baudios,250,No_Tecla,[HEX2 Tecla]
HIGH Slcd_Enable
IF Tecla = "1" THEN RUN 0 ELSE FREQOUT Buz,943,1194
'Si se presiona la tecla 1, se retorna al men principal

No_Tecla:
HIGH Slcd_Enable
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 214 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Continuacin del Programa P8_4b.bsp

'===================================================================================
'SUBRUTINAS
'Rutina para medir resistencia mediante el comando RCTime con un condensador de 1 uF
Medir:
HIGH Rpin 'Descarga del Capacitor
PAUSE 50 'Tiempo superior a 4*RC para Rx<10000
RCTIME Rpin, 1, Res 'Medicin del tiempo de carga
Res = Res */$BF 'Conversin de unidades de RCTime a Ohmios multiplicando
RETURN 'por 0.747

'Rutina para producir el efecto de parpadeo en la flecha de retorno


Flecha_Ret:
Flecha = ~Flecha 'Cambiar el estado de la flecha
IF Flecha THEN
SEROUT Slcd_Rx,Baudios,[INST,Linea2+13,4] 'Mostrar Flecha
ELSE
SEROUT Slcd_Rx,Baudios,[INST,Linea2+13," "] 'Mostrar espacio en blanco
ENDIF
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 215 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

'Programa P8_4c.bsp Este programa ser ejecutado para la medicin de Capacitancia


'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de variables y constantes
BorrarLCD CON 1 'Limpiar pantalla
Inst CON 254 'Envo de una Instruccin
Linea1 CON 128 'Posiciona al apuntador de DDRAM al inicio de la lnea 1
Linea2 CON 192 'Posiciona al apuntador de DDRAM al inicio de la lnea 2
Baudios CON 240 'Parmetro Baudmode de SERIN/SEROUT
Buz PIN 11 'Terminal donde se conecta al altavoz
CapPin PIN 6 'Terminal de Conexin del capacitor a medir
Slcd_Tx PIN 10 'Terminal que recibe informacin del controlador
Slcd_Rx PIN 9 'Terminal que enva informacin al controlador
Slcd_Enable PIN 8 'Terminal que habilita lectura del teclado
Cap VAR Word 'Variable para el comando RCTime
Tecla VAR Byte 'Contiene el cdigo ASCII del carcter presionado
Flecha VAR Bit 'Variable auxiliar
'__________________________________________________________________________________

Capacitancia:

Cap = 0
DO
SEROUT Slcd_Rx,Baudios,[INST,Linea1," CAP: ",DEC3 Cap/1000,".", DEC1 Cap DIG 2 ,
DEC1 Cap DIG 1 ,DEC1 Cap DIG 0 ," ",$E4,"F"]
SEROUT Slcd_Rx,Baudios,[INST,Linea2+4,0,3,4,"SALIR"]
'Muestra el resultado de la ultima medicin efectuada
GOSUB Flecha_Ret
Tecla =" " : LOW Slcd_Enable : PAUSE 1
SERIN Slcd_Tx,Baudios,250,No_Tecla,[HEX2 Tecla]
HIGH Slcd_Enable
IF Tecla="1" THEN RUN 0 ELSE FREQOUT Buz,943,1194

No_Tecla:
HIGH Slcd_Enable
GOSUB Medir
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 216 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Continuacin del Programa P8_4c.bsp

'===================================================================================
'SUBRUTINAS
'Rutina para producir el efecto de parpadeo en la flecha de retorno
Flecha_Ret:
Flecha = ~Flecha
IF Flecha THEN
SEROUT 2,Baudios,[INST,Linea2+6,4]
ELSE
SEROUT 2,Baudios,[INST,Linea2+6," "]
ENDIF
RETURN

'Rutina para medir capacitancia mediante el comando RCTime


'con una resistencia de 1k Ohms
Medir:
HIGH CapPin
PAUSE 50
RCTIME CapPin, 1, Cap
IF Cap = 0 THEN
FREQOUT Buz,943,1194
SEROUT Slcd_Rx,Baudios,[INST,Linea2," FUERA DE RANGO"]
PAUSE 500
SEROUT Slcd_Rx,Baudios,[INST,Linea2," "]
PAUSE 500
ELSE
Cap = Cap*/$C0 'Expresa la medida en unidades de mF (mili-Faradios)
ENDIF
LOW CapPin
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 217 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

La instruccin RCTime del BASIC Stamp es una herramienta muy


poderosa, vamos a explicar como se utiliz en los programas de este
captulo. Supngase que se tiene una red RC como la que se muestra
en la figura No. 8.18. Si el terminal I/O se encuentra en estado alto
+5Volt, el valor de la tensin en terminales de R ser de +5v y el
condensador (al no haber diferencia de tensin entre sus terminales),
estar completamente descargado. Si se ejecuta RCTime, el terminal
del BASIC Stamp ser convertido en entrada con alta impedancia, por
cual el, condensador (C) empezar a cargarse a travs del circuito RC,
compuesto por l y la resistencia R. A medida que el condensador se
carga, la tensin entre sus terminales aumenta, esto implica una
reduccin del voltaje en la resistencia a razn de la expresin :

Figura No. 8.18: Circuito para RCTime.


VR = 5 et / RC Fuente: Elaboracin Propia.

A continuacin, RCTime medir el tiempo que le toma al condensador


1 .5
C cargarse a un nivel tal, que el voltaje de la resistencia R no sea t = RC Ln seg
interpretado como un nivel alto sino como un nivel bajo. Cuando esto 5
ocurra, el tiempo transcurrido ser de:

La instruccin RCTime en un BS2p mide en unidades de 0.9s cada una as que, sustituyendo en la
expresin anterior y evaluando, se obtiene que:
RCtime = 1,338 RC
Donde C est expresado en uF.
Ahora observe, que en el programa P8_4b.bsp se ha utilizado la siguiente instruccin: Res = Res */$BF

Tomando la ltima expresin y sustituyendo a C = 1F, al despejar a R se obtiene: R = 0.747 RCTime.


Entonces para ese valor del condensador, se debe multiplicar el resultado devuelto por RCTime por 0.747
para interpretarlo como ohmios.

De manera similar, resultar evidente que si se fija a R=1 KOhms como se efecto en el programa
P8_4c.bsp el resultado de RCtime tiene que ser ajustado multiplicndolo por 0.747 x10-3, al ser este nmero
muy difcil de manejar por el Stamp, se puede calcular la capacitancia en mF (con lo que se elimina el
termino x10 3) y utilizar los modificadores de formato y el operador DIG para presentar el resultado en la
pantalla de LCD.

Sistema de Desarrollo para MC, modelo MDK-B28 - 218 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Investigue los siguientes tpicos


1. Qu es una comunicacin serial asincrnica ?.
2. Como se lleva a cabo una comunicacin serial asincrnica entre dos equipos ?.
3. Qu es el estndar RS232 ?.
4. Qu es un puerto COM ?.
5. Qu niveles de voltaje maneja el estndar RS232 ?.
6. Qu es un conector DB9, describa sus pines de conexin ?.
7. Por qu el Pin DTR del puerto serial del PC va conectado al Pin ATN del BASIC Stamp 2p ?.
8. Cual es el rango de voltaje no permitido en el estndar RS232, explique ?.
9. Qu significa comunicacin Full Duplex ?.
10. Qu es un UART y como funciona ?.
11. Qu es un Line Driver/Receiver y como funciona ?.
12. Qu es el SLCD-IC y como trabaja ?.
13. Explique el comando SERIN y cada uno de sus operandos ?.
14. Qu es un modo de comunicacin NORMAL y un modo de comunicacin INVERTIDO ?.
15. Explique el comando SEROUT y cada uno de sus operandos ?.
16. Qu es el \Fpin del comando SEROUT y como trabaja ?.
17. Cuantos bloques de memoria de programacin tiene un BASIC Stamp 2p ?.
18. Para que se utiliza el comando RUN ?.
19. Cuantos bloques de programacin puedo ejecutar en forma simultnea en el BASIC Stamp 2p ?.

Programacin

1. En el esquema de la figura No. 8.13, muestra el circuito utilizado para la medicin de resistencia y
capacitancia en el ejercicio # 3. Notar que el valor de la resistencia de proteccin en los terminales
del BASIC Stamp de (220 Ohms), altera el resultado de la medicin. Tal efecto, puede verse en la
figura No. 8.19. En base al valor de sta resistencia, calcule el factor de correccin que deber ser
utilizado en la medicin de la resistencia para que la lectura de las magnitudes de resistencia y
capacitancias medidas no tengan error. Modifique el programa 8_4.bsp y/o los programas
necesarios para que el equipo de medicin de resistencias y capacitancias compense ese error.
NOTA: No se permite el poner en cortocircuito la resistencia de 220 Ohm.

Sistema de Desarrollo para MC, modelo MDK-B28 - 219 -


www.roso-control.com
Captulo No. 8. Comunicacin Serial Asincrnica

Figura No. 8.19: Carga de un Circuito RC.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 220 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Captulo No. 09
Medicin de Temperatura

Sistema de Desarrollo para MC, modelo MDK-B28 - 221 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Introduccin. La regulacin de la temperatura representa una de las aplicaciones ms comunes e importantes en ambientes
industriales y domsticos. De acuerdo a la aplicacin, es necesario conocer las limitaciones que tienen los equipos utilizados para su
medicin. Limitaciones que podran ser: la precisin, la velocidad de respuesta, la inmunidad al ruido, la linealidad de la medida, el
rango de operacin y la influencia de los factores ambientales, entre otros. En ste captulo se utilizar el BASIC Stamp para construir
un instrumento de medicin de temperatura por medio del circuito integrado DS1620, fabricado por DALLAS Semiconductor. Sin
embargo, haremos una pequea descripcin de otros elementos utilizados comnmente para la medicin de la temperatura.

En la mayora de los procesos industriales, la temperatura constituye una de las variables ms crticas. De su
correcta medicin y control dependern importantes factores como la calidad del producto y el consumo de
energa. Por esta razn, los captulos No. 9 y No. 10 han sido dedicados al estudio de la medicin y el
control de sta importante variable por medio del microcontrolador BASIC Stamp. Adems, el sistema de
desarrollo MDK-B28 ha sido equipado con todos los componentes necesarios para simular un sistema
trmico, en el cual se puede efectuar una multitud de experimentos.

Para realizar una correcta determinacin de la temperatura, es necesario conocer y seleccionar muy bien los
instrumentos destinados a su medicin, traduccin y procesamiento. La seleccin del dispositivo a utilizar
depender en la mayora de los casos de la propia temperatura de operacin, as como de la precisin
requerida. En ningn caso ser lo mismo efectuar una medicin para mantener agradable la temperatura de
una habitacin que para controlar una reaccin qumica o en el interior de una caldera.

Existe una gran cantidad de dispositivos electrnicos destinados a la determinacin de la temperatura. Se


presentan en diversos tipos de encapsulados y emplean diferentes principios fsicos para su operacin.
Muchos de estos sensores, entregan como salida una tensin proporcional a la temperatura a la que estn
expuestos. Debido a que la seal de salida es analgica, para poder conectarlos a un microcontrolador, es
necesario utilizar un conversor analgico a digital. Ejemplo de este tipo de sensores lo constituyen el
LM35DZ y el AD592.

El LM35DZ, proporciona una tensin que vara linealmente con la temperatura a razn de 10mV/C. Opera
en un rango de temperatura que puede ir desde 0C a +100C y su precisin es de 0.9C. Se usa
comnmente en la medicin de la temperatura ambiental. Por su parte, el circuito integrado AD592 opera
como una fuente de corriente controlada por temperatura, con una relacin 1A/K y permite trabajar en un
rango de -25C a 105C. Al ser su salida una seal de corriente, se facilita su utilizacin en ambientes
retirados de la ubicacin del microcontrolador.

Sistema de Desarrollo para MC, modelo MDK-B28 - 222 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

ALGUNOS DISPOSITIVOS UTILIZADOS PARA


DETERMINAR TEMPERATURA

TERMMETRO DE VIDRIO: Se basa en el cambio del volumen


del mercurio ante cambios de la temperatura.
TERMMETRO BI-METLICO: Basa su medicin en el
coeficiente de dilatacin de dos metales diferentes unidos, ante las
variaciones de temperatura.
TERMMETRO DE BULBO Y CAPILAR: Su medicin se
fundamenta en las deformaciones que ocurren en una espiral que
contiene una sustancia que cambia de volumen ante los cambios de
temperatura.
TERMISTORES NTC Y PTC: Son semiconductores electrnicos
que presentan variaciones rpidas y grandes de la resistencia en
sus terminales en funcin de la temperatura.
Figura No .9.1: Sensor de temperatura analgico LM35DZ. TERMOPARES: Fundamenta su funcionamiento en la f.e.m
Fuente: Revista Robots, pg SA 07, Madrid 2000. generada entre dos metales diferentes cuyas juntas se encuentran
a diferentes temperatura.

TERMISTORES

Los PTC son comnmente empleados en circuitos de disparo y alarma para la deteccin de temperaturas
elevadas en equipos industriales. Los NTC suelen usarse en la medicin y control de la temperatura. En la
figura No. 9.2, se muestran las presentaciones tpicas de estos dispositivos.

PTCs de disco y tornillo NTCs en encapsulado de vidrio

Figura No .9.2:
Termistores PTC y NTC.
Fuente:
Modificado de revista Robots,
pg SA 10, Madrid 2000.

Sistema de Desarrollo para MC, modelo MDK-B28 - 223 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Los termistores PTC poseen un coeficiente de temperatura positivo, por lo que la resistencia aumenta con la
temperatura. Por el contrario, los NTC poseen un coeficiente de temperatura negativo; es decir, su resistencia
disminuye con el aumento de la temperatura. Estas variaciones de resistencia pueden ser fcilmente medidas por
el microcontrolador BASIC Stamp. La figura No. 9.3 muestra la caracterstica de Resistencia vs. Temperatura de
ambos tipos de termistores.

PTC
NTC

R R
E E
S S
I I
S S
T T
E E
N N
C C
I I
A A

TEMPERATURA (C) TEMPERATURA (C)

Figura No. 9.3: Curvas caractersticas de termistores tipo PTC y NTC.


Fuente: Elaboracin Propia.

TERMOPAR
Otro dispositivo de uso frecuente en la medicin de temperatura en ambientes industriales, es el termopar.
Generalmente vienen encapsulados en una sonda de acero inoxidable que protege la junta de medicin. Un
ejemplo de termopar puede verse en la figura No. 9.4.

Las principales ventajas de estos dispositivos son:


Alta linealidad. Poco volumen y peso.
Elevada precisin y rangos amplios de temperatura.
Pequeo tiempo de respuesta.
Robustez en ambientes industriales.

Sistema de Desarrollo para MC, modelo MDK-B28 - 224 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Figura No. 9.4: Termopar.


Fuente: Revista Robots, pg SA 16, Madrid 2000.

Existen varios tipos de termopares. Los ms utilizados se muestran en la tabla No. 9.1.

Tipo de Termopar Metales de la Unin Temp. Mxima C Tensin mV/C


J Acero / Constantn 875 0,054
K Ni-CrNi 1260 0,040
T Cu-Constantn 400 0,045
Tabla No. 9.1: Tipos de Termopares.
Fuente: Revista Robots, pg SA 16, Madrid 2000.

De acuerdo a la aplicacin se debe escoger el termopar adecuado, en funcin de la temperatura mxima, el


ambiente al cual estar expuesto y su sensibilidad.

Existen en el mercado dispositivos de alta tecnologa, llamados termmetros digitales, capaces de conectarse
directamente a un microcontrolador y entregarle el valor de la temperatura en forma digital. Un ejemplo de
ello, es el termmetro/termostato DS1620 fabricado por DALLAS Semiconductor. Este dispositivo ha sido
incorporado en el sistema de desarrollo MDK-B28, el mismo servir de base para los experimentos de este
captulo.

Sistema de Desarrollo para MC, modelo MDK-B28 - 225 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Termmetro / Termostato Digital DS1620:


El termmetro DS1620 realiza la medicin de la temperatura
contando el nmero de ciclos de reloj de un oscilador de
referencia. Este oscilador posee un cristal sensible a la
temperatura, de esta manera, las variaciones trmicas se
traducen en cambios de la frecuencia de oscilacin. Entre
sus caractersticas destacan:

Rango de medicin desde -55C hasta 125C.


La resolucin de la medida es 8 bits (0.5 C) con un 9no
bit que indica el signo del resultado.
La conversin de temperatura se realiza en 1 segundo como mximo.
La lectura y escritura de datos se hace por medio de un bus de comunicacin 3-Wire.
Puede ser utilizado en sistemas industriales y domsticos para la medicin y control de temperatura.

Una vez que el DS1620 efecta la medicin, el valor de la temperatura se almacena en un registro interno
utilizando la representacin numrica llamada complemento a dos (en caso de ser negativa). La tabla No.
9.2 muestra la relacin entre la temperatura medida y la salida digital del DS1620.

Temperatura Salida Digital (BIN) Salida Digita (HEX)

+ 125 C 0 11111010 00FA


+ 25 C 0 00110010 0032
+ C 0 00000001 0001
+ 0 C 0 00000000 0000
- C 1 11111111 01FF
- 25 C 1 11001110 01CE
- 55 C 1 10010010 0192

Tabla No. 9.2: Interpretacin de la salida digital del DS1620.


Fuente: DS1620 Digital Thermometer and Therrmostat, Dallas Semiconductor.

Sistema de Desarrollo para MC, modelo MDK-B28 - 226 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Operacin como Termostato:

El DS1620 posee tres terminales de salida (THIGH, TLOW y TCOM) controlados trmicamente por el propio
integrado que le permiten funcionar como un termostato. Estos terminales pueden utilizarse como seales
de control o de alarma.

La salida TALTA (THIGH), se activa en el momento en que la temperatura iguale o exceda el valor contenido en
el registro interno de temperatura alta (TH) del DS1620. THIGH se mantendr activa mientras la condicin
persista. De manera similar, cuando la temperatura es igual o inferior al contenido del registro de
temperatura baja (TL), la salida TBAJA (TLOW), se activar. TLOW se mantendr activa hasta que la temperatura
sea superior al valor de TL. Finalmente, la seal TCOM se dispara si la temperatura es mayor o igual al registro
TH y se mantendr activa hasta que la temperatura sea igual o inferior a TL.

La correcta utilizacin de estos terminales permite que el DS1620 pueda ser empleado en lazos cerrados de
control de temperatura, ya sea activando mecanismos de calefaccin (TLOW) o de enfriamiento (THIGH y TCOM).

Para definir la forma de operacin del DS1620, ste cuenta con un registro de configuracin/estado. Este
registro de 8 bits, contiene 4 bits de slo lectura que indican el estado de las operaciones realizadas por el
DS1620 y 2 bits de lectura/escritura que permiten configurar tanto el modo de funcionamiento (termmetro
o termostato) como la velocidad de repeticin de las mediciones. A continuacin se detalla la funcin de
cada bit del registro de control.

DONE THF TLF NVB 1 0 CPU 1SHOT

DONE: Este bit indica si ya finaliz la conversin de temperatura.


DONE = 0 Conversin en progreso.
DONE = 1 Conversin completa.

THF: Flag de temperatura alta. Toma el valor uno (1) cuando la temperatura sea mayor o igual a TH.

TLF: Flag de temperatura baja. Toma el valor de un uno (1) lgico si la temperatura es menor o
igual que el valor de TL.

Al activarse, los bits THF y TLF mantendrn su estado hasta que se aplique un reset al DS1620.

Sistema de Desarrollo para MC, modelo MDK-B28 - 227 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

NVB: Indica el estado de la escritura en la memoria no-voltil.


NVB = 0 No se est escribiendo.
NVB = 1 Se est escribiendo en la memoria.

CPU: Permite indicar el modo de funcionamiento del DS1620.


CPU = 0 Operacin como termostato. El terminal CLK/CONV es empleado para iniciar la conversin. Si el terminal
CLK / CONV se mantiene en nivel bajo por 10 ms, el DS1620 efectuar mediciones continuamente. Para la
operacin del termostato, el terminal RST se debe mantener en nivel bajo.
CPU = 1 Indica que el dispositivo se operar como termmetro. En este caso, los terminales CLK / CONV , RST y
DQ sern utilizados para permitirle al DS1620 comunicarse con el microcontrolador por medio del protocolo 3-Wire.

1SHOT: Configura al DS1620 en modo "One-Shot" o modo continuo. Este modo de operacin es de
gran utilidad en los casos donde la lectura de la temperatura se realiza en intervalos de tiempos
definidos o cuando se requiera consumir poca energa. El estado de las salidas THIGH, TLOW y TCOM
permanecern en sus valores luego de la ltima conversin.
1SHOT = 0 Se efectuarn mediciones continuamente.
1SHOT = 1 El dispositivo realizar slo una conversin de temperatura despus de recibir una seal de inicio de
conversin.

El microcontrolador puede leer y escribir en los registros internos del DS1620 utilizando una serie de
comandos de configuracin y operacin, stos se describen en la tabla No. 9.3.

Comando Descripcin
Leer Temperatura [AAh] Lee el resultado de la ltima medicin efectuada.
Escribir TH[01h] Permite escribir en el registro de temperatura alta (TH).
Escribir TL[02h] Permite escribir en el registro de temperatura baja (TL).
Leer TH [A1h] Lee el contenido del registro de temperatura alta (TH).
Leer TL [A2h] Lee el contenido del registro de temperatura baja (TL).
Permite iniciar la conversin. En el modo One-Shot la conversin de
Iniciar Conversin [EEh] temperatura se llevar a cabo y luego el dispositivo permanecer en estado
inactivo.
Detiene la conversin. Una vez enviado al DS1620, ser completada la actual
Parar Conversin [22h] medicin de temperatura, posteriormente el dispositivo permanecer en estado
inactivo.
Escribir Configuracin [0Ch] Escribe datos en el registro de configuracin.
Leer Configuracin [ACh] Permite leer el contenido del registro de configuracin.

Tabla No. 9.3: Comandos de operacin del termmetro DS1620.


Fuente: Modificado de DS1620 Digital Thermometer and Therrmostat datasheet, Dallas Semiconductor.

Sistema de Desarrollo para MC, modelo MDK-B28 - 228 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Medicin y control de temperatura en el sistema de desarrollo MDK-B28:

Para el desarrollo de los ejercicios correspondientes a la medicin y el control de temperatura, la unidad de


desarrollo MDK-B28 incluye un sensor digital DS1620 elctricamente conectado segn se muestra en la
figura No. 9.5.

Todos los terminales del circuito integrado se encuentran disponibles en la regleta general de conexiones.
Los pines de operacin del termostato se encuentran identificados de la siguiente manera: THI (THIGH),
TLOW (TLOW) y TAL (TCOM). Debido a que estos terminales suelen asociarse con alarmas o con otros medios
de visualizacin, en el MDK-B28 se ha dispuesto de diodos LEDs que indican el estado de los mismos. El LED
L0 es del tipo bicolor, encender en color verde cuando la temperatura alcance el lmite inferior (TLOW activo)
y en rojo cuando se dispare THIGH. El LED L1 es de alto brillo y emitir una intensa luz roja mientras se
encuentre activada la salida TCOM del DS1620.

Figura No. 9.5:


Esquema de conexiones del DS1620
en el Sistema de Desarrollo MDK-B28.
Fuente: Elaboracin Propia.

El sistema de desarrollo MDK-B28 tambin posee un circuito manejador de potencia, cuya finalidad es
proporcionar una fuente de calor que pueda ser aplicada al DS1620, con la intencin de elevar su
temperatura. Controlando la seal aplicada al manejador de potencia, podemos entonces realizar un control
de temperatura tanto en lazo abierto como en lazo cerrado dentro del propio sistema de desarrollo. Esto se
har en el captulo No. 10. La figura No. 9.6 muestra los componentes que componen a este calentador. Su
operacin es muy sencilla, el estado del terminal CAL controla el encendido/apagado del calentador.

Sistema de Desarrollo para MC, modelo MDK-B28 - 229 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Figura No. 9.6: Circuito manejador de potencia


incluido en el sistema de Desarrollo MDK-B28.
Fuente: Elaboracin Propia.

Nota: Conectando un mecanismo de ventilacin entre los terminales CN5-1 y CN5-2, el driver de potencia controlar su
estado, pudindose construir un sistema de enfriamiento. Este ventilador no podr en ningn caso tener un consumo
mayor de 200 mA.

Protocolo de comunicacin 3-Wire:


OTROS PROTOCOLOS DE
Cuando el DS1620 se conecta a un microcontrolador, lo COMUNICACIN SERIAL SINCRNICA
hace por medio de una forma de comunicacin serial
sincrnica conocida como protocolo 3-Wire. Este define I2C:
un bus de 3 seales para la transferencia de
informacin: DQ (Dato E/S), RST (Reset) y CLK (Reloj). Requiere de dos seales, conocidas como SDA (Dato
Entrada/Salida) y SCL (Reloj). Se establecen
Al igual que en el protocolo SPI visto en el captulo No.
condiciones de Inicio (Start) y Fin (Stop) en el
5, toda la transferencia de datos es controlada por la intercambio de informacin.
seal de reset RST .
SPI:
Si utilizamos 3-Wire, debemos de tener en cuenta que el
Cuenta con 4 seales, conocidas como MOSI (Salida del
flujo de informacin de entrada y salida se realiza por Maestro/Entrada del Esclavo) y MISO (Entrada del
una nica lnea, lo cual, implica que sta es bi-
Maestro/Salida del Esclavo), SS (Seleccionar Esclavo)
direccional, a diferencia del protocolo SPI donde se
y SCK (Reloj). El inicio y fin de la comunicacin son
utilizan dos seales diferentes una seal de entrada y
determinada por SS , esta lnea es activa baja slo
otra para la salida.
cuando ocurre la transferencia de datos.

Sistema de Desarrollo para MC, modelo MDK-B28 - 230 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

El protocolo 3-Wire, establece que la informacin ser transmitida en paquetes o bloques de 8 bits (1 byte).
El DS1620 puede trasmitir o recibir la informacin en dos palabras de 8 bits, donde los 7 bits ms
significativos sern ignorados o llevados a cero. Sin embargo, tambin puede transmitir y recibir informacin
en bloques de 9 bits, para lo cual la seal de reset es llevada a cero despus del 9no bit.

Descripcin del protocolo 3-Wire:


La transferencia de datos entre los dispositivos es controlada por la seal de reset, esta seal se encarga de
iniciar la comunicacin cuando es llevada a un nivel lgico alto. Por medio de la misma, se finaliza la
comunicacin entre los dispositivos, cuando esta va de nuevo a un nivel lgico bajo.

La seal de reloj es producida por el dispositivo maestro. Para los esclavos, los bits de entrada son
capturados o validados durante la subida del pulso de reloj. Mientras que los bits de salida estn disponibles
para el dispositivo maestro durante en flanco de bajada del pulso de reloj y permanecen disponibles hasta el
siguiente flanco de subida en el pin CLK. Una vez terminada la transferencia de datos, el terminal de
Entrada/Salida de datos es llevado a alta impedancia.

En toda transmisin sobre el bus 3-Wire, los primeros 8 bits representan un comando o la direccin de un
registro del dispositivo esclavo y son seguidos de uno o ms bytes de datos.

RST

CLK

Data 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

Byte de Direccin/Comando Dato I/O

Figura No. 9.7: Transmisin y/o Recepcin de 1 byte va 3-Wire.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 231 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

La figura No. 9.7, muestra la transmisin/recepcin de un byte de informacin de acuerdo al protocolo 3-


Wire. Se desea leer o escribir datos que sean mayores a 1 byte, se deben enviar segn se muestra en la
figura No. 9.8.

RST

CLK

0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Data
Byte de Direccin/Comando Dato I/O Dato I/O

Figura No. 9.8: Transmisin y/o Recepcin de n bytes va 3-Wire.


Fuente: Elaboracin Propia.

Software StampPlot Pro:

El StampPlot Pro (SPP) es una poderosa interfaz entre una PC y un microcontrolador, que permite graficar y
manipular la informacin que recibe a travs del puerto serial de un computador.

En captulos anteriores, se ha utilizado al StampPlot para graficar seales tanto analgicas como digitales;
sin embargo, an no se ha profundizado en el estudio de esta til herramienta.

Debemos recordar que en principio, los comandos y los datos son enviados desde el BASIC Stamp al
StampPlot Pro de manera serial asincrnica utilizando los comandos DEBUG o SEROUT. Toda lnea de
instruccin que se enve desde el microcontrolador hacia el StampPlot, debe concluir con el carcter ASCII
13 conocido como Carrier Return o CR. Una vez que el SPP recibe una informacin puede interpretarla
como alguno de los siguientes tipos de datos:

Sistema de Desarrollo para MC, modelo MDK-B28 - 232 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Analgicos: Cualquier informacin que inicie con un nmero ser interpretada como un valor
analgico y graficada. Si se desean graficar mltiples variables, stas se envan una detrs de la
otra, separadas entre s por una coma ,.
Digitales: Cualquier informacin que inicie con el indicador % ser graficada como una seal
digital.
Instrucciones de control: Se identifican por comenzar con el carcter !. Son utilizadas para el
control y la configuracin de la grfica. Permiten efectuar cualquiera de las operaciones disponibles
en la barra de herramientas del StampPlot Pro.
Instrucciones de dibujo: Comienzan con los caracteres ~,^, y @. Pueden ser utilizadas para
dibujar formas bsicas (crculos, rectngulos o lneas), presentar imgenes en la pantalla y
reproducir archivos de sonido en formato WAV. El carcter ~ significa que la operacin que le sigue
es ejecutada una vez y no se guarda (temporal). El uso del carcter ^ indica que la operacin es
ejecutada y se guarda como un data point para ser reutilizada. Un @ antes de una instruccin de
dibujo, indica que la misma debe almacenarse como una constante, ello permite que el dibujo
permanezca en pantalla an si la grfica es refrescada o re-dibujada.
Mensajes: La informacin que no contenga ninguna de las anteriores estructuras ser tomada
como un mensaje.

Pero, la configuracin del SPP tambin puede ser introducida por medio de la ejecucin de macros. Un
macro puede contener informacin de inicializacin y detalles que definen las caractersticas de la grfica, de
esta manera, se optimiza la ejecucin de los programas y se permite manejar de manera ms eficiente la
memoria del microcontrolador. Adems, el StampPlot Pro incluye una caracterstica llamada matemtica de
macro (Macro Math) que permite efectuar operaciones aritmticas y lgicas sobre los datos entrantes. Estas
operaciones incluyen trigonometra, conversin de formatos, comparaciones, potenciacin, entre otras. La
edicin y la creacin de los macros se puede hacer con cualquier programa para edicin de texto como el
Block de notas de Microsoft Windows o con el BASIC Stamp editor de Parallax,Inc. El archivo debe ser
guardado con extensin .spm en la carpeta Macros del directorio de instalacin del StampPlot Pro V3.

El StampPlot dispone de 100 estructuras denominadas Data Markers . Estos permiten almacenar y utilizar
cualquier tipo de informacin, ya sea numrica, cadenas de texto o fechas. Los data markers tienen
asignados los nombres %m0 a %m99; y pueden ser utilizados como variables internas en el SPP para enviar
informacin hacia el microcontrolador. Cuando se grafican valores analgicos, stos se almacenan en las
variables %m0 a %m9.

En la tabla No. 9.4, se describen algunos comandos del StampPlot que sern utilizados en los siguientes
captulos.

Sistema de Desarrollo para MC, modelo MDK-B28 - 233 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Comando Descripcin
Nueva grfica. Retorna la grfica a valores por defecto. Los objetos no son
!NEWP
borrados.
!POBJ Clear Borrar el contenido del rea de objetos.
!REFR Se refresca o re-dibuja la grfica.
!SHFT ON/OFF Define que al llegar al tiempo mximo, la grfica debe desplazarse.
Define el porcentaje de la ventana que ocupa la grfica analgica. El rea
!PPER X%,Y%
restante se utilizar como rea de objetos.
!RTIM ON/OFF Permite habilitar/deshabilitar el reloj de tiempo real para el eje horizontal.
!STAT mensaje Muestra un mensaje en el recuadro estatus del usuario (idntico a ! USRS).
Captura una imagen en formato JPEG de la grfica y la almacena en un
!SNAP nombre del archivo
archivo.
De uso en Macros
!IFTH val1, comp val2, Es la estructura IF..THEN. Si la comparacin es verdadera se ejecutar la
instruccin instruccin.
!MATH Especifica que operacin matemtica se ejecutar. !MATH %m0=%m0,*,10
!MVAR nombre {= val} Asigna un nombre y opcionalmente un valor a un data marker.
!MREQ val. por defecto , Abre un cuadro de dialogo, donde se solicita al usuario que introduzca un
espera (seg), mensaje, data valor. Este valor es guardado en una de las 100 variables internas del
marker StampPlot Pro .
Interaccin con el microcontrolador
Se utiliza para leer el contenido de los data markers desde el
!READ dato
microcontrolador.

Tabla No. 9.4: Algunos comandos del StampPlot Pro.


Fuente: Modificado de StampPlot Pro V3 Control Instruction Summary, SelmaWare Solutions 2003.

Al inicializar el StampPlot Pro, se carga por defecto una barra de herramientas que provee de una gran
cantidad de opciones de configuracin y control. En las figuras No. 9.9, No. 9.10 y No. 9.11 se describe la
funcin de la mayora de estos conos.

Sistema de Desarrollo para MC, modelo MDK-B28 - 234 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Imprimir:
Imprimir:
Imprime la grfica
Abrir Archivo:
actual.
actual.
Permite
Permiteabrir
abrirmacros
macros
(*.spm)
(*.spm) yy archivos
archivosdede
grficas (*.
grficas (*.plt.)
plt). Snapshot:
Snapshot:
Crea
Creaununarchivo
archivo.jpg
jpg
.
Guardar Grfica:
Guardar Curva:
de la
Guarda
Guardalalagrfica
grfica actual
actu de lagrfica
grficaactual.
actual.
en un
en unarchivo
archivo.plt
plt.
.

Figura No. 9.9: Opciones de Archivo de la barra de herramientas del StampPlot.


Fuente: Elaboracin Propia.

Borrar Grfica:
Graficar dato:
Graficar Dato:
La grfica es borrada. La
Permite
Permite iniciar
iniciar lala graficacin
graficacinde delas
las
escala de tiempo es llevada a variables
cero.
variables que
que lleguen
lleguenpor porelelpuerto
puerto
serial.
serial.

Desplazar Grfica
Desplazar Grfica:
:
Desplaza lalagrfica
Desplaza grficaen
enunun
20%,
20%, si el valor de
de los
los datos
datos
alcanzaron
alcanzaronelelmximo
mximode de
Conectar: tiempo.
tiempo.
Se establece la conexin Detener:
Detener:
con el microcontrolador por
el puerto COM del PC. Permite detener
Permite detener oo reiniciar
reiniciarlala
grfica cuando
cuando sta
stallega
llegaalal
mximo nmero
nmero dede valores
valoresen enelel
tiempo oo nmero
nmero dede puntos
puntos aa
graficar.
graficar.

Figura No. 9.10: Opciones de graficacin de la barra de herramientas del SPP.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 235 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Duplicar span
Duplicar span de X:
Desplazar eje
Desplazar ejeY:
Y:
Permite
Permite desplazar
Permiteduplicar
duplicarel el Desplazar eje
Desplazar ejeX:
X:
Permite desplazar recorrido
recorridodel
delejeejeX.X.
el eje
el ejeYYhacia
hacia Permite
arriba.
arriba. Permitedesplazar
desplazar
el
el eje
ejeXXaalala
izquierda.
izquierda.
Duplicar span
Duplicar spande
deY:
Y
Permite
Desplazar eje
Desplazar ejeX:
X:
Permiteduplicar
duplicarel el Desplaza
recorrido
recorridodel
delejeejeY.Y. Desplazaelelejeeje
X X
a
a lala derecha.
derecha.
Dividir el
Dividir elspan
spandede
Y:Y Desplazar eje
Desplazar ejeY:
Y: Dividir span
Dividir spande
deX:
X
Divide
Divideelelrecorrido deldel
recorrido Permite
Permitedesplazar
desplazar Permite dividir el
eje
eje YYaalalamitad.
mitad. el
el eje
ejeYYhacia
hacia recorrido
recorridodel delejeejeX X
abajo.
abajo. a
a lala mitad.
mitad.

Figura No. 9.11: Opciones para el control de los ejes de la grfica.


Fuente: Elaboracin Propia.

En la parte inferior de la pantalla, aparecer siempre la barra de estado de la conexin, ver figura No. 9.12.
Ella indica si el StampPlot se encuentra o no conectado y recibiendo/transmitiendo datos. Adems, se
muestra el estado de la cola donde se almacena los datos que arriban por el puerto serial.

C (Conexin):
(Conexin): T (Transmisin):
(Transmisin):
de la
Refleja el estado de la conexin
conexin entre
entre Cambia a rojo cuando
cuando se
se estn
estn enviando
enviandodatos.
datos.
microcontrolador yyelelStampPlot.
el microcontrolador StampPlot.ElEl
conexin establecida,
verde indica conexin establecida, el
el
rojodesconexin
desconexiny yelelamarillo
amarillo Barra deprogreso
Barra de progresode
dedatos:
datos:
rojo
intentadoconexin.
intentado conexin. el porcentaje
Indica el porcentajeusado
usadodel
del
total de
total de puntos
puntosdisponibles.
disponibles.

R (Recepcin):
(Recepcin): Barra deprogreso
Barra de progresode del Stack:
la cola:
Cambia a rojo cuando
cuando se
se estn
estn recibiendo
recibiendo Indica el porcentaje
Indica el porcentajeusado
usadodedella Stack porlas
cola por lasinstrucciones
instrucciones
datos. procesadas. Si Si alcanza
alcanza un
un nivel muy alto,
alto,indica
indicaquequeelelcomputad
computador
or
Figura No. 9.11: Descripcin estlarecibiendo
de datos ms
datos ms rpido
barra de herramientas rpido delolodel
de
(Dibujo), que
que estospueden
estos
StampPlot pueden ser
Pro. ser
procesados.
Fuente: Elaboracin propia.

Figura No. 9.12: Barra de estado de la conexin.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 236 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

El Stack DATA POINTS

Los datos que llegan del microcontrolador son Los datos que llegan y son graficados se
llevados a El Stack mientras se procesan. Por almacenan en un "Data Point". Esto permite
defecto el tamao de ste Stack o fila es de 3000 guardar las grficas en archivos. Por defecto se
bytes, pero este valor puede ser ajustado. retienen 500 valores, luego de esto se re-inicializa
y se reinicia la grfica. Sin embargo, este valor
El porcentaje en uso del total del Stack se indica en puede ser cambiado. El porcentaje usado del total
barra inferior de la barra de estado que se de estos data points, se indica en la parte ms alta
encuentra en la esquina inferior izquierda de la de la barra de estatus ubicada en la esquina
pantalla, ver figura No. 9.12. inferior izquierda. Los valores analgicos, digitales
y la instrucciones que inicien con ^ son guardadas
en este tipo de estructuras.

Creacin de interfases grficas con el


StampPlot Pro: OBJETOS

Un objeto es un elemento abstracto de


StampPlot Pro V3, proporciona los comandos y programacin que define una serie de campos de
herramientas necesarias para que cualquier usuario, propiedades (datos) y un conjunto de acciones
sin ningn tipo de experiencia en programacin, asociadas a l (mtodos).
pueda crear sus propias GUIs (Graphical User
Interface). EVENTOS

Con esto se transforma de un simple programa para Un evento es alguna accin que efecta el usuario
o algn cambio en las condiciones del programa.
graficar datos, en una herramienta para crear
sistemas interactivos de monitoreo y control de La mayora de los objetos permiten definir una
aplicaciones. accin a ejecutar al momento de ocurrir un evento.
Por ejemplo, en un objeto como un botn, se
considera que ha ocurrido un evento al hacer clic
Para crear las interfases, StampPlot incluye una serie sobre el mismo.
de controladores grficos que pueden ser dispuestos
sobre el rea de objetos (ver sintaxis de la Esta caracterstica es de gran utilidad, por medio
instruccin !PPER en la tabla No. 9.4). En una simple de ella se puede conocer si el objeto ha sido
modificado, lo cual se interpreta como una accin
lnea de instruccin se define la posicin del objeto y realiza por el usuario y que debe ser atendida.
su configuracin; posteriormente todas sus
propiedades pueden ser modificadas a travs de
lneas de programacin sencillas.

Sistema de Desarrollo para MC, modelo MDK-B28 - 237 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Entre los objetos disponibles en el SPP se encuentran:


Etiqueta (oLabel): Es un texto esttico que no puede ser modificado directamente por el usuario.
Botn o pulsador (oButton): Es un botn tridimensional estndar usado para activar alguna accin
al momento de ser presionado.
Cuadro de texto (oText): Es un texto de lectura/escritura normalmente usado para intercambiar
informacin con el usuario.
Texto en desplazamiento (oBanner): Es un texto animado que permite mostrar una cadena de
caracteres desplazndose dentro de un cuadro.
Texto Desplazante (scrolling text) (oSText): Es un texto usado para mostrar informacin.
Permite desplazar las lneas del texto hacia arriba o hacia abajo.
Lista de opciones (oList): Con este objeto se puede implementar una lista de seleccin. Al hacer
doble clic sobre un tem de la lista se ejecuta una accin. Una variante de este objeto es el drop
down objet diferenciado del oList por permitir la inclusin de tems en la lista mediante el teclado.
Grfica (oPlot): Permite la creacin y actualizacin de una grfica analgica en el rea de objetos.
An cuando no incluye todas las potencialidades del rea grfica propia del StampPlot Pro, tiene la
posibilidad de ser ubicada en cualquier rea de la pantalla, permitiendo crear grficas incrustadas en
la interfaz.
Casilla de verificacin o Checkbox (oCheck): Es la tpica casilla Si o No que se encuentra en las
aplicaciones de Windows . A nivel de programacin, retorna un 1 o un 0 de acuerdo a su
estado.
Barra de deslizamiento (oHSlider /oVSlider): Los sliders son la manera ms rpida y fcil de
ajustar valores grficamente. Se les define un mximo y un mnimo, y retornan un valor que cambia
de acuerdo a la posicin seleccionada.
Barras de progreso (oHBar/oVBar): Se utilizan para indicar el progreso de una accin.
Medidor de barra y manmetro (oGauge y oMeter): Son indicadores analgicos que permiten
mostrar el valor de una variable y establecer alarmas.
Imagen (oImage): Muestra una imagen que puede ser cambiada o actualizada en cualquier
momento.
Botn de imagen (oImgBut): Este objeto es una especie de combinacin entre un checkbox y una
imagen que consiste en un interruptor grfico. Se pueden mostrar dos imgenes diferentes de
acuerdo al estado lgico del interruptor. Este estado puede ser ledo en cualquier momento y para
cambiarlo basta con hacer clic sobre la imagen.

En general, al momento de crear un objeto se deben definir parmetros tales como: ubicacin horizontal,
ubicacin vertical, altura y ancho. Dependiendo del objeto en particular, a esta lista se aaden ciertos
parmetros. En las figuras No. 9.13 y No. 9.14 se muestran las opciones requeridas para crear un
manmetro (oMeter) y un botn (oButton).

Sistema de Desarrollo para MC, modelo MDK-B28 - 238 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Altura a la cual se
desea crear el objeto.
Indica el tipo de objeto
a crear. En este caso
un Meter (medidor). Ancho
Ancho del objeto. de disco y tornillo
delPTCs
objeto. Altura del objeto.
Alarma por mximo.

Comando para
crear un objeto.
Alarma por mnimo.
Mximo dede
la la
escala.
escala.
Nombre del objeto.

Ubicacin a la izquierda Mnimo de la escala.


donde se desea crear el
objeto.

Figura No. 9.13: Creacin de objeto tipo oMeter.


Fuente: Elaboracin Propia.

Indica el tipo de Ubicacin a la izquierda


objeto a crear. En donde se desea crear el
objeto.
este caso un Button. Ancho del objeto.
Mensaje.
Comando para crear
un objeto.
Tamao de la fuente.

Altura del objeto.


Nombre del objeto.
Altura a la cual se
desea crear el objeto.

Figura No. 9.14: Creacin de objeto tipo oButton.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 239 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

El siguiente programa utiliza un macro del StampPlot Pro con la finalidad de que usted comprenda, a travs
de un ejemplo, el funcionamiento de los macro y de los objetos.

Transcriba el siguiente macro y gurdelo con el nombre de Demo.spm, en la carpeta Macro dentro del
directorio de instalacin del StampPlot Pro.

'ESTE MACRO ES UTILIZADO CON EL PROGRAMA Demo.bsp Y PROPORCIONA UN EJEMPLO SENCILLO


'DEL USO DE LOS MACROS PARA CREAR INTERFASES GRAFICAS CON EL STAMPPLOT PRO
INIT:
!NEWP 'NUEVA GRAFICA
!POBJ Clear
'BORRA EL CONTENIDO DEL AREA DE OBJETOS
!PPER 70,100 'DIVIDIR EL AREA DE GRAFICA Y OBJETOS EN RELACION 70% / 30%
!TITL DEMO.BSP - DEMOSTRACION CON MACROS Y OBJETOS
'TITULO DE LA VENTANA
!RSET 'RE-INICIALIZAR LA GRAFICA
!TMAX 50 'DEFINE TIEMPO MAXIMO EN 50 SEGUNDOS
!RTIM off 'DESHABILITA ESCALA DE TIEMPO REAL
!YLBL VALOR ANALOGICO
'TITULO DEL EJE Y
!XLBL TIEMPO
'TITULO DEL EJE X
!SPAN 0,120 'DEFINE EL RANGO DEL EJE Y
!PLOT ON 'INICIAR GRAFICA
!SHFT ON 'DESPLAZAR LA GRAFICA CUANDO ESTA LLEGUE AL MAXIMO DE TIEMPO

'************************************ ETIQUETA *************************************


'DEFINIR LOS PARAMETROS DE LA ETIQUETA
!POBJ oLabel.Etiqueta=75,98,20,5,ESTO ES UNA PRUEBA,4,15,8,1

'************************************ PULSADOR *************************************


'DEFINIR LOS PARAMETROS DEL PULSADOR
!POBJ oButton.Pulsador=80,50,10,10,Presiona!,10
!POBJ Pulsador.Tip=Presiona el pulsador!
'MENSAJE QUE SE MUESTRA AL COLOCAR EL CURSOR SOBRE EL PULSADOR

'************************************** TEXTO **************************************


'DEFINIR LOS PARAMETROS DEL CUADRO DE TEXTO
!POBJ oText.Texto=75,70,20,5, Mensaje de Prueba,3,14,10

Sistema de Desarrollo para MC, modelo MDK-B28 - 240 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del Macro Demo.spm

'************************************* BANNER **************************************


'DEFINIR LOS PARAMETROS DEL BANNER
!POBJ oBanner.banner=75,60,20,5,Demo con macros y objetos del StampPlot Pro ! ,4,15
'************************************ MEDIDOR **************************************
'MOSTRAR EL VALOR DE LA VARIABLE X ENVIADA POR EL BASIC STAMP 2P EN UN MANOMETRO
!POBJ oMeter.medidor=75,90,20,20,0,100,10,90

'************************************* BARRA ***************************************


'MOSTRAR EL VALOR DE LA VARIABLE X ENVIADA POR EL BS2P EN UNA BARRA DE PROGRESO
!POBJ oHBar.barra=75,35,20,5,100,0

'************************************ EVENTOS **************************************


'AL PRESIONAR EL PULSADOR SE MOSTRARA LA HORA EN LA BARRA DE ESTADO DEL USUARIO
!POBJ Pulsador.C=!STAT Lo pulsaste a las (RTIME)
ENDMAC 'FIN DE LA RUTINA INIT

Transcriba el siguiente programa en el editor del BASIC Stamp.

'Programa Demo.bsp
'Este programa en conjunto con el archivo Demo.spm constituyen un ejemplo de:
'1) El uso de los macros para configurar una grfica en el StampPlot
'2) La creacin y actualizacin de objetos
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
x VAR Byte 'Variable de uso general

DEBUG "!RSET",CR 'Borrar el rea de grafico


DEBUG "!UMSG 10, Bienvenido al curso de microcontroladores",CR
FOR x=0 TO 100
DEBUG "!POBJ barra=",DEC x,CR 'Actualiza el valor de x de la barra
PAUSE 250
DEBUG "!POBJ medidor=",DEC x,CR 'Actualiza el valor de x del medidor
PAUSE 250
DEBUG DEC x,CR 'Grafica la variable analgica
NEXT

Sistema de Desarrollo para MC, modelo MDK-B28 - 241 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Descargue el programa Demo.bsp en el BASIC Stamp 2p y cierre el debug terminal del editor de PBASIC.

Inicie el programa StampPlot Pro y ejecute el macro. Para hacer esto, seleccione la opcin Run Macro, que
se encuentra en el men Macros. Ahora, en el men Plot seleccione Connected.

Aplique una seal de reset al microcontrolador presionando el pulsador de RESET del sistema de desarrollo
MDK-B28.

En el macro se definen los objetos ms comnmente utilizados en el desarrollo de interfaces grficas con el
usuario. Los mismos pueden ser ubicados mediante la figura No. 9.15.

rea de objetos
Barra de estado del usuario

Medidor
Etiqueta

rea de graficacin
Cuadro de texto
Cuadro de dialogo

Banner

Pulsador

Barra de Progreso

Figura No. 9.15: Ejecucin del macro Demo.spm y el programa Demo.bsp.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 242 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

GET
Este comando permite leer el contenido de una localidad de la memoria RAM Scratchpad.

GET Direccin, {Word} Variable {,{Word} Variable}

Direccin: Es una variable, constante o expresin, por medio de la cual se especifica la direccin la
localidad de la RAM Scratchpad a leer.
Variable: Es una variable para guardar el valor ledo de la RAM Scratchpad. Puede ser un byte o
word segn se utilice o no el modificador de formato Word.

Por defecto, ste comando utiliza variables tipo byte; sin embargo, si utilizamos el modificador de variables
Word, se leern dos bytes contiguos. Cualquier registro de la memoria RAM Scratchpad puede ser ledo
desde cualquiera de los ocho bloques de programacin del BASIC Stamp 2p. La memoria RAM Scrathpad se
puede utilizar como un espacio de trabajo adicional y para el intercambio de variables entre los diferentes
bloques de programacin del BASIC Stamp.

PUT
Esta instruccin permite escribir una variable en la memoria RAM Scratchpad.

PUT Direccin, {Word} Variable {,{Word} Variable}

Direccin: Es una variable, constante o expresin que apunta al registro o localidad de la memoria
RAM Scratchpad donde se desea escribir.
Valor: Es una variable, constante o expresin a guardar en la RAM Scratchpad.

Este comando escribe un valor tipo byte en una direccin especfica del Scratchpad. Al igual que para
la lectura, el contenido de la RAM Scratchpad puede ser escrito desde cualquiera de los 8 bloques de
programacin. El modificador Word permite almacenar datos de 16 bits en organizacin Little Endian (byte
menos significativo en posicin ms baja de la memoria).

Sistema de Desarrollo para MC, modelo MDK-B28 - 243 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

POLLIN
Activa el mecanismo de Entrada/Salida por encuesta, especificando la entrada que ser encuestada y
el estado en que se le considerar activa.

POLLIN Pin , Estado

Pin: Es una variable, constante o expresin (0 - 15) que especifica el terminal de E/S que ser
encuestado.
Estado: Es una variable, constante o expresin (0 - 1) que indica cul estado lgico (0 1) ser
considerado como afirmativo al momento de efectuar la encuesta.

Cuando un terminal satisface la condicin indicada por el parmetro Estado, el BASIC Stamp puede hacer
cualquiera de las siguientes cinco acciones:

1. No hacer nada.
2. Colocar los terminales de salida (asignados con POLLOUT) a un estado especfico.
3. Ejecutar el programa contenido en un banco definido por POLLRUN.
4. Esperar, es decir, detener la ejecucin del programa hasta que sea satisfecha la condicin y el
estado del Pin sea el deseado.
5. Cualquier combinacin de los puntos 2, 3 y 4.

Los comandos de E/S por encuesta, le permiten al BASIC Stamp responder ante ciertos eventos en los
terminales de E/S, que por la velocidad con la que ocurren no pueden ser detectados normalmente. El
trmino encuesta (poll), viene del hecho de que el intrprete del BASIC Stamp, chequea constantemente el
estado de los terminales designados como entradas a encuestar. La encuesta se realiza despus de finalizar
la ejecucin de cada instruccin del programa (PBASIC).

POLLOUT
Especifica que una salida tendr un estado determinado cuando se detecte que algn Pin encuestado
satisface la condicin deseada.

POLLOUT Pin , Estado

Pin: Es una variable, constante o expresin (0 - 15) que especifica el terminal de E/S que ser
utilizado.
Estado: Es una variable, constante o expresin (0 - 1) que indica en cul estado lgico (0 1) ser
colocado al terminal Pin al ocurrir una respuesta afirmativa en la encuesta.

Sistema de Desarrollo para MC, modelo MDK-B28 - 244 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

El comando POLLOUT configurar al terminal indicado por Pin como salida y cambiar el estado de ste
segn lo indicado por el parmetro Estado.

POLLMODE
Determina qu accin ocurrir ante una respuesta afirmativa en los terminales encuestados.

POLLMODE Modo

Modo: Es una variable, constante o expresin (0 - 15) que especifica el modo de configuracin de
la encuesta.

Modos disponibles con POLLMODE


Modo Efecto
0 Desactiva la encuesta, borra las definiciones hechas con POLLIN y POLLOUT.
1 Desactiva la encuesta, guarda la configuracin de los pines de E/S utilizados.
Activa la encuesta, se efectuarn las acciones indicadas por los comandos POLLOUT y
2
POLLWAIT.
31 Activa la encuesta, se efectuar la accin indicada por el comando POLLRUN.
Activa la encuesta, se efectuarn las acciones indicadas por los comandos POLLOUT,
42
POLLWAIT y POLLRUN.
53 Borra la configuracin de terminales de entrada indicados por POLLIN.
63 Borra la configuracin de terminales de salida indicados por POLLOUT.
Borra la configuracin de los pines de entrada y salida usados por el mecanismo de encuesta
73
(Argumentos Pin de POLLIN y POLLOUT).
Igual que modos del 0 al 7 slo que los estados de las salidas quedan registrados (se
8 - 15
mantienen).

Tabla No. 9.5: Modos de encuesta.


Fuente: BASIC Stamp Manual v2.0.

1
Luego que ocurre la accin indicada por POLLRUN, queda en modo 1.
2
Luego que ocurre la accin indicada por POLLRUN, queda en modo 2.
3
Estos modos no anulan el modo previo existente. Adicionalmente, el estado de las salidas no cambia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 245 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

END
Indica el fin de un programa y coloca al BASIC Stamp en modo de baja potencia por un lapso de tiempo
indefinido.

END

El comando END coloca al microcontrolador BASIC Stamp en estado inactivo, reduciendo su consumo de
corriente a unos 400 A. De este estado slo saldr el aplicarse una seal de reset.

El estado de las salidas del BS2p se mantendr, pero ocurrir en ellas un parpadeo de aproximadamente 18
ms cada 2.3 segundos. Este parpadeo se debe a que el microcontrolador interprete del BASIC Stamp, se re-
inicializar por el desbordamiento de su Watchdog Timer. Durante el reset del microcontrolador UBICON
SX48AC, todos los terminales del BS2p se convertirn en entrada por 18 ms.

WATCHDOG TIMER
El perro guardin o Watchdog Timer de un sistema digital es un mecanismo temporizado que permite re-inicializar al
sistema en caso de que este se cuelgue. Esta situacin puede ocurrir cuando el sistema entre en un estado invlido,
ejecute una operacin incorrecta o simplemente quede atrapado en un ciclo infinito de programacin. Este reset
automtico garantiza que el sistema seguir operando y si la causa del cuelgue fue casual continuar funcionando
como si nada hubiese ocurrido.

Sistema de Desarrollo para MC, modelo MDK-B28 - 246 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Objetivos: Utilizar al sensor digital de temperatura DS1620 para construir un termmetro digital. Emplear el sistema de Entrada/Salida
por encuesta del microcontrolador BS2p para controlar el estado del calentador del sistema de desarrollo MDK-B28.

Elementos a Utilizar
Identifique el driver de potencia del sistema de
(1) BASIC Stamp 2p. desarrollo MDK-B28. Conecte una resistencia de 220
(1) DS1620 Termmetro/Termostato digital. Ohm entre los terminales del conector CN5, segn lo
(1) Driver de potencia del sistema MDK-B28. mostrado en la figura No. 9.16. Es de suma importancia
(1) Banco de pulsadores. que esta resistencia quede al ras del circuito integrado
(1) Resistencia de 220 Ohms 1/4 W.
(1) LED Bicolor. DS1620 para que pueda transferirle calor de manera
(1) Mdulo SLCD-DB. adecuada.
(1) Cable serial DB9.
(1) StampW (v2.0 beta 2.1 o superior). Arme el circuito de la figura No. 9.17.

Figura No. 9.16:


Foto del DS1620 con la
resistencia de calefaccin
instalada.
Fuente: Elaboracin Propia.

Figura No. 9.17:


Diagrama de conexiones
utilizado para el Ejercicio # 1.
Fuente: Elaboracin propia.

Trascriba y descargue al BASIC Stamp el cdigo de los programas 9_1.bsp y P9_1a.bsp.

Sistema de Desarrollo para MC, modelo MDK-B28 - 247 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

'Programa 9_1.bsp
'Este programa permite configurar al DS1620 como termmetro y mostrar el valor de
'la temperatura con una resolucin de 0.5C, por medio del SLCD-BD
'===================================================================================
'{$STAMP BS2p,P9_1a.bsp}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
BorrarLCD CON 1 'Limpiar pantalla
Linea_1 CON 128 'Mover cursor a la primera lnea de la pantalla
Linea_2 CON 192 'Mover cursor a la segunda lnea de la pantalla
Baudios CON 240 'Velocidad de la Transmisin/Recepcin
Inst CON 254 'Indica al SLCD-IC la presencia de una instruccin
TempA CON 80 'Temperatura alta = 40 C (Alarmas del DS1620)
TempB CON 60 'Temperatura baja = 30 C
LeerTemp CON $AA 'Comando para leer temperatura
InicioConv CON $EE 'Comando para iniciar conversin
ConfiTerm CON $0A 'Configurar al DS1620 como termmetro
ConfiTalta CON $01 'Comando para configurar temperatura alta
ConfiTbaja CON $02 'Comando para configurar temperatura baja
EscrRegCon CON $0C 'Escribir en el registro de configuracin del DS1620

MOSI PIN 0 'Terminal de Datos del bus 3-Wire conectado a P0


SCK PIN 1 'Seal de reloj
SS2 PIN 2 'Seal de habilitacin del DS1620
Slcd_Rx PIN 3 'Terminal de envo de datos al SLCD-IC conectado a P3
PB1 PIN 5 'Pulsador para encender y apagar el calentador
CAL PIN 8 'Terminal conectado al calentador

Temp VAR Word 'Variable que contiene la temperatura


Modo VAR Nib 'Indica el modo de operacin
ConfInicial VAR Bit 'Configuracin inicial cuando se produce un reset del BS2p
'___________________________________________________________________________________
'Programa Principal:
IF ConfInicial = 0 THEN 'Verifica que es la primera ejecucin luego del Reset
POLLIN PB1,0 'Configura al sistema de Entrada/Salida por encuesta para
POLLOUT CAL,1 'detectar cuando el pulsador PB1 es presionado. Si esto
POLLRUN 1 'ocurre, se enciende el calentador y se ejecuta P9_1a.bsp
Modo = 0 'Indica el modo de operacin
POLLMODE 12 'Configura el modo de la encuesta del BASIC Stamp
ConfInicial = 1 'Indica que ya se ha configurado la E/S por encuesta (poll)
LOW CAL 'Apaga el calentador

Sistema de Desarrollo para MC, modelo MDK-B28 - 248 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del programa 9_1.bsp

GOSUB Init_Temp
ENDIF
SEROUT Slcd_Rx,Baudios,[Inst,BorrarLCD] 'Borra el contenido de la pantalla LCD

DO
GOSUB Leer_Temperatura 'Mide la temperatura
SEROUT Slcd_Rx,Baudios,[Inst,Linea_1,"CAL = ",BIN1 CAL]
SEROUT Slcd_Rx,Baudios,[Inst,Linea_2,"TEMP = ",DEC2 (Temp/2),".",DEC(Temp.BIT0*5)]
'El estado del pulsador se muestra en pantalla junto con la temperatura
LOOP

'===================================================================================
'SUBRUTINAS
'Rutina que permite inicializar el DS1620 como termmetro
Init_Temp:
HIGH SS2 'Habilitar al DS1620
SHIFTOUT MOSI,SCK,LSBFIRST,[EscrRegCon,ConfiTerm] 'Enviar el Byte de config.
GOSUB Rset 'Reset luego del 9no Bit
SHIFTOUT MOSI,SCK,LSBFIRST,[ConfiTAlta,TempA\9] 'Enviar alarma por alta temp.
GOSUB Rset 'al registro TH
SHIFTOUT MOSI,SCK,LSBFIRST,[ConfiTbaja,TempB\9] 'Enviar alarma por baja temp.
GOSUB Rset 'al registro TL
SHIFTOUT MOSI,SCK,LSBFIRST,[InicioConv] 'Iniciar la medicin
LOW SS2 'Finalizar la comunicacin
RETURN
'Rutina para colocar en estado bajo la seal SS2 luego de leer o escribir el 9no bit
Rset:
LOW SS2 : PAUSE 5 : HIGH SS2
RETURN

'Rutina para leer la temperatura


Leer_Temperatura:
HIGH SS2 'Habilitar al DS1620
SHIFTOUT MOSI,SCK,LSBFIRST,[LeerTemp] 'Enviar comando de leer la temperatura
SHIFTIN MOSI,SCK,LSBPRE,[Temp\9] 'Recibir la temperatura
LOW SS2 'Deshabilitar al DS1620
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 249 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

'Programa P9_1a.bsp
'Este programa se ejecuta cada vez que el terminal P5 (conectado al pulsador PB1)
'coincide con el estado indicado por el parmetro Pin de la instruccin POLLIN.
'Permite controlar el estado del calentador "sin interferir" con el programa
'encargado de medir la temperatura
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
CAL PIN 8 'Terminal conectado al calentador
PB1 PIN 5
Temp VAR Word 'Variable que contiene la temperatura
Modo VAR Nib 'Indica el modo operacin
ConfInicial VAR Bit 'Configuracin inicial cuando se produce un reset del BS2p
'___________________________________________________________________________________
POLLMODE 0 'Desactiva el sistema de E/S por encuesta
SELECT Modo 'Selecciona de acuerdo al modo de operacin activo
CASE 0 'El pulsador fue presionado, CAL est encendido y se
POLLIN PB1,1 'programa al sistema de E/S por encuesta para que se
Modo = 1 'ejecute P9_1a cuando se libere al pulsador PB1
CASE 1 'Cuando este modo est activo, CAL est encendido y PB1 se
POLLIN PB1,0 'ha liberado. Cuando se oprima nuevamente a PB1, CAL
deber
POLLOUT CAL,0 'apagarse.
Modo = 2
CASE 2 'Cuando este modo est activo, CAL est apagado y PB1
acaba
POLLIN PB1,1 'de ser presionado. Cuando se libere a PB1 se ejecutar el
Modo = 3 'programa P9_1a.
CASE 3 'El modo 3 configura al sistema de E/S por encuesta para
POLLIN PB1,0 'responder como al principio, esperando que PB1 sea
POLLOUT CAL,1 'presionado para encender al calentador
Modo = 0
ENDSELECT
POLLRUN 1 'Activar la accin a ejecutarse
PAUSE 10 'Pausa para evadir posibles rebotes

POLLMODE 12 'Configura el modo de la encuesta para que las acciones de


'POLLOUT y POLLRUN sean ejecutadas y las salidas retenidas
RUN 0 'Luego regresa al programa principal de medicin de temp.

Sistema de Desarrollo para MC, modelo MDK-B28 - 250 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

En la primera lnea de la pantalla LCD debe mostrarse el texto CAL = , seguido del estado binario (1 0)
del calentador conectado en P8. En la lnea inferior del LCD, debe observarse el valor de la temperatura.
Presione el pulsador PB1 para que encienda el calentador del sistema y observe como aumenta la
temperatura. Al alcanzar los 40C, los diodos LED L0 y L1 se encendern indicando que la temperatura
medida ha alcanzado el valor almacenado en el registro TH. Cuando esto ocurra, presione nuevamente a
PB1 para apagar al calentador.

En este programa se observa la simplicidad de la medicin de temperatura con el DS1620, en los ejercicios
posteriores se utilizarn algunas de las caractersticas adicionales de este verstil componente.

El microcontrolador BASIC Stamp no soporta ningn tipo de interrupciones; sin embargo, los comandos de
entrada/salida por encuesta (poll) ofrecen un mecanismo de E/S mucho ms rpido que el tradicional lazo
iterativo preguntando por el estado de los pines. En este ejercicio, se ha logrado controlar el estado de una
salida sin tener que aadir una sola lnea de cdigo al programa principal que se est ejecutando.

Sistema de Desarrollo para MC, modelo MDK-B28 - 251 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Objetivo: Construir un sistema de medicin de temperatura avanzado utilizando al microcontrolador BS2p y al termmetro digital
DS1620.

Elementos a Utilizar El objetivo de este ejercicio es implementar mejoras al


sistema de medicin creado en el ejercicio anterior.
Entre las modificaciones propuestas se busca incluir:
(1) BASIC Stamp 2p.
(1) DS1620 Termmetro/Termostato digital.
1. Un men en la pantalla LCD que permita ajustar el
(1) Driver de potencia del sistema MDK-B28.
(1) Banco de pulsadores. contenido de los registros TH y TL.
(1) Resistencia de 220 Ohmios 1/4 W. 2. Definir una alarma sonora que indique cuando se ha
(1) Mdulo SLCD-DB. excedido el mximo de temperatura permitido.
(1) Cable serial DB9.
3. Una animacin de un termmetro en la LCD, en la
(1) Software LCD Character Creador.
(1) Cable de programacin DB9. que se observe como aumenta o disminuye la
(1) StampW (v2.0 beta 2.1 o superior). temperatura.

Anexe al circuito del ejercicio anterior, el montaje de la figura No. 9.18.

Figura No. 9.18:


Diagrama de conexiones requeridas para el
termmetro digital avanzado.
Fuente: Elaboracin Propia.

Transcriba los programas 9_2.bsp, P9_2a.bsp y P9_2b.bsp y descargelos al BASIC Stamp.

'Programa 9_2.bsp
'En este programa se implementa un termmetro digital avanzado con el DS1620
'El programa 9_2.bsp se encarga de medir la temperatura, ajustar los registros TH y
'TL del DS1620 con los mximos valores deseados en la escala del termmetro y de
'ajustar la temperatura de alarma

Sistema de Desarrollo para MC, modelo MDK-B28 - 252 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del programa 9_2.bsp

'===================================================================================
'{$STAMP BS2p,P9_2a.bsp,P9_2b.bsp}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
Leer_Temp CON $AA 'Comando para leer Temperatura
InicioC CON $EE 'Comando para iniciar las conversiones
Config CON $0A 'Configurar como termmetro
Config_Alta CON $01 'Comando para configurar Temperatura Alta
Config_Baja CON $02 'Comando para configurar Temperatura Baja
EscrRegCon CON $0C 'Escribir en el registro de configuracin del DS1620
ConfiTerm CON $0A 'Configurar al DS1620 como termmetro
BorrarLCD CON 1 'Limpiar pantalla
Linea_1 CON 128 'Posiciona al cursor de la LCD al inicio de la lnea 1
Linea_2 CON 192 'Posiciona al cursor de la LCD al inicio de la lnea 2
Baudios CON 240 'Velocidad de la transmisin de SEROUT = 9600 bsp, no inv.
Inst CON 254 'Indica al SLCD-IC que se le enviar una instruccin
CGRAM_0 CON 64 'Posicin del primer carcter de la CGRAM
CGRAM_1 CON 72 'Posicin del segundo carcter de la CGRAM
CGRAM_2 CON 80 'Posicin del tercer carcter de la CGRAM
Temp_Medicion CON 0 'Banco que contiene al programa 9_2.bsp
Animacion CON 1 'Banco que contiene al programa P9_2a.bsp
Cal_Control CON 2 'Banco que contiene al programa P9_2b.bsp
CurProg CON 0 'Localidad de la SCRAM que guarda programa en ejecucin al
'momento de activarse la accin de POLLRUN

MOSI PIN 0 'Seal para la transferencia de datos


SCK PIN 1 'Seal de reloj
SS2 PIN 2 'Seal de habilitacin
Slcd_Rx PIN 3 'Seal de recepcin del SCLD-IC
PB1 PIN 4 'Pulsador PB1
PB2 PIN 5 'Pulsador PB2
PB3 PIN 6 'Pulsador PB3
PB4 PIN 7 'Pulsador PB4
CAL PIN 8 'Terminal conectado al calentador

'Variables comunes a los programas 9_2.bsp y P9_2b.bsp


Temp VAR Word 'Var. que contiene la temperatura
TempA VAR Byte 'Var. que contiene el mximo de la escala del termmetro
TempB VAR Byte 'Var. que contiene el mnimo de la escala del termmetro
TAlarma VAR Byte 'Var. de alarma por alta temperatura

Sistema de Desarrollo para MC, modelo MDK-B28 - 253 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del programa 9_2.bsp

'Variables usadas slo por el programa 9_2.bsp


Aux VAR Byte 'Variable auxiliar
Limit_Sup VAR Byte 'Limite superior e inferior usados en la subrutina que
Limit_Inf VAR Byte 'ajusta la escala del termmetro y la temp. de alarma
Pulsador VAR Byte(3) 'Espacio de trabajo de los pulsadores
ConfInicial VAR Bit 'Configuracin inicial cuando se produce un reset del BS2p

'Variables usadas slo por el programa P9_2a.bsp


Dir VAR Word 'Direcciones de la EEPROM
Pantalla VAR Byte 'Pantalla de la animacin
Caracter VAR Byte 'Var. usada para extraer los caracteres que componen la
'animacin, de la EEPROM del BS2p a la CGRAM del LCD
'Variables usadas slo por el programa P9_2b.bsp
Modo VAR Nib 'Configuracin de la encuesta
Programa VAR Nib 'Almacena el programa que se estaba ejecutando cuando se
'activ el POLLRUN
'___________________________________________________________________________________
'Programa Principal:
Inicio:
PUT CurProg,Temp_Medicion 'Indica que el programa 9_2.bsp se est ejecutando
IF ConfInicial=0 THEN 'Ajusta los valores predeterminados luego de un reset
LOW SS2 : PAUSE 500 : HIGH SS2 'Reset del DS1620 e inicializacin de la
SEROUT Slcd_Rx,Baudios,[INST,BorrarLCD] 'pantalla LCD en blanco
TempA = 80 : TempB = 30 : TAlarma = 66 'TH=40C,TL=15C,Alarma=33C, por defecto
LOW CAL 'Apaga el calentador
POLLIN PB4,0 'Configura al sistema de Entrada/Salida por encuesta para
POLLOUT CAL,1 'que detecte cuando el pulsador PB1 es presionado. Se
POLLRUN Cal_Control 'encender el calentador y se ejecutar P9_2b.bsp
Modo = 0 'Indica el modo de operacin
POLLMODE 12 'Configura el modo de la encuesta del BASIC Stamp
ConfInicial = 1 'Indica que ya se ha ejecutado al menos 1 vez
GOSUB InitTemp 'Inicializa al DS1620
ENDIF
LOW SS2 'Mantiene al DS1620 en estado inactivo
GOSUB Leer_Temperatura 'Leer el valor de temperatura
BUTTON PB3,0,255,0,Pulsador(2),0,No_PB3 'Si se oprime a PB3 -> configuracin
GOSUB Configurar 'Rutina que configura las escalas y alarma del termmetro
No_PB3:
RUN Animacion 'Ejecutar el programa P9_2a.bsp que contiene la animacin

Sistema de Desarrollo para MC, modelo MDK-B28 - 254 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del programa 9_2.bsp

'===================================================================================
'SUBRUTINAS
'Rutina para configurar temperatura alta, baja y alarma
Configurar:
SEROUT Slcd_Rx,Baudios,[INST,BorrarLCD] 'Borra el contenido de la LCD
GOSUB Cargar_Flecha 'Carga de caracteres propios
SEROUT Slcd_Rx,Baudios,[INST,Linea_1,"Temp Alta ",DEC3 (TempA/2),$DF,"C"]
SEROUT Slcd_Rx,Baudios,[INST,Linea_2,"PB1",0,$20,"PB2",1,$20,"PB3",2]
'Muestra temp alta y el men de opciones
Aux = TempA : Limit_Sup = 250 : Limit_Inf = TempB+1 'Define las cotas para TH
GOSUB Ajustar 'Rutina para ajustar el valor de TH
TempA = Aux 'Guarda el nuevo valor de TH
SEROUT Slcd_Rx,Baudios,[INST,Linea_1+5,"Baja ",DEC3 (TempB/2),$DF,"C"]
'Muestra la Temp Baja y el men de opciones
Aux = TempB : Limit_Sup = TempA : Limit_Inf = 0 'Define las cotas para TL
GOSUB Ajustar 'Rutina para ajustar el valor de TL
TempB=Aux 'Guarda el nuevo valor de TL
GOSUB Ajustar_DS1620 'Enva los nuevos valores al DS1620
SEROUT Slcd_Rx,Baudios,[INST,Linea_1," Alarma ",DEC3 (TAlarma/2),$DF,"C"]
SEROUT Slcd_Rx,Baudios,[INST,Linea_2+13," Ex"]
'Menu de configuracin de alarma sonora
Limit_Sup = TempA : Limit_Inf = TempB + ((TempA-TempB) */ $C0)
Aux = TAlarma MIN Limit_Inf MAX Limit_Sup
'Ajusta un mx. igual a TH y un mn. igual al 75% del SPAN entre Talta y Tbaja
GOSUB Ajustar '
TAlarma = Aux 'Ajustar Alarma
SEROUT Slcd_Rx,Baudios,[INST,BorrarLCD]
RETURN

'Rutina para ajustar el valor de la variable Aux entre Limit_Sup y Limit_Inf


Ajustar:
SEROUT Slcd_Rx,Baudios,[INST,Linea_1+10,DEC3 (Aux/2),$DF,"C"]
BUTTON PB1,0,100,20,Pulsador(0),0,Np_PB1
IF Aux = Limit_Inf THEN Aux = Limit_Sup ELSE Aux = Aux - 1
'Decrementar la variable Aux, si est llega al mnimo se asigna el limite superior
Np_PB1:
BUTTON PB2,0,100,20,Pulsador(1),0,Np_PB2
IF Aux => Limit_Sup THEN Aux = Limit_Inf ELSE Aux = Aux + 1
'Incrementar la variable Aux, si est llega al mximo se asigna el limite inferior
Np_PB2:
BUTTON PB3,0,255,0,Pulsador(2),0,Ajustar 'Si se presiona PB3, retornar
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 255 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del programa 9_2.bsp

'Rutina para guardar las flechas en la CGRAM


Cargar_Flecha:
SEROUT Slcd_Rx,Baudios,[Inst,CGRAM_0,$0E,$0E,$0E,$0E,$0E,$1F,$0E,$04]
SEROUT Slcd_Rx,Baudios,[Inst,CGRAM_1,$04,$0E,$1F,$0E,$0E,$0E,$0E,$0E]
SEROUT Slcd_Rx,Baudios,[Inst,CGRAM_2,$00,$04,$06,$1F,$1F,$06,$04,$00]
RETURN

'Rutina que permite leer el valor de temperatura del DS1620


Leer_Temperatura:
HIGH SS2 'Iniciar transferencia de datos
SHIFTOUT MOSI,SCK,LSBFIRST,[Leer_Temp] 'Comando para leer la temperatura
SHIFTIN MOSI,SCK,LSBPRE,[Temp\9] 'Leer la temperatura
LOW SS2 'Desactivar al DS1620
RETURN

'Rutina para producir un Reset al DS1620


Rset:
LOW SS2 : PAUSE 10 : HIGH SS2
RETURN

'Rutina que permite inicializar el DS1620 como termmetro


InitTemp:
HIGH SS2 'Habilitar escritura
SHIFTOUT MOSI,SCK,LSBFIRST,[EscrRegCon,ConfiTerm]'Enviar el Byte de configuracin
GOSUB Rset 'Pulso de Reset
SHIFTOUT MOSI,SCK,LSBFIRST,[Config_Alta,TempA\9] 'Enviar la temperatura alta
GOSUB Rset 'Pulso de Reset
SHIFTOUT MOSI,SCK,LSBFIRST,[Config_Baja,TempB\9] 'Enviar la temperatura baja
GOSUB Rset 'Pulso de Reset
SHIFTOUT MOSI,SCK,LSBFIRST,[InicioC] 'Iniciar la conversin
LOW SS2 'Finalizar la comunicacin
RETURN

'Rutina para configurar los registros TH y TL del DS1620


Ajustar_DS1620:
HIGH SS2 'Habilitar al DS1620
SHIFTOUT MOSI,SCK,LSBFIRST,[Config_Alta,TempA\9] 'Enviar a TH el valor de TempA
GOSUB Rset 'Pulso de Reset
SHIFTOUT MOSI,SCK,LSBFIRST,[Config_Baja,TempB\9] 'Enviar a TL el valor de TempB
GOSUB Rset 'Pulso de Reset
LOW SS2 'Deshabilitar al DS1620
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 256 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

'Programa P9_2a.bsp
'Este programa se encarga de presentar un termmetro animado en la pantalla LCD.
'De acuerdo a la temperatura, se ir rellenando el interior del termmetro
'==================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'__________________________________________________________________________________
'Pantalla #0
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$02,$04,$08,$08,$08,$04,$03 : DATA $08,$08,$04,$02,$02,$02,$04,$18
'Pantalla #1
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$02,$04,$08,$08,$08,$07,$03 : DATA $08,$08,$04,$02,$02,$02,$1C,$18
'Pantalla #2
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$02,$04,$08,$08,$0F,$07,$03 : DATA $08,$08,$04,$02,$02,$1E,$1C,$18
'Pantalla #3
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$02,$04,$08,$0F,$0F,$07,$03 : DATA $08,$08,$04,$02,$1E,$1E,$1C,$18
'Pantalla #4
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$02,$04,$0F,$0F,$0F,$07,$03 : DATA $08,$08,$04,$1E,$1E,$1E,$1C,$18
'Pantalla #5
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$02,$07,$0F,$0F,$0F,$07,$03 : DATA $08,$08,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #6
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $02,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $08,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #7
DATA $03,$02,$02,$02,$02,$02,$02,$02 : DATA $18,$08,$08,$08,$08,$08,$08,$08
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #8
DATA $03,$02,$02,$02,$02,$02,$02,$03 : DATA $18,$08,$08,$08,$08,$08,$08,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #9
DATA $03,$02,$02,$02,$02,$02,$03,$03 : DATA $18,$08,$08,$08,$08,$08,$18,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #10
DATA $03,$02,$02,$02,$02,$03,$03,$03 : DATA $18,$08,$08,$08,$08,$18,$18,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #11
DATA $03,$02,$02,$02,$03,$03,$03,$03 : DATA $18,$08,$08,$08,$18,$18,$18,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18

Sistema de Desarrollo para MC, modelo MDK-B28 - 257 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del programa P9_2a.bsp

'Pantalla #12
DATA $03,$02,$02,$03,$03,$03,$03,$03 : DATA $18,$08,$08,$18,$18,$18,$18,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #13
DATA $03,$02,$03,$03,$03,$03,$03,$03 : DATA $18,$08,$18,$18,$18,$18,$18,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla #14
DATA $03,$03,$03,$03,$03,$03,$03,$03 : DATA $18,$18,$18,$18,$18,$18,$18,$18
DATA $03,$03,$07,$0F,$0F,$0F,$07,$03 : DATA $18,$18,$1C,$1E,$1E,$1E,$1C,$18
'Pantalla de Alarma
UltimaP DATA $1C,$1D,$1D,$1D,$1D,$1D,$1D,$1D
DATA $07,$17,$17,$17,$17,$17,$17,$17
DATA $1D,$1D,$1B,$17,$17,$17,$1B,$1C
UltimoC DATA $17,$17,$1B,$1D,$1D,$1D,$1B,$07
'__________________________________________________________________________________
'Declaracin de Variables y Constantes
BorrarLCD CON 1 'Limpiar pantalla
Linea_1 CON 128 'Posiciona al cursor de la LCD al inicio de la lnea 1
Linea_2 CON 192 'Posiciona al cursor de la LCD al inicio de la lnea 2
Baudios CON 240 'Velocidad de la transmisin de SEROUT = 9600bsp, no inv.
Inst CON 254 'Indica al SLCD-IC que se le enviar una instruccin
CGRAM_0 CON 64 'Posicin del primer carcter de la CGRAM
CGRAM_1 CON 72 'Posicin del segundo carcter de la CGRAM
CGRAM_2 CON 80 'Posicin del tercer carcter de la CGRAM
CGRAM_4 CON 96
Temp_Medicion CON 0 'Banco que contiene al programa 9_2.bsp
Animacion CON 1 'Banco que contiene al programa P9_2a.bsp
CurProg CON 0 'Localidad de la SCRAM que guarda programa en ejecucin al
'momento de activarse la accin de POLLRUN

MOSI PIN 0 'Seal para la transferencia de datos


SCK PIN 1 'Seal de reloj
SS2 PIN 2 'Seal de habilitacin
Slcd_Rx PIN 3 'Seal de recepcin del SCLD-IC
Buz PIN 11
'Variables comunes a los programas 9_2.bsp y P9_2b.bsp
Temp VAR Word 'Var. que contiene la temperatura
TempA VAR Byte 'Var. que contiene el mximo de la escala del termmetro
TempB VAR Byte 'Var. que contiene el mnimo de la escala del termmetro
TAlarma VAR Byte 'Var. de alarma por alta temperatura

Sistema de Desarrollo para MC, modelo MDK-B28 - 258 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del programa P9_2a.bsp

'Variables usadas slo por el programa 9_2.bsp


Aux VAR Byte 'Variable auxiliar
Limit_Sup VAR Byte 'Limite superior e inferior usados en la subrutina que
Limit_Inf VAR Byte 'ajusta la escala del termmetro y la temp. de alarma
Pulsador VAR Byte(3) 'Espacio de trabajo de los pulsadores
ConfInicial VAR Bit 'Configuracin inicial cuando se produce un reset del BS2p

'Variables usadas slo por el programa P9_2a.bsp


Dir VAR Word 'Direcciones de la EEPROM
Pantalla VAR Byte 'Pantalla de la animacin
Caracter VAR Byte 'Var. usada para extraer los caracteres que componen la
'animacin, de la EEPROM del BS2p a la CGRAM del LCD
'Variables usadas slo por el programa P9_2b.bsp
Modo VAR Nib 'Configuracin de la encuesta
Programa VAR Nib 'Almacena el programa que se estaba ejecutando cuando se
'activ el POLLRUN

'___________________________________________________________________________________
'Programa Principal:
Inicio:
PUT CurProg,Animacion 'Indica que se esta ejecutando el programa P9_2a.bsp
Pantalla = 0 'Valor por defecto
IF Temp > TempB THEN Pantalla = 14 * (Temp-TempB) / (TempA-TempB)
'Escala la variable pantalla de 0 a 14 de acuerdo a la temperatura
GOSUB Cargar_Pantalla 'Carga de la pantalla correspondiente segn temperatura
GOSUB Actualizar_Pantalla 'Muestra la pantalla adecuada
GOSUB Actualizar_Texto 'Actualizacin de mensajes
RUN Temp_Medicion 'Ejecuta el programa 9_2b.bsp

'===================================================================================

'SUBRUTINAS
'Rutina para guardar en la CGRAM la pantalla a mostrar
Cargar_Pantalla:
SEROUT Slcd_Rx,Baudios,[INST,CGRAM_0]'Iniciar en carcter 0 de CGRAM
FOR Dir = 32*Pantalla TO (32*(Pantalla+1)-1)
READ Dir,Caracter : SEROUT Slcd_Rx,Baudios,[Caracter]
'Buscar en la EEPROM los bytes que componen los 4 caracteres que forman al
'termmetro animado
NEXT
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 259 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del programa P9_2a.bsp

'Rutina que permite actualizar la pantalla


Actualizar_Pantalla:
'Enva los caracteres. almacenados en la CGRAM en el orden adecuado
SEROUT Slcd_Rx,Baudios,[INST,Linea_1+13,0,1] 'Parte superior del termmetro
SEROUT Slcd_Rx,Baudios,[INST,Linea_2+13,2,3] 'Parte inferior del termmetro
RETURN

'Rutina para actualizar el mensaje mostrado en la pantalla


Actualizar_Texto:
SEROUT Slcd_Rx,Baudios,[INST,Linea_2+6,DEC3 Temp/2,$20,$DF,"C"]'Muestra la temp.
SEROUT Slcd_Rx,Baudios,[INST,Linea_1,"Conf",INST,Linea_2,"PB3"]'actual
SELECT Pantalla 'Muestra el texto correspondiente de acuerdo a la temp.
CASE 0 TO 2
SEROUT Slcd_Rx,Baudios,[INST,Linea_1+5] : SEROUT Slcd_Rx,Baudios,[" Frio "]
CASE 3 TO 6
SEROUT Slcd_Rx,Baudios,[INST,Linea_1+5] : SEROUT Slcd_Rx,Baudios,[" Tibio "]
CASE 7 TO 10
SEROUT Slcd_Rx,Baudios,[INST,Linea_1+5] : SEROUT Slcd_Rx,Baudios,["Caliente"]
CASE ELSE
SEROUT Slcd_Rx,Baudios,[INST,Linea_1+5] : SEROUT Slcd_Rx,Baudios,["Muy Cal"]
IF Temp>=TAlarma THEN GOSUB Alarma
'Dispara una alarma sonora y visual si se sobrepasa la temperatura
ENDSELECT
RETURN
'Rutina para generar la animacin de la alarma
Alarma:
SEROUT Slcd_Rx,Baudios,[INST,CGRAM_0]
'Muestra al termmetro parpadeando y el mensaje "Peligro"
FOR Dir = 0 TO 31
READ Dir,Caracter : SEROUT Slcd_Rx,Baudios,[Caracter]
NEXT
SEROUT Slcd_Rx,Baudios,[INST,CGRAM_4]
FOR Dir = UltimaP TO (UltimoC+7)
READ Dir,Caracter : SEROUT Slcd_Rx,Baudios,[Caracter]
NEXT
GOSUB Actualizar_Pantalla
FREQOUT Buz,943,1194
SEROUT Slcd_Rx,Baudios,[INST,Linea_1+4," Peligro "]
SEROUT Slcd_Rx,Baudios,[INST,Linea_1+13,4,5] 'Actualiza parte alta del Termmetro
SEROUT Slcd_Rx,Baudios,[INST,Linea_2+13,6,7] 'Actualiza parte baja del Termmetro
FREQOUT BUZ,943,1061
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 260 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

'Programa P9_2b.bsp
'Este programa se ejecuta cada vez que el terminal P7 (conectado al pulsador PB4)
'coincide con el estado indicado por el parmetro Pin de la instruccin POLLIN
'Permite controlar el estado del calentador "sin interferir" con los dems programas
'en ejecucin
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
BorrarLCD CON 1 'Limpiar pantalla
Baudios CON 240 'Velocidad de la transmisin de SEROUT = 9600 bsp, no inv.
Inst CON 254 'Indica al SLCD-IC que se le enviar una instruccin
Cal_Control CON 2 'Banco que contiene al programa P9_2b.bsp
CurProg CON 0 'Localidad de la SCRAM que guarda programa en ejecucin al
'momento de activarse la accin de POLLRUN

MOSI PIN 0 'Seal para la transferencia de datos


SCK PIN 1 'Seal de reloj
SS2 PIN 2 'Seal de habilitacin
Slcd_Rx PIN 3 'Seal de recepcin del SCLD-IC
PB4 PIN 7 'Terminal para encender/apagar al calentador
CAL PIN 8 'Terminal conectado al calentador
Buz PIN 11

'Variables comunes a los programas 9_2.bsp y P9_2b.bsp


Temp VAR Word 'Var. que contiene la temperatura
TempA VAR Byte 'Var. que contiene el mximo de la escala del termmetro
TempB VAR Byte 'Var. que contiene el mnimo de la escala del termmetro
TAlarma VAR Byte 'Var. de alarma por alta temperatura

'Variables usadas slo por el programa 9_2.bsp


Aux VAR Byte 'Variable auxiliar
Limit_Sup VAR Byte 'Limite superior e inferior usados en la subrutina que
Limit_Inf VAR Byte 'ajusta la escala del termmetro y la temp. de alarma
Pulsador VAR Byte(3) 'Espacio de trabajo de los pulsadores
ConfInicial VAR Bit 'Configuracin inicial cuando se produce un reset del BS2p

'Variables usadas slo por el programa P9_2a.bsp


Dir VAR Word 'Direcciones de la EEPROM
Pantalla VAR Byte 'Pantalla de la animacin
Caracter VAR Byte 'Var. usada para extraer los caracteres que componen la
'animacin, de la EEPROM del BS2p a la CGRAM del LCD

Sistema de Desarrollo para MC, modelo MDK-B28 - 261 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del programa P9_2b.bsp

'Variables usadas slo por el programa P9_2b.bsp


Modo VAR Nib 'Configuracin de la encuesta
Programa VAR Nib 'Almacena el programa que se estaba ejecutando cuando se
'activ el POLLRUN
'___________________________________________________________________________________

POLLMODE 0 'Desactiva el sistema de E/S por encuesta

GET CurProg,Programa 'Obtener el programa que se esta ejecutando anteriormente


SELECT Modo 'Selecciona de acuerdo al modo de operacin activo
CASE 0 'Modo 0: CAL se enciende por accin del POLLOUT y se
POLLIN PB4,1 'ejecutar P9_2b.bsp cuando se libere al pulsador PB4
Modo = 1 '
CASE 1 'Modo 1: CAL se mantiene encendido y PB4 ha sido liberado
POLLIN PB4,0 'Se programa al sistema de E/S por encuesta para apagar
POLLOUT CAL,0 'a CAL y ejecutar a P9_2b.bsp si se oprime a PB4
Modo = 2
CASE 2 'Modo 2: CAL se apaga por accin del POLLOUT y se
POLLIN PB4,1 'ejecutar P9_2b.bsp cuando se libere a PB4
Modo = 3 '
CASE 3 'Modo 3: CAL se mantiene apagado y PB4 ha sido liberado
POLLIN PB4,0 'El sistema de E/S por encuesta retorna a su configuracin
POLLOUT CAL,1 'inicial esperando a que PB4 sea presionado para encender
Modo = 0 'al calentador
ENDSELECT
POLLRUN Cal_Control 'Activar la accin a ejecutarse (correr programa P9_2b.bsp
PAUSE 10 'Pausa para evadir posibles rebotes
POLLMODE 12 'Configura el modo de la encuesta para que las acciones de
'POLLOUT y POLLRUN sean ejecutadas y las salidas retenidas
SEROUT Slcd_Rx,Baudios,[INST,BorrarLCD] 'Borra el contenido de la LCD

RUN Programa 'Regresa al programa que se estaba ejecutando

La lgica de funcionamiento de estos programas se describe a travs de los diagramas de flujo de las figuras
No. 9.19. y No. 9.20.

Sistema de Desarrollo para MC, modelo MDK-B28 - 262 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

INICIO (0)

No Si INICIO (1)
Cargar configuracin
No Si
por defecto? Temp > Tmin
Configurar Encuesta
en Modo 0 Apuntar a Determinar pantalla
pantalla inicial a mostrar
InitTemp

Cargar_Pantalla
Leer_Temperatura

Actualizar_Pantalla
No Si
PB3=1
Actualizar_Texto

Configurar
RUN 0

RUN 1

InitTemp Configurar
Leer_Temperatura
Ajustar los valores de
Configurar el DS1620 Leer temperatura
Temp. Alta y baja del
como termmetro e del DS1620
DS1620. Ajustar la
inicializar la conversin
alarma
RETURN
RETURN RETURN

Figura No. 9.20: Diagramas de flujo para los programas del ejercicio # 2.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 263 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Actualizar_Pantalla Cargar_Pantalla Actualizar_Texto

Mostrar la pantalla Cargar la pantalla de Actualizar los mensajes


correspondiente acuerdo al valor de segn el valor de la
temperatura temperatura

RETURN
RETURN RETURN

INICIO (2)

Desactivar sistema de
E/S por encuesta

CASE Modo OF

0 3
1 2
POLLIN PB4, 0 POLLIN PB4, 0
POLLIN PB4,1 POLLIN PB4, 1
POLLOUT CAL, 0 POLLOUT CAL, 1
POLLRUN 2 POLLRUN 2
POLLRUN 2 POLLRUN
Ejecutar programa Ejecuta Cal_Control
Ejecuta Cal_Control Ejecuta Cal_Control
Cal_Control (2) si (2) si PB4 = 1
(2) y apaga calentador (2) y enceder
PB4 = 1 Modo = 3
Modo = 1 si PB4 = 0 calentador si PB4 = 0
Modo = 2 Modo = 0

Activar sistema de
E/S por encuesta

RUN programa que


estaba en ejecucin

Figura No. 9.20: Diagramas de flujo para los programas del ejercicio # 2.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 264 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Aplique una seal de reset al BASIC Stamp, como resultado, en la LCD se mostrar una pantalla similar a la
de la figura No. 9.21.

Figura No. 9.21: Pantalla mostrada en la LCD en el ejercicio # 2.


Fuente: Elaboracin Propia.

Para lograr el funcionamiento segn el enunciado planteado, se dividi este problema en tres partes:

1. La medicin de la temperatura. Que es realizada por medio del programa 9_2.bsp.


2. Mostrar la animacin por la pantalla de LCD. Esta tarea le corresponde al programa P9_2a.bsp.
3. Y finalmente la configuracin de la encuesta, realizado por medio del programa P9_2b.bsp.

Por lo tanto, en lugar de resolver un problema relativamente complejo, se debern simplemente solventar
tres problemas independientes de un menor grado de dificultad. De esta manera logramos facilitar el trabajo
de programacin, concentrndonos en desarrollar un algoritmo para dar solucin a un problema ms simple.

Estos programas no deben resultar confusos, ya que, los programas 9_2.bsp y P9_2b.bsp, son similares a
los del ejercicio anterior y el programa P9_2a.bsp, es parecido a la animacin del captulo No. 7.

Ya conocida la funcionalidad de cada uno de los programas, presione el pulsador PB3 para entrar al men de
configuracin y as ajustar la temperatura alta. Este ajuste se realizar a travs de los pulsadores PB1 y PB2,
que permiten disminuir o aumentar la variable a configurar. La temperatura alta (contenido del registro TH
del DS1620) est limitada entre TL y 125 C. Luego de ajustar la temperatura alta, presione PB3 para
configurar la temperatura baja (TL). El valor de TL se encuentra acotado entre 0C y la temperatura alta,
para evitar que el usuario pueda definir una temperatura baja superior a la temperatura alta. Finalmente,
configure la alarma presionando PB3, el mnimo valor de temperatura que puede ajustarse corresponde al
75% de la escala del termmetro.

Si la temperatura supera el valor de la alarma, se ejecutar la rutina Alarma que se encuentra en el


programa P9_2a.bsp. Durante esta rutina se puede cambiar el estado del calentador presionado PB4 y
cambiar la configuracin del termmetro pulsando PB3.

Sistema de Desarrollo para MC, modelo MDK-B28 - 265 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Cuando la encuesta es activada, se ejecuta el programa contenido en el bloque 2. La Scratchpad RAM


permite guardar el bloque de programacin que se estaba ejecutando al momento de ocurrir el evento, para
luego de realizar las acciones necesarias volver a este programa.

La memoria RAM Scratchpad, representa una va muy til para el intercambio de informacin entre bloques
de programacin distintos. Otra forma de compartir valores es manteniendo la misma definicin de variables
en todos los bloques de programacin, como se evidencia en los programas utilizados en este ejercicio. Sin
embargo, si bien esto representa una solucin muy simple se est desaprovechando la memoria del BASIC
Stamp.

Sistema de Desarrollo para MC, modelo MDK-B28 - 266 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Objetivos: Utilizar el microcontrolador BASIC Stamp 2p y el circuito integrado DS1620 para desarrollar un termmetro digital.
Implementar por medio del StampPlot Pro una interfaz grfica con el usuario.

Elementos a Utilizar
Arme el circuito que se observa en la figura No. 9.22.

(1) BASIC Stamp 2p. Para este ejercicio se dispone del programa 9_3.bsp.
(1) Cable serial DB9. Antes de transcribirlo en el editor del BASIC Stamp,
(1) DS1620. observe cual es su lgica de funcionamiento. Como
(1) LED Bicolor.
(1) StampW (v2.0 beta 2.1 o superior). referencia puede utilizar los diagramas de flujo que se
(1) Programa StampPlot Pro. muestran en la figura No. 9.23 de la pgina siguiente.

Figura No. 9.22: Esquema de conexiones para el ejercicio # 3.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 267 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

INICIO
InitTemp

Inicializar variables
Configura el DS1620 e
inicializar la conversin
InitTemp

No Si
RETURN
Pulsador=1
Apagar Encender
Calentador Calentador
Ajustar

Leer y verificar los


valores introducidos Ajustar
por el usuario

Leer_Temperatura
RETURN
Actualizar

Leer_Temperatura
Actualizar

Leer el resultado del al


conversin del Ds1620 Actualizar objetos y
graficar temperatura

RETURN RETURN

Figura 9.23: Diagrama de Flujo para el programa del ejercicio # 3.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 268 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Transcriba el siguiente macro y gurdelo con el nombre Macro_9_3.spm, en la carpeta Macro del StampPlot.

'ESTE MACRO SE EJECUTA CONJUNTAMENTE CON EL PROGRAMA 9_3.bsp Y PERMITE CONFIGURAR


'LOS PARAMETROS DEL TERMOMETRO DIGITAL
INIT:
!NEWP 'NUEVA GRAFICA
!POBJ clear
'BORRAR OBJETOS
!RSET 'INICIALIZAR GRAFICA
!PPER 60,100 'DIVIDIR AREA DE GRAFICA Y OBJETOS
!TITL TERMOMETRO
'TITULO DE LA VENTANA
!TMAX 50 'DEFINIR TIEMPO MAXIMO
!RTIM off 'DESHABILITAR ESCALA DE TIEMPO REAL
!YLBL Temperatura
'ETIQUETA DEL EJE Y
!XLBL Tiempo
'ETIQUETA DEL EJE X
!SPAN -55,125 'RANGO DEL EJE Y
!PLOT ON 'HABILITAR GRAFICACION
!SHFT ON 'DESPLAZA DE LA GRAFICA CUANDO ESTA LLEGUE AL MAX. DE
TIEMPO
!MENU OFF 'DESHABILITAR EL MENU
!TBAR OFF 'DESHABILITAR LA BARRA DE HERRAMIENTAS
!POBJ oBACK=7 'DEFINIR EL COLOR DEL AREA DE OBJETOS
!FLSH ON
!ECHO ON
!MATH %m14=0

'************************************* MEDIDOR *************************************


'MEDIDOR QUE INDICA EL VALOR DE LA TEMPERATURA
!POBJ oGauge.Medidor=61,97,10,90,50,80,55,75

'************************************* SWITCHES ************************************


'OBJETOS QUE PERMITEN REFLEJAR EL ESTADO (ENCENDIDO/APAGADO) DE LA ALARMA Y DEL
'CALENTADOR
!POBJ oImgBut.sw1=78,92,6,14,comp\switch_0.jpg,0,comp\switch_1.jpg
!POBJ sw1.Tip=Activar/Desactivar Alarma
!POBJ oImgBut.sw2=74,20,7,13,comp\Led_wood_0.jpg,1,comp\Led_wood_1.jpg
!POBJ sw2.Tip=Activar/Desactivar calentador

Sistema de Desarrollo para MC, modelo MDK-B28 - 269 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del Macro: Macro_9_3.spm

'************************************ PULSADORES ***********************************


'PULSADORES PARA INTRODUCIR LA CONFIGURACION DEL TERMOMETRO DIGITAL, AL PRESIONAR EL
'PULSADOR CORRESPONDIENTE
!POBJ oButton.Boton1=78,70,12,5,TEMP ALTA,10
!POBJ Boton1.tip=Ajustar Temperatura alta

!POBJ oButton.Boton2=78,58,12,5,TEMP BAJA,10


!POBJ Boton2.tip=Ajustar Temperatura baja
!POBJ oButton.Boton3=78,46,13,5,ALARMA ALTA,10
!POBJ Boton3.tip=Ajusta Alarma por Temperatura Alta
!POBJ oButton.Boton4=78,36,13,5,ALARMA BAJA,10
!POBJ Boton4.tip=Ajusta Alarma por Temperatura Baja

'************************************ ETIQUETAS ************************************


'ETIQUETAS PARA INDICAR LOS VALORES ACTUALES DE CONFIGURACION DEL TERMOMETRO
!POBJ oLabel.Etiqueta=77,97,15,5,Alarma,7,0,12,0
!POBJ oLabel.Etiqueta1=71,75,20,5,Temperatura alta(TH),7,0,8,0
!POBJ oLabel.Etiqueta2=71,63,20,5,Temperatura baja(TL),7,0,8,0
!POBJ oLabel.Etiqueta3=71,51,14,5,Alarma Alta,7,0,8,0
!POBJ oLabel.Etiqueta4=71,40,14,5,Alarma Baja,7,0,8,0
!POBJ oLabel.Etiqueta5=84,92,7,14,ON \n \n OFF,7,0,12,1
!POBJ oLabel.Etiqueta6=90,75,4,4,0,7,0,8,0
!POBJ oLabel.Etiqueta7=90,63,4,4,0,7,0,8,0
!POBJ oLabel.Etiqueta8=90,51,4,4,0,7,0,8,0
!POBJ oLabel.Etiqueta9=90,40,4,4,0,7,0,8,0
!POBJ oLabel.Etiqueta10=74,29,20,10,Temperatura actual,7,0,8,0
!POBJ oLabel.Etiqueta11=90,29,4,4,0,7,0,8,0
!POBJ oLabel.Etiqueta12=81,20,15,13,\n CALENTADOR,7,0,12,1

!POBJ Etiqueta.Font=TAHOMA,10,0,0 'DEFINIR FUENTE A UTILIZAR


!POBJ Etiqueta2.Font=TAHOMA,7,1,0
!POBJ Etiqueta1.Font=TAHOMA,7,1,0
!POBJ Etiqueta3.Font=TAHOMA,7,1,0
!POBJ Etiqueta4.Font=TAHOMA,7,1,0
!POBJ Etiqueta5.Font=TAHOMA,10,0,0
!POBJ Etiqueta6.Font=TAHOMA,7,1,0
!POBJ Etiqueta7.Font=TAHOMA,7,1,0
!POBJ Etiqueta8.Font=TAHOMA,7,1,0
!POBJ Etiqueta9.Font=TAHOMA,7,1,0
!POBJ Etiqueta10.Font=TAHOMA,10,1,0
!POBJ Etiqueta11.Font=TAHOMA,10,1,0
!POBJ Etiqueta12.Font=TAHOMA,10,0,0

Sistema de Desarrollo para MC, modelo MDK-B28 - 270 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del Macro: Macro_9_3.spm

'************************************* EVENTOS *************************************


'DEFINIR LOS EVENTOS A EJECUTAR
!POBJ Medidor.c=!IFTH (sw1),=,1,~PwAV gbell.wav
'SI LA ALARMA SE ACTIVA SE REPRODUCE EL SONIDO gbell.wav
!POBJ sw2.C=!MATH %m14=((ME))
'SI EL sw2 CAMBIA DE ESTADO EN %m14 SE GUARDA EL VALOR ACTUAL (1 O 0)
!POBJ Boton1.C=!MREQ %m10,10,Temperatura Alta\n en Grados Centigrados (MAX. 125),10
'SI EL Boton1 ES PRESIONADO SE MUESTRA UN CUADRO DE DIALOGO, POR MEDIO DEL CUAL
'SE LE PIDE AL USUARIO EL VALOR DE TEMPERATURA ALTA
!POBJ Boton2.C=!MREQ %m11,10,Temperatura Baja\n en Grados Centigrados (MIN. 0),11
!POBJ Boton3.C=!MREQ %m12,10,Alarma Alta\n en Grados Centigrados,12
!POBJ Boton4.C=!MREQ %m13,10,Alarma Baja\n en Grados Centigrados,13
ENDMAC

Transcriba el programa 9_3.bsp, y descargelo en el BASIC Stamp 2p.

'Programa 9_3.bsp
'El objetivo de este programa es mostrar la implementacin del DS1620 como
'termmetro digital con un rango de -55C a 125C y desarrollar una interfaz grfica
'a travs del programa StampPlot Pro que sirva para visualizar la temperatura.
'Este programa trabaja conjuntamente con el macro Macro_9_3.spm
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
Leer_Temp CON $AA 'Comando para leer Temperatura
InicioC CON $EE 'Comando para iniciar las conversiones
Config_Alta CON $01 'Comando para configurar Temperatura Alta
Config_Baja CON $02 'Comando para configurar Temperatura Baja
EscrRegCon CON $0C 'Escribir en el registro de configuracin del DS1620
ConfiTerm CON $0A 'Configurar como termmetro
SinPin CON 16 'Terminal SIN (2) del BASIC Stamp
Baudios CON 240 'No-Invertido, 9600 bsp, sin paridad
Tiempo_Espera CON 1250 'Tiempo de espera cuando se piden datos al StampPlot
MOSI PIN 0 'Seal para la transferencia de datos
SCK PIN 1 'Seal de reloj
SS2 PIN 2 'Seal de habilitacin
CAL PIN 8 'Terminal conectado al calentador

Sistema de Desarrollo para MC, modelo MDK-B28 - 271 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del programa 9_3.bsp

Alarma_Baja VAR Word 'Alarma por Alta temperatura


Alarma_Alta VAR Word 'Alarma por Baja temperatura
Temp VAR Word 'Variable que contiene la temperatura
TempA VAR Word 'Variable que contiene la temperatura Alta
TempB VAR Word 'Variable que contiene la temperatura Baja
Aux VAR Word 'Variables auxiliares
Aux1 VAR Word
Limit_Sup VAR Word 'Var. de config. usadas para verificar que los valores
Limit_Inf VAR Word 'introducidos por el usuario no excedan ciertos limites
Aux2 VAR Bit 'Variable auxiliar
Pulsador VAR Bit 'Estado del pulsador
Signo VAR Bit 'Variable de signo de la temperatura
'___________________________________________________________________________________
'Programa Principal:'Inicio:
Inicio:
GOSUB InitTemp 'Inicializar el conversor
DEBUG "!RSET",CR 'Borrar grfica
TempA=40 : DEBUG "!MATH %m10=",DEC 40,CR 'Inicializar los valores de temp.
TempB=20 : DEBUG "!MATH %m11=",DEC 20,CR 'alta, temp. baja, alarma alta y baja
Alarma_Alta=35: DEBUG "!MATH %m12=",DEC 35,CR
Alarma_Baja=25: DEBUG "!MATH %m13=",DEC 25,CR

DO
DEBUG "!READ %m14",CR 'Lee del StampPlot edo del pulsador
SERIN SinPin, Baudios, Tiempo_Espera , No_Datos, [DEC Pulsador] : PAUSE 250
IF Pulsador=1 THEN HIGH CAL ELSE LOW CAL 'Encender/Apagar calentador
GOSUB Ajustar 'Configurar parmetros del termmetro
GOSUB Leer_Temperatura 'Leer temperatura del DS1620
GOSUB Actualizar 'Actualizar objetos y grafica del PC
No_Datos:
LOOP

'===================================================================================
'SUBRUTINAS

'Rutina que permite ajustar el termmetro digital


Ajustar:
DEBUG "!READ %m10",CR : 'Leer temperatura mxima del termmetro
SERIN SinPin, Baudios, Tiempo_Espera , No_Datos, [SDEC Aux] : PAUSE 250
Aux2 = 0
Limit_Sup = 125 : Limit_Inf = -55 'Establecer limite superior y limite inferior
GOSUB Verificar : TempA = Aux 'Verifica que la TempA no exceda los limites

Sistema de Desarrollo para MC, modelo MDK-B28 - 272 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del programa 9_3.bsp

DEBUG "!READ %m11",CR 'Leer temperatura mnima del termmetro


SERIN SinPin, Baudios, Tiempo_Espera , No_Datos, [SDEC Aux] : PAUSE 250
Aux2 = 1 'Actualizar bandera
Limit_Sup=TempA : Limit_Inf = -55
GOSUB Verificar : TempB = Aux 'Verifica que la TempB no exceda los limites
GOSUB Configurar 'Ajustar los registros TH y TL del DS1620
DEBUG "!READ %m12",CR 'Leer Alarma alta
SERIN SinPin, Baudios, Tiempo_Espera , No_Datos, [SDEC Alarma_Alta] : PAUSE 250
DEBUG "!READ %m13",CR 'Leer Alarma baja
SERIN SinPin, Baudios, Tiempo_Espera , No_Datos, [SDEC Alarma_Baja] : PAUSE 250
RETURN

'Verificar que el valor de temperatura alta no sobrepase los limites establecidos


'por Limit_Sup y Limit_Inf
Verificar:
Aux1=Limit_Sup-Aux ' Si el resultado es positivo Aux no es superior a Limit_Sup
IF Aux1.BIT15=0 THEN Aux1=Aux-Limit_Inf : IF Aux1.BIT15=0 THEN Fin
'Adicionalmente, si Aux < Limit_Inf dicho valor se encuentra en el rango definido
DEBUG "!UMSG 3, Temperatura fuera de rango",CR : Aux=Aux1
'Si la temperatura est fuera del rango del DS1620, se mantendr el ltimo valor de
'configuracin aceptado y se debe actualizar el data marker correspondiente
IF Aux2=0 THEN
DEBUG "!MATH %m10=",SDEC TempA,CR : Aux=TempA
ELSE
DEBUG "!MATH %m11=",SDEC TempB,CR : Aux=TempB
ENDIF
Fin:
RETURN
'Rutina para leer la temperatura del DS1620
Leer_Temperatura:
HIGH SS2 :SHIFTOUT MOSI,SCK,LSBFIRST,[Leer_Temp]'Comando para leer temperatura
SHIFTIN MOSI,SCK,LSBPRE,[Temp\9] : LOW SS2 'Recibir la temperatura
GOSUB Obtener_Temperatura 'Llevar la temperatura a C
RETURN

'Rutina para obtener la temperatura en grados centgrados


Obtener_Temperatura:
Signo = Temp.BIT8
IF Signo =1 THEN Temp = 512-Temp 'Restar de la base del DS1620 2^9
Temp = Temp/2 'para obtener el complemento a dos
IF Signo=1 THEN Temp = - Temp 'Colocar el signo correspondiente
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 273 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Continuacin del programa 9_3.bsp

'Rutina para colocar en estado bajo la seal SS2 luego de leer o escribir el 9no bit
Rset:
LOW SS2 : PAUSE 10: HIGH SS2
RETURN

'Rutina que permite inicializar el DS1620 como termmetro


InitTemp:
HIGH SS2 'Iniciar comunicacin
SHIFTOUT MOSI,SCK,LSBFIRST,[ConfiTerm,ConfiTerm] : GOSUB Rset 'Enviar config.
SHIFTOUT MOSI,SCK,LSBFIRST,[Config_Alta,2*TempA\9] : GOSUB Rset 'Enviar temp. alta
SHIFTOUT MOSI,SCK,LSBFIRST,[Config_Baja,2*TempB\9] : GOSUB Rset 'Enviar temp. baja
SHIFTOUT MOSI,SCK,LSBFIRST,[InicioC] : GOSUB Rset
LOW SS2 'Finalizar comunicacin
RETURN

'Rutina para configurar la temperatura alta y baja


Configurar:
HIGH SS2 'Iniciar la comunicacin
SHIFTOUT MOSI,SCK,LSBFIRST,[Config_Alta,2*TempA\9] : GOSUB Rset 'Enviar temp. alta
SHIFTOUT MOSI,SCK,LSBFIRST,[Config_Baja,2*TempB\9] : GOSUB Rset 'Enviar temp. baja
LOW SS2 'Finalizar comunicacin
RETURN

Actualizar:
DEBUG "!POBJ Medidor=",SDEC Temp,",",SDEC TempB,",",SDEC TempA,",",",",CR
DEBUG "!POBJ Medidor=",",",",",",",SDEC Alarma_Baja,",",SDEC Alarma_Alta,CR
'Actualizar los parmetros del medidor
DEBUG "!POBJ Etiqueta6=",SDEC TempA,CR 'Actualiza las etiquetas de
DEBUG "!POBJ Etiqueta7=",SDEC TempB,CR 'Temperatura alta, baja,
DEBUG "!POBJ Etiqueta8=",SDEC Alarma_Alta,CR 'Alarma alta y baja
DEBUG "!POBJ Etiqueta9=",SDEC Alarma_Baja,CR
DEBUG "!POBJ Etiqueta11=",SDEC Temp,CR 'Mostrar la temperatura actual
PAUSE 250
DEBUG SDEC Temp,CR 'Grfica analgica
PAUSE 100
RETURN

Para ejecutar el macro, seleccione la opcin Run Macro del men Macros de la barra de herramientas del
StampPlot. Como resultado, se obtendr una interfaz similar a la de la figura No. 9.24.

Sistema de Desarrollo para MC, modelo MDK-B28 - 274 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Figura No. 9.24: Interfaz grfica elaborada con StampPlot Pro para el ejercicio # 3.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 275 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Para conectar el BASIC Stamp con el StampPlot Pro, presione el botn izquierdo del ratn y seleccione
Connect del men contextual. Como se muestra en la figura No. 9.25. Posteriormente, aplique un reset al
microcontrolador.

Figura No. 9.25:


Men contextual.
Fuente: Elaboracin Propia

Figura No .9.26:
Configuracin de la escala de
medicin del termmetro.
Fuente: Elaboracin Propia.

El BASIC Stamp estar constantemente comunicndose con StampPlot Pro pidiendo los valores de
temperatura alta, temperatura baja, alarma por alta, alarma por baja y el estado del pulsador, contenidos en
las variables %m10, %m11, %m12, %m13 y %m14, respectivamente. Con los valores de temperatura alta
y baja, se ajustarn los registros TH y TL del DS1620, mientras que con los valores de alarmas se ajustan
las alarmas propias del medidor.

Para ajustar cada uno de los parmetros del termmetro, basta con hacer clic sobre el botn
correspondiente. Como resultado se mostrar un cuadro de dialogo, donde se le solicita al usuario el valor
correspondiente, ver figura No. 9.26.

Si se est recibiendo informacin del StampPlot de manera serial por el puerto de programacin, es
necesario colocar una pausa de 100 milisegundos (como mnimo) para permite limpiar el echo del dato
recibido, evitando errores en la comunicacin. Esto se aprecia en las siguientes lneas de cdigo:

DEBUG "!READ %m10",CR


SERIN SinPin, Baudios, Tiempo_Espera , No_Datos, [SDEC Aux]
PAUSE 250

Sistema de Desarrollo para MC, modelo MDK-B28 - 276 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

El medidor permite activar alarmas por medio de eventos. Las acciones a ejecutar como respuesta a estos,
se realizarn cuando el valor mostrado en el medidor supere los lmites establecidos como mnimo y
mximo. En el Macro_9_3.spm, se ha dispuesto de un objeto tipo image object que simula un interruptor y
permite habilitar o deshabilitar la alarma. Si el interruptor se encuentra en la posicin ON y la temperatura
supera alguna de las alarmas del medidor, se reproduce el archivo de sonido gbell.wav.

El calentador ser encendido o apagado, segn sea el caso, al hacer clic sobre un objeto tipo image
object, que representa un LED. Si el LED se encuentra encendido el calentador estar activado.

Conocido cada uno de elementos que integran la interfaz, ajuste los parmetros del termmetro. Por
ejemplo, coloque una temperatura baja inferior a la temperatura mostrada en el medidor y observe el
estado del LED bicolor del sistema MDK-B28. Ahora, coloque una temperatura alta mayor a la indicada por el
medidor y observe el estado de los LEDs conectados a las seales THIGH, TLOW y TCOM del DS1620. Ajuste
un valor de alarma por alta temperatura cercano al valor de la temperatura actual, active la accin de la
alarma y el calentador. Preste atencin al sonido que se genera cuando la temperatura excede el lmite
superior.

Si se introduce un valor de temperatura que supere los valores limites del DS1620 (-55 C a 125 C), se
mostrar un mensaje como el de la figura No. 9.27 y se mantendr la configuracin anterior.

Figura No .9.27: Respuesta del programa 9_3.bsp ante un valor de configuracin fuera de rango.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 277 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Objetivo: Programar al sensor DS1620 para que opere como termostato.

Elementos a Utilizar
El DS1620, puede operar en forma autnoma como
termostato. Esto quiere decir, que despus de ser
(1) BASIC Stamp 2p.
(1) Cable serial DB9. programado adecuadamente por el BASIC Stamp,
(1) DS1620, Termmetro/Termostato digital. puede medir y controlar la temperatura sin necesidad
(1) StampW (v2.0 beta 2.1 o superior). de utilizar el microcontrolador (modo stand alone).

Arme el circuito de la figura No .9.28. Para esta actividad dispondremos del programa 9_4.bsp que permite
ajustar los parmetros de configuracin del DS1620 como termostato. Antes de transcribirlo, observe los
diagramas de flujos que se muestran en la figura No. 9.29.

Figura No. 9.28: Montaje electrnico requerido para programar al DS1620 como termostato.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 278 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

INICIO

Solicitar al usuario la
configuracin
Error en la InitTemp
configuracin
No Configurar el DS1620
Valores
como termostato
permitidos?

Si
RETURN
InitTemp

Si
Desea cambiar la
configuracin?
Figura No. 9.29: Diagrama del flujo del programa 9_4.bsp.
No Fuente: Elaboracin Propia.

END

Transcriba y descargue el programa 9_4.bsp en el BASIC Stamp 2p. Como resultado en el debug terminal se
mostrar una pantalla similar a la de la figura No. 9.30.

Figura No. 9.30: Interfaz del Ejercicio # 4.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 279 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

La configuracin del DS1620 como termostato se realiza por medio de la lnea de cdigo:

SHIFTOUT MOSI,SCK,LSBFIRST,[EscrRegCon,ConfiTerm]

Como se puede observar al enviar la constante ConfiTerm, que es igual a %00001000 en binario, es escrita
en el registro de control del DS1620. El segundo bit de este registro (CPU), define con su estado lgico el
modo de operacin del integrado. Si CPU = 1 el DS1620 ser un termmetro, con CPU = 0 el DS1620 ser
un termostato.

Ajuste los niveles de operacin del termostato de la siguiente manera:


La temperatura alta, ser igual a la temperatura ambiente + 10 C.
La temperatura baja, ser igual a la temperatura ambiente + 5 C.

Luego de configurar el DS1620 el BASIC Stamp 2p quedar en estado inactivo por un perodo de tiempo
indefinido, debido al comando END.

Despus de programado, desconecte el BASIC Stamp del DS1620 y realice las siguientes operaciones:
Coloque el terminal CLK/CONV (SCK) en estado alto y el terminal RST (SS2) en estado bajo.
Coloque el terminal CLK/CONV en estado bajo a fin de iniciar las conversiones de la temperatura. El
DS1620 estar continuamente leyendo la temperatura hasta que el terminal CLK/CONV se llevado a
un estado alto de nuevo.
Despus de realizar las operaciones anteriores deber colocar los pines (DQ), (CLK) y (\RST) del DS1620 a
tierra o GND, como es mostrado en la figura No. 9.31.

Figura No. 9.31:


Conexin del DS1620 para operar
sin el microcontrolador.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 280 -


www.roso-control.com
Captulo No. 9. Medicin de Temperatura

Investigue los siguientes tpicos


1. Mencione algunos dispositivos para determinar la temperatura y explique como funcionan ?.
2. Qu son termistores y cuantas clases de termistores existen ?.
3. Qu es un termopar y para que se utiliza ?.
4. Cuantos tipos de termopares usted conoce y en que se diferencian ?.
5. Qu es un termmetro digital y como funciona ?.
6. Qu es THF y TLF referidos al registro de configuracin de un DS1620 ?.
7. Como trabajar el DS1620 si en su registro de configuracin el bit CPU = 1 ?.
8. Como representa el DS1620 las temperaturas negativas ?.
9. Mencione y explique tres (3) comandos de operacin del DS1620 ?.
10. Qu es el protocolo de comunicacin 3-Wire y como trabaja ?.
11. Cual es la velocidad de transmisin y recepcin en un bus 3-Wire ?.
12. Cuales son las diferencias entre los protocolos SPI y 3-Wire ?.
13. Qu es el StampPlot Pro y como funciona ?.
14. Qu tipo de archivos acepta abrir el StampPlot Pro ?.
15. Como se puede crear un objeto tipo Button con el StampPlot Pro, describa el procedimiento ?.
16. Como se puede crear un objeto tipo Label con el StampPlot Pro, describa el procedimiento ?.
17. Como se puede crear un objeto tipo Banner con el StampPlot Pro, describa el procedimiento ?.
18. Como se puede crear un objeto tipo Meter con el StampPlot Pro, describa el procedimiento ?.
19. Para que se utiliza el comando !MATH en el StampPlot Pro ?.
20. Qu es una memoria RAM Scratchpad y para que sirve ?.
21. Cuantos registros de memoria RAM Scratchpad tiene un BASIC Stamp 2p ?.
22. Como funcionan los comandos PUT y GET en el BASIC Stamp 2p ?.
23. Qu es un termostato y como funciona ?.
24. Describa el procedimiento para programar a un DS1620 como termostato ?.
25. Como trabajan los pines THIGH, TCOM y TLOW en un DS1620 ?.

Programacin

1. Cree una interfaz en el StampPlot Pro que contenga un objeto tipo OsText, en el cual deber
mostrarse texto El valor de x es = , seguido del valor analgico que se est graficando. Ayuda: Si
al nombre de un objeto se le antepone el prefijo DA_, se define que el evento asociado al mismo
es el arribo de datos analgicos.

Sistema de Desarrollo para MC, modelo MDK-B28 - 281 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Captulo No. 10
Control de Procesos

Sistema de Desarrollo para MC, modelo MDK-B28 - 282 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Introduccin. En todos los procesos industriales es absolutamente necesario controlar y mantener estables algunas magnitudes, tales
como la presin, el caudal, el nivel, la temperatura, el PH, la conductividad, la velocidad, la humedad, el punto de roco, entre otras. Los
instrumentos de control y medicin permiten mantener estas variables en condiciones ms idneas de las que cualquier operador podra
lograr en forma manual. Uno de los campos de aplicacin donde los microcontroladores han ganado mayor aceptacin, es precisamente
en la automatizacin y control de procesos industriales. Por ello, en este captulo se introducen y explican los conceptos relacionados
con el control de procesos y se utilizar al BASIC Stamp para implementar tres estrategias de control de uso muy frecuente.

En los inicios de la era industrial, un operario efectuaba de manera manual el control de las variables del
proceso, utilizando para ello instrumentos simples de medicin y control tales como termmetros,
manmetros y vlvulas. Sin embargo, el gradual aumento en la complejidad de los procesos industriales y la
demanda de productos estandarizados a un nivel mayor de calidad, ha exigido de su automatizacin por
medio de instrumentos de medicin y control cada vez mejores y ms sofisticados. El empleo de estos
instrumentos ha liberado al operador de su funcin de actuacin fsica directa sobre el proceso y al mismo
tiempo, le ha permitido realizar labores de supervisin y vigilancia desde centros de control situados en el
propio proceso o en lugares muy distantes con mayor seguridad. Gracias a la existencia de instrumentos
modernos, de alta precisin y gran exactitud, ha sido posible fabricar productos complejos en condiciones
estables de calidad, condiciones que al operario le seran imposibles o muy difciles de conseguir, realizando
exclusivamente un control manual.
Un lazo o bucle de control, es un conjunto de elementos que permiten llevar y mantener una variable en un
valor deseado. En general, existen dos formas de efectuar el control de un proceso: a lazo abierto o a lazo
cerrado. La forma ms simple de controlar un proceso es a lazo abierto. En el sistema de control a lazo
abierto, no se realizan acciones de control de manera automtica. La salida del elemento final de control es
manipulada por el operador para aplicar al proceso la cantidad de energa requerida para lograr una
determinada salida bajo unas ciertas condiciones, ver figura No. 10.1. Si todas las variables que pudieran
perturbar al proceso se mantienen estables, la salida del proceso se debera mantenerse estable en el
valor deseado.

Elemento Final
Punto de Ajuste
de Control

Entrada del Producto Salida del


PROCESO
Variable Variable Producto
Manipulada Controlada

Figura 10.1: Elementos de un lazo abierto de control.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 283 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Un ejemplo de control a lazo abierto, sera colocar una


resistencia sumergida dentro un tanque y energizarla. CONCEPTOS RELACIONADOS
Mientras se mantienen constantes el nivel del tanque y la Variable Controlada o Variable de Proceso:
temperatura del agua que entra, la temperatura del Es la condicin que se desea controlar o mantener.
lquido que sale estar en el punto deseado. Sin Punto de ajuste (Set Point):
Valor deseado de la variable controlada.
embargo, si alguna de estas variables cambia, la salida Variable Manipulada:
se alejar del valor de ajuste y no existir forma de Variable que se modifica buscando mantener la
retornar a l. El correcto funcionamiento de un lazo variable controlada en el punto de ajuste.
abierto de control, depender en gran medida de las Perturbacin:
Cualquier variacin externa en las condiciones del
estimaciones efectuadas y de un profundo conocimiento
proceso que hace que la variable controlada se
del comportamiento de todas las variables que perturban desve del punto de ajuste.
al proceso. Elemento Final de Control (EFC):
Es un dispositivo fsico que acta sobre la variable
manipulada. Permite controlar la energa que se
Un lazo cerrado de control, compara el valor de la
aplica al proceso y por tanto el estado de sus
variable o condicin a controlar con un valor deseado y salidas. Los EFC ms utilizados en la industria son
de forma automtica, sin intervencin de un operador, motores, vlvulas, calentadores, bombas,
toma una accin correctiva de acuerdo a la desviacin solenoides, relevadores, contactores. A los EFC se
les suele llamar actuadores.
existente. El lazo busca entonces mantener la variable
Accin de Control:
controlada en el valor deseado, midiendo y evaluando las Modificacin en la posicin del elemento final de
variables de inters durante el transcurso del proceso. control que busca eliminar la diferencia entre la
Ver figura No. 10.2. variable de proceso y el punto de ajuste.

C o m pa rad o r

P u n to d e A jus te

E rro r

C o n trolad o r

E le m en to Fin al M e d ici n y
de C o n trol tran s m isin

Figura No. 10.2: Elementos de un


E n tra da de l S alid a d el
P ro du cto
P R O CE S O
P ro du cto
lazo de control cerrado.
V a ria b le V a riab le
M a nipulad a C o n trola da
Fuente: Modificado de
Instrumentacin Industrial.
P e rtu rb acio n es Antonio Creuss. 6ta Edicin, pg 3.

Sistema de Desarrollo para MC, modelo MDK-B28 - 284 -


www.roso-control.com
Captulo No. 10. Control de Procesos

En contraste con el ejemplo anterior, para controlar la temperatura del mismo tanque puede usarse un
termostato. Este elemento compara continuamente la temperatura del lquido dentro del recipiente con la
temperatura deseada y en funcin de esta comparacin, encender o no la resistencia de calefaccin.

CONTROL ON/OFF:

Es un esquema de control muy utilizado por su simplicidad y bajo costo de implementacin. En un control
ON/OFF o Todo/Nada la salida del controlador toma slo dos posibles valores, lo que se traduce en el
elemento final de control, como un estado abierto o cerrado No. 10.3. Opera satisfactoriamente en procesos
con una velocidad de reaccin lenta y con tiempo de retardo mnimo. Su principal problema es que la salida
oscila repetidas veces cuando la variable controlada se encuentra cerca del punto de ajuste. La causa
primordial de estas oscilaciones es el ruido que pueda afectar al sensor de medicin, que es interpretado
como una fluctuacin rpida por encima y por debajo del punto de ajuste. Si el elemento final de control no
es un dispositivo de estado slido, sino un relay o una vlvula, la rpida conmutacin que ocurre pudiera
deteriorarlo en poco tiempo.

100%

Salida del
Controlador
0%

Punto de
Ajuste
Variable
Controlada

Tiempo
Figura No. 10.3: Salida del controlador bajo un esquema de control ON/OFF.
Fuente: Elaboracin Propia.

Por el problema mencionado anteriormente, el control ON/OFF suele implementarse con una banda
diferencial o zona muerta. La salida del controlador no cambia de estado mientras la variable de proceso se
encuentre dentro de esta zona, ver figura No. 10.4. Con la presencia de la banda diferencial, se logra un

Sistema de Desarrollo para MC, modelo MDK-B28 - 285 -


www.roso-control.com
Captulo No. 10. Control de Procesos

tiempo de ciclo ON/OFF ms lento y con ello la eliminacin de los efectos generados por el ruido en la
medicin. Debido a que la banda diferencial es ms ancha que el efecto del ruido, la oscilacin de alta
frecuencia en la salida se logra disminuir; sin embargo, con esto se le permite a la variable del proceso
alejarse del punto de ajuste. Cuando el proceso permite esta variacin, el control de banda diferencial
normalmente representa una mejor solucin que el control ON/OFF simple.

100%

Salida del
Controlador
0

Punto de Ajuste

Variable Banda
Controlada Diferencial

Tiempo

Figura No. 10.4: Salida del controlador bajo un esquema de control ON/OFF con banda diferencial.
Fuente: Elaboracin Propia.

CONTROL PROPORCIONAL:

En un esquema de control proporcional, existe una relacin lineal continua entre la salida del controlador y
la variable controlada. Bsicamente, si la diferencia que existe entre la variable del proceso y el punto de
ajuste es muy grande, se debe generar una accin de control mayor; y si es pequea, slo se deber
corregir muy poco, por lo que la salida del controlador es proporcional a la magnitud del error:

m(t) = m + K c e(t) e(t) = Sp Vp(t)

Sistema de Desarrollo para MC, modelo MDK-B28 - 286 -


www.roso-control.com
Captulo No. 10. Control de Procesos

m(t) = Salida del controlador.


e(t) = Seal de error, es la diferencia entre el punto de ajuste y la variable controlada.
Kc = Ganancia del controlador.
m = Valor de estado estacionario. Representa la salida del controlador cuando el error es cero.
Sp = Punto de ajuste.
Vp(t) = Variable controlada.

La figura No. 10.5, muestra la reaccin del controlador ante un cambio en la variable de proceso. La salida
del controlador aumentar en Kc veces la magnitud del error.

Punto de
Ajuste
Variable error
Controlada

Kc x error
Salida del
controlador

Tiempo

Figura No. 10.5: Salida de un controlador proporcional ante una variacin de la variable de entrada.
Fuente: Elaboracin Propia.

La ganancia del controlador, es la relacin entre un cambio de la variable de salida y el error que lo produce.

Por lo general, se habla de la banda proporcional que se define como la inversa de la ganancia del
controlador:
100%
BP =
KC

Sistema de Desarrollo para MC, modelo MDK-B28 - 287 -


www.roso-control.com
Captulo No. 10. Control de Procesos

La banda proporcional (Bp), es el porcentaje de variacin de la variable controlada que ocasiona una carrera
completa del elemento final de control. En la figura No. 10.6 puede observarse el efecto de aumentar o
disminuir la banda proporcional. Ntese como para una Bp del 500%, al ir la variable controlada de 0% a
100%, el recorrido del EFC es de apenas un 20%; mientras que, para una BP del 20% basta con un cambio
de 20% en la Vp para llevar al EFC desde la mxima apertura hasta estar cerrado completamente.

Bp= 500% Bp= 200%


% Variable Controlada
10 0 % Bp= 100%

80 % Bp= 50%

60 % Bp= 20 %

0%
40

20 %

20 % 40% 60% 80% 10 0 %


% Variacin del elemento final de control

Figura No. 10.6: Banda Proporcional.


Fuente: Modificado de Instrumentacin Industrial. Antonio Creuss. 6ta Edicin, pg 492.

Una ventaja de esta estrategia de control, es que slo requiere del clculo de un parmetro, la ganancia
(KC). Sin embargo, el controlador proporcional posee una caracterstica indeseable que se conoce como error
en estado estacionario u offset. Como se observa en la figura No. 10.6, si una perturbacin es introducida al
sistema, el controlador proporcional no es capaz de colocar la variable controlada en el punto de ajuste
mientras se mantenga dicha perturbacin. Este error se puede eliminar cambiando el punto de ajuste.

Sistema de Desarrollo para MC, modelo MDK-B28 - 288 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Variable
Controlada

Control
Proporcional offset

Carga

Tiempo

Figura No. 10.7: Error en estado estacionario del Controlador Proporcional.


Fuente: Modificado de Instrumentacin Industrial. Antonio Creuss. 6ta Edicin, pg 493.

Macros en el StampPlot Pro

Una de las mltiples caractersticas poderosas que presenta el StampPlot Pro es la existencia de macros o
segmentos de cdigo que pueden ser ejecutados en cualquier momento. Un macro puede contener
subrutinas que pueden ser llamadas de forma independiente, su estructura bsica es:
Nombre de la rutina:
Instruccin
Instruccin

Endmac

Sistema de Desarrollo para MC, modelo MDK-B28 - 289 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Los macros pueden ser llamados de distintas maneras:

Desde el men Macros , en la opcin Run Macro del StampPlot Pro.


Desde el microcontrolador por medio del comando !MACR.
Desde cualquier otro macro a travs del comando !MACR nombre del macro.Nombre de la rutina.

Si no se especifica el directorio (path) de ubicacin del archivo .spm que contiene al macro, StampPlot Pro
asume que ste se encuentra en la carpeta Macro del StampPlot V3. Para especificar otra direccin se
indica por medio de: !MACR Letra de la Unidad :\ directorio \nombre del macro.

Sistema de Desarrollo para MC, modelo MDK-B28 - 290 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Objetivo: Utilizar al BASIC Stamp para implementar un algoritmo de control ON/OFF de temperatura.

Elementos a Utilizar
Arme el circuito de la figura No. 10.8. Para implementar
el controlador ON/OFF se utilizar el programa
(1) BASIC Stamp 2p. 10_1.bsp, su lgica de funcionamiento se muestra en
(1) Resistencia de 220 Ohms. los diagramas de flujo de las figuras No. 10.9. y No.
(1) DS1620, Termmetro/termostato digital. 10.10.
(1) Driver de Potencia.
(1) Mdulo SLCD-BD.
(1) Un cable serial DB9. Verifique que la resistencia del calentador del MDK-B28
(1) StampW (v2.0 beta 2.1 o superior). se encuentre en contacto con la superficie del DS1620.

Figura No. 10.8: Diagrama electrnico para conectar al termmetro DS1620 con el BASIC Stamp.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 291 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Init_Temp

INICIO
Inicializar el DS1620

Inicializar Set Point = 30C


RETURN

Pausa de 1seg para


inicializar LCD Control

Init_Temp Leer_Temperatura
(Inicializar al DS1620)

No Si
Cargar_ Flechas Sp > Temp

Sp < Temp
Borrar contenido de la LCD No Encender el Calentador
Si
Apagar el Calentador
Control

Mostrar en la LCD la RETURN


Temperatura y el Set Point en C
Leer_Temperatura
Leer_Pulsador

Leer la Temperatura del


DS1620

Ajustar temperatura
al formato XXX.X C
Figura No. 10.9: Diagramas de flujo del programa 10_1.bsp.
Fuente: Elaboracin Propia.
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 292 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Leer_Pulsador

Leer estado del teclado

No Si
SW1
Sp=125 Sp=0 C Presionado?

Si
No
Sp= Sp - 5

Si SW2
Presionado?

Si
Sp=
Sp= 0 No
125C
No Si
Otro
Pulsador? Emitir Bip
Sp=
= Sp+ 5
No

RETURN
RETURN

Figura No. 10.10: Rutina Leer_Pulsador, utilizada para aumentar o disminuir el punto de ajuste del lazo de control.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 293 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Descargue el programa 10_1.bsp en el BASIC Stamp 2p. En la pantalla LCD deber mostrarse la
temperatura ambiente y el punto de ajuste, que por defecto es de 30 C. Aumente el set point 4.5 C por
encima de la temperatura ambiente y observe la respuesta del sistema.

'Programa 10_1.bsp
'Este programa tiene por objetivo implementar un controlador ON/OFF de temperatura,
'utilizando al DS1620 como elemento de medicin y al driver de potencia del sistema
'MDK-B28 como elemento final de control
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
BorrarLCD CON 1 'Limpiar pantalla
Linea_1 CON 128 'Mover cursor a la primera lnea de la pantalla LCD
Linea_2 CON 192 'Mover cursor a la segunda lnea de la pantalla LCD
Baudios CON 240 'Velocidad de la Transmisin/Recepcin con SEROUT/SERIN
Inst CON 254 'Indica al SLCD-IC la presencia de una instruccin
CGRAM_0 CON 64 'Direccin del primer carcter de CGRAM
TempA CON 250 'Temperatura alta = 125 C (Alarmas del DS1620)
TempB CON 0 'Temperatura baja = 0 C
LeerTemp CON $AA 'Comando para leer temperatura
InicioConv CON $EE 'Comando para iniciar conversin
ConfiTerm CON $0A 'Configurar al DS1620 como termmetro
ConfiTalta CON $01 'Comando para configurar temperatura alta
ConfiTbaja CON $02 'Comando para configurar temperatura baja
EscRegCon CON $0C 'Escribir en el registro de configuracin del DS1620

MOSI PIN 0 'Terminal de datos del bus 3-Wire conectado a P0


SCK PIN 1 'Seal de reloj
SS2 PIN 2 'Seal de habilitacin del DS1620
SLCD_RX PIN 4 'Terminal de envo de datos al SLCD-IC conectado a P4
SLCD_TX PIN 5 'Terminal de recepcin de datos desde el SLCD-IC (P5)
SLCD_ENABLE PIN 3 'Habilita la lectura del teclado del SLCD-BD
CAL PIN 8 'Terminal conectado al calentador
BUZ PIN 11 'Terminal conectado al altavoz piezoelctrico

Temp VAR Word 'Temperatura leda desde el DS1620


Sp VAR Word 'Set Point o punto de ajuste de la temperatura
Tecla VAR Byte 'Contiene el cdigo ASCII del pulsador presionado

Sistema de Desarrollo para MC, modelo MDK-B28 - 294 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del programa 10_1.bsp

'___________________________________________________________________________________
'Programa Principal
Inicio:
PAUSE 1000 'Inicializacin de la pantalla LCD por parte del SLCD-IC
Sp = 300 'Inicializar al Set Point en 30C
GOSUB Init_Temp 'Inicializa al DS1620 para medir continuamente la temp.
GOSUB Cargar_Flechas 'Carga de caracteres personalizados en la LCD
SEROUT Slcd_Rx,Baudios,[Inst,BorrarLCD] 'Borra el contenido de la pantalla LCD

DO
GOSUB Control 'Genera accin de control
SEROUT Slcd_Rx,Baudios,[Inst,Linea_1,"T =",DEC (Temp/10),
".",DEC1 Temp DIG 0, $DF,"C "]
'Muestra la temperatura leda con resolucin de 0.5 C
SEROUT Slcd_Rx,Baudios,[Inst,Linea_2,"Sp=",DEC (Sp/10),
".",DEC1 Sp DIG 0,$DF,"C "]
'Muestra la el punto de ajuste con resolucin de 0.5 C
GOSUB Leer_Pulsador
LOOP
'===================================================================================
'SUBRUTINAS
'Rutina que permite inicializar el DS1620 como termmetro, configura las alarmas
'en 0C y 125C
Init_Temp:
HIGH SS2 'Habilitar al DS1620 en el bus
SHIFTOUT MOSI,SCK,LSBFIRST,[EscRegCon,ConfiTerm] 'Enviar el Byte de config.
GOSUB Rset
SHIFTOUT MOSI,SCK,LSBFIRST,[ConfiTAlta,TempA\9] 'Enviar alarma por alta temp.
GOSUB Rset 'Reset luego del 9no Bit
SHIFTOUT MOSI,SCK,LSBFIRST,[ConfiTbaja,TempB\9] 'Enviar alarma por baja temp.
GOSUB Rset 'Reset luego del 9no Bit
SHIFTOUT MOSI,SCK,LSBFIRST,[InicioConv] 'Iniciar la conversin
LOW SS2 'Finalizar la comunicacin
RETURN

'La rutina Cargar_Flecha guarda en la CGRAM las flechas mostradas en la pantalla


Cargar_Flechas:
SEROUT SLCD_RX,Baudios,[Inst,CGRAM_0,$0E,$0E,$0E,$0E,$0E,$1F,$0E,$04]
SEROUT SLCD_RX,Baudios,[$04,$0E,$1F,$0E,$0E,$0E,$0E,$0E]
SEROUT SLCD_RX,Baudios,[$02,$06,$0F,$1F,$1F,$0F,$06,$02]
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 295 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del programa10_1.bsp

'Rutina para colocar en estado bajo la seal SS2 luego de leer o escribir el 9no bit
Rset:
LOW SS2 : PAUSE 5 : HIGH SS2 'Produce un reset del DS1620
RETURN

'Rutina para leer la temperatura


Leer_Temperatura:
HIGH SS2 'Habilitar al DS1620
SHIFTOUT MOSI,SCK,LSBFIRST,[LeerTemp] 'Enviar comando de leer la temperatura
SHIFTIN MOSI,SCK,LSBPRE,[Temp\9] 'Recibir la temperatura leda
LOW SS2 'Deshabilitar al DS1620
Temp = 5*Temp 'Expresa la temperatura en C, el LSD
RETURN 'de Temp contendr la parte decimal

'Rutina para generar la accin de control


Control:
GOSUB Leer_Temperatura 'Efecta la medicin de temperatura
IF Sp>Temp THEN HIGH CAL ELSEIF Sp<Temp THEN LOW CAL
'Si la variable del proceso es menor al punto de ajuste se enciende el calentador,
'si es mayor se apaga y si es igual, no cambia su estado
RETURN

'Rutina para leer el estado de los pulsadores


Leer_Pulsador:
SEROUT SLCD_RX,Baudios,[INST,Linea_1+11,"SW1",0] 'SW1 disminuye el Sp
SEROUT SLCD_RX,Baudios,[INST,Linea_2+11,"SW2",1] 'SW2 aumenta el Sp
SERIN SLCD_TX\SLCD_ENABLE,Baudios,750,Fin,[HEX2 Tecla]
'Lee la tecla presionada, si en 300 ms no se oprime ninguna tecla se salta a Fin
SELECT Tecla
CASE = "1" 'Disminuye al SP en 0.5C
Sp=(Sp-5) MAX 1250 'Establece un mnimo igual a 0C
CASE = "2"
IF Sp > = 1250 THEN Sp = 0 ELSE Sp=Sp+5 'Aumenta al SP en 0.5C mx 125C
CASE ELSE
FREQOUT BUZ,1000,1500 'Si se presiona otra tecla se
ENDSELECT 'genera un sonido
Fin:
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 296 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Cuando se enciende al sistema, si la temperatura medida por el DS1620 es inferior al punto de ajuste, el
BASIC Stamp encender el calentador y se incrementar la temperatura. Esta condicin se mantendr hasta
que la temperatura supere el valor del Set Point.

Luego de apagarse el calentador, es posible que la temperatura contine aumentado por efecto de la inercia
trmica del sistema. Transcurrido un tiempo, cesa el aumento de temperatura y el sistema comienza a
perder energa trmica. Cuando se pasa por debajo de la temperatura deseada, el BASIC Stamp encender
el calentador; sin embargo, la temperatura no aumenta inmediatamente sino que sigue disminuyendo por
algunos instantes.

El ciclo de oscilacin por encima y por debajo del punto de ajuste es tpico de un control ON/OFF y depende
exclusivamente de las caractersticas del proceso.

Esta estrategia o modo de control resulta conveniente cuando el proceso tiene gran capacidad (as se
garantiza que los cambios bruscos (de 0% a 100%) en la salida del controlador no se reflejen de manera
violenta o peligrosa sobre la variable controlada), permite una respuesta lenta y presenta perturbaciones
relativamente constantes. La regulacin de la temperatura suele hacerse con controladores ON/OFF
(termostatos).

El DS1620 posee una resolucin de 0,5 C, por lo tanto, la temperatura estar conformada por un valor
entero ms un decimal. Debido a que el BASIC Stamp slo trabaja con nmeros enteros, se ha utilizado un
pequeo ajuste en la variable Temp al hacer: Temp = 5*Temp.

Para convertir la medicin efectuada por el DS1620 a grados centgrados, basta con dividir entre 2. Ahora
bien, si se multiplica por 10 el resultado de la medicin, se elimina la prdida del valor decimal al efectuar la
mencionada divisin. Con esto, la temperatura leda se almacena en una variable de 16 bits, donde el ltimo
dgito representa la parte decimal. Por ejemplo una medicin de 30.5C se guarda en la variable Temp como
305.

Sistema de Desarrollo para MC, modelo MDK-B28 - 297 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Objetivo: Implementar un algoritmo de control ON/OFF con banda diferencial con el microcontrolador BASIC Stamp 2p y el
termmetro DS1620.

Elementos a Utilizar

(1) BASIC Stamp 2p. Proceda a armar el circuito de la figura No. 10.11. Para
(1) Un cable serial DB9. esta actividad se utilizarn el programa 10_2.bsp y el
(1) Resistencia de 220 Ohms. macro 10_2.spm. La lgica de funcionamiento del
(1) DS1620, Termmetro/Termostato digital
(1) Driver de Potencia del MDK-B28.
programa 10_2.bsp, se describe a travs de los
(1) Programa StampPlot V3 (rev 1.6 o superior) diagramas de flujo de la figura No. 10.12.
(1) StampW (v2.0 beta 2.1 o superior).

Figura No. 10.11: Esquema de montaje para el ejercicio # 2.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 298 -


www.roso-control.com
Captulo No. 10. Control de Procesos

INICIO Control

Inicializar Variables
No Si
Inicializar Interfaz Temp>=
Bdinf
Configurar al DS1620 como Temp<= No Encender el Calentador
termmetro Bdsup

Si
Leer Punto de Ajuste y Apagar el Calentador
% de la Banda Diferencial

RETURN
Leer_Temperatura

Actualizar Grfica, Medidor y


Estado del pulsador
Banda_Diferencial

Banda_Diferencial Aux=(Bd /10) *( Sp/10)

Actualizar Etiquetas en la Bdsup=Sp+Aux


Interfaz Bdinf=Sp -Aux

RETURN
Control

Figura No. 10.12: Diagramas de flujo del programa 10_2.bsp.


Fuente: Elaboracin Propia.

Descargue el programa 10_2.bsp en el BASIC Stamp y cierre el debug terminal del BASIC Stamp Editor.

Sistema de Desarrollo para MC, modelo MDK-B28 - 299 -


www.roso-control.com
Captulo No. 10. Control de Procesos

'Programa 10_2.bsp
'Este programa tiene por objetivo implementar un controlador ON/OFF con banda
'diferencial, utilizando una interfaz grfica desarrollada con el StampPlot Pro para
'visualizar la respuesta del sistema
'Requiere del uso del macro Macro_10_2.spm
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
TempA CON 250 'Temperatura alta = 125 C (Alarmas del DS1620)
TempB CON -110 'Temperatura baja = -55 C
LeerTemp CON $AA 'Comando para leer temperatura
InicioConv CON $EE 'Comando para iniciar conversin
ConfiTerm CON $0A 'Configurar al DS1620 como termmetro
ConfiTalta CON $01 'Comando para configurar temperatura alta
ConfiTbaja CON $02 'Comando para configurar temperatura baja
EscRegCon CON $0C 'Escribir en el registro de configuracin del DS1620
SINPin CON 16 'Terminal SIN (2) del BASIC Stamp
Baudios CON 240 'No-Invertido, 9600 bsp, sin paridad
Tiempo_Espera CON 1250 'Tiempo de espera cuando se piden datos al StampPlot
MOSI PIN 0 'Terminal de Datos del bus 3-Wire conectado a P0
SCK PIN 1 'Seal de reloj
SS2 PIN 2 'Seal de habilitacin del DS1620
CAL PIN 8 'Terminal conectado al calentador
Temp VAR Word 'Temperatura del sistema
Sp VAR Word 'Punto de ajuste
Bd VAR Word 'Banda diferencial en %
Bdsup VAR Word 'Banda diferencial superior en C
Bdinf VAR Word 'Banda diferencial inferior en C
Aux VAR Word 'Variables auxiliares
Aux2 VAR Word
Digito VAR Byte 'Decimal del dato
i VAR Nib 'Variable de uso general
Signo VAR Bit 'Variable de uso general
'___________________________________________________________________________________
'Programa Principal
Inicio:
PAUSE 500
DEBUG "!MACR Macro_10_2.Inicio",CR 'Inicializar la interfaz
DEBUG "!MATH %m10=",DEC 295,CR 'Valores predeterminados
DEBUG "!MATH %m11=",DEC 100,CR 'SP = 32 C BD = 10%
GOSUB Init_Temp 'Inicializar al DS1620

Sistema de Desarrollo para MC, modelo MDK-B28 - 300 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del programa 10_2.bsp

DO

Leer_Sp:
DEBUG "!Read %m10",CR : 'Leer el Sp (%m10)
SERIN SINPin, Baudios, Tiempo_Espera , Leer_Sp, [SDEC Sp] : PAUSE 250
Leer_Vp:
DEBUG "!Read %m11",CR 'Leer la Bd (%m11)
SERIN SINPin, Baudios, Tiempo_Espera , Leer_Vp, [DEC Bd] : PAUSE 250
GOSUB Leer_Temperatura 'Leer temperatura
Aux = Temp 'Ajustar la temperatura leda
GOSUB Actualizar 'para mostrarla en la grfica
DEBUG SDEC Aux,CR 'analgica y en el indicador
DEBUG "!POBJ Medidor=",SDEC Aux,".",DEC Digito,CR 'de aguja
DEBUG IBIN IN8,CR 'Grafica estado de calentador
DEBUG "!MACR .Actualiza,",DEC IN8,CR 'Mostrar estado del calentador
GOSUB Banda_Diferencial 'Calcular la banda diferencial
FOR i = 0 TO 3 'Actualizar las etiquetas
LOOKUP i,[Sp,Bd,Bdsup,Bdinf],Aux
GOSUB Actualizar
DEBUG "!POBJ Etiqueta",DEC (2*i+2),"=",SDEC Aux,".",DEC Digito,CR
NEXT
GOSUB Control 'Generar la accin de control

LOOP

'===================================================================================
'SUBRUTINAS
'La rutina Control, efecta el control ON/OFF con banda diferencial en base a la
'temperatura almacenada en la variable Temp y la banda definida por Bdinf y Bdsup

Control:
Aux = Bdinf - Temp
IF Aux.BIT15 = 0 THEN HIGH CAL
Aux = (Temp - Bdsup)
IF Aux.BIT15 = 0 THEN LOW CAL

'Si la variable controlada se mantiene en la banda diferencial, la salida del


'controlador no cambia, cuando se aleja de esta regin el controlador enciende o
' apaga al calentador buscando retornar al punto de ajuste
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 301 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del programa 10_2.bsp

'Esta rutina permite separar el valor guardado en Aux en su parte entera y decimal
Actualizar:
Signo = Aux.BIT15 'Determina el signo del nmero para poder efectuar la
GOSUB D_Signo 'correcta extraccin del dgito menos significativo
Digito = Aux DIG(0) 'Extrae el LSD de la variable y lo almacena en dgito
Aux = Aux /10 'Elimina la parte decimal
GOSUB D_Signo 'Ajusta el signo
RETURN

'D_Signo invierte el signo de un nmero segn sea el valor de la variable signo


D_signo:
IF Signo = 1 THEN Aux = -Aux 'Si signo es 1 invierte el signo de la variable
RETURN

'Rutina que obtiene el valor de la banda diferencial superior e inferior


Banda_diferencial:
Aux = Bd
GOSUB Dividir 'Dividir la Bd entre 10 y redondea la parte decimal
Bdsup = Aux
Aux = Sp
GOSUB Dividir 'Dividir el Sp entre 10 y redondea la parte decimal
Aux = Aux * Bdsup 'Multiplicar (Sp/10)*(Bd/10)
GOSUB Dividir 'Ajusta el resultado al formato usado
Signo = Temp.BIT15 ^ Sp.BIT15
IF Signo = 0 THEN Bdsup=Sp+Aux : Bdinf=Sp-Aux ELSE Bdsup=Sp-Aux : Bdinf=Sp+Aux
'Ajuste de la Banda diferencial
RETURN

'Rutina de uso general que permite dividir Aux /10, considerando el signo y
'redondeando el dgito decimal del resultado
Dividir:
Signo = Aux.BIT15
Aux = ABS Aux
Aux = ((Aux DIG(0)/5)*10) + Aux
Aux = Aux / 10
GOSUB D_Signo
RETURN
'Rutina para producir un reset en el DS1620
Rset:
LOW SS2 : PAUSE 10 :HIGH SS2
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 302 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del programa 10_2.bsp

'Rutina para inicializar el DS1620 como termmetro


Init_Temp:
HIGH SS2
SHIFTOUT MOSI,SCK,LSBFIRST,[EscRegCon,ConfiTerm,$00] : GOSUB Rset
SHIFTOUT MOSI,SCK,LSBFIRST,[ConfiTAlta,TempA\9] : GOSUB Rset
SHIFTOUT MOSI,SCK,LSBFIRST,[ConfiTbaja,TempB\9] : GOSUB Rset
SHIFTOUT MOSI,SCK,LSBFIRST,[InicioConv] : GOSUB Rset
LOW SS2
RETURN

'Esta rutina permite leer el valor de la temperatura y ajustarlo en 4 dgitos


'(3 para la parte entera y 1 para el decimal
Leer_Temperatura:
HIGH SS2
SHIFTOUT MOSI,SCK,LSBFIRST,[LeerTemp] 'Comando para leer la temperatura
SHIFTIN MOSI,SCK,LSBPRE ,[Temp\9] 'Recibir la temperatura
LOW SS2
IF Temp.BIT15 = 1 THEN Aux = -(512-Temp) ELSE Aux = Temp
'Si la temperatura leda es negativa, entonces calcular el complemento a dos en
'9 bits para obtener el valor correcto y ajustarle el signo
Temp = 5*Aux
RETURN

Transcriba el Macro_10_2.spm y almacnelo en la carpeta Macro del directorio de instalacin del StampPlot.

'ESTE MACRO ES UTILIZADO CON EL PROGRAMA 10_2.bsp. PARA PROPORCIONAR UNA INTERFAZ
'GRAFICA QUE LE PERMITA AL USUARIO AJUSTAR LOS PARAMETROS DEL CONTROLADOR ON/OFF CON
'BANDA DIFERENCIAL Y REPRESENTAR GRAFICAMENTE LA RESPUESTA DEL SISTEMA
Inicio:
!NEWP 'NUEVA GRAFICA
!POBJ clear
'BORRAR OBJETOS
!RSET 'INICIALIZAR GRAFICA
!PPER 70,100 'DIVIDIR AREA DE OBJETOS Y AREA DE GRAFICA
!TITL Control ON/OFF
!TMAX 200 'TIEMPO MAXIMO DE 200 SEGUNDOS
!MAXT
!STAT CONTROL ON/OFF DE BANDA DIFERENCIAL

Sistema de Desarrollo para MC, modelo MDK-B28 - 303 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del Macro: Macro_10_2.spm

!YLBL Temperatura
!XLBL Tiempo
!SPAN -55,125 'RANGO DEL EJE Y
!PLOT ON 'GRAFICAR LOS DATOS
!MENU OFF 'DESHABILITAR MENU
!TBAR OFF 'DESHABILITAR LA BARRA DE HERRAMIENTAS
!POBJ oBACK=7 'DEFINIR EL COLOR DEL AREA DE OBJETOS
!ECHO ON
'MEDIDOR ***************************************************************************
'DEFINIR EL MEDIDOR QUE INDICA EL VALOR DE LA TEMPERATURA
!POBJ oMeter.Medidor=72,97,27,27,-55,125,,
'PULSADORES ************************************************************************
'PULSADORES PARA INTRODUCIR LA CONFIGURACION DEL CONTROLADOR ON/OFF CON BANDA
'DIFERENCIAL, AL PRESIONAR EL PULSADOR CORRESPONDIENTE
!POBJ oButton.Boton1=72,66,12,7,Punto de Ajuste,8
!POBJ Boton1.Font=TAHOMA,8,1,0
!POBJ Boton1.tip=Configurar Set Point
!POBJ oButton.Boton2=87,66,12,7,Banda Diferencial,8
!POBJ Boton2.tip=Configurar Banda Diferencial
!POBJ Boton2.Font=TAHOMA,8,1,0
'LED *******************************************************************************
'DEFINIR UN OBJETO QUE PERMITA MOSTRAR UN LED, PARA INDICAR EL ESTADO DEL CALENTADOR
!POBJ oImgBut.Led1=90,20,7,13,comp\Led_wood_0.jpg,1,comp\Led_wood_1.jpg
!POBJ Led1.Tip=Estado del Calentador
'ETIQUETAS *************************************************************************
'ETIQUETAS PARA MOSTRAR LOS VALORES ACTUALES DE: PUNTO DE AJUSTE, BANDA DIFERENCIAL
'Y LAS BANDAS SUPERIOR E INFERIOR
!POBJ oLabel.Etiqueta1=74,54,30,11,Punto de Ajuste,7,0,9,0
!POBJ Etiqueta1.Font=TAHOMA,9,1,0
!POBJ oLabel.Etiqueta2=92,54,4,4,,7,0,8
!POBJ Etiqueta2.Font=TAHOMA,9,1,0
!POBJ oLabel.Etiqueta3=74,46,30,11,Banda Diferencial (%),7,0,9,0
!POBJ Etiqueta3.Font=TAHOMA,7,1,0
!POBJ oLabel.Etiqueta4=92,46,4,4,,7,0,8
!POBJ Etiqueta4.Font=TAHOMA,9,1,0
!POBJ oLabel.Etiqueta5=74,38,30,11,Banda Superior,7,0,9,0
!POBJ Etiqueta5.Font=TAHOMA,9,1,0
!POBJ oLabel.Etiqueta6=92,38,4,4,,7,0,8
!POBJ Etiqueta6.Font=TAHOMA,9,1,0
!POBJ oLabel.Etiqueta7=74,30,30,11,Banda Inferior,7,0,9,0
!POBJ Etiqueta7.Font=TAHOMA,9,1,0

Sistema de Desarrollo para MC, modelo MDK-B28 - 304 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del Macro: Macro_10_2.spm

!POBJ oLabel.Etiqueta8=92,30,4,4,,7,0,8
!POBJ Etiqueta8.Font=TAHOMA,9,1,0
!POBJ oLabel.Etiqueta9=75,20,15,13,\n CALENTADOR,7,0,10,1
!POBJ Etiqueta9.Font=TAHOMA,11,1,0
'EVENTOS ***************************************************************************
'DEFINIR LOS EVENTOS A EJECUTAR
!POBJ Boton1.C=!MREQ 29,10,Punto de Ajuste,10 (;)
!MATH %m10=%m10,Format,0.0(;)
!MATH %m10=%m10,*,10
!POBJ Boton2.C=!MREQ 10,10,Banda Diferencial,11(;)
!MATH %m11=%m11,Format,0.0(;)
!MATH %m11=%m11,*,10
ENDMAC
'RUTINAS ***************************************************************************
Actualiza:
'RUTINA PARA ACTUALIZAR EL LED QUE REFLEJA EL ESTADO DEL CALENTADOR
!IFTH %m0,=,1,!POBJ Led1=1
!IFTH %m0,=,0,!POBJ Led1=0
ENDMAC

La interfaz obtenida con este macro, permite configurar el punto de ajuste (en C) y la banda diferencial (en
porcentaje). El macro se encargar de multiplicar por 10 los valores introducidos por el usuario por medio de
la interfaz, para mantener el formato de datos definidos en el ejercicio anterior (3 dgitos para la parte
entera y uno para los decimales).

Inicie el software StampPlot Pro. Para conectar al microcontrolador con el StampPlot deber seleccionar en
el men Plot de la barra de herramientas, la opcin Connected. Luego aplique un reset al BASIC Stamp
para cargar la configuracin e inicializar la interfaz.

En la figura No. 10.13 se observa el comportamiento del lazo de control al momento de ser inicializado. La
lnea en la parte superior de la grfica es el estado del calentador, mientras que la curva de la parte inferior
es la temperatura alcanzada.

Sistema de Desarrollo para MC, modelo MDK-B28 - 305 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Figura No. 10.13: Interfaz de control utilizada en el ejercicio # 2.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 306 -


www.roso-control.com
Captulo No. 10. Control de Procesos

El cdigo del programa 10_2.bsp es un poco extenso, pero dista de ser complicado. El lazo principal del
programa se mantiene leyendo los valores de Set Point y de banda diferencial que el usuario introduce en la
interfaz del StampPlot. Posteriormente, lee la temperatura que mide el DS1620 y calcula la banda
proporcional en grados (observe que en la interfaz se introduce un valor como % del Set Point). Finalmente
actualiza la interfaz grfica y genera la seal de control.

Presione sobre el botn Punto de Ajuste y le aparecer un cuadro de dialogo similar al de la figura No.
10.14. Por medio de este, podr modificar el set point o valor deseado de la temperatura. Seleccione 32 C
y observe la respuesta del sistema.

Figura No. 10.14: Ajuste del Set Point a 32 C.


Fuente: Elaboracin Propia.

Disminuya la banda diferencial a un 2,5%. Produzca variaciones en la temperatura ventilando la resistencia


que calienta al DS1620 y vea como responde el controlador ante tales cambios. Nota: En el StampPlot Pro
los decimales se separan de la parte entera por coma (,).

Debido a que la banda diferencial se expres como un porcentaje del valor del set point, para determinar su
valor en unidades de temperatura, es necesario realizar la siguiente operacin:

Sp Banda
BD =
100

Pero, con la representacin numrica que se est utilizando el operar directamente con los datos ledos del
StampPlot Pro resulta inadecuado, ya que las posibilidades de desbordamiento matemtico son muy claras.
Por ejemplo, si el punto de ajuste es de 60.0C y la banda diferencial vale 10%, al efectuar la operacin

Sistema de Desarrollo para MC, modelo MDK-B28 - 307 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Sp*Banda el resultado ser 60000, nmero que evidentemente sale del rango de -32767 a 32767 utilizado
por el BS2p para representar los nmeros con signo.

Una solucin sencilla y que arroja buenos resultados es hacer:

Sp Banda
Bd =
10 10

Con ello se garantiza que en todo momento el resultado se mantenga dentro de los 15 bits disponibles para
el mismo.

Sistema de Desarrollo para MC, modelo MDK-B28 - 308 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Objetivo: Implementar una estacin de monitoreo remoto de temperatura, utilizando al BASIC Stamp y el software Serial-TCP
Gateway de SelmaWare.

Elementos a Utilizar
En 1973, la Agencia de Proyectos de Investigacin
Avanzada para la Defensa (DARPA), de los Estados
(1) BASIC Stamp 2p. Unidos, inici un programa para la investigacin de
(1) Resistencia de 220 Ohms. tecnologas que permitieran la transmisin de paquetes
(1) Driver de Potencia del MDK-B28. de informacin entre redes de diferentes tipos y
(1) DS1620, Termmetro/Termostato digital.
(1) Computador adicional con tarjeta Ethernet.
caractersticas. Los protocolos desarrollados se
(1) Cable UTP Categoa 5, denominaron el conjunto de protocolos TCP/IP,
(1) Un cable serial DB9. Protocolos de Control de Transmisin (Transmition
(1) Programa StampPlot V3 (rev 1.6 o superior). Control Protocol) e Internet (Internet Protocol).
(1) StampW (v2.0 beta 2.1 o superior).

Los protocolos de red suelen especificarse mediante capas superpuestas. Cada una de estas capas cumple
un determinado nivel de funcionalidad, por lo que se denominan niveles. Los niveles ms bajos tienen que
ver con el hardware, los superiores con el intercambio de informacin y los niveles centrales constituyen el
ncleo del protocolo.

CONCEPTOS RELACIONADOS
Paquete: Cantidad mnima de datos que se transmiten en una red o entre dispositivos.
Puerto: Es un nmero que identifica a una aplicacin que interviene o va a intervenir en una comunicacin bajo TCP.
Socket: Es la combinacin de la IP de la mquina y del nmero de puerto utilizado por el TCP.
Gateway: Ordenador dispositivo que conecta redes diferentes en protocolo.
Router: Asigna el encabezado del paquete y elige la mejor ruta de acceso para este. De esta manera, se optimiza el
rendimiento de la red.
Proxy: Es bsicamente un software equivalente a un router.
OSI: El modelo OSI (Open Sytem Interconnect) fue introducido por la ISO (Internacional Standars Organization) para
promover la comunicacin entre los diversos sistemas va red. Divide las tareas de la red en 7 capas.
IP: La direccin IP es usada para asegurar que los paquetes lleguen a la direccin correcta. Es una direccin nica que
identifica a un equipo en una red mediante una direccin de 32 bits.
TCP: Rompe los datos en paquetes, en una secuencia tal que puedan ser ordenados en el dispositivo ubicado en el otro
extremo de la comunicacin en el orden en que fueron enviados. Permite la retransmisin de paquetes que han sido perdidos
en las capas inferiores.

Sistema de Desarrollo para MC, modelo MDK-B28 - 309 -


www.roso-control.com
Captulo No. 10. Control de Procesos

El software StampPlot Pro, permite comunicar al microcontrolador a travs del protocolo TCP/IP con un
computador remoto, utilizando el programa TCP-Serial Gateway. De esta manera, se puede implementar
una adquisicin de datos y/o control a travs de Internet.

En este ejercicio, se implementar un control ON/OFF, pero en un computador remoto se mostrar el valor
de la temperatura, del punto de ajuste y del estado del calentador (Encendido/Apagado).

La configuracin del punto de ajuste se realiza por medio de pulsadores. La pantalla LCD servir como
medio de visualizacin en campo; es decir, en la cercana del proceso. La figura No. 10.15 le ayudar a
entender el objetivo buscado.

Computador LOCAL Computador REMOTO


Serial - TCP Gateway StampPlot Pro V3

Comunicacin
TCP/IP
Comunicacin
Serial RS232

Figura No. 10.15: Explicacin grfica del objetivo del ejercicio # 3.


Fuente: Elaboracin Propia.

Arme el montaje utilizado en el ejercicio # 1, ver figura No. 10.8.

Encienda el sistema de desarrollo MDK-B28 y descargue al BASIC Stamp el programa 10_3.bsp. Cierre el
debug terminal que el editor de PBASIC le abrir.

Sistema de Desarrollo para MC, modelo MDK-B28 - 310 -


www.roso-control.com
Captulo No. 10. Control de Procesos

El computador que transmite los datos, se encuentra conectado al microcontrolador por medio de un puerto
RS232; en este PC se debe ejecutar y configurar la aplicacin SelmaWare Serial/TCP Gateway. Para iniciar
este software, seleccione del men de Inicio de Windows, la opcin TCP-Serial Gateway dentro de la
carpeta del programa StampPlot, ver figura No. 10.16.

Figura No. 10.16: Ubicacin del SelmaWare Serial/TCP Gateway.


Fuente: Elaboracin Propia.

Inicie el mencionado software y ver aparecer una ventana similar a la mostrada en la figura No. 10.17. Los
elementos que se encuentran a la izquierda configuran la comunicacin entre el BASIC Stamp y el
computador local. Ajuste estos parmetros de la manera usual (como si se conectara con el StampPlot Pro).
Direccin IP Local: la direccin IP
Comunicacin Serial con el Contrasea para
del computador donde se ejecuta el
microcontrolador autentificar la conexin
SelmaWare Serial/TCP

Puerto de
conexin

Direccin IP Remota: la direccin IP del


computador con el cual se establece la
Figura No. 10.17: comunicacin
Ventana de configuracin
de la aplicacin Selmaware
Serial TCP/IP Gateway. El Software escucha por el Terminar la comunicacin
Fuente: puerto esperando la
Elaboracin Propia. informacin
Tiempo para la desconexin

Sistema de Desarrollo para MC, modelo MDK-B28 - 311 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Establezca la conexin entre el microcontrolador y el computador local haciendo clic sobre el botn
Connect. El software indica que la conexin ha sido establecida, cambiando el botn Connect a
Disconnect y colocando en verde la seal C que se encuentra en la barra de estado de la
comunicacin, ver figura No. 10.18.

Luego de establecer la comunicacin entre el PC local y el microcontrolador, es necesario iniciar la


comunicacin entre ambos computadores.

En la parte derecha de la pantalla, se configuran los parmetros de la comunicacin entre el computador


local y el computador remoto. La direccin IP local ser tomada de manera automtica por el SelmaWare
Serial/TCP Gateway, sta corresponde a la direccin IP del computador donde se est ejecutando el
software. El parmetro Remote IP ser llenado por el Serial/TCP Gateway con la direccin IP del PC
remoto al momento de establecerse la comunicacin.

El puerto puede ser cualquier valor superior a 900. Por lo general, en los computadores todos los puertos a
partir de ste se encuentran disponibles.

Seleccione el puerto de comunicaciones a utilizar (9001 por ejemplo). A continuacin, se debe hacer clic
sobre el botn Listen y el software indicar que se est intentando establecer la conexin por medio de un
mensaje que se muestra en el cuadro de dialogo, y colocando en amarillo la seal C de la barra de estado
de la comunicacin. Una vez que se establezca la comunicacin, la seal C aparecer en color verde.

Al hacer todo lo mencionado anteriormente, la ventana del gateway serialTCP deber lucir como la figura
No .10.18.

Ejecute el macro Macro_10_3.spm en el computador remoto. A continuacin, se configurar la conexin


TCP/IP. Para ello, seleccione la opcin Configure Port del men Plot del StampPlot Pro, ver figura No.
10.19. En la pestaa identificada como Port seleccione la opcin TCP. En la casilla IP, especifique la
direccin IP del computador que se encuentra conectado al microcontrolador (PC local). Finalmente debe
llenar el cuadro Port con el mismo puerto de comunicaciones utilizado en el PC local.

Una vez que se ha configurado al computador remoto, seleccione la opcin Connect del men Plot del
StampPlot Pro.

Si la conexin se logr con xito, se iniciar la comunicacin entre ambos computadores.

Sistema de Desarrollo para MC, modelo MDK-B28 - 312 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Recepcin: Rojo indica que est recibiendo


informacin del microcontrolador.
Refleja el estado de la conexin con el
Transmisin: Rojo indica que se est Microcontrolador. Verde indica conexin
trasmitiendo informacin al establecida, Rojo desconectado y Amarillo intentado
microcontrolador. conexin. Proporciona informacin de la conexin entre
ambos computadores. Como transmisin, recepcin
y estado de la conexin.

Figura No. 10.18: Configuracin de la comunicacin va TCP/IP.


Fuente: Elaboracin Propia.

Figura No. 10.19: Men de Configuracin.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 313 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Parmetros que se pueden configurar en el computador remoto:

IP: Direccin IP del computador donde se est ejecutando el Software TCP/Gateway.


Port: Configura el puerto por medio del cual se enviarn y/o recibirn los datos.
PSWD: Por medio de esta contrasea se establece un control en la conexin, permitiendo que slo
los computadores que enven la contrasea correcta estn autorizados a establecer la comunicacin
con el microcontrolador. Esto brinda un cierto nivel de seguridad al momento de desarrollar una
aplicacin, impidiendo las conexiones no deseadas.

A continuacin se presenta el cdigo del macro Macro_10_3.spm y del programa 10_3.bsp.

'ESTE MACRO SE EJECUTA JUNTO CON EL PROGRAMA 10_3.bsp. Y PERMITE GRAFICAR LA


'TEMPERATURA EN UN LAZO DE CONTROL ON/OFF SIMPLE, ASI COMO MOSTRAR EL ESTADO DEL
'CALENTADOR Y EL VALOR DEL PUNTO DE AJUSTE
'SE EJECUTA EN UN COMPUTADOR REMOTO QUE UTILIZA LA APLICACION SERIAL-TCP GATEWAY
Init:
!NEWP
!POBJ clear
'BORRAR OBJETOS
!PPER 70,100
!TITL MONITOREO DE TEMPERATURA
!MENU OFF 'DESHABILITAR MENU
!TBAR OFF 'DESHABILITAR BARRA DE HERRAMIENTAS
!RTIM ON 'EJE HORIZ. MUESTRA HORA DEL RELOJ DEL PC REMOTO
!YLBL TEMPERATURA
!XLBL TIEMPO
!ECHO ON
!SPAN 20,40 'TENDIDO DEL EJE VERTICAL
!PLOT ON 'ACTIVAR LA GRAFICACIN DE LOS DATOS
!RSET 'RE-INICIALZAR GRAFICA
!POBJ oBACK=7 'FONDO DE LOS OBJETOS
!SHFT ON
!TMAX 250
!MAXT
!STAT ESTACION DE MONITOREO TCP/IP
'TITULO PARA EL CUADRO DE USUARIO (USER BOX)

'MEDIDOR ***************************************************************************
'DEFINIR MEDIDOR QUE MUESTRA EL VALOR DE LA TEMPERATURA
!POBJ oMeter.Medidor=72,90,27,27,-55,125,,

Sistema de Desarrollo para MC, modelo MDK-B28 - 314 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del Macro: Macro_10_3.spm

'ETIQUETAS *************************************************************************
'ETIQUETAS PARA MOSTRAR LOS VALORES ACTUALES DE: PUNTO DE AJUSTE, VARIABLE DE
'PROCESO Y EL ESTADO DEL CALENTADOR
!POBJ oLabel.Etiqueta1=71,55,30,10,PUNTO DE AJUSTE,7,0,10
!POBJ Etiqueta1.Font=TAHOMA,10,1,0

!POBJ oLabel.Set_Point=92,55,4,4,0,7,0,10
!POBJ Set_Point.Font=TAHOMA,10,1,0
!POBJ oLabel.Etiqueta3=71,50,30,10,VARIABLE DE PROCESO,7,0,10
!POBJ Etiqueta3.Font=TAHOMA,10,1,0
!POBJ oLabel.Var_Proc=92,50,4,4,0,7,0,10
!POBJ Var_Proc.Font=TAHOMA,10,1,0
!POBJ oLabel.Etiqueta3=75,17,16,14,\n CALENTADOR,7,0,12,1
!POBJ Etiqueta3.Font=TAHOMA,12,1,0

'LED *******************************************************************************
'DEFINIR EL LED QUE INDICA EL ESTADO DEL CALENTADOR
!POBJ oImgBut.Led1=91,17,7,14,comp\Led_wood_0.jpg,1,comp\Led_wood_1.jpg
!POBJ Led1.Tip=Estado del Calentador
ENDMAC

Luego de establecer la comunicacin a travs del protocolo TCP/IP, aumente el punto de ajuste a 35C
presionando el pulsador SW2. Observe que a medida que el valor del Set Point aumenta en la pantalla LCD,
tambin lo hace en la interfaz que se ejecuta en el computador remoto. Permita al controlador actuar y
observe la respuesta del lazo en el computador remoto.

Sistema de Desarrollo para MC, modelo MDK-B28 - 315 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Objetivos: Utilizar al BASIC Stamp para implementar un algoritmo de control proporcional de temperatura. Emplear el macro
StampDAQ como herramienta para la adquisicin de datos.

Elementos a Utilizar
El objetivo de establecer un lazo de control en un
proceso, es mantener constante alguna condicin del
(1) BASIC Stamp 2p. sistema.
(1) Resistencia de 220 Ohms.
(1) DS1620, Termmetro/Termostato digital Para poder efectuar esto, se deber agregar
(1) Driver de Potencia. continuamente la misma cantidad de energa que
(1) Resistencia de 10 KOhms. pierde el proceso. Si las prdidas del sistema fuesen
(1) Un cable serial DB9.
(1) StampW (v2.0 beta 2.1 o superior). constantes, el control del proceso sera tan simple como
(1) StampDAQ (Macro VB para Microsoft Excel ). aplicar un nivel fijo a la salida del controlador (esto es
(1) Programa StampPlot V3 (rev 1.6 o superior). justamente lo que hace un control a lazo abierto).

Sin embargo, los factores que afectan un proceso son cambiantes y deben considerarse las demoras en la
reaccin del sistema (tiempos de retardo). Un cambio en las condiciones energticas del proceso no se
reflejar inmediatamente en la salida, as como tampoco lo har un cambio en la salida del controlador.

Como ejemplo de esto, observe que los controladores ON/OFF con o sin banda diferencial utilizados en
ejercicios anteriores, al momento de encender el calentador siempre inyectan una cantidad superior de
energa (calorfica) a la requerida por el sistema para alcanzar el punto deseado. Al apagarse el calentador,
las prdidas del sistema hacen que la temperatura disminuya hasta alcanzar el punto de disparo del
controlador, repitindose este ciclo indefinidamente.

Ahora bien, imagine que el sistema de control que se ha construido se instale en un equipo de calefaccin
industrial, una caldera por ejemplo. Esta sobreexcitacin del sistema pudiera con facilidad hacer que la
temperatura aumente a niveles insoportables para el mismo, ocasionando terribles daos para la instalacin.

Existen algoritmos de control que permiten regular de una manera adecuada la cantidad de energa que se
aplica al sistema. Uno de los ms utilizados se conoce como Control Proporcional. Este mecanismo de
control permite que, mientras ms alejada se encuentre la variable de proceso del set point, ms cantidad
de energa se agregue o retire del proceso.

Para el desarrollo de este ejercicio, ser necesario aplicar una seal que produzca un calentamiento variable.
Una forma de lograr esto, es por medio del comando PWM del PBASIC. Antes de proseguir con el desarrollo
del controlador proporcional, se explorar el efecto del comando PWM sobre la temperatura del sistema.

Sistema de Desarrollo para MC, modelo MDK-B28 - 316 -


www.roso-control.com
Captulo No. 10. Control de Procesos

En este ejercicio se introduce el uso de una herramienta de software muy verstil y sencilla de usar: el
StampDAQ. StampDAQ es un macro de Visual BASIC desarrollado por Parallax, Inc que permite efectuar la
adquisicin de datos en el microcontrolador y descargarlos directamente en una hoja de clculo del conocido
programa Microsoft Excel. La informacin es enviada y/o recibida por medio del puerto serial del PC. En esta
pequea aplicacin, se ha tomado una hoja de clculo y se han colocado en ella los siguientes datos:

Hora a la que se termin de aplicar el comando PWM.


Ciclo til de la seal de PWM.
Porcentaje de excitacin correspondiente (255 significa un 100%).
Temperatura alcanzada.

En base a esta informacin, se determinar la ecuacin de una recta de aproximacin para la relacin
Temperatura vs. Porcentaje de Excitacin. A medida que se reciben los datos, se elabora una grfica de la
temperatura obtenida (color rojo) y cuando se ha obtenido la mitad de los puntos experimentales, se
comienza a graficar la recta de aproximacin (color azul).

Arme el montaje de la figura No. 10.8 (puede omitir la conexin del LCD). Encienda el MDK-B28 y descargue
el programa 10_4.bsp.

'Programa 10_4.bsp
'Este programa permite obtener la relacin entre la PWM generada por el BS2p y la
'temperatura alcanzada por el calentador del sistema de desarrollo MDK-B28
'Requiere del uso del archivo 10_4.xls (que contiene al macro StampDAQ)
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

TempA CON 250 'Temperatura alta = 125C (Alarmas del DS1620)


TempB CON 0 'Temperatura baja = 0C
LeerTemp CON $AA 'Comando para leer temperatura
InicioConv CON $EE 'Comando para iniciar conversin
ConfiTerm CON $0A 'Configurar al DS1620 como termmetro
ConfiTalta CON $01 'Comando para configurar temperatura alta
ConfiTbaja CON $02 'Comando para configurar temperatura baja
EscRegCon CON $0C 'Escribir en el registro de configuracin del DS1620

Sistema de Desarrollo para MC, modelo MDK-B28 - 317 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del programa 10_4.bsp

MOSI PIN 0 'Terminal de Datos del bus 3-Wire conectado a P0


SCK PIN 1 'Seal de reloj
SS2 PIN 2 'Seal de habilitacin del DS1620
CAL PIN 8 'Terminal conectado al calentador
BUZ PIN 11 'Altavoz piezoelctrico conectado a P11

Temp VAR Word 'Temperatura medida


i VAR Word 'Cantidad de veces que se repite la instruccin PWM
x VAR Byte 'Ciclo til de la seal de PWM
'___________________________________________________________________________________
'Programa Principal

LOW SS2 'Deshabilita al DS1620


GOSUB Init_Temp 'Inicializa al DS1620 para trabajar como termmetro
LOW CAL 'Apaga el calentador del sistema
PAUSE 500
GOSUB Leer_Temperatura 'Mide la temperatura inicial
GOSUB Init_StampDAQ 'Inicializa y configura al StampDAQ
'Se obtendrn 51 puntos de la curva Temperatura vs % PWM

FOR x = 5 TO 255 STEP 5


'Incrementa el valor del ciclo til en 5 unidades por cada paso (un 2% aprox.)
FREQOUT Buz,500,1200 'Sonido indicando que se est aplicando una nueva PWM
FOR i = 0 TO 167 'Genera la PWM durante 25 segundos para cambiar la temp.
PWM CAL,x,230 'Aplica 230 ciclos de PWM con una duracin de 150 ms
NEXT
GOSUB Leer_Temperatura 'Lee la temperatura obtenida
GOSUB Actualiza_StampDAQ 'Actualiza los datos en la hoja de clculo
NEXT

LOW CAL 'Apaga el calentador al finalizar


DEBUG "MSG, PRUEBA TERMINADA" ,CR
END 'Fin del programa, el BS2p entra en modo de bajo consumo

'===================================================================================

'SUBRUTINAS
'Rutina que permite inicializar el DS1620 como termmetro
Init_Temp:
HIGH SS2 'Habilitar al DS1620
SHIFTOUT MOSI,SCK,LSBFIRST,[EscRegCon,ConfiTerm] 'Enviar el byte de configuracin
GOSUB Rset

Sistema de Desarrollo para MC, modelo MDK-B28 - 318 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del programa 10_4.bsp

SHIFTOUT MOSI,SCK,LSBFIRST,[ConfiTAlta,TempA\9] 'Configura el registro TH


GOSUB Rset 'Reset luego del 9no Bit
SHIFTOUT MOSI,SCK,LSBFIRST,[ConfiTbaja,TempB\9] 'Configura el registro TL
GOSUB Rset 'Reset luego del 9no Bit
SHIFTOUT MOSI,SCK,LSBFIRST,[InicioConv] 'Iniciar la conversin
LOW SS2 'Deshabilita al DS1620
RETURN

'Rutina para generar un reset del DS1620


Rset:
LOW SS2 : PAUSE 5 : HIGH SS2
RETURN

'Rutina para leer la temperatura


Leer_Temperatura:
HIGH SS2 'Habilitar al DS1620
SHIFTOUT MOSI,SCK,LSBFIRST,[LeerTemp] 'Comando para leer la temperatura
SHIFTIN MOSI,SCK,LSBPRE,[Temp\9] 'Guardar la temp. en la variable Temp
LOW SS2 'Deshabilitar al DS1620
Temp = 5*Temp 'Expresa la temp. en C, el LSD de Temp
RETURN 'contiene la parte decimal

'La rutina Init_StampDAQ inicializa al macro StampDAQ


Init_StampDAQ:
DEBUG "CLEARDATA",CR 'Borra la hoja de datos del StampDAQ
DEBUG "LABEL,INICIO,PWM,% SALIDA,TEMP",CR 'Etiquetas para las columnas
DEBUG "MSG, Iniciando Prueba ...",CR 'Mensaje mostrado en el USRS BOX
DEBUG "DATA,TIME,",DEC X,",",DEC 100*X/255,",",DEC (Temp/10),".",DEC Temp DIG 0,CR
'Enva los datos correspondientes al inicio de la prueba
RETURN

'La rutina Actualiza_StampDAQ actualiza el texto en la caja de mensajes que muestra


'el progreso de la prueba as, como el contenido de la hoja de clculo con los datos
'correspondientes a la hora, el ciclo til de la PWM, el porcentaje de excitacin
'aplicada al calentador y la temperatura alcanzada
Actualiza_StampDAQ:
DEBUG "MSG, Porcentaje Completado = ",DEC 100*X/255,"%",CR
DEBUG "DATA,TIME,",DEC X,",",DEC 100*X/255,",",DEC (Temp/10),".",DEC Temp DIG 0,CR
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 319 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Cierre el debug terminal y abra el archivo 10_4.xls que contiene al macro StampDAQ.

Haga clic en la casilla Connect y presione el pulsador de RESET del sistema MDK-B28.

En la hoja de clculo se mostrar la temperatura que mide el DS1620, el valor del parmetro Ciclo til de
la instruccin PWM y el porcentaje de excitacin correspondiente. Anote el valor de la temperatura inicial
Tinicial = _________ C.

A medida que el programa se ejecuta, ver como la hoja de datos se llena y la temperatura del sistema
aumenta de manera similar a la mostrada en la figura No. 10.20.

En las dos primeras celdas de la columna llamada PINF, comenzar a aparecer el promedio de la mitad
inferior de las muestras (correspondientes a las temperaturas alcanzadas mientras el ciclo til aumenta de
0% a 50%). De manera similar, debajo de PSUP podr verse como se calcula el promedio de la mitad
superior de las muestras. Estos promedios sern los dos puntos pertenecientes a la recta de aproximacin
utilizados para determinar su ecuacin.

La celda Pendiente C/% contiene el valor de la pendiente de la recta de aproximacin.

El programa 10_4.bsp permite observar la relacin existente entre la seal aplicada al elemento final de
control (el calentador) y la variable del proceso (la temperatura), es decir, obtiene la respuesta a lazo
abierto del sistema. Para lograr que el sistema trmico se estabilice ante un cambio en la energa aplicada al
mismo (una variacin de la seal de PWM), se debe esperar un tiempo relativamente largo, por ello, cada
vez que se vara el ciclo til de la onda se genera la PWM durante 25 segundos.

Nota: La duracin del tiempo de estabilizacin del lazo fue determinado experimentalmente en unos 6 minutos. Sin embargo, la
pendiente de la ecuacin de aproximacin que se obtiene con el programa 10_4.bsp es bastante fiel al comportamiento del sistema, as
que puede utilizarse obteniendo resultados correctos.

Anote el valor de temperatura final obtenido Tfinal = __________ C.


Determine la diferencia entre Tfinal y Tinicial Tfinal - Tinicial = _________ C.

Este rango de temperatura, define la capacidad de operacin mxima que tendr el controlador.
En base a los valores experimentales, obtenga la ecuacin de la recta que aproxima a la relacin
Temperatura vs. Porcentaje de Excitacin.

T = 0.1356 % Salida + Tinicial

Sistema de Desarrollo para MC, modelo MDK-B28 - 320 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Figura No. 10.20: Respuesta a lazo abierto del sistema captada con el StampDAQ.
Fuente: Elaboracin Propia.

Calcule la temperatura que alcanzar el lazo cuando la salida del controlador sea 50%. T50% = ____C.

Nota: Si la pendiente obtenida difiere significativamente del valor mostrado, efecte los clculos en base a sus resultados
experimentales.

Ahora bien, la salida del controlador proporcional est determinada por la ecuacin:

m( t) = m + K C e(t )

Sistema de Desarrollo para MC, modelo MDK-B28 - 321 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Con la evaluacin de esta expresin deber tenerse sumo cuidado, al efectuar un simple anlisis
dimensional, se har evidente que el manejo de las unidades en las que se introduce Kc puede provocar
resultados errneos.

Para ejemplificar esto, supngase que la salida del controlador m(t) se expresa como porcentaje (0% a
100%). Esto obliga a que el valor de estado estacionario m sea tambin un porcentaje. Segn la definicin
de error: e(t) = Sp Vp(t) , e(t) tiene las mismas unidades de la variable del proceso (temperatura en C,
por ejemplo). En consecuencia, la ganancia del controlador Kc debe tener, en principio, unidades de:
porcentaje de salida del controlador (%SC) / unidades de la Vp.

Al momento de establecer las ecuaciones para implementar los clculos con el microcontrolador, debe tomar
una decisin entre dos posibles opciones:

1. Expresar a Kc en unidades de %SC / unidades de la Vp ( %SC / C, por ejemplo).


2. Permitirle a la ganancia ser adimensional y expresar al error como un porcentaje.

Para este ejercicio, se ha decidido implementar la primera solucin mediante el programa 10_5.bsp. Una vez
entendido el funcionamiento de ste, se proponen las modificaciones a efectuar para que usted cree el
programa 10_6.bsp con la implementacin de la segunda solucin.

Descargue el programa 10_5.bsp en el BASIC Stamp 2p y ejectelo.

Haga clic sobre el botn Close del debug terminal.

Guarde el macro que se presenta a continuacin con el nombre Macro_10_5.spm en la carpeta Macro del
StampPlot Pro.
!PPER 70,100 'RELACION ENTRE EL AREA DE GRAFICACION Y LA DE OBJETOS

'ESTE MACRO SE EJECUTA CON EL PROGRAMA 10_5.bsp.


'EN EL AREA DE OBJETOS SE DEFINEN: UN MEDIDOR DE TEMPERATURA ANALOGICO, DOS BOTONES
'PARA CAMBIAR EL SET POINT Y LA GANANCIA DEL CONTROLADOR, UN INTERRUPTOR QUE ACTIVA
'/ DESACTIVA LA SALIDA DEL CONTROLADOR. EL VALOR DEL SET POINT, LA GANANCIA Y DEL
'PORCENTAJE (%) DE SALIDA DEL CONTROLADOR SE MUESTRAN POR MEDIO DE ETIQUETAS.
Inicio:

!NEWP
!POBJ clear
'Borrar objetos

Sistema de Desarrollo para MC, modelo MDK-B28 - 322 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del Macro: Macro_10_5.spm

!POBJ oBACK=7 'FONDO DEL AREA DE OBJETOS EN GRIS CLARO


!MENU OFF 'DESACTIVAR LA BARRA DE MENU
!TBAR OFF 'DESACTIVAR LA BARRA DE HERRAMIENTAS
'TITULOS DE LA VENTANA, EJE VERTICAL Y HORIZONTAL
!TITL Control Proporcional
!YLBL TEMPERATURA
!XLBL TIEMPO
!TMAX 600 'TIEMPO MAXIMO = 600 SEGUNDOS
!MAXT 'MAXIMO DE LA GRAFICA BASADO EN TIEMPO
!PLOT ON 'ACTIVA LA GRAFICACION
!SPAN 20,50 'EJE DE LA TEMPERATURA DE 25 A 50 GRADOS CENTIGRADOS
!RSET 'REINICIALIZA LA GRAFICA
!ECHO ON
'MENU CONTEXTUAL *******************************************************************
!BUTC 0,*** MENU DE CONTROL ***,
!BUTC 1,EJECUTAR MACRO, !MACR Macro_10_5
!BUTC 2,-------------------------------,
!BUTC 3,NUEVA GRAFICA,!NEWP
!BUTC 4,RESET GRAFICA,!RSET
!BUTC 5,ACTIVAR GRAFICA,!PLOT ON
!BUTC 6,DESACTIVAR GRAFICA,!PLOT OFF
!BUTC 7,AUTO ESCALA,!ASCL
!BUTC 8,CAPTURAR PANTALLA,!SNAP ControlP
!BUTC 9,IMPRIMIR GRAFICA,!PRNT
!BUTC 10,--------- CONEXION --------- ,
!BUTC 11,CONECTAR,!CONN ON
!BUTC 12,DESCONECTAR,!CONN OFF

'MEDIDOR ***************************************************************************
'DEFINIR MEDIDOR QUE MUESTRA EL VALOR DE LA TEMPERATURA
!POBJ oMeter.Medidor=72,97,27,27,20,50,,

'PULSADORES ************************************************************************
'PULSADORES PARA INTRODUCIR LA CONFIGURACION DEL CONTROLADOR PROPORCIONAL
!POBJ oButton.Boton1=72,65,12,8,Punto de Ajuste,8
!POBJ Boton1.tip=Configurar Set Point
!POBJ oButton.Boton2=87,65,12,8,Constante Proporcional,8
!POBJ Boton2.tip=Configurar Constante Proporcional

Sistema de Desarrollo para MC, modelo MDK-B28 - 323 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del Macro: Macro_10_5.spm

'ETIQUETAS *************************************************************************
'ETIQUETAS PARA MOSTRAR LOS VALORES ACTUALES DE: PUNTO DE AJUSTE, CONSTANTE
'PROPORCIONAL Y LA SALIDA DEL CONTROLADOR PROPORCIONAL
!POBJ oLabel.Etiqueta1=71,50,25,12,Set Point (C),7,0,9,0
!POBJ Etiqueta1.F=Tahoma,9,1,0
!POBJ oLabel.Etiqueta2=93,50,4,4,%m10,7,0,9,0
!POBJ Etiqueta2.Font=Tahoma,9,1,0
!POBJ oLabel.Etiqueta3=71,45,25,12,Ganancia Kc (%/C),7,0,9,0
!POBJ Etiqueta3.Font=Tahoma,9,1,0
!POBJ oLabel.Etiqueta4=93,45,5,4,%m11,7,0,9,0
!POBJ Etiqueta4.Font=Tahoma,9,1,0
!POBJ oLabel.Etiqueta5=71,40,25,12,Salida del Controlador (%),7,0,9,0
!POBJ Etiqueta5.Font=Tahoma,9,1,0
!POBJ oLabel.Etiqueta6=93,40,5,4,0,7,0,9,0
!POBJ Etiqueta6.Font=Tahoma,9,1,0
!POBJ oLabel.Etiqueta7=81,28,12,4,CONTROLAR,7,0,10,0
!POBJ Etiqueta7.Font=TAHOMA,10,1,0
!POBJ oLabel.Etiqueta8=81,20,12,4,AJUSTAR,7,0,10,0
!POBJ Etiqueta8.Font=TAHOMA,10,1,0
'INTERRUPTOR ***********************************************************************
'PARA ACTIVAR O DESACTIVAR LA ACCION DEL CONTROLADOR
!POBJ oImgBut.Switch1=73,28,7,12,comp\switch_0.jpg,1,comp\switch_1.jpg
!POBJ Switch1.Tip=Accionar el Lazo de Control!

'EVENTOS ***************************************************************************
'DEFINIR LOS EVENTOS A EJECUTAR
'AL PRESIONAR A Boton1, SE ABRE UN CUADRO DE DIALOGO POR 10 SEGUNDOS EN EL QUE SE
'DEBE INTRODUCIR EL SET POINT. EL NUEVO SET POINT SE ALMACENA EN LA VARIABLE %m10
'REDONDEANDO A UN DECIMAL EL VALOR INTRODUCIDO Y MULTIPLICANDOLO POR 10 PARA
'AJUSTARLO AL FORMATO USADO EN EL PROGRAMA
!POBJ Boton1.C=!MREQ 0,10,Set Point,10(ER)!MATH %m10=%m10,Format,0.0 (;)
!MATH %m10=%m10,*,10
'LA GANANCIA DEL CONTROLADOR SE SOLICITA Y ALMACENA DE MANERA SIMILAR AL SET POINT
'PERO SE GUARDA EN LA VARIABLE %m11
!POBJ Boton2.C=!MREQ 0,10,Ganancia,11(ER)!MATH %m11=%m11,Format,0.0 (;)
!MATH %m11=%m11,*,10

'CUANDO SE PULSA EL INTERRUPTOR, EL ESTADO DEL MISMO SE ALMACENA EN %m12, DE DONDE


'PODRA SER FACILMENTE LEIDO POR EL BASIC STAMP
!POBJ Switch1.C=!MATH %m12=((ME))
ENDMAC

Sistema de Desarrollo para MC, modelo MDK-B28 - 324 -


www.roso-control.com
Captulo No. 10. Control de Procesos

'Programa 10_5.bsp
'Este programa tiene por objetivo implementar un controlador proporcional
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
TempA CON 250 'Temperatura alta = 125C (Alarmas del DS1620)
TempB CON 0 'Temperatura baja = 0C
LeerTemp CON $AA 'Comando para leer temperatura
InicioConv CON $EE 'Comando para iniciar conversin
ConfiTerm CON $0A 'Configurar al DS1620 como termmetro
ConfiTalta CON $01 'Comando para configurar temperatura alta
ConfiTbaja CON $02 'Comando para configurar temperatura baja
EscRegCon CON $0C 'Escribir en el registro de configuracin del DS1620
Reset_Manual CON 500 'Salida del controlador cuando no existe error
SetPoint CON 310 'Punto de ajuste por defecto
Ganancia CON 074 'Ganancia inicial del controlador (%SC/C)
SINPin CON 16 'Terminal SIN (2) del BASIC Stamp
Baudios CON 240 'No-Invertido, 9600 bsp, sin paridad
Tiempo_Espera CON 1250 'Tiempo de espera cuando se piden datos al StampPlot
MOSI PIN 0 'Terminal de Datos del bus 3-Wire conectado a P0
SCK PIN 1 'Seal de reloj
SS2 PIN 2 'Seal de habilitacin del DS1620
CAL PIN 8 'Terminal conectado al calentador
BUZ PIN 11 'Altavoz piezoelctrico conectado a P11
Temp VAR Word 'Temperatura del proceso
Sp VAR Word 'Punto de ajuste o Set Point
Kp VAR Word 'Ganancia del controlador
Accion VAR Word 'Excitacin que se aplica al calentador
Aux VAR Word 'Var. aux. de uso general
Digito VAR Byte 'Var. aux. que contiene la parte decimal de los datos
i VAR Byte 'Variable de uso general
Signo VAR Bit 'Bit de signo
Selector VAR Bit 'Estado del interruptor en la interfaz de control
'___________________________________________________________________________________
'Programa Principal
DEBUG "!MACR Macro_10_5.Inicio",CR 'Rutina de inicializacin del Macro_10_5.spm
PAUSE 2000
DEBUG "!MATH %m10=",DEC SetPoint ,CR 'Enva el valor por defecto del punto de ajuste
DEBUG "!MATH %m11=",DEC Ganancia,CR 'Enva la ganancia del controlador
DEBUG "!MATH %m12=",DEC 0,CR 'Accin por defecto = Ajustar el lazo
GOSUB InTemp

Sistema de Desarrollo para MC, modelo MDK-B28 - 325 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del programa 10_5.bsp

LOW CAL
DO
Leer_Accion:
DEBUG "!Read %m12",CR 'Leer el estado del interruptor
SERIN SINPin, Baudios, Tiempo_Espera , Leer_Accion, [DEC Selector] : PAUSE 250
GOSUB Generar_Salida 'Genera la seal de control
ON Selector GOSUB Configurar,Control 'Ejecuta alguna de las dos rutinas
LOOP 'dependiendo del interruptor
'===================================================================================
'SUBRUTINAS
'Rutina para inicializar el DS1620 como termmetro
InTemp:
HIGH SS2 'Habilitar al DS1620
SHIFTOUT MOSI,SCK,LSBFIRST,[EscRegCon,ConfiTerm] : GOSUB Rset 'Enviar config.
SHIFTOUT MOSI,SCK,LSBFIRST,[ConfiTAlta,TempA\9] : GOSUB Rset 'Enviar temp. alta
SHIFTOUT MOSI,SCK,LSBFIRST,[ConfiTbaja,TempB\9] : GOSUB Rset 'Enviar temp. baja
SHIFTOUT MOSI,SCK,LSBFIRST,[InicioConv ] : GOSUB Rset 'Iniciar la medicin
LOW SS2 'Deshabilitar al DS1620
RETURN
'Rutina para producir un reset del DS1620
Rset:
LOW SS2 : PAUSE 5 : HIGH SS2
RETURN
'Configurar, lee el valor de los parmetros del controlador y actualiza la interfaz
Configurar:
Accion = 0 : LOW cal 'Garantizar que no se genera accin de control
Leer_Sp:
DEBUG "!Read %m10",CR 'Leer punto de ajuste
SERIN SINPin, Baudios, Tiempo_Espera , Leer_Sp, [SDEC Sp] : PAUSE 150
Leer_Kp:
DEBUG "!Read %m11",CR 'Leer ganancia proporcional
SERIN SINPin, Baudios, Tiempo_Espera , Leer_Kp, [DEC Kp ] : PAUSE 150
GOSUB Leer_Temperatura 'Medir la temperatura del sistema
Aux = Temp
GOSUB Actualizar_Medidor 'Actualizar el medidor y la grfica
FOR i= 0 TO 2 'Actualizar las etiquetas de la interfaz
LOOKUP i,[Sp,kp,Accion],Aux
GOSUB Manejar_Signo
DEBUG "!POBJ Etiqueta",DEC (2*i+2),"=",SDEC Aux,".",DEC Digito,CR
NEXT
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 326 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del programa 10_5.bsp

'Rutina para leer la temperatura


Leer_Temperatura:
HIGH SS2 'Habilitar al DS1620
SHIFTOUT MOSI,SCK,LSBFIRST,[LeerTemp] 'Comando para leer la temperatura
SHIFTIN MOSI,SCK,LSBPRE,[Temp\9] 'Recibir la temperatura del DS1620
LOW SS2 'Deshabilitar al DS1620
IF Temp.BIT8 =1 THEN Temp =-(512-Temp) 'Ajuste de la medida si es negativa
Temp = 5*Temp 'Formato a tres enteros y un decimal
RETURN
'Actualizar_Medidor muestra la temp. en el medidor analgico y actualiza la grfica
Actualizar_Medidor:
GOSUB Manejar_Signo 'Manejo del signo y de los decimales
DEBUG "!POBJ Medidor=",SDEC Aux,".",DEC Digito,CR
DEBUG SDEC Aux,".",DEC Digito , CR 'Enva la parte entera con signo y luego
RETURN 'el decimal
'Manejar_Signo coloca en la variable Aux la parte entera de la temperatura y en
'Digito la parte decimal. Adems efecta la correccin del signo para poder utilizar
'el operador DIG
Manejar_Signo:
Signo = Aux.BIT15 'Signo almacena si el nmero es negativo o no
IF Signo = 1 THEN Aux = -Aux 'Si es negativo, lo hace positivo para poder
Digito = Aux DIG(0) 'usar DIG y extraer la parte decimal
Aux=Aux/10 'En Aux queda la parte entera
IF Signo = 1 THEN Aux = -Aux 'Coloca el signo adecuado
RETURN

'Rutina para generar la accin de control proporcional


Control:
GOSUB Leer_Temperatura 'Leer la temperatura actual
GOSUB Calculo_P 'Calcular la excitacin del calentador
GOSUB Generar_Salida 'Generar la seal de PWM de control
Aux = Temp
GOSUB Actualizar_Medidor 'Actualizar el medidor y la grfica
RETURN

'Rutina para calcular la salida del controlador


Calculo_P:
Aux = Temp
Aux = Sp-Temp 'Determina el error
Signo = Aux.BIT15 'Signo indica si aumenta o disminuye la salida
Aux = ((ABS Aux) * Kp) 'Clculo de la excitacin proporcional

Sistema de Desarrollo para MC, modelo MDK-B28 - 327 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Continuacin del programa 10_5.bsp

Aux = ((Aux DIG(0)/5)*10) + Aux 'Redondeo de la parte decimal


Aux = Aux / 10 'Ajuste de formato
IF Signo = 1 THEN Aux = -Aux 'Ajuste del signo
Accion = Aux + Reset_Manual 'Clculo de la salida del controlador en %
IF (Accion.BIT15 = 1) THEN 'Corrige si el clculo es menor que cero
FREQOUT Buz,2500,1500 : Accion = 0
ELSE
Accion = Accion MAX 1000 'Limita la salida al 100 %
ENDIF
DEBUG "!POBJ Etiqueta6=",DEC (Accion/10),".",DEC Accion DIG 0,CR
'Actualiza la etiqueta correspondiente a la salida del controlador en la interfaz
Accion = (Accion */$42) MAX 255 'Ajusta la salida de 0 a 255 multiplicando
RETURN 'por 0.255
'Rutina para generar la salida del controlador, produce una PWM por 3 segundos y
'actualiza el cuadro de mensajes del usuario con el valor del ciclo til de la PWM
Generar_Salida:
FOR i = 0 TO 20
PWM CAL,Accion,230
NEXT
DEBUG "!STAT","PWM = ", DEC3 Accion,CR
RETURN

Realice la conexin entre el microcontrolador y el StampPlot Pro. Para ello,


haga clic con el botn derecho del ratn y le aparecer un men contextual
como el de la figura No. 10.21, en l seleccione la opcin CONECTAR.
Aplique una seal de reset al BASIC Stamp. Al cargarse la rutina Inicio del
macro Macro_10_5.spm se crear la interfaz del controlador, ver figura No.
10.22.
Ajuste el set point al valor de temperatura que se produca cuando la salida
del controlador era de 50 %.
Haga clic sobre el interruptor de control que se encuentra en la parte
inferior derecha de la pantalla para cambiarlo a la posicin Controlar. La
salida controlador deber aumentar rpidamente (puede

momentneamente alcanzar hasta el 100%). Con ello energizar al Figura No. 10.21:
calentador produciendo un aumento de la temperatura. Men contextual definido en el
macro Macro_10_5.spm.
Fuente: Elaboracin Propia.
Sistema de Desarrollo para MC, modelo MDK-B28 - 328 -
www.roso-control.com
Captulo No. 10. Control de Procesos

A medida que la temperatura del sistema se acerca al punto de ajuste, la salida del controlador comienza a
disminuir, esto ocasiona que los aumentos de temperatura sean cada vez menores, es decir, la accin
correctiva se hace menor cuando disminuye el error. La temperatura deber alcanzar el punto de ajuste, ver
figura No.10.22.

Figura No. 10.22: Interfaz grfica del controlador Proporcional.


Fuente: Elaboracin Propia.

Es muy probable que el lazo jams alcance la temperatura deseada, esto se debe al mencionado offset que
presenta el controlador proporcional ante los cambios de carga prolongados. Aqu el cambio de carga que
ms afecta al lazo es la variacin en la temperatura ambiente. Otra fuente de perturbacin permanente
sern las corrientes de aire, pero al no ser stas constantes el controlador podr manejarlas. Si la diferencia
entre la temperatura alcanzada y la deseada luego de transcurrir unos 300 segundos es muy grande (ms
de 2C) puede llevar a cabo el siguiente procedimiento de ajuste:

Sistema de Desarrollo para MC, modelo MDK-B28 - 329 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Coloque el interruptor en la posicin Ajustar.


Ajuste la ganancia del controlador en cero.
Active la accin del controlador colocando el interruptor en la posicin Controlar.
Una vez que la curva se estabilice, se tomar este valor de temperatura como el punto de ajuste.
Coloque el selector en la posicin Ajustar.
Retorne la ganancia del lazo al valor inicial y ajuste el valor del nuevo set point.

Active el lazo de control y una vez que el sistema se encuentre en la temperatura deseada, ocasinele
perturbaciones soplando el calentador con un pequeo ventilador o cualquier otro mecanismo. Observe la
respuesta del controlador ante tal situacin.

Desconecte el cable que une a los terminales P8 y CAL en la regleta de conexiones. Aplique una tensin de
+5 Voltios al terminal CAL durante unos 15 20 segundos, posteriormente vuelva conectarlo con P8 y
observe la reaccin del lazo ante tal perturbacin.

Coloque el interruptor en la posicin Ajustar y espere hasta que el sistema se encuentre a temperatura
ambiente. Nota: Puede utilizar algn mecanismo de ventilacin para acelerar este proceso.

Cambie la ganancia del controlador proporcional a 25 % /C y encienda el controlador (Controlar).


Espere hasta que el lazo se estabilice, ver figura No 10.23. Repita las perturbaciones ocasionadas
anteriormente y vea la respuesta en este caso.

El valor de la ganancia del controlador proporcional afecta la velocidad con la que se corrige el error,
mientras ms grande sea, mayor fuerza tiene la accin correctiva. Sin embargo, aumentar
indiscriminadamente la ganancia har que el controlador comience a parecerse ms a un control ON/OFF
que a un Proporcional. Cuando esto ocurre se dice que el sistema est teniendo una respuesta oscilatoria,
condicin totalmente indeseable en un lazo de control continuo.

Si desea observar una respuesta oscilatoria del sistema puede seguir el siguiente procedimiento:
Cambie el selector a la posicin Ajustar y espere hasta alcanzar la temperatura ambiente.
Ajuste la ganancia Kc en 100 %/C.
Coloque el selector de funcin del controlador en Controlar.

Al hacer esto, obtendr un comportamiento similar al de la figura No. 10.24.

Al finalizar, desconecte al StampPlot Pro del microcontrolador (seleccione DESCONECTAR en el men


contextual).

Sistema de Desarrollo para MC, modelo MDK-B28 - 330 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Figura No. 10.23: Efecto de aumentar la ganancia del controlador (Kc).


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 331 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Figura No. 10.24: Respuesta oscilatoria ocasionada por una ganancia muy grande.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 332 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Es muy comn que la ganancia de un controlador se exprese de manera adimensional, para ello deber
expresarse al error como un porcentaje. Pero, un porcentaje de qu?. La respuesta es simple, el porcentaje
de error se define con respecto al intervalo o rango de la variable del proceso en el cual puede actuar el
controlador desde el punto donde su salida es 0% (completamente apagado) hasta alcanzar la mxima
salida (100% o completamente encendido). Para determinar este error porcentual deber aplicarse la
siguiente ecuacin:
Sp Vp(t)
Error %(t) = 100 %
Rango de Control

Un ejemplo permite ilustrar este concepto. Si el Rango de Control se define en 10C, el error porcentual
es:
Sp Vp
Error % = 100 %
10C

Si la variable del proceso se aleja 5C por debajo del punto de ajuste, el Error % ser igual al 50%.

Para continuar con el ejercicio, se establecer el rango como la diferencia entre la temperatura inicial y final
obtenida cuando se ejecut el programa 10_4.bsp. Rango = __________ C.

Guarde una copia del programa 10_5.bsp con el nombre 10_6.bsp.

En la seccin de declaracin de constantes, incluya una constante llamada Rango con el valor obtenido para
el rango de control.

Substituya la rutina Calculo_P con el segmento de cdigo que se muestra en la pgina siguiente.

Descargue el programa 10_6.bsp al BASIC Stamp y ejectelo. Conecte al StampPlot Pro y al BS2p.

Ajuste el set point en el valor utilizado anteriormente y coloque la ganancia en 1 (recuerde que ahora la
ganancia no tiene unidades).

Active el lazo de control y vea la respuesta del mismo.

Efecte todas las experiencias realizadas con el programa 10_5.bsp. Cuando aumente la ganancia colquela
en 3,4; con ello debe obtener una respuesta similar a la figura No. 10.23.

Sistema de Desarrollo para MC, modelo MDK-B28 - 333 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Calculo_P:
Aux = Temp
Aux = Sp-Temp 'Determina el error
Signo = Aux.BIT15 'Signo indica si hay que aumentar o disminuir la salida
Aux = (ABS Aux*100 / Rango) 'Calcula el error porcentual
Aux = ((ABS Aux) * Kp) 'Calculo de la excitacin proporcional
Aux = ((Aux DIG(0)/5)*10) + Aux 'Redondeo de la parte decimal
Aux = Aux / 10 'Ajuste de formato
IF Signo = 1 THEN Aux = -Aux 'Ajuste del signo
Accion = Aux + Reset_Manual 'Clculo de la salida del controlador en porcentaje
IF (Accion.BIT15 = 1) THEN 'Corrige si el clculo es menor que cero
FREQOUT Buz,2500,1500 : Accion = 0
ELSE
Accion = Accion MAX 1000 'Limita la salida al 100 %
ENDIF
DEBUG "!POBJ Etiqueta6=",DEC (Accion/10),".",DEC Accion DIG 0,CR
'Actualiza la etiqueta correspondiente a la salida del controlador en la interfaz
Accion = (Accion */$42) MAX 255 'Ajusta la salida de 0 a 255 multiplicando por 0.255
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 334 -


www.roso-control.com
Captulo No. 10. Control de Procesos

Investigue los siguientes tpicos


1. Qu es control de procesos y para que se utiliza ?.
2. Qu es un bucle de control en lazo abierto y en lazo cerrado ?.
3. Como funciona el control ON/OFF ?.
4. Como funciona el control proporcional ?.
5. Como se define la banda proporcional ?.
6. Qu es un entonamiento de controladores y como se realiza ?.
7. Qu es el protocolo de comunicacin TCP/IP y para que sirve ?.
8. Qu es una direccin IP y para que sirve ?.
9. Defina los siguientes trminos: Paquete, Puerto, Socket, Gateway, Router, Proxy, TCP ?.
10. Qu hace el programa SelmaWare Serial/TCP Gateway ?.
11. Qu es un control On/Off con banda diferencial y para que se utiliza ?.
12. Qu ventajas y desventajas tiene el control On/Off con banda diferencial ?.
13. Como se determina el error en un esquema de control proporcional ?.
14. Cuando el error en rgimen permanente no es cero en un control proporcional ?.

Programacin

1. En base a los ejercicios realizados en el captulo, disee y construya un esquema de control


proporcional + integral + derivativo. Utilice los pulsadores y el LCD para introducir los parmetros
de control. Utilice tambin, el StampPlot Pro como interfaz grfica para visualizar la respuesta en
tiempo de este tipo de control y concluya cual de los algoritmos de control es mas eficiente y por
que ?. Investigue los siguientes tpicos:

Donde se recomienda utilizar un esquema de control Proporcional ?


Donde se recomienda utilizar un esquema de control Proporcional + Integral ?
Donde se recomienda utilizar un esquema de control Proporcional + Derivativo ?
Donde se recomienda utilizar un esquema de control Proporcional + Integral + Derivativo ?

2. Modifique el Macro_10_3.spm y el programa 10_3.bsp para que el valor del set point, pueda ser
ajustado desde el computador remoto.

Sistema de Desarrollo para MC, modelo MDK-B28 - 335 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Captulo No. 11
Movimiento Micro Controlado

Sistema de Desarrollo para MC, modelo MDK-B28 - 336 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Introduccin. Existen gran cantidad de mtodos para producir el movimiento fsico de un mecanismo. Sistemas neumticos que
trabajan a partir de aire presurizado, los sistemas hidrulicos que utilizan fluidos a presin y los sistemas elctricos que utilizan motores
para convertir la energa elctrica en energa mecnica (movimiento). Los motores DC o de corriente continua de pequeo tamao, son
ideales para la educacin; no slo por su reducido costo, sino tambin, por su razonable eficiencia, versatilidad y gran aplicabilidad a los
procesos industriales. Los Motores DC, son ampliamente utilizados en aplicaciones tales como la robtica, mecatrnica y en sistemas de
control. Es ste capitulo se trabajar con un motor DC de imn permanente y con dos tipos de motores de uso muy frecuente en
aplicaciones con microcontroladores: el servomotor y el motor de pasos.

Motores DC:
Los motores DC, son dispositivos que permiten
convertir la energa elctrica en energa
mecnica, la cual, se manifiesta por medio de
un movimiento rotario. Pero, Cmo lo hacen?.

Bsicamente, un motor DC est conformado


por las partes que se muestran en la figura No.
11.1.

Estator: Como su nombre lo indica es la


parte estacionaria del motor. El estator
suministra un campo magntico permanente a
travs de imanes o bobinas arrolladas sobre un
ncleo ferromagntico.

Rotor: Es la parte mvil del motor. Se


Figura No. 11.1: Elementos de un motor DC. construye con un ncleo magntico, sobre el
Fuente: Revista Robots, pg MO-01,2000. cual se encuentran arrolladas un conjunto de
espiras de alambre que rotan alrededor de un
eje fijo.
Escobillas: Su funcin es permitir la circulacin de corriente a travs de las espiras que se encuentran
en el rotor. Estn en contacto con una pieza en movimiento (colector) y son generalmente elaboradas en
carbn, grafito o una mezcla de carbn y grafito. Las escobillas tienen alta conductividad para reducir
prdidas elctricas y tienen un bajo coeficiente de rozamiento para reducir el desgaste excesivo de las
partes en contacto.

Colector: Es un anillo formado por varias lminas (llamadas delgas) aisladas unas de otras y dispuestas
alrededor de un eje. Las bobinas del rotor se conectan a las delgas que estn a su vez en contacto con las

Sistema de Desarrollo para MC, modelo MDK-B28 - 337 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

escobillas, proporcionando el medio para hacer circular corriente en el rotor. El colector se encuentra
slidamente unido al eje del rotor pero aislado elctricamente de ste.

El movimiento del motor DC se basa en que si por un conductor circula una corriente y ste es
sometido a la accin de un campo magntico, se producir una fuerza sobre la longitud del
conductor expuesta al campo. Esta fuerza puede ser entonces utilizada para producir un par de
rotacin. Este principio fsico se conoce como la Ley de Faraday.

En el mundo real, los motores DC no son 100% eficientes. Varias limitaciones del motor, incluyendo las
prdidas por friccin mecnica, causan que parte de la energa elctrica aplicada se pierda en forma de
calor. Los motores DC utilizados, por ejemplo en juguetes, son econmicos pero tpicamente tienen una
eficiencia tan baja como el 50%. Mientras que los motores utilizados en la industria pueden tener eficiencias
promedio de 95%. Normalmente, los requerimientos de potencia en un motor DC, se encuentran expresados
en la hoja de especificaciones del fabricante. Uno de los parmetros fundamentales que se incluye en estas
especificaciones, es el Voltaje de Alimentacin Nominal o voltaje recomendado para la operacin del
motor. La mayora de los motores DC pueden trabajar a menor voltaje del especificado; sin embargo, se
hacen menos eficientes, entregando menos potencia mecnica de salida. Tambin los motores DC operados
a un mayor voltaje del recomendado, pueden entregar mayor potencia de salida, mejoran su eficiencia, pero
su vida til se ver drsticamente reducida. Otro parmetro importante es la Corriente del Motor. Cuando
un motor DC se alimenta a un voltaje constante, el motor consume una corriente que es proporcional al
trabajo que est realizando. Si no existe carga mecnica conectada en su eje (vaco), el motor consumir
una pequea corriente que le permitir vencer su inercia mecnica y alimentar las prdidas internas. Cuando
la carga mecnica aplicada al motor sea tal que pare al rotor; el motor consumir el mximo de corriente. A
sta corriente la llamaremos Stall Current o corriente mxima.

Mientras mayor sea la corriente que consume el motor, entre los lmites de corriente (Min, Max), ste
dispondr de mayor fuerza rotacional o torque en su eje. Esto es una consecuencia directa de la reaccin
entre la corriente que circula por las espiras del rotor y el campo magntico del estator. Frecuentemente los
motores DC se especifican por el trmino Stall Torque o torque mximo. Este trmino, representa la mayor
fuerza rotacional que el eje del motor puede entregar cuando se alimenta al voltaje nominal y consume una
corriente mxima Stall Current.

La potencia disponible en el eje de un motor DC depender entonces del torque aplicado al eje y de la
velocidad rotacional del mismo. Cuando el motor est en vaco, sin carga en el eje, su velocidad rotacional
ser la mxima, pero el par disponible en el eje del motor ser cero, por tanto su potencia de salida ser
tambin cero (el motor se encuentra realmente haciendo algn trabajo, para compensar las prdidas por
friccin, pero esto no se considera potencia de salida). Cuando al motor se le aplica la mxima carga

Sistema de Desarrollo para MC, modelo MDK-B28 - 338 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

mecnica, el motor entonces se parar. En ese momento, se producir el mximo de par pero sin velocidad
rotacional, por ello, de nuevo la potencia de salida ser cero. Entre estos dos extremos (Vaco Torque
Mximo) la potencia de un motor DC se puede representar a travs de una curva parablica como se
muestra en la figura No. 11.2.

Figura No. 11.2: Relacin entre la velocidad, el torque y la potencia de salida en un motor DC.
Fuente: Robotic Explorations, ISBN 0-13-089568-7.

Sistema de Desarrollo para MC, modelo MDK-B28 - 339 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

SERVOMOTORES
Un servomotor, es un motor de corriente continua (DC) especializado,
el cual, puede ser comandado para que gire a una posicin
determinada. Tiene un circuito de control construido en su interior
que se realimenta en todo momento con la posicin de su rotor. De
sta forma puede llevar a cabo una auto-regulacin. En lugar de rotar
continuamente como los motores comunes de DC, un servomotor
puede ser posicionado. Usted puede, enviando las seales apropiadas
desde el BASIC Stamp, hacer rotar al servo a un punto especfico y
ste quedarse ah. Los servos poseen un conector para 3 cables: Uno
de alimentacin, uno de tierra y el cable de control. El tipo de servo
que ser utilizado en este captulo, es construido por la casa FUTABA
y fue diseado originalmente para ser usado en aviones, botes, autos
a radio control y microbots. Figura No. 11.3: Fotografa de un servomotor.
Fuente: www.parallax.com.

Figura No. 11.4: Diagrama de funcionamiento de un servomotor.


Fuente: Elaboracin Propia.

Un servomotor opera comparando el ancho del pulso de entrada (Control) con el ancho del pulso producido
por un temporizador (timer) interno. A su vez, el periodo de este temporizador est controlado por un
potencimetro acoplado al eje del motor. La diferencia entre ambos anchos de pulsos es utilizada como
error de posicin del circuito controlador interno. El circuito de control del servomotor, se debe encargar de
determinar la direccin en la que se debe girar el motor para minimizar dicho error. Luego que la accin ha
sido tomada, el motor gira modificando la posicin del potencimetro de retroalimentacin, al llegar el

Sistema de Desarrollo para MC, modelo MDK-B28 - 340 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

siguiente pulso se vuelve a realizar la comparacin y esto se realizar en forma indefinida hasta que el error
de posicin sea mnimo o cero.

1 ms 1.5 ms 2 ms

Figura No .11.5: Secuencias de pulsos para un servomotor tpico.


Fuente: Elaboracin Propia.

Para controlar la posicin del servomotor, debe envirsele una serie de pulsos. El tiempo en alto o activo
(ON) de esta serie de pulsos, determina el ngulo del movimiento deseado. La longitud de este pulso vara
tpicamente entre 1 ms y 2 ms, como se aprecia en la figura No. 11.5. Con una seal de 1 ms el servomotor
se posiciona a 0 (en un extremo) y con 2ms alcanzar el ngulo mximo, el extremo opuesto. Con una

Sistema de Desarrollo para MC, modelo MDK-B28 - 341 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

seal de 1.5 ms el servomotor se detendr en el centro del recorrido. En la prctica, a estos motores se les
pueden aplicar anchos de pulsos que abarcan entre entre 0.5 ms y 2.5 ms. Ello por supuesto depender de
las especificaciones que nos indique el fabricante.

El tiempo en bajo o apagado (OFF) de la seal no es tan crtico y suele estar comprendido entre 10 ms y 30
ms. En algunos servomotores se cumple que, si el tiempo entre pulsos es mayor de 50 ms, el circuito de
control podra entrar en modo SLEEP (bajo consumo de energa) ocasionando un comportamiento errtico.

La figura No. 11.6, muestra el esquema interno tpico de un servomotor. En este se aprecia el potencimetro
que permite conocer la posicin angular actual, el motor DC, el circuito de control, los engranajes internos y
los cables de alimentacin y control.

Cubierta Superior

Engranajes
Eje
Cubierta

Potencimetro
Motor DC

Circuito de control
Cubierta
Inferior
Tornillos

Figura No. 11.6: Esquema constructivo de un servomotor tpico.


Fuente: Modificado de material instructivo de la Universidad de Castilla-La Mancha (www.info-ab.uclm.es).

Sistema de Desarrollo para MC, modelo MDK-B28 - 342 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

MOTOR DE PASOS
El motor de pasos llamado tambin Stepper Motor, es un motor que se
alimenta de tensin continua (DC) y convierte los pulsos elctricos aplicados en
sus bobinas en movimientos rotacionales discretos. Pueden girar
continuamente o slo un ngulo llamado paso o step. Debido a que
resultan muy precisos y confiables, se emplean comnmente en
aplicaciones donde el posicionamiento mecnico resulta ser muy
importante. Son ideales cuando se tiene que girar un eje y detenerlo en cierta
posicin con una precisin de hasta centsimas de milmetros. En sta posicin
puede permanecer bloqueado (o no), hasta recibir una nueva orden de giro
Una de sus principales ventajas es que no necesitan de sensores para
determinar la posicin del eje, ya que se conoce la posicin por la secuencia de
pulsos que se han enviado a las bobinas.

Bsicamente, stos motores tienen un rotor, sobre el que van aplicados distintos imanes permanentes y un
estator, compuesto por bobinas excitadoras arrolladas en forma independiente. Los motores de pasos
pueden ser vistos como motores elctricos sin conmutadores. Toda la conmutacin (o excitacin de las
bobinas) debe ser manejada externamente por un circuito controlador o driver. Los motores de paso son
lentos si los comparamos con un motor DC convencional y en general podemos decir que existen los
siguientes tipos: De imn permanente y de reluctancia variable.
IMN PERMANENTE: En los motores de paso de imn permanente, el rotor es un imn fuertemente
magnetizado que puede girar en el interior del estator y que se alinear con el campo magntico creado por
la bobina del estator que est alimentada en un instante de tiempo. Se clasifican en Unipolares y Bipolares.

Com n

1 1
UNIPOLARES: Estos suelen tener 5 6 cables de salida,
dependiendo de su conexin interna. Son fciles de
controlar, su caracterstica principal es poseer una toma
(TAP) central que se conecta al positivo de la fuente de
alimentacin.
2 2

Figura No. 11.7: Esquema de bobinas en un motor de pasos


de imn permanente tipo unipolar.
Fuente: Elaboracin Propia.
Com n

Sistema de Desarrollo para MC, modelo MDK-B28 - 343 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

BIPOLARES: Estn diseados de la misma forma de los


unipolares, pero poseen dos bobinas separadas cuyas
1 polaridades deben ser invertidas o cambiadas en cada
1
operacin para hacer girar el rotor. Por medio de un
driver de control se invierte la tensin de cada par de los
polos, permitiendo que la polaridad de la fuente de
alimentacin aplicada al final de cada bobina sea
controlada de manera independiente. Cada bobina necesita
2
su propio circuito controlador.
2
Figura No. 11.8: Esquema de bobinas en un motor de pasos de imn
permanente tipo bipolar.
Fuente: Elaboracin Propia.

RELUCTANCIA VARIABLE: Un motor de pasos de


reluctancia variable, se caracteriza por no poseer polos Comn

magnticos en su rotor; ste es un cilindro de hierro con


dientes tallados en su superficie, ver figura No.11.10. El 1

estator se compone de varias bobinas a las que se aplican los


2
pulsos de corriente requeridos para su magnetizacin. Se
siente como un motor DC cuando el rotor es girado
3
manualmente, ste gira libremente y no se sienten los pasos
debido a que el estator no est permanente magnetizado
como los motores unipolares y/o bipolares.
n

Figura No. 11.9: Esquema de las bobinas de un motor


de pasos de reluctancia variable.
Fuente: Elaboracin Propia.

El accionamiento del motor, se produce por la atraccin generada entre el estator y uno de los dientes del
rotor para disminuir la reluctancia del circuito magntico. En la figura No. 11.10.A, se observa que al
energizar la bobina B1, se producir en ella un campo magntico y el diente D1, que se encuentra cercano a
B1, se alinear con este campo. En la figura No. 11.10.B puede verse lo que ocurre al energizar a la bobina
B2. En este caso, el diente que se encuentra ms cercano al campo ser D2, por lo tanto se producir una
rotacin en sentido anti-horario hasta que el rotor alcance la posicin mostrada.

Sistema de Desarrollo para MC, modelo MDK-B28 - 344 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

-
i
D3
D3
B3 B2 +
B3 D2 B2

D4
D2

D1 D4
D1
+

i
B1
B1
Figura No. 11.10(A)(B):
-
Motor de reluctancia variable.
Fuente: Revista Robots, Pg MO-
A B
03, ao 2003.

Especificaciones tcnicas del motor de pasos unipolar de imn permanente utilizado en este
captulo:

Resistencia x Fase (Ohms): 75


Corriente (mA): 150
Inductancia x Fase (mH): 39
Torque de paso (g-cm): 80
Torque de retencin (g-cm): 600
Espacio de montaje diagonal (in.): 1.73
Rotacin x Paso: 3.6 Grados
Dimetro del eje (in.): 0.197
Largo del eje (in.): 0.43
Lado del Motor (in.): 1.66
Altura del motor (in.): 1.35
Peso del Motor: 0.55 lbs.
Figura No. 11.11: Diagrama de conexin de las bobinas
internas de un motor de pasos tipo unipolar, PARALLAX
#27964. 12-Volt 75 Ohm "Unipolar Stepper Motor".
Fuente: Elaboracin propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 345 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Identificando las conexiones en un motor de pasos.

Este procedimiento es de mucha utilidad cuando no tenemos la hoja tcnica de especificaciones de un motor
de pasos y/o no sabemos que conductor est asociado a cada bobina. El procedimiento es simple siempre y
cuando se sigan los siguientes pasos: Primero, aplicamos un voltaje positivo +VDC al cable comn que
previamente ya se ha identificado con un tester (es el conductor con menos resistencia de todos). Segundo,
escogemos otro cable al azar y lo colocamos a tierra. Tercero, con los cables restantes, escogemos slo uno
de ellos a la vez y lo conectamos a tierra, observamos el movimiento del rotor al hacer la conexin y
concluimos en base a lo indicado en la figura No. 11.12.

Figura No. 11.12: Identificando a cada bobina en un


motor de pasos tipo unipolar. Parallax #27964 de 12
Volt. 75 Ohms.
Fuente: Elaboracin propia.

En un motor de pasos, la secuencia con la cual se alimentan las bobinas determina las caractersticas del
funcionamiento del motor en cuanto a su velocidad, torque y ngulo de desplazamiento. En general existen
tres formas diferentes o secuencias de operacin, las cuales llamaremos: Una Bobina (Wave Drive), Dos
Bobinas (Normal) y Medio Paso.

Sistema de Desarrollo para MC, modelo MDK-B28 - 346 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Figura No. 11.13: Diferentes secuencias de operacin para un motor de pasos.


Fuente: Elaboracin propia.

PULSOUT
Genera un pulso de una duracin especificada en un terminal de E/S.

PULSOUT Pin, Duracin

Pin: Es una variable, constante o expresin de (0 - 15) que indica cual terminal de E/S ser
utilizado, el mismo ser convertido en salida.
Duracin: Es una variable, constante o expresin de (0-65535) que especifica la cantidad de
unidades de tiempo que durar el pulso. La equivalencia del valor de Duracin al tiempo de
duracin del pulso est determinada por la base tiempo de BASIC Stamp, que para el BS2p es de
0.75s.
El funcionamiento de esta instruccin es el siguiente:
Convierte al terminal Pin en salida
Invierte el estado lgico de Pin
Espera en la condicin anterior el tiempo definido por Duracin * Unidad de tiempo
Invierte nuevamente el estado de Pin para retornarlo a su estado inicial

Sistema de Desarrollo para MC, modelo MDK-B28 - 347 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

CONEXIN DE CARGAS DE MEDIANA POTENCIA AL MDK-B28


Los terminales de E/S del microcontrolador BASIC Stamp pueden manejar corrientes de carga de hasta 30
mA con un nivel de tensin de +5 Voltios. Cuando se requiere energizar una carga con niveles de tensin
y/o corrientes superiores, se hace necesario el uso de circuitos de interfaz que suministren los niveles de
potencia necesarios para la operacin sin perjudicar o deteriorar al microcontrolador.

El sistema de desarrollo MDK-B28, cuenta con un circuito integrado ULN2003AN, el cual, es utilizado como
amplificador de potencia y permite al microcontrolador BASIC Stamp 2p manejar cargas relativamente
elevadas como un motor de pasos o un relay. El ULN2003AN posee un encapsulado DIP 16 con 7 entradas,
7 salidas, 1 punto de conexin comn y un terminal de referencia (tierra) distribuidos como se muestra en la
figura No. 11.14. Cada salida de este dispositivo puede manejar una corriente mxima de 500 mA. Cuando
se utiliza ms de una salida, deber tenerse la precaucin de no exceder los lmites establecidos en la figura
No. 11.16. En el sistema de desarrollo MDK-B28 las entradas del ULN2003AN se han conectado a los
terminales P8 a P14 del microcontrolador, ver figura No. 11.14 y se encuentran disponibles en el terminal de
conexiones de 8 puntos identificado como CN4.

Figura No. 11.14: Esquema de conexiones


del ULN2003 dentro del sistema Figura No. 11.15: Diagrama Lgico del ULN2003AN.
de desarrollo MDK-B28. Fuente: ULN2003A, HIGH-VOLTAGE HIGH-CURRENT
DARLINGTON TRANSISTOR ARRAY, Texas Instruments, 2003.

Sistema de Desarrollo para MC, modelo MDK-B28 - 348 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Figura No. 11.16:


Corriente mxima por
salida del ULN2003AN.

Fuente: ULN2003A, HIGH-


VOLTAGE HIGH-CURRENT
DARLINGTON
TRANSISTOR ARRAY,
Texas Instruments, 2003.

Figura No. 11.17: Fotografa del


conector CN4 para el motor de pasos.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 349 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

CONEXIN DEL SERVOMOTOR


El sistema de desarrollo MDK-B28, dispone de una regleta de conexiones identificada como CN3, ver figura
No. 11.18, en la cual se pueden conectar hasta 4 servomotores de manera independiente. El sentido de la
conexin del servo es importante, ya que, de invertirse la polaridad de la tensin aplicada a los terminales
de alimentacin, se puede destruir al servomotor. Cuando se conecta un servomotor al sistema de desarrollo
MDK-B28 el cable que transporta la seal de control debe quedar del lado interno de la tarjeta. La figura No.
11.19 muestra la manera correcta de conectar al servomotor.

Figura No. 11.18: Esquema de conexiones


Figura No. 11.19: Fotografa del la correcta conexin
del conector CN3 del sistema de desarrollo.
de un servomotor en el sistema de desarrollo MDK-B28.
Fuente: Elaboracin Propia.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 350 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Objetivo: Utilizar al BASIC Stamp 2p, para variar la velocidad de un motor DC.

Elementos a Utilizar

Conecte el motor DC al sistema de desarrollo MDK-B28


(1) BASIC Stamp 2p. como se muestra en la figura No. 11.20. Descargue el
(1) ULN2003AN (Driver de potencia de 7 canales).
(1) Motor DC (12 Vdc 500 mA mx). programa 11_1.bsp y ejectelo.
(1) Potencimetro de 10 K Ohms.
(1) Cable de Programacin.
(1) StampW (v2.0 beta 2.1 o superior).

Figura No. 11.20: Conexin de un motor DC al sistema de desarrollo MDK-B28.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 351 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

'Programa 11_1.bsp
'Este programa muestra como variar la velocidad de un motor DC por medio de la
'modulacin del ancho del pulso, utilizando el comando PWM.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
Maximo CON 255 'Velocidad mxima
Minimo CON 0 'Velocidad mnima
Paso CON 50 'Paso entre los incrementos de velocidad
Duracion CON 6 'Veces que se repite la inst. PWM durante 1 seg
DCMotor PIN 12 'Terminal donde se conecta el motor
Velocidad VAR Byte 'Establece la velocidad de giro
Veces VAR Nib 'Controla el tiempo que el motor permanece en una velocidad
'___________________________________________________________________________________
'Programa Principal
DO
FOR Velocidad = Minimo TO Maximo STEP Paso 'Incrementa la velocidad desde el
FOR Veces = 0 TO Duracion 'valor mnimo hasta el valor mximo
PWM DCMotor,Velocidad,255 'en pasos que duran 1s
NEXT
NEXT

FOR Velocidad = Maximo TO Minimo STEP Paso 'Disminuye la velocidad desde el


FOR Veces = 0 TO Duracion 'valor mximo hasta el valor mnimo
PWM DCMotor,Velocidad,255 'en pasos de 166 ms
NEXT
NEXT
LOOP

Una forma muy comn de variar la velocidad de los motores DC es por medio de la modulacin de ancho de
pulso (PWM). En este ejemplo, se ha utilizado la instruccin PWM del BS2p. En el programa 11_1.bsp se
hace variar el parmetro Ciclo Util de la instruccin PWM, con ello se modifica el voltaje efectivo aplicado a
la armadura del motor produciendo entonces un cambio en su velocidad.

Modifique la constante Minimo colocndola en un valor igual a 100 y observe el resultado. En gran
cantidad de aplicaciones se requerir del control de la velocidad del motor. El ejemplo del programa
11_2.bsp, utiliza un potencimetro, un condensador y el conocido comando RCTime para implementar un
control a lazo abierto de sta variable. Antes de ejecutarlo, anexe al montaje anterior, el circuito de la figura
No. 11.21.

Sistema de Desarrollo para MC, modelo MDK-B28 - 352 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

En este programa, la tensin aplicada al motor es una funcin de la


resistencia de carga / descarga del circuito RC, que se modifica por
medio del potencimetro.

Luego de descargar el programa al BS2p, ajuste el potencimetro RP


del MDK-B28 en su posicin central y oprima el pulsador de RESET.
Gire el potencimetro de un extremo a otro y observe el
comportamiento del motor.

Figura No. 11.21: Circuito RC utilizado para controlar la velocidad del motor.
Fuente: Elaboracin Propia.

'Programa 11_2.bsp
'Este programa muestra como efectuar un control a lazo abierto de la velocidad de
'un motor DC, utilizando un potencimetro y el comando RCTIME.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________

'Declaracin de Variables y Constantes


DCMotor PIN 12 'Terminal donde se conecta el motor
ControlPin PIN 8 'Terminal de control
Velocidad VAR Word 'Establece la velocidad de giro
Vel_Ini VAR Word
'___________________________________________________________________________________

'Programa Principal
HIGH ControlPin 'Terminal de control en alto
PAUSE 20 'Carga del condensador
RCTIME ControlPin,1,Vel_Ini 'Posicin inicial del potencimetro
DO
HIGH ControlPin 'Terminal de control en alto
PWM DCMotor,Velocidad,255 'Carga del condensador y generar la PWM
RCTIME ControlPin,1,Velocidad 'Medicin del valor de la resistencia
Velocidad = ABS((Vel_Ini-Velocidad)/13) 'Ajuste para escalar de 0 a 255
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 353 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Objetivo: Utilizar al BASIC Stamp 2p para controlar el posicionamiento y el sentido de giro de un servomotor.

Conecte un servomotor de acuerdo al esquema elctrico


Elementos a Utilizar
de la figura No. 11.22. El montaje deber verse como el
mostrado en la fotografa No. 11.23.
(1) BASIC Stamp 2p.
(1) Servomotor Standard Parallax.
Descargue el programa 11_3.bsp al BS2p y ejectelo. El
(1) Condensador de 2200uF. funcionamiento de ste es muy sencillo y permite
(1) Cable serial DB9. posicionar al eje del servomotor en los extremos de su
(1) StampW (v2.0 beta 2.1 o superior). rotacin, detenindose por medio segundo en la posicin
central del recorrido.

Figura No. 11.22: Esquema de conexiones de un Figura No. 11.23: Fotografa del montaje para el
servomotor con el sistema de desarrollo MDK-B28. ejercicio # 2.
Fuente: Elaboracin Propia. Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 354 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

'Programa 11_3.bsp
'Este programa tiene por objetivo utilizar el comando PULSOUT para posicionar
'el eje del Servomotor a 0,90 y 180
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

Salida PIN 12 'Terminal de salida


i VAR Byte 'Controla la cantidad pulsos aplicados al servomotor

'Programa Principal
'___________________________________________________________________________________
Inicio:
LOW Salida

DO
FOR i=0 TO 100
PULSOUT Salida,740 'Colocar el eje del servomotor en el extremo derecho
PAUSE 20 'de su rotacin. Tiempo en estado bajo de la seal
NEXT
PAUSE 500 'Esperar 0.5 segundos antes de cambiar de posicin
FOR i=0 TO 100
PULSOUT Salida,1820 'Colocar el eje del servomotor en la posicin central
PAUSE 20 'Tiempo en estado bajo de la seal
NEXT

PAUSE 500 'Esperar 0.5 segundos antes de cambiar de posicin

FOR i=0 TO 100


PULSOUT Salida,2950 'Colocar el eje del servomotor en el extremo izquierdo
PAUSE 20 'de su rotacin. Tiempo en estado bajo de la seal
NEXT
PAUSE 500 'Esperar 0.5 segundos antes de cambiar de posicin
FOR i=0 TO 100
PULSOUT Salida,1820 'Colocar el eje del servomotor a 90 grados de su
PAUSE 20 'rotacin. Tiempo en estado bajo de la seal
NEXT
PAUSE 500

LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 355 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Experimentalmente, se comprob que el valor del ancho del pulso requerido para colocar al servomotor en
la posicin inicial a un ngulo de 180 grados (rotacin completa a la derecha), equivale a 740 unidades del
comando PULSOUT. Como el BASIC Stamp 2p utiliza para esta instruccin una base de tiempo de 0.75s,
el ancho del tren de pulsos es de aproximadamente 0.555 ms. De manera similar, para colocar el eje del
motor en la posicin de 90 grados (en el centro del recorrido), se debi enviar un pulso de 1.36 ms,
mientras que para alcanzar un ngulo de cero grados (rotacin completa a la izquierda) se requiere de un
pulso de 2.21 ms. Estos valores estn dentro de los rangos de rotacin indicados en la figura No. 11.5. y
difieren dependiendo del fabricante, calidad y precio del servomotor.

Un servomotor puede ser conectado en cualquiera de los terminales de E/S del BASIC Stamp, sin la
necesidad de disponer de un driver o una interfaz de potencia entre ambos dispositivos. Sin embargo, es
necesario colocar un condensador electroltico de capacidad relativamente elevada 2200 3300 f. en
paralelo con los terminales de alimentacin del servomotor. Este condensador acta como un reservorio de
carga elctrica y aporta parte de la elevada corriente transitoria que consume el servomotor cuando inicia su
movimiento. De no emplearse el condensador, la fuente de alimentacin deber suplir la cantidad de
corriente demandada por el servomotor completamente, pues de no hacerlo, se producir una cada de
tensin capaz de incluso ocasionar un reset del microcontrolador. Los servomotores se utilizan comnmente
para abrir o cerrar vlvulas, en brazos robticos, microbots y pequeos automatismos como el que se
desarrolla en el ejercicio # 3.

Sistema de Desarrollo para MC, modelo MDK-B28 - 356 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Objetivo: Utilizar al microcontrolador BASIC Stamp y un servomotor para simular el comportamiento de una puerta automtica.

Elementos a Utilizar
Mantenga el servomotor conectado al terminal P12
como se indica en la figura No. 11.22, y arme el circuito
que se muestra en la figura No. 11.24. Descargue el
(1) BASIC Stamp 2p.
(1) Servomotor Standard Parallax.
programa 11_4.bsp al BASIC Stamp. Posteriormente
(1) Condensador de: 2200uF, 1uF x . perturbe el nivel de iluminacin que incide sobre la
(1) Fotorresistencia de 4.7 KOhms. fotorresistencia del sistema de desarrollo MDK-B28
(1) Cable de programacin. colocando su mano sobre la misma. Observe la
(1) StampW (v2.0 beta 2.1 o superior).
respuesta del servomotor.

Si las conexiones se han efectuado de manera correcta, al


posicionar su mano sobre la fotorresistencia (simulando la llegada
de un cliente al local donde se ha instalado la puerta automtica),
notar como el servomotor se desplaza completamente a la
izquierda indicando una apertura de la puerta.

Al principio del programa 11_4.bsp, el BASIC Stamp se encargar


de determinar el nivel inicial de iluminacin. Este indicar el valor
por encima del cual se considera que existe una persona frente a
la puerta.

Aleje su mano de la fotorresistencia y observe como, luego de


transcurridos 3 segundos, comienza a cerrarse la puerta. En medio
del recorrido de cerrado, posicione nuevamente su mano frente al
sensor de presencia (la fotorresistencia) y observe lo que ocurre.

Figura No. 11.24: Esquema de montaje


para el ejercicio # 3.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 357 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

'Programa 11_4.bsp
'Este programa simula la automatizacin de una puerta mediante el movimiento del eje
'de un servomotor utilizando un sensor foto-resistivo.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________

'Declaracin de Variables y Constantes


Abrir CON 2950 'Pulsos para abrir la puerta
Cerrar CON 740 'Pulsos para cerrar la puerta

SPuerta PIN 0 'Terminal donde se conecta el sensor


Salida PIN 12 'Terminal de salida conectado al servomotor

X VAR Word
'Almacena el nivel de iluminacin detectado
Vinit VAR Word
'Nivel de iluminacin que existe cuando la puerta
'deba estar cerrada
i VAR Byte 'Variable de uso general
'___________________________________________________________________________________
'Programa Principal

Inicio:
HIGH SPuerta
PAUSE 10
RCTIME SPuerta,1,Vinit 'Determina el nivel de iluminacin existente cuando no
Vinit = Vinit */ $0126 'hay personas. Especifica un margen de 15% para abrir
DO
HIGH SPuerta
PAUSE 10
RCTIME SPuerta,1,X 'Determina el nivel de iluminacin para saber si se debe
IF (Vinit>X) OR X=0 THEN 'o no abrir la puerta
PULSOUT Salida,Cerrar 'Generar el tren de pulsos para cerrar (giro a la der.)
ELSE
FOR i = 0 TO 100
PULSOUT Salida,Abrir 'Abrir completamente la puerta (giro izq.)
PAUSE 25
NEXT
PAUSE 3000 'Esperar 3 seg para que la persona pase
ENDIF
PAUSE 25
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 358 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Objetivo: Utilizar al BASIC Stamp para controlar la posicin del servomotor desde el computador por medio de una interfaz grfica
creada con el software STAMP Plot Pro.

Elementos a Utilizar
En este ejercicio, el ngulo de giro deseado ser
(1) BASIC Stamp 2p. introducido por medio de una interfaz grfica
(1) Servomotor Standard Parallax. desarrollada con el StampPlot Pro. El BASIC Stamp,
(1) Cable serial DB9. estar en continua comunicacin con el computador,
(1) Programa StampPlot V3 (rev 1.6 o superior).
(1) StampW (v2.0 beta 2.1 o superior). solicitndole el valor del ngulo de giro del motor.

Para lograr posicionar el eje del servomotor en un ngulo especfico, se puede asumir una relacin lineal
entre el ancho del pulso y el ngulo de giro del eje del servomotor. Bajo esta premisa, se puede aplicar una
simple regla de tres o la ecuacin de una recta para determinar el argumento del comando PULSOUT, que
permite posicionar al servomotor en el ngulo deseado.

La ecuacin obtenida es:


y = 12 * (180 x ) + 740
Donde:
y = Es el valor del parmetro que define el tiempo del comando PULSOUT.
x = Es el ngulo en grados, al cual se desea colocar el eje del servomotor.

Transcriba el siguiente macro y gurdelo con el nombre Macro_11_5.spm en la carpeta Macro del STAMP
Plot Pro. Nota: Esta carpeta se encuentra localizada en el directorio: \Archivos de programa\
StampPlotPro_V3\Macro.

'Macro_11.5.spm utilizado con el programa 11_5.BSP.


'La posicin del eje del servomotor cambia por medio de una barra (SLIDER).

Inicio:
!POBJ Clear
'LIMPIAR AREA DE OBJETOS
!NEWP 'NUEVA GRAFICA
!PPER 65,65 'DIVIDIR AREA DE GRAFICA Y OBJETOS EN 65%X y 65%Y
!COLR B15,G15,S15 'DEFINIR COLORES DEL AREA DE GRAFICACION

Sistema de Desarrollo para MC, modelo MDK-B28 - 359 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Continuacin del Macro: Macro_11_5.spm

!MENU off 'DESHABILITAR BARRA DE MENU


!TBAR off 'DESHABILITAR LA BARRA DE HERRAMIENTAS
!TITL EL SERVOMOTOR
'TITULO DE LA VENTANA

'INDICADOR ************************************************************************
'CREA UN INDICADOR DE AGUJA PARA MOSTRAR LA POSICION DEL SERVO
@RECT 16a,15a,80a,78a,0 'CUADRO DE FONDO
@TEXT 35a,20a,2,0,POSICION
@TEXT 20a,21a,2,0,0 g
@TEXT 71a,21a,2,0,180 g
@FPIE 48a,28a,22a,-2,182,7 'DIBUJA UN SEMICIRCULO GRIS
@FPIE 48a,28a,2a ,-2,182,0 'EJE DEL INDICADOR
@DPIE 48a,28a,22a,-2,182,0
'BORDE DEL INDICADOR

'ETIQUETAS *************************************************************************
'ETIQUETA PARA EL CUADRO DE TEXTO
!POBJ oLabel.etiqu1=67,98,30,6, POSICIONES DEL EJE,7,0,10,1
!POBJ etiqu1.F=Tahoma,16,0,0 'FUENTE UTILIZADA

'ETIQUETA PARA LA BARRA DE DESLIZAMIENTO (SLIDER)


!POBJ oLabel.etiqu2=23,30,20,6,SELECCIONE EL ANGULO,7,0,10,1
!POBJ etiqu2.F=Tahoma,16,0,0 'FUENTE UTILIZADA

'ETIQUETAS PARA MOSTRAR LOS TOPES DEL SLIDER


!POBJ oLabel.etiqu3=13,15,5,6,0,7,0,8,0
!POBJ oLabel.etiqu4=46,15,5,6,180,7,0,8,0

'CUADRO DE TEXTO *******************************************************************


'CUADRO DE TEXTO QUE DESPLIEGA INFORMACION CADA VEZ QUE SE CAMBIA LA POSC. DEL SERVO
!POBJ oSText.Texto2=67,88,30,85,Hora de Inicio : (RTIME) \n,15,4,10

'BARRA DE DESLIZAMIENTO ************************************************************


!POBJ oHSlider.Pos=17,20,30,10,0,180,90
!MATH %m10=90
'INICIALIZA EL CONTENIDO DE %m10 EN LA POSICION CENTRAL
!POBJ Pos.Tip=Escoja el Angulo!

Sistema de Desarrollo para MC, modelo MDK-B28 - 360 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Continuacin del Macro: Macro_11_5.spm

'EVENTOS ***************************************************************************
!POBJ Pos.C=!MATH %m10=((ME))
'GUARDAR EN %m10 EL VALOR DEL SLIDER CUANDO ESTE CAMBIE

ENDMAC 'FIN DE RUTINA DE INICIO

'RUTINAS ***************************************************************************

Actualizar: 'ACTUALIZAR LOS VALORES DEL INDICADOR


' %m0 CONTIENE EL VALOR ACTUAL DE LA POSICION
~FPIE 48a,28a,22a,-2,182,7
~DPIE 48a,28a,22a,-2,182,0

'ACTUALIZACION DEL TEXTO QUE INDICA LA POSICION


~FREC 52a,18a,65a,23a,15 'BORRA EL VALOR ANTERIOR
@TEXT 55a,20a,2,0,%m0
'DESPLIEGA LA POSICION ACTUAL EN GRADOS

'ACTUALIZACION DEL VALOR INDICADO POR LA AGUJA


!MATH %m0=179,-,%m0 'DIBUJA UNA AGUJA COLOR AZUL, DE UN ANCHO
EQUIVALENTE
!MATH %m1=%m0,+,2 'AL RECORRIDO DE 2 GRADOS, CENTRADA EN EL VALOR
~FPIE 48a,28a,18a,%m0a,%m1a,1 'OBTENIDO DEL SLIDER
~FPIE 48a,28a,2a,0,180,0 'REDIBUJA EL EJE DEL INDICADOR
ENDMAC

Descargue ahora el programa 11_5.bsp y ejectelo. Cierre el debug terminal que el editor de PBASIC ha
abierto e inicie el StampPlot Pro V3. Conecte el StampPlot al puerto de comunicaciones del PC. Oprima el
pulsador de reset del sistema de desarrollo MDK-B28 para reiniciar al BASIC Stamp. Al hacer esto, aparecer
en el StampPlot la interfaz creada para este ejercicio, ver la figura No. 11.25.

Sistema de Desarrollo para MC, modelo MDK-B28 - 361 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

'Programa 11_5.bsp
'Este programa se utiliza en conjunto con el macro Macro_11_5.spm para controlar la
'posicin de un Servomotor por medio de una interfaz grfica (GUI) elaborada con el
'software StampPlot Pro.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
SINPin CON 16 'Terminal SIN (2) del BASIC Stamp
Baudios CON 240 'No-Invertido, 9600 bsp, sin paridad
Tiempo_Espera CON 1250 'Tiempo de espera cuando se piden datos al StampPlot

ServoPin PIN 12 'Terminal conectado al servomotor

i VAR Byte 'Controla la cantidad de pulsos aplicados al servomotor


Pos_Act VAR Byte 'Posicin actual
Pos_Ant VAR Byte 'Posicin anterior
Pos VAR Word 'Posicin a la que se mueve el eje
'___________________________________________________________________________________
'Programa Principal

PAUSE 500
DEBUG "!MACR Macro_11_5.Inicio",CR 'Ejecutar el segmento de
Inicio: 'inicializacin del macro
LOW ServoPin
DO
Leer_Pos:
DEBUG "!READ %m10",CR
SERIN SINPin, Baudios, Tiempo_Espera , Leer_Pos, [DEC Pos_Act]
PAUSE 250 'Leer el valor de la variable %m10
'del StampPlot Pro
IF Pos_Act <> Pos_Ant THEN 'Si la posicin ha cambiado,
DEBUG "!MACR .Actualizar,",DEC Pos_Act,CR 'Actualizar el indicador de posicin
DEBUG "!POBJ Texto2.Add=A las (RTIME) el valor es: ",DEC Pos_Act,"\n",CR
Pos=(12*(180-Pos_Act))+740 'Clculo del ancho de los pulsos
FOR i=0 TO 100 'Generar el tren de pulsos
PULSOUT ServoPin,Pos : PAUSE 20
NEXT
Pos_Ant = Pos_Act
ENDIF
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 362 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Figura No. 11.25:


Interfaz grfico para
el control del
servomotor.
Fuente:
Elaboracin Propia.

El programa 11_5.bsp, es sencillo. Podemos resumir que las acciones que realiza son las siguientes:

Inicializa al macro por medio de la instruccin: DEBUG "!MACR Macro_11_5.Inicio",CR. Cuando se


ejecuta esta lnea de cdigo, se hace el llamado a la primera rutina contenida en el macro del archivo
Macro_11_5.spm, llamada Inicio.
Solicita al StampPlot Pro que le enve la variable %m10. En esta variable, se almacena la posicin en la que se
encuentra la barra de deslizamiento dentro de la interfaz grfica.
Verifica si la posicin ha cambiado. Si el slider se encuentra en otra posicin, el BASIC Stamp ordena la
ejecucin de la rutina Actualizar y dirige al servomotor a la posicin deseada.

Vare la posicin de la barra de desplazamiento (slider) y observe como el motor gira hasta el ngulo
deseado. El medidor colocado en rea central de graficacin, muestra una representacin grfica de la
posicin a la que se ha llevado al servomotor. Este indicador ha sido construido dibujando cuadros y
semicrculos y se actualiza cada vez que se ejecuta la rutina Actualizar del macro.

Sistema de Desarrollo para MC, modelo MDK-B28 - 363 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Objetivos: Identificar los terminales de conexin de las bobinas de un motor de pasos unipolar. Elaborar un programa en PBASIC que
permita controlar el sentido de giro de un motor de pasos.

Elementos a Utilizar Identifique las bobinas del motor de pasos segn se


explica a continuacin:

1.- Determine el conductor comn


(1) BASIC Stamp 2p.
(1) ULN2003AN (driver de potencia de 7 canales). Haciendo uso de un ohmimetro, se mide la resistencia
(1) Motor de pasos unipolar. entre los pares de cables. El cable comn ser el nico
(1) Multmetro o cualquier instrumento para medir que tenga la mitad del valor de la resistencia entre l y
resistencias.
el resto. Esto se debe a que entre el cable comn y
(1) Cable de programacin DB9.
(1) StampW (v2.0 beta 2.1 o superior). cualquier otro cable existe slo una bobina, mientras
que entre el resto de los cables existen dos bobinas, ver
la figura No. 11.26.

Comn

1 4 1 4

Comn Comn

3 2 3 2

Figura No. 11.26: Esquemas elctricos de un motor de pasos unipolar de 5 (izquierda) y de 6 (derecha) cables.
Fuente: Elaboracin Propia.

2.- Identifique las bobinas

Aplique una tensin positiva de +Vdc Voltios al cable comn.


Seleccione el cable rojo del motor y colquelo a tierra (0 Voltios). A este cable, se le llamar
Cable No. 1. El nombre es arbitrario, simplemente ser una referencia para identificar cada uno
de los cables de las bobinas, ver la figura No. 11.27A.
Manteniendo al Cable No. 1 en tierra, comience a colocar los cables restantes a tierra
(solamente uno a la vez) hasta producir un giro en el sentido contrario de las agujas del reloj
(giro CCW). Este ser el Cable No.2, ver la figura No. 11.27B.

Sistema de Desarrollo para MC, modelo MDK-B28 - 364 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Conecte uno de los cables restantes a tierra, si el motor intenta girar en el sentido de las agujas
del reloj (giro CW), este ser el Cable No. 4, ver la figura No. 11.27C.
El conductor que no produzca movimiento alguno, ser el Cable No.3, ver la figura 11.27D.

1 1 1 1

2 4 2 4 2 4 2 4

3 3 3 3

A B C D
Figura No. 11.27: Identificacin de las bobinas de un motor de pasos unipolar.
Fuente: Elaboracin Propia.

Arme el circuito correspondiente al esquema electrnico de la figura No. 11.28.

Figura No. 11.28: Diagrama del montaje utilizado para el ejercicio # 5.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 365 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

En la figura No. 11.29, puede verse un motor de pasos


conectado al sistema de desarrollo MDK-B28.

Descargue el programa 11_6.bsp al BASIC Stamp. El


programa permite definir el sentido de giro del motor en
funcin del pulsador que se encuentre presionado. Si se
oprime a PB1, el sentido de giro ser anti-horario y si
presiona PB2 el giro ser horario. Cuando se liberan ambos
pulsadores, las bobinas quedan des-energizadas y el rotor
del motor puede girar libremente.

El terminal P8 del BASIC Stamp, corresponde al terminal 1


en el conector CN4, ver la figura No. 11.28. Si se coloca un
estado lgico alto en P8, ste se convertir en un estado
lgico bajo a la salida del ULN2003AN, debido a que este
circuito integrado tambin es inversor. Sin embargo, y
debido a que en el motor de pasos se ha colocado el punto
comn a voltaje positivo + Vdc, la presencia de un cero en Figura No. 11.29: Conexin de un motor de pasos
la salida del ULN2003AN energizar a la bobina al sistema de desarrollo MDK-B28
Fuente: Elaboracin Propia.
correspondiente.

Presione alternadamente los pulsadores PB1, PB2 y verifique el funcionamiento del programa. Con ambos
pulsadores liberados, intente rotar el eje del motor y observe lo que sucede.

'Programa 11_6.bsp
'Este programa hace rotar a un motor de pasos unipolar de acuerdo al estado de dos
'pulsadores. Para efectuar la rotacin se utiliza la secuencia "Wave Drive"
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
Bobina1 CON %0001 'Energizar bobina # 1
Bobina2 CON %0010 'Energizar bobina # 2
Bobina3 CON %0100 'Energizar bobina # 3
Bobina4 CON %1000 'Energizar bobina # 4
Velocidad CON 5 'Velocidad de giro
PB1 PIN 0 'Pulsador PB1
PB2 PIN 1 'Pulsador PB2

Sistema de Desarrollo para MC, modelo MDK-B28 - 366 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Continuacin del programa 11_6.bsp

Pulsador VAR Byte(2) 'Espacio de trabajo de los pulsadores


Temp VAR Nib 'Variable temporal que almacena el estado anterior de
Indice VAR Nib 'las bobinas. Variable auxiliar
'___________________________________________________________________________________
'Programa Principal
Inicio:
DIRC = $F 'Declara los terminales P8 a P12 como salidas
DO
'Si PB1 es presionado giro horario
BUTTON PB1,0,100,1,Pulsador(0),0,Giro_Horario
'Producir giro en sentido anti-horario
GOSUB Anti_Horario
Giro_Horario:
'Si PB2 es presionado giro anti-horario
BUTTON PB2,0,100,1,Pulsador(1),0,No_Presionado
GOSUB Horario 'Producir giro en sentido horario
No_Presionado: 'Si ningn pulsador est presionado
OUTC=0 'Desactivar todas las bobinas
LOOP
'===================================================================================
'SUBRUTINAS
'La rutina Horario hace que el motor de pasos gire en el sentido de las agujas del
'reloj
Horario:
OUTC = Temp 'Recordar la ltima bobina activada para poder generar la sequen-
'secuencia necesaria para el giro del motor en el sentido horario
LOOKDOWN OUTC,[Bobina1,Bobina4,Bobina3,Bobina2],Indice
LOOKUP Indice,[Bobina4,Bobina3,Bobina2,Bobina1],OUTC
Temp = OUTC 'Registro de la ltima bobina activada
PAUSE Velocidad 'Pausa para producir el giro
RETURN
'Anti_Horario hace que el motor de pasos gire en el sentido contrario de las agujas
'del reloj
Anti_Horario:
OUTC = Temp
'Generar la secuencia necesaria para el giro del motor en sentido anti-horario
LOOKDOWN OUTC,[Bobina1,Bobina2,Bobina3,Bobina4],Indice
LOOKUP Indice,[Bobina2,Bobina3,Bobina4,Bobina1],OUTC
Temp = OUTC
PAUSE Velocidad 'Pausa para producir el giro
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 367 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Objetivo: Desarrollar una interfaz grfica por medio del StampPlot Pro, que le permita al usuario cambiar la velocidad, el sentido de
giro, el ngulo de rotacin y la secuencia de operacin del motor de pasos.

Elementos a Utilizar
Transcriba el macro que se muestra a continuacin y
(1) BASIC Stamp 2p. gurdelo con el nombre Macro_11_7.spm en el
(1) ULN2003AN (Driver de potencia de 7 canales). directorio Macro del directorio de instalacin del
(1) Motor de Pasos Unipolar. programa StampPlot Pro. Es importante que respete la
(1) Cable de programacin DB9. tamp
ubicacin del archivo, pues ste es inicializado desde el
(1) Programa StampPlot V3 (rev 1.6 o superior).
(1) StampW (v2.0 beta 2.1 o superior). microcontrolador.

'MACRO_11_7.SPM
'ESTE MACRO ES UTILIZADO JUNTO AL PROGRAMA 11_7.BSP A FIN DE MANEJAR A UN MOTOR DE
'PASOS. LA INTERFAZ GRAFICA, PERMITE MODIFICAR POR MEDIO DE SLIDERS LA POSICION Y
'LA VELOCIDAD DE GIRO DEL MOTOR. ADEMAS SE PUEDE HACER FUNCIONAR AL MOTOR CON
'DIFERENTES SECUENCIAS DE PASO, EN SENTIDO HORARIO Y ANTI-HORARIO.

Inicio: 'INICIALIZACION DE LA INTERFAZ


'INICIALIZA LA VENTANA DE TRABAJO
!MACR .Iniciar_Ventana
'CONFIGURA LA GRAFICA DE POSICION
!MACR .Iniciar_Grafica
'DECLARA Y CONFIGURA TODOS LOS OBJETOS USADOS EN LA INTERFAZ
!MACR .Declarar_Objetos
'INICIALIZA LAS VARIABLES UTILIZADAS
!MACR .Iniciar_Variables
'AJUSTA LA FUENTE DE LAS ETIQUETAS EN LA PANTALLA
!MACR .Fuente
ENDMAC

'RUTINAS ***************************************************************************

Iniciar_Ventana:
!POBJ Clear
!NEWP 'CREA UNA NUEVA GRAFICA
!MENU OFF 'DESHABILITAR BARRA DE MENU
!TBAR OFF 'DESHABILITAR BARRA DE HERRAMIENTAS
!PPER 50,100 'DEFINE EL AREA UTILIZADA POR LOS OBJETOS Y PARA LA
'GRAFICACION
!TITL Motor de Paso
ENDMAC

Sistema de Desarrollo para MC, modelo MDK-B28 - 368 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Continuacin del Macro: Macro_11_7.spm

'----------------------------------------------------------------------------------
Iniciar_Grafica:
!RSET 'RESET DE LA GRAFICA
!PLOT ON 'INICIAR GRAFICACION
!SPAN -180,180 'VALORES MAXIMO Y MINIMO DEL EJE VERTICAL
!TMAX 50 'TIEMPO MAXIMO EN EL EJE VERTICAL
!YLBL POSICION
'TITULO DEL EJE VERTICAL
!XLBL TIEMPO
'TITULO DEL EJE HORIZONTAL
!SHFT ON 'HABILITAR EL DESPLAZAMIENTO DEL 35 % DE LA GRAFICA
!PAMT 35 'CUANDO SE LLEGA AL MAXIMO DE TIEMPO
!ECHO ON
ENDMAC

'---------------------------------------------------------------------------------
Iniciar_Variables:
!MATH %m10=1 '%m10 CONTIENE LA SECUENCIA DE OPERACION ELEGIDA
!MATH %m11=1 '%m11 CONTIENE EL SENTIDO DE GIRO SELECCIONADO
!MATH %m12=0 '%m12 DETERMINA LA POSICION QUE ALCANZARA EL MOTOR
!MATH %m13=1 '%m13 ALMACENA LA VELOCIDAD DE ROTACION
!MATH %m14=0 '%m14 ALMACENA EL ESTADO DEL INTERRUPTOR QUE ENCIENDE
'AL MOTOR
!POBJ List1.Set=WAVE DRIVE
!POBJ List2.Set=GIRO ANTIHORARIO
ENDMAC

'---------------------------------------------------------------------------------
'ESTA RUTINA DEFINE A TODAS LAS ETIQUETAS QUE USAN UNA FUENTE TAHOMA DE 10 PTOS
Fuente:
!POBJ Label1.F=Tahoma,10,1,0
!POBJ Label2.F=Tahoma,10,1,0
!POBJ Label3.F=Tahoma,10,1,0
!POBJ Label4.F=Tahoma,10,1,0
!POBJ Label5.F=Tahoma,10,1,0
!POBJ Label6.F=Tahoma,10,1,0
!POBJ Label7.F=Tahoma,10,1,0
!POBJ Label8.F=Tahoma,10,1,0
!POBJ Label9.F=Tahoma,10,1,0
!POBJ Label10.F=Tahoma,10,1,0
ENDMAC

Sistema de Desarrollo para MC, modelo MDK-B28 - 369 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Continuacin del Macro: Macro_11_7.spm

'---------------------------------------------------------------------------------
Declarar_Objetos:

'LISTAS **************************************************************************

'-- LISTA DE SELECCION DE SECUENCIA


!POBJ oLabel.Label1=55,85,18,11,SECUENCIA DE GIRO,7,0,10,0 'ETIQUETA DE IDENTIF.
'DEFINE UNA LISTA DE TRES ELEMENTOS CON LAS SECUENCIAS DE OPERACION DEL MOTOR
!POBJ oList.List1=56,80,16,12,10,WAVE DRIVE,NORMAL,MEDIO PASO
'TEXTO QUE APARECE AL POSAR EL MOUSE SOBRE EL OBJETO
!POBJ List1.Tip=Seleccione la secuencia!

'-- LISTA DE SELECCION DE SENTIDO


!POBJ oLabel.Label2=79,85,10,11,SENTIDO,7,0,10,0 'ETIQUETA DE IDENTIFICACION
'DEFINE UNA LISTA DE DOS ELEMENTOS CON LOS POSIBLES SENTIDOS DE GIRO
!POBJ oList.List2=76,80,17,10,9,GIRO ANTIHORARIO,GIRO HORARIO
'TEXTO QUE APARECE AL POSAR EL MOUSE SOBRE EL OBJETO
!POBJ List2.Tip=Seleccione el sentido!

'BARRAS DE DESPLAZAMIENTO *******************************************************

'DEFINICION DEL SLIDER UTILIZADO PARA CONTROLAR LA POSICION ENTRE 0 Y 360 GRADOS
!POBJ oHSlider.sld1=51,50,47,10,0,360,0
!POBJ sld1.Tip=Seleccione el Angulo!
!POBJ oLabel.Label3=60,58,30,8,ELIJA ANGULO DE GIRO,7,0,10,0
!POBJ oLabel.Label4=38,40,30,8,0,7,0,8,0
!POBJ oLabel.Label5=81,40,30,8,360,7,0,8,0

'DEFINICION DEL SLIDER UTILIZADO PARA CONTROLAR LA VELOCIDAD


!POBJ oHSlider.sld2=55,26,20,8,1,10,1
!POBJ sld2.Tip=Seleccione la velocidad!
!POBJ oLabel.Label6=42,18,30,8,MIN,7,0,8,0
!POBJ oLabel.Label7=59,18,30,8,MAX,7,0,8,0
!POBJ oLabel.Label8=50,31,30,8,ELIJA LA VELOCIDAD,7,0,10,0

'BANNERS ************************************************************************

'CREA UN BANNER CON EL TEXTO "PROBANDO EL MOTOR DE PASOS..."


!POBJ oBanner.ban1=65,98,20,5,PROBANDO EL MOTOR DE PASOS...,15,4,10

Sistema de Desarrollo para MC, modelo MDK-B28 - 370 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Continuacin del Macro: Macro_11_7.spm

'INTERRUPTOR ********************************************************************
'UTILIZA UN OBJETO TIPO BOTON CON IMAGEN PARA CREAR EL SW. QUE ENCIENDE AL MOTOR

'ETIQUETAS QUE INDICAN EL ESTADO ENCENDIDO Y APAGADO


!POBJ oLabel.Label9=76,30,30,8,ON,7,0,10,0
!POBJ oLabel.Label10=76,23,30,8,OFF,7,0,10,0

'DEFINICION DEL INTERRUPTOR Y DE LAS IMAGENES ASOCIADAS A CADA ESTADO


!POBJ oImgBut.ibut1=82,30,7,11,comp\switch_0.jpg,1,comp\switch_1.jpg
!POBJ ibut.Tip=Accionar el motor!

'EVENTOS *************************************************************************
'CODIGO QUE SE EJECUTA AL PRESIONAR EL BOTON DERECHO DEL RATON SOBRE LA LISTA
'List1. DEFINE QUE LA OPCION SELECCIONADA SE ALMACENE EN %m10 y SE MUESTRE EN UN
'CUADRO DE MENSAJES
!POBJ List1.Code=!MATH %m10=(List1.I) (ER) !UMSG 2,Eligio la secuencia ((ME))

'DEFINE QUE LA OPCION SELECCIONADA EN LA LISTA List2, SE ALMACENE EN %m11 y SE


'MUESTRE EN UN CUADRO DE MENSAJES
!POBJ List2.Code=!MATH %m11=(List2.I)(ER)!UMSG 2,Eligio ((ME))

'AL MOVER EL SLIDER ASOCIADO A LA POSICION, SU VALOR SE ALMACENA EN LA VARIABLE


'%m12 DE DONDE SERA LEIDO POR EL BASIC STAMP
!POBJ sld1.C=!MATH %m12=((ME))

'AL MOVER EL SLIDER ASOCIADO A LA VELOCIDAD, SU VALOR SE ALMACENA EN LA VAR. %m13


!POBJ sld2.C=!MATH %m13=((ME))

'CUANDO SE CAMBIA EL ESTADO DEL INTERRUPTOR, SE ALMACENA SU VALOR LOGICO EN LA


'VARIABLE %m14 PARA INDICARLE AL BASIC STAMP QUE DEBERA ACCIONAR AL MOTOR. ADEMAS
'SE DESACTIVA AL INTERRUPTOR HASTA QUE SE TERMINE DE EFECTUAR EL MOVIMIENTO.
!POBJ ibut1.C=!MATH %m14=((ME))(ER)!POBJ ibut1.Clr
ENDMAC

Al ejecutarse ste macro se crea una interfaz como la mostrada en la figura No. 11.30. Sin entrar en detalles
acerca del funcionamiento de cada una de las instrucciones del macro, podemos explicar muy brevemente
que:

Sistema de Desarrollo para MC, modelo MDK-B28 - 371 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

La secuencia de giro del motor seleccionada se almacena en la variable %m10.


El sentido de rotacin del motor se almacena en la variable %m11.
La posicin del slider que controla el ngulo de posicionamiento, vara de 0 a 360 y se almacena
en la variable %m12.
La velocidad de rotacin entre 1 y 10 unidades, se almacena en la variable %m13.
El estado de la variable %m14 ser (1) si el interruptor se encuentra en la posicin ON y (0) si
est en OFF.
El programa que se ejecute en el microcontrolador, deber solicitarle al StampPlot que le enve
peridicamente el contenido de las variables anteriormente mencionadas. En base al valor de las
mismas, har girar al motor de pasos.

Figura No. 11.30: Interfaz grfica para el ejercicio # 6.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 372 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

'Programa 11_7.bsp
'Este programa muestra como efectuar con el Motor de Pasos las siguientes acciones:
'1) Operar en las secuencias Wave Drive, Normal y Medio Paso.
'2) Girar sentido Horario o Anti-horario.
'3) Variar la velocidad de Rotacin
'Debe usarse en conjunto con el MACRO_11_7.spm que contiene la interfaz de control
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
Bob_1 CON %0001 'Bobina 1 energizada
Bob_2 CON %0010 'Bobina 2 energizada
Bob_3 CON %0100 'Bobina 3 energizada
Bob_4 CON %1000 'Bobina 4 energizada
Bob_1_2 CON %0011 'Bobinas 1 y 2 energizadas
Bob_2_3 CON %0110 'Bobinas 2 y 3 energizadas
Bob_3_4 CON %1100 'Bobinas 3 y 4 energizadas
Bob_4_1 CON %1001 'Bobinas 4 y 1 energizadas
Tiempo CON 50 'Constante utilizada para variar la velocidad
WaveDrive CON 1 'Seleccin del modo de operacin Wave Drive en la interfaz
Normal CON 2 'Seleccin del modo de operacin Normal en la interfaz
MedioPaso CON 3 'Seleccin del modo de operacin Medio Paso en la interfaz
AntiHor CON 1 'Giro en sentido contrario al de las agujas del reloj (CCW)
Horario CON 2 'Giro en sentido de las agujas del reloj (CW)
SINPin CON 16 'Terminal SIN (2) del BASIC Stamp
Baudios CON 240 'Normal, 9600 bsp, sin paridad
Espera CON 1250 'Tiempo de espera cuando se piden datos al StampPlot
Pos VAR Word 'Posicin angular en grados
Angulo VAR Word 'ngulo de giro en grados (0-360)
I VAR Byte 'Contador de la cantidad de pasos efectuados
Pasos VAR Byte 'Cantidad de pasos de 3.6 que efectuar el motor
Vel VAR Byte 'Velocidad de giro
UltBob VAR Nib 'Variable de uso general
Secuencia VAR Nib 'Secuencia de operacin seleccionada
Sentido VAR Nib 'Sentido de giro escogido
Switch VAR Bit 'Estado del interruptor en la interfaz
'___________________________________________________________________________________
'Programa Principal
DIRC = $F 'Definicin de los terminales P8,P9,P10 y P11 como salidas
DEBUG "!MACR Macro_11_7.Inicio",CR 'Llamada a la rutina de inicializacin del Macro
PAUSE 3000

Sistema de Desarrollo para MC, modelo MDK-B28 - 373 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Continuacin del programa 11_7.bsp

DO 'Lazo principal del programa


DO 'Lazo que se repite hasta que el interruptor = ON
DEBUG SDEC Pos,CR 'Graficar posicin del motor en grados
PAUSE 100
Leer_Sw:
DEBUG "!READ %m14",CR 'Leer estado del interruptor
SERIN SINPin, Baudios, Espera , Leer_Sw, [DEC Switch] : PAUSE 300
LOOP UNTIL Switch = 1 'Repetir hasta que est en posicin ON
GOSUB Leer_Valores 'Leer los valores de las var. %m10,%m11,%m12,%m13
Pasos = Angulo */ $0047 'Obtener el # de pasos: Pasos = ngulo/3.6
Vel = Tiempo/Vel 'Calcular la pausa entre pasos segn la velocidad
i=0 'Inicializar en 0 el contador de pasos efectuados
IF Sentido = AntiHor THEN GOSUB Giro_CCW ELSE GOSUB Giro_CW
'Si el sentido es Anti-horario se ejecuta Giro_CWW, de lo contrario hace Giro_CW
DEBUG "!POBJ ibut1=0",CR,"!MATH %m14=0",CR 'Colocar el pulsador en OFF
LOOP

'===================================================================================
'SUBRUTINAS
'La rutina Leer_Valores lee las var. internas %m10,%m11,%m12 y %m13 del STAMP Plot
Leer_Valores:
Leer_Secuencia:
DEBUG "!READ %m10",CR 'Leer Secuencia
SERIN SINPin,Baudios,Espera,Leer_Secuencia,[DEC Secuencia] : PAUSE 250
Leer_Sentido:
DEBUG "!READ %m11",CR 'Leer Sentido
SERIN SINPin, Baudios, Espera , Leer_Sentido,[DEC Sentido] : PAUSE 250
Leer_Angulo:
DEBUG "!READ %m12",CR 'Leer ngulo de desplazamiento
SERIN SINPin, Baudios, Espera , Leer_Angulo, [DEC Angulo] : PAUSE 250
Leer_Vel:
DEBUG "!READ %m13",CR 'Leer Velocidad de giro
SERIN SINPin, Baudios, Espera , Leer_Vel, [DEC Vel ] : PAUSE 250
RETURN

'Giro_CCW, hace girar al motor en sentido anti-horario y en la secuencia elegida


Giro_CCW: 'Giro en sentido Anti-horario
DO WHILE i<Pasos 'Repetir hasta girar los pasos requeridos
PAUSE Vel 'Pausa entre pasos
DEBUG SDEC (Pos - (i*36/10)) ,CR 'Grafica la posicin a cada paso
DEBUG "!ASCL",CR 'Autoescala del eje vertical
i=i+1

Sistema de Desarrollo para MC, modelo MDK-B28 - 374 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Continuacin del programa 11_7.bsp

SELECT Secuencia 'Producir la secuencia de energizacin


CASE WaveDrive
LOOKDOWN OUTC,[Bob_1,Bob_4,Bob_3,Bob_2],UltBob
LOOKUP UltBob,[Bob_4,Bob_3,Bob_2,Bob_1],OUTC
CASE Normal
LOOKDOWN OUTC,[Bob_4_1,Bob_3_4,Bob_2_3,Bob_1_2],UltBob
LOOKUP UltBob,[Bob_3_4,Bob_2_3,Bob_1_2,Bob_4_1],OUTC
CASE MedioPaso
LOOKDOWN OUTC,[Bob_4_1,Bob_4,Bob_3_4,Bob_3,Bob_2_3,Bob_2,Bob_1_2,Bob_1],UltBob
LOOKUP UltBob,[Bob_4,Bob_3_4,Bob_3,Bob_2_3,Bob_2,Bob_1_2,Bob_1,Bob_4_1],OUTC
PAUSE Vel
LOOKDOWN OUTC,[Bob_4_1,Bob_4,Bob_3_4,Bob_3,Bob_2_3,Bob_2,Bob_1_2,Bob_1],UltBob
LOOKUP UltBob,[Bob_4,Bob_3_4,Bob_3,Bob_2_3,Bob_2,Bob_1_2,Bob_1,Bob_4_1],OUTC
ENDSELECT
LOOP
Pos = Pos + (i*36/10) 'Actualizar la posicin alcanzada
RETURN
'Giro_CCW, hace girar al motor en sentido anti-horario y en la secuencia elegida
Giro_CCW: 'Giro en sentido anti-horario
DO WHILE i<Pasos 'Repetir hasta girar los pasos requeridos
PAUSE Vel 'Pausa entre pasos
DEBUG SDEC (Pos - (i*36/10)) ,CR 'Grafica la posicin a cada paso
DEBUG "!ASCL",CR 'Autoescala del eje vertical
i=i+1 'Incrementa el contador de pasos
SELECT Secuencia 'Producir la secuencia de energizacin
CASE WaveDrive
LOOKDOWN OUTC,[Bob_1,Bob_2,Bob_3,Bob_4],UltBob
LOOKUP UltBob,[Bob_2,Bob_3,Bob_4,Bob_1],OUTC
CASE Normal
LOOKDOWN OUTC,[Bob_1_2,Bob_2_3,Bob_3_4,Bob_4_1],UltBob
LOOKUP UltBob,[Bob_2_3,Bob_3_4,Bob_4_1,Bob_1_2],OUTC
CASE MedioPaso
LOOKDOWN OUTC,[Bob_1,Bob_1_2,Bob_2,Bob_2_3,Bob_3,Bob_3_4,Bob_4,Bob_4_1],UltBob
LOOKUP UltBob,[Bob_1_2,Bob_2,Bob_2_3,Bob_3,Bob_3_4,Bob_4,Bob_4_1,Bob_1],OUTC
PAUSE Vel
LOOKDOWN OUTC,[Bob_1,Bob_1_2,Bob_2,Bob_2_3,Bob_3,Bob_3_4,Bob_4,Bob_4_1],UltBob
LOOKUP UltBob,[Bob_1_2,Bob_2,Bob_2_3,Bob_3,Bob_3_4,Bob_4,Bob_4_1,Bob_1],OUTC
ENDSELECT
LOOP
Pos = Pos - (i*36/10) 'Actualizar la posicin alcanzada
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 375 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Despus de descargar el programa 11_7.bsp, inicialice el software StampPlot Pro de la manera habitual y
conecte el puerto de comunicaciones correspondiente. Presione el pulsador RESET del sistema de desarrollo
MDK-B28. La interfaz grfica como se muestra en la figura No. 11.30 deber desplegarse en la ventana del
STAMP Plot Pro.

Deslice el slider que se encuentra debajo del texto


ELIJA ANGULO DE GIRO hasta el centro de su
recorrido mximo. Haga clic sobre la imagen del
interruptor en la parte inferior de la pantalla. Observe
el movimiento que describe el motor de pasos. Haga
doble clic sobre el tem GIRO HORARIO de la lista de
opciones SENTIDO para modificar el sentido de giro
del motor. Al hacer esto, un cuadro de mensajes como
el mostrado en la figura No. 11.31 le indicar por 2
segundos la seleccin efectuada.
Presione nuevamente sobre el interruptor para hacer
girar al motor en el sentido escogido. Para incrementar Figura No. 11.31: Notificacin del cambio de configuracin.
Fuente: Elaboracin Propia.
la velocidad de rotacin del motor, deslice el slider con
el titulo ELIJA LA VELOCIDAD. Experimente con varias combinaciones de secuencia, velocidad, ngulo y
sentido. Observe los resultados obtenidos en cada caso. El motor utilizado en este ejercicio, tiene un paso
de 3.6. Por ello, para hacerlo girar 360 son necesarios 100 pasos. Para determinar la cantidad de pasos
requeridos es necesario dividir el ngulo entre 3.6. En el programa 11_7.bsp la divisin es realizada por
medio de la instruccin:

Pasos = Angulo */ $0047

En realidad, no se est dividiendo entre 3.6 sino multiplicando por su inverso es decir 0.278.

En el Macro_11_7.spm se ha hecho uso de una


CAJAS DE LISTAS (LIST BOX)
herramienta del StampPlot Pro: la ejecucin de rutinas
dentro de un macro. Esta caracterstica permite crear Son objetos con los que se puede crear un men de
funciones y libreras dentro del propio macro, o en otro, diferentes opciones. Al hacer clic sobre cualquiera de las
opciones de la lista, el programa StampPlot Pro
y utilizarlas justo en el momento que son requeridas.
devolver un valor relacionado con la posicin de la
Para ejecutar una rutina dentro de un macro se debe opcin seleccionada.
utilizar !MACR .Nombre_de_Rutina.

Sistema de Desarrollo para MC, modelo MDK-B28 - 376 -


www.roso-control.com
Captulo No. 11. Movimiento Micro Controlado

Investigue los siguientes tpicos


1. Qu es un motor DC y como trabaja ?.
2. De que depende la eficiencia en un motor DC ?.
3. En cuales aplicaciones se utiliza normalmente un motor DC ?.
4. Qu significa el trmino Stall Torque ?.
5. De que depende la potencia disponible en el eje de un motor DC ?.
6. A que velocidad el motor DC puede desarrollar mayor potencia ?.
7. Explique como se interpreta la curva mostrada en la figura No. 11.2. ?.
8. Qu es un servomotor y como trabaja ?.
9. Cuantos componentes se incluyen en un servomotor, explique como trabaja cada uno ?.
10. Como trabaja el comando PULSOUT, cuales son sus argumentos?.
11. Puede usted trabajar a un motor de pasos sin utilizar el comando PULSOUT ?.
12. Qu es un motor de pasos y como trabaja ?.
13. Cuantos tipos de motores de paso conoce usted, explique su funcionamiento ?.
14. Cual es el procedimiento para identificar las bobinas de un motor de pasos ?.
15. Como funciona la secuencia Wave Drive en un motor de pasos ?.
16. Como funciona la secuencia Medio Paso en un motor de pasos ?.
17. Para qu se utiliza el circuito integrado ULN2003 en el sistema de desarrollo ?.
18. Explique como se interpretan las curvas mostradas en la figura No. 11.16 ?.

Programacin

1. Modifique el programa 11_6.bsp para que el motor de pasos trabaje con:

La secuencia de operacin Normal.


La secuencia de operacin Medio Paso.
El eje del motor deber quedar firme al liberarse ambos pulsadores.

Sistema de Desarrollo para MC, modelo MDK-B28 - 377 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Captulo No. 12
Comunicacin serial sincrnica I2C

Sistema de Desarrollo para MC, modelo MDK-B28 - 378 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Introduccin. I2C es un bus de comunicacin serial sincrnica desarrollado por Phillips Semiconductors a principios de los aos 80s.
Este bus se cre con la finalidad de reducir la complejidad del cableado interno encontrado en las tarjetas electrnicas de equipos
digitales de radio y TV. Actualmente, su uso se ha extendido a innumerables aplicaciones en el rea digital, hecho que lo convierte, en
uno de los ms populares estndares de comunicacin serial sincrnica. En ste captulo, se exploran las caractersticas del bus I2C y
del protocolo de transferencia de datos asociado a l, orientndolo todo a la implementacin de un maestro I2C con el microcontrolador
BASIC Stamp, que utilice y configure los dispositivos esclavos I2C disponibles en el sistema de desarrollo MDK-B28.

Una de las principales razones, para que el estudio del bus I2C sea un punto obligatorio en la capacitacin
de un estudiante en el desarrollo de aplicaciones con microcontroladores, es la gran variedad de productos y
fabricantes que producen circuitos integrados con esta tecnologa. Entre los que se pueden citar: Phillips,
National, Xicor, Siemens y Dallas-Maxim Semiconductors. El trmico I2C es una simplificacin comercial y
prctica, su nombre real es Inter-Integrated Circuit bus, es decir, bus de interconexin de circuitos
integrados. Entre las caractersticas ms relevantes de este bus se encuentran:

Utiliza dos lneas para la comunicacin, una para


datos llamada (SDA) y otra para el reloj (SCL).
Cada dispositivo conectado al bus es identificado por Entre los dispositivos I2C disponibles en
una nica direccin (dentro del bus). Esta queda el mercado se encuentran:
establecida a travs de una combinacin de
Memorias EEPROM y RAM.
Hardware/Software.
Expansores de Entradas/Salidas.
El Bus I2C es multi-master y an cuando sta Sensores de temperatura.
caracterstica es poco utilizada, se define un Multiplexores direccionales y switches.
mecanismo para la deteccin de las colisiones y Relojes de tiempo real/calendarios.
Conversores A/D y D/A.
arbitraje, el cual, busca prevenir la prdida de
Manejadores de LCD y LEDs.
informacin si dos o ms maestros inicializan Controladores de Bus, Expansores.
comunicaciones de manera simultnea. Concentradores y repetidores.
Las transferencias de informacin se realizan en
paquetes de 8 bits, en forma bi-direccional y pueden
ser efectuadas a tres velocidades o modos: Normal (Standard ) a unos 100 kbit/s (definicin
original), a 400 kbit/s (implementado a partir de la versin 1.1 del ao 1992) en el modo rpido
(Fast) o a 3.4 Mbit/s en el modo de alta velocidad (High-speed , disponible desde la versin 2.0 del
ao 1998).
El nmero de dispositivos que pueden ser conectados al bus I2C, est limitado por la capacitancia
de los mismos. El bus acepta la conexin de un mximo de 400 pF en dispositivos. Esta limitacin,
fue establecida a fin de asegurar los correctos tiempos de los flancos de subida y bajada de las
seales SDA y SCL. En un bus I2C, se conectan dispositivos con tecnologas diferentes de fabricacin
(CMOS,NMOS,TTL entre otros) as que los niveles lgicos 1 y 0 de los bits transferidos no tienen una
tensin fija, sino que dependen de la tensin Vdd de alimentacin del bus.

Sistema de Desarrollo para MC, modelo MDK-B28 - 379 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

DESCRIPCIN DEL BUS


Las lneas SDA y SCL son bidireccionales y se encuentran conectadas a una fuente de alimentacin positiva
por medio de resistencias de pull-up, ver figura No. 12.1. Si ambas lneas SDA y SCL se encuentran en
estado alto, se considera que el bus est libre o condicin de bus free. El cambio de estado de la lnea de
datos, slo es permitido durante el perodo bajo de la seal de reloj y sta deber estar estable cuando SCL
se encuentre en alto, pues en este momento ser ledo el dato colocado en el bus.

La generacin de los pulsos de reloj es siempre


responsabilidad del maestro que controla el bus.
El maestro comienza y termina todas las
transferencias de datos y para ello hace uso de
dos condiciones especiales denominadas INICIO y
PARADA (START y STOP) que pueden ser
nicamente generadas por l.
Una transicin de 1 a 0 (un flanco de bajada) en
la lnea SDA mientras SCL se mantiene en alto
determina la condicin de Inicio; una vez que
ocurre esta condicin, el bus se considera
ocupado (BUSY). Una transicin de 0 a 1 (un
flanco de subida) en la lnea SDA mientras SCL se
mantiene en alto, determina la condicin de
Parada, transcurrido un tiempo luego de ocurrir
Figura No. 12.1: Conexin de dispositivos al bus I2C. esta condicin, el bus se considera libre (FREE).
Fuente: The I2C-bus specification, Versin 2.1, 2000.

Figura No. 12.2: Condiciones de inicio y parada en un Bus I2C.


Fuente: Modificado de The I2C-bus specification. Versin 2.1 pg 9, 2000.

Sistema de Desarrollo para MC, modelo MDK-B28 - 380 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

FORMATO DEL BYTE


Todos los bytes de informacin colocados sobre la lnea SDA deben tener 8 bits. El nmero mximo de bytes
que pueden ser enviados en una transmisin no est restringido, siendo el esclavo quien fija esta cantidad
de acuerdo a sus caractersticas. El envo de los bits se efecta siempre desde el MSB hacia el LSB. An
cuando el maestro es quien siempre controla el estado de la lnea del reloj. Un esclavo de baja velocidad o
que deba detener la transferencia de datos mientras efecta otra funcin, puede forzar la lnea SCL a nivel
bajo. Esto hace que el maestro entre en un estado de espera, durante el cual, no transmite informacin
esperando a que el esclavo est listo para continuar la transferencia en el punto donde haba sido detenida.
El forzar a SCL a estado bajo no infringe ningn dao al maestro, ya que, los terminales de los dispositivos
conectados al bus son de tipo open collector u open drain.

RECONOCIMIENTO
Luego de transmitirse cada byte, es obligatoria la generacin de un bit adicional de reconocimiento (ACK)
que indica al dispositivo maestro que el esclavo ha recibido el byte. Luego de enviar los ocho bits de datos y
sus correspondientes pulsos de reloj, el maestro (transmisor) debe dejar el terminal SDA en alta impedancia,
con lo cual, asumir un estado lgico alto. En este momento y antes de que ocurra el prximo pulso de reloj,
el esclavo debe forzar la lnea SDA a nivel bajo, as que, cuando el maestro genere el pulso en SCL
correspondiente al bit de reconocimiento, la lnea SDA se encuentra en (0) indicando la recepcin del byte.
Cuando el esclavo no puede generar el bit de reconocimiento (SDA permanece en estado alto al producirse
el noveno pulso), el maestro deber detener la transferencia generando una condicin de STOP o producir
una condicin de START repetida para comenzar una nueva transferencia. Cuando el maestro se encuentra
recibiendo datos provenientes de un esclavo, ser l quien deba generar el bit de reconocimiento y le
indicar al esclavo si debe o no dejar de enviar bytes, al colocar a SDA en estado bajo o alto segn sea el
caso.

DIRECCIONAMIENTO Y FORMATO DE TRANSFERENCIA DE INFORMACIN


En un bus I2C, los dispositivos se identifican por medio de una direccin nica que forma parte de un byte
de control enviado por el dispositivo maestro al iniciar la comunicacin. La definicin inicial del I2C prevea la
existencia de 7 bits para direccionar al esclavo, de esta forma, se pueden conectar hasta 128 dispositivos en
el bus. A partir de la versin 1.0 del ao 1992, existe un formato de direccionamiento de 10 bits y se ha
incrementado significativamente el nmero de dispositivos que pueden conectarse simultneamente al bus.
En la figura No. 12.3, se muestra como una direccin de 10 bits es enviada a travs del bus I2C. El
microcontrolador BASIC Stamp 2p no da soporte para dispositivos con direcciones de 10 bits por lo cual, no
se har un estudio exhaustivo del direccionamiento del bus en estos casos.

Sistema de Desarrollo para MC, modelo MDK-B28 - 381 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Figura No. 12.3: Direccionamiento de dispositivo I2C con direccin de 10 bits.


Fuente: Modificado revista Robots, pg CO-04, 2000

Una vez que el maestro genera la condicin de inicio, el primer grupo de ocho bits enviado es el byte de
control o de direccionamiento, el formato de ste se muestra en la figura No. 12.4. Los siete primeros bits
definen la direccin del esclavo con el que se desea establecer la comunicacin, mientras que el octavo bit
indica la accin a efectuar. Este bit (llamado R/W) define si la operacin a efectuar es una lectura (si es un 0
lgico) o una escritura (si es un 1 lgico). Cuando una direccin es enviada, cada esclavo del bus la recibe y
la compara con su direccin de identificacin, si ambas coinciden el esclavo se considera direccionado como
un esclavo-transmisor o como esclavo-receptor dependiendo del valor lgico del bit R/W.

Figura No. 12.4: Direccionamiento de un dispositivo I2C con direccin de 7 bits.


Fuente: Modificado de The I2C-bus specification Versin 2.1 pg 15, 2000.

Todas las transferencias de informacin terminan con una condicin de parada generada por el maestro.
Despus de esto, si el maestro an desea comunicarse dentro del bus, puede generar una nueva condicin
de inicio (llamada SR o START Repeated ) y direccionar a cualquiera de los esclavos del bus sin haber
generado una condicin de parada. Esta posibilidad hace que sobre el bus se definan tres formatos de
transferencia de informacin:

Escritura en el Esclavo: El maestro se configura como transmisor y enva informacin a un


esclavo receptor. El sentido del flujo de los datos es del maestro hacia el esclavo y no cambia.
Lectura del Esclavo: El maestro lee informacin proveniente del esclavo inmediatamente despus
de trasmitir el primer byte. Luego de recibirse el primer reconocimiento (el correspondiente al byte

Sistema de Desarrollo para MC, modelo MDK-B28 - 382 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

de control), el maestro debe configurarse como receptor, ya que el esclavo se comportar a partir
de este momento como trasmisor. Una vez que el esclavo comienza a transmitir, ser entonces el
maestro quien deba producir la seal activa baja de reconocimiento (ACK). Para detener la
transferencia, el maestro enva una seal de no reconocimiento (deja a SDA en estado alto) y luego
genera la condicin de parada.

Formato Combinado: Es cuando existe un cambio de sentido en el flujo de la informacin, as


que, el dispositivo que en principio se comporta como receptor (ya sea el maestro o el esclavo)
luego lo har como transmisor. Esto implica, que el maestro tendr que enviar dos veces la
condicin de inicio y la direccin del esclavo pero con el bit de R/W una vez en un estado y otra vez
en el otro. Un ejemplo del uso de este formato combinado es el control de la memoria EEPROM del
sistema de desarrollo MDK-B28, para efectuar la lectura de una localidad de memoria, el esclavo (la
memoria) deber recibir primero cual es la localidad a leer y a continuacin, luego del envo de la
condicin SR y del nuevo byte de configuracin, el maestro recibir el contenido de la posicin
deseada. Las figuras No. 12.5, No. 12.6 y No. 12.7 ilustran los formatos de transferencia de la
informacin en un bus I2C.

Figura No. 12.5: Direccionamiento y transmisin de datos hacia un esclavo I2C.


Fuente: Modificado de The I2C-bus specification Versin 2.1 pg 14, 2000.

Sistema de Desarrollo para MC, modelo MDK-B28 - 383 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Figura No. 12.6: Direccionamiento y recepcin de datos desde un esclavo I2C.


Fuente: Modificado de The I2C-bus specification Versin 2.1 pg 14, 2000.

Figura No. 12.7: Formato combinado de lectura/escritura.


Fuente: Modificado de The I2C-bus specification Versin 2.1 pg 15, 2000.

CARACTERSTICAS ELCTRICAS
El bus I2C permite la conexin entre dispositivos de diversas tecnologas que utilizan diferentes voltajes de
alimentacin. Para dispositivos con voltajes de entrada fijos que operan con una alimentacin de 5 V (10%),
como en el caso del bus I2C del sistema MDK-B28, se han definido los siguientes valores:

VIL = 1.5 V (tensin mxima de entrada que se considera como estado bajo o 0).
VIH = 3 V (tensin mnima de entrada que se considera como estado alto o 1).

Sistema de Desarrollo para MC, modelo MDK-B28 - 384 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Al comparar al I2C con los buses estudiados en captulos anteriores (SPI y 3-Wire), podemos encontrar que
existen ventajas y desventajas en torno a cual utilizar dependiendo de la aplicacin, pudiendo decir entonces
que:

En un Bus I2C, no existe una seal de seleccin de dispositivo, as que el bus se compone slo de
dos lneas (ms un conductor de tierra o referencia). An ms importante que la reduccin del
conductor, es que esto facilita la incorporacin o retiro de dispositivos del bus sin efectuar cambios
en el hardware del mismo.
Las transferencias de informacin estn limitadas por condiciones de inicio y parada ms no por bits
de arranque y fin.
Existe un medio de direccionamiento para identificar a cada dispositivo esclavo conectado al bus.
Ningn esclavo puede responder ante una informacin enviada a una direccin que no le
corresponda.
Es naturalmente half-duplex, por lo cual, la tasa de transferencia de datos es significativamente
menor que las alcanzadas con SPI o 3-Wire.

DISPOSITIVOS I2C DISPONIBLES EN EL SISTEMA DE DESARROLLO MDK-B28

El bus de dispositivos I2C del sistema de desarrollo MDK-B28, incluye a dos dispositivos:

Una memoria EEPROM de 4Kbits 24LC04B identificada como U8.


Un reloj de tiempo real (RTC) DS1307 que se le reconoce como U7.

En la figura No. 12.8, puede observarse la ubicacin de los mismos componentes en el sistema de
desarrollo.

MEMORIA EEPROM
La memoria 24LC04B fabricada por Microchip, tiene una
capacidad de almacenamiento de 4Kbits (512 bytes) y se
encuentra dividida en dos bancos (denominados banco 0 y
banco 1) de 256 bytes cada uno. Como en todas las memorias
de la familia 24XXXX, la direccin de los esclavos comienza con
1010. Para el caso de la memoria del sistema MDK-B28, los
siguientes dos bits no tienen significado (por lo cual no importa
el valor que se les asigne) y el ltimo bit define el banco de
trabajo. As que el formado del byte de control para esta
Figura No. 12.8: Dispositivos I2C ubicados
memoria ser el mostrado en la figura No. 12.9. en el sistema de desarrollo MDK-B28.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 385 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Figura No. 12.9: Byte de control en la memoria EEPROM 24LC04B.


Fuente: Hoja de especificaciones. Memoria 24LC04B, Microchip, 2002.

Este modelo especfico de memoria EEPROM, slo permite la utilizacin de una memoria sobre el bus al no
tener direcciones determinadas por hardware. El bit B0 del byte de control corresponde entonces al MSB de
la direccin a leer o escribir as que se puede tener acceso a los 512 bytes de la memoria, simplemente con
configurar correctamente a B0 y especificando los restantes bits de la localidad deseada, inmediatamente
despus del byte de control. El formato bsico para la escritura en la memoria se muestra en la figura No.
12.10. Este es el mtodo de escritura por bytes.

Cada banco de la memoria 24LC04B se compone de 8 pginas de 16 bytes cada una. Cuando se requiere
transferir volmenes considerables de informacin, la escritura de bytes resulta ser bastante ineficiente, pero
la escritura por pginas (ver figura No. 12.11) mejora notablemente el rendimiento.

Figura No. 12.10: Escritura de un byte en la memoria 24LC04B.


Fuente: Hoja de especificaciones memoria 24LC04B, Microchip,2002.

Sistema de Desarrollo para MC, modelo MDK-B28 - 386 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Figura No. 12.11: Escritura de tres bytes en la memoria 24LC04B.


Fuente: Hoja de especificaciones memoria 24LC04B, Microchip, 2002

Para escribir varios bytes en la memoria, bastar con enviarlos uno a continuacin del otro antes de producir
la condicin de STOP. Este mtodo de escritura ser utilizado en el desarrollo del ejercicio # 2.

Algunas caractersticas adicionales de la memoria son:


Tiempo de escritura = 2ms.
Ciclos de lectura/escritura = 1.000.000.
Velocidad mxima de operacin = 400 Khz.

RELOJ DE TIEMPO REAL (RTC)

Un dispositivo de uso muy comn en aplicaciones con


microcontroladores es el reloj de tiempo real, el cual, es capaz
de mantener de manera totalmente autnoma el conteo de la
hora y la fecha. El reloj de tiempo real seleccionado para el
sistema de desarrollo MDK-B28 es el modelo DS1307,
fabricado por Dallas Semiconductor, siendo su interfaz de
comunicacin el bus I2C. Algunas de sus caractersticas son:
Figura No. 12.12: Pines de conexin del DS1307.
Fuente: www.maxim-ic.com.

Sistema de Desarrollo para MC, modelo MDK-B28 - 387 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

El DS1307 es un RTC serial que procesa la informacin de los segundos, minutos, horas, da del
mes, da de la semana, mes y ao.
El ajuste para la duracin de los meses, incluso en los aos bisiestos, es realizado por el propio
circuito y es vlido hasta el ao 2100.
Contiene 56 bytes de NVRAM (memoria RAM No voltil).
Permite la operacin en modo de 24 12 horas.
Al presentarse fallas en la alimentacin (VCC) el DS1307 cambia automticamente al modo de
operacin con batera para no perder su configuracin. Su consumo, es esta condicin, es menor de
500nA.
Puede generar una seal de onda cuadrada de frecuencia programable.

En la figura No. 12.12, se muestra la distribucin de los pines de conexin del DS1307, entre los cuales se
encuentran:

A travs de los terminales VCC y GND, se provee la tensin necesaria para el funcionamiento del DS1307.
Tpicamente los niveles de voltaje de estos pines son: +5V DC y 0V.

VBAT: Proporciona un medio para garantizar que el DS1307 mantenga su configuracin ante una prdida de
alimentacin (VCC). Funciona a travs de una batera externa de 2 V a 3.5V DC. Si la tensin de la fuente
que alimenta al integrado (VCC) disminuye hasta un umbral de VBAT x 1.25, las funciones de lectura y
escritura sern deshabilitadas pero seguir funcionando el reloj/cronmetro. Al hacerse VCC menor que
VBAT el circuito pasar a modo de bajo consumo o back up.

SQW/OUT: A travs de este pin, se obtiene una seal de onda cuadrada de 1Hz, 4kHz, 8kHz o 32kHz. Este
terminal es de tipo open drain, por lo tanto para su utilizacin se hace necesario el uso de un resistor de pull
up conectado a una fuente de alimentacin positiva, puede ser VCC o VBAT.

REGISTROS: Los registros de funcin especfica del DS1307 se encuentran ubicados en los ocho primeros
bytes de una memoria total de 64 bytes. De estos ocho registros, los siete primeros (direcciones 00h a 06h)
se utilizan para almacenar la informacin del reloj/calendario en formato BCD, mientras que el registro 07h
se emplea como registro de control. La figura No. 12.13, muestra la distribucin de los registros internos del
DS1307.

Sistema de Desarrollo para MC, modelo MDK-B28 - 388 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

La operacin y configuracin del RTC


es sumamente sencilla. Se limita a la
lectura/escritura de los registros
adecuados, recordando que, la
informacin contenida en estos se
codifica en BCD. Al momento de
iniciar la operacin deber tenerse
especial cuidado de colocar el bit CH
del registro 00h en 0, ya que, de este
modo se habilita el oscilador.

El DS1307 puede funcionar en modo


de 12 horas (AM/PM) o de 24 horas,
para ello, el bit 6 del registro de horas
(02h) define el modo de operacin.
Cuando se encuentra en estado alto
Figura No. 12.13: Registros internos del RTC, DS1307. (1), el reloj trabajar en modo de 12
Fuente: Hoja de especificaciones del DS1307. horas, de lo contrario lo har en
modo de 24 horas. Si el DS1307
trabaja en modo de 12 horas, el bit 5 del mismo registro indicar si es AM o PM (el estado alto indica PM).
Este bit 5, en modo de 24 horas, es el segundo bit del dgito de las horas.

El registro de control del DS1307 (07h), controla la configuracin y


estado del pin SQW/OUT. El bit SQWE habilita o deshabilita la RS1 RS0 FRECUENCIA
generacin de la seal cuadrada por el terminal SQW/OUT, la
0 0 1Hz
frecuencia de esta seal puede ser definida mediante los bits RS1 y
RS0 segn se muestra en la tabla No. 12.1. 0 1 4.096 kHz
1 0 8.192 kHz
Cuando el bit SQWE es igual a 0 y la seal cuadrada no est
habilitada, el bit 7 (OUT) permite controlar el estado del terminal 1 1 32.768 kHz
SQW/OUT, siendo ste igual al contenido deel bit OUT.
Tabla No. 12.1: Frecuencia del pin SQW/OUT.
La interconexin de los dispositivos en el bus I2C del sistema de Fuente: Hoja de especificaciones del DS1307.
desarrollo MDK-B28, se muestra en la figura No. 12.14.

Sistema de Desarrollo para MC, modelo MDK-B28 - 389 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

La inclusin del diodo Zener DZ1 de 3V, brinda al sistema la garanta de no destruir al DS1307 en caso de
conexin de una batera de alto voltaje, por ejemplo una batera de 9V.

IMPLEMENTACIN DEL MAESTRO I2C CON EL BASIC STAMP 2P

Para el manejo del protocolo I2C, el BASIC


Stamp 2p incluye dos instrucciones que
cumplen la funcin de lectura y escritura en
los esclavos del bus. La implementacin
hecha por Parallax tiene las siguientes
caractersticas:

La velocidad de transmisin es
aproximadamente de 81 Kbps.
Slo puede haber un maestro en el
bus, el cual ser evidentemente un
BS2p.
El BS2p no puede trabajar como
dispositivo esclavo.
La direccin del esclavo es de 7 bits
(el modo de direccionamiento de 10
bits no est soportado).
Se permite el uso de todos los
modificadores de formato.
Las lneas SDA y SCL deber llevar
resistencias de pull up de 4.7 kOhm.
Al ser los comandos, uno de lectura
y otro de escritura, el LSB del byte
de control (R/W) no es tomado en
cuenta an cuando debe ser
colocado a su valor correcto para
dar legibilidad al programa.
Figura No. 12.14: Interconexin de los dispositivos I2C en el DS1307.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 390 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

I2CIN
Esta instruccin recibe datos desde un dispositivo por medio del protocolo I2C.

I2CIN Pin, Identificacin del Esclavo, Direccin,{\ Direccin baja},[Dato de Entrada]

Pin: Es una variable, constante o expresin (0 u 8) que especifica el terminal de Entrada/Salida a


usar. Este argumento tiene un doble propsito, indicar el Pin del BS2p que se conectar al terminal
SDA del dispositivo (terminal de datos), e indirectamente especifica el Pin para conectar a SCL (reloj
del bus I2C). Para mayores detalles ver en la tabla No. 12.2.
Identificacin del Esclavo: Es una variable, constante o expresin (0-255) que especifica la
identificacin del dispositivo I2C esclavo.
Direccin: Es una variable, constante o expresin (0-255) que indica la direccin en el dispositivo I2C
de donde se recibir el dato.
Direccin baja: Es un parmetro opcional de tipo variable, constante o expresin (0-255) que indica
el byte bajo de una direccin de tipo word en el dispositivo I2C.
Dato de Entrada: Es una lista de variables y modificadores por medio de los cuales se especifica que
hacer con el dato de entrada. Este comando puede guardar el dato en una variable o en un arreglo,
permite interpretar nmeros como decimales, binarios o hexadecimales, esperar por una secuencia
predeterminada o variable de bytes o ignorar un nmero especifico de los bytes recibidos.

Caracterstica Configuracin 0 Configuracin 1

Argumento Pin 0 8
0: Pin de dato serial (SDA) 8: Pin de dato serial (SDA)
Configuracin de los terminales de E/S
1: Pin de reloj serial (SCL) 9: Pin de reloj serial (SCL)

Tabla No. 12.2: Argumento Pin para el manejo del protocolo I2C.
Fuente: PBASIC Syntax Guide, Parallax 2003.

Sistema de Desarrollo para MC, modelo MDK-B28 - 391 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

I2COUT
Este comando enva datos a un dispositivo por medio del protocolo I2C.

I2COUT Pin, Identificacin del Esclavo, Direccin {\ Direccin baja},[Dato de Salida]

Pin: Es una variable, constante o expresin (0 u 8) que especifica el Pin Entrada/Salida a usar para
enviar las seales.
Identificacin del Esclavo: Es una variable, constante o expresin (0-255) que especifica la
identificacin del dispositivo I2C esclavo.
Direccin: Es una variable, constante o expresin (0-255) que indica la direccin en el dispositivo I2C
en donde se escribir la informacin.
Direccin baja: Parmetro opcional de tipo variable, constante o expresin (0-255) que indica el
byte bajo de una direccin de tipo word en el dispositivo I2C.
Dato de Salida: Lista de variables y modificadores que especifica el formato y el contenido de los
datos a enviar.

STOP
Permite detener la ejecucin del programa.

STOP

STOP impide que el BASIC Stamp ejecute cualquier otra instruccin hasta que se aplique una seal de
reset.
Las acciones que generan una seal de reset son: colocar el pin RES a un nivel bajo y luego llevarlo a un
nivel alto, cargar un nuevo programa o desconectar la alimentacin del microcontrolador.
El comando STOP difiere del comando END en los siguientes aspectos:
STOP no pone al BASIC Stamp en modo de baja potencia. Por lo tanto, los niveles de consumo de
energa se mantienen.
El parpadeo que ocurre en los pines de salida dejados en estado alto, luego que el programa ha
finalizado (END), no se observa despus que el programa ha sido detenido por un comando
(STOP).

Sistema de Desarrollo para MC, modelo MDK-B28 - 392 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

ON..GOTO
Produce un salto incondicional a una direccin especificada por un ndice.

ON Indice GOTO Direccin1, Direccin2,. DireccinN

Indice: Es una variable, constante o expresin (0-255) que indica la direccin del salto.
Direccin1,Direccin2DireccinN: Etiqueta que identifica el destino del salto a efectuar.

Si Indice excede el tamao de la lista de posibles direcciones de salto, no se efecta salto alguno y se
prosigue con la ejecucin programa.

Objetivo: Desarrollar un programa en PBASIC que permita leer y escribir datos en diferentes formatos, en la memoria I2C modelo
24LC04B incluida dentro del sistema de desarrollo MDK-B28.

Identifique en el sistema MDK-B28 los componentes


Elementos a Utilizar que integran el bus I2C y sus respectivos terminales de
conexin. Efecte las conexiones necesarias a fin de
armar el circuito que se muestra en la figura No. 12.15.
(1) BASIC Stamp 2p.
(1) Mdulo SLCD-DB. El primer programa a elaborar servir como medio de
(1) Memoria EEPROM I2C 24LC04B (Microchip). verificacin del estado de la memoria. Para ello, deber
(1) Altavoz piezoelctrico. escribir un valor conocido en una localidad de memoria
(1) Cable de programacin. y posteriormente deber leerlo. Si el valor escrito es
(1) StampW (Ver 2.0 beta 2.1 o superior).
diferente al ledo, el programa indicar que la memoria
est defectuosa y emitir un sonido a travs del altavoz
del sistema.

La figura No. 12.16 muestra el diagrama de flujo del programa 12_1.bsp. Encienda el sistema de desarrollo
MDK-B28, descargue al BS2p el programa 12_1.bsp y observe el resultado en la pantalla LCD.

Sistema de Desarrollo para MC, modelo MDK-B28 - 393 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Si su memoria se encuentra en perfectas condiciones, deber ver como, para todas las direcciones desde 0 a
la 255 aparece el mensaje OK. Al finalizar, el mensaje MEMORIA INTEGRA podr ser visto en la pantalla
LCD, si esto no ocurre revise el cableado de nuevo.

Figura No. 12.15: Esquema de conexiones para el ejercicio # 1.


Fuente: Elaboracin Propia.

En el programa 12_1.bsp se ha hecho de uso de las instrucciones I2CIN e I2COUT para leer y escribir un
dato en la memoria EEPROM. Se utiliza el formato de escritura por bytes, con lo cual, cada dato (de 8 bits)
es escrito y ledo de manera independiente. Ntese que este programa se ejecuta una sola vez y estando la
memoria en buen estado o no, finaliza con una instruccin de STOP que literalmente detiene el programa
hasta que se reinicie al Stamp. De esta manera, no se efectuarn ms escrituras de la memoria sino las
requeridas, recuerde que una EEPROM tiene un lmite finito de veces que puede ser escrita, cosa que no
sucede en las memorias RAM.

Sistema de Desarrollo para MC, modelo MDK-B28 - 394 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

INICIO

Enviar mensaje inicial


Dir = 0

Si
Dir=255

No
Dir = 0
Escribir en modo byte
el valor Dir en la localidad [ Dir ]

Leer en modo byte


la localidad [ Dir ]
Esperar 2 ms
Dir = Dir +1
Mostrar valor ledo en LCD

Valor ledo No Emitir sonido e indicar


= Dir localidad defectuosa
Si

Si
No Emitir sonido e indicar
Dir = Dir +1 Dir = 255
memoria en buen estado

FIN

Figura No. 12.16: Diagrama de flujo para el programa del ejercicio # 1.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 395 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

'Programa 12_1.bsp
'Este programa muestra como leer y escribir datos para verificar la integridad de
'una memoria 24LC04B mediante las instrucciones I2CIN e I2COUT del BS2P
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

LeerB0 CON $A1 'Lectura en el Banco 0


EscrB0 CON $A0 'Escritura en el Banco 0

BorrarLCD CON 1 'Limpiar pantalla


Baudios CON 240 'Parmetro Baudmode de SERIN/SEROUT
Inst CON 254 'Envo de una Instruccin
Linea1 CON 128 'Posiciona al apuntador de DDRAM al inicio de la lnea 1
Linea2 CON 192 'Posiciona al apuntador de DDRAM al inicio de la lnea 2

Buz PIN 11
SinLCD PIN 6 'Terminal que enva informacin al controlador SLCD-IC
I2CPin PIN 0 'Terminal de datos del bus I2C

Dir VAR Byte 'Direccin a escribir/leer


Dato VAR Word 'Datos a escribir/leer
'___________________________________________________________________________________
'Programa Principal:

PAUSE 1000 'Esperar que el SLCD-BD se inicialice


SEROUT SinLCD,Baudios,[Inst,BorrarLCD] 'Borrar Pantalla
SEROUT SinLCD,Baudios,[Inst,Linea1," PROG 12_1.bsp ",Inst,Linea2," PRUEBA EEPROM "]

FOR Dir = 0 TO 255


I2COUT I2CPin,EscrB0,Dir,[Dir] 'Escribe en la posicin Dir el valor Dir
PAUSE 2 'Pausa indicada por el fabricante
NEXT
SEROUT SinLCD,Baudios,[Inst,Linea2,"DIR= EDO= "]
'Para verificar el buen estado de la memoria, se lee el contenido almacenado en las
'direcciones desde la 0 a la 255, este contenido debe coincidir con la direccin,
'de no ser as, entonces ocurri un error de lectura o escritura, en todo caso la
'direccin ser reportada como daada con un mensaje de error y un sonido emitido
'por el buzzer.

Sistema de Desarrollo para MC, modelo MDK-B28 - 396 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Continuacin del programa 12_1.bsp

FOR Dir = 0 TO 255


I2CIN I2CPin,LeerB0,Dir,[Dato] 'Leer de Dir=0 a Dir=255
SEROUT SinLCD,Baudios,[Inst,Linea2+5,DEC Dir,Inst,Linea2+13]
IF Dato = Dir THEN
SEROUT SinLCD,Baudios,[" OK"]
ELSE 'En caso de error detener programa
SEROUT SinLCD,Baudios,["ERR"] : FREQOUT Buz,1500,2000 : STOP
ENDIF
NEXT

'Mensaje en caso de memoria en perfecto estado


SEROUT SinLCD,Baudios,[Inst,Linea2,"MEMORIA INTEGRA"]
FREQOUT Buz,1500,1500
STOP

Ahora bien, como se mencion anteriormente la memoria 24LC04B se compone de dos banco de 256 bytes
cada uno, para tener acceso al banco 1 deber modificar el argumento de las instrucciones I2CIN e I2COUT
segn se muestra en la figura No. 12.9. Conecte el pulsador PB1 al terminal P2, descargue el programa
12_2.bsp y ejectelo.

'Programa 12_2.bsp
'Este programa muestra como leer y escribir datos por pginas, en ambos bancos de
'una memoria 24LC04B mediante las instrucciones I2CIN e I2COUT del BS2p
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
LeerB0 CON $A1 'Lectura en el Banco 0
LeerB1 CON $A3 'Lectura en el Banco 1
EscrB0 CON $A0 'Escritura en el Banco 0
EscrB1 CON $A2 'Escritura en el Banco 1
Page0 CON 0 'Pgina 0
Page1 CON 16 'Pgina 1
Page2 CON 32 'Pgina 2
BorrarLCD CON 1 'Limpiar pantalla
Baudios CON 240 'Parmetro Baudmode de SERIN/SEROUT
Inst CON 254 'Envo de una Instruccin

Sistema de Desarrollo para MC, modelo MDK-B28 - 397 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Continuacin del programa 12_2.bsp

Linea1 CON 128 'Posiciona al apuntador de DDRAM al inicio de la lnea 1


Linea2 CON 192 'Posiciona al apuntador de DDRAM al inicio de la lnea 2
NoPres CON 0 'Pulsador no presionado

SinLCD PIN 6 'Terminal que enva informacin al controlador SLCD-IC


PB1 PIN 2 'Pulsador para cambiar el mensaje
I2CPin PIN 0 'Terminal de datos del bus I2C

EspTrab VAR Byte 'Espacio de trabajo del pulsador


Dir VAR Byte 'Direccin a escribir/leer
Dato VAR Byte 'Datos a escribir/leer
Msg VAR Bit 'Control del mensaje a mostrar

'___________________________________________________________________________________
'Programa Principal:
'Inicio:
PAUSE 1000 'Esperar que el SLCD-BD se inicialice
SEROUT SinLCD,Baudios,[Inst,BorrarLCD] 'Borrar Pantalla

'Los dos mensajes a mostrar se almacenan en la memoria I2C


I2COUT I2CPin,EscrB0,Page0 ,["DEMOSTRACION DEL"] 'Escribe en pgina 0 del Banco 0
PAUSE 3 'Tiempo de escritura
I2COUT I2CPin,EscrB0,Page1 ,[" BUS I2C "] 'Escribe en pgina 1 del Banco 0
PAUSE 3 'Tiempo de escritura
I2COUT I2CPin,EscrB1,Page0 ,[" MEMORIA EEPROM "] 'Escribe en pgina 0 del Banco 1
PAUSE 3 'Tiempo de escritura
I2COUT I2CPin,EscrB1,Page1 ,[" 24LC04B 4Kbits "] 'Escribe en pgina 1 del Banco 1
PAUSE 3 'Tiempo de escritura
GOTO Bco0 'Mostrar mensaje inicial

DO

BUTTON PB1,0,255,0,EspTrab,NoPres,No_Presionado 'Verifica cual es el mensaje


Msg = ~Msg 'a mostrar
No_Presionado:
ON Msg GOTO Bco0,Bco1 'De acuerdo a la seleccin, leer en uno u otro Bco
Fin:

LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 398 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Continuacin del programa 12_2.bsp

Bco0:
I2CIN I2CPin, LeerB0 , Page0, [SPSTR 32]
'Lee todo el mensaje y lo almacena en Scratchpad RAM

SEROUT SinLCD,Baudios,[Inst,Linea1] 'Ir a lnea 1 del LCD

FOR Dir=Page0 TO Page1-1 'Se extrae la 1ra. lnea del mensaje con
GET Dir,Dato 'GET y se muestra en la LCD
SEROUT SinLCD,Baudios, [Dato]
NEXT

SEROUT SinLCD,Baudios,[Inst,Linea2] 'Ir a lnea 2 del LCD

FOR Dir = Page1 TO Page2-1 'Muestra la segunda lnea del mensaje que
GET Dir, Dato 'se encuentra almacenada en la memoria de
SEROUT SinLCD,Baudios, [Dato] 'intercambio
NEXT

GOTO Fin 'Retornar al lazo principal

Bco1:
I2CIN I2CPin, LeerB1 , Page0, [SPSTR 32] 'Lee el segundo mensaje
SEROUT SinLCD,Baudios,[Inst,Linea1] 'Ir a lnea 1 del LCD

FOR Dir = Page0 TO Page1-1 'Muestra primera lnea en el LCD


GET Dir,Dato
SEROUT SinLCD,Baudios, [Dato]
NEXT

SEROUT SinLCD,Baudios,[Inst,Linea2] 'Ir a Lnea 2 del LCD

FOR Dir = Page1 TO Page2-1 'Mostrar lnea 2 del segundo mensaje


GET Dir,Dato
SEROUT SinLCD,Baudios, [Dato]
NEXT

GOTO Fin 'Retornar al lazo principal

Sistema de Desarrollo para MC, modelo MDK-B28 - 399 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Observe en la figura No. 12.17, el diagrama de flujo del programa 12_2.bsp.

IN IC IO
En este programa, los mensajes que se muestran en la LCD se
almacenan en la memoria EEPROM I2C. Para almacenar el mensaje 0
se ha hecho uso de las instrucciones:
C a rg ar en m em oria I2C
los d os m ensajes a m ostra r
I2COUT I2CPin,EscrB0,Page0 ,["DEMOSTRACION DEL"]

M sg = 0 PAUSE 3
LEE R m ensaje M sg en EEP R O M
I2COUT I2CPin,EscrB0,Page1 ,[" BUS I2C "]
M ostrar m ensaje M sg en LC D
PAUSE 3

No PB1
Con una sola instruccin I2COUT se han enviado 16 bytes de manera
P resiona d o consecutiva a la memoria. Cuando se utiliza esta forma de escribir
datos, los bytes recibidos son almacenados en un buffer hasta que se
Si recibe una condicin de STOP. En ese momento se escribe la
informacin a la EEPROM, con ello se reduce drsticamente el tiempo
M en sa je = N O T M sg requerido para transferir volmenes de informacin relativamente
grandes.

La memoria 24LC04B que posee el sistema de desarrollo MDK-B28,


LEE R m ensaje M sg en EEP R O M
M ostrar m ensa je M sg en LC D
adems de estar dividida en dos bancos, puede accederse por pginas.
Una pgina se compone de 16 bytes consecutivos cuya direccin de
inicio sea mltiplo de diecisis. Al momento de escribir informacin por
pginas, debe cuidarse que la cantidad de datos escrita al buffer no
Figura No. 12.17: Diagrama de flujo exceda la dimensin fsica del mismo, pues producir una prdida de
del programa 12_2.bsp.
Fuente: Elaboracin Propia.
los primeros datos escritos (se sobrescribe hasta que se enva el ltimo
byte).

Sistema de Desarrollo para MC, modelo MDK-B28 - 400 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Para almacenar el mensaje 1 se ha hecho uso de las instrucciones:

I2COUT I2CPin,EscrB1,Page0 ,["MEMORIA EEPROM "]


PAUSE 3
I2COUT I2CPin,EscrB1,Page1 ,["24LC04B 4Kbits "]
PAUSE 3

La diferencia entre stas instrucciones, salvo por el contenido de los mensajes, radica en el parmetro
Identificacin del Esclavo de la instruccin I2COUT. En la figura No. 12.18 se puede observar con
claridad la diferencia existente al modificar el bit B0 en el byte de control.

As que las lneas de cdigo presentadas


anteriormente, escriben el mensaje 1 en el banco 1
de la memoria. Para la lectura de los mensajes se
utiliza:

I2CIN I2CPin, LeerB0 , Page0, [SPSTR 32]

Evidentemente para el mensaje 0, el segundo


parmetro de I2CIN ser LeerB0, mientras que para
el mensaje 1 ser LeerB1 (ver significado de las
constantes en el encabezado del programa). Pero, Figura No. 12.18: Efecto del cambio de B0 en el
lo importante de sta lnea de cdigo es haber significado de la instruccin I2COUT del programa
incluido es el modificador SPSTR para leer 32 bytes. 12_2.bsp.
Fuente: Elaboracin Propia.
Para la lectura de la informacin contenida en la
memoria, no se usa un buffer, sino que se accesa
directamente al contenido de una localidad dada, por ello el nmero de bytes ledos slo est limitado por la
capacidad del banco. Fjese en que la informacin leda es almacenada en la memoria Scratchpad RAM del
BS2p, de donde se extrae para ser mostrada en la pantalla LCD. En este caso, el BS2p es quien usa una
especie de buffer de recepcin utilizando para ello 32 bytes de la memoria Scratchpad RAM .

Sistema de Desarrollo para MC, modelo MDK-B28 - 401 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Objetivo: Construir un Reloj / Calendario basado en el DS1307.

Elementos a Utilizar Conecte los pulsadores PB1, PB2 y PB3 a los terminales
P2, P3 y P4. Mantenga al SLCD-BD conectado segn la
figura No. 12.15.
(1) BASIC Stamp 2p.
(1) Mdulo SLCD-DB.
(1) RTC I2C DS1307 (Dallas). Estudie detenidamente los diagramas de flujo
(1) Altavoz piezoelctrico. mostrados en las figuras No. 12.19, No. 12.20 y No.
(1) Cable de programacin. 12.21.
(1) StampW (Ver 2.0 beta 2.1 o superior).

INICIO

ActualizarLCD Titilar
Inicializar DS1307
Inicializar DS1307
Mostrarmensaje:
Mostrar mensaje:
Mostrar en Si
LCD la Fecha -> dd/mm/aa Da Semana Obtener posicin que la variable editada PROGM_12_3.
PROG 12_3.bsp
bsp
Mostrar en LCD la Hora -> hh:mm:aa Modo Op Ocupa en LDC (LCDPos) RTC I2C
RTC I2CDS1307
DS1307

RETURN Mostrar en posicin LCDPos Borrar


Borrar LCDLCD y presentar
presentar funcin
Espacio en blanco funcin de cada
de cada pulsador
pulsador
Titila
Titila ==0 0
Set_Hora
Pausa 100ms 2
Si Para efecto de parpadeo
Convierte los valores del arreglo
RTCRAM de Binario a BCD Leer_Hora
Leer_Hora

Set_Hora
Ajustar bits de configuracin BCD2BIN
BCD2BIN
del modo de operacin (BCD
(BCD aaBIN)
BIN)
RETURN

Enviar datos al DS1307 Dia_Semana


Dia_Semana

RETURN
ActualizarLCD
ActualizarLCD
Figura No. 12.19: Diagramas de flujo para el programa 12_3.bsp.
Fuente: Elaboracin Propia.
1

Sistema de Desarrollo para MC, modelo MDK-B28 - 402 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

4
No No No
No PB1
2 PB3 PB2
Titila = 1 Presionado
Presionado Presionado
Si Si Si
Si

Titilar Incrementar Decrementar


Disminuir
Titila = 1

Titila = 0 Si
Todo
Mostrar texto SET Ajustado
Ajustado
ModVar= -1
No

ModVar = ModVar +1

33
3

CASE ModVar OF

0 1 2 3 4 5 6

Mostrar Texto DIA Mostrar Texto MES Mostrar Texto YRS Mostrar Texto HRS Mostrar Texto MIN Mostrar Texto SEG Mostrar Texto MOD
VarEdit= Fecha VarEdit= Mes VarEdit= Ao VarEdit= Hora VarEdit = Minutos VarEdit = Segundos VarEdit=Modo de Op
Min= 1 Max = 12 Max= 99 Max= 59 Max= 59 Max=3
Min = 1 Min = 00 Min= 0 Min= 0 Min=1

24 Horas
Si

Max= 24 No
Min= 0
Verificar_
Max= 12
Fecha_Tope
Min = 1

44

Figura No. 12.20: Diagramas de flujo para el programa 12_3.bsp (Continuacin).


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 403 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Dia_Semana

CASE Mes OF

Enero Febrero Marzo,


Noviembre
Si Si
Ao Ao
Bisiesto? Bisiesto?
Abril, Mayo Junio Agosto Septiembre, Octubre
Julio Diciembre
No No

K=0 K=1 K=4 K=3 K=4 K=0 K=2 K=5 K=3 K=6 K=1

Dia = 6 + Ao+ INT (Ao/4) + Da del Mes + K

Leer_Hora
Dia =Da MOD 7

Leer los 8 primeros bytes


del RTC DS1307 RETURN BCD2BIN

S Configuracin
ModoOP=1 Convierte los valores del arreglo
= 24 Horas
RTCRAM de BCD a Binario
N
Eliminar MSBit de segundo Dgito

RETURN

RETUR

Figura No. 12.21: Diagramas de flujo para el programa 12_3.bsp (Continuacin).


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 404 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Encienda el sistema de desarrollo y al ejecutar el programa 12_3.bsp, deber aparecer el mensaje inicial
PROGRAMA 12_3.bsp RTC I2C DS1307 por un segundo. Seguidamente debe observar que la pantalla
muestra la configuracin por defecto del reloj, es decir, la fecha 01/01/00 y la hora 00:00:00 en modo de 24
horas como se aprecia en la figura No. 12.22. Si esto no ocurre, apague el sistema y revise las conexiones.

En la parte superior derecha de la pantalla podr observarse,


en principio, la funcin del pulsador PB1. Presinelo una vez
y observe lo que ocurre.

El pulsador PB1 controla el proceso de ajuste y la


configuracin del reloj/calendario. Una vez que se ha entrado
al modo de edicin, es decir, que se habilita la modificacin
de la hora y la fecha; el espacio en la esquina superior del Figura No. 12.22: Reloj Digital funcionando.
Fuente: Elaboracin Propia.
LCD pasar a indicar cual de las variables que componen la
fecha y hora se est modificando en ese momento. Ajuste el da del mes al valor 30, para ello, haga uso de
la indicacin que se le presenta en la lnea inferior de la pantalla sobre las funciones de los pulsadores PB2 y
PB3. Ajuste el reloj/calendario a la hora y fecha actual. El cdigo del programa 12_3.bsp se presenta a
continuacin:

'Programa 12_3.bsp
'Este programa muestra como implementar un Reloj Digital utilizando el RTC DS1307 de
'Dallas Semiconductor. El reloj permitir la operacin en modo de 24 horas o AM/PM.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
'Constantes relacionadas con el RTC
LeerRTC CON %11010001 'Lectura en el DS1307
EscrRTC CON %11010000 'Escritura en el DS1307
Segundo CON 0 'Posicin dentro del arreglo del registro de segundos
Minuto CON 1 'Posicin dentro del arreglo del registro de minutos
Hora CON 2 'Posicin dentro del arreglo del registro de horas
Dia CON 3 'Posicin dentro del arreglo del registro de da-> semana
Fecha CON 4 'Posicin dentro del arreglo del registro de das del mes
Mes CON 5 'Posicin dentro del arreglo del registro de meses
Year CON 6 'Posicin dentro del arreglo del registro de ao
Control CON 7 'Posicin dentro del arreglo del registro de control
ModoOp CON 8 'Indica que se est modificando el modo

Sistema de Desarrollo para MC, modelo MDK-B28 - 405 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Continuacin del programa 12_3.bsp

'Constantes relacionadas con la pantalla LCD


BorrarLCD CON 1 'Limpiar pantalla
Baudios CON 240 'Parmetro BaudModo de SERIN/SEROUT
Inst CON 254 'Envo de una Instruccin
Linea1 CON 128 'Posiciona al apuntador de DDRAM al inicio de la lnea 1
Linea2 CON 192 'Posiciona al apuntador de DDRAM al inicio de la lnea 2
CGRAM_0 CON 64 'Posicin del primer carcter en la CGRAM

NpPres CON 0 'Pulsador No presionado


Pres CON 1 'Pulsador presionado

Buz PIN 11 'Terminal conectado al altavoz piezoelctrico


SinLCD PIN 6 'Terminal que enva informacin al controlador SLCD-IC
PB3 PIN 4 'Pulsador para cambiar (aumento) la configuracin
PB2 PIN 3 'Pulsador para cambiar (disminuye) la configuracin
PB1 PIN 2 'Pulsador para ajustar configuracin
I2CSDA PIN 0 'Terminal conectado a SDA el bus I2C
I2CSCL PIN I2CSDA+1 'Terminal conectado a SCL el bus I2C

VarEditTop VAR Byte 'VarEditTop y VarEditMin contienen valores mx/mn de


VarEditMin VAR Byte 'la variable que se est modificando
VarAux VAR Byte 'variable auxiliar de uso general
RTCRAM VAR Byte (9) 'Registro que almacena la configuracin del DS1307
Texto VAR Byte (3) 'Arreglo de 3 caracteres ASCII que conforman un texto
Dir VAR Byte 'Direccin de EEPROM que contiene el inicio de un texto
EspTrab VAR Byte 'Espacio de trabajo del pulsador de configuracin
EspTrab1 VAR Byte 'Espacio de trabajo del pulsador de incremento
EspTrab2 VAR Byte 'Espacio de trabajo del pulsador de decremento
LCDPos VAR Byte 'Posicin dentro del LCD donde se produce la modificacin
I VAR Nib 'Variable de uso general
VarEdit VAR Nib 'ndice de la variable que se modifica
ModVar VAR Nib 'Variable que se est modificando
Titila VAR Bit 'Variable de control que maneja el parpadeo en la LCD

'Mensajes de texto almacenados en EEPROM


H24 DATA "24 " : AM DATA "AM " : PM DATA "PM "
Lunes DATA "LU " : Martes DATA "MA " : Miercoles DATA "MI " : Jueves DATA "JU "
Viernes DATA "VI " : Sabado DATA "SA " : Domingo DATA "DO "
Horas DATA "HRS" : Minutos DATA "MIN" : Segundos DATA "SEG" : Modo DATA "MOD"
Dias DATA "DIA" : Meses DATA "MES" : Years DATA "YRS" : Fin DATA "SET"
'___________________________________________________________________________________

Sistema de Desarrollo para MC, modelo MDK-B28 - 406 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Continuacin del programa 12_3.bsp

'Programa Principal:

PAUSE 1000 'Esperar que el SLCD-BD se inicialice


'Carga de caracteres personalizados
SEROUT SinLCD,Baudios,[Inst,BorrarLCD] : SEROUT SinLCD,Baudios,[Inst,CGRAM_0]
SEROUT SinLCD,Baudios,[$1B,$13,$1B,$1B,$1B,$1B,$11,$1F] 'Nmero 1
SEROUT SinLCD,Baudios,[$13,$0D,$1D,$1B,$17,$0F,$01,$1F] 'Nmero 2
SEROUT SinLCD,Baudios,[$13,$0D,$1D,$13,$1D,$0D,$13,$1F] 'Nmero 3
SEROUT SinLCD,Baudios,[ $00,$04,$0E,$1F,$0E,$0E,$0E,$00] 'Smbolo flecha arriba
SEROUT SinLCD,Baudios,[ $00,$0E,$0E,$0E,$1F,$0E,$04,$00] 'Smbolo flecha abajo
SEROUT SinLCD,Baudios,[Inst,Linea1]
GOSUB IniciarDS1307 'Inicializa al RTC
SEROUT SinLCD,Baudios,[Inst,Linea1," PROG 12_3.bsp ",Inst,Linea2," RTC I2C DS1307 "]
'Mensaje mostrado en la pantalla LCD
PAUSE 1000
SEROUT SinLCD,Baudios,[Inst,BorrarLCD]
SEROUT SinLCD,Baudios,[Inst,Linea1 + 12 ,0,"SET",Inst,Linea2 + 12,1,4,2,3]
'Enva la identificacin de la funcin de los pulsadores
Titila = 0 : ModVar = -1 : RTCRAM(ModoOp) = 1 'Config. Predeterminada
DO
Lazo:
GOSUB Leer_Hora 'Lee la hora y el modo de operacin del RTC
GOSUB BCD2BIN 'Convierte el arreglo BCD a Binario
GOSUB Dia_Semana 'Calcula el da de la semana
GOSUB ActualizarLCD 'Actualiza el reloj en la pantalla
PAUSE 100 'Muestra la hora leda durante 100ms
BUTTON PB1,0,5,2,EspTrab, Pres ,Modificar 'Pulsador para cambiar configuracin
BUTTON PB2,0,5,1,EspTrab1,NpPres,PB2_No_Presionado 'Pulsador para disminuir
GOSUB Disminuir 'Rutina de disminucin
PB2_No_Presionado:
BUTTON PB3,0,5,1,EspTrab2,NpPres,Verificar_Modificacion 'Pulsador para incrementar
GOSUB Incrementar 'Rutina de incremento
Verificar_Modificacion:

'Si se est modificando la configuracin del reloj/calendario, la variable que se


'est ajustando debe mostrarse parpadeando

IF Titila = 1 THEN GOSUB Titilar


LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 - 407 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Continuacin del programa 12_3.bsp

Modificar:
Titila = 1 'Indica que se est editando una variable del RTC
IF ModVar= 6 THEN 'Fin de la modificacin, ya todo fue ajustado
ModVar=-1 : Titila =0 : Dir = Fin
ELSE
'Avanza a la siguiente variable y busca el texto a mostrar como funcin de PB1
ModVar = (ModVar+1)
LOOKUP ModVar, [Dias,Meses,Years,Horas,Minutos,Segundos,Modo],Dir
LOOKUP ModVar, [Fecha,Mes,Year,Hora,Minuto,Segundo,ModoOp],VarEdit
'VarEdit indica cual variable dentro del arreglo RTCRAM ser modificada
ENDIF
SEROUT SinLCD,Baudios,[Inst,Linea1 + 13] 'Muestra la funcin de PB1
GOSUB Mostrar_Texto 'Muestra texto en parte superior derecha
SELECT VarEdit 'con la opcin que se est disminuyendo
CASE Hora: 'En caso de ser la Hora
IF (RTCRAM(ModoOp)=1) THEN 'Depende si es 24 Hrs o no
VarEditTop = 24 : VarEditMin = 0 'Para 24 Hrs (0-24)
ELSE
VarEditTop = 12 : VarEditMin = 1 'Para 12 Hrs (1-12)
ENDIF
CASE Minuto,Segundo: VarEditTop = 59 : VarEditMin = 0 'Minutos y seg. de 0 a 59
CASE Fecha : VarEditMin = 1 : GOSUB Verificar_Fecha_Tope : VarEditTop = VarAux
CASE Mes : VarEditTop = 12 : VarEditMin = 1 'Meses de 1 a 12
CASE Year : VarEditTop = 99 : VarEditMin = 0 'Aos de 0 a 99
CASE ModoOp: VarEditTop = 3 : VarEditMin = 1
ENDSELECT
GOTO Verificar_Modificacion 'Retorna al lazo principal en el lugar
'adecuado para actualizar el parpadeo
'===================================================================================
'SUBRUTINAS

'Rutina que inicia al DS1307,activa el oscilador sin perder la configuracin que el


'RTC posea

IniciarDS1307:
HIGH I2CSDA 'Garantiza condicin BUS FREE
HIGH I2CSCL 'Garantiza condicin BUS FREE
I2CIN I2CSDA,LeerRTC,Segundo,[RTCRAM (Segundo)] 'Lee la config. del 1er. byte
I2COUT I2CSDA,EscrRTC,Segundo,[RTCRAM (Segundo)& $7F]'Activa al oscilador interno
RETURN 'sin perder la configuracin

Sistema de Desarrollo para MC, modelo MDK-B28 - 408 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Continuacin del programa 12_3.bsp

'Rutina para leer la hora del DS1307 y seleccionar el modo de operacin (AM/PM o 24)
Leer_Hora:
I2CIN I2CSDA,LeerRTC,Segundo,[STR RTCRAM \7]
RTCRAM.LOWBIT(65) = RTCRAM.LOWBIT (22)
RTCRAM.LOWBIT(64) = RTCRAM.LOWBIT (21)
IF RTCRAM.LOWBIT(65)=0 THEN RTCRAM(ModoOp)=1 ELSE RTCRAM(Hora)=RTCRAM(Hora)&$1F
RETURN

'Rutina que convierte los elementos del arreglo RTCRAM de BCD a Binario
BCD2BIN:
FOR I = 0 TO 6
RTCRAM(I) = (RTCRAM(I)/16)*10 + RTCRAM.LOWNIB(2*I)
NEXT
RETURN

'Rutina que efecta el algoritmo para determinar el da de la semana dada su fecha


Dia_Semana:
I = RTCRAM(Mes)
IF ((RTCRAM(Year)/4*4)=RTCRAM(Year)) THEN
LOOKUP I-1,[0,3,4,0,2,5,0,3,6,1,4,6],RTCRAM (Dia)
ELSE
LOOKUP I-1,[1,4,4,0,2,5,0,3,6,1,4,6],RTCRAM (Dia)
ENDIF
RTCRAM (Dia) = RTCRAM(Year)/4 + RTCRAM(Year)+ RTCRAM(Fecha) + RTCRAM (Dia) + 6
RTCRAM (Dia) = RTCRAM (Dia)//7
RETURN

'Rutina que actualiza la visualizacin en el LCD


ActualizarLCD:
SEROUT SinLCD,Baudios,[Inst,Linea1]
SEROUT SinLCD,Baudios,[DEC2 RTCRAM (Fecha),"/",DEC2 RTCRAM (Mes),"/",
DEC2 RTCRAM (Year)]
LOOKUP RTCRAM (Dia),[Sabado,Domingo,Lunes,Martes,Miercoles,Jueves,Viernes], Dir
SEROUT SinLCD,Baudios,[Inst,Linea1+9]
GOSUB Mostrar_Texto
SEROUT SinLCD,Baudios,[Inst,Linea2]
SEROUT SinLCD,Baudios,[DEC2 RTCRAM (hora),":",DEC2 RTCRAM (Minuto),":",
DEC2 RTCRAM (SEGUNDO)]
LOOKUP RTCRAM (ModoOp)-1,[H24,AM,PM],Dir
SEROUT SinLCD,Baudios,[Inst,Linea2+9]
GOSUB Mostrar_Texto
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 409 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Continuacin del programa 12_3.bsp

'Rutina ejecutada para el decremento de la variable que se edita


Decrementar:
IF Titila =0 THEN RETURN 'Verifica que realmente se est modificando la config.
'Si la variable llega al valor mnimo, debe re-inicializarse en su mximo
IF RTCRAM (VarEdit) = VarEditMin THEN RTCRAM (VarEdit)=VarEditTop + 1
RTCRAM (VarEdit) = RTCRAM (VarEdit)-1
GOSUB Verificar_Fecha_Tope 'Determina la fecha de acuerdo al MES y al AO
IF VarEdit = ModoOp THEN GOSUB Verificar_Hora_Tope
GOSUB Dia_Semana 'Clculo del da de la semana (LU,MA,MI,JU,VI,SA,DO)
FREQOUT Buz,100,1333 'Sonido corto para indicar avance
RETURN

'Rutina ejecutada para incrementar la variable que se edita


Incrementar:
IF Titila =0 THEN RETURN 'Verifica que realmente se est modificando la config.
'Si la variable llega al valor mximo, debe re-inicializarse en su mnimo
IF RTCRAM (VarEdit) = VarEditTop THEN RTCRAM (VarEdit)=VarEditMin-1
RTCRAM (VarEdit) = RTCRAM (VarEdit)+1
GOSUB Verificar_Fecha_Tope 'Determina la fecha de acuerdo al MES y al AO
IF VarEdit = ModoOp THEN GOSUB Verificar_Hora_Tope
GOSUB Dia_Semana
FREQOUT Buz,100,1333
RETURN

'Rutina para parpadear la variable que se est editando


Titilar:
LOOKUP ModVar, [0,3,6,64,67,70,73],LCDPos
SEROUT SinLCD,Baudios,[Inst,Linea1+LCDPos," "]
PAUSE 100
GOSUB Set_Hora
RETURN

'Rutina que verifica el lmite de la fecha (da del mes) segn el mes y el ao
Verificar_Fecha_Tope:
LOOKUP (RTCRAM(Mes)-1),[31,28,31,30,31,30,31,31,30,31,30,31],VarAux
IF ((RTCRAM(Mes)=2)AND(RTCRAM.LOWNIB(12)/4*4=RTCRAM(Year))) THEN VarAux = VarAux+1
RTCRAM (Fecha) = RTCRAM (Fecha) MAX VarAux
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 410 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Continuacin del programa 12_3.bsp

'Rutina que verifica el lmite de la hora segn el modo de operacin


Verificar_Hora_Tope:
IF (RTCRAM(ModoOp)=1) THEN 'Si modo es 24 Horas incrementar
RTCRAM(Hora)=RTCRAM(Hora)+12
ELSEIF (RTCRAM(Hora)>12) THEN 'Si modo es AM/PM verificar que no exceda el mx
RTCRAM(Hora)=RTCRAM(Hora)-12 'Ajuste por cambio de 24 Horas a AM/PM
ELSE
RTCRAM(Hora) = RTCRAM(Hora) MIN 1 'Valor mnimo del modo AM/PM
ENDIF
RETURN

'Rutina para enviar la configuracin almacenada en RTCRAM al DS1307


Set_Hora:
FOR I = 0 TO 6 'Ciclo que convierte de Binario a BCD
RTCRAM(I) = (RTCRAM(I)/10)*6 + RTCRAM (I)
NEXT
IF RTCRAM(ModoOp) = 1 THEN Enviar_Datos
RTCRAM.LOWBIT (22) = RTCRAM.LOWBIT(65): RTCRAM.LOWBIT (21) =RTCRAM.LOWBIT(64)
Enviar_Datos:
'Se prepara al registro para enviarlo al DS1307
I2COUT I2CSDA,EscrRTC,Segundo,[STR RTCRAM\7] 'Envo de los 8 bytes
RETURN

'Rutina que muestra el texto almacenado en las tres localidades formadas por DIR,
'DIR+1 y DIR + 2 en la memoria EEPROM del BS2p por la pantalla LCD en la posicin
'que esta tenga

Mostrar_Texto:
FOR I=0 TO 2
READ Dir, Texto (I) 'Obtiene el texto almacenado en la EEPROM
Dir = Dir +1
NEXT
SEROUT SinLCD,Baudios, [STR Texto\3] 'Muestra el mensaje de texto
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 - 411 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Conecte una batera de 9V DC al terminal VBAT como se muestra en la figura No. 12.23. Apague el sistema
de desarrollo MDK-B28, espere algunos minutos y encindalo nuevamente. Observe que, la hora mostrada
por el reloj/calendario no slo se mantiene, sino que se sigue actualizando an cuando se ha retirado la
alimentacin del circuito. Esta caracterstica es muy comn en gran cantidad de aplicaciones en las cuales se
requiere del mantenimiento de la hora an cuando ocurran interrupciones en la potencia de alimentacin.
Por ejemplo, en todos los computadores reside una pequea batera de litio de 3V que cumple una funcin
similar a la usada en esta parte del ejercicio y se encarga de proveer de una fuente de respaldo para la
configuracin tanto de la hora como de ajustes propios del PC. El consumo de corriente en este modo de
operacin, es tan reducido que con una batera puede asegurarse la operacin de hasta 10 aos.

Figura No. 12.23: Instalacin de batera de back-up.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 - 412 -


www.roso-control.com
Captulo No. 12. Comunicacin Serial Sincrnica I2C

Investigue los siguientes tpicos


1. Qu es unl Bus I2C y como trabaja ?.
2. Cuantas lneas son requeridas en un Bus I2C ?.
3. Qu significa el trmino Multi-Master en un Bus I2C ?.
4. Cual es la velocidad de transferencia de datos en un Bus I2C ?.
5. Por qu son necesarias las resistencias de pull up en las lneas SDA y SCL ?.
6. Qu es una condicin de Start y una condicin de Stop en un Bus I2C ?.
7. Cuando se considera que un Bus I2C est libre o Free ?.
8. Como se realiza un reconocimiento ACK en un Bus I2C ?.
9. Cuantos formatos de transferencia de informacin puede soportar el Bus I2C ?.
10. Cuales son las especificaciones elctricas de un Bus I2C ?.
11. Qu es una memoria EEPROM I2C ?.
12. Qu significa escribir por pginas en una memoria EEPROM I2C ?.
13. Qu es un reloj de tiempo real y para que se utiliza ?.
14. Qu hace el bit CH en la direccin 00h del DS1307 ?.
15. Como se puede seleccionar la frecuencia de la seal cuadrada de salida en un DS1307 ?
16. Por qu el DS1307 no calcula directamente el da de la semana ?.
17. Cuantos registros de control posee el DS1307?. Qu significado tiene cada bit de cada registro ?.
18. Qu es numeracin BCD y como se convierte de BCD a binario ?.
19. Para que sirve el comando I2CIN y el comando I2COUT ?.
20. Cual es la diferencia entre el comando END y el comando STOP ?.
21. Como trabaja el comando ON GOTO ?.
22. Se puede trabajar al BASIC Stamp en un Bus I2C como esclavo, Por qu ?.

Programacin

1. Utilizando al BASIC Stamp, la memoria 24LC04B y el reloj de tiempo real, modifique el programa
12_3.bsp, para que se convierta en un reloj despertador con dos (2) alarmas. Utilice el buzzer del
sistema de desarrollo para emitir un sonido a una frecuencia de 4.5 KHz cuando la alarma se active.
El programa deber permitir seleccionar las alarmas en forma independiente.

Sistema de Desarrollo para MC, modelo MDK-B28 - 413 -


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Captulo No. 13
Comunicacin Serial Asincrnica 1Wire

Sistema de Desarrollo para MC, modelo MDK-B28 414


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Introduccin. Dallas Semiconductor ha desarrollado una poderosa tecnologa llamada 1-Wire, la cual, utiliza un slo conductor ms
su retorno o tierra para efectuar las comunicaciones y la transmisin de energa entre un dispositivo maestro y mltiples esclavos. Una
RED de dispositivos 1-Wire est conformada por un maestro y uno o ms esclavos que poseen un nico terminal de datos de tipo
open drain , al que se conecta una resistencia de pull-up anclada a +5v (nominal). Una de las caractersticas de esta tecnologa 1-
Wire, es que cada dispositivo esclavo tiene una nica e irrepetible identificacin grabada en su memoria ROM. En este captulo, se
utilizar al microcontrolador BASIC Stamp como maestro dentro de una RED 1-Wire y se efectan acciones tpicas de bsqueda,
direccionamiento y transferencia de informacin entre dispositivos 1-Wire.

El BUS 1-Wire, permite realizar una comunicacin serial


asincrnica entre un dispositivo maestro y uno o varios
iButton dispositivos esclavos, utilizando un nico terminal de E/S del
microcontrolador. Podemos sealar algunas caractersticas de
este bus:
Utiliza niveles de alimentacin CMOS/TTL con un rango
Un iButton es un circuito integrado encerrado en de operacin que abarca desde 2.8V hasta 6V.
un envoltorio de acero inoxidable de 16 mm de Tanto el maestro como los esclavos transmiten
dimetro ms parecido a una batera que a un
informacin de forma bi-direccional, pero, slo en una
micro chip. La interfaz de comunicaciones
utilizada en los iButtons es el protocolo 1-Wire direccin a la vez. De esta manera la comunicacin es
de Dallas Semiconductor, es por ello, que slo half duplex.
necesitan dos terminales, uno para datos y otro Toda la informacin es leda o escrita comenzando por el
para la referencia. bit menos significativo (LSB).
No se requiere del uso de un reloj, ya que, cada
La energa requerida para el funcionamiento del
microcircuito es tomada del propio conductor de
componente 1-Wire posee un oscilador interno que se
datos en forma parsita. sincroniza con el del maestro cada vez que en la lnea de
datos aparezca un flanco de bajada.
Existen iButtons que contienen nicamente un
La alimentacin de los esclavos se puede hacer utilizando
nmero de identificacin, memorias (EPROM,
EEPROM, NVRAM), relojes de tiempo real, el voltaje propio del BUS. Para ello, cada circuito esclavo
sensores y registradores (loggers) de posee un rectificador de media onda y un capacitor.
temperatura, encriptadores de informacin, Durante los perodos en los cuales no se efecta ninguna
convertidores analgico/digital, etc. comunicacin, la lnea de datos se encuentra en estado
alto debido a la resistencia de pull up; en esa condicin,
el diodo entra en conduccin y carga al capacitor. Cuando el voltaje de la RED cae por debajo de la
tensin del capacitor, el diodo se polariza en inverso evitando que el capacitor se descargue. La carga
que queda almacenada en el capacitor alimentar al circuito esclavo.

Sistema de Desarrollo para MC, modelo MDK-B28 415


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Las redes de dispositivos 1-Wire pueden tener fcilmente una longitud desde 200 m y contener
unos 100 dispositivos.
Todas las tensiones mayores que 2,2 Voltios son consideradas un (1) lgico mientras que como un
(0) lgico se interpreta cualquier voltaje menor de 0,8 V.
La transferencia de informacin es a 16.3 Kbps en modo Standard y hasta a 142 Kbps en modo
overdrive.

PROTOCOLO DE COMUNICACIONES 1-Wire


Podemos describir al protocolo 1-Wire como una secuencia de transacciones de informacin, la cual, se
desarrolla segn los siguientes pasos: (1) La Inicializacin, (2) Comandos y funciones de ROM, (3)
Comandos y funciones de control y memoria, (4) Transferencia de bytes o datos.

INICIALIZACIN
Todas las comunicaciones en el bus 1-Wire comienzan con una secuencia de un pulso de Reset y
Presencia. El pulso de reset provee una forma limpia de iniciar las comunicaciones, ya que, con l se
sincronizan todos los dispositivos esclavos presentes en el bus. Un Reset es un pulso que genera el maestro
al colocar la lnea de datos en estado lgico bajo por unos 480 s. Una vez liberado, el bus retorna al nivel
alto y luego de un tiempo comprendido entre 15 s a 60 s, los dispositivos esclavos transmitirn un pulso
de presencia. Este consiste en un forzar la lnea de datos a nivel bajo durante un tiempo entre 60 s a 240
s. El maestro, esperar por los pulsos de presencia con el bus en estado alto, a travs de la resistencia de
pull up, por un tiempo de al menos 480 s. Cuando utilizamos un microcontrolador BASIC Stamp 2p, el
pulso de reset tendr las caractersticas del mostrado en la figura No. 13.1.

Estado de Reset
Aprox 15 - 60 us
+5V

Figura No. 13.1:


Bus 1- Wire
Pulso de Reset generado por el BS2p.
Fuente: BASIC Stamp PBASIC Online Help.
Inactivo

Pulso de
Pulso deReset
Reset Pulso
Pulsode
de
Presencia
Presencia
0V

Aprox 564us Aprox 60 -240us

Sistema de Desarrollo para MC, modelo MDK-B28 416


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

COMANDOS Y FUNCIONES DE ROM


Una vez que el BASIC Stamp recibe el pulso de presencia de los dispositivos esclavos, se puede enviar un
comando de ROM. Los comandos de ROM son comunes a todos los dispositivos 1-Wire y se relacionan con
la bsqueda, lectura y utilizacin de la direccin de 64 bits que identifica a esclavos. En la tabla No. 13.1, se
muestran los comandos de ROM ms comnmente utilizados con los dispositivos 1-Wire.

Comando Valor Accin


Lee la identificacin de 64 bits del dispositivo.
Read ROM $33
Este comando solamente puede usarse si existe un solo dispositivo esclavo.
Este comando, seguido de una identificacin de 64 bits, permite seleccionar a un dispositivo esclavo en
Match ROM $55
particular.
Direcciona a un dispositivo sin necesidad de conocer su identificacin.
Skip ROM $CC
Este comando puede ser utilizado solamente cuando existe un solo esclavo.
Lee los 64 bits de identificacin de todos los dispositivos esclavos conectados en el bus.
Search ROM $F0
Se utiliza un proceso de eliminacin para distinguir a cada dispositivo conectado.

Tabla No. 13.1: Funciones de ROM del bus 1-Wire.


Fuente: BASIC Stamp PBASIC Online Help.

COMANDOS Y FUNCIONES DE CONTROL Y MEMORIA

Son funciones propias del dispositivo Perodo de recuperacin


1-Wire. Incluyen comandos para Aprox. 8 us.
leer/escribir en localidades de
+5V
memoria, leer memorias de
scratchpad, controlar el inicio de la
conversin de un ADC, iniciar la
medicin de una temperatura o
manipular el estado de un bit de
salida, entre otros. Cada dispositivo
define sus propios comandos.
0V

Figura No. 13.2:


Aprox. 4 us. Aprox. 4 us.
Leer un (0) y un (1) con un BS2p.
Fuente: BASIC Stamp PBASIC Online Help. BS2p lee un 0 BS2p lee un 1
- Aprox. 72 us.- -Aprox. 72 us.-

Sistema de Desarrollo para MC, modelo MDK-B28 417


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

TRANSFERENCIA DE DATOS
La lectura y escritura de datos en el bus 1-Wire se hace por medio de Slots, la generacin de estos es
responsabilidad del maestro, en este caso, el BASIC Stamp 2p. Cuando el maestro lee informacin del bus,
debe forzar la lnea de datos a estado bajo durante al menos 1 s y esperar unos 15 s para entonces leer
el estado de la misma. El estado lgico de la lnea en ese momento, estar determinado por el dispositivo
esclavo. La figura No. 13.2, muestra el proceso de lectura de un Slot tpico que produce un BASIC Stamp
2p.
Al momento de efectuar la escritura de un bit en el bus ocurre algo similar, el maestro produce un pulso de
entre 1 s y 15 s de duracin, para luego colocar en el bus al bit que se desea transmitir. Este bit deber
permanecer en el bus al menos 60 s. En la figura No. 13.3, puede verse claramente como un BASIC Stamp
2p escribe la informacin en el bus 1-Wire.

Perodo de recuperacin
Aprox 8 us

+5V

0V
Aprox
Esclavo 1 -Wire lee Esclavo 1 - Wire lee
8 us
la lnea (15us - 45us) la lnea (15us - 45us)
BASIC Stamp Escribe un 0 BASIC Stamp Escribe un 1
Aprox 72 us Aprox 72 us

Figura No. 13.3: Escritura de un (0) y un (1) con el BS2p.


Fuente: BASIC Stamp PBASIC Online Help.

Sistema de Desarrollo para MC, modelo MDK-B28 418


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

IMPLEMENTACIN DEL MAESTRO 1-Wire CON EL BASIC STAMP 2P


Para el manejo del protocolo 1-Wire, el BASIC Stamp 2p incluye dos poderosas instrucciones que le
permiten realizar la lectura y la escritura de informacin en el bus. La implementacin hecha por Parallax de
estas funciones, tiene las siguientes caractersticas:

La velocidad de transmisin de datos es aproximadamente de 20 Kbps en modo normal.


El BASIC Stamp slo puede trabajar como dispositivo maestro.
Se permite el uso de todos los modificadores de formato.

OWIN
Recibe informacin desde un dispositivo mediante el protocolo 1-Wire.

OWIN Pin, Modo, [Dato de Entrada]

Pin : Variable, constante o expresin (0 - 15) que especifica cual terminal de E/S ser usado para la
recepcin.
Modo: Variable, constante o expresin (0 - 15) que indica el tipo de transferencia de informacin. Este
parmetro controla la ubicacin de los pulsos de reset, selecciona el modo de transferencia en bytes o
bits y define la velocidad a utilizar, modo normal o modo de alta velocidad.
Dato de Entrada: Lista de variables y sus modificadores, que indican donde y como ser almacenada
la informacin entrante.

El argumento Modo de la instruccin OWIN puede tomar cualquiera de los valores mostrados en la tabla
No. 13.2, anexa.

Sistema de Desarrollo para MC, modelo MDK-B28 419


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Modo Efecto
0 No Reset, modo Byte, Baja velocidad
1 Reset antes de los datos, modo Byte, Baja velocidad
2 Reset despus de los datos, modo Byte, Baja velocidad
3 Reset antes y despus de los datos, modo Byte, Baja velocidad
4 No Reset, modo Bit, Baja velocidad
5 Reset antes de los datos, modo Bit, Baja velocidad
8 No Reset, modo Byte, Alta velocidad
9 Reset antes de los datos, modo Byte, Alta velocidad

Tabla No. 13.2: Modos de Transmisin / Recepcin 1-Wire.


Fuente: BASIC Stamp PBASIC Online Help.

OWOUT
Enva informacin hacia un dispositivo mediante el protocolo 1-Wire.

OWOUT Pin, Modo, [Dato de Salida]

Pin: Variable, constante o expresin (0 - 15) que especifica cual terminal de E/S ser usado para la
transmisin.
Modo: Variable, constante o expresin (0 - 15) que indica el tipo de transferencia de informacin. Este
parmetro controla la ubicacin de los pulsos de reset, selecciona el modo de transferencia en bytes o
bits y define la velocidad a utilizar, modo normal o modo de alta velocidad.
Dato de Salida: Lista de variables y sus modificadores que indican cuales son y como sern enviados
los datos.

Sistema de Desarrollo para MC, modelo MDK-B28 420


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

STORE
Dado que el microcontrolador BS2p posee varios bloques de memoria EEPROM, existe una instruccin que
permite indicar sobre cual de estos bloques tienen efecto las instrucciones de READ y WRITE.

STORE Bloque de Programacin

Bloque de Programacin: Es una variable, constante o expresin (0 7) que especifica el bloque


de EEPROM, sobre el cual se desea trabajar.

La instruccin STORE permite tener acceso a cualquier localidad de EEPROM sin importar cual bloque
contiene al programa que se encuentra en ejecucin, ello permite ampliar la cantidad de memoria disponible
para los comandos READ y WRITE (limitada en principio a 2047 bytes). Tambin puede usarse para crear
un espacio separado para las variables que deban ser almacenadas en dicha memoria evitando as un
posible solapamiento entre programas y datos.

Por defecto READ y WRITE operan en el banco que contenga al programa en ejecucin, STORE cambia
esto y mantiene la ejecucin de las mencionadas instrucciones de lectura/escritura en el banco especificado
hasta que se modifique ste mediante otra instruccin STORE o que se cambie el programa (se ejecute otro
bloque).

WRITE
Si bien la directiva DATA permite escribir en la EEPROM, lo hace una sola vez y durante la descarga del
programa. Esto la limita a contener datos que no cambian de manera alguna dentro del programa, como los
mensajes de texto o los valores de inicializacin predeterminados de algunas variables. Sin embargo, son
innumerables las aplicaciones que requieren de la escritura en EEPROM de datos en tiempo de ejecucin (y
no en tiempo de compilacin como lo hace DATA); para ello, PBASIC dispone de la instruccin WRITE.

WRITE Localidad, {Word} Dato {, {Word} Dato ...}

Localidad: Variable, constante o expresin de 0 a 2047 que indica la direccin de la EEPROM donde se
quiere escribir.
Dato: Es una constante, variable o expresin de 0 a 65535, que se desea almacenar en la memoria.
El modificador Word se utiliza de la misma manera que en la instruccin DATA

Sistema de Desarrollo para MC, modelo MDK-B28 421


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Objetivos: Desarrollar un programa en PBASIC que permita identificar si existe un esclavo conectado al bus 1-Wire del sistema de
desarrollo MDK-B28. Obtener el serial de identificacin del dispositivo 1-Wire detectado.

Elementos a Utilizar Conecte el Blue Dot Receptor al conector RJ-11 identificado


como 1-Wire BUS en el Sistema de Desarrollo MDK-B28,
ver figura No. 13.4. Arme el montaje de la figura No. 13.5,
(1) BASIC Stamp 2p. para ello ubique el terminal OWP en la regleta de conexiones
(1) Conector Blue Dot Receptor (Dallas). y conctelo al terminal P0 del BASIC Stamp.
(1) DS1971 (256 Bit EEPROM) (Dallas).
(1) Cable de programacin.
(1) StampW (Ver 2.0 beta 2.1 o superior). Trabajar con el protocolo 1-Wire cuando existe un solo
dispositivo conectado en el bus, es extremadamente simple
como podr usted comprobarlo al analizar el cdigo del
programa 13_1.bsp. Sin embargo, antes de descargar el programa es necesario analizar el diagrama de flujo
mostrado en la figura No. 13.6. En este primer ejercicio, se utilizan
dos comandos de ROM soportados por todos los dispositivos 1-
Wire: Search ROM y Read ROM. Cuando el primero de ellos es
enviado a travs del bus, todos los dispositivos conectados en la
RED comenzarn a transmitir su serial de identificacin, enviando
cada bit de la ID y luego el complemento del mismo, pudiendo
esto ser utilizado para detectar la presencia de los esclavos 1-
Wire.

Figura No. 13.4:


Conexin al bus 1-Wire.
Fuente: Elaboracin Propia.

Figura No. 13.5: Montaje requerido para el ejercicio # 1.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 422


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

INICIO

Presentar mensaje:
Conecte un dispositivo al bus 1-Wire

Ver_Disp
(Verificar estado del bus) Esperar 500 ms

Emitir tono de alerta Hay disp No Presentar mensaje:


por 500 ms conectados No hay dispositivos conectados

Si

Presentar mensaje: Si Hay conflicto


Ver_Disp
BUS EN CORTOCIRCUITO en el bus

No
Enviar RESET al bus 1-Wire
Enviar un RESET por el bus 1-Wire

Enviar comando Search ROM ($F0)


Enviar comando
ReadRom ($33)
Leer IB Bit0 en bus 1-Wire

Recibir los 8 bytes de Identificacin


y almacenarlos en RAM Scratchpad Leer IB Bit1 en bus 1-Wire

Dispositivo = IB Bit0 + IB Bit1


Extraer la ID del Scratchpad
y mostrarla en pantalla
RETURN

FIN

Figura No. 13.6: Diagrama de flujo para el ejercicio # 1.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 423


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

'Programa 13_1.bsp
'Este programa tiene por objetivo leer el cdigo de identificacin
'de un dispositivo conectado al bus 1-Wire
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

ReadRom CON $33 'Lee la identificacin del disp. (1 solo esclavo en la RED)
MatchRom CON $55 'Selecciona a un dispositivo del bus (requiere saber su ID)
SkipRom CON $CC 'Selecciona a un dispositivo del bus (sin saber su ID)
SearchRom CON $F0 'Lee todas las ID de todos los dispositivos presentes

OW_NRBB CON 0 'Modo 0: No Reset, Modo Byte, Baja velocidad


OW_RADBB CON 1 'Modo 1: Reset Antes de los Datos, modo Byte, Baja velocidad
OW_NRBitB CON 4 'Modo 4: No Reset, Modo Bit, Baja velocidad

OW_Pin PIN 0 'Terminal de datos del bus 1-Wire


Buz PIN 11 'Terminal conectado al altavoz piezoelctrico

Indice VAR Nib 'Variable de uso general


RomByte VAR Byte 'Variable usada para mostrar la Identificacin del dispositivo
Dispositivo VAR Nib 'Variable que indica si hay o no dispositivos en el bus
'___________________________________________________________________________________
'Programa Principal

DEBUG HOME,REP "*"\50 ,CR


DEBUG CRSRX,7,"Conecte un dispositivo al bus 1-Wire" : PAUSE 1500
DEBUG CRSRXY,0,5,REP "*"\50 ,CR

Inicio:
GOSUB Ver_Disp 'Verifica si hay o no esclavos
ON Dispositivo GOTO Bus_CC , Un_Disp , No_Disp 'Salta al caso correspondiente

Un_Disp: 'Cuando hay un solo esclavo


OWOUT OW_Pin,OW_RADBB,[ReadRom] 'Enva un Reset, luego un ReadRom,
OWIN OW_Pin,OW_NRBB,[SPSTR 8] 'recibe la ID del dispositivo y la
DEBUG CRSRXY,4,3,"Dispositivo 1-Wire # ID: " 'almacena en la RAM Scratchpad

Sistema de Desarrollo para MC, modelo MDK-B28 424


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_1.bsp

FOR Indice = 7 TO 0 'Muestra la ID obtenida en el debug


GET Indice, RomByte : DEBUG HEX2 RomByte 'terminal
NEXT
END

No_Disp:
DEBUG CRSRXY,0,3,CLREOL
DEBUG CRSRXY,11,3,"No hay dispositivos conectados" : PAUSE 500 : GOTO Inicio

Bus_CC:
DEBUG CRSRXY,0,3,CLREOL 'Borra la lnea actual
DEBUG CRSRXY,11,3," BUS EN CORTOCIRCUITO "
FREQOUT Buz,1900,1250 : GOTO Inicio 'Seal de alarma

'___________________________________________________________________________________
'SUBRUTINAS
'Ver_Disp determina si hay o no algn dispositivo en el bus

Ver_Disp:
OWOUT OW_Pin,OW_RADBB,[SearchROM]
'Comando Search hace el dispositivo comience a transmitir su ID
OWIN OW_Pin,OW_NRBitB,[Dispositivo.BIT1,Dispositivo.BIT0] 'Lee el primer de la ID
Dispositivo = Dispositivo.BIT1 + Dispositivo.BIT0
'El primer bit de la ID del esclavo y su negado, permiten saber el estado del bus:
'Si son 0 ambos, el bus est en cortocircuito. Si ambos son 1, no hay esclavos en
'el bus. Si son 01 10 hay 1 slo dispositivo conectado a la RED.
RETURN

En el debug terminal debe mostrarse el mensaje Conecte un dispositivo al bus 1-Wire tal como puede
apreciarse en la figura No. 13.7. Conecte el DS1971 o cualquier otro iButton que usted disponga en el Blue
Dot Receptor y observe el cdigo que se despliega en la pantalla del computador, ver figura No. 13.8.
Anote la ID que se le muestra: ( ).

Desconecte al iButton y observe el serial que ste presenta en su parte anterior, verifique que sea el mismo
que se le mostr en la pantalla del PC, de no ser as, apague el sistema y revise las conexiones. Si persiste el
error, desconecte el iButton y apritelo nuevamente en su receptor.

Sistema de Desarrollo para MC, modelo MDK-B28 425


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

En la subrutina Ver_Disp del programa 13_1.bsp se


utiliza una variable llamada Dispositivo, en sta se
almacenan los dos bits ledos del bus 1-Wire. Para
determinar el estado de la RED, se suman estos bits
pudiendo arrojar alguno de los siguientes
resultados:

0: Si el bus se encuentra en cortocircuito o


dos esclavos escribieron bits opuestos.
1: Si existe un slo dispositivo en el bus.
2: Si no hay ningn esclavo conectado.

Al observar el programa, notar que la lectura de los


8 bytes de informacin se hace en una sola lnea
mediante la instruccin:

Figura No. 13.7: Esperando conexin del iButton.


OWIN OW_Pin,OW_NRBB,[SPSTR 8]
Fuente: Elaboracin Propia.

Cuyo significado es: recibir 8 bytes de informacin a


travs del terminal P0 (OW_Pin), utilizando el
protocolo 1-Wire (OWIN), sin enviar pulsos de reset
(OW_NRBB) y almacenando la informacin recibida
en la RAM Scratchpad del BS2p.

La memoria scratchpad se puede utilizar como


memoria intermedia de almacenamiento. Posee 128
bytes que se pueden utilizar para intercambio de
informacin con la memoria RAM del
microcontrolador. Esta memoria Scratchpad ser de
mucha utilidad en este captulo, ya que, su contenido
se utilizar para almacenar la informacin que se
quiere (enviar/recibir) (a/desde) los dispositivo 1-
Wire.

Figura No. 13.8: Mostrando la ID leda.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 426


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Objetivo: Desarrollar un programa en PBASIC que calcule el CRC-8 de la ID de un dispositivo 1-Wire.

Elementos a Utilizar
Como fue mencionado con anterioridad, cada
dispositivo 1-Wire posee una identificacin nica de (1) BASIC Stamp 2p.
8 bytes, las partes que la componen pueden verse en (1) Conector Blue Dot Receptor (Dallas).
la figura No. 13.9 (1) DS1971 o cualquier otro iButton (Dallas).
(1) StampW (Ver 2.0 beta 2.1 o superior).

Figura No. 13.9: ID de un dispositivo 1-Wire.


Fuente: Modificado de Understanding and Using Cyclic Redundancy Checks with Dallas Semiconductor iButtonTM Products.

Cuando se transmite informacin de manera serial, es necesario verificar la posible existencia de errores que
pudieran ocurrir durante la comunicacin. Existen varios mtodos para efectuar este chequeo. Uno de los
ms simples consiste en aadir un bit extra a cada byte transmitido de modo que el nmero de unos (1)
contenidos en el paquete de 9 bits siempre sea par o impar. Este procedimiento se le conoce como
verificacin de paridad y permite encontrar errores que ocurran en un bit, pero no es confiable cuando
cambia ms de un bit dentro del byte.
Uno de los mecanismos de deteccin de errores ms eficientes es el Chequeo de Redundancia Cclica (del
ingls Cyclic Redundancy Check) conocido por sus iniciales CRC. El CRC de un conjunto de datos, es un
nmero de cierta cantidad de bits que contiene el resultado de la aplicacin de una expresin matemtica al
mencionado conjunto de datos. As, si el CRC es de 4 bits se denominar CRC-4, si es de 8 bits se llamar
CRC-8, si es de 16 bits ser CRC-16, etc. El algoritmo utilizado para el clculo de CRC de Dallas
Semiconductor (DOW CRC), cuyo resultado se incluye en la identificacin de los dispositivos 1-Wire, es de

Sistema de Desarrollo para MC, modelo MDK-B28 427


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

8 bits y se calcula introduciendo los primeros 56 bits, correspondientes al serial del dispositivo y el cdigo de
la familia a la que pertenece el dispositivo, en el algoritmo ilustrado en la figura No. 13.10.

Los errores detectables por el CRC-8 implementado por Dallas Semiconductors son:

1. Cualquier nmero impar de errores sobre los 64 bits transmitidos.


2. Todos los errores de dos bits que se presenten en la ID de 64 bits.
3. Cualquier grupo de errores de hasta 8 bits incorrectos.
4. La gran mayora de los errores de ms de 8 bits incorrectos.

Figura No. 13.10: Representacin de la forma de calcular el CRC-8 en los dispositivos 1-Wire.
Fuente: Understanding and Using Cyclic Redundancy Checks with Dallas Semiconductor iButtonTM Products.

El clculo del CRC-8 puede hacerse de varias formas. La primera de ellas es evidentemente por hardware,
siguiendo el esquema de la figura No. 13.10. Cuando se implementa por software, una forma simple de
hacerlo, es por medio de una tabla de 256 bytes, la cual, es llamada repetidas veces a medida que se
introducen los bytes hasta obtener el valor definitivo del CRC. Este mtodo es muy sencillo, pero presenta el
inconveniente de requerir el uso de 256 bytes de la memoria del microcontrolador. Por esta razn, el
programa 13_2.bsp presenta una tercera forma de efectuar el clculo y se basa en aplicar las funciones
lgicas mostradas en la figura No. 13.10, a travs de programacin. Si bien de esta forma el clculo se
efecta de una manera ms lenta, se hace con un gasto menor de recursos del microcontrolador.

Descargue el programa 13_2.bsp al BASIC Stamp y ejectelo. Por medio del debug terminal, se le solicitar
que introduzca la identificacin de un dispositivo 1-Wire.

Sistema de Desarrollo para MC, modelo MDK-B28 428


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Tome el iButton que utiliz en la actividad anterior e introduzca el serial y el cdigo de la familia, ver figura
No. 13.11. Para el caso de la figura 13.11, luego de introducir: 000000FBD8B314 el programa presentar
el mensaje CRC = D4, verificndose que el clculo ha sido correcto.

Figura No. 13.11:


Comience por Aqu! Disposicin de la ID
sobre un iButton.
Fuente: www.maxim-ic.com.

'Programa 13_2.bsp
'Este programa muestra como calcular el CRC-8 utilizado por los iButtons, requiere
'que el usuario introduzca el serial del dispositivo y el cdigo de la familia.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

IBit VAR Bit 'Variable temporal


CRC VAR Byte 'Variable que contiene al CRC calculado
CRCt VAR Byte 'Var. aux. que contiene el byte al que se le calcula el CRC
RomCode VAR Byte(8) 'Variable que almacena la identificacin del dispositivo
ByteAct VAR Nib 'Variable de uso general
Indice VAR Nib 'Variable de uso general
'___________________________________________________________________________________

Sistema de Desarrollo para MC, modelo MDK-B28 429


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_2.bsp

'___________________________________________________________________________________
'Programa Principal
CRC =0 'Inicializa la variable CRC en 0
DEBUG CLS,"INTRODUZCA EL SERIAL Y LA FAMILIA DEL DISPOSITIVO",CR,"ID #: "
'Mensaje al usuario para que se introduzca la identificacin del dispositivo
FOR Indice = 0 TO 6 'Lee cada par de nmeros hexadecimales corresp. al
DEBUGIN HEX2 RomCode (Indice) 'cdigo de la familia y el serial propio del disp.
NEXT 'y lo almacena en el arreglo RomCode

FOR ByteAct = 6 TO 0 'Calcula el CRC-8 de los 7 bytes de ID


CRCt = ROMCODE (ByteAct) 'Actualiza el byte que entrar en la frmula
GOSUB CRCCalc 'Rutina de clculo
NEXT

DEBUG CR, "CRC = ",HEX2 CRC,CR 'Muestra el valor del CRC calculado
END

'===================================================================================
'SUBRUTINAS
'CRCCalc calcula el CRC-8 de un byte
CRCCalc:
FOR Indice = 0 TO 7 'Toma el byte de entrada (CRC) y lo va introd. en
IBit = CRC.BIT0 ^ CRCt.BIT0 'la ecuacin del CRC-8 bit por bit. El resultado
CRC = CRC >> 1 'parcial del clculo se almacena en la variable
CRC.BIT2 = CRC.BIT2 ^ IBit 'CRC. La variable IBit almacena temporalmente el
CRC.BIT3 = CRC.BIT3 ^ IBit 'valor de la operacin XOR entre el LSB del CRC
CRC.BIT7 = IBit 'anterior y el LSB del dato entrante, ya que ser
'necesario conservar este valor luego de hacer el
'corrimiento de los bits a travs de la expresin
CRCt = CRCt >> 1 'Procesar el prximo bit
NEXT
RETURN

Una vez que se ha visto como calcular el CRC-8 y verificado el funcionamiento del programa 13_2.bsp,
resultar evidente que introducir la identificacin por medio del teclado y el debug terminal, es de muy poca
utilidad prctica, por ello, en los siguientes programas se unifican los ejercicios # 1 y # 2 de este capitulo.

Sistema de Desarrollo para MC, modelo MDK-B28 430


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Figura No. 13.12: Diagrama


INICIO
INICIOde flujo para el programa 13_3.bsp.
(0)(0)
Fuente: Elaboracin Propia.
CRCverif ==Contenido
CRCverif de la
Contenido de
localidad8 de
la localidad 8 de la SCRAM
SPRAM

Si
CRCverif =
CRCverif Presentar
Presentar mensaje:
mensaje: FIN
FIN
= Vlido
Valido CRC Ok
CRC OK
No
Presentar
Presentar mensaje:
mensaje:
Conecte
Conecte un dispositivo
un dispositivo al bus 1 1-Wire al Bus
- Wire

Ver_Disp
Ver_Disp Esperar
Esperar 500500 ms
ms
Verificar
(Verificar el estado
estado del Bus
del bus)

No
Emitir tonotono
Emitir de alerta
de alerta Hay disp
Hay Disp. Presentar
Presentar mensaje:
mensaje:
por
por500
500 ms.ms Conectados?
conectados No hay No hay Disp.
dispositivos Conectados
conectados
Si
Si
Presentar
Presentar mensaje:
mensaje: Hay
Hay conflicto
conflicto
BusCORTOCIRCUITO
BUS EN en Cortocircuito en
Enelelbus
Bus?
No

Enviar
Enviar un RESET
un RESET por elpor
busel1 bus 1-Wire-Wire

Enviarcomando
Enviar commando
ReadROM ($33)
ReadRom ($33)

Recibir
Recibir los 8 los 8 de
bytes bytes de Identificacin
Identificacin
Y guardarlos
y almacenarlos en RAMenScratchpad
la RAM Scratcpad

Extraer
Extraer la IDladelIDScratchpad
del Scratchpad
y mostrarla
y mostrarla en pantalla
en pantalla

RUN1 1
RUN

Figura No. 13.12: Diagrama de flujo para el programa 13_3.bsp.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 431


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

En las figuras No. 13.12 y No. 13.13, se muestran los diagramas de flujo correspondientes a los programas
13_3.bsp y P13_3a.bsp. El programa 13_3.bsp es muy similar al 13_1.bsp pero presenta dos variaciones
importantes. La primera ocurre al iniciarse el programa, pues se verifica que el contenido de la posicin 8 de
la RAM Scratchpad (SCRAM) del BS2p sea igual a una constante llamada Valido. Para qu se preguntar
usted?. La respuesta es bastante simple. En sta localidad de la memoria SCRAM, el programa ubicado en el
banco 1 (P13_3a.bsp) colocar un valor igual a Valido si se determina que el CRC calculado es igual al
recibido. La otra modificacin es la llamada a la ejecucin del programa que calcula el CRC mediante la
instruccin RUN 1.

INICIO (1)

Presentar mensaje:
Calculando CRC

ByteAct = 0

CRCCalc

CRCt = SCRAM (ByteAct)


Indice = 0
CRCCalc
ByteAct =
ByteAct + 1
Introducir el bit (Indice)
No de CRCt en la expresin
ByteAct CRC = X 8 + X 5 + X 4 + 1
Indice =
=6
Indice + 1
Si
No
Indice = 7
CRCt = SCRAM (7)

Si
No CRCt =
CRC RETURN

Si
SCRAM (8) = 00
SCRAM (8) = Valido
Figura No. 13.13: Diagrama de flujo
para el programa P13_3a.bsp.
Fuente: Elaboracin Propia.
RUN 0

Sistema de Desarrollo para MC, modelo MDK-B28 432


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Por su parte en el programa P13_3a.bsp, adems de calcular el valor del CRC-8, se utiliza una localidad de la
memoria SCRAM (octava localidad) para guardar un valor o byte que depende del xito que se obtuvo al
calcular el CRC-8. All en esa localidad, se escribir un ($00) si ocurri un error en la lectura de los datos y
se colocar ($AA) si fue correcta.

Estando en estos momentos en capacidad de identificar a un dispositivo conectado en la RED 1-Wire y


entendiendo como se hace una validacin de la identificacin del mismo, el siguiente paso, ser direccionar
al esclavo encontrado y enviarle los comandos y funciones de control y memoria.

Los siguientes ejercicios se desarrollarn basndose en el DS1971, un iButton que posee una memoria
EEPROM de 256 bits, con la cual, se implementar un pequeo sistema de control de acceso.

Cargue y ejecute el siguiente programa en el BASIC Stamp el programa 13_3.bsp, utilizado para la lectura
de la identificacin de dispositivos 1-Wire y el programa P13_3a, usado para el clculo y validacin de la
identificacin leda desde un esclavo 1-Wire.

'Programa 13_3.bsp
'Este programa tiene por objetivo leer el cdigo de un dispositivo conectado al bus
'1-Wire y validar el mismo por medio del CRC-8.
'===================================================================================
'{$STAMP BS2p, P13_3a.bsp}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
ReadRom CON $33 'Lee la identif. del dispositivo (1 slo esclavo en la RED)
MatchRom CON $55 'Selecciona a un dispositivo del bus (requiere saber su ID)
SearchRom CON $F0 'Lee todas las ID de todos los dispositivos presentes en la RED
Valido CON $AA 'Constante de validacin de datos
OW_NRBB CON 0 'Modo 0: No Reset, modo Byte, Baja velocidad
OW_RADBB CON 1 'Modo 1: Reset Antes de los Datos, modo Byte, Baja Velocidad
OW_NRBitB CON 4 'Modo 4: No Reset, modo Bit, Baja velocidad

OW_Pin PIN 0 'Terminal de datos del bus 1-Wire


Buz PIN 11 'Terminal conectado al altavoz piezoelctrico

CRCverif VAR Byte 'Var. que indica si el CRC recibido coincide con el calculado
RomByte VAR Byte 'Var. usada para mostrar la identificacin del dispositivo

Sistema de Desarrollo para MC, modelo MDK-B28 433


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_3.bsp

Indice VAR Nib 'Variable de uso general


Dispositivo VAR Nib 'Variable que indica si hay o no dispositivos en el bus
'___________________________________________________________________________________
'Programa Principal
GET 8,CRCverif 'Lee en la localidad 8 del Scratchpad si el CRC es vlido o no
'Mensaje si el CRC fue correcto
IF CRCverif = Valido THEN DEBUG CRSRXY,22,5,"CRC OK" : END
DEBUG CLS,REP "*"\50 ,CR
DEBUG CRSRX,7,"Conecte un dispositivo al bus 1-Wire" : PAUSE 1500
'Muestra un mensaje al usuario para que conecte un dispositivo en el bus
DEBUG CRSRXY,0,6,REP "*"\50 ,CR

Inicio:
GOSUB Ver_Disp 'Verifica si hay o no esclavos en la RED
ON Dispositivo GOTO Bus_CC , Un_Disp , No_Disp 'Salta al caso correspondiente
Un_Disp: 'Cuando hay un solo esclavo
OWOUT OW_Pin,OW_RADBB,[ReadRom] 'Enva un Reset, luego un ReadRom,
OWIN OW_Pin,OW_NRBB,[SPSTR 8] 'recibe la ID del dispositivo y
DEBUG CRSRXY,4,3,"Dispositivo 1-Wire # ID: " 'la almacena en la RAM Scratchpad
FOR Indice=7 TO 0 'Muestra la ID obtenida en el
GET Indice,RomByte : DEBUG HEX2 RomByte 'DEBUG TERMINAL
NEXT
RUN 1 'Ejecuta el programa del banco 1 para validar el CRC recibido

No_Disp: 'No se detecta ningn dispositivo


DEBUG CRSRXY,0,3,CLREOL 'Borra lnea 3
DEBUG CRSRXY,11,3,"No hay dispositivos conectados" : PAUSE 500 : GOTO Inicio

Bus_CC: 'Bus en cortocircuito o colisin entre dispositivos


DEBUG CRSRXY,0,3,CLREOL 'Borra lnea 3
DEBUG CRSRXY,11,3," BUS EN CORTOCIRCUITO "
FREQOUT Buz,1900,1250 GOTO Inicio 'Sonido de alerta y retorno
GOTO Inicio 'al programa principal
'===================================================================================
'SUBRUTINAS
'Ver_Disp determina si hay o no algn dispositivo en el bus
Ver_Disp:
OWOUT OW_Pin,OW_RADBB,[SearchROM]
OWIN OW_Pin,OW_NRBitB,[Dispositivo.BIT1,Dispositivo.BIT0]
Dispositivo = Dispositivo.BIT1 + Dispositivo.BIT0
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 434


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

'Programa P13_3a.bsp
'Este programa muestra como utilizar el algoritmo de clculo del CRC-8 del programa
'13_2.bsp, para validar la identificacin obtenida de un dispositivo conectado al
'bus 1-Wire. Se utilizar la memoria Scratchpad del BS2p para el intercambio de
'informacin entre los bloques de programacin del BASIC Stamp 2p.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes
Valido CON $AA
OW_Pin PIN 0 'Terminal de datos del bus 1-Wire
CRC VAR Byte 'Variable que contiene al CRC calculado
CRCt VAR Byte 'Var. aux. que contiene el byte al que se le calcula el CRC
ByteAct VAR Nib 'Variable de uso general
Indice VAR Nib 'Variable de uso general
IBit VAR Bit 'Variable temporal
'___________________________________________________________________________________
'Programa Principal
CRC =0
DEBUG CRSRXY,15,4,"Calculando CRC = "
FOR ByteAct = 0 TO 6
GET ByteAct ,CRCt 'Recupera el cdigo de la familia y el serial del Scratchpad
GOSUB CRCCalc 'y los va introduciendo en la expresin de clculo
NEXT 'hasta obtener el CRC y mostrarlo en pantalla
DEBUG HEX2 CRC
GET 7,CRCt 'Obtiene el CRC recibido del dispositivo y lo compara con el
IF (CRCt = CRC) THEN PUT 8, Valido: ELSE PUT 8,$00 'calculado, si son iguales
RUN 0 'Retorna al Banco 0 'indica que es vlido
'===================================================================================
'SUBRUTINAS
'CRCCalc calcula el CRC-8 de los datos que se introduzcan por medio de la var. CRCt
CRCCalc:
FOR Indice = 0 TO 7
IBit = CRC.BIT0 ^ CRCt.BIT0
CRC = CRC >> 1
CRC.BIT2 = CRC.BIT2 ^ IBit : CRC.BIT3 = CRC.BIT3 ^ IBit : CRC.BIT7 = IBit
CRCt = CRCt >> 1
NEXT
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 435


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

En la figura No. 13.14 puede observarse el resultado de la ejecucin de los programas 13_3.bsp y
P13_3a.bsp.

Figura No. 13.14:


Validando la ID del dispositivo 1-Wire.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 436


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Objetivo: Utilizar al microcontrolador BASIC Stamp como maestro en un bus 1-Wire para leer y escribir informacin en un DS1971.

Para esta actividad fue elegido un DS1971, que


proporciona las funciones tpicas que pueden Elementos a Utilizar
encontrarse en cualquier dispositivo 1-Wire. Los
comandos y funciones que se utilizarn son muy (1) BASIC Stamp 2p.
simples a fin de no complicar su entendimiento en (1) Conector Blue Dot Receptor (Dallas).
(1) DS1971 256 bit EEPROM (Dallas).
esta parte del captulo. En la figura No. 13.15 puede
(1) Mdulo SLCD-BD.
observarse la totalidad de los comandos de ROM y (1) Cable de programacin.
de funcin que acepta el DS1971. (1) StampW (Ver 2.0 beta 2.1 o superior).

COMANDOS AFECTA A:

READ ROM $33 64-BIT ROM


FUNCIONES DE ROM MATCH ROM $55 64-BIT ROM
1-WIRE SEARCH ROM $F0 64-BIT ROM
SKIP ROM $CC N/A

WRITE SCRATCHPAD $0F 256-BIT SCRATCHPAD


READ SCRATCHPAD $AA 256-BIT SCRATCHPAD
COPY SCRATCHPAD $55 256-BIT EEPROM
FUNCIONES DE MEMORIA READ MEMORY $F0 256-BIT SCRATCHPAD
ESPECFICAS DEL DISPOSITIVO READ STATUS $66 STATUS MEMORY
DS1971 WRITE APPLICATION REGISTER $99 64-BIT REG SCRATCHPAD
READ APPLICATION REGISTER $C3 APP STATUS O REG SP
COPY AND LOCK APP REGISTER $5A APP REGISTER Y STATUS MEM

Figura No. 13.15: Comandos y Funciones de ROM para el DS1971.


Fuente: www.maxim-ic.com.

En este ejercicio se utilizar un nuevo comando de ROM llamado MATCH ROM que permite al
microcontrolador, efectuar el direccionamiento de un esclavo una vez conocido su serial de identificacin.

Sistema de Desarrollo para MC, modelo MDK-B28 437


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Para tener acceso a todas las funciones especficas de memoria de un dispositivo 1-Wire en particular,
recomendamos que se utilicen las hojas tcnicas y/o especificaciones del fabricante. En la figura No. 13.16
se muestra un diagrama de flujo extrado de las hojas de especificaciones del DS1971, con esta informacin
se podr realizar el programa 13_4.bsp.

El programa 13_4.bsp permite escribir una cierta cantidad de datos (en este caso caracteres ASCII) y
almacenarlos en la memoria EEPROM del dispositivo DS1971. Para comprender como se efecta este
proceso, se presentan los diagramas de las figuras No. 13.17 y No. 13.18.

MASTER TX MEMORY
FUNCTION COMMAND

$0F WRITE $AAREAD $55 COPY


$F0 READ
SCRATCHPAD SCRATCHPAD SCRATCHPAD
MEMORY ?
? ? ?

BUS MASTER TX
BUS MASTER TX VALIDATION KEY ($A5) DS1971 COPIA EEPROM
BUS MASTER TX
ADDRESS BYTE TO SCRATCHPAD
ADDRESS BYTE

VALIDATION
KEY MATCH ? BUS MASTER TX
ADDRESS BYTE
MASTER TX DATA MASTER RX DATA
DS1971 INCREMENTS DS1971 INCREMENTS BYTE FROM
BYTE TO SCRATCHPAD
SCRATCHPAD SCRATCHPAD SCRATCHPAD ADDRESS DS1971 COPIES
ADDRESS MASTER RX DATA
ADDRESS ADDRESS SRATCHPAD DATA TO
DS1971 INCREMENTS
EEPROM BYTE FROM
SCRATCHPAD
SCRATCHPAD ADDRESS
ADDRESS

BUS BUS BUS


BUS MASTER
MASTER TX MASTER TX MASTER TX
TX RESET ?
RESET ? RESET ? RESET ?

DS1971 TX
PRESENCE PULSE

Figura No. 13.16: Funciones de memoria del DS1971 (Extracto).


Fuente: Modificado de las hojas de especificaciones del DS1971.

Sistema de Desarrollo para MC, modelo MDK-B28 438


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

INICIO
Menu

Esperar 1.5 seg para inicializacin


del mdulo LCD
Presentar mensaje en la LCD:
2 Disp. Encontrado

Presentar mensaje en la LCD:


Lect. y Escrit. del DS1971 Presentar men en la LCD:
1 1- Leer 2-Escrib 3- Ret

Mostrar mensaje en la LCD:


Presente DS1971 en el soporte
Si
PB1 Lect.
Presionado
Ver_Disp
No
Si
No
PB2 Escrit.
Hay disp.?
Presionado
Si No
No Si
Enviar RESET al bus 1-Wire
PB3 2
Presionado
Leer ID del disp
y almacenarla en RomCode

No Error
Familia =
$14
Error
Si
Borrar LCD
Presentar mensaje en la LCD:
Validando Datos espere 1 seg Figura No. 13.17: Diagrama de flujo
Emitir Tono Agudo del programa 13_4.bsp.
Fuente: Elaboracin Propia.
Espera de 1 seg
Presentar en la LCD:
ERROR ERROR
CRCVerif

Emitir Tono Bajo


No
CRC OK? Error
1
Si

Menu

Sistema de Desarrollo para MC, modelo MDK-B28 439


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Lectura Escritura

Enviar RESET al bus 1-Wire Emitir Tono

Presentar mensaje en la LCD:


Enviar RESET al bus 1-Wire
Enviar Comando Match ROM INTRODUZCA DATOS POR DEBUG TERM.
Seguido de la ID (RomCode)

Enviar Comando Match ROM


Seguido de la ID (RomCode)
Enviar Comando ReadMemory Recibir los 16 bytes desde el DEBUG
Seguido de la direccin de inicio (0) Terminal y almacenarlos en SCRAM

Enviar Comando Copy SCRAM


Recibir los 16 bytes de la Presentar mensaje en la LCD: seguido de la direccin de inicio (0)
EEprom DS1971 iButton ESCRIB. EEPROM para copiar el contenido de la SCRAM
del DS1971 a su EEprom

Enviar RESET al bus 1- Enviar RESET al bus 1-


Wire Wire
Enviar Byte de validacin
de la escritura en EEPROM

Enviar Comando Match ROM


Presentar mensaje en la LCD: Seguido de la ID (RomCode)
DATOS LEIDOS Terminal OW_Pin estado alto

Enviar Comando Write SCRAM Espera de 10ms


Desplegar en la LCD Seguido de la direccin de inicio (0)
los datos ledos

Mostrar en la LCD
Enviar los 16 bytes desde la FIN DE ESCRITURA
Menu SCRAM del BS2p

Enviar RESET al bus 1-Wire Menu

Figura No. 13.18: Secuencias utilizadas para leer/escribir en el DS1971.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 440


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Arme el circuito de la figura No. 13.19.

Figura No. 13.19: Esquema de conexiones para el ejercicio # 3.


Fuente: Elaboracin Propia.

Descargue al BASIC Stamp el programa 13_4.bsp y conecte el DS1971 al soporte cuando se le indique. Una
vez que se logre identificar al iButton, se le presentar el men que se muestra en la figura No. 13.20.

Presione el pulsador PB2 del Sistema de Desarrollo MDK-


28 y siga las instrucciones que se le presentarn en el
debug terminal, cuando se le solicite que introduzca los
datos coloque su nombre o cualquier otra cadena de
texto de 16 bytes.

Una vez que aparezca el mensaje de finalizacin de Figura No. 13.20: Programa 13_4.bsp ejecutndose.
Fuente: Elaboracin Propia.
escritura y regrese al men de la figura No. 13.20,

Sistema de Desarrollo para MC, modelo MDK-B28 441


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

presione el pulsador PB1 y verifique que el contenido almacenado en la EEPROM coincide con lo que usted
escribi. La opcin 3 del men (RET) permite volver a identificar al dispositivo conectado en el bus.

'Programa 13_4.bsp
'Este programa tiene por objetivo leer y escribir informacin en una memoria DS1971
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

ReadRom CON $33 'Lee la identificacin del dispositivo(1 slo esclavo en la RED)
MatchRom CON $55 'Selecciona a un dispositivo del bus (requiere saber su ID)
SearchRom CON $F0 'Lee todas las ID de todos los dispositivos presentes en la RED
LeerEE CON $F0 'Lee el contenido de la EEPROM del DS1971
EscribSP CON $0F 'Escribe la informacin en la Scratchpad del DS1971
CopiarSP CON $55 'Copia el contenido de Scratchpad del DS1971 a su EEPROM
Validar CON $A5 'Validacin de la copia del Scratchpad a la EEPROM en el DS1971

OW_NRBB CON 0 'Modo 0: No Reset, modo Byte, Baja velocidad


OW_RADBB CON 1 'Modo 1: Reset Antes de los Datos, modo Byte, Baja velocidad
OW_RADDBB CON 3 'Modo 3: Reset y Despus de los Datos, modo Byte, Baja velocidad
OW_NRBitB CON 4 'Modo 4: No Reset, modo Bit, Baja velocidad
OW_RADBitB CON 5 'Modo 5: Reset Antes de Datos, modo Bit, Baja velocidad
BorrarLCD CON 1 'Limpiar pantalla
CGRAM_0 CON 64 'Posicin del primer carcter propio en la CGRAM
Baudios CON 240 'Parmetro Baudmode de SERIN/SEROUT
Inst CON 254 'Envo de una instruccin
Linea1 CON 128 'Posiciona al apuntador de DDRAM al inicio de la lnea 1
Linea2 CON 192 'Posiciona al apuntador de DDRAM al inicio de la lnea 2
E CON 0 : R CON 4 : O CON 5 'Nombres para los caracteres personalizados

Buz PIN 11 'Altavoz piezoelctrico


PB1 PIN 2 'Pulsador para leer
PB2 PIN 3 'Pulsador para escribir
PB3 PIN 4 'Pulsador de retorno
SinLCD PIN 1 'Terminal de envo de datos al LCD
OW_Pin PIN 0 'Terminal de E/S del bus 1-Wire

Sistema de Desarrollo para MC, modelo MDK-B28 442


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_4.bsp

RomCode VAR Byte(8) 'Identificacin del esclavo 1-Wire


Esp VAR Byte(3) 'Espacio de trabajo de los pulsadores
Temp VAR Byte 'Variable Temporal
CRC VAR Byte 'Variable que contiene al CRC calculado
CRCt VAR Byte 'Var. aux. que contiene el byte al que se le calcula el CRC
Indice VAR Nib 'Variable de uso general
Disp VAR Nib 'Indica si hay dispositivos en el bus
X VAR Nib 'Variable de uso general
IBit VAR Bit 'Variable temporal

'___________________________________________________________________________________
Inicio:
PAUSE 1500 'Pausa para inicializar el LCD
GOSUB Caract_Propios 'Carga de los caracteres propios
Principal:
SEROUT SinLCD,Baudios,[Inst,BorrarLCD]
SEROUT SinLCD,Baudios,[Inst,Linea1," LECT. y ESCRIT."]
SEROUT SinLCD,Baudios,[Inst,Linea2," DEL DS1971 "]
'Mensaje inicial con el objetivo del programa
PAUSE 2500
BuscarDS1971: 'Indica al usuario que presente un DS1971
SEROUT SinLCD,Baudios,[Inst,BorrarLCD]
SEROUT SinLCD,Baudios,[Inst,Linea1,"PRESENTE DS1971 "]
SEROUT SinLCD,Baudios,[Inst,Linea2,"EN EL SOPORTE..."]
DO WHILE Disp<>1 : GOSUB Ver_Disp : LOOP 'Espera por un dispositivo
OWOUT OW_Pin,OW_RADBB,[ReadRom] 'Leer la ID del dispositivo
OWIN OW_Pin,OW_NRBB,[STR RomCode \8] 'Almacena la ID en el arreglo RomCode
IF (RomCode <> $14) THEN GOTO Error 'Mens. de error al no colocar un DS1971
SEROUT SinLCD,Baudios,[Inst,Linea1,"VALIDANDO DATOS "]
SEROUT SinLCD,Baudios,[Inst,Linea2," ESPERE 1 SEG "]
PAUSE 1000
GOSUB CRCVerif 'Verifica si la ID es correcta mediante CRC
IF CRC<> RomCode (7) THEN GOTO Error 'Mensaje de error si los CRCs no coinciden
Menu:
SEROUT SinLCD,Baudios,[Inst,Linea1,"DISP. ENCONTRADO "] 'Mensaje de confirmacin
SEROUT SinLCD,Baudios,[Inst,Linea2,1,"LEER ",2,"ESCR ",3,"RET"]'Men de opciones

'1- Lee el contenido del ibutton y lo muestra en el LCD 2- Permite escribir datos
'por medio del DEBUG TERMINAL al DS1971 3- Retorna al inicio del programa

Sistema de Desarrollo para MC, modelo MDK-B28 443


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_4.bsp

DO
BUTTON PB1,0,255,0,Esp(0),1, Lectura 'Si se presiona PB1 leer memoria EEPROM
BUTTON PB2,0,255,0,Esp(1),1, Escritura 'Si se presiona PB2 escribir en EEPROM
BUTTON PB3,0,255,0,Esp(2),1, Principal 'Si se presiona PB3 ir a inicio
LOOP

'Secuencia de instrucciones que se ejecutan si se presenta un error, los errores


'considerados por el programa son: La insercin de un dispositivo diferente al
'DS1971 y la verificacin de la ID recibida mediante el CRC

Error:
SEROUT SinLCD,Baudios,[Inst,BorrarLCD,Inst,Linea1] 'Borra al LCD y muestra un
FREQOUT Buz,250,1400 'mensaje de error mientras
SEROUT SinLCD,Baudios,[" ", E,R,R,O,R," ",E,R,R,O,R] 'produce un tono de alerta
FREQOUT Buz,250,900
PAUSE 1000
GOTO BuscarDS1971 'Regresa a buscar iButton

Lectura: 'Lectura del DS1971


OWOUT OW_Pin,OW_RADBB ,[MatchRom ,STR RomCode \8]'Direcciona al dispositivo
OWOUT OW_Pin,OW_NRBB ,[LeerEE,0] 'Lee la EEPROM desde la pos. 0
OWIN OW_Pin,OW_NRBB ,[SPSTR 16] 'Guarda lectura en Scratchpad
OWOUT OW_Pin,OW_RADBitB,[0] 'Reset del bus 1-Wire
SEROUT SinLCD,Baudios,[Inst,Linea1," DATOS LEIDOS "]
SEROUT SinLCD,Baudios,[Inst,Linea2] 'Muestra texto "DATOS LEIDOS"
FOR X = 0 TO 15 'en la LCD. Despliega en la 2da
GET X,Temp : SEROUT SinLCD,Baudios,[Temp] 'lnea de la pantalla el texto
NEXT 'almacenado en la memoria
PAUSE 2500 'Pausa de 2.5 seg para leer el
GOTO Menu 'texto escrito en la pantalla
'antes de retornar al men
Escritura: 'principal
FREQOUT Buz,500,1250 'Bip para indicar que estamos en modo de escritura
SEROUT SinLCD,Baudios,[Inst,BorrarLCD,Inst,Linea1,"INTRODUZCA DATOS"]
SEROUT SinLCD,Baudios,[Inst,Linea2," POR DEBUG TERM."]

'Indica por medio del LCD, que la introduccin de los datos que se almacenarn
'se har a travs del DEBUG TERMINAL

Sistema de Desarrollo para MC, modelo MDK-B28 444


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_4.bsp

DEBUG CRSRXY, 0,4,"ESTADO = ESPERANDO DATOS",CR, REP "-" \52


DEBUG HOME, REP "-" \52,CR,"DATO A ALMACENAR (16 caracteres) ="
DEBUGIN SPSTR 16 'Datos al Scratchpad (SP) del BS2p
DEBUG CRSRXY, 9,4,"ALMACENANDO EN EEPROM..." 'Estado del proceso de escritura
SEROUT SinLCD,Baudios,[Inst,BorrarLCD,Inst,Linea1," ESCRIB. EEPROM "]
FREQOUT Buz,1500,1500 'Bip que indica inicio de escritura
OWOUT OW_PIN,OW_RADBB,[MatchRom ,STR RomCode \8] 'Direcciona al DS1971
OWOUT OW_PIN,OW_NRBB ,[EscribSP,0] 'Escribir en el SP del DS1971
FOR X=0 TO 15 'comenzando en la direccin 0 enva
GET X,Temp 'todos los bytes de informacin por
OWOUT OW_PIN,OW_NRBB,[Temp] 'el bus 1-Wire hacia el iButton
NEXT

OWOUT OW_PIN,OW_RADBitB,[0] 'Reset del bus 1-Wire


OWOUT OW_PIN,OW_RADBB,[MatchRom ,STR RomCode \8] 'Direcciona al DS1971
OWOUT OW_PIN,OW_NRBB, [CopiarSP,Validar] 'Copia el SP del DS1971 a su EEPROM
HIGH OW_PIN 'Bus 1-Wire en estado alto durante
PAUSE 10 'al menos 10 ms para alimentar
'mientras se escribe en la EEPROM

DEBUG CRSRXY, 9,4,CLREOL,"ESCRITURA FINALIZADA",CR,REP "-" \52

'Mensaje tanto por LCD como por DEBUG TERMINAL, indica fin de la escritura
SEROUT SinLCD,Baudios,[Inst,Linea2," FIN DE ESCRIT. "]
FREQOUT Buz,1500,1000 'Bip que indica fin de escritura

GOTO Menu

'===================================================================================
'SUBRUTINAS

'Ver_Disp determina si hay o no algn dispositivo en el bus

Ver_Disp:
OWOUT OW_Pin,OW_RADBB,[SearchROM]
OWIN OW_Pin,OW_NRBitB,[Disp.BIT1,Disp.BIT0]
Disp = Disp.BIT1 + Disp.BIT0
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 445


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_4.bsp

'Caract_Propios carga en CGRAM los caracteres personalizados usados en este programa


Caract_Propios:
SEROUT SinLCD,Baudios,[Inst,CGRAM_0]
SEROUT SinLCD,Baudios,[$1F,$1F,$18,$1F,$1F,$18,$1F,$1F] 'Letra E
SEROUT SinLCD,Baudios,[$1B,$13,$1B,$1B,$1B,$1B,$11,$1F] 'Nmero 1
SEROUT SinLCD,Baudios,[$13,$0D,$1D,$1B,$17,$0F,$01,$1F] 'Nmero 2
SEROUT SinLCD,Baudios,[$13,$0D,$1D,$13,$1D,$0D,$13,$1F] 'Nmero 3
SEROUT SinLCD,Baudios,[$1E,$1F,$1B,$1B,$1E,$1F,$1B,$1B] 'Letra R
SEROUT SinLCD,Baudios,[$0E,$1F,$1B,$1B,$1B,$1B,$1F,$0E] 'Letra O
RETURN

'CrcVerif y CRCCalc calculan el CRC-8 de la ID almacenada en la variable RomCode


CRCVerif:
CRC= 0
FOR X = 0 TO 6
CRCt = RomCode (X): GOSUB CRCCalc
NEXT
RETURN

CRCCalc:
FOR Indice = 0 TO 7
IBit = CRC.BIT0 ^ CRCt.BIT0
CRC = CRC >> 1
CRC.BIT2 = CRC.BIT2 ^ IBit : CRC.BIT3 = CRC.BIT3 ^ IBit : CRC.BIT7 = IBit
CRCt = CRCt >> 1
NEXT
RETURN

Una vez que se ha comprendido como leer y escribir informacin en el DS1971, el siguiente ejercicio, ser
desarrollar una aplicacin que haga uso de este nuevo conocimiento. Uno de los usos ms frecuentes de los
iButtons, es en sistemas de control de acceso e identificacin. El ejercicio siguiente presenta una aplicacin
bastante sencilla pero altamente funcional de cmo usar un econmico dispositivo, el DS1971, como una
segura llave electrnica.

Sistema de Desarrollo para MC, modelo MDK-B28 446


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Objetivo: Construir un sistema de control de acceso basado en el iButton DS1971.

Cada dispositivo 1-Wire tiene un nico e irrepetible


Elementos a Utilizar nmero de identificacin, lo que ha permitido a los
dispositivos 1-Wire, posicionarse como lderes en el
(1) BASIC Stamp 2p. desarrollo de aplicaciones de seguridad, identificacin y
(1) Conector Blue Dot Receptor (Dallas). control de acceso; superando y reemplazando a
(2) DS1971 256 bit EEPROM (Dallas).
sistemas con otras tecnologas como: los cdigos de
(1) Mdulo SLCD-BD.
(1) StampW (Ver 2.0 beta 2.1 o superior). barras, cintas magnticas, tarjetas inteligentes (Smart
Cards), por citar algunos ejemplos. El DS1971, es muy
utilizado en sistemas de control de acceso de personas en todo tipo de instalaciones tales como: edificios,
estacionamientos, activacin y desactivacin de puertas automticas, mayor informacin sobre aplicaciones
de los iButtons las puede ubicar consultando el sitio www.ibutton.com.

En la mayora de las aplicaciones para el control de acceso, los usuarios tienen diferentes privilegios y por lo
tanto su nivel de autorizacin es diferente. As por ejemplo, si una empresa instala un sistema de control de
acceso electrnico como el que se desarrollar en este ejercicio, el presidente de la empresa podr acceder
a todos y cada uno de los lugares de la instalacin, pero un empleado de la planta, poco o nada tendr que
hacer en el departamento de sistemas o en la administracin. En el mencionado ejemplo, la llave
entregada al presidente tendr un nivel de acceso superior a la llave entregada al empleado de planta.

En el ejercicio No. 4, vamos a construir un equipo para el control de acceso de personal. Para ello, primero
debemos grabar en la memoria interna del DS1971 cierta informacin Confidencial. Posteriormente, se
elabora un programa que efecta la validacin del contenido del DS1971 y se determina si el portador de
ste tiene o no acceso al lugar deseado. Mantenga armado el circuito del ejercicio anterior, si lo desea,
puede omitir los pulsadores ya que no sern requeridos.

La memoria del DS1971 se ha dividido en 3 secciones como se puede ver en la figura No. 13.21. En los
primeros 14 bytes, se almacena el nombre del usuario quien tendr la llave electrnica. A continuacin, se
utiliza un byte para guardar un nmero (del 0 al 7) que corresponde al nivel de acceso asignado al iButton y
finalmente un byte que corresponde a la clave del usuario. La clave es calculada para cada dispositivo que
se ingresa al sistema, siendo una funcin de la identificacin del mismo. Por lo tanto, resulta ser
prcticamente imposible que una llave no autorizada funcione dentro del sistema. En las figuras No. 13.22,
No. 13.23 y No. 13.24 se observan los diagramas de flujo del programa que prepara a los iButtons DS1971
para ser utilizados con el sistema de control de accesos.

Sistema de Desarrollo para MC, modelo MDK-B28 447


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Nivel Clave
Acceso

Figura No. 13.21: Distribucin de los datos en la memoria interna del DS1971, para el ejercicio # 4.
Fuente: Elaboracin Propia.

INICIO
1

DispOK = 0
Presentar mensaje:
Presentar mensaje: Incluyendo Dispositivo ...
Presente DS1971 en el soporte

Incluye_DS1971

Ver_DS1971

Presentar mensaje:
No Verificando Contenido
DispOK=1

Si Valida_DS1971
Presentar mensaje:
un DS1971 ha sido detectado
Introduzca Nivel de Autorizacin (0-7) Presentar mensaje:
Retire el DS1971

Leer AutNivel

DS1971 Si
Presentar mensaje: 1
Introduzca su nombre (14 caracteres) Desconectado?

No
Leer 14 caracteres
y almacenarlos en SCRAM Esperar 500 ms

Figura No. 13.22: Cuerpo del principal del programa 13_5.bsp.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 448


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Ver_DS1971 CRCVerif CRCCalc

x=0 Indice = 0
Ver_Disp

No CRCt = RomCode (x)


Hay Introducir el bit (Indice)
disp. de CRCt en la expresin
CRC=X 8+ X 5 + X 4 + 1
CRCCalc Indice =
X= X+1
Si Indice + 1

Enviar RESET al bus 1-Wire


No No
X=6 Indice
=7
Leer ID del disp Si
y almacenarla en RomCode Si

No CRC = RETURN
No RomCode (7)
Familia
= $14

Si
Si
DispOK = 0
DispOK = 1
CRCVerif

RETURN
RETURN

Figura No. 13.23: Rutinas utilizadas para la validacin del DS1971.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 449


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Incluye_DS1971 Verifica_DS1971

Cal_Clave LectError = 0

Enviar RESET al bus 1-Wire


Colocar las variables NivelAut y Clave
en las pos 14 y 15 de la SPRAM del Enviar Comando Match ROM
Seguido de la ID (RomCode)
Enviar RESET al bus 1-Wire
Enviar Comando ReadMemory
Enviar Comando Match ROM Seguido de la direccin de inicio (0)
Seguido de la ID (RomCode)
X=0
Enviar Comando WriteSP
Seguido de la direccin de inicio (0)
Temp = SCRAM (X)
Enviar los 16 bytes que se
encuentran en la SCRAM del BS2p Recibir byte X desde el bus 1-Wire
y almacenarlo en OWDato
Enviar RESET al bus 1-Wire
Si
X=X+1 Temp <>
Enviar RESET al bus 1-Wire LectError = 1
OWDato
Enviar Comando Match ROM No
Seguido de la ID (RomCode)
No
X = 15
Enviar Comando CopySP Si
Seguido de la direccin de inicio (0)
Enviar RESET al bus 1-Wire
Enviar byte que valida la
escritura en EEPROM ($A5)
LectError No Presentar Mensaje:
=0 ERROR!
Terminal OW_Pin estado alto
Si
Espera de 10ms
Presentar Mensaje:
Figura No. 13.24: OK
Presentar mensaje: Rutinas de inclusin y verificacin de
OK los datos escritos en el DS1971.
Fuente: Elaboracin Propia. RETURN
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 450


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Descargue el programa 13_5.bsp al BASIC Stamp y ejectelo.

'Programa 13_5.bsp
'Este programa permite grabar los DS1971 autorizados en un sistema de control
'de acceso de personal.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

ReadRom CON $33 'Lee la identificacin del dispositivo(1 slo esclavo en la RED)
MatchRom CON $55 'Selecciona a un dispositivo del bus (requiere saber su ID)
SearchRom CON $F0 'Lee todas las ID de todos los dispositivos presentes en la RED
LeerEE CON $F0 'Lee el contenido de la EEPROM del DS1971
EscribSP CON $0F 'Escribe la informacin en la Scratchpad del DS1971
CopiarSP CON $55 'Copia el contenido de Scratchpad del DS1971 a su EEPROM
Validar CON $A5 'Validacin de la copia de la Scratchpad a la EEPROM en el DS1971

OW_NRBB CON 0 'Modo 0: No Reset, modo Byte, Baja velocidad


OW_RADBB CON 1 'Modo 1: Reset Antes de los Datos, modo Byte, Baja velocidad
OW_NRBitB CON 4 'Modo 4: No Reset, modo Bit, Baja velocidad
OW_RADBitB CON 5 'Modo 5: Reset Antes de los Datos, modo Bit, Baja velocidad
SCClave CON 15 'Localidad de la SCRAM donde se almacena la clave a escribir
SCNivel CON 14 'Localidad de la SCRAM que guarda el nivel de acceso del iButton

OW_Pin PIN 0 'Terminal de E/S del bus 1-Wire

RomCode VAR Byte(8) 'Identificacin del dispositivo 1-Wire


Clave VAR Byte 'Clave correspondiente al iButton detectado
Crc VAR Byte 'Valor del CRC-8 del ROM CODE del esclavo 1-Wire
Crct VAR Byte 'Variable utilizada para calcular el CRC-8
Temp VAR Byte 'Variable auxiliar de uso general
OWDato VAR Byte 'Variable de uso general
AutNivel VAR Nib 'Nivel de autorizacin del iButton
Disp VAR Nib 'Var. para determinar la presencia de dispositivos en la RED
Indice VAR Nib 'Variable utilizada para calcular el CRC-8
X VAR Nib 'Variable auxiliar de uso general
DispOK VAR Bit 'Variable que indica que se ha conectado un DS1971
LectError VAR Bit 'Var. que indica un error en la transmisin de datos al DS1971
IBit VAR Bit 'Variable utilizada para calcular el CRC-8

Sistema de Desarrollo para MC, modelo MDK-B28 451


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_5.bsp

'___________________________________________________________________________________
'Programa Principal

DO
DispOK = 0 'Asumir que no hay disp. conectados
DEBUG CLS,REP "*" \60,CR 'Mensaje al usuario para que coloque
DEBUG "Presente DS1971 en el soporte..." 'en el receptor el botn a programar
DO WHILE DispOK=0 : GOSUB Ver_DS1971 : LOOP 'Verifica presencia, familia e ID
DEBUG "un DS1971 ha sido detectado",CR 'Indica la presencia del iButton
DEBUG "Introduzca Nivel de Autorizacin (0-7) = "

'Solicita el nivel de autorizacin para el botn presentado y lo almacena en


'AutNivel Nivel 0 = Sin Acceso, Nivel 1 = Puerta 1, Nivel 2 = Puerta 2,
' Nivel 3 = Puertas 1y2, Nivel 4 = Puerta 4, Nivel 5 = Puertas 1y3,
' Nivel 6 = Puertas 2y3, Nivel 7 = Total

DEBUGIN DEC1 AutNivel 'Recibe el nivel de autorizacin


AutNivel = AutNivel MAX 7 'Acota al mximo permitido
DEBUG CR,"Introduzca su nombre (14 caracteres) = " 'Nombre el usuario de la llave
DEBUGIN SPSTR 14 'se almacena en la RAM Scratchpad
DEBUG CR,"Incluyendo Dispositivo..." 'Mensaje de programacin del iButton
GOSUB Incluye_DS1971
'Almacena en nombre, el nivel de acceso y la clave
DEBUG CR,"Verificando Contenido ..."
'Mensaje de verificacin del contenido del iButton
GOSUB Valida_DS1971
'Verifica que la escritura de datos en el DS1971 fue correcta y lo indica con un
'mensaje de OK o de ERROR!
DEBUG CR,"Retire el DS1971"
'Indicacin al usuario de que retire el dispositivo
DO WHILE (Disp=1):GOSUB Ver_Disp :PAUSE 500: LOOP 'Esperar a que remueva el iButton
LOOP

'===================================================================================
'SUBRUTINAS
'Ver_DS1971 determina si hay o no un DS1971 conectado y valida el serial del mismo
'La variable DispOK tendr un 1 cuando se detecte un DS1971 y se compruebe la
'correcta recepcin de su identificacin

Sistema de Desarrollo para MC, modelo MDK-B28 452


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_5.bsp

Ver_DS1971:
GOSUB Ver_Disp 'Busca si hay dispositivos
IF (Disp <> 1) THEN RETURN 'Si no hay disp. o hay ms de 1, abortar
OWOUT OW_Pin,OW_RADBB,[ReadRom] 'Leer el serial de identificacin
OWIN OW_Pin,OW_NRBB,[STR RomCode \8] 'y almacenarlo en la variable RomCode
IF (RomCode = $14) THEN GOSUB CRCVerif 'Si es un DS1971 validar su ID, sino
RETURN 'abortar

'Ver_Disp determina si hay dispositivos 1-Wire conectados


Ver_Disp:
OWOUT OW_Pin,OW_RADBB,[SearchROM]
OWIN OW_Pin,OW_NRBitB,[Disp.BIT1,Disp.BIT0]
Disp = Disp.BIT1 + Disp.BIT0
RETURN

'CRCVerif calcula el CRC-8 de la identificacin del DS1971


CRCVerif:
CRC= 0
FOR x = 0 TO 6
CRCt = RomCode (X): GOSUB CRCCalc
NEXT
'Si el CRC-8 calculado coincide con el recibido, entonces DispOK = 1
IF CRC = RomCode (7) THEN DispOK = 1 ELSE DispOK = 0
RETURN

'Rutina para el clculo del CRC


CRCCalc:
FOR Indice = 0 TO 7
IBit = CRC.BIT0 ^ CRCt.BIT0
CRC = CRC >> 1
CRC.BIT2 = CRC.BIT2 ^ IBit : CRC.BIT3 = CRC.BIT3 ^ IBit : CRC.BIT7 = IBit
CRCt = CRCt >> 1
NEXT
RETURN

'Incluye_DS1971 graba en el DS1971 el nombre del usuario, nivel de acceso y clave


Incluye_DS1971:
GOSUB Cal_Clave 'Calcular clave para el dispositivo
PUT SCNivel,AutNivel,Clave 'Preparar el contenido de la SCRAM
OWOUT OW_PIN,OW_RADBB,[MatchRom ,STR RomCode \ 8,EscribSP,0]

Sistema de Desarrollo para MC, modelo MDK-B28 453


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_5.bsp

'Direcciona al dispositivo encontrado y enva comando de escritura en su SP desde


'la posicin 0
FOR x=0 TO SCClave
GET x,OWDato : OWOUT OW_PIN,OW_NRBB,[OWDato] 'Enviar los 16 bytes al DS1971
NEXT
OWOUT OW_PIN,OW_RADBitB,[0] 'Reset del bus 1-Wire
OWOUT OW_PIN,OW_RADBB,[MatchRom ,STR RomCode \8,CopiarSP,Validar]
'Direcciona al dispositivo y copia el contenido de su SP a la EEPROM (del DS1971)
HIGH OW_PIN
PAUSE 10 'Alimentacin requerida para la
escritura
DEBUG "OK" 'Fin de la escritura
RETURN

'La rutina Cal_Clave calcula la clave correspondiente a la identificacin


'del dispositivo conectado.
Cal_Clave:
FOR X=0 TO 7
Clave = (SQR (RomCode(X)+1)) + Clave
NEXT
RETURN

'Valida_DS1971 verifica que la informacin escrita en el DS1971 sea correcta


Valida_DS1971:
LectError = 0 'Asume que no hay errores
OWOUT OW_Pin,OW_RADBB,[MatchRom ,STR RomCode \8,LeerEE,0]
'Direcciona a la llave y enva comando de lectura de su EEPROM desde la loc. 0
FOR X = 0 TO 15 'Desde el byte 0 hasta el 15,
GET X,Temp 'compara el dato enviado que an est
OWIN OW_Pin,OW_NRBB ,[STR OWDato \1] 'en SCRAM con el ledo desde el DS1971
IF (Temp<>OWDato) THEN LectError=1 : EXIT 'Si no coinciden hay un error y no hay
NEXT 'razn para continuar leyendo inform.
OWOUT OW_Pin,OW_RADBitB,[0] 'Reset del bus
IF LectError=0 THEN DEBUG "OK" ELSE DEBUG "ERROR!"
'Presenta un mensaje de OK o de ERROR! segn la escritura haya sido o no correcta
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 454


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Conecte el iButton DS1971 en el Blue Dot


Receptor. El mensaje: un DS1971 ha sido
conectado deber aparecer, si esto no
ocurre apague el sistema MDK-B28 y revise
las conexiones efectuadas. La figura No.
13.25 muestra un ejemplo de lo que deber
aparecer en el debug terminal a medida
que avanza el programa. Si se equivoca
llenando los datos o se produce un error,
deber reiniciar al BASIC Stamp, ya sea
presionando el pulsador RESET del MDK-
B28 o haciendo clic en el checkbox DTR del
debug terminal.

Para este ejercicio, se ha definido que la


clave de acceso se determinar a travs de
la siguiente formula matemtica:

( RomByte(i) + 1)
7
Figura No. 13.25: Programa 13_5.bsp en ejecucin. Clave =
Fuente: Elaboracin Propia. i=0

La escogencia de la ecuacin utilizada para el clculo de la clave es arbitraria. En este caso se ha optado por
una expresin simple, que permite obtener un buen nivel de seguridad sin que se produzcan
desbordamientos matemticos ni implique una operacin, que por su dificultad matemtica, represente un
obstculo para el desarrollo del ejercicio. Existen muchos algoritmos de encriptacin de informacin
aprobados por organismos especializados en la materia, el estudio de ellos escapa totalmente de los
objetivos trazados para este capitulo. Ahora bien, el iButton que se encuentra en el receptor en este
momento, de ahora en adelante ser referido como llave # 1. El mismo ha sido programado para
funcionar en el sistema de control de acceso.

Retire la llave # 1 del Blue Dot Receptor y conecte otro DS1971, ahora llamado llave # 2. Programe la
llave # 2 con un nivel de acceso igual a 0. Retire la llave # 2 de su receptculo. Ejecute el programa
13_6.bsp y observar como se presentan en la pantalla LCD los mensajes:

Sistema de Desarrollo para MC, modelo MDK-B28 455


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

CONTROL DE ACCESO 1-Wire y Presente Llave en el soporte.


Conecte la llave # 1 en el soporte, si observa algn mensaje
errneo es debido a un a falso contacto. Asegrese de que la
llave quede firmemente colocada en su base. Hecho esto, la
pantalla LCD debe mostrar un contenido similar al de la figura No.
13.26.bsp. Tambin en la barra de LED debe mostrarse el nivel
de autorizacin que posee el portador de la llave.
Figura No. 13.26: Llave Autorizada.
Fuente: Elaboracin Propia.

Retire la llave # 1 del soporte y coloque la llave # 2, en este caso


deber observar algo similar al contenido de la figura No. 13.27.
En la figura No. 13.28, se muestra el diagrama de flujo
correspondiente al cuerpo principal del programa 13_6.bsp. No se
han incluido las subrutinas utilizadas, ya que, son comunes a los
programas anteriores.
Figura No. 13.27: Llave no Autorizada.
Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 456


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Inicio

Declarar los pines P12 a P14


como salidas 1

Caract_Propios
No
Clave
Error
Correcta?
Presentar mensaje en LCD:
CONTROL DE ACCESO 1-WIRE Si
Presentar en terminales P12 a P14
Esperar 2.5 seg El nivel de acceso de la llave

Mostrar en LC D
Presentar mensaje en LCD: nombre del usuario
Presente Llave en el soporte

DispOK = 0 Nivel Aut Presentar mensaje en LC D


=0 NO AUTORIZADO

Ver_DS1971 Mostrar en LC D
el de Nivel Autorizacin de la llave

No
DispOK = 1

Si Si
Llave
Desconectada
Cal_Clave

No

Leer_DS1971 Esperar 500 ms

Figura No. 13.28: Diagrama de flujo del programa 13_6.bsp


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 457


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

'Programa 13_6.bsp
'Este programa implementa un control de acceso 1-Wire utilizando al DS1971
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

ReadRom CON $33 'Lee la identificacin del dispositivo(1 slo esclavo en la RED)
MatchRom CON $55 'Selecciona a un dispositivo del bus (requiere saber su ID)
SearchRom CON $F0 'Lee todas las ID de todos los dispositivos presentes en la RED

OW_NRBB CON 0 'Modo 0: No Reset, Modo Byte, Baja velocidad


OW_RADBB CON 1 'Modo 1: Reset Antes de los Datos, modo Byte, Baja velocidad
OW_NRBitB CON 4 'Modo 4: No Reset, modo Bit, Baja velocidad
OW_RADBitB CON 5 'Modo 5: Reset Antes de los Datos, modo Bit, Baja velocidad
LeerEE CON $F0 'Lee el contenido de la EEPROM del DS1971
BorrarLCD CON 1 'Limpiar pantalla
CGRAM_0 CON 64 'Apuntador al primer byte de la CGRAM
Baudios CON 240 'Parmetro Baudmode de SERIN/SEROUT
Inst CON 254 'Envo de una instruccin
Linea1 CON 128 'Posiciona al apuntador de DDRAM al inicio de la lnea 1
Linea2 CON 192 'Posiciona al apuntador de DDRAM al inicio de la lnea 2
SPClave CON 15 'Posicin en la SCRAM de la clave
SPNivel CON 14 'Posicin en la SCRAM del nivel de acceso (nivel de autorizacin)
E CON 0 : R CON 1 : O CON 2

OW_Pin PIN 0 'Terminal de E/S del bus 1-Wire


SinLCD PIN 1 'Terminal de envo de informacin al LCD
Buz PIN 11 'Altavoz piezoelctrico

RomCode VAR Byte(8) 'ID del iButton usado como llave


Temp VAR Byte 'Variable temporal de uso general
Temp0 VAR Byte 'Variable temporal de uso general
CRC VAR Byte 'CRC-8 del iButton
CRCt VAR Byte 'Variable de uso temporal usada para calcular el CRC
Indice VAR Byte 'Variable de uso general
Clave VAR Byte 'Clculo de la clave del DS1971 presentado
Disp VAR Nib 'Indica si hay o no dispositivos en la RED
X VAR Nib 'Variable de uso general
Ibit VAR Bit 'Variable de uso temporal usada para calcular el CRC
DispOK VAR Bit 'Indica si se ha identificado correctamente un DS1971

Sistema de Desarrollo para MC, modelo MDK-B28 458


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_6.bsp

'___________________________________________________________________________________
'Programa Principal

DIRD = $7F 'Pines de P12 a P14 como salidas, para mostrar el nivel de autorizacin
PAUSE 1500 'de la llave presentada. Pausa de 1.5 s para inicializar LCD
GOSUB Caract_Propios 'Carga los caracteres personalizados en el LCD
Inicio:
SEROUT SinLCD,Baudios,[Inst,BorrarLCD] 'Borrar contenido del LCD
SEROUT SinLCD,Baudios,[Inst,Linea1," CONTROL ACCESO "] 'Mensaje inicial con la
SEROUT SinLCD,Baudios,[Inst,Linea2," 1-WIRE "] 'funcin del programa
PAUSE 2500

DO

DO
GOSUB Pedir_Llave
DispOK = 0
DO : GOSUB Ver_DS1971 : LOOP UNTIL DispOK = 1 'Esperar por el DS1971
GOSUB Cal_Clave 'Calcula la clave para la llave detectada
GOSUB Leer_DS1971 'Lee la informacin de la llave
GET SPClave,Temp0 'Comparar la clave calculada con la
IF CLAVE <> Temp0 THEN GOSUB Error 'recibida, si difieren ejecutar Error
LOOP UNTIL CLAVE = Temp0 'Repetir hasta encontrar llave autorizada
GET SPNivel,Temp0 'Leer nivel de acceso
OUTD = Temp0 'Pines P12 a P14 muestran nivel de acceso
SEROUT SinLCD,Baudios,[Inst,BorrarLCD,Inst,Linea1] 'Borrar la LCD
FOR X = 0 TO 13 'Muestra el nombre del que
GET X,Temp : SEROUT SinLCD,Baudios,[STR Temp \1] 'lleva la llave en LCD
NEXT
SEROUT SinLCD,Baudios,[Inst,Linea2] 'Muestra el nivel de autorizacin
IF (Temp0 = 0) THEN 'asignado o la palabra NO AUTORIZADO
SEROUT SinLCD,Baudios,[" NO AUTORIZADO "] 'si el nivel es 0
ELSE
SEROUT SinLCD,Baudios,["NIVEL AUT. = ",DEC1 Temp0 ]
ENDIF
'Esperar hasta que la llave sea liberada
DO WHILE (Disp = 1): GOSUB Ver_Disp : PAUSE 500 : LOOP
OUTD = 0 'Apagar los LEDs

LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 459


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_6.bsp

'===================================================================================
'SUBRUTINAS
'Pedir_Llave presenta un mensaje en la LCD para que se coloque al DS1971
Pedir_Llave:
SEROUT SinLCD,Baudios,[Inst,BorrarLCD] 'Presentar mensaje para que se
SEROUT SinLCD,Baudios,[Inst,Linea1,"PRESENTE LLAVE "] 'coloque al DS1971
SEROUT SinLCD,Baudios,[Inst,Linea2,"EN EL SOPORTE..."]
RETURN

'Ver_DS1971 determina si hay o no un DS1971 conectado al bus y valida el serial del


'mismo. La variable DispOK tendr un 1 cuando se detecte un DS1971 y se compruebe
'la correcta recepcin de su identificacin

Ver_DS1971:
GOSUB Ver_Disp 'Busca si hay dispositivos
IF (Disp <> 1) THEN RETURN 'Si no hay disp. o hay ms de 1, abortar
OWOUT OW_Pin,OW_RADBB,[ReadRom] 'Leer el serial de identificacin
OWIN OW_Pin,OW_NRBB,[STR RomCode \8] 'y almacenarlo en la variable RomCode
IF (RomCode = $14) THEN GOSUB CRCVerif ELSE GOSUB Error
'Si es un DS1971 validar su ID, sino abortar
RETURN

'Ver_Disp determina si hay dispositivos 1-Wire conectados


Ver_Disp:
OWOUT OW_Pin,OW_RADBB,[SearchROM]
OWIN OW_Pin,OW_NRBitB,[Disp.BIT1,Disp.BIT0]
Disp = Disp.BIT1 + Disp.BIT0
RETURN

'CRCVerif calcula el CRC-8 de la identificacin del DS1971


CRCVerif:
CRC= 0 'Valor inicial del CRC
FOR x = 0 TO 6 'Clculo con los 7 primeros bits de la ID
CRCt = RomCode (x): GOSUB CRCCalc
NEXT
'Si el CRC-8 calculado coincide con el recibido, entonces DispOK = 1
IF CRC = RomCode (7) THEN DispOK = 1 ELSE DispOK = 0 : GOSUB Error
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 460


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_6.bsp

'Rutina para el clculo del CRC


CRCCalc:
FOR Indice = 0 TO 7
IBit = CRC.BIT0 ^ CRCt.BIT0
CRC = CRC >> 1
CRC.BIT2 = CRC.BIT2 ^ IBit : CRC.BIT3 = CRC.BIT3 ^ IBit : CRC.BIT7 = IBit
CRCt = CRCt >> 1
NEXT
RETURN

'Caract_Propios carga las letras utilizadas para el mensaje de ERROR

Caract_Propios:
SEROUT SinLCD,Baudios,[Inst,CGRAM_0]
SEROUT SinLCD,Baudios,[$1F,$1F,$18,$1F,$1F,$18,$1F,$1F]
SEROUT SinLCD,Baudios,[$1E,$1F,$1B,$1B,$1E,$1F,$1B,$1B]
SEROUT SinLCD,Baudios,[$0E,$1F,$1B,$1B,$1B,$1B,$1F,$0E]
RETURN

'La rutina Cal_Clave calcula la clave correspondiente a la ID de la llave detectada

Cal_Clave:
Clave =0
FOR x=0 TO 7
Clave = (SQR (RomCode(x)+1)) + Clave
NEXT
RETURN

'La rutina Error indica al usuario que ha introducido una llave invlida o que el
'contacto elctrico con el soporte y el DS1971 es deficiente

Error:
SEROUT SinLCD,Baudios,[Inst,BorrarLCD,Inst,Linea1] 'Borra contenido del LCD
FREQOUT Buz,250,1400 'un mensaje de error
SEROUT SinLCD,Baudios,[" ", E,R,R,O,R," ",E,R,R,O,R] 'produce un tono de alerta
FREQOUT Buz,250,900
PAUSE 1000
GOSUB Pedir_Llave
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 461


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_6.bsp

'La rutina Leer_DS1971 direcciona la llave detectada, lee los 16 bytes de EEPROM
'y los almacena en la RAM Scratchpad de BS2p.

Leer_DS1971:
OWOUT OW_Pin,OW_RADBB,[MatchRom ,STR RomCode \8,LeerEE ,0]
OWIN OW_Pin,OW_NRBB ,[SPSTR 16]
OWOUT OW_Pin,OW_RADBitB,[0]
RETURN

Objetivo: Implementar el algoritmo de bsqueda de dispositivos en la RED 1-Wire.

Elementos a Utilizar
Cuando existe un slo dispositivo conectado al bus 1-
Wire puede omitirse el direccionamiento mediante el
(1) BASIC Stamp 2p. uso del comando SKIP ROM. Tambin puede utilizarse
(1) Conector Blue Dot Receptor (Dallas).
(2) DS1971 256 bit EEPROM (Dallas).
el comando READ ROM para leer la identificacin del
(1) Mdulo SLCD-BD. esclavo y direccionarlo. Pero, Qu hacer cuando existe
(1) Cable de Programacin. ms de 1 dispositivo en la RED 1-Wire al mismo
(1) StampW (Ver 2.0 beta 2.1 o superior). tiempo?.

Quizs, podramos leer manualmente los seriales de identificacin de todos los esclavos a conectar en el bus.
Para ello, se tendra que colocar cada dispositivo solo en el bus y aplicar los conceptos aprendidos con los
ejercicios anteriores. Con el comando READ ROM, leeramos su identificacin para luego almacenarla en una
memoria EEprom externa o en la memoria EEprom del BASIC Stamp. Posteriormente, se deber repetir el
procedimiento con todos los dems dispositivos hasta llegar al ltimo. Como en una red 1-Wire se pueden
conectar 100 o ms dispositivos, esta forma de manual de leer los seriales sera imprctica e ineficiente.

Previendo esta situacin, todos los dispositivos que emplean la tecnologa 1-Wire, soportan un comando
de ROM llamado SEARCH ROM. Este ya fue utilizado en todos los ejercicios anteriores para detectar la
presencia de dispositivos esclavos en la red, pero ciertamente, fue un uso bastante reducido en comparacin
a lo que se desarrollar en este ejercicio.

Sistema de Desarrollo para MC, modelo MDK-B28 462


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

BUSCANDO DISPOSITIVOS EN EL BUS 1-Wire


La bsqueda de dispositivos en una red 1-Wire deber comenzar un reset realizado por el maestro,
quien luego deber enviar un comando SEARCH ROM. En ese momento, cada dispositivo esclavo enviar al
bus el primer bit de su identificacin, seguido del complemento del mismo. El maestro, deber leer estos dos
bits. Las combinaciones posibles de estos dos bits, se muestran en la siguiente tabla.

ID Bit /ID Bit Significado

0 0 Conflicto o discrepancia en el bus, bus en cortocircuito.

0 1 Todos los dispositivos tienen un 0 en este bit.

1 0 Todos los dispositivos tienen un 1 en este bit.

1 1 No hay dispositivos conectados.

Tabla No. 13.3: Combinaciones posibles al efectuar el un Search ROM.


Fuente: 1-Wire Search Algorithm, Application Note 187, pg, 2002.

A continuacin, el maestro escribir un bit en el bus y cada esclavo comparar este bit con el que l
previamente haba transmitido. En caso de que los bits sean diferentes, el esclavo entrar en estado de
espera, del cual, slo saldr al producirse un nuevo reset. Si ambos bits coinciden, el esclavo trasmitir el
siguiente bit de su ID seguido de su complemento. El proceso se repetir hasta que se completen los 64 bits
de identificacin en cada dispositivo esclavo.

Pero, Qu bit transmiti el maestro?. En el caso de las dos combinaciones centrales de la tabla No. 13.3.
(01 y 10) el maestro tomar el bit recibido (ID Bit), lo almacenar en una variable temporal (donde al final
del proceso se tendrn los 64 bits de la ID de uno de los dispositivos) y lo reenviar al bus.

Cuando se produce una primera discrepancia (se reciben dos ceros consecutivos), el maestro colocar un 0
en el bus y almacenar el bit en el cual se produjo la colisin. Esto har que los dispositivos cuya ID fuese 1
en la posicin donde se present la colisin, dejen de participar en la bsqueda. El bit que se enva al bus se
almacena en la variable temporal de la ID.

Ahora bien, el proceso de bsqueda contina y al momento de presentarse otra colisin se compara el bit en
el que sta ocurre con la posicin del cero del prrafo anterior; si coinciden, entonces se enviar un 1 por el
bus (ID bit se toma igual a 1). Si la posicin de la colisin actual es mayor que la anterior deber escogerse
un cero, mientras que, si es menor debe repetirse el camino tomado en la bsqueda pasada para ese mismo
bit. Para entender mejor el algoritmo, se muestra en la figura No. 13.29 el diagrama de flujo de la
implementacin usada en el programa 13_7.bsp.

Sistema de Desarrollo para MC, modelo MDK-B28 463


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

INICIO
3
BitAct = Si
RomCode (BitAct-1) = 1
UltDisc
Disp = 0
UltDisc=0 No
2 Si
BitAct > RomCode (BitAct-1) = 0
UltDisc UltCero = BitAct
NoDisp = 0
BitAct = 1 No
UltCero= 0
Si
RomCode
UltCero = BitAct
Enviar RESET seguido de comando (BitAct-1)
SEARCH ROM al bus 1-Wire
No
1

Leer Tbit0 y Tbit1 desde Enviar RomCode (BitAct-1)


el bus 1-Wire por 1-Wire

4
NoDisp = 1 Si Tbit0 =
UltCero = 0 No
Tbit1 = 1 BitAct
RomCode (BitAct-1) = 0 BitAct = BitAct +1
= 64
No Si
1
UltDisc = UltCero
Tbit0 =
RomCode(BitAct-1) = TBit0
Tbit1 = 0
No Si Si
NoDisp
Disp = Disp + 1
=0
Enviar TBit0 por bus 1-Wire
No
Mostrar los 64 Bits de RomCode
4
No
2 UltDisc=
0
Figura No. 13.29: Diagrama de
flujo del algoritmo de Search ROM
Si
utilizado en el programa 13_7.bsp.
Fuente: Elaboracin Propia. Mostrar en debug terminal;
Existen: Disp, dispositivos conectados al bus 1-Wire

Sistema de Desarrollo para MC, modelo MDK-B28 464


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Ejecute el programa 13_7.bsp y conecte al menos dos dispositivos en el bus. En el debug terminal deber
aparecer algo similar a lo mostrado en la figura No. 13.30.

Figura No. 13.30: Programa 13_7.bsp ejecutndose.


Fuente: Elaboracin Propia.

Sistema de Desarrollo para MC, modelo MDK-B28 465


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

'Programa 13_7.bsp
'Este programa tiene por objetivo implementar el algoritmo Search ROM para encontrar
'todos los dispositivos esclavos conectados a una RED 1-Wire
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

SearchRom CON $F0 'Lee todas las ID de todos los dispositivos presentes en la RED
OW_RADBB CON 1 'Modo 1: Reset Antes de los Datos, modo Byte, Baja velocidad
OW_NRBitB CON 4 'Modo 4: No Reset, modo Bit, Baja velocidad

OW_Pin PIN 0 'Terminal de E/S del bus 1-Wire


Buz PIN 11 'Terminal donde se conecta el altavoz piezoelctrico

RomCode VAR Byte (8) 'Identificacin del esclavo 1-Wire


Disp VAR Byte 'Indica la cantidad de colisiones (discrep.) entre los disp.
UltDisc VAR Byte 'Posicin dentro del serial donde ocurri la ltima colisin
UltCero VAR Byte 'Posicin donde se coloc el ltimo cero
BitAct VAR Byte 'Bit actual del serial del dispositivo
Temp VAR Nib 'Variable temporal usada para desplegar las ID en pantalla
NoDisp VAR Bit 'Indica la existencia o no de dispositivos en la RED
TBit0 VAR Bit 'Almacena el bit enviado por los esclavos en la RED
TBit1 VAR Bit 'Complemento del bit enviado por los esclavos en la RED

'___________________________________________________________________________________
'Programa Principal
Inicio:
Inicio:
DO

DEBUG CLS,HOME,"Programa de Implementacin algoritmo de Search",CR


DEBUG "del Protocolo 1-Wire de Dallas Semiconductors",CR
Disp = 0 'Inicializa en cero contador de dispositivos
UltDisc = 0 'No hay discrepancias

DO 'Efecta la bsqueda del serial de un esclavo


NoDisp = 0 'Asume que hay al menos 1 dispositivo
UltCero = 0 'Asumir que no hay discrepancia con este disp
OWOUT OW_Pin,OW_RADBB,[SearchRom ] 'Comando de Search ROM por P0

Sistema de Desarrollo para MC, modelo MDK-B28 466


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_7.bsp

FOR BitAct=1 TO 64 'Buscar los 64 bits de identificacin


OWIN OW_Pin,OW_NRBitB,[TBit0,TBit1] 'Leer los bits que los esclavos colocan
'Seleccionar de acuerdo a las posibles combinaciones
SELECT (TBit0+TBit1)
CASE 0 'Colisin entre los dispositivos
'Si el bit corresponde a la ltima discrep.
IF BitAct = UltDisc THEN 'le coloca un 1 al serial en el bit actual
RomCode.LOWBIT(BitAct-1) = 1 'Si el bit actual est en una posicin
ELSEIF BitAct > UltDisc THEN 'superior a la ltima discrepancia tratada,
RomCode.LOWBIT(BitAct-1) = 0 'el serial tendr un 0
UltCero = BitAct 'y se actualiza la posicin de este cero
ELSEIF (RomCode.LOWBIT(BitAct-1)=0) THEN
UltCero = BitAct
'Repetir el valor que tena en el bit actual y si es =0 actualizar la marca
ENDIF
OWOUT OW_Pin,OW_NRBitB,[RomCode.LOWBIT(BitAct-1)] 'Envo del bit aceptado
CASE 1 'Si no hay colisin (discrepancia)
RomCode.LOWBIT(BitAct-1) = TBit0 'Envo del bit recibido para que el
OWOUT OW_Pin,OW_NRBitB,[TBit0] 'esclavo que lo mand siga activo
CASE 2 'No hay dispositivos en el bus
NoDisp = 1 'Indica que no hay dispositivos en la RED
UltCero = 0 'Por lo tanto tampoco hay discrepancias
RomCode.LOWBIT(BitAct-1) = 0
ENDSELECT
NEXT
UltDisc = UltCero 'Actualizar la posicin de la ltima discrepancia
IF NoDisp = 0 THEN 'Si existe al menos 1 esclavo, la cantidad de
Disp = Disp + 1 'colisiones es igual a la cantidad de dispositivos
'menos uno (-1)
DEBUG CR,"Dispositivo 1-Wire # ",DEC Disp," ID: "
FOR Temp = 7 TO 0
DEBUG HEX2 RomCode(Temp) 'Muestra un mensaje y la identificacin del
NEXT 'dispositivo
ENDIF
LOOP UNTIL UltDisc = 0 'Repetir hasta el ltimo dispositivo

DEBUG CR,CR,"Existen: ",DEC Disp, " dispositivos conectados al bus 1-Wire",CR


'Cantidad de dispositivos presentes en la RED
FREQOUT Buz,100,1250 'Bip para indicar fin de bsqueda
PAUSE 1500 'Espera de 1.5 seg antes de reiniciar la bsqueda
LOOP

Sistema de Desarrollo para MC, modelo MDK-B28 467


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

El propsito del programa anterior es implementar el algoritmo de bsqueda de dispositivos esclavos en una
red 1-Wire. Sin embargo, este programa no efecta ningn tipo de verificacin de la informacin recibida,
por esta razn, se ha incluido el programa 13_8.bsp. El programa 13_8.bsp, busca a todos los dispositivos
en una red 1-Wire, valida la identificacin obtenida por medio del CRC-8, almacena en la EEprom del
BASIC Stamp 2p cada uno de los seriales vlidos obtenidos y muestra uno por uno los dispositivos, con ID y
nmero.

Arme nuevamente el circuito mostrado en la figura No.


13.19 y ejecute el programa 13_8.bsp. Presione el
pulsador PB1 para efectuar una bsqueda, cuando
sta finalice ver aparecer el mensaje ENCONTRADOS
= XX , donde XX es el nmero de dispositivos
presentes en el bus. A continuacin, presione el
pulsador PB2 y los dispositivos encontrados se Figura No. 13.31: Programa 13_8.bsp ejecutndose.
presentarn uno por uno en la pantalla LCD como se Fuente: Elaboracin Propia.
muestra en la figura No. 13.31.

'Programa 13_8.bsp
'Este programa tiene por objetivo implementar el algoritmo Search ROM para encontrar
'todos los dispositivos conectados a la RED 1-Wire, validar las IDs recibidas,
'almacenar en EEprom del BASIC Stamp las IDs y mostrar el tipo de dispositivo al que
'corresponde la identificacin.
'===================================================================================
'{$STAMP BS2p}
'{$PBASIC 2.5}
'___________________________________________________________________________________
'Declaracin de Variables y Constantes

'Nombres de los dispositivos por familias


F01 DATA "DS1990 " : F04 DATA "DS1994 " : F10 DATA "DS1920 " : F14 DATA "DS1971 "
F23 DATA "DS1973 " : F02 DATA "DS1991 " : F06 DATA "DS1993 " : F08 DATA "DS1992 "
F09 DATA "DS1982 " : F0A DATA "DS1995 " : F0C DATA "DS1996 " : F1A DATA "DS1963 "
F21 DATA "DS1921 " : F05 DATA "DS2405 " : F0B DATA "DS2505 " : F0F DATA "DS2506 "
F12 DATA "DS2406 " : F20 DATA "DS2450 " : F22 DATA "DS1822 " : F27 DATA "DS2417 "
F28 DATA "DS18B20" : F2C DATA "DS2890 " : F84 DATA "DS2404S"

Sistema de Desarrollo para MC, modelo MDK-B28 468


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_8.bsp

SearchRom CON $F0 'Lee todas las ID de todos los dispositivos presentes en la RED
OW_RADBB CON 1 'Modo 1: Reset Antes de los Datos, modo Byte, Baja velocidad
OW_NRBitB CON 4 'Modo 4: No Reset, modo Bit, Baja velocidad

TotalDisp CON 9 'Localidad de SCRAM donde se almacena el total de dispositivos


RomCodes CON 1 'Banco de EEPROM donde se almacenan los cdigos de ID
Nombres CON 0 'Banco de EEPROM donde se almacenan los nombres de los disp.
Baudios CON 240 'Parmetro Baudmode de SERIN/SEROUT
BorrarLCD CON 1 'Limpiar pantalla
Inst CON 254 'Envo de una instruccin
Linea1 CON 128 'Posiciona al apuntador de DDRAM al inicio de la lnea 1
Linea2 CON 192 'Posiciona al apuntador de DDRAM al inicio de la lnea 2

Buz PIN 11 'Altavoz piezoelctrico


PB1 PIN 2 'Pulsador para Ver los dispositivos presentes en la RED 1-Wire
PB2 PIN 3 'Pulsador para Buscar dispositivos en la RED 1-Wire
SinLCD PIN 1 'Terminal de envo de datos al LCD
OW_Pin PIN 0 'Terminal de E/S del bus 1-Wire

RomCode VAR Byte (8) 'Identificacin del esclavo 1-Wire


Esp VAR Byte (2) 'Espacios de trabajo de los pulsadores PB1 y PB2
Disp VAR Byte 'Indica la cantidad de colisiones (discrep.) entre los disp.
UltDisc VAR Byte 'Posicin dentro del serial donde ocurri la ltima colisin
UltCero VAR Byte 'Posicin donde se coloc el ltimo cero
BitAct VAR Byte 'Bit actual del serial del dispositivo
Temp VAR Byte 'Variable temporal usada para desplegar las ID en pantalla
Dir VAR Byte 'Direccin donde se encuentra el nombre del dispositivo
CRC VAR Byte 'Variable que contiene al CRC calculado
CRCt VAR Byte 'Var. auxiliar que contiene el byte al que se le calcula el CRC
X VAR Byte 'Variable de uso general
Y VAR Byte 'Variable de uso general
Indice VAR Nib 'Variable de uso general
IBit VAR Bit 'Variable temporal
NoDisp VAR Bit 'Indica la existencia o no de dispositivos en la RED 1-Wire
TBit0 VAR Bit 'Almacena el bit enviado por los esclavos en la RED 1-Wire
TBit1 VAR Bit 'Complemento del bit enviado por los esclavos en la RED

'___________________________________________________________________________________

Sistema de Desarrollo para MC, modelo MDK-B28 469


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_8.bsp

'Programa Principal

Inicio:
STORE RomCodes 'Indica que las instrucciones READ/WRITE operan en el banco 1
SEROUT SinLCD,Baudios,[Inst,BorrarLCD,Inst,Linea1, "PROTOCOLO 1-WIRE"]
SEROUT SinLCD,Baudios,[Inst,Linea2, "1- BUSCAR 2- VER"]

DO
BUTTON PB1,0,255,0,Esp(0),1,Buscar 'Al presionar PB1 ejecuta la bsqueda
BUTTON PB2,0,255,0,Esp(1),1,Listar 'Al presionar PB2 muestra la ID de los disp.
LOOP

Buscar: 'Buscar los esclavos 1-Wire conectados al bus


PAUSE 500
SEROUT SinLCD,Baudios,[Inst,BorrarLCD,Inst,Linea1] 'Borrar LCD
SEROUT SinLCD,Baudios,["BUSCANDO EN RED "] 'Mostrar mensaje de bsqueda
PAUSE 250 'Espera de 250 ms
Disp = 0 'Inicializa en cero contador de dispositivos
UltDisc = 0 'No hay discrepancias
DO 'Efectuar la bsqueda del serial de un esclavo
NoDisp = 0 'Asume que hay al menos 1 dispositivo
UltCero = 0 'Asumir que no hay discrepancia con este disp.
OWOUT OW_Pin,OW_RADBB,[SearchRom ] 'Comando de Search ROM por P0

FOR BitAct=1 TO 64 'Buscar los 64 bits de identificacin


OWIN OW_Pin,OW_NRBitB,[TBit0,TBit1] 'Leer los bits que los esclavos colocan
'Seleccionar de acuerdo a las posibles combinaciones
SELECT (TBit0+TBit1)
CASE 0 'Colisin entre los dispositivos
IF BitAct = UltDisc THEN 'Si el bit corresponde a la ltima discrepancia
RomCode.LOWBIT(BitAct-1) = 1 'le coloca un 1 al serial en el bit actual
ELSEIF BitAct > UltDisc THEN 'Si el bit actual est en una posicin superior
RomCode.LOWBIT(BitAct-1) = 0 'a la ltima discrepancia tratada, el serial
UltCero = BitAct 'tendr un 0 y se actualiza la posicin de este
ELSEIF (RomCode.LOWBIT(BitAct-1)=0) THEN
UltCero = BitAct
'Repetir el valor que tena en el bit actual y si es cero actualizar la marca
ENDIF
OWOUT OW_Pin,OW_NRBitB,[RomCode.LOWBIT(BitAct-1)] 'Envo del bit aceptado

Sistema de Desarrollo para MC, modelo MDK-B28 470


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_8.bsp

CASE 1 'Si no hay colisin (discrepancia)


RomCode.LOWBIT(BitAct-1) = TBit0 'Envo del bit recibido para que el
OWOUT OW_Pin,OW_NRBitB,[TBit0] 'esclavo que lo envi siga activo
CASE 2 'No hay dispositivos en el bus
NoDisp = 1 'Indica que no hay dispositivos en la RED
UltCero = 0 'Por lo tanto tampoco hay discrepancias
RomCode.LOWBIT(BitAct-1) = 0
ENDSELECT
NEXT
UltDisc = UltCero

GOSUB CRCVerif 'Verificar el DOW CRC de la ID encontrada

IF (CRC = RomCode (7)) AND (NoDisp=0) THEN 'Si la ID es correcta y hay dispositivos
Disp = Disp + 1 'entonces se incrementa el contador
FOR Indice =7 TO 0 'Y se escribe en el Banco 1 de la EEPROM del BS2p la
WRITE ((Disp-1)*8+Indice), RomCode(Indice) 'ID del dispositivo encontrado
NEXT
ENDIF

SEROUT SinLCD,Baudios,[Inst,Linea2,"ENCONTRADOS=",DEC3 Disp ]


LOOP UNTIL UltDisc = 0 'Mensaje con los disp. hallados
FREQOUT Buz,100,1250 'Repetir hasta el ltimo esclavo
PAUSE 1500 'Emite un tono agudo para indicar fin de bsqueda
GOTO Inicio 'Espera de 1.5 seg para leer el texto del mensaje

Listar:
SEROUT SinLCD,Baudios,[Inst,BorrarLCD] 'Borrar contenido de la LCD
SEROUT SinLCD,Baudios,[Inst,Linea1,"TOTAL DISP.= ",DEC3 Disp]
PAUSE 2000 'Muestra el total de dispositivos en RED por 2 seg
X = 0
DO WHILE Disp > X 'Mientras queden dispositivos por mostrar
SEROUT SinLCD,Baudios,[Inst,Linea1,"ID # ",DEC2 X+1, " "]
SEROUT SinLCD,Baudios,[Inst,Linea2]
FOR Y = (X*8)+7 TO (X*8) 'Obtiene el ID del dispositivo actual y lo va
READ Y,Temp : 'mostrando en la lnea 2 del LCD
SEROUT SinLCD,240,[HEX2 Temp]
NEXT

Sistema de Desarrollo para MC, modelo MDK-B28 471


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Continuacin del programa 13_8.bsp

'Bsqueda del nombre almacenado en la EEPROM del BS2p.


'La variable Temp contiene a la familia

LOOKDOWN Temp, [$1 ,$2 ,$4 ,$5 ,$6 ,$8 ,$9 ,$0A,$0B,$0C,$0F,$10,$14,$1A,$21,
$12,$20,$22,$27,$28,$2C,$23,$84], Temp
'Temp ahora contiene el ndice coincidente con la familia
LOOKUP Temp, [F01,F02,F04,F05,F06,F08,F09,F0A,F0B,F0C,F0F,F10,F14,F1A,F21,
F12,F20,F22,F27,F28,F2C,F23,F84],Dir
'Dir contiene la direccin de la EEPROM donde se encuentra el nombre
SEROUT SinLCD,Baudios,[Inst,Linea1+9]
STORE Nombres 'Los comandos READ y WRITE se aplican al Banco 0
FOR Y = Dir TO (Dir + 6) 'Obtiene cada una de las letras del nombre
READ Y,Temp : SEROUT SinLCD,Baudios,[STR Temp\1] 'y las muestra en la LCD
NEXT
STORE RomCodes 'Los comandos READ y WRITE se aplican al Banco 1
X = X + 1 'Prximo dispositivo
PAUSE 3000 'Espera de 3 segundos para lectura de la LCD
LOOP
GOTO Inicio 'Al finalizar regresa al principio

'===================================================================================
'SUBRUTINAS
'
CRCVerif:
CRC =0
FOR X = 0 TO 6
CRCt = RomCode(X) : GOSUB CRCCalc
NEXT
RETURN

CRCCalc:
FOR Indice = 0 TO 7
IBit = CRC.BIT0 ^ CRCt.BIT0
CRC = CRC >> 1
CRC.BIT2 = CRC.BIT2 ^ IBit : CRC.BIT3 = CRC.BIT3 ^ IBit : CRC.BIT7 = IBit
CRCt = CRCt >> 1
NEXT
RETURN

Sistema de Desarrollo para MC, modelo MDK-B28 472


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

En este ejercicio, se ha utilizado la memoria EEPROM del BASIC Stamp para almacenar las cadenas de texto
con los nombres de los dispositivos 1-Wire y los seriales de identificacin de los mismos. Los seriales han
sido almacenados en el bloque 1 de EEPROM , mientras que los nombres se encuentran junto con el cdigo
del programa en el bloque 0. Dependiendo de la cantidad de dispositivos existentes en la red 1-Wire, la
cantidad de memoria EEPROM utilizada para almacenar sus seriales podra crecer significativamente. Por
ejemplo, si existen 50 dispositivos en la red 1-Wire, se utilizarn 400 bytes de memoria. Si no se toma la
previsin de almacenar estos datos en reas separadas de la memoria EEPROM del BASIC Stamp, se podra
borrar parte del propio programa en ejecucin. Para escribir los seriales en la EEPROM se ha utilizado:

FOR Indice =7 TO 0
WRITE ((Disp-1)*8+Indice), RomCode(Indice)
NEXT

Este conjunto de instrucciones van almacenado cada byte del serial de ID (RomCode(I)) en una localidad
que se calcula como (Disp-1)*8+Indice. A medida que se encuentra cada dispositivo, la variable Disp
aumenta su valor en 1, de modo que el producto (Disp-1)*8, el cual contiene la direccin donde se
almacenar el primer byte de la identificacin del dispositivo recin hallado, apunta a una localidad de
memoria separada por 8 bytes. De esta manera, se evita la sobre escritura de los seriales previamente
almacenados. Un procedimiento similar se ha utilizado para la lectura, slo que la extraccin se hace en el
sentido contrario al de la escritura, a fin, de presentar los datos directamente en una pantalla LCD.

Sistema de Desarrollo para MC, modelo MDK-B28 473


www.roso-control.com
Captulo No. 13. Comunicacin Serial Asincrnica 1-Wire

Investigue los siguientes tpicos


1. Qu es un Bus 1-Wire y como trabaja ?.
2. Cuantas lneas son requeridas para trabajar en un 1-Wire y cuales son ?.
3. Cuantos maestros pueden existir en un Bus 1-Wire ?.
4. Cual es la velocidad de transferencia de datos en un Bus 1-Wire ?.
5. Por qu es necesarias la resistencia de pull up en la lnea de Data ?.
6. En cuantos pasos se puede realizar una comunicacin 1-Wire, explique ?.
7. Cuantos modos de Transmisin/Recepcin existen en un protocolo 1-Wire ?.
8. Como se sincroniza el maestro con los esclavos en un Bus 1-Wire ?.
9. Cuando se considera que un Bus 1-Wire est libre o Free ?.
10. Como se realiza un reset en el Bus 1-Wire ?.
11. Cuales son los comandos y funciones de ROM ms comunes en el protocolo 1-Wire ?.
12. Cuales son las especificaciones elctricas de un Bus 1-Wire ?.
13. Como se realiza una transferencia de datos en un bus 1-Wire ?.
14. Como trabaja el comando OWIN y OWOUT, explique ?.
15. Para que sirve el modificador de formato (SPSTR 8) en un comando OWIN u OWOUT ?.
16. Como trabaja el comando STORE ?.
17. Qu es CRC-8, para que sirve y como se calcula ?.
18. Como trabaja el comando SEARCH ROM ?
19. Explique como se pueden conectar diferentes dispositivos esclavos al Bus 1-Wire ?.

Programacin

1. Utilizando al BASIC Stamp 2p y a un termmetro digital Dallas Semiconductor DS18B20, construya


un programa para visualizar la temperatura del termmetro digital en una pantalla LCD. Utilice los
pulsadores del sistema MDK-B28 para introducir los valores de disparo de alarmas por baja y alta
temperatura y para programar la resolucin de la conversin de la temperatura entre nueve y doce
bits.

Sistema de Desarrollo para MC, modelo MDK-B28 474


www.roso-control.com
Anexo No. 01. Esquemas Elctricos del Sistema de Desarrollo MDK-B28

Anexo No. 01
Esquemas Elctricos del Sistema de Desarrollo
MDKB28

Sistema de Desarrollo para MC, modelo MDK-B28 475


www.roso-control.com
Anexo No. 01. Esquemas Elctricos del Sistema de Desarrollo MDK-B28

FOTOGRAFA DEL SISTEMA MDK-B28


CON TODOS SUS COMPONENTES

Sistema de Desarrollo para MC, modelo MDK-B28 476


www.roso-control.com
Anexo No. 01. Esquemas Elctricos del Sistema de Desarrollo MDK-B28

DIAGRAMAS ELCTRICOS DEL MDK-B28

Sistema de Desarrollo para MC, modelo MDK-B28 477


www.roso-control.com
Anexo No. 01. Esquemas Elctricos del Sistema de Desarrollo MDK-B28

Sistema de Desarrollo para MC, modelo MDK-B28 478


www.roso-control.com
Anexo No. 01. Esquemas Elctricos del Sistema de Desarrollo MDK-B28

El Bus de Expansin del sistema de desarrollo MDK-B28 es compatible con los AppMods de
Parallax, Inc.

Sistema de Desarrollo para MC, modelo MDK-B28 479


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Anexo No. 02
Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 480


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 481


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 482


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 483


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 484


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 485


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 486


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 487


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 488


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 489


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 490


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 491


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 492


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 493


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 494


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 495


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 496


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 497


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 498


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 499


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 500


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 501


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 502


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 503


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 504


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 505


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 506


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 507


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 508


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 509


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 510


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 511


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 512


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 513


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 514


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 515


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 516


www.roso-control.com
Anexo No. 02. Especificaciones de Componentes

Sistema de Desarrollo para MC, modelo MDK-B28 517


www.roso-control.com
Sistema de Desarrollo para MC, modelo MDK-B28
www.roso-control.com
Esta obra est inspirada en los textos del programa Stamps in
Class de Parallax y se compone de 474 pginas distribuidas
en 13 captulos, en los cuales se desarrollan 52 ejercicios
prcticos y 73 programas.

Todos los captulos comienzan con una recopilacin de


conocimientos tericos relacionados con el tema y en ella se
expone la sintaxis de todos los comandos de PBASIC utilizados,
explicando de manera detallada el uso de sus parmetros.

Los captulos estn compuestos de varios ejercicios que buscan


determinados objetivos. Durante el desarrollo de un ejercicio, se
elaboran programas de dificultad creciente que explican como
lograr la meta planteada. Para el cabal desarrollo de los
ejercicios, el lector deber armar el circuito correspondiente,
verificar su funcionamiento, analizar y comprender los
programas e implementar las modificaciones que considere
convenientes.

Al final de cada captulo, se encuentra una seccin de evaluacin


que puede ser utilizada como herramienta de auto-aprendizaje.
En sta, hallar una serie de preguntas y ejercicios de
programacin destinados a retar los conocimientos recin
aprendidos.

El texto busca brindarle a los estudiantes y personas interesadas


en los sistemas digitales, las herramientas necesarias para el
desarrollo de aplicaciones y contribuir al mejoramiento de su
formacin en el rea de microcontroladores.

ISBN 980-12-2188-7

Você também pode gostar