Está en la página 1de 53

PROGRAMACION DE MICROCONTROLADORES PIC

UTILIZACION DE HERRAMIENTAS DE DESARROLLO

Objetivos
En esta etapa del curso se plantean los siguientes objetivos: Brindar los conocimientos relativos al uso de las herramientas de desarrollo mas utilizadas. Utilizar dichas herramientas para desarrollar programas que permitan afianzar los conceptos tericos. Evaluar el comportamiento de los programas realizados en un circuito de evaluacin de desarrollo.

Pasos en el desarrollo de una aplicacin


Al desarrollar una aplicacin basada en microcontrolador, es importante seguir una secuencia ordenada de pasos. Esta secuencia se puede resumir en los siguientes puntos: Crear el diseo: en funcin de las caractersticas y performance deseadas, seleccionar el microcontrolador que mejor se ajuste a la aplicacin, y luego disear la circuitera asociada. Escribir el firmware, que es el software que controlar al hardware. Compilar el software, a fin de convertirlo en un cdigo entendible por el microcontrolador. Testear el cdigo. Es comn que un programa no funcione tal cual lo esperado la primera vez, por lo que es necesario detectar y corregir los posibles errores. Grabar el cdigo en el microcontrolador y verificar que se ejecute correctamente en la aplicacin final.

Herramienta de Desarrollo
Para llevar a cabo los pasos anteriores se utiliza lo que se denomina Herramienta de Desarrollo. Se entiende por una Herramienta de Desarrollo a un conjunto de programas que se ejecutan en una PC y que asisten al programador en las tareas de escribir, depurar y programar cdigo para un microcontrolador particular. En este curso utilizaremos la herramienta de desarrollo MPLAB IDE, la cual es una de las mas completas que existen. Esta herramienta es desarrollada por Microchip como soporte a su lnea de microcontroladores.

Herramienta de Desarrollo
MPLAB permite al diseador realizar, entre otras, las tareas de: Creacin y edicin del cdigo fuente mediante un editor incorporado. Ensamblar, compilar y linkear cdigo fuente. Depurar y controlar el funcionamiento del programa mediante un simulador incorporado. Realizar mediciones de tiempo con el simulador. Observar el valor de las variables del programa. Grabar el programa en el microcontrolador.

Utilizacin de MPLAB IDE


Con el fin de familiarizarnos con el uso de MPLAB, comenzaremos por desarrollar una aplicacin sencilla. Comencemos ejecutando MPLAB de la siguiente manera: botn Inicio>Programas>Microchip>MPLAB IDE>MPLAB IDE. Hecho esto deber verse la siguiente ventana:

Utilizacin de MPLAB IDE


Antes que nada escribiremos una plantilla, que es un muy reducido archivo de cdigo que se utilizar frecuentemente. Una plantilla se crea por nica vez, y se utiliza como punto de partida al desarrollar posteriores proyectos. Para crear la plantilla haremos lo siguiente: en MPLAB seleccionar File>New. Con esto se abrir una ventana de edicin en blanco. En la misma escribir el siguiente cdigo (dejando un espacio de tabulacin a la izquierda):

list p=16F84A ;directiva que define el procesador #include <p16F84A.inc> ;definicin de variables especficas del procesador __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ORG 0x000 ;vector de reset del procesador

END

;final del programa

A continuacin guardamos la plantilla. Seleccionar File>Save y guardar el archivo como D:\ProgPIC\Plantillas\16F84A.asm

Utilizacin de MPLAB IDE


La plantilla debera haber quedado de la siguiente forma:

Utilizacin de MPLAB IDE


Veamos el cdigo escrito. La primera lnea es:
list p=16F84A ;directiva que define el procesador

Esta lnea le indica al compilador que el cdigo escrito se aplicar al dispositivo 16F84A de la lnea PIC. De esta forma el compilador tambin sabr cual es la capacidad de memoria del PIC utilizado, cuales son sus perifricos, etc. En el cdigo tambin se observa un punto y coma seguido de un texto. Este texto se denomina comentario, y slo sirve a fines de que el programador documente su programa. Todo texto que se encuentre a la derecha de un punto y coma se define como comentario y ser ignorado por el compilador. La segunda lnea es:
#include <p16F84A.inc> ;definicin de variables especficas .......

