You are on page 1of 75

2010

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

TECNOLOGA INDUSTRIAL
MICROCONTROLADORES Y SUS
APLICACIONES EN ROBTICA
LADO IZQUIERDO
DEL MICROBOT

LADO DERECHO
DEL MICROBOT

PARALLAX
CONTINOUS ROT ATION
www.parallax.com

GND
CONTROL

+5V

Vdd = 5V
Vss = 0 V
20 ms
1,7 ms
GIRO TRIGONOMTRICO
A VELOCIDAD MXIMA

J.Garrigs
DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 0

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

NDICE.
NDICE. _____________________________________________________________ 0
NDICE. _____________________________________________________________ 1
1. INTRODUCCIN A LA NOCIN DE MICROCONTROLADOR.____________ 3
2. ARQUITECTURA INTERNA DE LOS MICROCONTROLADORES PIC. ____ 4
3. PRINCIPALES CARACTERSITICAS DEL MDULO OEM BS2_IC Y EL
PIC16C57____________________________________________________________ 6
4. INTRODUCCIN AL LENGUAJE PBASIC._____________________________ 8
4.1 LOS LENGUAJES UTILIZADOS POR LOS MICROCONTROLADORES _____ 8
4.2. LOS MODULOS BASIC STAMP DE PARALLAX __________________________ 9
4.3. EDITOR PBASIC _____________________________________________________ 11
4.4. OPERACIONES ARITMTICAS Y LGICAS EN PBASIC ________________ 12
4.4.1. PROGRAMAS DE EJEMPLO CON OPERACIONES MATEMTICAS _____________13

4.5. ORGANIZACIN DE LA MEMORIA RAM DE DATOS DEL BS2___________ 16


4.6. INSTRUCCIONES PBASIC ____________________________________________ 17
4.6.1. INSTRUCCIONES DE ENTRADA/SALIDA DIGITALES ________________________17
4.6.2. INSTRUCCIONES PARA BUCLES REPETITIVOS _____________________________17
4.6.3. INSTRUCCIONES DE SALTO ______________________________________________18
4.6.4 .INSTRUCCIONES NUMRICAS ____________________________________________18
4.6.5. INSTRUCCIONES DE E/S SERIE ASNCRONA________________________________18
4.6.6. INSTRUCCIONES DE E/S SERIE SNCRONA_________________________________18
4.6.7. INSTRUCCIONES DE E/S ANALGICA _____________________________________18
4.6.8. INSTRUCCIONES DE CONTROL DE TIEMPO ________________________________18
4.6.11. INSTRUCCIONES DE ACCESO A LA EEPROM ______________________________18
4.6.12. INSTRUCCIONES DE DEPURACIN DEL PROGRAMA _______________________18

5. PRACTICA 1: CONTROLANDO UN LED Y UN ZUMBADOR. ____________ 19


6. VARIABLES EN PBASIC. ___________________________________________ 20
6.1. VARIABLES DE NOMBRES FIJOS EN PBASIC. _________________________ 20
6.2. DECLARACIN DE VARIABLES DEL BS2 _____________________________ 20
6.3. DECLARACIN DE ARRAYS DE VARIABLES (Matrices)_________________ 22
6.4. MODIFICADORES (ALIAS) DE LAS VARIABLES. _______________________ 23

7. CONSTANTES EN PBASIC _________________________________________ 24


7.1 DECLARACIN DE CONSTANTES EN PBASIC__________________________ 24

8. PRACTICA2: INTERMITENCIA DE UN DIODO LED. __________________ 25


9. DIRECCIONAMIENTO DIGITAL DE ENTRADAS SALIDAS CONSIDERANDO
EL MAPA DE MEMORIA._____________________________________________ 26
10. PRACTICA 3: CONFIGURACIN DE ENTRADAS-SALIDAS Y SALTO
CONDICIONAL. _____________________________________________________ 27
11. PRACTICA 4: PROGRAMACION DE ECUACIONES LGICAS CON
OPERADORES BOLEANOS. __________________________________________ 28
12. PRACTICA 5: CUENTA ATRS MEDIANTE DISPLAY DE 7 SEGMENTOS. 33

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 1

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

13. PRACTICA 6: MANEJO DE ARRAYS: JUEGO DE LUCES. _____________ 36


14. PRACTICA 7: CONTROL DE MOTORES DE CC POR PWM. ____________ 39
15. INSTRUCCIONES DEBUG TERMINAL Y DO LOOP _________________ 43
16. PRCTICA 8: CONTROL DE SENSORES DE CONTACTO. _____________ 45
17. INSTRUCCIN DTMFOUT ________________________________________ 48
17.1. FUNCIONAMIENTO TCNICO DEL DTMFOUT _______________________ 49

18. OPERADORADORES MATEMTICOS NCD Y DCD ___________________ 51


18.1. OPERADOR MATEMTICO NCD ____________________________________ 51
18.2. OPERADOR MATEMTICO DCD ____________________________________ 51

19. PRCTICA 9: JUEGO DE LUCES DE GUSANO _______________________ 53


20. COMANDO BRANCH _____________________________________________ 54
21. PRCTICA 10: GOBERNANDO EL TELFONO ______________________ 55
22. SERVOMOTORES ________________________________________________ 58
23. COMANDO PULSOUT ____________________________________________ 60
24. PRCTICA 11: POSICIONAMIENTO DE UN SERVOMOTOR. __________ 61
25. PRCTICA 12: CONTROL DE UN SERVOMOTOR DE ROTACIN
CONTINUA _________________________________________________________ 63
26. EMISIN Y DETECCIN DE ONDAS ELECTROMAGNTICAS
INFRAROJAS _______________________________________________________ 66
27. COMANDO FREQOUT: NAVEGACIN POR IR_______________________ 68
28. MICROBOT SEGUIDOR DE LNEA NEGRA. _________________________ 71

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 2

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

1. INTRODUCCIN A LA NOCIN DE MICROCONTROLADOR.


En los cursos anteriores se ha estudiado en varias ocasiones, con
diferente nivel de profundizacin, la arquitectura del PC. A este respecto,
se indicaba que un ordenador era una mquina, eminentemente
electrnica, que era capaz de leer, interpretar y realizar operaciones con
un conjunto de instrucciones y datos lgicos en forma de ceros y unos.
Aunque es sabido que la estructura interna del PC es mucho ms
compleja, podemos considerar que est formada por tres grandes
bloques:
1. Microprocesador o CPU (Unidad Central de Proceso).
2. Memorias.
3. Entradas/Salidas (E/S).
Los distintos elementos del PC estn conectados a travs de los
BUSES y regulados por los controladores del trfico de datos ( Chipset,
tecnologa Hypertransport, etc..).

Buses

MEMORIAS

CPU

E/S

Una vez definidos de forma simplista los bloques de un PC,


podemos afrontar el concepto de microcontrolador como un circuito
integrado que contiene un ordenador completo en su interior, pero con
caractersticas simplificadas respecto a l. En este sentido, las
prestaciones de un microcontrolador son mucho ms limitadas y reducidas
que las de un PC, pero tambin es muchsimo ms barato y pequeo, lo
que le hace apropiado para ser utilizado en multitud de aplicaciones.
Los microcontroladores son dispositivos que admiten un conjunto de
instrucciones sencillo y poco numeroso. Su memoria tiene poca capacidad
lo que condiciona el tamao del programa y de los datos que se pueden
manejar con estos dispositivos. Ahora bien, dado que su utilizacin se
aplica a elementos concretos y delimitados se les suele aadir recursos
adicionales que les permitan la implementacin en distintos proyectos.
Dnde se emplean los microcontroladores?; pues, en todos lados,
mira en tu bolsillo, si llevas un telfono mvil en el habr dos o tres
microcontroladores, en un reproductor MP3, en un microondas, en un
mando a distancia, en el televisor, en el coche, en la consola, en una
DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 3

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

mquina expendedora, en el ratn del PC, en la impresora, en un cartel


luminoso, en cualquier robot, etc, etc.
Para darnos una idea de la importancia de los microcontroladores,
basta fijarse en las ventas de estos dispositivos a nivel mundial de la
empresa Microchip, pasando de un consumo de 7 millones de unidades en
1990 a ms de 500 millones en 2002, el la actualidad esta cifra crece
exponencialmente.
El principal fabricante de microcontroladores a nivel mundial es la
empresa Motorota, aunque en los ltimos aos ha subido mucho la
empresa Microchip a travs de sus dispositivos PIC (Circuito Integrado
Programable). Aunque existen microcontroladores de 4, 8, 16 y 32 bits los
ms utilizados a nivel de usuario son los de 8 bits.

bits,

Se comercializan cuatro series de microcontroladores PIC de


8
entre los que existe ms de un centenar de modelos distintos.
SERIE BSICA: Familia PIC16C5x, soporta un conjunto de 33
instrucciones de 12 bits cada una. Son sencillos y muy baratos.
SERIE MEDIA: Familia PIC16Cxxx, cuentan con 35 instrucciones de
14 bits. Es la gama ms ampliamente comercializada y tiene
modelos con encapsulados que van de las 8 a las 68 patillas.
Dentro del propio chip se suelen implementar circuitos auxiliares
para adaptar su uso a aplicaciones concretas.
GAMA ALTA: Familia PIC17Cxxx, que soportan 58 instrucciones de
16 bits y estn destinados a aplicaciones con requerimientos
tcnicos elevados.
GAMA MEJORADA: Pueden funcionar a frecuencias de 40 MHz y
disponen de 77 instrucciones de 16 bits. Estos modelos se emplean
en proyectos muy concretos.

2. ARQUITECTURA INTERNA DE LOS


MICROCONTROLADORES PIC.
La
arquitectura
fundamentales:

de

un

PIC

se

estructura

en

bloques

Procesador
Memoria de programa
Memoria de datos
Recursos auxiliares

Si en la memoria RAM de un ordenador contiene datos e


instrucciones, en los PIC existen dos memorias separadas, una que
nicamente contiene instrucciones y la otra que slo contiene datos. Este
tipo de arquitectura se denomina Harvard y se caracteriza por permitir un
acceso simultneo a los datos y a las instrucciones, incrementando as el
rendimiento del PIC.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 4

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

MEMORIA
DE
PROGRAMA

PROCESADOR

MEMORIA
DE
DATOS

Adems de las dos memorias independientes, el microcontrolador,


dispone de mdulos de entrada/salida que no se han dibujado en la figura
anterior.
La memoria de programa contiene las instrucciones que van a
controlar el proceso a que se destina el microcontrolador. Esta memoria
admite diferentes tipos de tecnologa segn las caractersticas de la
aplicacin. Si se van a necesitar gran nmero de microcontroladores
idnticos con un mismo programa, se suelen utilizar memorias ROM
(memoria de slo lectura) en la que el fabricante graba el programa de
usuario, obtenindose elementos con gran nivel de seguridad y a precios
muy competitivos.
Si la aplicacin del microcontrolador est destinada a un uso menos
generalizado, los PIC contienen una memoria grabable y borrable por el
usuario a travs de una grabadora con la ayuda de un PC y el software
adecuado. Hay memorias de tipo EPROM, son grabables desde un PC,
pero para borrarlas hay que someterlas a luz ultravioleta durante un
cierto tiempo a travs de una ventana de cuarzo existente en el
encapsulado del microcontrolador. Las ms ampliamente utilizadas son
las EEPROM y las FLASH que se pueden grabar y borrar elctricamente
desde un PC. Hay versiones, denominadas OTP, que son muy econmicas
que son grabables por el usuario una sola vez.
La memoria de datos debe ser leble y escribible, por esto se usan
memorias de tipo RAM, que tienen el inconveniente de perder la
informacin que contienen cuando se interrumpe la alimentacin elctrica.
Por tal motivo, se suele complementar la memoria RAM con un pequeo
espacio de memoria EEPROM leble y escribible, pero no voltil. Un
inconveniente de las memorias EEPROM es la lentitud de acceso.
En cuanto a los recursos auxiliares que opcional y optativamente se
implementan en el encapsulado del microcontrolador existe un abanico de
posibilidades entre las que destacan las siguientes:
Conversor analgico-digital (ADC) y digital-analgico (DAC).
Temporizadores
Puertos de comunicacin serie y paralelo.
Comparadores, capturadotes de seal y mdulos PWM (Modulacin
de Ancho de Pulsos)

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 5

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

3. PRINCIPALES CARACTERSITICAS DEL MDULO OEM


BS2_IC Y EL PIC16C57
El PIC16C57 es el modelo de microcontrolador de gama bsica de
los mdulos PARALLAX destinados a prcticas y experimentacin con el
que se trabajara durante este curso. Uno de esos mdulos es el OEM
BS2-IC que se muestra en la figura donde el PIC es el chip de mayor
tamao.

Las principales caractersticas del mdulo BS2-IC basado en el


PIC16C57 son:

Microcontrolador ............................................... PIC16C57


