Converter em graus celsius a saida do TC1047A

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Converter em graus celsius a saida do TC1047A

Mensagempor antonio » 22 Set 2012 11:43

Ola pessoal tudo bem!!

Pessoal que estou fazendo errado neste codigo para que a conversão do sensor não mostra certo no LCD!
O sensor eh TC1047A
algem pode dar uma olhada pra ver onde estou errado?
desde jà agradeço

Código: Selecionar todos
#include <18F452.h>
#device ADC=10

#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay (clock=20000000)

#include <flex_lcd.c>

#USE STANDARD_IO(A)
#USE STANDARD_IO(B)


void main()
{

int16 value;
float temp;
setup_port_a(ALL_ANALOG);
setup_adc(adc_clock_div_32);
set_adc_channel(0);

lcd_init();


do{
delay_ms(1000);
value=read_adc();
Temp = 5.0 * value * 100.0 / 1023.0;
 lcd_gotoxy(1,1);
 //lcd_putc("temp");
 printf(lcd_putc,"%4lu",temp);
 }while(true);
}

antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Re: Converter em graus celsius a saida do TC1047A

Mensagempor andre_luis » 22 Set 2012 15:59

Ajudaria mais se informasse o erro.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Converter em graus celsius a saida do TC1047A

Mensagempor antonio » 22 Set 2012 16:55

andre_teprom escreveu:Ajudaria mais se informasse o erro.


+++


Cara no proteus mostra o seguinte lixo no LCD??
Que tou fazendo errado?


Imagem

Uploaded with ImageShack.us
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Mensagempor Djalma Toledo Rodrigues » 22 Set 2012 17:57

Do Datasheet:

Pág 4

10 mV/°C com Off Set de 500 mV

Temp = (Vout - 500 mV) / 10
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor MOR_AL » 22 Set 2012 21:23

Eu não uso o C. Já esqueci quase tudo, mas...
1 - Não precisa converter binário para BCD?
2 - Temp não está definido, mas temp sim. No C Temp é o mesmo que temp, ou tEMp, etc?
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor antonio » 23 Set 2012 04:29

Djalma Toledo Rodrigues escreveu:Do Datasheet:

Pág 4

10 mV/°C com Off Set de 500 mV

Temp = (Vout - 500 mV) / 10



Cara continua dando Pau, tenho feito todos os calculos para a conversão de temperatura mas mesmo assim não vai!

Eu ja dei uma olhada no datasheet e vi a formula mas não sei o que estou fazendo errado ,que não funciona !!

Pesquisando no santo google nao tem nada em C para o compiller CCS
Modificando o codigo como vc falou tambem não estou fazendo ele funcionar!
A verdade eh que eu tambem não tenho mais conhecimentos não,desculpe minha ignorancia!
Toda ajuda eh bem vinda!

segue o codigo modificado e a a simulação no proteus!

Código: Selecionar todos
#include <18F452.h>
#device ADC=10

#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay (clock=20000000)

#include <flex_lcd.c>

#USE STANDARD_IO(A)
#USE STANDARD_IO(B)


void main()
{

int16 value;
float temp;
setup_port_a(ALL_ANALOG);
setup_adc(adc_clock_div_32);
set_adc_channel(0);

lcd_init();


do{
delay_ms(1000);
value=read_adc();
temp =(value-500)/10;
 lcd_gotoxy(1,1);
printf(lcd_putc,"%4lu",value);
 lcd_gotoxy(1,2);
 printf(lcd_putc,"%4lu",temp);
 }while(true);
}

Imagem

Uploaded with ImageShack.us
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Mensagempor antonio » 23 Set 2012 04:32

MOR_AL escreveu:Eu não uso o C. Já esqueci quase tudo, mas...
1 - Não precisa converter binário para BCD?
2 - Temp não está definido, mas temp sim. No C Temp é o mesmo que temp, ou tEMp, etc?
MOR_AL


MOR_AL no ponto 1 nao tenho certeza no data do bixi nao fala nada ,no ponto 2 fiz a alteração e contuia dando Pau!
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Mensagempor andre_luis » 23 Set 2012 08:25

