Projeto de sensor de nível de água

12
Objetivos O objetivo desse projeto consiste em projetar um circuito, onde o conteúdo de determinado tanque seja determinado em vazio, 1/3 do volume, metade do nível e cheio. A tela de LCD deve avisar como está a situação para o usuário. Além disso, um botão para ligar e desligar o circuito. Projeto Para o projeto serão utilizados 3 sensores, que seriam instalados na vertical em um tanque para medir o nível em que a agua se encontra. O sensor de nível de agua funciona com uma saída ON/OFF, ou seja, se estiver em contato com a agua o valor medido será 1, se não estiver será 0. A imagem a seguir mostra um exemplo de sensor de nível de agua e como deve ser feita a sua montagem para instalação. Para representar esses sensores no Proteus será utilizado a ferramenta de estados lógicos, que mostrara se o sensor está ligado ou desligado. Esses sensores são conectados ao microcrontrolador, que será programado para reconhecer e tomar a devida decisão para cada tipo de situação. O controlador escolhido foi o PIC 16F8774A conforme o da imagem abaixo:

description

Descreve um sensor de nivel de agua, com tela para mostrar ao usuário.

Transcript of Projeto de sensor de nível de água

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.ProjetoPara 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 informao deve ser repassada para o usurio, atravs da tela de LCD. Nesse projeto ser utilizada uma tela lcd 16x2.

Cdigo bsico para programar a tela lcd:

// Lcd pinos de saidasbit 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 entradasbit 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(){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 linhadelay_ms(3000); // espera na telaLcd_Cmd(_LCD_CURSOR_OFF);// desliga a tela Lcd_Cmd(_LCD_CLEAR);// limpa a tela

Projeto ProntoA 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); }

}}}}}