Velocidad de ejecucin del programa .................... 4000 instrucciones/segundo
Velocidad del procesador .................................... 20 MHz
Capacidad de la memoria de programa EEPROM ...... 2KB
Longitud mxima del programa ............................ 500 lneas PBASIC
Capacidad de la memoria RAM de datos ................. 32Bytes (6 para E/S y
variables
N de patitas de E/S ........................................... 16 (P0 a P15)
Consumo de corriente ......................................... 8 mA en modo ejecucin
100 A en modo sleep
Corriente por E/S suministrada/absorbida .............. 20 mA/25 mA
N de instrucciones PBASIC ................................ 36
Interfaz con PC ................................................. Puerto serie (9600 baudios)
Programa editor ................................................. STAMP2.EXE (DOS)
STAMPW.EXE (WINDOWS)

26

para

http://www.msebilbao.com/notas/software/Editor BASIC Stamp V2_2 multilenguaje.exe

Esquema simplificado
del mdulo OEM BS2

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 6

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Esquema de conexionado del mdulo OEM BS2-IC

El modo de funcionamiento de estos mdulos est basado en


depositar el programa, confeccionado en PBASIC y editado en el PC, en
una memoria EEPROM, que puede leerse y borrarse para volver a
escribirse un milln de veces. Despus, en el interior del mdulo y de
forma automtica, se va pasando el programa instruccin a instruccin a
un microcontrolador PIC de Microchip en cuya memoria est grabado un
programa Intrprete que traduce cada instruccin PBASIC en las
instrucciones mquina correspondientes para proceder a su ejecucin.
Los dos elementos principales del mdulo BASIC Stamp son el
microcontrolador grabado con el Intrprete PBASIC y la EEPROM que
contiene el programa editado en el PC, pero tambin existen otros
elementos auxiliares para la estabilizacin de la tensin, el Reset, el
oscilador de la frecuencia
En lo que respecta al chip del microcontrolador, las patitas OSC1 y
OSC2 se emplean para controlar la frecuencia de trabajo del procesador.
Entre ellas se suele colocar un cristal de cuarzo o un resonador cermico
(se puede observar, en la figura del chip, en la parte superior izquierda
en color anaranjado) con la frecuencia de funcionamiento 20 MHz. La
patilla MCLR#/Vpp tiene dos funciones. Observe que el smbolo #
significa que su estado activo es el negado, por lo cual cuando pasa a
nivel bajo se produce un RESET o reinicializacin del programa. La otra
funcin de esta patita representada por Vpp sirve para introducir por ella,
cuando se graba el programa, la tensin especial que se necesita y que
es del orden de 13,8 VDC. La patilla RTCC se usa para aplicar en ella una
DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 7

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

frecuencia
externa
de
funcionamiento
de
un
temporizador que posee el
PIC. Cuando no se usa es
temporizador
conviene
conectar esta patita a
positivo para reducir el
consumo.
Las
restantes
patillas
del
chip
son
lneas de entrada y salida
por
las
que
el
microcontrolador recibe o
enva
la
informacin
correspondiente
al
procesamiento
del
programa. Las conexiones RA0-RA3 son 4 patitas bidireccionales, de nivel
TTL de la puerta A para la conexin de perifricos externos. RB0-RB7 son
8 lneas bidireccionales TTL de la puerta B y RC0-RC7 son 8 lneas
bidireccionaes TTL, pertenecientes a la puerta C.

4. INTRODUCCIN AL LENGUAJE PBASIC.


4.1 LOS LENGUAJES UTILIZADOS POR LOS MICROCONTROLADORES.

Los microcontroladores se usan fundamentalmente tres lenguajes:


Lenguaje Ensamblador, de bajo nivel.
Lenguaje C, de alto nivel.
Lenguaje BASIC, de alto nivel.

El lenguaje Ensamblador se dice que es de bajo nivel porque sus


instrucciones son exactamente las que el procesador sabe interpretar y
ejecutar. En realidad, el computador digital slo acepta instrucciones en
cdigo binario y el Ensamblador facilita su escritura al programador
permitiendo expresarlas mediante nemnicos, que con tres o cuatro letras
significativas expresan, en ingls, la operacin que conlleva la
instruccin. Por ejemplo una instruccin que mueve un dato de un sitio
(A) a otro (B), en Ensamblador se escribe MOV A,B.
El problema surge en el Ensamblador por la poca potencia de las
instrucciones que es capaz de ejecutar el procesador. Normalmente los
correspondientes a los microcontroladores de 8 bits, que usaremos, saben
sumar, restar, hacer operaciones lgicas AND, OR, XOR, saben rotar un
dato de 8 bits, moverlo de un sitio a otro y muy poquito ms. Si deseamos
hacer una multiplicacin hay que confeccionar un programa que para
conseguirlo repita las sumas las veces necesarias. Es un lenguaje de
bajo nivel. El programa Ensamblador lo nico que hace es traducir los
nemnicos con los que se escriben las instrucciones a cdigo binario para
que el procesador sea capaz de interpretarlas y ejecutarlas.
Desarrollar
programas
en
lenguaje
Ensamblador
exige
un
conocimiento profundo de la arquitectura interna del procesador lo que
DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 8

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

supone una base muy slida de conocimientos informticos y electrnicos,


y su nivel va mucho ms all de este curso.
Los lenguajes de alto nivel tienen instrucciones ms potentes:
saben multiplicar, sacar la raz cuadrada y realizar funciones y
operaciones mucho ms complicadas que las que pueden hacer las
instrucciones de la mquina. Pero como la mquina es la misma, la
realizacin de esas instrucciones se tiene que hacer con programas de
instrucciones elementales. Cada instruccin de alto nivel se convierte en
un pequeo programa de instrucciones de bajo nivel. Por eso para que el
procesador pueda ejecutar las instrucciones de un
lenguaje de alto nivel precisa otro programa que
las descomponga en las instrucciones de bajo nivel
correspondientes. A estos programas se llama
compiladores. Los compiladores se encargan de
traducir
un
programa
confeccionado
con
instrucciones de alto nivel a
otro
equivalente
con
instrucciones de bajo nivel.
Hay una variante de estos
programas que reciben el nombre de intrpretes que
realizan dicha traduccin pero instruccin por
instruccin, o sea, traducen una instruccin de alto
nivel en las correspondientes de bajo nivel que
ejecuta el procesador y a continuacin pasan a la
siguiente. Los compiladores traducen el programa
completo
El lenguaje C
su manejo requiere
aplicacin que nos
arquitectura interna

es de tipo profesional, muy completo y potente, pero


un slida base en informtica, y por supuesto, en la
ocupa ser necesario un conocimiento a fondo de la
del microcontrolador.

El lenguaje BASIC tiene potentes instrucciones que se escriben


igual que se denominan en ingls y su manejo no requiere conocimientos
de arquitectura de procesadores, de electrnica y casi tampoco de
informtica; es para todos. A ttulo de ejemplo el siguiente programa
calcula el rea de un crculo
10
20
30
40

INPUT R
LET S=3.14*R*R
PRINT S
END

Nos pide el valor del radio


Calcula el rea
Nos muestra el valor del rea calculada
Fin del programa

4.2. LOS MODULOS BASIC STAMP DE PARALLAX


La empresa americana Parallax diseo y comercializ en 1992 el
primer mdulo BASIC-Stamp cuya originalidad y utilidad ha revolucionado
el mundo del diseo de la electrnica programable basada en los
microcontroladores.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 9

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Su gran aportacin consiste en ofrecer un mdulo con todo el


hardware resuelto y listo para acoplarle los perifricos a controlar, y un
software accesible para cualquier persona al estar basado en un lenguaje
BASIC, denominado PBASIC, que une la sencillez del BASIC y su
adaptacin al microcontrolador que emplea. Estos dos fabulosos
ingredientes los mezcla con una poltica comercial de completa
informacin de sus productos y una gran generosidad en la creacin y
libre
disposicin
de
manuales,
programas,
aplicaciones,
cursos,
asistencia tcnica y una red de distribuidores esparcida por todo el
mundo.
Basta pinchar o insertar
el mdulo BASIC Stamp en la
tarjeta
de
aplicacin
que
contiene los perifricos a
controlar.
Se
conecta
despus al PC para editar el
programa y volcarlo al PIC
para poner en marcha el
sistema.
Luego
se
puede
modificar
el
programa
directamente
sobre
el
prototipo para llevar a cabo
cualquier cambio o mejora.
El modo de funcionamiento de estos mdulos est basado en
depositar el programa, confeccionado en PBASIC y editado en el PC, en
una memoria EEPROM, que puede leerse y borrarse para volver a
escribirse un milln de veces. Despus, en el interior del mdulo y de

forma automtica, se va pasando el programa instruccin a instruccin a


un microcontrolador PIC de Microchip en cuya memoria est grabado un
programa Intrprete que traduce cada instruccin PBASIC en las
instrucciones mquina correspondientes y procede a su ejecucin. Los
DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 10

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

dos
elementos
principales
del
mdulo
BASIC
Stamp
son
el
microcontrolador grabado con el Intrprete PBASIC y la EEPROM que
contiene el programa editado en el PC, pero tambin existen otros
elementos auxiliares.
La
memoria
EEPROM que utiliza
el
mdulo
OEMBS2_IC
es
la
denominada
24LC16B, en la que
se
almacena
el
programa en PBASIC
recibido desde el PC.
Las
caractersticas
ms importantes de
esta memoria son:
Capacidad: 2KB
Ciclos de escritura/lectura: 1 milln
Velocidad de escritura: 10 ms
Frecuencia de funcionamiento: 400 KHz
Tensin de funcionamiento: de 2,5 a 5,5 VDC
Las memorias EEPROM pueden ser ledas y escritas. No son
voltiles, es decir, la informacin almacenada se mantiene an despus
de desconectar la alimentacin.

4.3. EDITOR PBASIC


El editor PBASIC es el programa donde escribimos el conjunto de
instrucciones para programar el mdulo Basic Stamp. Es similar en
apariencia a cualquier editor de texto del sistema operativo Windows. El
editor contiene una serie de herramientas especficas como el
identificador del mdulo Basic Stamp, corrector ortogrfico de sintaxis,
mapa de memoria y ventana del depurador.

Editor PBASIC Stamp

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 11

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

El editor tiene la capacidad de


abrir 16 ventanas simultneamente. Las
operaciones de copiar, pegar y cortar
funcionan de la misma forma que en el
sistema operativo Windows.
Ventana del identificador de
modulo y puerto al que est
conectado

Mapa de la memoria EEPROM

4.4. OPERACIONES ARITMTICAS Y LGICAS EN PBASIC


El lenguaje de programacin PBASIC fue creado especficamente
para programar los mdulos BS2 de Parallax, aunque es un lenguaje muy
parecido al BASIC es algo menos potente y tiene ciertas singularidades
que habr que tener en cuenta en la programacin.
PBASIC efecta las operaciones matemticas en el orden que se
escriben de izquierda a derecha, sin seguir la prioridad adoptada
universalmente en matemticas. En este sentido, la suma y la resta no
suponen problema alguno, pero cuando utilizamos la multiplicacin y la
divisin podemos encontrarnos resultados no deseados si consideramos
las singularidades de este lenguaje de programacin.
Consideremos, como ejemplo, la expresin:

W 1 45 56 * 4 / 2
PBASIC resolvera la expresin de la siguiente forma:

45 56 101
101 * 4 404
404 / 2 202

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 12

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

A fin de resolver el inconveniente anterior se pueden utilizar


parntesis (un mximo de 8 por expresin) para que la operacin se
efecte correctamente:

W 1 45 56 * 4 / 2

En este caso, el resultado sera:

56 * 4 224
224 / 2 112
112 45 157
Otro condicionante importante que se ha de tener en cuenta, es que
PASIC no admite nmeros fraccionarios por lo que, a ttulo de ejemplo,
3,1459 se debe expresar como 22/7.
En PBASIC todas las operaciones matemticas se realizan con
cantidades positivas y con nmeros enteros de 0 a 65535 (216 dgitos
binarios). Si se utilizan cantidades negativas, en ese caso, los valores
mximos y mnimos estaran comprendidos entre +32767 y -32767
En la siguiente tabla se indican los smbolos utilizados para las
diversas operaciones posibles en PBASIC
SMBOLO
OPERACIN
Suma
+
Resta
Multiplicacin
*
Multiplicacin de doble precisin (devuelve mas de 16 bits)
**
Divisin
/
Divisin (devuelve el resto)
//
Limita el valor ms bajo
MIN
Limita el valor ms alto
MAX
Retorna el dgito especificado de un nmero
DIGIT
Desplazamiento de bits a la izquierda
<<
Desplazamiento de bits a la derecha
>>
Inverso de los bits del nmero especificado
REV
Operador lgico AND
&
Operador lgico OR
|
Operador lgico XOR
^

4.4.1. PROGRAMAS DE EJEMPLO CON OPERACIONES MATEMTICAS


Antes de abordar los programas de ejemplo explicaremos la
instruccin DEBUG:
Sintaxis: DEBUG Dato1 {, Dato2}
Muestra los datos especificados sobre la pantalla del PC. El texto o
nmeros pueden estar en varios formatos (Binario, Decimal, Hexadecimal
o ASCIL) y se usa como forma de depuracin de programa.
Los Datos pueden ser variable/constante/expresin que especifica
la informacin a mostrar. Los datos pueden ser caracteres ASCIl (texto o

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 13

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

caracteres
de
control),
nmeros
decimales
(0-65535),
hexadecimales
($0000-$FFFF)
o
nmeros
binarios
%1111111111111111).
Ejemplo:
W1 = 68
DEBUG W1
Muestra la letra D, cuyo cdigo ASCIL es 68
DEBUG ?W1
Muestra el valor de la variable W1=68
DEBUG Fin
Muestra el mensaje Fin

