DS18B20 Abfragen

Hallo an alle
Habe nur mal eine kurze Frage zu einem DS18B20 Sensor.
Ist es möglich einen DS18B20 abzufragen das er einen Meldung im Serial.Monitor (oder Display) ausgibt. Ob er vorhanden ist oder nicht.
Habe das bei einem Video gesehen wo man es mit einem DHT22 gemacht hat.Daher die Frage ob das auch mit einem DS18B20 geht.
Wenn ja wie stelle ich sowas an, weil bei Googel habe ich nichts gefunden was passt

Danke Stefan.

Je nach Bibliothek bekommst NAN oder -127.

Bibliothek Installieren :wink:
Suche mall nach DS18B20 Lib unter Werkzeuge

Du meinst die DS18B20-Lib.
Da sind Beispiele dabei. Den Rest hat Dir Fony schon geschrieben.

Gruß Tommy

Danke !

Du brauchst auch OneWire Bibliothek dazu.

Du hast doch schon mit Den gearbeitet, dan frage mich was soll das alles

Hallo an alle
Die Bibliotheken habe ich natürlich installiert.
Ich Arbeite noch mir der IDE 1.8.19.
Und nach was Suche ich dann in der DS18B20-Lib.
Nach den Schlüsselwörten oder .
So tief bin ich noch nicht drin im Arduino.

Beispiel Testen, meistens wird in Serial Monitor der Wert angezeigt, wenn man den abklemmt kommt -127 bedeutet Sensor nicht da, defekt usw.

Du kannst auch mal testen ob diese Anweisung

sensors.begin()

einen Rückgabewert hat und darauf reagieren.

Edit:
Was aber auch geht, wenn du nach Sensoranzahl abfragst.

numberOfDevices = sensors.getDeviceCount();

Hallo fony
Sorry für die falsch verstande Aussage von mir .
Natürlich habe ich mit den Lib schon gearbeitert.
Wie z.b. Ds18B20 und DHT22 . Ich meinte damit nicht ich Sie nicht kenne sonder wonach ich suchen muss in der Lib.
Nochmal sorry war mein Fehler.

Stefan

Ich nutze für die DS18B20 so was
Die Lib ist vom Rob Tillaart
GitHub - RobTillaart/DS18B20_INT: Arduino library for DS18B20 with minimal footprint. Whole degrees Celsius only.
Is einfach wen man nur ein Sensor nutzt.

//
//    FILE: DS18B20_simple.ino
//  AUTHOR: Rob Tillaart
// PURPOSE: equivalent of DallasTemperature library Simple
//     URL: https://github.com/RobTillaart/DS18B20_INT


#include <OneWire.h>
#include <DS18B20_INT.h>


#define ONE_WIRE_BUS    2

OneWire     oneWire(ONE_WIRE_BUS);
DS18B20_INT sensor(&oneWire);


void setup(void)
{
  Serial.begin(115200);
  Serial.println(__FILE__);
  Serial.print("DS18B20_INT_LIB_VERSION: ");
  Serial.println(DS18B20_INT_LIB_VERSION);

  if (sensor.begin() == false)
  {
    Serial.println("not connected!");
  }
}


void loop(void)
{ 
  sensor.requestTemperatures();

  while (!sensor.isConversionComplete());  // (BLOCKING!!) wait until sensor is ready

  Serial.print("Temp: ");
  Serial.println(sensor.getTempC());
}


// -- END OF FILE --
1 Like

Sag ich doch, ist auch besser als auf Temperatur zu reagieren.

Ja, nur wen im laufenden Betrieb der Sensor Streikt bekommt man nur die -127 und das muss man behandeln.

Ja, das wäre dann eine weitere Abfrage im Betrieb.
Und bei mehreren Sensoren an einem Pin die Kombination von Anzahl und Temperatur.

Die werden ja nacheinander Abgefragt also auch kein Problem.
Nur mein Beispiel kann nur mit einem Sensor arbeiten, oder man nimmt für jeden Sensor ein Pin was finde ich nicht so schön, und die ist blockierend anders kann die Lib das nicht.
Was aber bei mir ist nicht kritisch.

Problem sehe ich auch nicht. Und der TO hat jetzt einige Möglichkeiten sein Problem zu lösen. Mit einer ausführlichen Studie der Libraries hätte er das sicher auch selbst gefunden.
Und ausführliche Beispiele sind in jeder Library vorhanden.

Wieso? Die DallasTemperature kann auch nicht blockierend arbeiten (setWaitForConversion(false):wink: und dann die Abfragezeit selbst verwalten.

Gruß Tommy

Nicht alles gelesen? Schreibe doch das die gezeigte das nicht kann, ist ja wie der Name zeigt, sagt
"equivalent of DallasTemperature library Simple"
Ich nutze die nur als Thermometer mit Uhrzeit Anzeige dann ist das Wurst ob die wartet oder nicht .

Du hast explizit geschrieben, dass das nur blockierend geht. Dem habe ich Widersprochen. Die von Dir genutzte Lib kann auch nur blockierend aber es gibt andere Libs, darauf wollte ich hinweisen.

Gruß Tommy

In der lib musst du gar nicht suchen.
Es gibt keine spezielle "Check_if_sensor_is_present()"-function

Wenn ein Sensor nicht antwortet dann wird für diesen Sensor als Temperaturmesswert -127 "gemessen" = von der ganz normalen "gib-mir-die-Temperatur"-function zurückgegeben

Der reale Messbereich eines DS18B20 geht von -55 °C bis 125°C
Das heißt eine Temperatur von -127°C liegt außerhalb des Meßbeeiches.
Und auch völlig außerhalb dessen was man so üblicherweise an Temperaturen hat.
Unter -25°C ist entweder Sibirien, Antarktis oder Ultra-Kältekammer.

Das bedeutet du misst gaaanz normal Temperaturen und wenn der Messwert -127 ist
kannst du 100% sicher schlussfolgern: Keine Antwort vom Sensor.

Das kann dann folgende Ursachen haben:

  • Sensor defekt
  • Sensor ohne Stromversorgung
  • Sensor Signal zu schwach nicht lesbar
  • Sensor gar nicht angeschlossen

Die andere Möglichkeit ist, die weltweit einmalige 48-Bit Seriennummer auszulesen.
Wenn eine bestimmte Nummer fehlt gilt das gleiche wie oben schon beschrieben.

Was brauchst du denn noch um zu verstehen das du einfach auf Temperaturmesswert

-127

prüfst ?