Rising temperature and other problems

Same to you -- happy 2024 New Year!

A DS18B20 connected backward will get pretty hot pretty quick.
Looking at the flat side with leads down it's (left to right) GND, signal, V+.

Here's the readings I get with DMM set to diode test.

Meter +   Meter-
     |         |
    GND       V+    0.57V
    GND       Sig.  0.50V
    V+        GND   OL
    V+        Sig.  OL
    Sig.      V+    OL
    Sig.      GND   OL

this evenning have ordered 10 pieces ds18b20 raw..
they will arrive until weekend..will see,what they do.. :slightly_smiling_face:

When you get them, try each one with this test program, connect the signal pin (DQ) to Arduino pin 2, don't forget the 4.7k pullup resistor from Arduino Vcc to DQ pin.

#include <OneWire.h>

// OneWire DS18S20, DS18B20, DS1822 Temperature Example
//
// http://www.pjrc.com/teensy/td_libs_OneWire.html
//
// The DallasTemperature library can do all this work for you!
// https://github.com/milesburton/Arduino-Temperature-Control-Library

OneWire  ds(2);  // on pin 2 (a 4.7K resistor is necessary)

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;
  
  if ( !ds.search(addr)) {
    Serial.println("No more addresses.");
    Serial.println();
    ds.reset_search();
    delay(250);
    return;
  }
  
  Serial.print("ROM =");
  for( i = 0; i < 8; i++) {
    Serial.write(' ');
    Serial.print(addr[i], HEX);
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return;
  }
  Serial.println();
 
  // the first ROM byte indicates which chip
  switch (addr[0]) {
    case 0x10:
      Serial.println("  Chip = DS18S20");  // or old DS1820
      type_s = 1;
      break;
    case 0x28:
      Serial.println("  Chip = DS18B20");
      type_s = 0;
      break;
    case 0x22:
      Serial.println("  Chip = DS1822");
      type_s = 0;
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      return;
  } 

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end
  
  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.
  
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  Serial.print("  Data = ");
  Serial.print(present, HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print(OneWire::crc8(data, 8), HEX);
  Serial.println();

  // Convert the data to actual temperature
  // because the result is a 16 bit signed integer, it should
  // be stored to an "int16_t" type, which is always 16 bits
  // even when compiled on a 32 bit processor.
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let's zero them
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
    //// default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  fahrenheit = celsius * 1.8 + 32.0;
  Serial.print("  Temperature = ");
  Serial.print(celsius);
  Serial.print(" Celsius, ");
  Serial.print(fahrenheit);
  Serial.println(" Fahrenheit");
  delay(2000);
}

I have had no experience with these sensor in a tube purchased from China, however others have claimed they all have fake sensors inside.

These sensors should not get hot. Some of the fakes have turned out to be transistors remarked as Dallas sensors.

I know sensors purchased from Digikey are the real think.

many thanks for the sketch..will use it for all
sensors if have..

in addition my pharmacist offered me that i can
use his calibrated thermometer for some days
to calibrate my equipment if ready..

Sounds like a good deal, I would be interested in your results, please post when / if you can.

hi,
think the best practive will be to mount as many sensors
on a terminal strip as needed for the project (here 5) and
inspect, which sensors come nearest with the truth.

guess, i have to store divergences in an array for each sensor,,
but the goal is to signalize temperature-deviation from a range of
room-temps (i.e 16 - 24 degrees celsius as default) by a buzzer in the room i'm working or resting
the thermal-monitor-unit will be placed in the floor, shows temps as
horizontal bars and vertical lines as bounds

it is Not planned to manipulate radiators automatically because there are
thermostates mounted at each radiator to use manually.
But if i forget to close a door or window Thermomonitor should warn me soon
to close and limit radiation.

Which equipment you want to calibrate -- DS18B20?

hi,
may be, as i have seen several codes about the sensor meanwhile,
it seems one can influence several parameters like limiters..so i'll
study more issues of that theme if necessary..
with equipment i meant the whole complex of processor and other
components like stepdown-converter, switches , potentiometers and so far..

Usually, calibration is performed on input device (that includes sensor, amplifier, and ADC) which has offset and gain. The output of DS18B20 is a factory calibrated binary data, which does not require any further calibration.

i expect that output values derive on production tolerances
and circumstances here like voltage and resistances..

Circumstances should have very little influence (unless your power supply voltage is outside the range recommended by the srnsor manufacturer.
The sensor may have a structural error. If the sensor is guaranteed to be within 0.5 degC, I would expect that most sensors will be more accurate than that.