Vous êtes sur la page 1sur 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
+5V
CONTROL
Vdd = 5V

Vss = 0 V
20 ms
1,7 ms

GIRO TRIGONOMTRICO
A VELOCIDAD MXIMA

J.Garrigs
DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 0
J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 1


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 2


J.Garrigs
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..).

MEMORIAS
Buses

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 I.E.S. ANDRS DE VANDELVIRA Pag. 3


J.Garrigs
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.

Se comercializan cuatro series de microcontroladores PIC de 8


bits, 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 de un PIC se estructura en 4 bloques
fundamentales:

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 I.E.S. ANDRS DE VANDELVIRA Pag. 4


J.Garrigs
MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

MEMORIA MEMORIA
DE PROCESADOR DE
PROGRAMA 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 I.E.S. ANDRS DE VANDELVIRA Pag. 5


J.Garrigs
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 26 para
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)

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

Esquema simplificado
del mdulo OEM BS2

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 6


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 7


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 8


J.Garrigs
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 es de tipo profesional, muy completo y potente, pero


su manejo requiere un slida base en informtica, y por supuesto, en la
aplicacin que nos ocupa ser necesario un conocimiento a fondo de la
arquitectura interna 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 INPUT R Nos pide el valor del radio
20 LET S=3.14*R*R Calcula el rea
30 PRINT S Nos muestra el valor del rea calculada
40 END 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 I.E.S. ANDRS DE VANDELVIRA Pag. 9


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 10


J.Garrigs
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 OEM-
BS2_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 I.E.S. ANDRS DE VANDELVIRA Pag. 11


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 12


J.Garrigs
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)
MIN Limita el valor ms bajo
MAX Limita el valor ms alto
DIGIT Retorna el dgito especificado de un nmero
<< Desplazamiento de bits a la izquierda
>> Desplazamiento de bits a la derecha
REV Inverso de los bits del nmero especificado
& 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 I.E.S. ANDRS DE VANDELVIRA Pag. 13


J.Garrigs
MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

caracteres de control), nmeros decimales (0-65535), nmeros


