Meu DS18B20 está lendo alto. Como posso fazê-lo retornar a temperatura correta?


10

Estou trabalhando em um sistema de controle de aquecimento para minha casa, mas tendo problemas com o sensor de temperatura com uma leitura maior do que eu esperava.

Eu tenho um clone do Arduino Mini Pro de 5V conectado a um módulo de relé, um monitor HD47780 e um módulo RTC minúsculo, com um DS18B20 anexado a ele.

O DS18B20 é alimentado a partir de 5v Vcc aplicado ao módulo Tiny RTC em vez de usar energia parasita na linha DQ (como eu não tinha certeza se as bibliotecas Onewire suportavam esse modo de operação) e a folha de dados do DS18B20 diz que o Vcc pode estar entre 3.0v e 5.5v. Eu medi a potência regulada do Mini Pro em 5.2v.

Estou comparando a temperatura do DS com o termostato da sala existente (bimetálico), um monitor de temperatura de mesa RS com dois sensores, um pequeno 'termo-higrômetro' e um termômetro de geladeira bimetálico (na parte superior da temperatura) intervalo) . A leitura do DS é sempre cerca de 1-2 graus mais alta que a leitura dos outros sensores, que estão dentro de um grau um do outro.

† Não o atual, mas algo semelhante.

Ao ler vários fóruns, ouvi dizer que esses sensores são bastante precisos, mas podem sofrer aquecimento localizado dos componentes próximos a eles, então mudei o sensor para um cabo de 20 cm e o posicionei bem longe do restante dos eletrônicos. Isso não fez diferença.

Li então que o DS pode se auto-aquecer se for fornecido com uma voltagem Vcc muito alta, então adicionei um LED vermelho com queda de 1,7v e medi a nova voltagem no DS como 3,5v, mas novamente, depois de esperar pelo temperaturas para estabilizar mais uma vez, isso não fez diferença.

Alguém pode sugerir por que o DS pode estar lendo alto e o que posso fazer para evitar isso?


Como você está confiante que o seu quarto termostato não é apenas a leitura 1-2 graus baixo ? Você deve obter um terceiro termômetro e comparar para determinar de onde seu deslocamento está realmente ocorrendo. Como o termômetro RS provavelmente usa a mesma eletrônica de leitura para ambos os sensores, provavelmente não é realmente útil como duas referências distintas de calibração.
Connor Lobo

Respostas:


9

Coloquei muitos sensores DS18B20 agora em vários nós de sensores - talvez 50 ou mais. Eu aprendi um pouco sobre as leituras retornadas deles. Sei que você isolou alguns deles como não sendo a causa, mas é bom confirmar que são problemas.

Não sei se você está usando Celsius ou Fahrenheit, portanto o grau do problema não está claro.

Aquecimento localizado

Não penso no Arduino como um chip "quente", mas colocar um DS18B20 em um gabinete com um Arduino e um LCD fez com que eu visse leituras de 2-3 ° C acima do esperado.

Mover para fora do gabinete corrigia isso.

Aquecimento a partir de conversões Vcc / frequentes

Se você fornecer ao chip um Vcc alto e realizar conversões frequentes (ou seja, com a maior frequência possível), o chip será aquecido. Vi este aumento das leituras em 1-2 ° C.

Eu não vi o problema apenas com alta Vcc, mas eu opero a maioria dos DS18B20 no modo parasita e converto no máximo uma vez a cada 10s. Os que operam no modo ativo geralmente desligam quando não estão em uso.

O OneWire e o DallasTemperature suportam o modo parasita.

Nem todos os sensores de temperatura são criados iguais

Eu tinha vários sensores de temperatura antes de começar a brincar com o DS18B20. Quase sem exceção, estes são lidos. A maioria deles é baseada em termistores e a calibração é ruim. Eu pensei que o DS18B20 tinha superado a leitura, mas quando usei um bom termopar e medidor, pude confirmar que eles estavam corretos.

Era sobre aprender a confiar no DS18B20.

Calor conduzido ao longo do fio

Se você possui sensores em um fio, ele conduz uma quantidade surpreendente de calor. Isso pode ser um problema ao passar a fiação ao longo dos tubos.

Falso DS18B20

Esses sensores são muito populares e isso parece ter causado o aparecimento de falsificações. Eu tenho um lote de sensores à prova d'água de aço inoxidável que leem demais e o tempo acabou. Eles trabalharam com a biblioteca OneWire, mas não com o mestre DS2482 OneWire. Ouvi dizer que os TO-92 normais também são falsos.


Na grande sabedoria do software da placa, não tenho permissão para responder a essa pergunta, então adicionarei um comentário aqui. Como descobri da maneira mais difícil no github.com/PaulStoffregen/OneWire/issues/91 , se você usa um chip de 3,3V, é necessário substituir o resistor de 4,7k por um de 2,7k, ou alguns sensores retornam valores incorretos.
Marc Merlin

2

No meu caso, a fiação entre o uC e o sensor era muito curta e estava transmitindo algum calor. Eu pensei que não poderia ser o caso no começo, já que outro sensor de temperatura estava relatando temperaturas precisas à mesma distância. Eu mudei para outro local no quadro e pronto!


1

Talvez você queira calibrar seu sensor.

O que é lido quando imerso em água fervente (assumindo o nível do mar)? 102,5 Celsius? Isso daria uma calibração a alta temperatura de -2,5 ° C.

Obviamente, é melhor calibrar as temperaturas que você espera que eu meça. Isso significa confiar (ou calcular a média?) Em algum dispositivo de medição e calibrá-lo.


1

Vi desvios de vários graus C ao usar o DS18B20 em um barramento de 3,3V, alternando para um barramento estável de 5,0V e obtive valores mais razoáveis. (testado com e sem energia parasitária)


Isso é interessante, obrigado, e o oposto do que algumas pessoas têm relatado. Gostaria de saber se este é outro problema DS18B20 falso.
Mark Booth

0

Eu fiz alguns experimentos. Se o DS18B20 estava com um cabo curto <1cm no meu Arduino Pro Micro, as leituras eram 5 graus mais que o ambiente. No comprimento do cabo> 10 cm da placa do arduino e não importa onde o resistor foi montado (perto do arduino ou perto do DS18B20), as leituras foram boas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.