Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TECNOLOGA INDUSTRIAL
MICROCONTROLADORES Y SUS
APLICACIONES EN ROBTICA
LADO IZQUIERDO
DEL MICROBOT
LADO DERECHO
DEL MICROBOT
PARALLAX
CONTINOUS ROT ATION
www.parallax.com
GND
CONTROL
+5V
Vdd = 5V
Vss = 0 V
20 ms
1,7 ms
GIRO TRIGONOMTRICO
A VELOCIDAD MXIMA
J.Garrigs
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 0
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
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 1
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 2
Buses
MEMORIAS
CPU
E/S
Pag. 3
bits,
de
un
PIC
se
estructura
en
bloques
Procesador
Memoria de programa
Memoria de datos
Recursos auxiliares
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 4
MEMORIA
DE
PROGRAMA
PROCESADOR
MEMORIA
DE
DATOS
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 5
26
para
Esquema simplificado
del mdulo OEM BS2
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 6
Pag. 7
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.
Pag. 8
INPUT R
LET S=3.14*R*R
PRINT S
END
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 9
Pag. 10
dos
elementos
principales
del
mdulo
BASIC
Stamp
son
el
microcontrolador grabado con el Intrprete PBASIC y la EEPROM que
contiene el programa editado en el PC, pero tambin existen otros
elementos auxiliares.
La
memoria
EEPROM que utiliza
el
mdulo
OEMBS2_IC
es
la
denominada
24LC16B, en la que
se
almacena
el
programa en PBASIC
recibido desde el PC.
Las
caractersticas
ms importantes de
esta memoria son:
Capacidad: 2KB
Ciclos de escritura/lectura: 1 milln
Velocidad de escritura: 10 ms
Frecuencia de funcionamiento: 400 KHz
Tensin de funcionamiento: de 2,5 a 5,5 VDC
Las memorias EEPROM pueden ser ledas y escritas. No son
voltiles, es decir, la informacin almacenada se mantiene an despus
de desconectar la alimentacin.
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 11
W 1 45 56 * 4 / 2
PBASIC resolvera la expresin de la siguiente forma:
45 56 101
101 * 4 404
404 / 2 202
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 12
W 1 45 56 * 4 / 2
56 * 4 224
224 / 2 112
112 45 157
Otro condicionante importante que se ha de tener en cuenta, es que
PASIC no admite nmeros fraccionarios por lo que, a ttulo de ejemplo,
3,1459 se debe expresar como 22/7.
En PBASIC todas las operaciones matemticas se realizan con
cantidades positivas y con nmeros enteros de 0 a 65535 (216 dgitos
binarios). Si se utilizan cantidades negativas, en ese caso, los valores
mximos y mnimos estaran comprendidos entre +32767 y -32767
En la siguiente tabla se indican los smbolos utilizados para las
diversas operaciones posibles en PBASIC
SMBOLO
OPERACIN
Suma
+
Resta
Multiplicacin
*
Multiplicacin de doble precisin (devuelve mas de 16 bits)
**
Divisin
/
Divisin (devuelve el resto)
//
Limita el valor ms bajo
MIN
Limita el valor ms alto
MAX
Retorna el dgito especificado de un nmero
DIGIT
Desplazamiento de bits a la izquierda
<<
Desplazamiento de bits a la derecha
>>
Inverso de los bits del nmero especificado
REV
Operador lgico AND
&
Operador lgico OR
|
Operador lgico XOR
^
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 13
caracteres
de
control),
nmeros
decimales
(0-65535),
hexadecimales
($0000-$FFFF)
o
nmeros
binarios
%1111111111111111).
Ejemplo:
W1 = 68
DEBUG W1
Muestra la letra D, cuyo cdigo ASCIL es 68
DEBUG ?W1
Muestra el valor de la variable W1=68
DEBUG Fin
Muestra el mensaje Fin
nmeros
(hasta
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.
W1= 199
W2= 100
W3= W1 + W2
W4= W2 W1
DEBUG SDEC ?W3
DEBUG SDEC ?W4
El resultado mostrado ser: W3 = 299 W4= -99
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 14
W1= 50
W2= 3
W3= W1 / W2
W4= W1 //W2
DEBUG ?W3
DEBUG ?W4
El resultado mostrado ser: W3 = 16 W4=2
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 15
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 16
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 17
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 18
LUZ Y SONIDO, CR
HIGH 0
LOW 15
PAUSE 2000
DEBUG SUENA, CR
LOW 0
HIGH 15
PAUSE 3000
GOTO INICIO
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 19
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.
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 20
1 bit
4 bits
8 bits
16 bits
21
24
28
216
Elementos
Valores
decimales
posibles
2
16
256
65536
(0-1)
(0-15)
(0-255)
(0-65535)
Practica de control
Se propone al lector la siguiente prctica:
Se pretende controlar dos LEDs conectados a los pins 0 y 1 y
un zumbador conectado a la patilla 3 mediante un interruptor conectado al
pin 5, de forma que se cumpla la siguiente secuencia:
Si el pin 5 est a nivel bajo luce el diodo LED1 conectado en el pin
0 durante 100 ms estando los pins 1 y 3 a cero (LED2 y zumbador
apagados).
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 21
nombre_variable
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)
Tamao
BIT
NIB
BYTE
WORD
N mx. de elementos
208
52
26
13
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 22
VAR byte
VAR Dog
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 23
?cuerpo_humano, CR
?cabeza, CR
?extremidades, CR
?ojos, CR
?nariz, CR
?oido, CR
?boca, CR
?pie_izquierdo, CR
7. CONSTANTES EN PBASIC
7.1 DECLARACIN DE CONSTANTES EN PBASIC
Las llamadas constantes pueden ser creadas de manera similar a
las variables. A veces, puede ser ms conveniente utilizar un nombre de
constante en lugar de un nmero.
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 24
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).
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 25
COMIENZO:
HIGH
pinLED
PAUSE
Intervalo
LOW
pinLED
PAUSE
Intervalo
GOTO COMIENZO
OUT4 =1
OUT5 =0
OUT6 =1
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 26
DPTO. DE TECNOLOGA
J.Garrigs
ESQUEMA DE CONEXIONADO
INTERRUPTOR
P6
DIODOS LED
P5
P4
P1
Pag. 27
GND
+5V
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.
NARANJA
Ea
LIMN
En
El
Botonera
a
Vaso
Pulsador NC
Pag. 28
Variables de entrada
Variables de salida
Ea
En
El
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:
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:
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 29
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.
electrovlvula del agua, considerando la propiedad del lgebra de Boole que indica que A+A=A
obtenemos:
Ea a * n * l a * n * l a * n * l
Ea a * n * l a * n * l a * n * l a * n * l
Sacando factor comn del primer y segundo sumando y del tercero y cuarto
respectivamente, y simplificando tenemos:
Ea a * n * ( l l ) a * l * ( n n )
Ea a * n a * l
Ea a * ( n l )
Si nos hubiramos decantado por la simplificacin a travs de los mapas de Karnaugh
el proceso sera el siguiente:
a) Dibujamos un mapa con las tres variables de entrada:
a
b) Dibujamos un uno en cada uno de los cuadros que se corresponden con los tres
sumandos
de
la
ecuacin
de
partida
de
la
electrovlvula
del
agua:
Ea a * n * l a * n * l a * n * l
Lazo B: a * n
Ea a * l a * n
DPTO. DE TECNOLOGA
J.Garrigs
Lazo A
Lazo B
Pag. 30
Ea a * ( n l )
Sea cual sea el mtodo utilizado, llegamos a la conclusin que las ecuaciones
simplificadas de nuestro problema son:
Ea a * ( n l )
En a * n * l
El a * n * l
4 Fase. Representacin del circuito elctrico y de puertas lgicas:
Ser este el momento, que en este caso particular, elegiremos para colocar el pulsador
del vaso.
Circuito elctrico:
Pulsador del vaso
a
Ea
En
El
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 31
naranja:
'ETIQUETA DE LA ECUACION DE SALIDA DE LA ELECTROVLVULA DE LA
NARANJA
DEBUG "naranja y agua", CR
salida_Ea=1
salida_En=1
salida_El=0
GOTO INICIO
limon:
'ETIQUETA DE LA ELECTROVLVULA DEL LIMON
DEBUG "limon y agua ", CR
salida_Ea=1
salida_En=0
salida_El=1
GOTO INICIO
DPTO. DE TECNOLOGA
J.Garrigs
DIODOS LED
El
En
Ea
P2
P1
P0
GND
+5V
P_Agua
P_Naranja
P_Limn
ESQUEMA DE CONEXIONADO
Pag. 32
330
330
330
330
330
330
330
dp
330
P0
P1
P2
P3
P4
P5
P6
P7
AC
+5 V
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.
Pag. 33
NMERO
P7
P6
P5
P4
P3
P2
P1
P0
VISUALIZADO
dp
Para programar esta prctica se emplearn tres nuevas instrucciones cuya descripcin
es la que se indica:
FREQOUT Pin, Duracin, Frecuencia : Mediante esta instruccin se saca por el pin
indicado una onda casi senoidal de la frecuencia indicada y con una duracin dada en
milisegundos por el parmetro Duracin.
Ejemplo: FREQOUT 12, 10, 2000 genera por el pin 12 una frecuencia sinusoidal de
2000 Hz durante 20 ms
READ Dato, Destino: Lee el valor que contiene la posicin de la memoria EEPROM
definida por el parmetro Dato y lo deposita en la variable Destino.
Ejemplo: READ MEM, Conta lee el calor contenido en la posicin MEM de la
EEPROM y lo deposita en la variable Conta.
Montaje prctico.
La figura nos muestra la disposicin de elementos de la prctica.
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 34
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
Se
comienza
por
declarar
las
binarios
representacin
de
necesarios
los
para
nmeros
en
la
6
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 35
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.
DCD
Devuelve la potencia en base 2 de un rango de exponentes
N mximo
de elementos
BIT
208
NIB
52
BYTE
26
WORD
13
entre el 0 y el 15.
En otras palabras :
B0 = DCD 4 Muestra el B0= como %0001 0000
Es decir, determina la posicin del bit de la variable
que se pondr a 1 comenzando a contar desde 0, cuyo
valor representado en decimal es 24=16
La nomenclatura es:
Variable_destino =DCD nbit
En el siguiente ejemplo de programacin se
puede observar los distintos valores que va tomando
una variable (W1 para el ejemplo) desde 0 a 15, que es
representado en forma binaria y decimal.
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 36
<<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
Corre la cifra 4 lugares hacia la izquierda y rellena hacia la derecha cuatro lugares con ceros.
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 37
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
P7
P6
P5
P4
P3
P2
P1
P0
GND
+5V
montaje:
P8
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 38
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)
f 30 Hz
1
1
0,0333 s T 33,3 ms
f 30
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 39
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 ms iluminado
Recuerde
que
este
perodo
se
repite
constantemente
en
el
tiempo:
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 40
A= Pin 14
B=Pin 15
La instruccin PWM
La instruccin PWM pin, duty, nciclos: genera una onda modulada de anchura de
pulsos por el pin indicado. La anchura de cada pulso viene determinada por duty (0-255) y el
nmero de pulsos generados se ha de especificar en nciclos en un valor correspondiente
entre 0 y 255.
Cada ciclo tiene una duracin de 1 ms, pudiendo valer duty desde 0 a 255 ms.
Los pines utilizados para el PWM se deben configurar como salidas durante la
ejecucin del programa, pasando a ser entrada al terminar la instruccin a fin de evitar daos
en el microcontrolador.
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 41
Tal y como se puede apreciar se han montado dos LED para indicar el sentido de giro
del motor, que vendr determinado por el estado del pin 8.
Programa
DECLARACION DE VARIABLES
VELOCIDAD VAR Byte
'DECLARACIN DE CONSTANTES
DIODO_I CON 12
DIODO_D CON 11
'CONFIGURACIN DE LAS ENTRADAS/SALIDAS
DIRD=%1111
' Ponemos el tercer NIBBLE como salidas. No es necesario 'configurar los pines de entrada porque cuando
Arranca 'BASIC STAMP tiene todos los pines como entradas por defectINICIO:
'COMENZAMOS CON UN CONDICIONAL QUE PERMITA ELEGIR EL SENTIDO DEGIRO
INICIO:
IF IN8=0 THEN GIRO_DERECHAS
GIRO_IZQUIERDAS:
HIGH DIODO_I
LOW DIODO_D
VELOCIDAD=INL
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
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 42
poderoso, pues nos permite depurar los programas por la posibilidad de mostrar los estados de
distintas variables y/o mensajes.
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 43
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:
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 44
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)
maniobra, si el nivel de tensin sobrepasa los niveles lgicos para VIH y VIL. Por ejemplo, el
circuito integrado SN74LS04 es un inversor sxtuple y el fabricante nos garantiza que si la
tensin de entrada VIL es menor de 0,8 V se considerar un nivel lgico LOW (cero) y para
garantizar que el circuito integrado considera un nivel de entrada lgico alto VIH (uno)
la
tensin ha de ser 2<VIH<5 . Y qu pasa entre 0,8 y 2?, pues que el circuito integrado lo puede
tomar como cero o como uno, pero adems eso no es todo, es normal que en una misma
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 45
5V
2V
0,8 V
esquemticamente
el
efecto
0V
sean
despreciados,
en
definitiva
nicamente
Como es natural hay que alimentar el circuito integrado con + 5V (VDD) a la patilla 14 y
GND (VSS) a la patilla 7 de dicho C.I.
+ 5V
Sensor de
contacto
derecho
13
12
Pin 7
+ 5V
Pin 8
Sensor de
contacto
izquierdo
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 46
DEBUG CRSRXY, 0, 3,"P7 = ", BIN1 IN7," P8 = ", BIN1 IN8 'Visualiza en columna 0, fila 3 los datos
PAUSE 50
' espera 50 ms
LOOP
La ventana Debug Terminal muestra el estado de los sensores (en la figura esta
activado el del lado derecho).
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 47
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.
El comando DTMFOUT
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.
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
09
Dgitos del 0 al 9
10
Asterisco (*)
11
Almohadilla (#)
12-15
Ejemplo: Imaginemos que deseamos marcar el nmero 967 21 03 11 a travs del pin 8
DTMFOUT 8, [9,6,7,2,1,0,3,1,1]
Si se desea retardar el paso de marcar, para acomodar una lnea telefnica ruidosa se
podran utilizar los valores opcionales OnTime y OffTime.
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 48
A1
IC
10 / 1W
A2
1N4007
RB = 2200
IB
VRB
10 / 1W
600
600
1k / 1W
Transformador
Vcc = + 12 V
100 nF / 100V
ENTRADA DE PULSOS
DESDE EL PIC
1 nF / 100V
BD135
Zener 3,9V
1N5228BCT-ND
V BE
El
propsito
de
los
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 49
frecuencia del PWM, dejando salir solamente el audio de una frecuencia ms baja detrs.
Eliminndoles algunos armnicos generados.
Los circuitos demostrados aqu son solamente un punto de partida; se puede disear o
utilizar un filtro paso bajo activo alrededor de los 2 Khz.
Tabla de frecuencia para generar lo DTMF
1029 Hz
1336 Hz
1477 Hz
1663 Hz
697 Hz
770 Hz
852 Hz
941 Hz
En caso de
que
se
desee
interpretar
estas
seales, existe en
el
mercado
una
gama de circuitos
integrados que se
llaman
DTMF
Decoder. Se puede
ver un ejemplo en
la s figura.
DPTO. DE TECNOLOGA
J.Garrigs
Tecla
Q1
Q2
Q3
Q4
1
2
3
4
5
6
7
8
9
0
*
#
A
B
C
D
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
Pag. 50
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 51
'Borra la pantalla
'Asigna a la variable SALIDA valor 0
'Se inicia un bucle que asigna a I los valores que van de 0 a 15
'Asigamos a la variable SALIDA el valor 2^I
DEBUG DEC2 I,"-",BIN16 SALIDA,"-",DEC5 SALIDA, CR 'Se muestra en pantalla el valor de I , el valor de
'la variable SALIDA en BINARIO y el valor de la
'variable SALIDA en DECIMAL con formato de 5 dgitos
PAUSE 500 'Se hace una pausa de 0,5 seguntos antes de repetir el bucle
NEXT
STOP 'Fin de programa
Se puede hacer una ligera variacin del programa anterior para hacer un complemento
a 1 del valor binario anteponiendo el smbolo ~ al operador DCD, con lo que la salida sera:
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 52
FIN:
PAUSE 2000
STOP
Pag. 53
P9
GND
+5V
a
b
c
d
e
f
g
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
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 54
DIRD=0
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 55
INICIO:
OUT8=0
OUT11=0
OUTL=$FF
AUX=NCD IND
DEBUG ?AUX
BRANCH AUX,[INICIO, UNO, DOS, TRES, CUATRO] ' Si AUX vale cero se va a la etiqueta INICIO. Si el bit 12
' est a 1 y los bits 13, 14 y 15 estn a cero salta a la
' etiqueta UNO. Si el bit de mayor peso puesto a 1 fuera el
' bit 13 saltara a la etiqueta DOS y as sucesivamente.
UNO: OUTL=%11111001
' Muestra un 1 en el display de nodo comn
GOSUB DESCOLGAR
' Salta a la subrutina DESCOLGAR
DTMFOUT 10,[6,7,6,0,1,6,3,0,6]
' Marca por la patilla 10 el nmero de telfono indicado
GOTO CONVERSACION
' Direcciona la ejecucin del programa a la etiqueta CONVERSACION
DOS: OUTL=%10100100
GOSUB DESCOLGAR
DTMFOUT 10,[9,6,7,2,1,5,3,5,4]
GOTO CONVERSACION
TRES: OUTL=%10110000
GOSUB DESCOLGAR
DTMFOUT 10,[9,6,7,0,1,6,3,0,6]
GOTO CONVERSACION
CUATRO: OUTL=%10011001
GOSUB DESCOLGAR
DTMFOUT 10,[8,7,8,0,1,5,3,8,0]
GOTO CONVERSACION
CONVERSACION:
FOR vueltas=0 TO 5
PAUSE 150
OUTL=~DCD vueltas
' Etiqueta que nos indica que la lnea telefnica est abierta tras el marcado del nmero
' Ejecuta un bucle FOR NEXT para juego de luces de gusano girando
' Espera 150 ms
' Asigna al byte bajo bit0 al bit 7 el complemento a 1 (~) de 2^vueltas.
' El complemento a 1 se hace por ser el display de nodo comn y necesitar ceros
' en las entradas a,b,c,d,e,f,g para su activacin
IF IN9=1 THEN INICIO 'Si pulsador=1 cortamos la conversacin y para la ejecucin del bucle
NEXT
GOTO CONVERSACION
DESCOLGAR:
OUT8=1
OUT11=1
PAUSE 2000
DTMFOUT 10,[0]
PAUSE 1500
RETURN
' Marca un 0 por el pin 10 entendiendo que estamos en un lugar con centralita telefnica
' Espera 1,5 segundos a que la centralita nos de tono de marcado
' Retorna la ejecucin del programa al punto de inicio de la subrutina
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 56
Vcc = + 12 V
C
600
600
A2
1N4007
P15
P14
P13
RB = 2200
IB
VRB
10 / 1W
100 nF / 100V
ENTRADA DE PULSOS
DESDE EL PIC
1 nF / 100V
BD135
Zener 3,9V
1N5228BCT-ND
V BE
GND
+5V
1k / 1W
Transformador
10 / 1W
A1
LNEA
TELEFONICA
P12
P9
Colgar
P8
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 57
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
el
En la imagen se
muestra
un
rotacin
PARALLAX
servomotor
servo
continua
y
de
de
un
FUTABA
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 58
disposicin de cables
Hz
50
50
50
40
50
50
+ batt
rojo
rojo
rojo
rojo
rojo
rojo
-batt
negro
negro
marrn
negro
negro
azul
Control.
blanco
amarillo
naranja
amarillo
blanco
negro
Los servos Futaba y Parallax que utilizaremos en este curso y tienen las siguientes
caractersticas:
Peso = 45 gramos
Medidas
40,5 x 20 x 38 mm
2,5 ms
0,5 ms
20 ms /50 Hz
20 ms /50 Hz
20 ms /50 Hz
180
90
DPTO. DE TECNOLOGA
J.Garrigs
1,5 ms
Pag. 59
No
obstante,
en
la
Para ello,
introduciremos a la entrada de
control una onda cuadrada de
periodo 20 ms, de forma que en
cada periodo se produzca un
pulso
1,5
ms.
En
estas
5000 * 2 s *
1 ms
10 ms
1000 s
Para utilizar este comando se debe declarar previamente como salida el pin por donde
se van a generar los pulsos. Por otro lado, la polaridad del pulso depender tambin del estado
lgico anterior en que se encuentra el pin de salida. De este modo, si el pin se encuentra a
nivel lgico bajo, el pulso ser positivo, pero si se encuentra a nivel lgico alto el pulso ser
negativo. Esto ltimo se puede apreciar en los siguientes ejemplos.
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 60
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 61
'Hacemos bucles sumando 50 unidades al valor 750 iniciales hasta llegar a los
'1200 de limite mx que se corresponden con los 180 tras las pruebas
'La primera vez que recorre el bucle el pulso es 750+50=800
'Esperamos 20 milisegundos
'Muestra en pantalla el valor del pulso
' Incrementamos el valor de la variable P con cada pasada del bucle
' Paramos el eje 1 segundo
PAUSE 2000
'CENTRADO DEL EJE DEL SERVO EN POSICIN 90
FOR x=1 TO 20
PULSOUT servo,750
PAUSE 20
'Generamos una pausa de 20 ms -duracin del periodo
NEXT
PAUSE 1000
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 62
GND
+5V
Futaba
S3003
GND
+5V
mxima, el
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 63
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
www.parallax.com
www.parallax.com
GND
CONTROL
GND
+5V
CONTROL
Vdd = 5V
Vdd = 5V
Vss = 0 V
Vss = 0 V
20 ms
+5V
20 ms
1,3 ms
1,7 ms
GIRO ANTITRIGONOMTRICO
A VELOCIDAD MXIMA
GIRO TRIGONOMTRICO
A VELOCIDAD MXIMA
' Etiqueta
' Si el Pin 5 esta a 1 fundiona el motor, si est a cero no funciona
' Genera un pulso de 1,3 ms (650 x 2 us x 10E-3 = 1,3 ms)
' Espera 20 ms
FIN:
' Etiqueta
GOTO INICIO
' Salto incondicional a la etiqueta INICIO
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 64
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
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:
N Pulsos
1,7
850
2 * 10 3
Finalmente
considerando
la prctica 8
(Control
sensores
de
de
control
de
servomotores
de
los
rotacin
elaboracin
programa
robot
que
un
permita
al
construido
prcticas
(ver
navegacin
forma
de
que
en
imagen)
autnoma
al
las
la
de
detectar
atrs
un
par
de
segundos y gire al lado contrario al sensor de contacto activado para salvar el obstculo.
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 65
de
caractersticas
mm
puede
de
verse
dimetro
a
cuyas
travs
del
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 66
DETECTOR IR TSOP312_ _
DETECTOR IR TSOP48_ _
Los receptores de IR que usaremos en las prcticas llevan incorporados unos filtros
pticos que permiten nicamente el paso de luz infraroja de longitudes de onda prximas a los
980 nm. Adems, incorporan un filtro electrnico que impide el paso de seales cuya
frecuencia no est comprendida entre los 25 kHz y los 55 kHz aproximadamente (ver la grfica
anterior para un detector de IR de 38 kHz ). Se
puede apreciar que el detector es ms sensible a
las frecuencias prximas a su valor nominal o
asignado. De este modo, se consigue que el
detector sea inmune a otras frecuencias de
emisin como la luz diurna o la del alumbrado
artificial. Todo lo anterior, a efectos prcticos,
influye en la forma de enfocar el emisor al
receptor (ngulo enfoque) y en la distancia de
emisin-recepcin. En el caso particular de los
pequeos robot mviles, se suelen emplear estos
dispositivos para detectar objetos, de modo que,
el receptor capte la onda previamente emitida al
ser rebotada por un objeto .
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 67
Los esquemas elctricos de conexin de estos componentes son los que se muestran
en los siguientes circuitos:
ESQUEMA DE CONEXIN DE
UN DIODO EMISOR DE IR
PIC
1000
A
1
2
220
PIC
+ 5V
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 68
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.
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
1
2
1
2
GND
+ 5V
GND
+ 5V
1000
220
220
1000
GND
+5V
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 69
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 70
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).
rea marcada
Vista superior
Vcc=+5V
82
en la figura:
E
rea marcada
HEF 40106
PIC
VISTA SUPERIOR
DEL CNY 70
2,5 mm.
DPTO. DE TECNOLOGA
J.Garrigs
10 k
Pag. 71
LADO IZQUIERDO
DEL MICROBOT
LADO DERECHO
DEL MICROBOT
LADO DERECHO
DEL MICROBOT
Vcc=+5V
suficientemente
clara), la
luz
se
LADO IZQUIERDO
DEL MICROBOT
rea marcada
K
VISTA SUPERIOR
DEL CNY 70
HEF 40106
PIN 5
10 k
82
oscuro)
el
rea marcada
transistor
LADO DERECHO
DEL MICROBOT
K
VISTA SUPERIOR
DEL CNY 70
HEF 40106
PIN 4
10 k
DPTO. DE TECNOLOGA
J.Garrigs
Vcc=+5V
Pag. 72
En definitiva, con el montaje de la figura podemos concluir que en los pines del
microcontrolador tendremos:
Con el programa anterior la ventana DEBUG Terminal mostrar los siguientes resultados:
Los dos sensores sobre la superficie negra
Sensor del lado derecho sobre superficie blanca y el izquierdo sobre negra
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 73
Sensor del lado izquierdo sobre superficie blanca y el derecho sobre negra
Como ejercicio, se propone al lector que realice un programa que permita al microbot
seguir una lnea negra y se pare si dicha lnea se corta.
DPTO. DE TECNOLOGA
J.Garrigs
Pag. 74