hexadecimales ($0000-$FFFF) o nmeros binarios (hasta
%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

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 I.E.S. ANDRS DE VANDELVIRA Pag. 14


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 15


J.Garrigs
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 el resultado de dividir 7/2=3,


que multiplicado por 100, da 00300

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 I.E.S. ANDRS DE VANDELVIRA Pag. 16


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 17


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 18


J.Garrigs
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 Se muestra en la pantalla del PC el


texto LUZ y SONIDO
INICIO: DEBUG ILUMINA, CR Se muestra en la pantalla del PC el
mensaje ILUMINA
HIGH 0 Pone a uno lgico la patita 0
LOW 15 Pone a cero lgico el pin 15
PAUSE 2000 Se produce una pausa de 2 seg.
DEBUG SUENA, CR Se muestra mensaje en el PC

LOW 0 Pone a cero lgico el pin 0


HIGH 15 Pone a uno lgico el pin 1
PAUSE 3000 Se produce una pausa de 3 seg.
GOTO INICIO Salta a la etiqueta INICIO

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 I.E.S. ANDRS DE VANDELVIRA Pag. 19


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 20


J.Garrigs
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:
Valores
Tipo Elementos decimales
posibles
BIT 1 bit 21 2 (0-1)
NIB 4 bits 24 16 (0-15)
BYTE 8 bits 28 256 (0-255)
WORD 16 bits 216 65536 (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 Puede tomar 2 elementos 0 y 1


gato VAR nib Puede tomar 16 elementos desde 0 a 15
perro VAR byte Puede tomar 256 elementos desde 0 a 255
elefante VAR word 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 I.E.S. ANDRS DE VANDELVIRA Pag. 21


J.Garrigs
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 N mx. de elementos
BIT 208
NIB 52
BYTE 26
WORD 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 I.E.S. ANDRS DE VANDELVIRA Pag. 22


J.Garrigs
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 VAR byte Dog es una variable del tipo Byte


Fido VAR Dog 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 I.E.S. ANDRS DE VANDELVIRA Pag. 23


J.Garrigs
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 ?cuerpo_humano, CR


DEBUG BIN16 ?cabeza, CR
DEBUG BIN16 ?extremidades, CR
DEBUG BIN16 ?ojos, CR
DEBUG BIN16 ?nariz, CR
DEBUG BIN16 ?oido, CR
DEBUG BIN16 ?boca, CR
DEBUG BIN16 ?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 I.E.S. ANDRS DE VANDELVIRA Pag. 24


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 25


J.Garrigs
MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

El programa propuesto es el siguiente:

INTERMITENCIA DE UN DIODO LED

Declaracin de constantes
pinLED CON 0 Establecemos a la variable pinLED la constante 0
Intervalo CON 500 Retardo en milisegundos entre estados del LED

COMIENZO: Establecemos una etiqueta


HIGH pinLED Enciende el LED conectado al pin0
PAUSE Intervalo Tiempo que el LED permanece encendido
LOW pinLED Apaga el LED conectado al pin0
PAUSE Intervalo Tiempo que el LED permanece apagado
GOTO COMIENZO 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 El pin 4 bit 4- se pone a 1


OUT5 =0 El pin 4 bit 4- se pone a 0
OUT6 =1 El pin 4 bit 4- se pone a 1

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 26


J.Garrigs
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

El funcionamiento del montaje es el ESQUEMA DE CONEXIONADO


siguiente:
Si el bit7 est en 0 el circuito se
encuentra en el estado: INTERRUPTOR
+5V

DIODOS LED
GND

o P0=1
P6 P5 P4 P1
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

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 27


J.Garrigs
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 LIMN

Ea En El

Botonera

a n l

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 I.E.S. ANDRS DE VANDELVIRA Pag. 28


J.Garrigs
MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

1 Fase. Tabla de verdad del circuito

Variables de entrada Variables de salida


a n l Ea En El
0 0 0 0 0 0
0 0 1 0 0 0
0 1 0 0 0 0
0 1 1 0 0 0
1 0 0 1 0 0
1 0 1 1 0 1
1 1 0 1 1 0
1 1 1 0 0 0

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 I.E.S. ANDRS DE VANDELVIRA Pag. 29


J.Garrigs
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:

n l

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

n l

a l n l
l l

c) Hacemos lazos y simplificamos:

Lazo A: a * l a l l l
Lazo B: a * n

Ea a * l a * n Lazo A Lazo B

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 30


J.Garrigs
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 a a

n l n n

l l
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 I.E.S. ANDRS DE VANDELVIRA Pag. 31


J.Garrigs
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: 'ETIQUETA DE LA ECUACION DE SALIDA DE LA ELECTROVLVULA DEL AGUA


DEBUG "agua", CR
salida_Ea=1
salida_En=0
salida_El=0
GOTO INICIO

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

ESQUEMA DE CONEXIONADO
P_Naranja
P_Limn

P_Agua

DIODOS LED
El En Ea
+5V
GND

P2 P1 P0

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 32


J.Garrigs
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 a 330
segmentos mediante una prctica de cuenta atrs. Se P0
estudiarn tambin la instruccin de almacenamiento de b 330
P1
datos (DATA) en la memoria EEPROM y la generacin de
c 330
ondas senoidales de frecuencia y duracin deseadas P2
(FREQOUT). d 330
P3
El display de 7 segmentos son 7 diodos LED e 330
P4
encapsulados en una disposicin tal que permita la 330
f
representacin de nmeros y letras. Existe un octavo LED P5
que es el punto decimal (dp), til para representar nmeros g 330
P6
fraccionarios. Todos los LED del display tienen un terminal
330
comn, que en el caso del Universal Trainer V2 del aula dp
P7
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. 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 I.E.S. ANDRS DE VANDELVIRA Pag. 33


J.Garrigs
MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

NMERO P7 P6 P5 P4 P3 P2 P1 P0
VISUALIZADO dp g f e d c b a
5 1 0 0 1 0 0 1 0
4 1 0 0 1 1 0 0 1
3 1 0 1 1 0 0 0 0
2 1 0 1 0 0 1 0 0
1 1 1 1 1 1 0 0 1
0 1 1 0 0 0 0 0 0
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 I.E.S. ANDRS DE VANDELVIRA Pag. 34


J.Garrigs
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 necesarios para la
representacin de los nmeros en 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 I.E.S. ANDRS DE VANDELVIRA Pag. 35


J.Garrigs
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 Byte(10) crea 10 variables de tipo byte que van desde Automvil(0) a
Automvil(9)
Tamao N mximo
Dada la forma en que los arrays se disponen en la memoria
de elementos
hay lmites de tamao para cada tipo:
BIT 208
NIB 52
BYTE 26
DCD
WORD 13
Devuelve la potencia en base 2 de un rango de exponentes
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 I.E.S. ANDRS DE VANDELVIRA Pag. 36


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 37


J.Garrigs
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
encendido del LED va de un lado a otro en un movimiento de vaivn de forma continuada.
+5V
GND

P7 P6 P5 P4 P3 P2 P1 P0
Imagen y esquema de conexin del
montaje:

P8

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 38


J.Garrigs
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:

1 1
f 30 Hz T 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 I.E.S. ANDRS DE VANDELVIRA Pag. 39


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 40


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 41


J.Garrigs
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: 'Aunque no es una etiqueta necesaria da ms claridad al programa

HIGH DIODO_I 'Encendemos el LED que indica giro a Izquierdas


LOW DIODO_D 'Apagamos el LED que indica giro a Derechas
VELOCIDAD=INL '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 I.E.S. ANDRS DE VANDELVIRA Pag. 42


J.Garrigs
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 y seleccionado el puerto de comunicaciones.

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 43


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 44


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 45


J.Garrigs
MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

maniobra de cierre o apertura del interruptor


se sobrepasen los valores de tensin por 5V
encima y por debajo de los niveles del
circuito integrado. La siguiente figura intenta 2V
mostrar esquemticamente el efecto 0,8 V
0V
descrito, donde la lnea negra es la
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 1 2 3 4
Pin 7
derecho

+ 5V

5 6 13 12
Pin 8

Sensor de
contacto
izquierdo

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 46


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 47


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 48


J.Garrigs
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
Vcc = + 12 V TELEFONICA

IC
1k / 1W
600
10 / 1W 600 100 nF / 100V

A1
ENTRADA DE PULSOS
DESDE EL PIC

Transformador
1N4007

A2
1 nF / 100V

10 / 1W
ACTIVACIN DEL REL RB = 2200
DESDE EL PIC BD135
VRB IB V BE Zener 3,9V
1N5228BCT-ND

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 I.E.S. ANDRS DE VANDELVIRA Pag. 49


J.Garrigs
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 1 2 3 A
770 Hz 4 5 6 B
852 Hz 7 8 9 C
941 Hz * 0 # D

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.

Tecla Q1 Q2 Q3 Q4
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
0 1 0 1 0
* 1 0 1 1
# 1 1 0 0
A 1 1 0 1
B 1 1 1 0
C 1 1 1 1
D 0 0 0 0

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 50


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 51


J.Garrigs
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 'Borra la pantalla


SALIDA = 0 'Asigna a la variable SALIDA valor 0
FOR I = 0 TO 15 'Se inicia un bucle que asigna a I los valores que van de 0 a 15
SALIDA = DCD I '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 I.E.S. ANDRS DE VANDELVIRA Pag. 52


J.Garrigs
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 'Declaramos la variable AUX con valor nible 2^4 (0 a 15
DIRL=%11111111 Declaramos el byte bajo bits 0 al 7 como salidas

inicio:
FOR AUX=0 TO 5 'Se establece un contador de 6 bucles 0 a 5
PAUSE 75 'Pausa de 75 ms
OUTL=~DCD AUX 'Asignamos al byte bajo (bit0 al bit7, ambos incluidos) el complemento a 1 de 2^AUX
IF IN9=1 THEN fin 'Establecemos una salida del bucle en caso de que la entrada 9 se ponga a 1
NEXT
GOTO INICIO

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 I.E.S. ANDRS DE VANDELVIRA Pag. 53


J.Garrigs
MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

a
b
c
d
e
f
g

+5V
GND
P9

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 I.E.S. ANDRS DE VANDELVIRA Pag. 54


J.Garrigs
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 'Declara la variable AUX del tipo Nibble


vueltas VAR Byte 'Declara la variable vueltas como byte
DIRL=%11111111 'Declara los 8 bit bajos bit0 a bit7 como salidas, de ah que los ponemos a 1
DIRC=%1101 '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
DIRD=0 'Declara los bits 12, 13, 14 y 15 como entradas -los pone a cero-

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 55


J.Garrigs
MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

INICIO:
OUT8=0 ' Pone a cero el LED que indica telfono descolgado
OUT11=0 ' Pone a cero el transistor de activacin del rel
OUTL=$FF ' 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 'Muestra un 2 en el display de nodo comn


GOSUB DESCOLGAR
DTMFOUT 10,[9,6,7,2,1,5,3,5,4]
GOTO CONVERSACION

TRES: OUTL=%10110000 ' Muestra un 3 en el display de nodo comn


GOSUB DESCOLGAR
DTMFOUT 10,[9,6,7,0,1,6,3,0,6]
GOTO CONVERSACION

CUATRO: OUTL=%10011001 ' Muestra un 4 en el display de nodo comn


GOSUB DESCOLGAR
DTMFOUT 10,[8,7,8,0,1,5,3,8,0]
GOTO CONVERSACION

CONVERSACION: ' Etiqueta que nos indica que la lnea telefnica est abierta tras el marcado del nmero
FOR vueltas=0 TO 5 ' Ejecuta un bucle FOR NEXT para juego de luces de gusano girando
PAUSE 150 ' Espera 150 ms
OUTL=~DCD vueltas ' 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 ' Pone a 1 el LED indicando telfono descolgado
OUT11=1 ' Activa el transistor que activa el rel de cierre de la lnea telefnica
PAUSE 2000 ' Espera 2 segundos

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

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 56


J.Garrigs
MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

ESQUEMA DE CONEXIN DE LA PRCTICA 10

LNEA
Vcc = + 12 V TELEFONICA

I C

1k / 1W
600
10 / 1W 600 100 nF / 100V

A1
ENTRADA DE PULSOS
DESDE EL PIC

Transformador
1N4007

A2
1 nF / 100V

10 / 1W
ACTIVACIN DEL REL RB = 2200
DESDE EL PIC BD135
VRB IB V BE Zener 3,9V
1N5228BCT-ND

+5V
GND
P15 P14 P13 P12

P9
Colgar

P8

FOTOGRAFA DEL MONTAJE DE LA PRCTICA 10

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 57


J.Garrigs
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 servo de
rotacin continua de
PARALLAX y un
servomotor 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 I.E.S. ANDRS DE VANDELVIRA Pag. 58


J.Garrigs
MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

Duracin pulso (ms) disposicin de cables


Fabricante min. neutral. mx.. Hz + batt -batt Control.
Futaba 0.9 1.5 2.1 50 rojo negro blanco
Hitech 0.9 1.5 2.1 50 rojo negro amarillo
Graupner/Jr 0.8 1.5 2.2 50 rojo marrn naranja
Multiplex 1.05 1.6 2.15 40 rojo negro amarillo
Robbe 0.65 1.3 1.95 50 rojo negro blanco
Simprop 1.2 1.7 2.2 50 rojo azul 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 1,5 ms 0,5 ms

20 ms /50 Hz 20 ms /50 Hz 20 ms /50 Hz

180 90 0

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 59


J.Garrigs
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 e 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

1 ms
5000 * 2 s * 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 I.E.S. ANDRS DE VANDELVIRA Pag. 60


J.Garrigs
MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

' {$STAMP BS2}


' {$PBASIC 2.5}
' EJEMPLO DE UTILIZACIN DELCOMANDO PULSOOUT

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


PULSOUT 15, 50000 ' Genera un pulso de 100 ms por el Pin 15
STOP ' Detiene el programa
Generacin de un pulso positivo

Generacin de pulsos negativos

' {$STAMP BS2}


' {$PBASIC 2.5}
' EJEMPLO DE UTILIZACIN DELCOMANDO PULSOOUT

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


PULSOUT 15, 50000 ' Genera un pulso de 100 ms por el Pin 15
STOP ' 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 I.E.S. ANDRS DE VANDELVIRA Pag. 61


J.Garrigs
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 '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
PULSOUT servo,750+p 'La primera vez que recorre el bucle el pulso es 750+50=800
PAUSE 20 'Esperamos 20 milisegundos
DEBUG ? 700+p 'Muestra en pantalla el valor del pulso
p=p+50 ' Incrementamos el valor de la variable P con cada pasada del bucle
PAUSE 1000 ' Paramos el eje 1 segundo
NEXT

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 I.E.S. ANDRS DE VANDELVIRA Pag. 62


J.Garrigs
MICROCONTROLADORES Y SU APLICACIN EN ROBTICA

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

Futaba
S3003
+5V
GND

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 I.E.S. ANDRS DE VANDELVIRA Pag. 63


J.Garrigs
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 GND
+5V +5V
CONTROL CONTROL
Vdd = 5V Vdd = 5V

Vss = 0 V Vss = 0 V
20 ms 20 ms
1,3 ms 1,7 ms

GIRO ANTITRIGONOMTRICO GIRO TRIGONOMTRICO


A VELOCIDAD MXIMA 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: ' Etiqueta


IF IN5=0 THEN FIN ' Si el Pin 5 esta a 1 fundiona el motor, si est a cero no funciona
PULSOUT 15, 650 ' Genera un pulso de 1,3 ms (650 x 2 us x 10E-3 = 1,3 ms)
PAUSE 20 ' 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 I.E.S. ANDRS DE VANDELVIRA Pag. 64


J.Garrigs
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


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

Finalmente y
considerando la prctica 8
(Control de sensores de
contacto) y las instrucciones
de control de los
servomotores de rotacin
continua se propone al lector
la elaboracin de un
programa que permita al
robot construido en las
prcticas (ver imagen) la
navegacin autnoma de
forma que al 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 I.E.S. ANDRS DE VANDELVIRA Pag. 65


J.Garrigs
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 5 mm de dimetro cuyas
caractersticas puede verse a 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 I.E.S. ANDRS DE VANDELVIRA Pag. 66


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 67


J.Garrigs
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 ESQUEMA DE CONEXIN DE


RECEPTOR DE IR TSOP 312_ _ UN DIODO EMISOR DE IR
1000
GND PIC
A K
1 3 220
PIC
2

+ 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 I.E.S. ANDRS DE VANDELVIRA Pag. 68


J.Garrigs
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.

GND

GND
+ 5V

En el montaje y programa estn de acuerdo

+ 5V
a las siguientes condiciones:
1

1
1. nodo del Diodo emisor de IR del
2

lado izquierdo conectado a travs 2


de una resisencia de 1 k W al
Pin 15
3

2. nodo del Diodo emisor de IR del K A A K


lado derecho conectado a travs de
una resisencia de 1 k W al Pin
+5V
GND
1000

1000
220

220

0
3. Salida del receptor de IR del lado
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 I.E.S. ANDRS DE VANDELVIRA Pag. 69


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 70


J.Garrigs
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
cantidad de luz reflejada. Para obtener una
82

seal digital (0 - 1 lgico) utilizaremos un


Trigger Schmitt conectado segn se muestra
en la figura: A E

rea marcada
En las distintas pruebas realizadas en
HEF 40106
el prototipo construido los resultados han sido K C
PIC
adecuados cuando la distancia de la lnea a la
VISTA SUPERIOR
10 k

parte ms prxima al CNY70 ha sido de unos DEL CNY 70

2,5 mm.

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 71


J.Garrigs
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
Instalacin de los sensores de IR CNY 70
82

El funcionamiento del circuito es el siguiente: LADO IZQUIERDO


A E DEL MICROBOT
Si el CNY 70 detecta superficie blanca (o
lo suficientemente clara), la luz se rea marcada
reflejar en ella y el transistor se pondr HEF 40106
K C
en conduccin poniendo la entrada a la PIN 5
VISTA SUPERIOR
10 k

puerta lgica inversora trigger Schmitt a DEL CNY 70

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


significa que a la salida de la puerta
82

tendremos un 1 lgico.
Si por el contrario la superficie en la que LADO DERECHO
A E DEL MICROBOT
esta reflejada la luz infrarroja es de color
negro ( oscuro) el transistor rea marcada

HEF 40106
entenderemos que esta en corte lo que K C
PIN 4
significa que la entrada de la puesta VISTA SUPERIOR
10 k

DEL CNY 70
estar a 5V, es decir, a 1 lgico. Dado
que la puerta lgica es un inversor, en
este caso, a su salida tendremos un 0 Vcc=+5V

DPTO. DE TECNOLOGA I.E.S. ANDRS DE VANDELVIRA Pag. 72


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 73


J.Garrigs
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 I.E.S. ANDRS DE VANDELVIRA Pag. 74


J.Garrigs