Você está na página 1de 12

Projeto final

Sensor de nvel de gua

Professor: William Arvey Molano


Nome: Elielington Ferreira Pinto
R.G.M:111283-0
Nome: Samuel de Menezes Formiga e Silva
R.G.M:101740-3
02/06/2015

Objetivos
O objetivo desse projeto consiste em projetar um circuito, onde o
contedo de determinado tanque seja determinado em vazio, 1/3 do volume,
metade do nvel e cheio. A tela de LCD deve avisar como est a situao para
o usurio. Alm disso, um boto para ligar e desligar o circuito.
Projeto
Para o projeto sero utilizados 3 sensores, que seriam instalados na vertical
em um tanque para medir o nvel em que a agua se encontra. O sensor de
nvel de agua funciona com uma sada ON/OFF, ou seja, se estiver em contato
com a agua o valor medido ser 1, se no estiver ser 0. A imagem a seguir
mostra um exemplo de sensor de nvel de agua e como deve ser feita a sua
montagem para instalao.

Para representar esses sensores no Proteus ser utilizado a ferramenta


de estados lgicos, que mostrara se o sensor est ligado ou desligado.
Esses sensores so conectados ao microcrontrolador, que ser
programado para reconhecer e tomar a devida deciso para cada tipo de
situao. O controlador escolhido foi o PIC 16F8774A conforme o da imagem
abaixo:

Toda essa
ser
usurio,
LCD.
utilizada

Cdigo bsico para programar a tela lcd:

// Lcd pinos de saida


sbit LCD_RS at RC5_bit;
sbit LCD_EN at RC4_bit;
sbit LCD_D7 at RD3_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D4 at RD0_bit;
//Pin Pinos de entrada
sbit LCD_RS_Direction at TRISC5_bit;
sbit LCD_EN_Direction at TRISC4_bit;
sbit LCD_D7_Direction at TRISD3_bit;

informao deve
repassada para o
atravs da tela de
Nesse projeto ser
uma tela lcd 16x2.

sbit LCD_D6_Direction at TRISD2_bit;


sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD0_bit;
void main()
{
PORTC = 0b00000000;
PORTD = 0b00000000;
Lcd_Init();

// comando para inicializar o LCD

{
LCD_OUT(1,2,"blablabla"); //escrever na primeira linha
LCD_OUT(2,2,"Bla bla bla");// escrever na segunda linha
delay_ms(3000); // espera na tela
Lcd_Cmd(_LCD_CURSOR_OFF);// desliga a tela
Lcd_Cmd(_LCD_CLEAR);// limpa a tela

Projeto Pronto
A seguir as imagens do projeto feito no software Proteus.
Sistema ligando:

Sistema cheio:

Sistema com tanque na metade:

Sistema com 1/3 do tanque:

Sistema muito baixo ou vazio:

Sistema desligado:

Cdigo do programa em C:

sbit LCD_RS at RC5_bit;


sbit LCD_EN at RC4_bit;
sbit LCD_D7 at RD3_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D4 at RD0_bit;

sbit LCD_RS_Direction at TRISC5_bit;


sbit LCD_EN_Direction at TRISC4_bit;
sbit LCD_D7_Direction at TRISD3_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD0_bit;

void main()
{
TRISB=0b00000001;
TRISC=0b00000001;
TRISD=0b00000000;
TRISA=0b00001;
TRISC=0b00000001;
TRISE=0b001;
ADCON1 = 6;

PORTB.B0=0;

PORTA.B0=0 ;
PORTE.B0=0 ;

Lcd_Init();
{
while(1)
{
while(PORTC.B0==0)
{
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
LCD_OUT(1,2,"DESLIGADO");
delay_ms(1000);
}
while(PORTC.B0==1)

{
LCD_OUT(1,2,"ENGENHARIA");
LCD_OUT(2,2,"MECANICA-UDF");
delay_ms(3000);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
LCD_OUT(1,2,"INICIALIZANDO");
delay_ms(2000);

while(1)
{
while(PORTC.B0==0)
{
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
LCD_OUT(1,2,"DESLIGADO");
delay_ms(1000);
}

if (PORTB.B0==1 && PORTA.B0==1 && PORTE.B0==1 )


{

Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
LCD_OUT(1,2,"RESERVATORIO");
LCD_OUT(2,4,"CHEIO");
delay_ms(1000);
}

if (PORTB.B0==0 && PORTA.B0==1 && PORTE.B0==1 )


{
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
LCD_OUT(1,2,"ENCHENDO");
LCD_OUT(2,4,"METADE DO NIVEL");
delay_ms(1000);

if (PORTB.B0==0 && PORTA.B0==0 && PORTE.B0==1 )


{
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
LCD_OUT(1,2,"RESERVATORIO");
LCD_OUT(2,4,"UM TERCO");
delay_ms(1000);
}
if (PORTB.B0==0 && PORTA.B0==0 && PORTE.B0==0 )
{
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
LCD_OUT(1,2,"RESERVATORIO");
LCD_OUT(2,4,"Vazio");
delay_ms(1000);
}

}
}}
}}