Esta lnea le indica al compilador que incorpore las definiciones detalladas en el archivo p16F84A.inc. En este archivo se definen configuraciones y nombres de los registros del PIC16F84, as como los nombres de los bits ms usuales del micro. Estos nombres corresponden a los definidos en la hoja de datos del PIC (por ejemplo TMR0, PORTA, STATUS, etc).

Utilizacin de MPLAB IDE


En la lnea siguiente vemos la siguiente expresin:
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

En esta lnea se define la palabra de configuracin del PIC. La palabra de configuracin indica si el cdigo a grabar en el PIC se proteger contra lectura, si se utilizar el temporizador watch dog, si se habilita el delay de encendido, y que tipo de oscilador se utilizar. Por ltimo vemos dos lneas de cdigo:
ORG 0x00
END

;vector de reset .......


;final del programa

Entre estas dos lneas se encontrar el cdigo escrito por el programador. La lnea ORG 0x00 le indica al compilador que el cdigo por debajo de ella debe alojarse a partir de la posicin de memoria 0 del PIC, que es la primer posicin de memoria que el PIC ejecutar. La lnea END indica que se ha alcanzado el final del programa, por lo que no debe haber cdigo por debajo de ella.

Utilizacin de MPLAB IDE


Ya creada la plantilla, continuaremos con la creacin de un proyecto. Primero cerremos la ventana de la plantilla, con lo que el escritorio del IDE quedar en blanco.

Utilizacin de MPLAB IDE


La manera ms sencilla de crear un proyecto es mediante la utilizacin de un asistente que posee MPLAB. Para iniciar el asistente, seleccionamos Project>Project Wizard, con lo que se mostrar la pantalla de inicio del mismo:

Presionamos el botn Siguiente para continuar con el asistente.

Utilizacin de MPLAB IDE


En la lista desplegable que aparece, seleccionamos PIC16F84A. Este ser el microcontrolador que utilizaremos.

Presionamos el botn Siguiente para continuar con el asistente.

Utilizacin de MPLAB IDE


La siguiente pantalla que aparece muestra las herramientas que se utilizarn para compilar y simular el programa En esta lista deben quedar seleccionadas las herramientas MPASM, MPLINK y MPLIB.

Presionamos el botn Siguiente para continuar con el asistente.

Utilizacin de MPLAB IDE


La siguiente pantalla nos pide el nombre y la ubicacin del proyecto que queremos crear. Le daremos el nombre Prueba y lo guardaremos en la carpeta D:\ProgPIC\Prueba.

Presionamos el botn Siguiente para continuar con el asistente.

Utilizacin de MPLAB IDE


A continuacin debemos incorporar al proyecto el archivo que contendr el programa. Para esto cargaremos la plantilla ya creada. Entonces buscamos y seleccionamos el archivo 16F84A.asm y lo agregamos al proyecto. Luego marcamos la casilla de verificacin a la izquierda del archivo, y cambiamos el nombre de 16F84A.asm a Prueba.asm.

Presionamos el botn Siguiente para continuar con el asistente.

Utilizacin de MPLAB IDE


Por ltimo aparece una pantalla a modo de resumen donde se nos informa el microcontrolador seleccionado, las herramientas de desarrollo y la ubicacin del archivo del proyecto.

Presionamos el botn Finalizar para terminar el asistente.

Utilizacin de MPLAB IDE


El escritorio del IDE quedar con la siguiente apariencia:

Cerraremos la ventana Output, ya que an no la necesitaremos. Si observamos veremos una ventana Project, en la que se muestran los archivos que componen el proyecto actual (en este caso solamente el archivo Prueba.asm). A fin de comenzar a introducir el cdigo de nuestro programa, haremos doble click sobre el archivo Prueba.asm.

Utilizacin de MPLAB IDE


Se abrir entonces una ventana conteniendo el cdigo introducido en la plantilla.

