Fiabilidad de los sensores de temperatura DS18x20


11

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

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

Solo unas pocas declaraciones sobre mi configuración:

  • Estoy corriendo a 3.3V
  • Estoy revisando 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 poder normal, no con parásitos.
  • Tengo la resistencia pullup de 4.7K en su lugar.
  • Solo estoy usando un solo sensor en cada plataforma de detección.
  • El sensor está en una PCB conectada al arduino que lo está leyendo.
  • Veo el mismo problema al leer de una variedad de arduinos diferentes (diecimilla, pro-mini, costumbre casera)

Respuestas:


5

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


Es bueno escuchar que alguien más ha parecido algo así. ¿Cuál fue su algoritmo de filtrado?
edebill

Sugeriría que hiciste lo que dijiste, toma 3 lecturas, 5 sería mejor, 7 mejor que eso, pero si hay un error de algo alrededor de 1/1000, entonces solo necesitas 3. Toma la mediana. El problema será resuelto. Si toma 5, se necesitará un fenómeno extraño para tener un problema.
Kortuk

Estoy haciendo 5 ahora. Traté de tomar el más alto de 2, pero la noche pasada aún apareció un error (tengo 3 sensores leyendo cada minuto, así que obtengo miles de puntos de datos al día).
edebill

3

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


3

Esto puede deberse a que el controlador lee mal uno o más bits de la respuesta de temperatura en ciertas condiciones de alta carga, o debido a la interferencia eléctrica que corrompe uno o más bits.

Eche un vistazo de cerca a la hoja de datos aquí http://www.rentron.com/Files/ds18b20.pdf

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

+85°C 0000 0101 0101 0000

Asimismo, para 25C, es:

+25.0625°C 0000 0001 1001 0001

En algunos casos, si el controlador falla un poco, obtendrá un valor que es la temperatura real, expresado en binario y con desplazamiento de bits. A menudo esto es 1/2 veces el valor objetivo en C.

A veces puede obtener interferencia eléctrica en la línea, y el controlador lee un mordisco entero de 1s. En ese caso, obtendrá un número como 15.64, que expresado en binario está realmente muy cerca de números entre 65 y 70F, excepto con Un montón de 1s al principio.


2

Por lo que vale, trabajé un poco con el DS18B20 hace unos meses. Grabé un video corto e hice una reseña en mi blog, que tiene enlaces a ejemplos y código de muestra. Espero que esto pueda ayudar un poco! http://dailyduino.com/archives/552


2

Tengo 13 de ellos corriendo en mi casa desde hace unos cuatro años. La base de datos es difícil de manejar (seguí todas las muestras). Pero, no vi este tipo de comportamiento. En cambio, de vez en cuando un sensor se congela y bloquea a todos los demás, la única forma de salir de esto (que encontré) fue cortar el voltaje de suministro durante unos segundos. Así que agregué un pequeño relé a mi placa y cada vez que el micro detecta este comportamiento, restablece toda la cadena de sensores. Eso sucede algunas veces a la semana.


Hmm Tal vez solo debería encenderlos cuando estoy a punto de hacer una lectura.
edebill
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.