nmeros
(hasta

Ejemplos con la operacin suma (+).


Suma variables y constantes, devuelve un resultado de 16 bits,
trabaja con cantidades enteras en un rango de 0 a 65535, si el resultado
de la suma es mayor de 65535, se produce un desbordamiento y el
resultado ser la diferencia del desborde .

W1= 34
W2= 12
W3= W1 + W2
DEBUG ?W3
El resultado mostrado ser W3 = 46

W1= 65535
W2= 12
W3= W1 + W2
DEBUG ?W3
El resultado mostrado ser W3 = 11 pues se ha desbordado el valor de 65535.

Ejemplos con la operacin resta (-).


Resta variables y constantes, devuelve el resultado de 16 bit,
trabaja con cantidades enteras en un rango 0 -65535, si se desea
considerar el signo se debe anteponer la expresin SDEC.
W1= 199
W2= 100
W3= W1 + W2
W4= W2 W1
DEBUG ?W3
DEBUG ?W4
El resultado mostrado ser: W3 = 299 W4=65437

W1= 199
W2= 100
W3= W1 + W2
W4= W2 W1
DEBUG SDEC ?W3
DEBUG SDEC ?W4
El resultado mostrado ser: W3 = 299 W4= -99

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 14

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Ejemplo con la operacin divisin (/) y resto (//)


Divide variables y constantes devolviendo la parte entera de la
divisin con el resultado de 16 bits. Trabaja con cantidades enteras en un
rango de 0 a 65535, debiendo ser las cantidades positivas.

W1= 50
W2= 3
W3= W1 / W2
W4= W1 //W2
DEBUG ?W3
DEBUG ?W4
El resultado mostrado ser: W3 = 16 W4=2

Ejemplos con la operacin multiplicacin (*)


Multiplica variables y constantes, devolviendo resultados de hasta
16 bits. Permite utilizar cantidades enteras en un rango de 0 a 65535, las
cantidades pueden ser positivas y negativas. Si el resultado excede de
65535, el exceso se pierde, la multiplicacin mantiene la regla de los
signos. Si se trabaja con cantidades negativas los resultados mximos y
mnimos tendran un rango desde -32767 a +32767
W1= 175
W2= 2
W3= 400
W4= -5
W5= W1 * W2
W6= W1 * W3
W7= W3 * W4
DEBUG ?W5
DEBUG ?W6
DEBUG SDEC?W7
El resultado mostrado ser: W5 = 350, W6=4464 (175*400=70000; 70000-65536=4464) y W7=-2000

Ejemplo de multiplicacin doble (**)


Como se ha indicado el valor de una multiplicacin no puede
exceder del valor 65535, como valor decimal mximo. La multiplicacin
doble nos permite solucionar este inconveniente pudiendo calcular valores
de hasta 232 bits ( de 0 a 4.292.967.295). Para realizar esta operacin
hay que tener en cuenta, que la multiplicacin doble realmente calcula los
16 bits superiores de los 32 bits posibles, los 16 bits inferiores se
obtienen con la multiplicacin normal. En otras palabras, la multiplicacin
doble nos dice cuantas veces se desbordaron los 16 bits superiores.
W1= 2560
W2= 27
W3= W1 * W2
DEBUG DEC5 ?W3, CR
W4= W1 ** W2
DEBUG DEC5 ?W4
El resultado mostrado ser: W3 = 03584 W4=00001

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 15

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

En el programa anterior DEC5 indica que muestre el resultado


decimal en formato de 5 dgitos, en tanto que, CR implica un retorno de
carro para que el resultado de W4 lo muestre en un rengln distinto que
W3.
Ejemplo de multiplicacin de fracciones de 8 bits (de 0 a 256) (*/)
Qu sucede si queremos multiplicar alguna fraccin por un nmero
entero, pues PBASIC slo maneja cantidades enteras, aunque es posible
manejar fracciones para obtener resultados enteros. Tomemos como
ejemplo que deseamos multiplicar 100 *3,5 cuyo resultado es 350 y, por
tanto, entero.
Sabemos que 3,5 es el resultado de la divisin de dos enteros
(7/2). Qu resultado se obtiene con el siguiente programa?
W1= 100 * (7/2)
DEBUG DEC5 ?W1

El resultado obtenido sera 300 pues


que multiplicado por 100, da 00300

el resultado de dividir 7/2=3,

Para resolver el problema el programa debiera estar escrito del


siguiente modo:
PBASIC ejecuta: 100*7 = 700; 700/3=350, recuerde que se utiliza la
regla de las operaciones aritmticas de izquierda a derecha
W1= 100 * 7/2
DEBUG DEC5 ?W1
El resultado mostrado ser: W1 = 00350

4.5. ORGANIZACIN DE LA MEMORIA RAM DE DATOS DEL BS2


La siguiente tabla muestra los nombres de los registros de entrada,
salida y direccionamiento del puerto del BS2. El lenguaje PBASIC reserva
las primeras posiciones de la memoria de datos del procesador. Las tres
primeras palabras se reservan para pines de entrada INS, pines de salida
OUTS y bits de direccionamiento de los pines DIR, que si se les carga con
0 (cero) asignan el pin correspondiente como entrada y, si se cargan con
1, como salida. Las 13 siguientes palabras de (W0-W12) que pueden
utilizarse en tamao Byte (B0-B25) estn disponibles para guardar
variables y datos del usuario en los programas.
El mdulo BS2-IC tiene 16 pines de entrada y salida disponibles
para el usuario en donde se pueden colocar los perifricos a controlar.
Para configurar a los 16 pines como salida hay que escribir en el
programa: DIRS=%1111111111111111

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 16

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

4.6. INSTRUCCIONES PBASIC


Se ofrece seguidamente un breve resumen de las instrucciones
PBASIC para los lenguajes del interprete BS2-IC. Algunas de ellas se
analizarn ms en profundidad a medida que se monten las distintas
prcticas.
4.6.1. INSTRUCCIONES DE ENTRADA/SALIDA DIGITALES

4.6.2. INSTRUCCIONES PARA BUCLES REPETITIVOS

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 17

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

4.6.3. INSTRUCCIONES DE SALTO

4.6.4 .INSTRUCCIONES NUMRICAS

4.6.5. INSTRUCCIONES DE E/S SERIE ASNCRONA

4.6.6. INSTRUCCIONES DE E/S SERIE SNCRONA

4.6.7. INSTRUCCIONES DE E/S ANALGICA

4.6.8. INSTRUCCIONES DE CONTROL DE TIEMPO

4.6.9. INSTRUCCIONES DE CONTROL DE SONIDO

4.6.10. INSTRUCCIONES CONTROL DE ENERGA

4.6.11. INSTRUCCIONES DE ACCESO A LA EEPROM

4.6.12. INSTRUCCIONES DE DEPURACIN DEL PROGRAMA

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 18

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

5. PRACTICA 1: CONTROLANDO UN LED Y UN ZUMBADOR.


En esta experiencia se trata de encender durante 2 segundos el
diodo LED conectado en la patilla P0, mientras durante ese tiempo el
zumbador est en silencio. Luego, durante 3 segundos, el zumbador
produce un pitido mientras el LED permanece apagado. Adems el
programa debe visualizar en la pantalla del depurador el nombre del
ejercicio LUZ Y SONIDO, as como el mensaje de ILUMINA mientras el
LED est encendido y el mensaje PITA cuando suena el zumbador. El
programa propuesto es:
DEBUG

LUZ Y SONIDO, CR

HIGH 0
LOW 15
PAUSE 2000
DEBUG SUENA, CR

Se muestra en la pantalla del PC el


texto LUZ y SONIDO
Se muestra en la pantalla del PC el
mensaje ILUMINA
Pone a uno lgico la patita 0
Pone a cero lgico el pin 15
Se produce una pausa de 2 seg.
Se muestra mensaje en el PC

LOW 0
HIGH 15
PAUSE 3000
GOTO INICIO

Pone a cero lgico el pin 0


Pone a uno lgico el pin 1
Se produce una pausa de 3 seg.
Salta a la etiqueta INICIO

INICIO: DEBUG ILUMINA, CR

Una vez editado el programa conecte el PC al mdulo OEM BS2-IC que


estar conexionado con los cables a la fuente y a los perifricos y
conecte la energa al Universal Trainer. Ejecute el programa y si todo
sale bien se enciende 2 segundos el LED y luego pita durante 3 segundos
el zumbador. Adems en la pantalla del depurador aparece el mensaje
ILUMINA cuando est encendido el LED y el mensaje PITA cuando el
zumbador suena.
ESQUEMA ELCRICO Y DE CONEXIONADO

NOTA: Las resistencias del LED y ZUMBADOR estn conectadas


segn se indica en el entrenador Universal Trainer

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 19

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

6. VARIABLES EN PBASIC.
6.1. VARIABLES DE NOMBRES FIJOS EN PBASIC.
Las variables son los nombres dados a los lugares donde se
guardan los datos en forma temporal. Una variable es un smbolo que
contiene un cierto valor. Ese valor puede ser cambiado bajo el control del
programa y, por lo tanto, el valor de las variables puede cambiar, pero su
nombre no.
PBASIC puede utilizar nombres de variables predefinidas, como las
que se exponen en la tabla de memoria de apartado 4.5, o variables con
nombres definidos por el usuario.
Las variables fijas tienen su orden de jerarqua (W0 es una variable
tipo WORD de 16 BITS, que contiene a su vez a dos variables tipo BYTE
de 8 Bits: B0 y B1). Por ejemplo suponga que la variable W0 contiene el
valor binario (%0011101011101001), entonces B0 contiene la parte baja
de 8 Bits y B1 la parte alta de los 8 Bits.
W0 = %0011101011101001
B0 = %11101001
B1 = %00111010
Las variables predefinidas de fbrica no necesitan ser declaradas
PBASIC las reconoce. Pero puede ser algo confuso sobre todo cuando se
tiene un programa muy extenso.
Afortunadamente PBASIC da la libertad de que usted defina sus
propias variables con el nombre ms apropiado a la accin a ejecutar. En
otras
palabras
usted
puede
personalizar
los
nombres
ejemplo:
conteo_general = 56, en vez de B1 = 56, es mucho ms fcil relacionar un
nombre asignado que un nombre fijo como B1.
En PBASIC, los nombres de las variables pueden tener una
longitud de hasta 32 caracteres. La longitud del nombre no tiene
ninguna influencia en la velocidad de ejecucin del programa. Por
ejemplo, la instruccin: x = 38, tendr la misma velocidad de ejecucin
que: este_es_un_nombre_muy_largo = 38.
De cualquier manera, en lugar de usar las variables predefinidas es
recomendable utilizar un nombre especifico para cada variable de acuerdo
a algo relacionado con la aplicacin utilizada.

6.2. DECLARACIN DE VARIABLES DEL BS2


La declaracin de variables consiste en fijarle un nombre de menos
de 32 caracteres y un tamao en Bits. Las declaraciones de variables hay
que realizarlas al principio del programa o antes de utilizarlas. Para
declarar variables se utiliza el comando VAR. La sintaxis es la siguiente:
nombre_variable VAR tamao
Donde:

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 20

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Nombre_variable es el nombre que usted le asignara a la variable


no debe ser mayor de 32 caracteres, puede contener una secuencia
de letras combinadas con nmeros tambin acepta el guin largo
_. En PBASIC, los nombre_variable no son sensible a maysculas
y minsculas.
Tamao establece el nmero de Bits
reservados. PBASIC da 4
tipos de tamao:
Tipo
BIT
NIB
BYTE
WORD

1 bit
4 bits
8 bits
16 bits

21
24
28
216

Elementos

Valores
decimales
posibles

2
16
256
65536

(0-1)
(0-15)
(0-255)
(0-65535)

El espacio para cada variable es automticamente reservado en la


memoria del BasicStamp.
El tamao de las variables a utilizar depende de la cantidad de
variaciones que necesitemos, ejemplo de algunos casos utilizando
nuestras propias definiciones con la sentencia VAR:
hormiga VAR bit
gato VAR nib
perro VAR byte
elefante VAR word

Puede tomar 2 elementos 0 y 1


Puede tomar 16 elementos desde 0 a 15
Puede tomar 256 elementos desde 0 a 255
Puede tomar 65,536 elementos desde 0 a 65.535

Si por ejemplo necesitamos leer una entrada del microcontrolador


necesitamos una variable tipo bit, pues la entrada slo tiene dos valores
posible 0 o 1 lgico. Si necesitamos realizar un conteo del 1 al 10 es
suficiente con una de tipo nib, pues esta puede contener 16 elementos.
En este caso, se podra utilizar una de tipo byte, pero la estaramos
infrautilizando.
Si queremos almacenar un conteo de 10.000 necesitamos una tipo
word, que puede almacenar hasta 65.536 elementos, la tipo byte en este
caso sera menos que insuficiente, pues slo puede contener 256
elementos.
Si queremos almacenar un conteo de 10.000 necesitamos una tipo word, que puede almacenar
hasta 65.536 elementos, la tipo byte en este caso sera menos que insuficiente, pues slo puede
contener 256 elementos

Practica de control
Se propone al lector la siguiente prctica:
Se pretende controlar dos LEDs conectados a los pins 0 y 1 y
un zumbador conectado a la patilla 3 mediante un interruptor conectado al
pin 5, de forma que se cumpla la siguiente secuencia:
Si el pin 5 est a nivel bajo luce el diodo LED1 conectado en el pin
0 durante 100 ms estando los pins 1 y 3 a cero (LED2 y zumbador
apagados).
DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 21

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Pasados los 100 ms se apaga el LED1 (pin 0) y se activan el


zumbador y el LED 2 durante 75 ms.
Tras los 75 ms se vuelve a repetir el ciclo ininterrumpidamente
hasta que la entrada 5 se ponga a 1 lgico, en cuyo caso, se apagar
todo.
Al volver a cero el pin 5 se vuelve a repetir la secuencia indicada

6.3. DECLARACIN DE ARRAYS DE VARIABLES (Matrices)


Las matrices de variables se pueden crear de forma similar a como
se crean las variables sencillas.

nombre_variable

VAR tamao (n)

Donde:
nombre_variable y tamao es el mismo de las declaraciones de
variables. El nuevo elemento es (n), y le dice PBASIC cuanto espacio
reservar para la misma variable del tamao especificado.
Algunos ejemplos de creacin de matrices son los siguientes:
automovil VAR byte(10)

Crea 10 variables tipo byte

La primera ubicacin dentro de al matriz es el elemento cero. En la


matriz automvil anterior los elementos estn numerados automovil(0) a
automovil(9) conteniendo 10 elementos en total. Dada la forma en que
las matrices estn localizadas en memoria hay lmites de tamao para
cada tipo.

Tamao
BIT
NIB
BYTE
WORD

N mx. de elementos
208
52
26
13

Los arrays son muy convenientes para recoleccin de datos, en


vista de que el nmero de elementos (n) puede ser sustituido por otra
variable. Vea el siguiente ejemplo y la salida que genera:
FRUTAS VAR Byte(5)
INDICE VAR Nib
FRUTAS(1) = 42
FRUTAS(2) = 121
FRUTAS(3) = 214
FRUTAS(4) = 254
FOR INDICE = 0 TO 4
DEBUG ?FRUTAS(INDICE),CR
NEXT
STOP

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 22

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

6.4. MODIFICADORES (ALIAS) DE LAS VARIABLES.


VAR puede ser usado para crear un alias para otra variable. Esto
es muy til para acceder al interior de una variable.
Dog
Fido

VAR byte
VAR Dog

Dog es una variable del tipo Byte


Fido es otro nombre de Dog

En este ejemplo, Fido es el alias de la variable Dog. Cualquier valor


almacenado en dog puede ser mostrado por Fido y viceversa. Ambos
nombres se refieren a lo mismo.
Con los alias podemos acceder en cualquier momento al interior de
una variable sin causar ninguna alteracin a la variable original. En la
siguiente tabla se puede ver la jerarqua de los modificadores o alias de
las variables.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 23

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

' Ejemplo de definicin de utilizacin de variables


cuerpo_humano VAR Word
cabeza
VAR cuerpo_humano.HIGHBYTE
extremidades VAR cuerpo_humano.BYTE0
ojos
VAR cabeza.BIT0
nariz
VAR cabeza.BIT1
oido
VAR cabeza.BIT2
boca
VAR cabeza.BIT3
pie_izquierdo VAR cuerpo_humano.LOWNIB
pie_derecho VAR cuerpo_humano.HIGHNIB
cabello
VAR cuerpo_humano.LOWBIT
dedo
VAR cuerpo_humano.HIGHBIT
cuerpo_humano=%1101101010011000
DEBUG BIN16
DEBUG BIN16
DEBUG BIN16
DEBUG BIN16
DEBUG BIN16
DEBUG BIN16
DEBUG BIN16
DEBUG BIN16

?cuerpo_humano, CR
?cabeza, CR
?extremidades, CR
?ojos, CR
?nariz, CR
?oido, CR
?boca, CR
?pie_izquierdo, CR

La salida que produce el programa anterior se puede apreciar en la


figura

7. CONSTANTES EN PBASIC
7.1 DECLARACIN DE CONSTANTES EN PBASIC
Las llamadas constantes pueden ser creadas de manera similar a
las variables. A veces, puede ser ms conveniente utilizar un nombre de
constante en lugar de un nmero.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 24

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Son creadas usando la palabra clave CON. Si el nmero necesita


ser cambiado, nicamente habra que cambiarlo en un parte del programa
donde se define la constante. No pueden guardarse datos variables dentro
de una constante.
La sintaxis es la siguiente:
nombre_constante CON valor_numerico

Donde:
nombre_constante es el nombre que usted le asignara a la variable
no debe ser mayor de 32 caracteres, puede contener una secuencia
de letras combinadas con nmeros tambin acepta el guin largo
_. En PBASIC, los nombre_constante no son sensibles a
maysculas y minsculas.
valor_numerico es un valor de (0-65535).

PBASIC permite definir constantes numricas en tres bases:


decimal, binaria y hexadecimal. Valores binarios son definidos usando el
prefijo % y valores hexadecimales usando el prefijo $. Los valores
decimales se toman por defecto y no requieren prefijo.
Ejemplo:
100
valor decimal 100
%100
valor binario para el decimal 4
$100
valor hexadecimal para el decimal 256.
A
ASCII equivalente a decimal (65).
Algunos ejemplos son:
bateria CON 12
continentes CON 5
libro CON $E7
encendido CON %1101
detener CON s
Es posible calcular expresiones a travs de constantes previamente
definidas:
temperatura con 37
grados_c con (temperatura*5)/9
grados_f con (grados_c 32)

8. PRACTICA2: INTERMITENCIA DE UN DIODO LED.


En esta prctica se persigue hacer parpadear un diodo LED en unos
intervalos previamente definidos mediante la declaracin de constantes.
El pin donde se conecta el LED y el intervalo se definen previamente
mediante la declaracin de
las constantes pinLED e Intervalo. As
mismo, y a fin de hacer una secuencia repetitiva, se introduce la etiqueta
COMIENZO lo que provoca un salto incondicional desde la lnea de salto
GOTO

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 25

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

El programa propuesto es el siguiente:

INTERMITENCIA DE UN DIODO LED


Declaracin de constantes
pinLED CON 0
Intervalo
CON 500

Establecemos a la variable pinLED la constante 0


Retardo en milisegundos entre estados del LED

COMIENZO:
HIGH
pinLED
PAUSE
Intervalo
LOW
pinLED
PAUSE
Intervalo
GOTO COMIENZO

Establecemos una etiqueta


Enciende el LED conectado al pin0
Tiempo que el LED permanece encendido
Apaga el LED conectado al pin0
Tiempo que el LED permanece apagado
Salto a la etiqueta COMIENZO

ESQUEMA ELCTRICO Y DE CONEXIONADO


DE LA PRCTICA.

9. DIRECCIONAMIENTO DIGITAL DE ENTRADAS SALIDAS


CONSIDERANDO EL MAPA DE MEMORIA.
Si observamos el mapa de memoria del apartado 4.5. podemos apreciar que
podemos trabajar con bits, nibbles, bytes y words.
De este modo podemos configurar los pines como entradas o como salidas y
despus asignamos un 0 o un 1 lgico a las direcciones previamente configuradas:
Ejemplo:
DIR0=1 El pin 0 bit 0- se configura como salida
DIR1=0 La pin 1 bit 1 - se configura como entrada
DIRB=%0111
En el nibble B se configuran los bits 4,5,6 como salidas y el
bit 7 como entrada
OUT0= 1

El pin 0 bit 0- se pone a 1


EL pin 1 bit 1- queda a cero al no indicarle que se active

OUT4 =1
OUT5 =0
OUT6 =1

El pin 4 bit 4- se pone a 1


El pin 4 bit 4- se pone a 0
El pin 4 bit 4- se pone a 1

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 26

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

10. PRACTICA 3: CONFIGURACIN DE ENTRADAS-SALIDAS Y


SALTO CONDICIONAL.
En esta prctica configuraremos diferentes pines del Basic Stamp
como E/S y trabajaremos con etiquetas y saltos condicionales.
La prctica dispone de 6 salidas y controla 5 diodos LED
conectados a los pines 0,1,4,5 y 6, y un zumbador conectado al PIN 15.
Como entrada se ha configurado el PIN 7.
Para la configuracin de las salidas de los pines 0 y 1 se ha
utilizado el direccionamiento de bit mediante la instruccin DIR. Por otro
lado se ha configurado el nibble B (vase mapa de memoria), donde el bit
7 ser una entrada y los bits 4,5 y 6 sern salidas.
'El presente programa configura bits y nibbles como E/S que pone a nivel alto o bajo
'en funcin del estado del bit 7, haciendo uso de un salto condicional
INICIO:
DIR0=1 'Configuramos el pin 0 -bit 0 - como salida
DIR1=1 'Configuramos el pin 1 -bit 1 - como salida
OUT0=1 'Ponemos el pin 0 -bit 0- a nivel alto
OUT1=0 Ponemos el pin 1 bit 1- a nivel bajo
LOW 15
'El pin 15 se pone a cero
DIRB=%0111 'Configuramos el nibble B -bits 4,5,6 como salidas y el bit 7 como entrada
OUT4=1
'Ponemos el pin 4 -bit 4- a nivel alto
OUT5=0
'Ponemos el pin 5 -bit 5- a nivel bajo
OUT6=1
'Ponemos el pin 6 -bit 6- a nivel alto
DEBUG ?IN7 'Mostramos en pantalla el estado del pin 7
IF IN7=1 THEN salida 'Salto condicional. en el caso que el bit 7 est a 1 saltar a la etiqueta SALIDA
GOTO inicio
'Salto incondicional. Saltar a la posicin de la etiqueta INICIO
salida:
'Etiqueta salida
HIGH 15
'Se pone a 1 la salida 15
IF IN7=0 THEN inicio 'Si el pin 7 -bit 7- esta a cero saltar a la etiqueta inicio si no seguir en la sig linea
OUT4=0
'Ponemos el pin 4 -bit 4- a nivel bajo
OUT5=1
'Ponemos el pin 5 -bit 5- a nivel alto
OUT6=0
'Ponemos el pin 6 -bit 6- a nivel bajo
DEBUG ?IN7
'Mostramos en pantalla el estado del pin 7
GOTO salida
'Salto incondicional. Saltar a la posicin de la etiqueta SALIDA

DPTO. DE TECNOLOGA
J.Garrigs

ESQUEMA DE CONEXIONADO

INTERRUPTOR

I.E.S. ANDRS DE VANDELVIRA

P6

DIODOS LED
P5
P4
P1

Pag. 27

GND
+5V

El funcionamiento del montaje es el


siguiente:
Si el bit7 est en 0 el circuito se
encuentra en el estado:
o P0=1
o P1=0
o P4=1
o P5=0
o P6=1
Si el bit 7 est a 1 el estadio del
circuito ser:
o P0=1
o P1=0
o P4=0
o P5=1
o P6=0

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

11. PRACTICA 4: PROGRAMACION DE ECUACIONES LGICAS


CON OPERADORES BOLEANOS.
Una mquina de refrescos tiene y tres pulsadores a, n, y l (a para el agua, n para la
naranja y l para el limn), y tres depsitos con agua, naranja y limn.

Cada uno de los depsitos est controlado por una electrovlvula: Ea para el depsito
del agua, En para el depsito de la naranja y El para el depsito del limn.

Se desea disear el automatismo de control de la mquina de forma que se cumplan


las siguientes condiciones:
a. La mquina puede dar agua, agua con limn y agua con naranja, pero nunca naranja o
limn solos o mezclados.
b. La electrovlvula de cada uno de los depsitos se activar por medio de su
correspondiente pulsador y siempre que se cumplan las condiciones establecidas en el
problema.
c.

La desconexin de las electrovlvulas se producir cuando el vaso de refresco se haya


llenado, al actuar, debido a su peso, sobre un pulsador cuando el vaso este lleno.

SOLUCIN DEL PROBLEMA


AGUA

NARANJA

Ea

LIMN

En

El

Botonera
a

Vaso
Pulsador NC

Fase inicial: Designacin de las variables de entradas salidas.


En este ejemplo, la cosa es bastante evidente, siendo las variables de entrada los
pulsadores a, n y l, y las variables de las salidas las electrovlvulas de cada uno de los
depsitos. Si bien el pulsador NC es una variable de entrada, a efectos de resolver el circuito
no lo consideraremos, pues bastar conectarlo en serie con la alimentacin elctrica para
cortar la corriente al circuito cuando el peso del vaso lleno acte sobre l, y de esta forma
dejar el automatismo en estado de reposo.
DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 28

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

1 Fase. Tabla de verdad del circuito

Variables de entrada

Variables de salida

Ea

En

El

2 Fase. Obtencin de ecuaciones.


Obtendremos una ecuacin por cada una de las variables de salida, en nuestro caso
Ea, En y El.
Ecuacin de la electrovlvula del agua:
Si observamos la tabla de verdad, la electrovlvula del agua se activa en tres estados
distintos, en los que las variables de entrada toman los siguientes valores:

a=1, n=0 y l=0, que se expresa como: a * n * l

a=1, n=0 y l=1, que se expresa como: a * n * l

a=1, n=1 y l=0, que se expresa como: a * n * l


La ecuacin de salida se obtiene como suma de cada uno de los trminos obtenidos

para cada estado en que la variable de salida est activa, resultando finalmente:

Ea a * n * l a * n * l a * n * l
Ecuacin de la electrovlvula de la naranja:
Como se aprecia en la tabla de la verdad, la electrovlvula de la naranja slo se activa
en un estado que se corresponde con los siguientes valores de las variables de entrada:

a=1, n=1 y l=0

Por lo tanto, la ecuacin de la electrovlvula de la naranja vendr dada por:

En a * n * l
Ecuacin de la electrovlvula del limn:
De forma similar al caso anterior, tal y como se aprecia en la tabla de la verdad, la
electrovlvula del limn slo se activa en un estado que se corresponde con los siguientes
valores de las variables de entrada:

a=1, n=0 y l=1

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 29

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Por lo tanto, la ecuacin de la electrovlvula del limn vendr dada por:

En a * n * l
3 Fase. Simplificacin de ecuaciones.
En este caso las ecuaciones de las electrovlvulas de la naranja y limn no pueden
simplificarse, puesto que slo tienen un sumando.

Con respecto a la ecuacin de la

electrovlvula del agua, considerando la propiedad del lgebra de Boole que indica que A+A=A
obtenemos:

Ea a * n * l a * n * l a * n * l

Ea a * n * l a * n * l a * n * l a * n * l
Sacando factor comn del primer y segundo sumando y del tercero y cuarto
respectivamente, y simplificando tenemos:

Ea a * n * ( l l ) a * l * ( n n )
Ea a * n a * l
Ea a * ( n l )
Si nos hubiramos decantado por la simplificacin a travs de los mapas de Karnaugh
el proceso sera el siguiente:
a) Dibujamos un mapa con las tres variables de entrada:

a
b) Dibujamos un uno en cada uno de los cuadros que se corresponden con los tres
sumandos