Para crear nuestro programa, iremos agregando lneas de cdigo a las ya existentes en la plantilla. Para eso debemos tener definida la funcin que queremos que realice nuestro programa. Este primer programa ser sencillo, sirviendo slo a fines didcticos. El programa deber leer el PuertoA del PIC y lo copiar al PuertoB, generar un pequeo retardo de tiempo, y luego repetir el ciclo continuamente.

Utilizacin de MPLAB IDE


El primer cdigo a escribir debe configurar los dispositivos del PIC. Es decir, si al PuertoA lo leeremos, debemos escribir cdigo para configurarlo como entrada. Al PuertoB lo escribiremos, por lo que lo configuraremos como salida. No utilizaremos interrupciones, as que las deshabilitaremos. Veamos en detalle el cdigo correspondiente. Debajo de la lnea ORG 0x00 agreguemos las siguientes, siempre dejando al menos un espacio de tabulacin desde el margen izquierdo:
CLRF INTCON BSF STATUS,RP0 MOVLW 1F MOVWF TRISA CLRF TRISB BCF STATUS,RP0 ;deshabilito interrupciones ;para acceder al banco1 de registros
;PortA como entrada ;PortB como salida ;para acceder al banco0 de registros

Las lneas anteriores hacen lo siguiente: ponen en 0 el registro INTCON para deshabilitar las interrupciones, ponen en 1 el registro TRISA para configurar el PuertoA como entrada, y ponen en 0 el registro TRISB para configurar el PuertoB como salida.

Utilizacin de MPLAB IDE


Hasta aqu se escribi el cdigo para configurar las entradas/salidas del PIC. Agregaremos ahora las correspondientes al programa en s, las que son:
REP MOVF PORTA,W MOVWF PORTB CLRF 0C DECFSZ 0C,F GOTO DLY GOTO REP ;leo PortA en W ;copio W en PortB ;borro la primer posicion de RAM ;decremento la primer posicion de RAM ;genero retardo de aprox 767 ciclos ;repito el ciclo

DLY

Vemos aqu que hay dos lneas etiquetadas (REP y DLY). Una etiqueta es una cadena de texto cualquiera que se utiliza para identificar una lnea de cdigo, y se utilizan en conjuncin con las instrucciones GOTO y CALL. Analizando el cdigo, vemos que las dos primeras instrucciones se encargan de copiar el PuertoA en el PuertoB, mientras que la tercera, cuarta y quinta lnea generan un pequeo retardo de tiempo. La ltima lnea indica que se vuelva a ejecutar la lectura del PuertoA, con lo que se repite el ciclo indefinidamente.

Utilizacin de MPLAB IDE


El programa en su totalidad quedara de la siguiente manera:

Utilizacin de MPLAB IDE


El siguiente paso es compilar el programa. Primeramente seleccionamos el debugger a utilizar (Debugger>Select Tool>MPLAB SIM). Luego compilamos mediante Project>Make (o presionamos la tecla F10). Se nos mostrar una ventana la cual informar si la compilacin result exitosa, o si el cdigo fuente contiene errores. En este caso vemos que la operacin fue exitosa.

Utilizacin de MPLAB IDE


El paso siguiente es simular el programa a fin de determinar si el comportamiento del mismo es el esperado. En toda simulacin es deseable observar cmo y en que momento se modifican los valores de los distintos registros y variables del microcontrolador. Para esto procederemos a abrir las ventana de registros de funciones especiales (View>Special Function Registers) y la ventana de memoria (View>File Registers). En la primer ventana se nos muestra el nombre de los registros internos del microcontrolador, junto con el valor que posee en ese momento. En la segunda ventana observamos el mapa de memoria RAM del microcontrolador. En este mapa de memoria aparecen tanto el rea de RAM disponible para el programador (direccin inicial 000Ch), as como los registros de funciones especiales (rango 0000h a 000Bh). Por ejemplo, al registro STATUS lo podemos ver en la ventana Special Function Registers, pero como este registro est mapeado en la direccin 0003h, tambin lo podemos ver en la ventana File Registers bajo esta misma direccin.

Utilizacin de MPLAB IDE


Redimensionando y organizando un poco el espacio de trabajo, la pantalla quedara de la siguiente forma:

