Ir ao conteúdo
  • Cadastre-se

AJUDA - sensor de temperatura ad590+pic16f877a


Posts recomendados

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");}}
 
Link para o comentário
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

Link para o comentário
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

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...