de

la

ecuacin

de

partida

de

la

electrovlvula

del

agua:

Ea a * n * l a * n * l a * n * l

c) Hacemos lazos y simplificamos:


Lazo A: a * l

Lazo B: a * n

Ea a * l a * n

DPTO. DE TECNOLOGA
J.Garrigs

Lazo A

I.E.S. ANDRS DE VANDELVIRA

Lazo B

Pag. 30

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

d) Simplificamos la ecuacin sacando factor comn de a:

Ea a * ( n l )
Sea cual sea el mtodo utilizado, llegamos a la conclusin que las ecuaciones
simplificadas de nuestro problema son:

Ea a * ( n l )
En a * n * l
El a * n * l
4 Fase. Representacin del circuito elctrico y de puertas lgicas:
Ser este el momento, que en este caso particular, elegiremos para colocar el pulsador
del vaso.
Circuito elctrico:
Pulsador del vaso
a

Ea

En

El

'**** AUTOMATISMO DE LA MQUINA DE REFRESCOS ****


'LO PRIMERO ES DIRECCIONAR LOS PINES A UTILIZAR
DIR0=1 'Direccionamos el pin 0 como salida
DIR1=1 'Direccionamos el pin 1 como salida
DIR2=1 'Direccionamos el pin 2 como salida
DIR5=0 'Direccionamos el pin 5 como entrada
DIR6=0 'Direccionamos el pin 6 como entrada
DIR7=0 'Direccionamos el pin 7 como entrada
'ASIGNAMOS LAS VARIABLES DE LOS PULSADORES DE ENTRADA A LOS PINES 5, 6 Y 7
P_agua VAR IN5
'asignamos a la variable pulsador del agua el valor de la entrada 5 -pin 5
P_naranja VAR IN6 'asignamos a la variable pulsador de la naranja el valor de la entrada 6 -pin 6
P_limon VAR IN7
'asignamos a la variable pulsador del limn el valor de la entrada 7 -pin 7
'DEFINIMOS LAS NEGADAS DE LOS PULSADORES
P_agua_negada VAR Bit
P_naranja_negada VAR Bit
P_limon_negada VAR Bit
'ASIGNAMOS VARIABLES A LOS ESTADOS DE LAS PINES DE SALIDA
salida_Ea VAR OUT0 'Asignamos el estado del pin 0 a la variable salida_Ea
salida_En VAR OUT1 'Asignamos el estado del pin 1 a la variable salida_En
salida_El VAR OUT2 'Asignamos el estado del pin 2 a la variable salida_El
'DEFINIMONS LAS VARIABLES DE LAS ECUACIONES DE LAS ELECTROVLVULAS DE SALIDA
E_agua VAR Bit
'Definimos a la variable electrovlvula del agua valor de bit
E_naranja VAR Bit 'Definimos a la variable electrovlvula de la naranja valor de bit
E_limon VAR Bit
'Definimos a la variable electrovlvula del limn valor de bit

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 31

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA


INICIO:
' REALIZAMOS UNA OPERACIN XOR CON LAS VARIABLES DE LOS PULSADORES PARA OBTENER SUS
NEGADAS
P_agua_negada=P_agua^1
P_naranja_negada=P_naranja^1
P_limon_negada=P_limon^1
'DEFINIMOS LAS ECUACIONES DE CADA UNA DE LAS SALIDAS
E_agua=P_agua & (p_naranja_negada |p_limon_negada) '& operador boleano AND y | operador boleano OR
E_naranja=P_agua & P_naranja & P_limon_negada
E_limon=P_agua & P_naranja_negada & P_limon
' ESTABLECEMOS LAS CONDICIONES LGICAS DE SALTO
IF E_naranja=1 THEN naranja
IF E_limon=1 THEN limon
IF E_agua=1 THEN agua
' EN CASO DE NO CUMPLIRSE NINGUNA DE LAS ECUACIONES DEL AUTOMATISMOS PONEMOS A CERO
TODAS LAS SALIDAS
salida_Ea=0
salida_En=0
salida_El=0
GOTO INICIO 'Provocamos un salto incondicional a la etiqueta inicio para su ejecucin recursiva
agua:
DEBUG "agua", CR
salida_Ea=1
salida_En=0
salida_El=0
GOTO INICIO

'ETIQUETA DE LA ECUACION DE SALIDA DE LA ELECTROVLVULA DEL AGUA

naranja:
'ETIQUETA DE LA ECUACION DE SALIDA DE LA ELECTROVLVULA DE LA
NARANJA
DEBUG "naranja y agua", CR
salida_Ea=1
salida_En=1
salida_El=0
GOTO INICIO
limon:
'ETIQUETA DE LA ELECTROVLVULA DEL LIMON
DEBUG "limon y agua ", CR
salida_Ea=1
salida_En=0
salida_El=1
GOTO INICIO

DPTO. DE TECNOLOGA
J.Garrigs

DIODOS LED
El

En

Ea

P2

P1

P0

GND
+5V

P_Agua

P_Naranja

P_Limn

ESQUEMA DE CONEXIONADO

I.E.S. ANDRS DE VANDELVIRA

Pag. 32

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

12. PRACTICA 5: CUENTA ATRS MEDIANTE DISPLAY DE 7


SEGMENTOS.
A travs de la presente prctica se pretende
instruir al lector en el control de un display de 7
segmentos mediante una prctica de cuenta atrs. Se
estudiarn tambin la instruccin de almacenamiento de
datos (DATA) en la memoria EEPROM y la generacin de
ondas senoidales de frecuencia y duracin deseadas
(FREQOUT).
El display de 7 segmentos son 7 diodos LED
encapsulados en una disposicin tal que permita la
representacin de nmeros y letras. Existe un octavo LED
que es el punto decimal (dp), til para representar nmeros
fraccionarios. Todos los LED del display tienen un terminal
comn, que en el caso del Universal Trainer V2 del aula
taller el instituto, es el nodo, por lo que, se dice que es de
nodo comn (AC). La lnea de todos los nodos se ha de
conectar a + 5V.

330

330

330

330

330

330

330

dp

330

P0
P1
P2
P3
P4
P5
P6
P7

AC

+5 V

El Universal Trainer tiene 3 display de 7 segmentos


cuyo esquema de conexin se reprensenta en la siguiente figura:

Las resistencias conectadas en serie con los displays tienen la funcin de limitar la
tensin y la corriente aplicada a los LED.

Dado que el display es de nodo comn, habr que introducir un cero lgico ( 0V ) en el
ctodo del diodo LED que se desee iluminar. Bajo ests premisas, y puesto que en la presente
prctica se pretende realizar una cuenta atrs, en la siguiente tabla se representan los valores
de los bits que habr que aplicar a los ctodos de los LED para representar cada uno de los
nmeros.

En la prctica nicamente representamos los dgitos 0, 1, 2, 3, 4 y 5, que se activarn


en orden decreciente simulando una cuenta atrs.
DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 33

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

NMERO

P7

P6

P5

P4

P3

P2

P1

P0

VISUALIZADO

dp

Para programar esta prctica se emplearn tres nuevas instrucciones cuya descripcin
es la que se indica:

FREQOUT Pin, Duracin, Frecuencia : Mediante esta instruccin se saca por el pin
indicado una onda casi senoidal de la frecuencia indicada y con una duracin dada en
milisegundos por el parmetro Duracin.
Ejemplo: FREQOUT 12, 10, 2000 genera por el pin 12 una frecuencia sinusoidal de
2000 Hz durante 20 ms

DATA Valor : Guarda el parmetro Valor en una posicin de la memoria de la


EEPROM, que se puede identificar con una etiqueta.
Ejemplo: MEN DATA %00000000 guarda en la posicin de la EEPROM etiquetada
como MEN el valor binario 00000000.

READ Dato, Destino: Lee el valor que contiene la posicin de la memoria EEPROM
definida por el parmetro Dato y lo deposita en la variable Destino.
Ejemplo: READ MEM, Conta lee el calor contenido en la posicin MEM de la
EEPROM y lo deposita en la variable Conta.

Montaje prctico.
La figura nos muestra la disposicin de elementos de la prctica.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 34

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Programa
'PROGRAMA DE CUENTA ATRAS
segundos VAR OUTL 'Asignamos la variable segundos al Byte bajo (bits 0 al 7)
nums VAR Byte 'Asignamos a la variable numeros el valor de byte (hasta 256 estados)
'INTRODUCIMOS EN LA ETIQUETA "cuenta" DE LA MEMORIA EEPROM LOS VALORES REQUERIDOS
'PARA EL CONTROL DE LOS LEDS DEL DISPLAY
cuenta DATA%10010010 'Patrn del bits para el numero 5
DATA%10011001 'Patrn del bits para el numero 4
DATA%10110000 'Patrn del bits para el numero 3
DATA%10100100 'Patrn del bits para el numero 2
DATA%11111001 'Patrn del bits para el numero 1
DATA%11000000 'Patrn del bits para el numero 0
DIRL=%11111111 'direccionamos el byte bajo como salidas
OUTL=%11111111 'ponemos a 1 todas las salidas (todos LED apagados)
activacion:
'etiqueta activacin
IF IN14=1 THEN atras ' Si el pin 14 est a 1 entonces saltar a etiqueta atras
GOTO activacion 'salto incondicional a la eqiqueta acivacin
'BUCLE PARA LA CUENTA ATRS
atras:
'Etiqueta de incio de la cuenta atrs
FOR nums=0 TO 5
'Cuenta de 0 a 5
READ(cuenta+nums),segundos
'lee de la EEPROM la etiqueta cuenta en la posicin dada
'por el valor de la variable nums
PAUSE 1000
'espera 1 sg
FREQOUT 15,40,2000
'Genera un tono en la patilla 15 de 40 ms a 2000 Hz
NEXT
'Fin del bucle FOR NEXT
'BUCLE PARA EL PITIDO FINAL SEALIZANDO FIN DE LA CUENTA ATRS
aviso:
FREQOUT 15,2500,1000 'Genera un pitido de 2,5 s a 1000 Hz
GOTO activacion
'Salto incondicional a la etiqueta activacin