Utilizacin de MPLAB IDE


En este punto estamos en condiciones de comenzar la simulacin del programa. Se dispone de varias opciones de simulacin, aunque la ms interesante es la de instruccin por instruccin. Esto se efecta mediante el men Debugger>Step Into, o tambin presionando la tecla F7, lo cual es una opcin ms cmoda. Entonces iremos presionando repetidamente la tecla F7, observando cual instruccin se ejecuta, y cmo se reflejan los cambios en el valor de los registros y memoria afectados. Obsrvese que la instruccin a ejecutar es marcada con una flecha verde a su izquierda.

Utilizacin de MPLAB IDE


Al llegar a la porcin del programa que genera un retardo de tiempo, vemos que cada vez que presionemos la tecla F7 estaremos dentro de un bucle que ir decrementando el valor almacenado en la posicin 000Ch. Cuando este valor llegue a cero, habr finalizado el retardo de tiempo y el programa continuar su funcionamiento. El inconveniente es que para llegar a cero, deberamos presionar mas de 500 veces la tecla F7, lo que puede resultar tedioso. Para evitar esto, disponemos de dos opciones. Una de ellas es alterar la posicin 000Ch a un valor cercano a cero. Para esto nos situamos encima de la posicin 000Ch en la ventana File Registers, hacemos doble click sobre el valor actual y lo cambiamos a un valor cercano a cero, digamos 2.

Utilizacin de MPLAB IDE


De esta manera, al continuar con la simulacin mediante la tecla F7, llegaremos mas rpido al final del bucle de retardo de tiempo. La segunda opcin consiste en no modificar ningn valor, sino indicarle al simulador que ejecute las instrucciones a mayor velocidad hasta que se cumpla alguna condicin que le indiquemos. Por ejemplo, vemos que la instruccin que sigue al retardo de tiempo es GOTO REP. Podemos entonces indicarle al simulador que ejecute la simulacin a alta velocidad, pero que se detenga al llegar a la instruccin anterior.

Para esto posicionamos el cursor sobre la instruccin GOTO REP, hacemos click sobre la misma con el botn derecho del mouse, y en el men contextual que aparece seleccionamos la opcin Run to Cursor.

Utilizacin de MPLAB IDE


Continuando con la simulacin, otra herramienta de utilidad de la que disponemos es aquella que nos permite modificar el valor de los puertos definidos como entrada. En nuestro caso hemos definido al PuertoA como entrada; supongamos que en el pin RA1 de dicho puerto colocaremos un switch cuyas posiciones abierto o cerrado se representan mediante un 0 o un 1 lgico. En ocasiones necesitaremos simular el estado de apertura o cierre de dicho switch para observar cmo responde el programa a dicho estmulo. Para esto MPLAB dispone de lo que se denomina un controlador de estmulo. Accedemos al mismo a travs del men Debbuger>Stimulus Controller, y seleccionamos New Scenario. Se nos presentar la siguiente ventana:

Utilizacin de MPLAB IDE


En esta ventana definiremos dos acciones: una que nos permita conmutar el pin RA1 a 0 lgico, y otra que lo conmute a 1 lgico. Para esto hacemos click bajo la columna Pin / SFR y en la lista desplegable seleccionamos RA1. Repetimos la accin bajo la columna Action y de la lista seleccionamos Set Low. Con esto hemos definido la accin que pondr en 0 a RA1, y esta se ejecutar cada vez que hagamos click en la columna Fire. Para definir la accin que ponga en 1 a RA1 repetimos el procedimiento anterior, pero esta vez seleccionando Set High en la columna Action

Utilizacin de MPLAB IDE


Una vez que hayamos simulado y depurado el programa, el paso restante es grabar el mismo en la memoria del microcontrolador. En nuestro utilizaremos el grabador PicStart Plus. Para utilizar el grabador, en primer paso debemos seleccionarlo. Esto lo hacemos a travs del men Programmer>Select Programmer>PICSTART PLUS

Utilizacin de MPLAB IDE


Ya seleccionado el grabador, el paso siguiente es habilitarlo. Men Programmer>Enable Programmer

