Sensor DS18B20 escribe en ascii

Saludos al foro,
Luego de vaaaaarios meses estoy retomando algunos temas con el arduino, probando el DS18B20 que tenia guardado abrí un scketch simple de esos que hay por la red (lee T°y lo envía por el serial, el sensor me escribe esto (a T° ambiente) por el serial:

Temperatura: 3120.0
Temperatura: 3120.0
Temperatura: 3120.0
Temperatura: 3120.0
Temperatura: 3120.0

Cuando toco el sensor con la mano la los valores se incrementan luego dejo de tocar y vuelve a 3120 (que asumo es T° ambiente); cambie por otro que tengo de reserva y me sale lo mismo, tengo algo de experiencia con este sensor y es la primera vez que me pasa esto; que podría ser...

Desde ya gracias..

Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.

¿El cambio climático? :thinking:

Hablando en serio, adjunta el código (ya sabes, de acuerdo a las Normas) así vemos si puede estar ahí el problema.

Por curiosidad, ¿La T amb no rondaría los 31ºC cuando hiciste las pruebas, no?

Estimado,
Imposible que la temp ambiente esta por los 31° hoy ha sido un dia con poco sol estoy seguro no mas de 23°; estoy usando el MEGA PRO.

type or paste code here
#include <OneWire.h>
#include <DallasTemperature.h>

#define DATA 2                // pin 2 del NANO entrada de sensor DS

OneWire     oneWire(DATA);              // configura PIN 2 interfaz 1-wire del sensor DS
DallasTemperature sensors (&oneWire);   // objeto para el sensor
DeviceAddress SensorDS = {0x28, 0xF8, 0xF4, 0x95, 0xF0, 0x01, 0x3C, 0x40};   // sensor B
float Tempsensor;

void setup() {
   sensors.begin();             // inicializa el objeto 1-wire
   Serial.begin(9600);          //Inicializamos la primera comunicacion Serial.
   Serial1.begin(9600);         //Inicializamos la segunda comunicacion Serial.
   sensors.setResolution(SensorDS, 11);    // sensorDS a resolución de 9 bits
   
 }

/****************************************************************/
void loop(){

   sensors.requestTemperatures();
   Tempsensor = sensors.getTemp(SensorDS);    // toma lectura del sensor 0
   Serial.print("Temperatura: ");
   Serial.println(Tempsensor, 1);         
   delay(1000);
 }
 

Gracias...

En la librería está la respuesta

// returns temperature raw value (12 bit integer of 1/128 degrees C)
	int32_t getTemp(const uint8_t*);

entonces

3120 / 128 = 24.375 ºC

Superaba los 23º. :grimacing:

Saludos

Estimado,
Excelente observación, aún me queda la duda porque el sensor me envía la temperatura en es formato (4 dígitos ), cuando he usado antes otros sensores DS18B20 me enviaban la temperatura en °C,

Saludos
Gracias

Porque getTemp() devuelve la temperatura de esa forma, es el valor tal cual lo envía el sensor, en crudo digamos (por eso dice "raw value")

getTempC() la devuelve en centígrados luego de hacer la conversión correspondiente (en realidad sería traducción más que conversión porque el valor está en centígrados pero multiplicado por 128).

Estimado,
Era algo sencillo que yo no había advertido, gracias por tu aclaración.

Saludos.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.