Esquema de conexin

El programa pretende la puesta en


marcha de un contador decimal en cuenta
atrs a partir de la puesta a 1 momentnea
de la patilla 14 del microcontrolador.

Se

comienza

por

declarar

las

variables, seguidamente se almacenan los


patrones

binarios

representacin

de

necesarios
los

para

nmeros

en

la
6

posiciones de la EEPROM que se disponen


a partir de la etiqueta cuenta. Luego se
repite un bucle 6 veces que asigna a la
variable segundos cada uno de los patrones
y los aplica al display. Con cada nmero se
genera un pequeo pitido y al alcanzar el 0
pita durante 2,5 segundos.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 35

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

13. PRACTICA 6: MANEJO DE ARRAYS: JUEGO DE LUCES.


El objetivo de la presente prctica es manejar arrays (matrices) de datos. Para ello, se
utilizar un array de 8 bytes para guardar una secuencia de datos que al representarla sobre un
conjunto de LEDS generar un juego de luces, cuya iluminacin se desplazar desde un
extremo al otro. En esta prctica se emplear tambin el operador binario de desplazamiento y
el decodificador <<DCD>>.

ARRAY
Un array no es ms que una agrupacin de elementos (variables, datos,) de forma

ordenada. Cada elemento que pertenece al array tiene asociado un ndice, el cual permite
hacer referencia al dato en cuestin.

Un array se crea de forma similar a una variable: nombre_variable VAR tamao(n) .


Donde:
nombre_variable y tamao tienen el mismo significado que la declaracin de una variable
cualquiera. El nuevo elemento (n), le indica al microcontrolador el espacio que tiene que
reservar de la misma variable con el tamao indicado.
Ejemplo:
Automvil VAR
Automvil(9)

Byte(10) crea 10 variables de tipo byte que van desde Automvil(0) a


Tamao

Dada la forma en que los arrays se disponen en la memoria


hay lmites de tamao para cada tipo:

DCD
Devuelve la potencia en base 2 de un rango de exponentes

N mximo
de elementos

BIT

208

NIB

52

BYTE

26

WORD

13

entre el 0 y el 15.
En otras palabras :
B0 = DCD 4 Muestra el B0= como %0001 0000
Es decir, determina la posicin del bit de la variable
que se pondr a 1 comenzando a contar desde 0, cuyo
valor representado en decimal es 24=16
La nomenclatura es:
Variable_destino =DCD nbit
En el siguiente ejemplo de programacin se
puede observar los distintos valores que va tomando
una variable (W1 para el ejemplo) desde 0 a 15, que es
representado en forma binaria y decimal.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 36

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

EJEMPLO DE LA INSTRUCCION DCD


DEBUG CLS
W1 = 0
FOR B0 = 0 TO 15
W1 = DCD B0
DEBUG DEC2 B0,"-",BIN16 W1,"-",DEC5 W1, " equivale a:2^",DEC1 B0, CR
PAUSE 10
NEXT
El ejemplo anterior genera la siguiente salida

<<y>>

Los operadores <<y>> desplazan hacia la izquierda (<<), o hacia la derecha (>>), los bits de la
variable, el nmero de veces indicado a la derecha del operador. Los bits desplazados se dejan
en 0.
Nomenclatura: variable<< nbits_a _desplazar
Ejemplo:
valor

CON

%100101101111

W1 = VALOR << 4
DEBUG

BIN16 W1, CR Muestra el resultado 1001011011110000

Corre la cifra 4 lugares hacia la izquierda y rellena hacia la derecha cuatro lugares con ceros.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 37

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

PROGRAMA
'DECLARACIN DE CONSTANTES
TIEMPO CON 100
'Cargamos la variable TIEMPO con el valor constante 100 (ms)
'DECLARACIN DE VARIABLES
MI_ARRAY VAR Byte(8) 'Declaramos un array de 8 Bytes
INDEX VAR Byte
'Declaracin de una variable de tipo Byte
DIRL=%11111111
'Direccionamos el byte bajo como salidas (Bits 0 a 7)
'CARGAMOS EL ARRAY EN LA POSICION 0 CON EL BIT O A 1
MI_ARRAY(0)=DCD 0
' BUCLE DE CARGA DE VALORES DE LAS POSICIONES DEL ARRAY
FOR INDEX=0 TO 7
MI_ARRAY(INDEX)= DCD INDEX 'Cargamos el array con MI_ARRAY(0)=0000 0001, MI_ARRAY(1)=0000 0010, ....
NEXT
'BLUCLE DE DESPLAZAMIENTO DEL ENCENDIDO DE LED HACIA LA IZQUIERDA
DESPLAZAMIENTO_A_IZQUIERDA:
'Etiqueta
IF IN8=0 THEN DESPLAZAMIENTO_A_DERECHA 'Si la entrada 8 est a 0 ir a la etiqueta des_derecha
FOR INDEX=0 TO 7
'Recorremos el array desde la posisicion 0 a la 8
OUTL=MI_ARRAY(INDEX)
'Ponemos las salidas (LED) al valor cargado en la posicion actual del array
PAUSE TIEMPO
'Tiempo de espera entre el cambio de posiciones del array
NEXT
GOTO DESPLAZAMIENTO_A_IZQUIERDA
'Salto incondicional a etiqueta desplazamiento_a_izquierda
'BLUCLE DE DESPLAZAMIENTO DEL ENCENDIDO DE LED HACIA LA DERECHA
'Misma explicacion que en el bucle anterior, pero con distinta direccin de desplazamiento
DESPLAZAMIENTO_A_DERECHA:
FOR INDEX=0 TO 7
OUTL=MI_ARRAY(7-INDEX)
PAUSE TIEMPO
NEXT
GOTO DESPLAZAMIENTO_A_IZQUIERDA

Tal y como est estructurado el programa, atendiendo a la conexin indicada, si el pin


8 est a 0, se produce un efecto luminoso que da la sensacin de desplazamiento de la luz a la
derecha. Al poner a 1 el pin 8, el efecto es de desplazamiento a la izquierda.
Se propone al lector la modificacin del programa para que de la sensacin que el

Imagen y esquema de conexin del

P7

P6

P5

P4

P3

P2

P1

P0

GND
+5V

encendido del LED va de un lado a otro en un movimiento de vaivn de forma continuada.

montaje:

P8

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 38

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

14. PRACTICA 7: CONTROL DE MOTORES DE CC POR PWM.


La modulacin por ancho de pulsos (o PWM, de pulse-width modulation en ingls) es
una tcnica en la que se modifica el ciclo de trabajo de una seal peridica (por ejemplo
sinusoidal o cuadrada).
Qu sucede si queremos controlar la luminosidad del LED que estamos encendiendo
o deseamos regular la velocidad del motor?.
Pudiramos pensar que si encendemos y apagamos la seal de alimentacin de la
carga (led o motor) lo suficientemente rpido como para que el parpadeo no se note,
podramos simular la variacin de luminosidad de un LED o el cambio en la velocidad del
motor:

Esto funciona siempre y cuando hagamos esta conmutacin ms all de 30 veces por
segundo. A partir de all. El "parpadeo" del LED se empezar a notar y el ojo humano captar
ese parpadeo. En el caso de un motor, ste se mover en una forma pulsante. La idea general
del PWM es esta, solo que soluciona este problema de tiempo. La forma de lograrlo es dejar el
pulso fijo en el tiempo y variar su amplitud. Si se define un pin como salida, por medio de un
controlador slo se 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 fuera y la otra mitad dentro, cuando se define el Duty
(anchura del pulso positivo) a la mitad, el voltaje medio sera entre 0 y 5V (2.5V)

Supongamos que logramos ajustar el perodo T a su valor ptimo mnimo en el cual un


LED no parpadee y un motor no gire de forma pulsante.

Esto es aproximadamente a una frecuencia de 30 pulsos o ciclos por segundos para el


caso de un LED. En el caso del motor habr que determinarlo empricamente ya que depende
de sus caractersticas elctricas y mecnicas. Volviendo al LED, quiere decir que trabajamos
con un perodo de tiempo de:

f 30 Hz

1
1

0,0333 s T 33,3 ms
f 30

El esquema anterior representa un pulso con


un ciclo positivo de servicio igual al 50% es decir, la
mitad del perodo est a 0 y la otra mitad est a Vcc.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 39

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Lo que se hace con PWM es variar dinmicamente el ciclo positivo de manera que el
tiempo de alta disminuya o aumente y en proporcin inversa, el de baja aumente o disminuya
dependiendo de si queremos un LED ms atenuado o ms brillante, o un motor ms lento o
ms rpido, respectivamente.

Led menos iluminado

Led ms iluminado

Recuerde

que

este

perodo

se

repite

constantemente

en

el

tiempo:

La finalidad de esta prctica es ensear a controlar la velocidad y direccin de giro del


eje de un motor de corriente continua a travs del microcontrolador. La instruccin clave ser
PWM (Modulacin de Anchura de Pulsos). Esta nueva instruccin genera un tren de pulsos por
el pin especificado y con una anchura de semiciclo positivo (duty) determinada. El valor de duty
se pasa como una variable que previamente se habr cargado.
El driver L293B
El L293B es un circuito integrado que contiene cuatro drivers cuya misin es la de
amplificar las seales que se aplican a los motores de corriente continua y paso a paso. Para
controlar un motor de corriente continua se emplean nicamente dos de los drivers, uno para
la seal de cada borne. Dichas seales en esta prctica procedern de los pines 14 y 15 del
microcontrolador, tal y como se refleja en la figura siguiente:

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 40

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

A= Pin 14

B=Pin 15

En la siguiente tabla podemos apreciar las caractersticas de este circuito integrado:


DATOS por canal, VS=24 V, VSS=5 V, T amb=25 C

La instruccin PWM
La instruccin PWM pin, duty, nciclos: genera una onda modulada de anchura de
pulsos por el pin indicado. La anchura de cada pulso viene determinada por duty (0-255) y el
nmero de pulsos generados se ha de especificar en nciclos en un valor correspondiente
entre 0 y 255.
Cada ciclo tiene una duracin de 1 ms, pudiendo valer duty desde 0 a 255 ms.
Los pines utilizados para el PWM se deben configurar como salidas durante la
ejecucin del programa, pasando a ser entrada al terminar la instruccin a fin de evitar daos
en el microcontrolador.
DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 41

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Esquema elctrico y de conexionado de la prctica.

Tal y como se puede apreciar se han montado dos LED para indicar el sentido de giro
del motor, que vendr determinado por el estado del pin 8.
Programa
DECLARACION DE VARIABLES
VELOCIDAD VAR Byte
'DECLARACIN DE CONSTANTES
DIODO_I CON 12
DIODO_D CON 11
'CONFIGURACIN DE LAS ENTRADAS/SALIDAS
DIRD=%1111
' Ponemos el tercer NIBBLE como salidas. No es necesario 'configurar los pines de entrada porque cuando
Arranca 'BASIC STAMP tiene todos los pines como entradas por defectINICIO:
'COMENZAMOS CON UN CONDICIONAL QUE PERMITA ELEGIR EL SENTIDO DEGIRO
INICIO:
IF IN8=0 THEN GIRO_DERECHAS
GIRO_IZQUIERDAS:
HIGH DIODO_I
LOW DIODO_D
VELOCIDAD=INL

'Aunque no es una etiqueta necesaria da ms claridad al programa


'Encendemos el LED que indica giro a Izquierdas
'Apagamos el LED que indica giro a Derechas
'Cargamos en la variable VELOCIDAD el valor en la entrada del BYTE bajo (bits 0 al 7)

PWM 14, VELOCIDAD, 50 'Damos en el pin 14, 50 pulsos de 1ms la consigna de velocidad leida en los interruptores
DEBUG ?VELOCIDAD, CR 'Mostramos por pantalla el valor decimal de la variable velocidad
GOTO INICIO
'PROGRAMACIN DEL GIRO A DERECHAS
GIRO_DERECHAS:
LOW DIODO_I
' Apagamos el LED de giro a Izquierdas
HIGH DIODO_D
' Activamos el LED de giro a derechas
OUT14=0
'Ponemos a 0 la patilla 14
VELOCIDAD=INL
'Cargamos en la variable VELOCIDAD el valor en la entrada del BYTE bajo (bits 0 al 7)
PWM 15, VELOCIDAD, 50 'Damos por el pin 15, 50 pulsos de 1ms la consigna de velocidad leida en los interruptores
DEBUG ?VELOCIDAD, CR 'Mostramos por pantalla el valor decimal de la variable velocidad
GOTO INICIO

'Salto incondicional para volver a realizar el ciclo

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 42

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Imagen del conexionado del circuito de la prctica

15. INSTRUCCIONES DEBUG TERMINAL Y DO LOOP


El comando DEBUG ya lo hemos utilizado en distintas prcticas anteriores para la
visualizacin de variables o mensajes en la pantalla del PC.

Este comando es bastante

poderoso, pues nos permite depurar los programas por la posibilidad de mostrar los estados de
distintas variables y/o mensajes.

La ventana Debug Terminal aparece automticamente al introducir el comando


DEBUG en el programa y ejecutarlo, pero tambin se puede visualizar mediante el icono
pulsando despus en Run

DPTO. DE TECNOLOGA
J.Garrigs

y seleccionado el puerto de comunicaciones.

I.E.S. ANDRS DE VANDELVIRA

Pag. 43

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

La manera en que la informacin puede ser mostrada mediante el comando DEBUG


puede ser ajustada mediante los modificadores de formato mostrados en la tabla siguiente:

Para ayudar a una mejor presentacin de los datos en pantalla, la instruccin DEBUG
admite el uso de caracteres de control indicados en la tabla siguiente:

El siguiente programa utiliza la instruccin DEBUG para la presentacin del valor de la


variable X.
' {$STAMP BS2}
' {$PBASIC 2.5}
' UTILIZACIN DE LA INSTRUCCION DEBUG
X VAR Byte
X =65
DEBUG ? X , "MUESTRA EL VALOR DECIMAL DE X EN PANTALLA"
PAUSE 2000 'ESPERA 2 SEGUNDOS
DEBUG CLS 'BORRA LA PANTALLA
DEBUG ASC ? X, "MUESTRA EL CARACTER ASCIL DEL VALOR DECIMAL DE X "
PAUSE 2000 'ESPERA 2 SEGUNDOS
DEBUG CLS 'BORRA LA PANTALLA

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 44

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

DEBUG DEC ? X, "MUESTRA EL VALOR DECIMAL DE X EN PANTALLA -de 1 a 5 dgitos-"


PAUSE 2000 'ESPERA 2 SEGUNDOS
DEBUG CLS 'BORRA LA PANTALLA
DEBUG SDEC ? X, "MUESTRA EL VALOR DECIMAL DE X EN PANTALLA CON SIGNO- de 1 a 5 dgitos-"
PAUSE 2000 'ESPERA 2 SEGUNDOS
DEBUG CLS 'BORRA LA PANTALLA
DEBUG SHEX ? X, "MUESTRA EL VALOR HEXADECIMAL DE X EN PANTALLA CON SIGNO -de 1 a 4 dgitos"
PAUSE 2000 'ESPERA 2 SEGUNDOS
DEBUG CLS 'BORRA LA PANTALLA
DEBUG SBIN ? X, "MUESTRA EL VALOR BINARIO DE X EN PANTALLA CON SIGNO -de 1 a 16 dgitos-"
PAUSE 2000 'ESPERA 2 SEGUNDOS
DEBUG CLS 'BORRA LA PANTALLA