Utilizacin de MPLAB IDE


En este punto ya nos encontramos en condiciones de grabar la memoria del PIC. Previo a esto, es conveniente abrir la ventana Program Memory, en la cual veremos cada posicin de memoria del micro y la instruccin a grabarse en la misma.

Utilizacin de MPLAB IDE


Paso siguiente colocamos el PIC en el zcalo del grabador. Una vez colocado, debemos verificar que la memoria del micro se encuentre borrada a fin de poder grabar nuestro programa. Esto lo hacemos mediante el men Programmer>Blank Check All.

Utilizacin de MPLAB IDE


Una vez verificado que el micro se encuentre en blanco, procedemos a grabar el correspondiente programa en su memoria. Para esto utilizamos el men Programmer>Program.

Utilizacin de MPLAB IDE


Una vez finalizado el proceso de grabacin, debemos deshabilitar el grabador. Para esto accedemos al men Programmer>Disable.

Utilizacin de MPLAB IDE


Por ltimo veremos dos directivas de programacin que son tiles al programador y que facilitan la lectura de cdigo. Estas son las directivas EQU y #DEFINE. La directiva EQU comnmente se utiliza para asignar el nombre de una variable a una posicin en RAM. Por ejemplo, en nuestro programa utilizamos la posicin de RAM 000Ch para almacenar el conteo del retardo de tiempo. Sera ms claro referirnos a ella con un nombre ms significativo, digamos por ejemplo CONTEO, en lugar de hacer referencia a la direccin de memoria en s. Esto lo podemos hacer mediante la directiva EQU de la siguiente manera: en el encabezado del programa agregamos la siguiente lnea:

Utilizacin de MPLAB IDE


Con esta definicin, cada vez que el compilador se encuentre con la expresin CONTEO, la evaluar por su valor 000Ch. Entonces nuestro programa, que antes tena la forma:

Ahora quedara:

Utilizacin de MPLAB IDE


La segunda directiva de inters es #DEFINE. Esta se utiliza para definir etiquetas que sustituyen cadenas de texto, es decir que cuando el compilador se encuentre con la etiqueta, la evaluar como la cadena de texto que se haya definido. Esto quedar mas claro con un ejemplo. Digamos que en nuestro programa necesitamos poner en 1 el bit0 de la posicin de memoria 000Ch. Esto lo hacemos mediante la instruccin:
BSF 0C,0

O, si ya hemos utilizado la directiva EQU, tambin podra ser:


BSF CONTEO,0

En ocasiones resulta cmodo y mas ordenado para el programador utilizar una expresin mas reducida. Supongamos que al programador le resulte ms claro referirse al bit0 de 000Ch con el nombre BIT0. Esto puede hacerse mediante el uso de #DEFINE. En el encabezado del programa agregamos la siguiente lnea:
#define BIT0 0C,0 ;defino bit0 de posicin 0C

Utilizacin de MPLAB IDE


O, si ya hemos utilizado la directiva EQU, tambin podra ser:
#define BIT0 CONTEO,0 ;defino bit0 de CONTEO

Entonces el programa se vera de la siguiente manera:

Resolucin de Ejercicios
En esta seccin se proponen algunos ejercicios a fin de afianzar los conceptos desarrollados hasta aqu. La metodologa propuesta consiste primeramente en plantear y analizar el problema, luego desarrollar y depurar el cdigo utilizando el MPLAB, y por ltimo grabar el firmware en un microcontrolador y evaluar el comportamiento real del programa mediante un circuito de evaluacin. El circuito de evaluacin posee la siguiente configuracin: Las lneas del Puerto A del microcontrolador (RA0 RA4) se encuentran conectadas a cinco llaves inversoras que sirven como seales de entrada al PIC. Esto implica que el Puerto A debe configurarse como entrada. La lnea RB0 del Puerto B se encuentra conectada a un pulsador. Por lo tanto RB0 debe configurarse como entrada.

El resto del Puerto B (RB1 RB7) esta conectado a un display de 7 segmentos segn la siguiente disposicin. Esto implica que RB1 RB7 deben configurarse como salidas.