Voce colocou uma entrada fracionada ( 0,77v ).
Procura começar o teste com algo mais simples, tipo inteiro ( 1v ).


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor Djalma Toledo Rodrigues » 23 Set 2012 09:37

Para o LCD há que converter para ASCII

Ex. supondo temperatura 25°C:

Temp = (Vout - 500mV) /10 mV

Temp = (750mV - 500mV) / 10 mV

Temp = 250 / 10 = 25

2 em ASCII ==> 32H

5 em ASCII ==> 35H

ok?
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor ze » 23 Set 2012 10:19

o resultado do ad é em unidades de ad. respire fundo...faça o display mostrar 1° unidades de ad direto tipo printf(adread()) (odeio printf) ou as veja no debug. coloque a temp. em 0°. espere fermentar. anote o valor. depois coloque em 100°. espere a massa crescer com um pano em cima. anote o valor. acresente 2 ovos e bata num liquidificador com uma regra de 3 simples. pergunte-se... se em 0° consigo unidades de ad e em 100 consigo 683, se estiver com 365, quantos °c seriam? para converter ad para °c é só dividir pela constante resultante
Permaneço odiando printf para mc´s
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor antonio » 23 Set 2012 16:06

Pessoal !

Por muito tempo que hoje esteve por volta deste assunto eh mais um projeto que vou jogar pro canto atè conseguir mais informação!

a todos que tentaram ajudar fica aqui o meu agradecimento a todos
Atè+
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Mensagempor Andre_Cruz » 23 Set 2012 19:54

antonio,

Não conheço o compilador CCS, mas porque você usa

printf(lcd_putc,"%4lu",temp); //??????

Não seria printf(lcd_putc,"%f",temp); //Pq sua variável temp é float

Aqui você acha maiores informações de como usar o printf do CCS.
http://pt.scribd.com/doc/36529967/CCS-Comandos

Abraço
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor antonio » 24 Set 2012 16:30

Andre_Cruz escreveu:antonio,

Não conheço o compilador CCS, mas porque você usa

printf(lcd_putc,"%4lu",temp); //??????

Não seria printf(lcd_putc,"%f",temp); //Pq sua variável temp é float

Aqui você acha maiores informações de como usar o printf do CCS.
http://pt.scribd.com/doc/36529967/CCS-Comandos

Abraço


Grato Andre !!

Bem eu jah testei todo o jeito o printf e segue dando pau, eu penso que estou errado aqui
Código: Selecionar todos
temp =(value-500)/10;
,mais jah testei todo e continuando dando bagunça!

Mais uma vez agradeço
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Mensagempor Andre_Cruz » 24 Set 2012 18:31

antonio,

Você consegue mostrar corretamente o valor convertido pelo A/D?
A variável value ??

Coloque um potênciometro no canal que você esta lendo no caso o RA0 e mude a tensão aplicada a esse pino veja como a variável value se comporta.

Só uma pergunta tem mais algum hardware compartilhando o pino RA0 ?Se tive desabilite tudo, veja se tem o comparador interno e desabilite ele.

Abraço
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor antonio » 27 Set 2012 03:42

Andre_Cruz escreveu:antonio,

Você consegue mostrar corretamente o valor convertido pelo A/D?
A variável value ??

Coloque um potênciometro no canal que você esta lendo no caso o RA0 e mude a tensão aplicada a esse pino veja como a variável value se comporta.

Só uma pergunta tem mais algum hardware compartilhando o pino RA0 ?Se tive desabilite tudo, veja se tem o comparador interno e desabilite ele.

Abraço

Andre tudo bem!
Cara ,sim mostra beleza o valor A/D da variavel value, sim eu testei somente no proteus ,mas pra ficar com certeza do seu funcionamento testei fisicamento e tanto no proteus como fisicamente funciona direitinho

O RA0 não compartinha com mais nenhum hardware!

Aqui vai o teste com o ressitor como vc falou,funcionado bz!
grato!
Imagem

Uploaded with ImageShack.us
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x