La instruccin DEBUG podemos utilizar el cdigo ASCIL, en vez del SMBOLO. Por
ejemplo:
DEBUG 0, 2, 40,12, BS2 es Genial..., 7,7,7
Limpia la pantalla, (0)
Mueve el cursor a las coordenadas x=40, y=12, (2)
Imprime BS2 es Genial...
Emite 3 sonidos acsticos, (7)

La instruccin DO..LOOP 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.

La siguiente practica permite mostrar en pantalla el estado de las entradas conectadas


a los pines 7 y 8, lo utilizaremos para el control de los sensores de contacto de nuestro robot,
es por ello, que vamos a explicar tambin el circuito elctrico y sus caractersticas particulares
para nuestra aplicacin.

16. PRCTICA 8: CONTROL DE SENSORES DE CONTACTO.


Como es sabido, los interruptores crean pequeos arcos en sus maniobras de cierre y
apertura que pueden ser detectados como

varios ceros y unos lgicos en una misma

maniobra, si el nivel de tensin sobrepasa los niveles lgicos para VIH y VIL. Por ejemplo, el
circuito integrado SN74LS04 es un inversor sxtuple y el fabricante nos garantiza que si la
tensin de entrada VIL es menor de 0,8 V se considerar un nivel lgico LOW (cero) y para
garantizar que el circuito integrado considera un nivel de entrada lgico alto VIH (uno)

la

tensin ha de ser 2<VIH<5 . Y qu pasa entre 0,8 y 2?, pues que el circuito integrado lo puede
tomar como cero o como uno, pero adems eso no es todo, es normal que en una misma

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 45

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

maniobra de cierre o apertura del interruptor

5V

se sobrepasen los valores de tensin por


encima y por debajo de los niveles del

2V
0,8 V

circuito integrado. La siguiente figura intenta


mostrar

esquemticamente

el

efecto

descrito, donde la lnea negra es la

0V

maniobra terica y la roja es la que


realmente puede ocurrir.
Para evitar que estos transitorios puedan ser tomados como varios ceros o unos
lgicos en una misma maniobra se utilizan unas puestas lgicas que llevan incorporadas el
trigger Schmitt o disparador Schmitt . Este complemento permite que los rebotes en los
interruptores

sean

despreciados,

en

definitiva

nicamente

considerar un nivel de entrada lgico definitivo si el nivel de tensin


se mantiene sin variaciones un determinado tiempo. Para el caso de
un buffer con disparador Schmitt el smbolo utilizado sera:

En ocasiones, el efecto de atenuacin de una sola puerta no es suficiente y es usual


que se enserien varias. En nuestro caso particular, utilizaremos el circuito integrado
HEF40106BP que es un inversor sxtuple con disparadores Schmitt.

El esquema de conexin del circuito que emplearemos ser el siguiente:

Como es natural hay que alimentar el circuito integrado con + 5V (VDD) a la patilla 14 y
GND (VSS) a la patilla 7 de dicho C.I.

+ 5V
Sensor de
contacto
derecho

13

12

Pin 7

+ 5V
Pin 8

Sensor de
contacto
izquierdo

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 46

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

La imagen nos muestra el montaje real

El programa de instrucciones para la deteccin de los estados de los sensores de


contacto es:
' Visualizar las lneas de E/S conectadas a los SENSORES DE CONTACTO.
' {$STAMP BS2}. ' Directiva para indicar la version de Basic Stamp
' {$PBASIC 2.5}. 'directiva usada para indicar la versin de PBASIC
DEBUG "ESTADO DE LOS SENSORES DE CONTACTO", CR,"Izda Dcha.", CR,"------ ------"
DO

'bucle iterativo sin fin

DEBUG CRSRXY, 0, 3,"P7 = ", BIN1 IN7," P8 = ", BIN1 IN8 'Visualiza en columna 0, fila 3 los datos
PAUSE 50
' espera 50 ms
LOOP

'Volver al inicio del bucle

La ventana Debug Terminal muestra el estado de los sensores (en la figura esta
activado el del lado derecho).

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 47

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Se propone al lector, que elabore un programa que permita contar el nmero de veces
que se activan cada uno de los sensores de contacto y cuando alguno de ellos llegue a 10
muestre el mensaje EL SENSOR DE CONTACTO DERECHO (IZQUIERDO) SE HA
ACTIVADO 10 VECES , a la vez que lo resetea y activa de nuevo el bucle.

17. INSTRUCCIN DTMFOUT


Una de las aplicaciones ms populares de un microcontroladores est en los sistemas
de alarma, en este sentido, ya hemos estudiado como gobernar seales de entrada y salida
digitales. Los sistemas de alarma modernos, adems de activar sirenas, luces, etc.. son
capaces de enviar SMS o hacer llamadas telefnicas de forma automtica a nmeros de
telfono previamente programados.

El comando DTMFOUT

nos permite genera un tono doble de multifrecuencia

telefnica, ms conocido como Dual Tone Multifrecuency (DTMF), a travs de unos de los
pines del microcontrolador que podemos utilizar para hacer una llamada a travs de una lnea
telefnica convencional o a travs de un telfono mvil.

La nomenclatura de este comando es la que se indica:


DTMFOUT Pin, {OnTime, OffTime,} [Tone{Tone.}]

Pin.- Puede ser una variable, una constante o una expresin (0..15). Especifica el nmero
de pin del microcontrolador por donde saldr la seal generada

OnTime.- Es opcional y puede ser una variable, una constante o una expresin. Puede
variar entre 0 y 65535, y especifica la duracin del tono. Por defecto su valor es de 200
ms.

OffTime.- Es opcional y puede ser una variable, una constante o una expresin. Puede
variar entre 0 y 65535 y su valor especifica la duracin del silencio entre tonos. Por defecto
el calor asignado es de 50 ms

Tone.- Puede ser una variable, una constante o una expresin. Su valor vara entre 0 y 15
y especifica los tonos a generar
Valor del tono

Tecla del telfono correspondiente

09

Dgitos del 0 al 9

10

Asterisco (*)

11

Almohadilla (#)

12-15

Cuarta columna de tonos de A a D

Ejemplo: Imaginemos que deseamos marcar el nmero 967 21 03 11 a travs del pin 8
DTMFOUT 8, [9,6,7,2,1,0,3,1,1]

Si se desea retardar el paso de marcar, para acomodar una lnea telefnica ruidosa se
podran utilizar los valores opcionales OnTime y OffTime.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 48

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Para conectar el microcontrolador a una lnea telefnica estndar RTB ( Radio


Telefona Bsica) hay que montar el siguiente circuito:
LNEA
TELEFONICA

A1

IC

10 / 1W

A2

1N4007

RB = 2200
IB
VRB

ACTIVACIN DEL REL


DESDE EL PIC

10 / 1W

600
600

1k / 1W

Transformador

Vcc = + 12 V

100 nF / 100V
ENTRADA DE PULSOS
DESDE EL PIC

1 nF / 100V

BD135
Zener 3,9V
1N5228BCT-ND

V BE

El circuito anterior se puede apreciar fsicamente en la siguiente figura.

Interface de marcacin telefnica para marcacin por pulsos con un


17.1. FUNCIONAMIENTO TCNICO DEL DTMFOUT
El Microcontrolador BS2 es un dispositivo puramente digital. Los tonos de DTMF son
formas de onda anlogas, consistiendo en una mezcla de dos ondas del seno en diversas
frecuencias de audio. Entonces cmo un dispositivo digital genera una salida anloga?. El
BS2 crea y mezcla las ondas senoidales matemticamente, entonces utiliza la corriente que
resulta de los nmeros para controlar el ciclo en una rutina muy rpida de la modulacin de
pulsos o (PWM). Podemos decir
que realmente lo que genera el
BS2 es una corriente rpida de
pulsos.

El

propsito

de

los

arreglos de filtracin del esquema


elctrico anterior es alisar la alta

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 49

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

frecuencia del PWM, dejando salir solamente el audio de una frecuencia ms baja detrs.
Eliminndoles algunos armnicos generados.

Los circuitos demostrados aqu son solamente un punto de partida; se puede disear o
utilizar un filtro paso bajo activo alrededor de los 2 Khz.
Tabla de frecuencia para generar lo DTMF
1029 Hz

1336 Hz

1477 Hz

1663 Hz

697 Hz

770 Hz

852 Hz

941 Hz

Cuando se pulsa un 1 en el teclado telefnico se produce una mezcla de frecuencia de


697 Hz y 1209 Hz. En cada tecla se combina la frecuencia de la fila con la frecuencia de la
columna. Entonces cada tono audible es nico.

En caso de
que

se

desee

interpretar

estas

seales, existe en
el

mercado

una

gama de circuitos
integrados que se
llaman

DTMF

Decoder. Se puede
ver un ejemplo en
la s figura.

DPTO. DE TECNOLOGA
J.Garrigs

Tecla

Q1

Q2

Q3

Q4

1
2
3
4
5
6
7
8
9
0
*
#
A
B
C
D

0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0

0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0

0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0

1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0

I.E.S. ANDRS DE VANDELVIRA

Pag. 50

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

18. OPERADORADORES MATEMTICOS NCD Y DCD


18.1. OPERADOR MATEMTICO NCD
De igual forma que el microcontrolador puede calcular el seno, el coseno o la raiz
cuadrada de un nmero, tambin utiliza otros operadores matemticos uno de los cuales es
NCD . Este operador nos devuelve la posicin en que se encuentra el bit ms significativo de
un valor entre 1 y 16. En caso de que no existiera ningn bit a 1 en el valor dado devuelve cero.

El siguiente programa nos muestra la posicin del bit ms significativo de la variable


VALOR. Los resultados de salida se pueden ver en la ventana Debug Terminal
' {$STAMP BS2}
' {$PBASIC 2.5}
DEBUG CLS
VALOR VAR Word
VALOR = %00000100
DEBUG DEC2 NCD VALOR, CR ' MUESTRA LA POS. 3
VALOR = %00100100
DEBUG DEC2 NCD VALOR, CR ' MUESTRA LA POS. 6
VALOR = %01100100
DEBUG DEC2 NCD VALOR, CR ' MUESTRA LA POS. 7
VALOR = %00000000
DEBUG DEC2 NCD VALOR, CR ' MUESTRA LA POS. 0
VALOR = %100010001000
DEBUG DEC2 NCD VALOR, CR ' MUESTRA LA POS. 12

18.2. OPERADOR MATEMTICO DCD


Este operador matemtico ya estudiado en la pregunta 13 volvemos a repasarlo de
nuevo a fin de entender el concepto de complemento a 1 de un valor binario. Como ya
sabemos, el operador DCD devuelve la potencia en base 2 entre un rango de exponentes de (0
a 15). Si a la variable PEPE toma el valor DCD 4 , el valor de PEPE ser:
En binario PEPE =%0000 0000 0000 1000
Expresado en valor decimal con 5 dgitos DEC5 PEPE= 00008

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 51

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

El siguiente ejemplo muestra como funciona este operador.


' {$STAMP BS2}
' {$PBASIC 2.5}
'UTILIZACIN DEL OPERADOR MATEMTICO DCD
SALIDA VAR Word 'Declaramos la variable SALIDA con formato word
I VAR Word
'Declaramos la variable I con formato word
DEBUG CLS
SALIDA = 0
FOR I = 0 TO 15
SALIDA = DCD I

'Borra la pantalla
'Asigna a la variable SALIDA valor 0
'Se inicia un bucle que asigna a I los valores que van de 0 a 15
'Asigamos a la variable SALIDA el valor 2^I

DEBUG DEC2 I,"-",BIN16 SALIDA,"-",DEC5 SALIDA, CR 'Se muestra en pantalla el valor de I , el valor de
'la variable SALIDA en BINARIO y el valor de la
'variable SALIDA en DECIMAL con formato de 5 dgitos
PAUSE 500 'Se hace una pausa de 0,5 seguntos antes de repetir el bucle
NEXT
STOP 'Fin de programa

La salida del programa anterior se muestra en la siguiente figura.

Se puede hacer una ligera variacin del programa anterior para hacer un complemento
a 1 del valor binario anteponiendo el smbolo ~ al operador DCD, con lo que la salida sera:

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 52

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

19. PRCTICA 9: JUEGO DE LUCES DE GUSANO


El siguiente programa realiza un juego de luces dando vueltas a travs de un display de 7
segmentos simulando el movimiento de un gusano.
' {$STAMP BS2}
' {$PBASIC 2.5}
' JUEGO DE LUCES DE GUSANO
AUX VAR Nib
DIRL=%11111111
inicio:
FOR AUX=0 TO 5
PAUSE 75
OUTL=~DCD AUX
IF IN9=1 THEN fin
NEXT
GOTO INICIO

'Declaramos la variable AUX con valor nible 2^4 (0 a 15


Declaramos el byte bajo bits 0 al 7 como salidas

'Se establece un contador de 6 bucles 0 a 5


'Pausa de 75 ms
'Asignamos al byte bajo (bit0 al bit7, ambos incluidos) el complemento a 1 de 2^AUX
'Establecemos una salida del bucle en caso de que la entrada 9 se ponga a 1

FIN:
PAUSE 2000
STOP

El programa anterior deja un LED encendido cuando se direcciona a la etiqueta FIN. Se


propone al lector que realice las modificaciones necesarias para que todo el display quede
apagado o bien, si se desea, todo quede encendido.
DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 53

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

P9

GND
+5V

a
b
c
d
e
f
g

20. COMANDO BRANCH


El comando BRANCH permite realizar saltos a la posicin de una etiqueta durante la
ejecucin del programa en funcin del valor asignado a su indicador o ndice.
La nomenclatura es la siguiente:
BRANCH ndice, [Etiqueta1, Etiqueta2, Etiqueta3, .EtiquetaN]

ndice es una variable/constante o expresin tipo Byte (0 a 255) que especifica la cantidad de
etiquetas a la que se puede redireccionar la ejecucin del programa.
Etiqueta son las direcciones de referencia o bloque donde apuntar el programa

La ejecucin comienza en la etiqueta especificada. Por ejemplo, si (ndice) vale 0, el


programa salta a la primera etiqueta especificada en la lista, si (ndice) es 1, salta a la segunda
y as sucesivamente. Si (ndice) es mayor igual al nmero de etiquetas, no se toma ninguna
accin y la ejecucin contina con la declaracin siguiente al BRANCH. Se pueden usar hasta
256 etiquetas en una instruccin BRANCH.
El siguiente programa realiza saltos a las etiquetas Uva (si la variable ndice=0), Pera
(si la variable ndice=1) y Manzana (si la variable ndice=2)

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 54

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

' {$STAMP BS2}


' {$PBASIC 2.5}
' UTILIZACIN DEL COMANDO BRANCH
indice VAR Byte
Principal:
DEBUG CRSRXY,0, 3, "Seleccione una Fruta del [0 - 2]", CR 'Se sita el cursor a la coordenada 0,3
SERIN 16, 16468, [DEC1 indice] 'asigna a la variable ndice el valor decimal introducido por teclado
'16 (significa que utilizaremos el puerto de programacin) y 16468 que se
'transmitirn 8 bits a 9600 baudios sin paridad
BRANCH indice,[Uva, Pera, Manzana]
DEBUG CLS
DEBUG CRSRXY, 0, 3,"No ha seleccionado correctamente"
PAUSE 1500
DEBUG CLS
GOTO Principal
Uva:
DEBUG CRSRXY,2, 4,"Ha seleccionado Uva......" 'CRSRXY situa el cursor en la coordenada 2,4
GOTO Principal
Pera:
DEBUG CRSRXY,2, 4,"Ha seleccionado Pera....."
GOTO Principal
Manzana:
DEBUG CRSRXY,2, 4,"Ha seleccionado Manzana.."
GOTO Principal

21. PRCTICA 10: GOBERNANDO EL TELFONO


Esta prctica consiste en marcar un determinado nmero de telfono en funcin
del estado de unas entradas. Para esta prctica se utilizarn distintos comandos y
operadores estudiados anteriormente.
Hay que tener en cuenta ciertas consideraciones en esta prctica:
a) Se debe utilizar el circuito de adaptacin de impedancias indicado en el apartado
17 anterior.
b) En estado de reposo la lnea telefnica no debe estar conectada al transformador
dado que si se descolgara otro telfono de la vivienda se generara ruido debido
al acoplamiento en paralelo de impedancias.
c) Antes de la secuencia de marcado se debe activar la base del transistor que
excita el rel electromagntico, consiguiendo conectar la lnea telefnica al
transformador adaptador de impedancias.
d) Tras activar el pulsador de colgar (bit 9) el rel se desactivar.
' {$STAMP BS2}
' {$PBASIC 2.5}
' PROGRAMA DE MARCADO DE NMEROS DE TELFONO EN FUNCIN DEL ESTADO DE LAS
ENTRADAS
AUX VAR Nib
vueltas VAR Byte
DIRL=%11111111
DIRC=%1101