RB2 RB3 RB4 RB5 RB6 RB7 RB1

Resolucin de Ejercicios
Ejercicio 1: Se propone desarrollar un decodificador de BCD a hexadecimal 7 segmentos. Como entradas BCD se utilizan las llaves en las lneas RA0 RA3. Como salida se utiliza el display de 7 segmentos. El funcionamiento debe ser el siguiente: normalmente, en el display debe visualizarse el dgito hexadecimal que corresponda al cdigo BCD introducido en RA0 RA4. Debe tenerse en cuenta el estado de RA4, ya que si RA4 se encuentra en 0 entonces el cdigo BCD es vlido y debe mostrarse su correspondiente hexadecimal en el display. Pero si RA4 se encuentra en 1 entonces el cdigo BCD ingresado debe considerarse invlido y en el display debe mostrarse un cdigo de error reflejando esta situacin. Por ltimo, la lnea RB0 debe configurarse como interrupcin externa (INT0) a fin de que cada vez que se presione el pulsador en RB0 se genere una interrupcin. La interrupcin generada por este pulsador debe realizar la siguiente accin: al presionar el pulsador por primera vez se debe congelar el valor mostrado en el display, ignorando cualquier cambio de estado en RA0 RA4. Con la siguiente pulsacin de RB0 se debe descongelar el display, volviendo el programa a su funcionamiento normal. Con cada pulsacin en RB0 se debe repetir el ciclo.

Resolucin de Ejercicios
La tabla de verdad del decodificador es la siguiente:
RA4 RA3 RA2 RA1 RA0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 X 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 X 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 X 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 X 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0

Resolucin de Ejercicios
El mapa de la memoria de programa quedara:
0000h Vector de reset, 1 instruccin

0004h

Vector de interrupcin

00XXh

Programa principal

03FFh

Resolucin de Ejercicios
Una posible distribucin de la memoria RAM podra ser la siguiente:
000Ch 000Dh 000Eh 000Fh 0010h 0011h 0012h 0013h 0014h 0015h 0016h 0017h 0018h 0019h 001Ah 001Bh 001Ch 001Dh Cdigo del 0 Cdigo del 1 Cdigo del 2 Cdigo del 3 Cdigo del 4 Cdigo del 5 Cdigo del 6 Cdigo del 7 Cdigo del 8 Cdigo del 9 Cdigo de la A Cdigo de la B Cdigo de la C Cdigo de la D Cdigo de la E Cdigo de la F Cdigo invlido Flags (sealizadores)

Resolucin de Ejercicios
Ejercicio 2: Se dispone de cuatro motores conectados a una misma barra de energa elctrica. Por razones de limitacin de potencia conectada, se debe realizar un enclavamiento que acte sobre los contactores de los motores o active una alarma en los casos en que la potencia conectada sea igual o superior a los 18 KVA. El estado de conexin o desconexin de los motores se simularn con las entradas RA3 RA0 (motor desconectado=0, motor conectado=1). La potencia de cada motor es la siguiente: - Motor 1 (RA0): 4 KVA. - Motor 2 (RA1): 6 KVA. - Motor 3 (RA2): 8 KVA. - Motor 4 (RA3): 12 KVA. Mientras la potencia conectada a barra sea menor a 18 KVA, el display de la placa de evaluacin se mantendr apagado. Cuando la potencia conectada sea mayor o igual a 18 KVA, en el display se debe mostrar la letra A sealizando la condicin de alarma. Este ejercicio debe resolverse en dos maneras. La primera debe ser mediante tabla de verdad en memoria RAM, tal como lo realizado en el ejercicio anterior. La segunda solucin debe ser mediante evaluacin de la funcin lgica que modela al sistema (operaciones AND y OR).

Resolucin de Ejercicios
La tabla de verdad es la siguiente:
RA3
0 0 0 0 0 0 0 0 1 1 1 1

RA2
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

RA1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

RA0
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

A
0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1

Y la funcin lgica correspondiente es:


A=RA3.RA2+RA3.RA1+RA2.RA1.RA0

1 1 1 1

