Confiabilidad de los sensores de temperatura DS18x20

10

Estoy usando el DS18x20 de Maxim (en realidad tengo más de una variante) sensores de temperatura de 1 cable para registrar las temperaturas en varias habitaciones de mi casa una vez por minuto. Aproximadamente una lectura en mil, me devuelven algo completamente falso. En medio de una secuencia que está aumentando gradualmente de 65F a 70F, obtengo algo como -32.1F o 15.64F.

¿Alguien más ha tenido ese tipo de problema o es algo incorrecto en mi configuración? Si esto es solo un problema conocido con estas cosas, tendré que hacer algo como tomar tres lecturas y descartar lo atípico.

Solo algunas declaraciones sobre mi configuración:

  • Estoy corriendo a 3.3V
  • Estoy comprobando la suma de comprobación de la lectura cuando vuelve al arduino, y coincide (o creo que sí, siempre podría haber un error en ese código).
  • Estos se están quedando sin energía normal, no con parásitos.
  • Tengo la resistencia pullup 4.7K en su lugar.
  • Solo uso un solo sensor en cada plataforma de detección.
  • El sensor está en un PCB conectado al arduino que lo está leyendo.
  • Veo el mismo problema al leer de una variedad de diferentes arduinos (diecimilla, pro-mini, aduana hecha en casa)
pregunta edebill

5 respuestas

5

He visto esto ocasionalmente con el DS18B20. Para mi aplicación, fue lo suficientemente simple como para filtrar los resultados falsos con código.

    
respondido por el user274
3

Si no puede encontrar la fuente de las lecturas erróneas, debería ser fácil filtrarlas y extrapolar de lecturas anteriores , o interpolar entre lecturas si la retrospectiva es importante. Ya que está probando una vez por minuto, incluso puede copiar la última lectura; La temperatura ambiente apenas cambiará en un minuto.

    
respondido por el stevenvh
2

Por lo que vale, hice un poco de trabajo con el DS18B20 hace unos meses. Grabé un video corto e hice una reseña en mi blog, que contiene enlaces a ejemplos y códigos de muestra. Espero que esto pueda ayudar un poco! enlace

    
respondido por el morgellon
2

Tengo 13 de ellos corriendo en mi casa desde hace unos cuatro años. La base de datos es más difícil de manejar (mantuve un registro de todas las muestras). Pero, no vi este tipo de comportamiento. En cambio, cada momento y un sensor congela y bloquea a todos los demás, la única forma de salir de esto (que encontré) fue apagar la tensión de alimentación durante unos segundos. Así que agregué un pequeño relé a mi tablero y cada vez que el micro detecta este comportamiento, restablece toda la cadena de sensores. Eso sucede unas cuantas veces a la semana.

    
respondido por el efi
2

Esto puede deberse a que el controlador haya leído mal uno o más bits de la respuesta de temperatura en ciertas condiciones de carga alta, o porque una interferencia eléctrica haya corrompido uno o más bits.

Observe detenidamente la hoja de datos aquí enlace

En la página 5, muestra que la secuencia binaria exacta para 85C es:

+85°C 0000 0101 0101 0000

Igualmente, para el 25C, es:

+25.0625°C 0000 0001 1001 0001

En algunos casos, si el controlador pierde un poco, obtendrás un valor que es la temperatura real, expresada en binario y desplazada en bits. A menudo, esto es 1 / 2x el valor objetivo en C.

A veces, puede obtener interferencias eléctricas en la línea y el controlador lee un nibble completo de 1s. En ese caso, obtendrá un número como 15.64, que expresado en binario es en realidad muy cercano a los números entre 65 y 70F , excepto con un montón de 1s al principio.

    
respondido por el gbronner

Lea otras preguntas en las etiquetas