Está en la página 1de 7

UNIVERSIDA NACIONAL DEL CALLAO

FACULTAD DE INGENIERÍA ELECTRICA Y ELECTRÓNICA


DEPARTAMENTO DE INGENIERÍA ELECTRONICA

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

Entradas/salidas digitales en el dsPIC30F4013


A partir de la configuración de pines vamos a ver los puertos de que dispone este microcontrolador.

PORTA 1 pin. RA11


PORTB 13 pines. RB0 a RB12
PORTC 3 pines. RC13, RC14 y RC15
PORTD 6 pines. RD0, RD1, RD2, RD3, RD8, RD9
PORTE Ningún pin.
PORTF 7 pines. RF0 aRF6

En resumen tenemos 30 pines de entrada y salida.


Cada una de ellas puede ser entrada o salida independientemente de las otras, aunque algunas tienen
alguna peculiaridad.
1
La configuración de pines puede parecer absurda, ya que por ejemplo, el puerto A solo tiene el pin RA11; esto
se debe a que existen micros con más pines que tendrán los puertos completos y al tener que seleccionar
solamente 30 pines nos hemos quedado con los más importantes (el pin RA11 también es el pin de
interrupción externa, RC13, RC14 y RC15 tienen otras funciones como comunicación serie).
En el diagrama de pines del micro se observa que la mayoría de pines tienen varios nombres, cada nombre se
refiere a una de sus funciones.

Programación de los puertos de entrada/salida paralelos


En general, los puertos de entrada/salida tienen un funcionamiento similar.
Para cada puerto existen tres registros:
1. TRISX
2. PORTX
3. LATX. La X indica cualquiera de los puertos que tiene el microprocesador, A, B, C, D, E o F.
REGISTRO TRISX
Este registro sirve para indicar si un pin va a ser salida o no.
Un 0 en un bit de este registro indica que el pin correspondiente es una salida.
Un 1 indica que el pin es entrada.
Siendo más preciso no es exactamente así, los pines siempre funcionan como entrada, y cuando ponemos el
bit TRIS correspondiente a 1 indicamos que ponemos la salida en alta impedancia, y por lo tanto no funciona
como salida, pero cuando ponemos TRIS a 0 la salida impone su nivel, pero al mismo tiempo siempre
funciona como entrada, aunque salvo algún problema en el circuito (por ejemplo una salida cortocircuitada a
masa), deberemos leer lo que hemos escrito en la salida.
Además, podemos también leer la palabra TRISX, conociendo lo que previamente habíamos escrito en
TRISX.

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

CIRCUITO EXPERIMENTAL USANDO EL 30F4013

PROGRAMACION 2
Desarrollo del programa en asembler

Programa en el MPLAB USANDO EL 30F4013


.equ __30f4013,1
.include "p30f4013.inc"
4
; Configuration bits:
;..............................................................................
config __FOSC,CSW_FSCM_OFF&XT_PLL4 ;use cristal oscilador con el 4x PLL
config __FWDT,WDT_OFF ;Desabilitado Watchdog Timer
config __FBORPOR,PBOR_ON&MCLR_EN
;Set Brown-out Reset voltage and
;and set Power-up Timer to 16msecs
config __FGS,CODE_PROT_OFF ;Desabilitado protecion de codigo
;****** Declaración de variables y subprocesos *******
.equ cont,#0x0810
.equ cont1,#0x0812
.global xx
.global yy
.global __reset
.text
;****Programa principal ******
__reset:
goto main
.org 100

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:

 Podemos detener el proceso mediante un interruptor en el puerto D0 del pin


34 para parar el motor dc de forma manual.

También podría gustarte