Termômetro com LM35 e PIC

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Termômetro com LM35 e PIC

Mensagempor _blackmore_ » 04 Mar 2009 18:18

Galera, boa noite.

Estou precisando de um termômetro e pretendo o fazer a toque de caixa, pois tenho vários componentes e pouca grana, se não eu compraria um.
Mas acontece que como não posso perder muito tempo pois quero no sábado colocá-lo para funcionar, pergunto antes se alguém recomenda algo para melhorar um circuito de termômetro feito com um PIC16F628, LM35 (sensor de temperatura), LM741, LCD ...
Encontrei alguns circuitos prontos, mas sem o código fonte :? , encontrei outros que o código não está completo :x , então se é para ter trabalho faço-o logo inteiro :twisted:
A temperatura de trabalho será entre 10 e 50ºC ... não mais que isso, onde o único problema a princípio será calibrar pois no momento não disponho de um outro termômetro (se não eu não precisaria fazer um dããããã! :D )
Fico no aguardo de comentários dos amigos.

abrax!
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Mensagempor pbernardi » 04 Mar 2009 18:48

Olá Blackmore,

Não me leve a mal, mas pedir um projeto pronto, com pré requisitos (não pode calibrar), pra montar em 3 dias e evitar a compra de um... termômetro? :oops:

http://preco2.buscape.com.br/termometro-pg3.html

No link acima tem por R$ 11,90, digital, e nem precisa montar tudo isso :!: Na farmácia deve custar menos...
But to us there is but one God, plus or minus one - Corinthians 8:6±2. (xkcd.com)
pbernardi
Word
 
Mensagens: 707
Registrado em: 12 Out 2006 19:01
Localização: Curitiba-PR

Mensagempor _blackmore_ » 04 Mar 2009 23:05

certo ... vou ver o que posso fazer ...

abrax!
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Mensagempor Djalma Toledo Rodrigues » 05 Mar 2009 01:36

Calibração :
Gelo fundente ( derretendo) Zero °C
Água fervente 100 °C
Ambos ao nível do mar e água pura.
.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor Andre_Cruz » 05 Mar 2009 08:39

_blackmore_

Com esses componentes que você citou é sufuciente para fazer um termometro.
Se você precisa ler de 1ºC em 1ºC não precisa do Amp Op LM741, LM35 não se calibra ele vem calibrado de fabrica, 10mV por cada 1ºC.

O software é simples.

Mas pra ontem é complicado!

Se você tentar fazer, e postar as dúvidas é mais facil de ajudarmos a fazer funcionar.

Abraço

André
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor cmte » 05 Mar 2009 13:20

É possível fazer o 16F628 "ler" o LM35 através de seus comparadores ? Não é necessário um conversor A/D?
Pergunto pq meu primeiro projeto foi um termômetro com o LM35, LCD e um PIC 16F877. Mas se desse para usar um 628 seria melhor.
cmte
Byte
 
Mensagens: 141
Registrado em: 29 Nov 2006 12:53

Mensagempor Vonnilmam » 05 Mar 2009 13:58

Uma dica para voce,

Usa um pic com conversor AD, e como o colega disse no post, o lm35 vem calibrado e sua escala é 10mv por grau centigrado...

Ao invés de ficar fazendo milhares de leituras, ou seja não coloque a rotina de leitura da temperatura no loop do programa diretamente!

Crie uma rotina de delay ex.: 2 segundos e a cada estouro desse delay é feita a leitura da temperatura...assim voce fica com um termometro estavel e mais preciso...

Eu acabei de fazer um termometro desses ele tem 4 digitos e mostra as horas também com base no 1307DS,

No meu caso utilizei um tempo de alternancia de 5 segundos aonde faço a leitura do LM35 ou do DS 1307...

Boa sorte,
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Mensagempor kaoalex » 05 Mar 2009 16:57

Mais mastigado que isso só se eu montar para vc!! rs...
Boa diversão!

Driver LCD
http://www.ccsinfo.com/forum/viewtopic.php?t=24661

Esquema do Delta sigma.
(Aconselho a usar um trimpot para ter maior precisão)
Imagem

Exemplo do livro: Microcontroladores PIC – Programação em C do Fábio Pereira

Código: Selecionar todos
#include <16F628A.h>
#fuses INTRC_IO,NOWDT,PUT,BROWNOUT,NOLVP,NOMCLR
#use delay (clock=4000000)
#use rs232(baud=9200, xmit=PIN_B1, rcv=PIN_B2)

#include <regs_16.h>

#bit saida_comp = 0x1F.6 // C1OUT
#bit pino_modul = 0x05.3 // RA3
#bit tris_modul = 0x85.3 // TRISA3
#byte cmcon_reg = 0x1F
#byte vrcon_reg = 0x9F

void inicializa_delta_sigma()
{
   vrcon_reg = 0xEC;
   tris_modul = 0;
   cmcon_reg = 6;
}

