Projeto de sensor de nível de água

14
Projeto final Sensor de nível de água

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

Projeto finalSensor de nvel de gua

Professor: William Arvey MolanoNome: Elielington Ferreira PintoR.G.M:111283-0Nome: Samuel de Menezes Formiga e SilvaR.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.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); }

}}}}}