DIRD=0

'Declara la variable AUX del tipo Nibble


'Declara la variable vueltas como byte
'Declara los 8 bit bajos bit0 a bit7 como salidas, de ah que los ponemos a 1
'Declara en el Nibble C los bit 8, 10 y 11 como salidas y el 9 como
'entrada. LED indicacin de tel descolgado en el bit8, pulsador de colgar bit9,
'salida de tonos Bit 10 y activacin rel Bit 11
'Declara los bits 12, 13, 14 y 15 como entradas -los pone a cero-

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 55

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

INICIO:
OUT8=0
OUT11=0
OUTL=$FF

' Pone a cero el LED que indica telfono descolgado


' Pone a cero el transistor de activacin del rel
' Pone a cero el byte bajo de los LED del display

AUX=NCD IND

' La variable AUX toma un valor de 1 a 4 que se corresponde con el bit


' de mayor peso puesto a 1 en el nibble D -bit12, bit13, bit14 y bit 15

DEBUG ?AUX

' Nos muestra en pantalla el valor adoptado por la variable AUX

BRANCH AUX,[INICIO, UNO, DOS, TRES, CUATRO] ' Si AUX vale cero se va a la etiqueta INICIO. Si el bit 12
' est a 1 y los bits 13, 14 y 15 estn a cero salta a la
' etiqueta UNO. Si el bit de mayor peso puesto a 1 fuera el
' bit 13 saltara a la etiqueta DOS y as sucesivamente.
UNO: OUTL=%11111001
' Muestra un 1 en el display de nodo comn
GOSUB DESCOLGAR
' Salta a la subrutina DESCOLGAR
DTMFOUT 10,[6,7,6,0,1,6,3,0,6]
' Marca por la patilla 10 el nmero de telfono indicado
GOTO CONVERSACION
' Direcciona la ejecucin del programa a la etiqueta CONVERSACION

DOS: OUTL=%10100100
GOSUB DESCOLGAR
DTMFOUT 10,[9,6,7,2,1,5,3,5,4]
GOTO CONVERSACION

'Muestra un 2 en el display de nodo comn

TRES: OUTL=%10110000
GOSUB DESCOLGAR
DTMFOUT 10,[9,6,7,0,1,6,3,0,6]
GOTO CONVERSACION

' Muestra un 3 en el display de nodo comn

CUATRO: OUTL=%10011001
GOSUB DESCOLGAR
DTMFOUT 10,[8,7,8,0,1,5,3,8,0]
GOTO CONVERSACION

' Muestra un 4 en el display de nodo comn

CONVERSACION:
FOR vueltas=0 TO 5
PAUSE 150
OUTL=~DCD vueltas

' Etiqueta que nos indica que la lnea telefnica est abierta tras el marcado del nmero
' Ejecuta un bucle FOR NEXT para juego de luces de gusano girando
' Espera 150 ms
' Asigna al byte bajo bit0 al bit 7 el complemento a 1 (~) de 2^vueltas.
' El complemento a 1 se hace por ser el display de nodo comn y necesitar ceros
' en las entradas a,b,c,d,e,f,g para su activacin

IF IN9=1 THEN INICIO 'Si pulsador=1 cortamos la conversacin y para la ejecucin del bucle
NEXT
GOTO CONVERSACION
DESCOLGAR:
OUT8=1
OUT11=1
PAUSE 2000

' Pone a 1 el LED indicando telfono descolgado


' Activa el transistor que activa el rel de cierre de la lnea telefnica
' Espera 2 segundos

DTMFOUT 10,[0]
PAUSE 1500
RETURN

' Marca un 0 por el pin 10 entendiendo que estamos en un lugar con centralita telefnica
' Espera 1,5 segundos a que la centralita nos de tono de marcado
' Retorna la ejecucin del programa al punto de inicio de la subrutina

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 56

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

ESQUEMA DE CONEXIN DE LA PRCTICA 10

Vcc = + 12 V
C

600
600

A2

1N4007

P15

P14

P13

RB = 2200
IB
VRB

10 / 1W

100 nF / 100V
ENTRADA DE PULSOS
DESDE EL PIC

1 nF / 100V

BD135
Zener 3,9V
1N5228BCT-ND

V BE

GND
+5V

ACTIVACIN DEL REL


DESDE EL PIC

1k / 1W

Transformador

10 / 1W

A1

LNEA
TELEFONICA

P12

P9
Colgar
P8

FOTOGRAFA DEL MONTAJE DE LA PRCTICA 10

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 57

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

22. SERVOMOTORES
Los servomotores son motores de corriente continua que incorporan un circuito
electrnico que permite controlar de forma sencilla y segura la direccin, la velocidad y la
duracin del giro de sus ejes mediante impulsos elctricos. El eje de un servo puede ser
posicionado con un ngulo determinado en funcin de una seal de control codificada. Mientras
que la seal codificada est presente en la entrada de control, el servo mantendr la posicin
angular del engranaje. Cuando la seal de control cambie, la posicin angular del eje del servo
tambin cambiar. En la prctica, se usan servos para posicionar superficies de control como el
movimiento de palancas, timones, sistemas de posicionamiento y control, radio control, y por
supuesto, en robtica.

En general los servos suelen girar determinados ngulos, siendo corriente 90


respecto a su posicin de reposo. A fin de tener un mejor par motor el eje de utilizacin est
acoplado al eje del motor mediante una reductora de engranajes.

En la industria existen tambin servomotores de rotacin continua que pueden girar en


ambos sentidos a una velocidad controlada dependiente de la seal de control aplicada a los
mismos. Estos son los ms
empleados

en

el

acoplamiento de las ruedas


de los robots.

En la imagen se
muestra

un

rotacin
PARALLAX
servomotor

servo

continua
y

de
de
un

FUTABA

S3003 que permite un giro


de 90 respecto a su
posicin de reposo.

Para controlar un servo tendremos que aplicar un pulso de duracin y frecuencia


especficos. Todos los servos disponen de tres cables dos para alimentacin Vcc, GND y otro
cable para aplicar el tren de pulsos de control que harn que el circuito de control diferencial
interno ponga el servo en la posicin indicada por la anchura del pulso.

En la siguiente tabla estn indicados los valores de control y disposicin de cables de


varias marcas que comercializan servos.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 58

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Duracin pulso (ms)


Fabricante min. neutral. mx..
Futaba
0.9
1.5
2.1
Hitech
0.9
1.5
2.1
Graupner/Jr 0.8
1.5
2.2
Multiplex
1.05
1.6
2.15
Robbe
0.65
1.3
1.95
Simprop
1.2
1.7
2.2

disposicin de cables
Hz
50
50
50
40
50
50

+ batt
rojo
rojo
rojo
rojo
rojo
rojo

-batt
negro
negro
marrn
negro
negro
azul

Control.
blanco
amarillo
naranja
amarillo
blanco
negro

Los servos Futaba y Parallax que utilizaremos en este curso y tienen las siguientes
caractersticas:

Tensin de alimentacin mxima = 6 V dc

Velocidad de rotacin con alimentacin a


5 V dc y sin carga = 60 r.p.m.

Momento = 3,4 kg*cm

Peso = 45 gramos

Medidas

(Longitud x Ancho x Alto ) =

40,5 x 20 x 38 mm

La seal de control ha de ser una onda cuadrada de 50 Hz (periodo= 20 ms). Cada


periodo se dar un pulso alto con un ancho determinado dependiendo del ngulo en que se
desea posicionar el eje. La siguiente figura muestra la anchura de los pulsos necesarios para
los ngulos 0, 90 y 180. Bastar hacer una regla de tres para calcular el ancho de pulso
para el posicionamiento de un determinado ngulo.

2,5 ms

0,5 ms

20 ms /50 Hz

20 ms /50 Hz

20 ms /50 Hz

180

90

DPTO. DE TECNOLOGA
J.Garrigs

1,5 ms

I.E.S. ANDRS DE VANDELVIRA

Pag. 59

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

No

obstante,

en

la

prctica los valores indicados


pueden tener ciertas variaciones,
es por ello que los motores
disponen de potencimetros de
regulacin para establecer la
posicin de reposo.

Para ello,

introduciremos a la entrada de
control una onda cuadrada de
periodo 20 ms, de forma que en
cada periodo se produzca un
pulso

1,5

ms.

En

estas

condiciones el eje debe estar


parado, por lo cual regularemos
mediante un destornillador de
cabeza plana un potencimetro
hasta que se aprecie que el eje del motor no se mueve.

23. COMANDO PULSOUT


El comando PULSOUT genera en un pin un pulso de una duracin determinada
siguiendo la siguiente nomenclatura:
PULSOUT Pin, Pulso
Pin.-Especifica el nmero de pin del microcontrolador por donde se generarn los pulsos (0-15)
Pulso.- Puede ser una variable o una constante donde se especifica la duracin del pulso que
podr variar desde 0 a 65.536 (2^16) considerando que cada pulso equivale a un tiempo de 2
s. Es decir, un valor de pulso de 65536 equivale a un pulso a nivel alto que durar
65536*2*10-6 s = 0,13107 s.

Para entenderlo mejor pondremos un ejemplo. Si deseamos generar un pulso de 10ms


en el pin 13, el comando sera: PULSOUT 13, 5000

5000 * 2 s *

1 ms
10 ms
1000 s

Para utilizar este comando se debe declarar previamente como salida el pin por donde
se van a generar los pulsos. Por otro lado, la polaridad del pulso depender tambin del estado
lgico anterior en que se encuentra el pin de salida. De este modo, si el pin se encuentra a
nivel lgico bajo, el pulso ser positivo, pero si se encuentra a nivel lgico alto el pulso ser
negativo. Esto ltimo se puede apreciar en los siguientes ejemplos.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 60

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

' {$STAMP BS2}


' {$PBASIC 2.5}
' EJEMPLO DE UTILIZACIN DELCOMANDO PULSOOUT
LOW 15
PULSOUT 15, 50000
STOP

' Declara el Pin 15 como salida a un nivel lgico bajo


' Genera un pulso de 100 ms por el Pin 15
' Detiene el programa

Generacin de un pulso positivo

Generacin de pulsos negativos


' {$STAMP BS2}
' {$PBASIC 2.5}
' EJEMPLO DE UTILIZACIN DELCOMANDO PULSOOUT
HIGH 15
PULSOUT 15, 50000
STOP

' Declara el Pin 15 como salida a un nivel lgico alto


' Genera un pulso de 100 ms por el Pin 15
' Detiene el programa

24. PRCTICA 11: POSICIONAMIENTO DE UN SERVOMOTOR.


En esta prctica se posiciona un servomotor FUTABA S3003 mediante la siguiente
secuencia:
1. Supondremos que el estado de reposo corresponde a la posicin de referencia del eje
apuntando a 90 trigonomtricos.
2. Se posiciona el eje en posicin de reposo y permanece 1 segundo parado

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 61

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

3. A partir de la posicin de reposo giramos en sentido trigonomtrico en intervalos de


unos 10 sexagesimales hasta la posicin de 90.
4. Se para el eje 3 segundos y retorna a la posicin de reposo
5.

Desde la posicin de reposo gira en sentido antitrigonomtrico en intervalos de 10


hasta posicionar el eje en 0 trigonomtricos.

6. Repite el ciclo ininterrumpidamente.

' {$STAMP BS2}


' {$PBASIC 2.5}
'POSICIONAMIENTO A INTERVALOS DE UN SERVO FUTABA 3003
servo CON 13
' Declaramos como constante la variable servo y la asignamos al pin 13
x VAR Word
' Declaramos una variable x como PALABRA
p VAR Word
' Declaramos la variable p como PALABRA
INICIO:
P=50

' Asignamos a p valor de 0

'CENTRADO DEL EJE DEL SERVO EN POSICIN 90


FOR x=1 TO 20
PULSOUT servo,750
PAUSE 20
'generamos una pausa de 20 ms -duracin del periodo
NEXT
PAUSE 1000
' GIRO EN SENTIDO TRIGONOMTRICO
FOR x=1 TO 9
PULSOUT servo,750+p
PAUSE 20
DEBUG ? 700+p
p=p+50
PAUSE 1000
NEXT

'Hacemos bucles sumando 50 unidades al valor 750 iniciales hasta llegar a los
'1200 de limite mx que se corresponden con los 180 tras las pruebas
'La primera vez que recorre el bucle el pulso es 750+50=800
'Esperamos 20 milisegundos
'Muestra en pantalla el valor del pulso
' Incrementamos el valor de la variable P con cada pasada del bucle
' Paramos el eje 1 segundo

PAUSE 2000
'CENTRADO DEL EJE DEL SERVO EN POSICIN 90
FOR x=1 TO 20
PULSOUT servo,750
PAUSE 20
'Generamos una pausa de 20 ms -duracin del periodo
NEXT
PAUSE 1000

' GIRO DE 90 EN SENTIDO ANTITRIGONOMTRICO TRAS CENTRADO


P=50
FOR x=1 TO 9
' Hacemos bucles restando 50 unidades al valor 750 iniciales hasta llegar a los
' 300 de lmite mnimo que se corresponden con los 0 tras las pruebas realizadas
PULSOUT servo,750-p
PAUSE 20
' Esperamos 20 ms
DEBUG ? 750-p ' Muestra en pantalla el valor del pulso
P=P+50
PAUSE 1000
' Hacemos una pausa de 1 s
NEXT
PAUSE 2000
GOTO inicio

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 62

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

En las siguientes figuras se puede apreciar la conexin de la prctica del servomotor

GND
+5V

Futaba
S3003

GND
+5V

25. PRCTICA 12: CONTROL DE UN SERVOMOTOR DE


ROTACIN CONTINUA.
En esta prctica aprenderemos a controlar los servomotores de rotacin continua
Parallax

descritos anteriormente a travs del PIC BasicStamp.

Hemos de aclarar que el

funcionamiento de los servomotores de rotacin continua no es exactamente el mismo que los


servomotores Futaba descritos en el apartado anterior.

Comenzamos por describir el funcionamiento de un servomotor de rotacin continua


Parallax, el cual, responde a las siguientes reglas:

1. La alimentacin elctrica es la misma que los servo Futaba, es decir, Vcc


=+5V (cable rojo) y GND conectado a 0 V (cable negro)
2. El cable de control (de color blanco) se le ha de enviar una seal cuadrada de
50 Hz (periodo de 20 ms).
3. La posicin de reposo responde a un pulso alto de 1,5 ms para f=50Hz
4. Mirando el eje del servo y situado ste en la parte superior:
a. Para giro antitrigonomtrico (a derechas) a velocidad

mxima, el

pulso de control ser de 1,3 ms a una frecuencia f= 50Hz


b. Para giro trigonomtrico (a izquierdas) a velocidad mxima, el pulso
de control ser de 1,7 ms a una frecuencia f =50 Hz

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 63

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

NOTA: A efectos prcticos y dado que la duracin del pulso es pequea en relacin al
periodo se suelen considerar, en cada ciclo, intervalos de 20 ms a nivel bajo a los que
se suma el tiempo del pulso. Esto mismo es lo que se muestra en la siguiente figura:

