Tengo tres DS18B20. No puedo decir si alguno de ellos está funcionando correctamente.

2

Tengo tres DS18B20 (o creo que al menos dos de ellos son DS18B20). Actualmente los estoy leyendo a través de una placa Linux integrada (Raspberry Pi en este caso).

Tengo dos de los sensores en una placa de pruebas, que dan temperaturas aparentemente precisas. El tercero es uno de esos DS18B20 incluidos en un cable "a prueba de agua" de Ebay como este:

Cuandoleolossensores,obtengolassiguienteslecturas:

pi@raspberrypi:~$cat/sys/bus/w1/devices/28-*/w1_slave45014b467fff0b1084:crc=84YES45014b467fff0b1084t=2031257014b467fff0910c7:crc=c7YES57014b467fff0910c7t=21437600180801fff80802e:crc=2eYES600180801fff80802et=22000

Entonces,loquehaceestecomandoessimplementeobtenertodoslossensoresyleerlos.Bastantesimple.Dividat=20312por1000yobtendrá20.312°C

Peroloextrañoesqueeltercersensorsoloalgunavezdarámedicionesdetemperaturadentrode0.5grados,mientrasquelosotrosdossoncapacesdemedirhastaloquepareceser0.1grados.Alprincipiopenséquelaterceraestabarota,perocuandorevisélahojadedatos,especificaclaramentequelapiezatieneunaprecisiónde~0.5grados.

Hehechounatablaconlosvaloresqueobtengo:

BreadboardSensor#1|BreadboardSensor#2|CableSensor21.93721.56222.0021.81221.56222.0020.46820.47822.5019.58420.20127.0019.62519.68728.00

Asíqueahoraestoytotalmenteconfundido.¿Estánrotoslossensoresdelaplacadepruebas,oestáelcable?Sitodosestántrabajando,¿porquédosdeellosparecentenerunaresoluciónmásalta?

Editar:Heestadobuscandomásyparecequehayalgunaspersonasquesehanencontradoconesto,yotraspersonashansugeridoquepodríanserfichasfalsas.

Actualización:elcontroladordedispositivoparalossensores( enlace ):

  

El controlador tampoco admite una precisión reducida (lo que también   reducir el tiempo de conversión).

    
pregunta user9993

4 respuestas

4

Mirando a el código fuente de w1_therm , nunca toca el registro de configuración, por lo tanto, depende de la configuración de precisión programada en EEPROM.

De hecho, su propio volcado de datos muestra que el byte de configuración es 0x7F para dos de sus sensores y 0x1F para uno de sus sensores. Esto corresponde a 12 bits y 9 bits de precisión respectivamente.

Entonces, todo lo que necesita hacer es inicializar la configuración de su sensor de temperatura de baja precisión una vez, almacenar en EEPROM y luego puede usar el controlador original nuevamente. Por supuesto, una contribución de algunos códigos limpios para establecer la precisión probablemente sería bienvenida por la comunidad de Linux;)

    
respondido por el FRob
2

La hoja de datos dice en la página 2, Descripción general:

  

... y el 1   - Registro de configuración de bytes. El registro de configuración permite al usuario configurar la resolución de la temperatura   - a   - conversión digital a 9, 10, 11 o 12 bits . Los registros de configuración \ $ T_H \ $, \ $ T_L \ $ y son no volátiles (EEPROM), por lo que   retener datos cuando el dispositivo está apagado .

La página 8 muestra los detalles de configuración. Debe establecer estos bits en la resolución que desee.

    
respondido por el Transistor
1

Supongo que hay algo extraño en ello, pero no está totalmente roto.

El DS18B20 tiene varias "partes móviles": extremo frontal analógico, A / D, transmisor de 1 cable. Por lo general, cuando un IC como ese se rompe, o se queda en silencio (no muestra ninguna lectura), o genera valores ridículos que están fuera de las listas.

El DS18B20 tiene una configuración de resolución ajustable, que se almacena en la memoria no volátil del DS18B20 (consulte los Ajustes de configuración en p.8 de la hoja de datos ). La lectura de 9 bits de resolución reducida ocupa los bits más significativos del registro de temperatura de 12 bits (consulte último párrafo en p.3 en la hoja de datos ). Supongo que estos sensores vienen de fábrica con diferentes configuraciones.
[descargo de responsabilidad: no he usado DS18B20 a mí mismo. Solo estoy leyendo la hoja de datos.]

    
respondido por el Nick Alexeev
1

¿Conoce la procedencia del sensor impar?

No es inaudito que los fabricantes se degraden intencionalmente programando algo así. Tal vez el sensor sea un dispositivo de contenedor inferior, quizás un ruido más alto o menos lineal, por lo que tiene una resolución más baja fija para enmascarar esto. Puede ser compatible con DS18, sin ser uno. Quizás se haya vendido más barato a un contrato y, por lo tanto, se haya "paralizado" para ajustarse al precio.

    
respondido por el Neil_UK

Lea otras preguntas en las etiquetas