Está en la página 1de 7

SAN FRANCISCO XAVIER DE CHUQUISACA

FACULTAD TÉCNICA
Carrera de Electrónica

Programación Aplicada - ELC 317

Equipo: nivel de agua


Informe del Segundo Avance de Proyecto

CONTROL DIGITAL DE NIVEL DE AGUA CON MICROCONTROLADOR

Integrantes del Equipo:

1. Líder de proyecto: Lothar MArin Ayarde Alfaro

DD/MM/YYYY
Sucre – Bolivia
Índice
1. Descripción del proyecto........................................................................................................................
2. Esquema de la maqueta o prototipo.......................................................................................................
3. Circuito...................................................................................................................................................
4. Alcance...................................................................................................................................................
5. Utilización..............................................................................................................................................
6. Código fuente.........................................................................................................................................
7. Explicación del código fuente................................................................................................................
1. Descripción del proyecto.

• Qué es lo que se ha diseñado.


Este proyecto se a diseñado con la finalidad de vincular los conocimientos
adquiridos sobre programación de microcontroladores y plataformas de hardware
libre, como PIC16F628A, representándonos en un ambiente real y aplicable ala vida
cotidiana.
• Cómo funciona lo que se ha diseñado.
El proceso del Control digital de nivel de agua, son los elementos más comunes
dentro del sistema de control automático.
Estos dispositivos nos permiten visualizar el nivel del agua en cualquier recipiente
De modo que podamos diseñar un sistema de cierre o apertura automático de
entrada de líquido o simplemente obtener información de primea línea de cuando
está lleno esta un recipiente.
• Qué aplicación tiene lo que se ha diseñado.
L aplicación MPLAB este editor es modular permite seleccionar los distintos
microcontroladores soportados, además de permitir la grabación de estos circuitos
integrados directa mente al programador.
2. Esquema de la maqueta o prototipo.

3. Circuito.
4. Alcance.

El proyecto tiene un limite cuando el recipiente comienza a llegar al nivel mas alto q seria
al 100% del agua hay nos indica que el nivel de agua esta lleno
En caso de un armado del sensor comience de 100% asta el 0% sin agua nos saldrá un error
porque la programación esta diseñada para que el nivel de agua comience de 0% a 100%.
si comenzara de 100% y sin agua saldrá un error pero si comienza de 0% hasta 100% el
programa correrá bien y cuando el nivel de agua balla bajando ira leendo el porcentaje
requerido

5. Utilización.

Se utiliza con PIC16F628A programado que nos mandara una señal a nuestro LCD que nos
mostrara las señales del nivel del agua y a nuestro sensor que nos permitirá leer la lectura
del nivel de agua a ( 0% a 20% y de 20% a 40% y de 40% a 60% y de 60% a 80% y de
80% hasta llegar a 100% que seria el nivel mas alto ).

6. Código fuente.

#define _XTAL_FREQ 4000000 //Definimos la frecuencia de funcionamiento.

#define RS PORTBbits.RB2 //Definimos el pin RS para controlar la pantalla LCD.


#define EN PORTBbits.RB3 //Definimos el pin EN para controlar la pantalla LCD.
#define D4 PORTBbits.RB4 //Definimos el pin D4 para controlar la pantalla LCD.
#define D5 PORTBbits.RB5 //Definimos el pin D5 para controlar la pantalla LCD.
#define D6 PORTBbits.RB6 //Definimos el pin D6 para controlar la pantalla LCD.
#define D7 PORTBbits.RB7 //Definimos el pin D7 para controlar la pantalla LCD.

#include <xc.h> //Incluimos las librerias basicas.


#include "lcd.h" //Incluimos las librerias para el manejo de la pantalla LCD.

#pragma config FOSC = XT //Seleccionamos Cristal como base de reloj.


#pragma config WDTE = OFF //Desactivamos el perro guardian.
#pragma config PWRTE = OFF //Desactivamos el tiempo de espera de inicio Timer UP POWER.
#pragma config BOREN = ON //Activamos el brownOut. Cuando el voltaje sea muy bajo el
microcontrolador se reiniciará.
#pragma config LVP = OFF //Desactivamos la programación de Bajo Voltaje.
#pragma config CPD = OFF //Desactivamos la protección de la memoria EEPROM.
#pragma config CP = OFF //Desactivamos la priotección del codigo de la memoria FLASH.

