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?
fuente
Respuestas:
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.
fuente
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!
fuente
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.
fuente
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)
fuente
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.
fuente