PARALLAX

PARALLAX

CONTINOUS ROT ATION

CONTINOUS ROT ATION

www.parallax.com

www.parallax.com

GND
CONTROL

GND

+5V

CONTROL

Vdd = 5V

Vdd = 5V

Vss = 0 V

Vss = 0 V
20 ms

+5V

20 ms

1,3 ms

1,7 ms

GIRO ANTITRIGONOMTRICO
A VELOCIDAD MXIMA

GIRO TRIGONOMTRICO
A VELOCIDAD MXIMA

Considerando las condiciones anteriores, si deseamos que el servomotor gire en


sentido trigonomtrico a velocidad mxima el programa sera:

' {$STAMP BS2}


' {$PBASIC 2.5}
GIRO EN SENTIDO TRIGONOMTRICO DE UN SERVOMOTOR DE ROTACIN CONTINUA
INICIO:
IF IN5=0 THEN FIN
PULSOUT 15, 650
PAUSE 20

' Etiqueta
' Si el Pin 5 esta a 1 fundiona el motor, si est a cero no funciona
' Genera un pulso de 1,3 ms (650 x 2 us x 10E-3 = 1,3 ms)
' Espera 20 ms

FIN:
' Etiqueta
GOTO INICIO
' Salto incondicional a la etiqueta INICIO

En las pruebas realizadas, con alimentacin a 5 V dc, se ha contabilizado una


velocidad angular de 52 r.p.m. con el eje vertical y sin carga.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 64

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Se propone al lector la elaboracin de un programa que provoque el giro de 5 vueltas


completas a velocidad mxima considerando los tiempos de ejecucin de instrucciones(4000
instrucciones por segundo) y los de los pulsos a nivel alto y bajo.

Para calcular la velocidad de giro se debe calcular a travs de una regla de tres, a fin
de realizar una primera aproximacin, aunque sern las condiciones particulares de cada
montaje las que condicionarn la regulacin deseada para cada caso.
Si consideramos que cada pulso del comando PULSOUT equivale a 2 s podemos
calcular los valores necesarios para motor parado, y giros a derecha e izquierda a velocidad
mxima

1. Motor parado (pulso de 1,5 ms) : PULSOUT Pin, 750


2. Giro en sentido trigonomtrico a velocidad mxima (1,3 ms): PULSOUT Pin, 650
3. Giro en sentido antitrigonomtrico a velocidad mxima (1,7 ms): PULSOUT Pin, 850

El nmero de pulsos a indicar en el comando PULSOUT, en funcin del tiempo del tiempo
necesario de pulso a nivel alto, puede calcularse mediante la expresin:

Tiempo a nivel alto en ms por ciclo


2 * 10 3
Ejemplo para un tiempo a nivel alto de 1,7 ms
N Pulsos

N Pulsos

1,7
850
2 * 10 3

Finalmente

considerando

la prctica 8

(Control

sensores

de

de

contacto) y las instrucciones


de

control

de

servomotores

de

los

rotacin

continua se propone al lector


la

elaboracin

programa
robot

que

un

permita

al

construido

prcticas

(ver

navegacin
forma

de

que

en

imagen)

autnoma
al

las
la
de

detectar

obstculo se pare, vuelva


hacia

atrs

un

par

de

segundos y gire al lado contrario al sensor de contacto activado para salvar el obstculo.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 65

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

26. EMISIN Y DETECCIN DE ONDAS ELECTROMAGNTICAS


INFRAROJAS
Las ondas electromagnticas emitidas
por los cuerpos de color rojo tienen una longitud
de onda de 780 nm (nanmetros) y son visibles
al ojo humano. Por encima de dicha longitud de
onda las ondas se denominan "infrarrojas" ( IR )
y ya no son visibles. Existen ciertos modelos de
diodos LED que emiten ondas infrarrojas y se
llaman LED IR. Tambin existen detectores
(receptores) de IR. En nuestras aplicaciones
usaremos pares de emisores/receptores que
funcionan con una longitud de onda de 980 nm.

Existen en el mercado emisores de


infroarojos de muy diversas formas fsicas, en
nuestro caso utilizaremos emisores de infrarojos
(IR) cuya aspecto exterior es idntico al de un
diodo LED. En las prcticas programadas en
estos apuntes se utiliza un diodo emisor de
infrarojos

de

caractersticas

mm

puede

de
verse

dimetro
a

cuyas

travs

del

datasheet TSAL5300. Entre otros parmetros,


podemos destacar una corriente de polarizacin directa mxima de forma continuada de 100
mA ,con una tensin nodo-ctodo en polarizacin directa de 1,36 V, una tensin inversa
mxima de 5V , una longitud de onda mxima p= 940 nm con una variacin mxima de =
40 nm, un ngulo de emisin de 22 etc

Como es sabido, el ojo humano no es capaz de ver todo el espectro electromagntico y


la luz visible va desde el violeta con una longitud de onda 390 nm a los 780nm del color
rojo, por encima de esa longitud de onda la radiacin no es visible, entra en el infrarojo. En los
mandos a distancia es habitual trabajar por encima de los 900 nm y es comn un valor de
longitud de onda de 980 nm.

En cuanto al receptor de IR , tambin existen en el mercado diversidad de modelos y


formas. En este texto nos centraremos en dos tipos fundamentales cuyas hojas de datos se
pueden consultar en internet.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 66

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

DETECTOR IR TSOP312_ _

DETECTOR IR TSOP48_ _

Los receptores de IR que usaremos en las prcticas llevan incorporados unos filtros
pticos que permiten nicamente el paso de luz infraroja de longitudes de onda prximas a los
980 nm. Adems, incorporan un filtro electrnico que impide el paso de seales cuya
frecuencia no est comprendida entre los 25 kHz y los 55 kHz aproximadamente (ver la grfica
anterior para un detector de IR de 38 kHz ). Se
puede apreciar que el detector es ms sensible a
las frecuencias prximas a su valor nominal o
asignado. De este modo, se consigue que el
detector sea inmune a otras frecuencias de
emisin como la luz diurna o la del alumbrado
artificial. Todo lo anterior, a efectos prcticos,
influye en la forma de enfocar el emisor al
receptor (ngulo enfoque) y en la distancia de
emisin-recepcin. En el caso particular de los
pequeos robot mviles, se suelen emplear estos
dispositivos para detectar objetos, de modo que,
el receptor capte la onda previamente emitida al
ser rebotada por un objeto .

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 67

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Los esquemas elctricos de conexin de estos componentes son los que se muestran
en los siguientes circuitos:

PATILLAJE Y CIRCUITO INTERNO DE UN RECEPTOR DE I.R. TIPO TSOP 312 - -

ESQUEMA DE CONEXIN DEL


RECEPTOR DE IR TSOP 312_ _
GND

ESQUEMA DE CONEXIN DE
UN DIODO EMISOR DE IR
PIC

1000

A
1
2

220

PIC

+ 5V

27. COMANDO FREQOUT: NAVEGACIN POR IR


El comando FREQOUT fue diseado para generar y sintetizar tonos de sonido. Este
comando genera uno o dos tonos senoidales

durante un periodo especificado. La

nomenclatura del comando es la que sigue:

FREQOUT Pin, Periodo, Frec1, Frec2


Pin .- Puede ser una variable o una constante (0 -15) y especifica el pin de salida de los tonos
generados.
Periodo.- Puede ser variable o constante y especifica la duracin de un ciclo entre 0 y 65535
(2^16). Su unidad es el milisegundo
Frec1.- Puede ser una constante o variable y especifica la frecuencia en Hz del primer tono. Su
valor puede variar entre 0 y 32767 Hz (2^15)
Frec2.- Puede ser una constante o variable y especifica la frecuencia en Hz del segundo tono.
Su valor puede variar entre 0 y 32767 Hz (2^15)

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 68

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

En caso de especificar los dos parmetros Freq1 y Freq2 se obtiene una onda
resultante de la mezcla de ambas frecuencias con el periodo indicado.

Si bien, en teora, no se pueden generar ondas de frecuencias superiores a 32767 Hz,


debido a los armnicos, este comando nos permite emitir con frecuencias superiores. Los
siguientes ejemplos pueden aclarar mejor el funcionamiento de este comando:

La instruccin FREQOUT 7, 1000, 25000 generara un tono de 25000 Hz durante 1


segundo (1000 ms) a travs de la patilla 7

La instruccin FREQOUT 2, 5000, 2500, 4500 genera una mezcla de dos frecuencias:
un tono de 2500 Hz y otro de 4500 Hz, durante un perioro de 5 segundos (5000 ms)
por el pin 2

La instruccin FREQOUT 8, 1, 38500 genera por el pin 8 un tono de una frecuencia de


38500 Hz de 1 ms de perido.

Considerando los esquemas elctricos anteriores, seguidamente se muestra un


programa que nos permite probar los emisores y receptores de infrarojos tipo TSOP312_ _
montados en paralelo.

1
2

1
2

1. nodo del Diodo emisor de IR del

GND

a las siguientes condiciones:

+ 5V

GND

+ 5V

En el montaje y programa estn de acuerdo

lado izquierdo conectado a travs


de una resisencia de 1 k W al
Pin 15
2. nodo del Diodo emisor de IR del

1000

220

3. Salida del receptor de IR del lado

220

1000

una resisencia de 1 k W al Pin

GND
+5V

lado derecho conectado a travs de

izquierdo conectado a travs de


una resistencia de 220 W al
Pin 14
4. Salida del receptor de IR del lado
izquierdo conectado a travs de
una resistencia de 220 W al
Pin 1
El mismo montaje del esquema elctrico anterior, incluyendo el patillaje, puede
apreciarse en la siguiente imagen montado sobre un BOT con una tarjeta HomeWork.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 69

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Se ha de observar que en las condiciones del montaje anterior el microcontrolador da


un uno lgico cuando no se detecta objeto, que cambia a cero lgico al detectarlo.

' {$STAMP BS2}


' {$PBASIC 2.5}
PRUEBA DE FUNCIONAMIENTO DE LOS EMISORES Y DETECTORES DE IR
DET_DER VAR Bit
DET_IZQ VAR Bit
DEBUG "Estado SENSORES DE INFRAROJOS", CR,"Izda Dcha.", CR,"------ ------"
DO
FREQOUT 0, 1, 30000 'EMISOR DERECHO: Emite pulsos de 1 ms por el pin 0 de 38500 Hz de frecuencia
DET_DER=IN1
'ASIGNA LA VARIABLE DET_DER A LA INTRADA 1
FREQOUT 15, 1, 30000 'EMISOR IZQUIERDO: Emite pulsos de 1 ms por el pin 0 de 38500 Hz de frecuencia
DET_IZQ =IN14
' ASIGNA LA VARIABLE DET_DER A LA INTRADA 14
DEBUG CRSRXY, 0, 3,"DER =" , BIN1 DET_DER, " IZQ =", BIN1 DET_IZQ 'Muestra en coordenadas 0, 3 informacin
PAUSE 100
LOOP

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 70

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Se propone al lector la elaboracin de un programa que permita al robot navegar esquivando


obstculos a travs de la deteccin por infrarojos.

28. MICROBOT SEGUIDOR DE LNEA NEGRA.


En este apartado haremos que nuestro microbot sea capaz de seguir una lnea negra
situada sobre una superficie clara, para ello utilizaremos el sensor ptico reflexivo CNY70
(datasheet http://www.micropik.com/pdf/cny70.pdf) que tiene una construccin
compacta donde el emisor de luz emite un haz de infrarojos con una longitud de
onda de 950 nm que es detectado por el receptor (un fototransistor) al reflejarse
sobre uno objeto.

Dado que el transistor puede trabajar en la regin activa con un conversor analgico
digital (CAD) como el ADC0831 de 8 bits podramos tener una resolucin de hasta 256
valores que nos permitiran detectar todo un abanico de colores, en todo caso, salvo que se
adjunte un anexo con posterioridad a estos apuntes, de momento nicamente trabajaremos
con dos estados posible deteccin de negro o blanco
(colores claros).

El esquema y patillaje del CNY70 se puede


apreciar en la siguiente figura:

rea marcada

Vista superior

Dado que el CNY70 es un dispositivo

Vcc=+5V

que trabaja en regin activa del transistor se


obtiene una salida analgica funcin de la

seal digital (0 - 1 lgico) utilizaremos un

82

cantidad de luz reflejada. Para obtener una

Trigger Schmitt conectado segn se muestra

en la figura:

E
rea marcada

En las distintas pruebas realizadas en


el prototipo construido los resultados han sido

HEF 40106
PIC

parte ms prxima al CNY70 ha sido de unos

VISTA SUPERIOR
DEL CNY 70

2,5 mm.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

10 k

adecuados cuando la distancia de la lnea a la

Pag. 71

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Considerando el montaje realizado en el microbot de la imagen, comenzaremos por


elaborar un pequeo programa que nos permita verificar el funcionamiento de los CNY70
considerando el esquema de conexin de la figura.

LADO IZQUIERDO
DEL MICROBOT

LADO DERECHO
DEL MICROBOT

LADO DERECHO
DEL MICROBOT
Vcc=+5V

El funcionamiento del circuito es el siguiente:


Si el CNY 70 detecta superficie blanca (o
lo

suficientemente

clara), la

luz

se

reflejar en ella y el transistor se pondr


en conduccin poniendo la entrada a la
puerta lgica inversora trigger Schmitt a

LADO IZQUIERDO
DEL MICROBOT
rea marcada

K
VISTA SUPERIOR
DEL CNY 70

HEF 40106

PIN 5

10 k

82

Instalacin de los sensores de IR CNY 70

cero lgico (tensin inferior a 2 V), lo que


82

significa que a la salida de la puerta


tendremos un 1 lgico.
Si por el contrario la superficie en la que

esta reflejada la luz infrarroja es de color


negro

oscuro)

el

rea marcada

transistor

entenderemos que esta en corte lo que


significa que la entrada de la puesta
estar a 5V, es decir, a 1 lgico. Dado

LADO DERECHO
DEL MICROBOT

K
VISTA SUPERIOR
DEL CNY 70

HEF 40106

PIN 4

10 k

que la puerta lgica es un inversor, en


este caso, a su salida tendremos un 0

DPTO. DE TECNOLOGA
J.Garrigs

Vcc=+5V

I.E.S. ANDRS DE VANDELVIRA

Pag. 72

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

En definitiva, con el montaje de la figura podemos concluir que en los pines del
microcontrolador tendremos:

Si la superficie sobre la que est situado el CNY 70 es clara tendremos un 1 lgico.

Si la superficie sobre la que esta situado el CNY 70 es oscura o negra tendremos un 0


lgico.

Para probar el correcto de funcionamiento de los sensores pticos CNY 70 utilizaremos el


siguiente programa:
' Visualizar las lneas de E/S conectadas a los SENSORES OPTICO-REFLEXIVOS CNY 70 .
' {$STAMP BS2}. ' Directiva para indicar la version de Basic Stamp
' {$PBASIC 2.5}. 'directiva usada para indicar la versin de PBASIC
DEBUG "Estado SENSORES CNY70", CR,"Izda Dcha.", CR,"------ ------"
DO
'bucle iterativo sin fin
DEBUG CRSRXY, 0, 3,"P5 = ", BIN1 IN5," P4 = ", BIN1 IN4 'Visualiza estado BINARIO EN LA columna 0, fila 3
los datos
PAUSE 50
' espera 50 ms
LOOP
' Volver al inicio del bucle

Con el programa anterior la ventana DEBUG Terminal mostrar los siguientes resultados:
Los dos sensores sobre la superficie negra

Sensor del lado derecho sobre superficie blanca y el izquierdo sobre negra

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 73

MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Sensor del lado izquierdo sobre superficie blanca y el derecho sobre negra

Como ejercicio, se propone al lector que realice un programa que permita al microbot
seguir una lnea negra y se pare si dicha lnea se corta.

DPTO. DE TECNOLOGA
J.Garrigs

I.E.S. ANDRS DE VANDELVIRA

Pag. 74

You might also like