void main(void) { //BUCLE PRINCIPAL


TRISB = 0x00; //Establecemos el puerto B como salidas.
TRISA = 0xFF; //Establecemos el puerto B como entradas.
Lcd_Init(); //Iniciamos la libreria para la pantalla LCD.
Lcd_Clear(); //Borramos la pantalla LCD.
Lcd_Set_Cursor(1,2); //Nos posicionamos en la pantalla LCD.
Lcd_Write_String("** NIVEL DE **"); //Mostramos mensaje en pantalla.
Lcd_Set_Cursor(2,4); //Nos posicionamos en la pantalla LCD.
Lcd_Write_String("** AGUA **"); //Mostramos mensaje en pantalla.
__delay_ms(2000); //Esperamos dos segundos.
Lcd_Clear(); //Borramos la pantalla LCD.
Lcd_Set_Cursor(1,2); //Nos posicionamos en la pantalla LCD.
Lcd_Write_String("-NIVEL DE AGUA-"); //Mostramos mensaje en pantalla.

while(1){ //BUCLE INFINITO


Lcd_Set_Cursor(2,7); //Nos posicionamos en la pantalla LCD.
if(!PORTAbits.RA0 && !PORTAbits.RA1 && !PORTAbits.RA2 && !PORTAbits.RA3 && !
PORTAbits.RA4){ //Verificamos el estado de los pines, si estan desactivados.
Lcd_Write_String(" 00 %"); //Mostramos mensaje en la pantalla LCD.
}else if(PORTAbits.RA0 && !PORTAbits.RA1 && !PORTAbits.RA2 && !PORTAbits.RA3 && !
PORTAbits.RA4){ //Verificamos el estado de los pines, si el primero esta activo y los demas desactivados.
Lcd_Write_String(" 20 %"); //Mostramos mensaje en la pantalla LCD.
}else if(PORTAbits.RA0 && PORTAbits.RA1 && !PORTAbits.RA2 && !PORTAbits.RA3 && !
PORTAbits.RA4){ //Verificamos el estado de los pines, si el primero y segundo esta activo y los demas
desactivados.
Lcd_Write_String(" 40 %"); //Mostramos mensaje en la pantalla LCD.
}else if(PORTAbits.RA0 && PORTAbits.RA1 && PORTAbits.RA2 && !PORTAbits.RA3 && !
PORTAbits.RA4){ //Verificamos el estado de los pines, si el primero,segundo y tercero esta activo y los
demas desactivados.
Lcd_Write_String(" 60 %"); //Mostramos mensaje en la pantalla LCD.
}else if(PORTAbits.RA0 && PORTAbits.RA1 && PORTAbits.RA2 && PORTAbits.RA3 && !
PORTAbits.RA4){ //Verificamos el estado de los pines, si el primero,segundo,tercero y cuarto esta activo y
los demas desactivados.
Lcd_Write_String(" 80 %"); //Mostramos mensaje en la pantalla LCD.
}else if(PORTAbits.RA0 && PORTAbits.RA1 && PORTAbits.RA2 && PORTAbits.RA3 &&
PORTAbits.RA4){ //Verificamos el estado de los pines, si todos estan activos y los demas desactivados.
Lcd_Write_String("100 %"); //Mostramos mensaje en la pantalla LCD.
} else{ //En caso de que ningun caso de los anteriores se cumpla.
Lcd_Write_String("ERROR"); //Mostramos mensaje de error en la pantalla, ya que los sensores
deben activarse en secuencia.
}
__delay_ms(500); //Esperamos 500 milisegundos.
}
return;
}
Incluir todo el código fuente del proyecto.

7. Explicación del código fuente.

La parte mas importantes de código fuentes es la lectura del PIC16F628A de los pines
RA0/AN0, RA1/AN1, RA2/AN2/VREF, RA3/AN3/CMP1, RA4/AN4/CMP2 que nos
permitirá la lectura del nivel del agua del recipiente.
RB2/TX/CK, RB3/CCP1, RB4, RB5, RB6/T1OSO/T1CKI, RB7/T1OSI que nos permitirá
que el LCD nos muestre los niveles del agua.

También podría gustarte