Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LABORATORIO DE MICROCONTROLADORES
LABORATORIO NRO.02
TITULO: CONTROL DE PUERTOS Y DESARROLLO DE RETARDOS
INTRODUCCION
La tarea más básica que podemos hacer con un microprocesador es sustituir a un circuito combinacional o
secuencial.
Podemos encender una luz para cierta combinación de entradas, conectar un bomba cuando el nivel de un
depósito sea menor de cierto umbral y pararla cuando supere otro umbral, activar una alarma cuando se active
algún sensor y la alarma esté armada, etc.
Para poder hacer estas cosas, el microprocesador necesitará tener entradas y salidas digitales, igual que las de
cualquier puerta lógica.
El microprocesador dsPIC30F4013 tiene 30 patillas que pueden ser, a voluntad nuestra, entradas o salidas,
de forma que podemos hacer, por ejemplo, un circuito secuencial con 10 funciones y15 entradas. De
todos modos, el tiempo de respuesta de esas funciones es mucho mayor que el de las funciones realizadas
con puertas lógicas, aunque en la mayoría de los casos ese tiempo no es demasiado importante; que la
alarma suene 1 milisegundo después de abrir la puerta no parece grave.
Ahora bien, estas entradas y salidas digitales tienen niveles pequeños, típicamente de 0 a 3,3 V o de 0 a 5 V,
por lo que necesitaremos unos circuitos que harán de interface entre estos niveles (0 a 3,3 V o DE 0 A 5v) y
los niveles con los que estemos trabajando, 220 VAC, 24 VDC o cualquier otra tensión
REGISTRO PORTX
Con este registro nos comunicamos con el exterior.
Al leer el registro leemos un 0 si la tensión en la entrada está a nivel bajo y un 1 si la tensión está a nivel alto,
al escribir el registro hacemos que fuera aparezcan 0 V. o 5 V (3,3V.). Dependiendo de si hemos escrito un 0
o un 1. El nivel alto y el bajo no son valores fijos, sino que hay un margen de valores posibles.
REGISTRO LATX
Este es un registro que no existía en otros micros, y podemos realizar programas sin utilizarlo.
Este registro es el LATCH de salida. Una escritura en PORTX y en LATX hacen exactamente lo mismo,
escriben en el LATCH y si está configurado como salida, el valor aparece en el pin de salida.
En la lectura es donde se diferencian. En los pines que solo son entradas no coincidirá LATX y PORTX. En
las que además son salidas, normalmente leeremos lo mismo de las dos formas, pero si fuera hay un
cortocircuito y en PORTX o LATX hemos escrito un 1, al leer LATX obtendremos el 1, pero al leer PORTX
leeremos un 0, ya que es la tensión que realmente hay en el pin. Al leer LATX leemos el último valor escrito
por medio de PORTX o LATX y al leer PORTB leemos directamente el valor de tensión del pin (1 o 0).
Nota: Aunque podríamos utilizar indistintamente PORT y LAT para escribir datos, en el puerto B ocurren
cosas extrañas. Para evitar ese problema debemos usar siempre LAT para escribir datos y PORT para leer. De
este modo todos los puertos funcionan como se espera.
Caso:
TRISB = 0b1111000011110101;
// Los pines RB15, RB14 y RB13 no existen en este micro. Los configuramos
// como entradas, pero podemos también configurarlos como salidas
// Los pines RB11, 10, 9, 8, 3 y 1 son entradas y salidas
// Los pines RB12, 7, 6, 5, 4, 2 y 0 son entradas
LATB = 0b1010101000111100;
// A los pines que son entradas o que no existen no les pasa nada
// Los pines salidas si que serán afectados:
2
// RB11=1 RB10=0 RB9=1 RB8=0 RB3=1 RB1=0
Entrada = PORTB;
// Cada bit de la variable entrada tomará un valor dependiendo
// de la tensión que haya en el pin correspondiente. En los pines que no existen se lee 0
// Los bits que son salidas leerán el valor que se había escrito
// salvo algún problema en el circuito externo, un cortocircuito,
// varias salidas en paralelo, etc
// Los bits que son exclusivamente entradas leerán un 0 o 1 dependiendo de la
// tensión externa.
Registros utilizados en las entradas salidas paralelo
Por defecto todos los pines están configurados en su función de E/S digital y además siempre como entrada.
Existe una excepción, que más bien parece un fallo en el diseño del microcontrolador. Para poder utilizar los
pines del Puerto B como entradas/salidas digitales hay que indicar en el registro ADPCFG que no se va a
utilizar la entrada analógica correspondiente a ese pin.
Los pines del RB0 al RB12 pueden ser también entradas analógicas.
Si no vamos a utilizar ninguna entrada analógica diremos que los 13 pines son digitales:
ADPCFG=0bXX11111111111111; // X indica que da igual lo que pongamos 0 o 1.
Obviando este problema podemos decir que por defecto todos los pines del micro funcionan como
entrada/salida paralelo. Si se utilizan para alguna otra función dejarán de tener esta función inicial .
LM293
El integrado L293D incluye cuatro circuitos para manejar cargas de potencia media, en especial pequeños
motores y cargas inductivas, con la capacidad de controlar corriente hasta 600 mA en cada circuito y una
tensión entre 4,5 V a 36 V.
Los circuitos individuales se pueden usar de manera independiente para controlar cargas de todo tipo y, en el
caso de ser motores, manejar un único sentido de giro. Pero, además, cualquiera de estos cuatro circuitos sirve
para configurar la mitad de un puente H.
El integrado permite formar, entonces, dos puentes H completos, con los que se puede realizar el manejo de
dos motores. En este caso el manejo será bidireccional, con frenado rápido y con posibilidad de implementar
3
fácilmente el control de velocidad.
ENUNCIADO
Este LABORATORIO presenta el diseño de un prototipo que permitirá el control total de la transmisión de
potencia en un motor DC (corriente continua), de tal manera, que se pueda ajustar el sentido de giro del motor
mediante un interruptor , ajustándose a las necesidades del usuario
La transmisión de potencia al motor, se realizará utilizando una etapa de potencia controlada por el
microcontrolador dsPIC30F4013
OBJETIVOS
En este laboratorio tal como se ha comentado en el apartado anterior (manejo de los puertos) , se centrará en
la recopilación de las configuraciones esenciales para el control óptimo del motor, con los componentes que
existen hoy en día y con una configuración fácil de ajustar, incluyendo la regulación del sentido de giro del
motor , posteriormente se realizara el control de velocidad
PROGRAMACION 2
Desarrollo del programa en asembler
main:
nop
;**********Configuracion de puertos*****
mov #0x0000,W0
mov W0,TRISB
mov #0xFFFF,W0
mov W0,TRISD
;*****************
bucle: BTSC PORTD,#00 ; El BIT 0 chequear interruptor salta si es cero o cerrado
call apagado
call prendido
;***************
apagado: mov #0x0000,W0
mov W0,PORTB
bra bucle
prendido: call xx
BTSC PORTD,#00
bra bucle
call yy
bra bucle
;****************
xx:
mov #0x0001,W1
mov W1,PORTB
call delay
return
yy:
mov #0x0002,W1
mov W1,PORTB
call delay
return
;*********************
delay: ;Subrutina de Retardo en alto
mov # 0xffff ,W2
mov W2,cont
5
YY: mov # 0x00ff, W1
mov W1,cont1
XX: dec cont1
bra NZ,XX
dec cont
bra NZ,YY
return
;******************
.end
Experimentalmente:
6
DIAGRAMA DE FLUJO
Conclusión: