Ir ao conteúdo
  • Cadastre-se
Pedro A. Brandão

AJUDA - sensor de temperatura ad590+pic16f877a

Recommended Posts

Galera, tenho que fazer um projeto de um sensor de temperatura usando o ad590 e o pic 16f877a. O código tá "feito", funciona no simulador PROTEUS porém ao passar para o kit de testes (sd1700), não funciona! Primeiramente aparece a mensagem "Temperatura" no LCD (até ai, ok) mas depois deveria aparecer o valor da temperatura e isso nao ocorre, simplesmente nao aparece mais nada.

Vou deixar o código aqui para vocês darem uma olhada e verem algum possivel erro, preciso de ajuda urgentemente!! valeu

 

# include <16F877A.h># device adc=10# include <C:\Program Files (x86)\PICC\Drivers\LCD.C># fuses XT, NOWDT, PUT,NOLVP# use delay (clock = 4000000)# byte PORTA=5# byte PORTB=6# byte PORTD=8float VOLTAGE;float TEMP;void main(){set_tris_a(0xFF);set_tris_b(0b00000011);set_tris_c(0x00);lcd_init();LCD_PUTC ("\f");LCD_GOTOXY(1,1);LCD_PUTC("TEMPERATURA");setup_adc_ports(ALL_ANALOG); // Define asentradas analógicassetup_adc(ADC_CLOCK_INTERNAL); // Define clock da conversão A/Ddelay_ms(100);VOLTAGE=0;set_adc_channel(4);while(1){VOLTAGE=read_adc();LCD_PUTC ("\f");delay_ms(5);TEMP=(((VOLTAGE/46.7)*100)-273);LCD_GOTOXY(1,1);PRINTF(LCD_PUTC,"VALOR=%f",TEMP);LCD_PUTC("C");//DELAY_MS(20000);LCD_PUTC("\f");}}
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente substituir essas funções:

LCD_PUTC("\f");

Por essa: (sim aspas simples, pois é um char e nao uma string)

 

LCD_PUTC('\f');

Pode ser que o problema esteja além disso, mas fora esse fato que vi no seu código, aparentemente nada está errado, possui o esquema do kit? Se sim, poste para gente ver.

Abs.

Felipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Pedro A. Brandão,


Acho que encontrei o problema do teu display, e está justamente nesse ponto aqui:

 

LCD_PUTC('\f');

Isso causa limpeza da tela cada vez que é executado...no Proteus funciona pois ele reproduz os frames do LCD beeeeeeem devagar, so que no mundo real teu PIC esta rodando com uma velocidade de 4MHz (suponho), na verdade o LCD esta a escrever sim, mas apaga em seguida e a velocidade que isso ocorre é tão alta que você nao esta conseguindo ver.

Minha sugestão é que remova as duas linhas que contém esse comando que lhe mostrei, rode o programa novamente e veja se funciona.

 

 

Abs.

Felipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso ver graves problemas ao ficar apagando o display em um loop... O que acontece é que o display fica piscando, e na maioria das vezes fica parecendo que o contraste está fraco.
 
Em vez de apagar, sobreescreva usando a função lcd_gotoxy(linha,caracter); para posicionar o cursor na posição desejada.

 

A função para apagar o display só é interessante quando a mensagem não precisa ser apagada constantemente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×