Resolucin de Ejercicios
Ejercicio 3: En un proceso industrial se debe controlar el nivel de lquido de un depsito, utilizando tres sondas detectoras de nivel (A, B y C) y dos bombas (B1 y B2), con indicadores de nivel y alarma por falla en los detectores:

Controlador

B1 C

B2

Resolucin de Ejercicios
La sonda A detecta el mnimo nivel de lquido. Por debajo de este nivel deben apagarse todos los indicadores de nivel sealizando la condicin de vaco. Por encima de este nivel debe activarse el indicador de BAJO. La sonda B detecta el nivel ptimo de lquido, y cuando se alcance se debe indicar LLENO. La sonda C detecta el nivel mas alto, por encima de este nivel el depsito se desborda. Al accionarse esta sonda debe indicarse REBALSE en el cuadro de indicadores. Las bombas B1 y B2 se encargan de reponer el lquido en el depsito, y se activarn o desactivarn segn las siguientes condiciones: Nivel de lquido en ascenso: Si el nivel no supera la sonda A, las dos bombas estarn activadas y los indicadores de nivel permanecern apagados. Cuando se supere el nivel A se accionar la indicacin BAJO y las dos bombas seguirn funcionando. Cuando se alcance el nivel B se indicar LLENO y se desactivar la bomba B2, siguiendo en funcionamiento B1. El indicador BAJO permanecer encendido. Cuando se alcance el nivel C se desactivar la bomba B1, quedando ambas bombas fuera de servicio. Se accionar el indicador REBALSE y se conmutar la secuencia de control pasando a la correspondiente de descenso de lquido. Los indicadores LLENO y BAJO permanecern encendidos.

Resolucin de Ejercicios
Nivel de lquido en descenso: Cuando el nivel del lquido comience a descender desde el nivel REBALSE, se modificar la lgica de control a fin de evitar continuos arranques y paradas de la bomba B1 a consecuencia de la variacin del nivel de lquido cuando se encuentre prximo a REBALSE. Las condiciones sern: Cuando el nivel de lquido en bajada se encuentre entre los niveles C y B, ninguna de las dos bombas estar activada. Los indicadores LLENO y BAJO permanecern encendidos. Cuando el descenso pase el nivel B se activar la bomba B1 y slo se sealizar BAJO. Si el lquido desciende hasta el nivel A, se activar la bomba B2 quedando ambas bombas en funcionamiento. Se apagarn los indicadores de nivel, sealizando la condicin de vaco, y se modificar la secuencia de control pasando a la correspondiente al ascenso de nivel de lquido. De llegar a producirse un fallo en las sondas de entrada por discordancia, ambas bombas se desactivarn y se sealizar la condicin de ALARMA. La condicin de ALARMA permanecer activa (independientemente de la correccin de las sondas de nivel) hasta que se presione el pulsador de reseteo de alarma. Una vez reseteada la alarma, el programa continuar con su funcionamiento normal.

Resolucin de Ejercicios
Entradas: RA0: sensor A RA1: sensor B RA2: sensor C RB0: reset de alarma (implementar mediante interrupcin) Salidas: RB5: bomba B1 RB7: bomba B2 RB6: indicador BAJO RB4: indicador LLENO RB2: indicador REBALSE
RB2 RB3 RB4 RB5 RB6 RB7 RB1

Sealizacin de Alarma: La alarma (discordancia de sensores de nivel) se sealizar de la siguiente manera: se encendern los tres indicadores de nivel durante medio segundo, y durante otro medio segundo se apagarn. El ciclo debe repetirse, de forma de lograr un lograr un efecto de parpadeo de los indicadores. La temporizacin del parpadeo debe implementarse mediante interrupcin del TIMER0.

Resolucin de Ejercicios
Tabla de verdad para lquido en ascenso
RAM 0C 0D 0E 0F 10 11 12 13 Entradas C B A 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Salidas AL REB LLE BAJ B1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 B2 1 1 0 0 0 0 0 0

Tabla de verdad para lquido en descenso


RAM 14 15 16 17 18 19 1A 1B Entradas C B A 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Salidas AL REB LLE BAJ B1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 B2 1 0 0 0 0 0 0 0

Fin de la presentacin