long int adc_delta_sigma (long int resolucao)
{
   long int resultado = 0;
   t0cs = 0;  // timer 0 com clock interno
   psa = 1;  // clock tmr0 = 1Mhz
   cmcon_reg = 3;
   while (resolucao)
   {
      tmr0 = 247;  // configura o timer 0
      t0if = 0;  // apaga flag do timer 0
      if (saida_comp)
      {
         pino_modul = 1;
      } else
      {
         pino_modul = 0;
         resultado ++;  // incrementa acumulador de resultado
      }
      resolucao --; // decrementa o contador de ciclos
      while (!t0if);
   }
   cmcon_reg = 6;
   return (resultado);
}

main()
{
   long int valor;
   float val;
   printf ("\r\nADC delta sigma\r\n");
   inicializa_delta_sigma();
   while (true)
   {
      // a conversão até de 14 bits (16384)
      // usando apenas 10 bits

      valor = adc_delta_sigma(1023);
      val = 5 * (float) valor / 1023;


         // imprime os resultados na serial
         printf ("Tensao = %1.4f Volts\r\n",val);
         printf ("Valor = %lu\r\n",valor);
         delay_ms(1000);

   }
}
Avatar do usuário
kaoalex
Byte
 
Mensagens: 237
Registrado em: 12 Out 2006 01:52

Mensagempor _blackmore_ » 05 Mar 2009 19:13

Agradeço a ajuda de todos !!

Assim que terminar posto o resultado para os amigos ..

abrax!
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Mensagempor cmte » 06 Mar 2009 19:27

kaoalex,

Valeu!
cmte
Byte
 
Mensagens: 141
Registrado em: 29 Nov 2006 12:53

Mensagempor _blackmore_ » 12 Abr 2009 21:48

depois de fuçar, montar e funfar o termômetro me ocoreram dúvidas ... talvez sejam coisas banais mas preciso entender e acabar com as dúvidas.
Vamos lah ...
Montei o termômetro com um pic, utilizei 8bits de resolução ... a tensão de referência do circuito é de 4.98volts (doido né?), a cada 3 segundos eu mostro o valor em um display LCD onde deixei 2 casas decimais para criar esta pulguinha na zoréba.
Sendo que o LM35 é linear de 10mV por grau, como estou conseguindo mostrar no display 25.31ºC se a resolução em bits do uC é de 0,01945volts (19,45mV) ???
Peguei um termômetro da marca Coel emprestado com um amigo, e este termômetro tem resolução de 0,1ºC e atualização a cada 10 segundos.
Alterei o funcionamento do meu termômetro para ficar igual o Coel e poder comparar resultados :)
Bem, valor chega com uma diferença mínima de 0,3ºC até 0,8ºC do termômetro comercial. então pergunto .. será que fiz algo errado? será que está tudo certo? ou está melando de marron minha montagem?
vou postar um trecho do programa para que possam me esclarecer esta dúvida.
Agradeço qqer comentário sobre este assunto

abrax!

Pic com cristal de 4MHz, AD com 8 bits

Código: Selecionar todos
   //  valor entrada RA2
      
      set_adc_channel(2);
      dado1 = read_adc(); // efetua a conversão A/D
      valor1 = ((dado1*498)/255);

   // compara valor e imprime o valor termometro 1 no display em Celsius

      if(valor1 != valor2){  // se diferente da medida anterior
            lcd_escreve ('\f');      // Apaga o display
            lcd_pos_xy(1,1);      // Posiciona cursor
            printf (lcd_escreve,"Temp ent %3.2f C ",valor1);   //Escreve valor no display
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Mensagempor kaoalex » 13 Abr 2009 09:27

_blackmore_,

Acredito que esteja tudo certo sim.

Vamos considerar a tensão 4,98 como ref. e adc de 8 bits.
25,31º C = 0,2531 volts ≈ 13 bits (13,01076305)

Ou seja o adc lê 13 bits ≈ 25,29º C.

A próxima temperatura que ele será capaz de ler é de aproximadamente 27,23º C (14 bits).

edição para correção ortográfia
Avatar do usuário
kaoalex
Byte
 
Mensagens: 237
Registrado em: 12 Out 2006 01:52

Mensagempor jorgeluiz » 14 Abr 2009 01:24

uma vez montei um termometro usando o delta-sigma do 16f628, com uma tensao de 5,12 volts em 9 bits. Dai' montei duas tabelas. Isso da exatamente a resoluçao de 0,1 grau. (eu multipliquei a tensao de saida do lm35 por 10 com A.O.)
Avatar do usuário
jorgeluiz
Byte
 
Mensagens: 448
Registrado em: 26 Mar 2007 02:26

Mensagempor _blackmore_ » 14 Abr 2009 18:15

bom galera ... vi que estou fazendo coisa feia na resolução do bichin ...
obrigado ae a atenção dos amigos ... vou tentar resolver de alguma forma para obter a precisão necessária e espero conseguir postar os reesultados.
abrax!
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26


Voltar para PIC

Quem está online

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

x