Mi DS18B20 está leyendo alto. ¿Cómo puedo conseguir que devuelva la temperatura correcta?

10

Estoy trabajando en un sistema de control de calefacción para mi hogar, pero tengo problemas con la lectura del sensor de temperatura más alta de lo que esperaba.

Tengo un clon Arduino Mini Pro de 5V conectado a un módulo de relé, una pantalla HD47780 y un módulo Tiny RTC, con un DS18B20 conectado.

El DS18B20 se alimenta de los 5v Vcc aplicados al módulo Tiny RTC en lugar de usar energía parásita en la línea DQ (ya que no estaba seguro de si las bibliotecas Onewire admitían este modo de operación) y la hoja de datos DS18B20 dice que Vcc puede estar entre 3.0v y 5.5v. Medí la potencia regulada del Mini Pro en 5.2v.

Estoy comparando la temperatura del DS con el termostato de ambiente existente (bimetálico), un monitor de temperatura de escritorio RS con dos sensores, un pequeño 'termohigrómetro' y un termómetro de refrigerador bimetálico (en el cuarto superior de su temperatura rango) . La lectura del DS siempre es alrededor de 1-2 grados más alta que la lectura de los otros sensores, que están dentro de un grado uno del otro.

† No el real, sino algo similar.

Al leer varios foros, he oído que estos sensores son bastante precisos pero pueden sufrir un calentamiento localizado de los componentes cercanos a ellos, así que moví el sensor a un cable de 20 cm y lo coloqué lejos del resto de la electrónica. Esto no hizo ninguna diferencia.

Luego leí que el DS se puede calentar automáticamente si se suministra con un voltaje Vcc demasiado alto, así que agregué un LED rojo con una caída de 1.7v y medí el nuevo voltaje sobre el DS como 3.5v, pero nuevamente, después de esperar el temperaturas para estabilizarse una vez más, esto no hizo ninguna diferencia.

¿Alguien puede sugerir por qué el DS puede estar leyendo alto y qué puedo hacer para evitar esto?

Mark Booth
fuente
¿Qué tan seguro está de que su termostato de ambiente no solo lee 1-2 grados bajo ? Debe obtener un tercer termómetro y compararlo para determinar de dónde proviene realmente su desplazamiento . Dado que el termómetro RS probablemente usa la misma electrónica de lectura para ambos sensores, probablemente no sea realmente útil como dos referencias de calibración distintas.
Connor Wolf

Respuestas:

9

Ahora he colocado muchos sensores DS18B20 en varios nodos de sensores, tal vez 50 más o menos. He aprendido un poco sobre las lecturas devueltas de ellos. Sé que ha aislado algunos de estos como la causa, pero es bueno confirmar que son problemas.

No sé si está usando Celsius o Fahrenheit, por lo que el grado del problema no está claro.

Calefacción localizada

No pienso en Arduino como un chip "activo", pero poner un DS18B20 en un gabinete con un Arduino y LCD me hizo ver lecturas de 2-3 ° C más altas de lo esperado.

Moverlo fuera del recinto solucionó esto.

Calentamiento desde altas Vcc / conversiones frecuentes

Si suministra el chip con un Vcc alto y realiza conversiones frecuentes (es decir, con la mayor frecuencia posible), el chip se calienta. He visto este aumento de lecturas en 1-2 ° C.

No he visto el problema solo con un alto Vcc, pero opero la mayoría de DS18B20 en modo parásito y convierto como máximo una vez cada 10 segundos. Los que funcionan en modo activo generalmente tienen la alimentación apagada cuando no se usa.

OneWire y DallasTemperature admiten el modo parásito.

No todos los sensores de temperatura son iguales

Tenía varios sensores de temperatura antes de comenzar a jugar con DS18B20. Casi sin excepción, estos sub-leídos. La mayoría de ellos se basan en termistores y la calibración es deficiente. Pensé que el DS18B20 había terminado de leer, pero cuando utilicé un buen termopar y medidor, pude validar que eran correctos.

Se trataba de aprender a confiar en el DS18B20.

Calor conducido a lo largo del cable

Si tiene los sensores en un cable, el cable conduce una cantidad sorprendente de calor. Esto puede ser un problema al pasar el cableado a lo largo de las tuberías.

Falso DS18B20

Estos sensores son muy populares, y esto parece haber causado la aparición de falsificaciones. Tengo un lote de sensores impermeables de acero inoxidable que leyeron en exceso y los tiempos se agotaron. Trabajaron con la biblioteca OneWire, pero no con un maestro DS2482 OneWire. También he oído que los estuches normales TO-92 son falsos.

Cybergibbons
fuente
En la gran sabiduría del software de la placa, no tengo permitido responder a esta pregunta, así que agregaré un comentario aquí. Como descubrí por el camino difícil en github.com/PaulStoffregen/OneWire/issues/91 , si usa un chip de 3.3V, debe reemplazar la resistencia de 4.7k por una resistencia de 2.7k, o algunos sensores devolverán valores incorrectos.
Marc Merlin
2

En mi caso, el cableado entre mi uC y el sensor era demasiado corto y transmitía algo de calor. Al principio pensé que ese no podía ser el caso, ya que otro sensor de temperatura informaba temperaturas precisas a la misma distancia. Lo moví a otra ubicación en el tablero y ¡listo!

Jordan Sitkin
fuente
1

Tal vez desee calibrar su sensor.

¿Qué lee cuando se sumerge en agua hirviendo (suponiendo el nivel del mar)? 102.5 grados Celsius? Eso le daría una calibración de alta temperatura de -2.5C.

Obviamente, es mejor calibrar alrededor de las temperaturas que esperas que mida. Eso significa confiar (¿o promediar?) Algún dispositivo de medición y calibrarlo.

Kingsley
fuente
1

He visto compensaciones de varios grados C cuando uso DS18B20 en un bus de 3.3V, cambiando a un bus estable de 5.0V y obtuve valores más razonables. (probado con y sin poder parásito)

NiKiZe
fuente
Eso es interesante, gracias, y lo contrario de lo que algunas personas han estado informando. Me pregunto si este es otro problema falso de DS18B20.
Mark Booth
0

He hecho algunos experimentos. Si DS18B20 estaba en un cable corto <1 cm a mi Arduino Pro Micro, las lecturas eran 5 grados más que el entorno. En la longitud del cable> 10 cm desde la placa arduino y no importa dónde se haya montado la resistencia (cerca de arduino o cerca de DS18B20), las lecturas estaban bien.

Michal.S
fuente