NEWS
ESP 8266 Einbindung von DS18B20 Temperatursensoren
-
Ich habe eine Parallelschaltung von drei DS18B20 an einem D1-Mini.
Nach dem Neustart des ESP werden in letzter Zeit häufig nur zwei von drei Sensoren erkannt. Nach kurzem Stromlos machen des ESP sind wieder alle drei Sensoren erreichbar ...
Interessanterweise scheint immer der Sensor mit der höchsten Seriennummer zu fehlen.
Hatte schon jemand ähnliche Probleme? Falls nicht, wird es wohl eher ein Wackelkontakt auf der Platine, als ein Problem mit der 1-Wire Library sein ...
-
seitdem ich NodeMcu verwende keine Probleme mehr.
-
@martinp Poste mal deine Software.
-
@geschild die Kurzfassung wäre ...
https://github.com/MartinP1/ESP8266_MQTT_THERMOSTAT
#include <OneWire.h> #include <DallasTemperature.h> #ifdef ARDUINO_ESP8266_WEMOS_D1MINI #include <ESP8266WiFi.h> #include <LibPrintf.h> #else #include <WiFi.h> #endif #include <Ticker.h> // #include <AsyncMqttClient.h> #include <AsyncMqtt_Generic.h> ..... OneWire oneWire(oneWireBus); DallasTemperature sensors(&oneWire); ... void initTemperatureSensors(){ Serial.print("Locating devices..."); numberOfDevices = sensors.getDeviceCount(); // numberOfDevices = sensors.getDS18Count(); // numberOfDevices = MAX_DS18B20_DEVICES; // locate devices on the bus Serial.print("Found "); Serial.print(numberOfDevices, DEC); Serial.println(" devices."); if(numberOfDevices > MAX_DS18B20_DEVICES){ Serial.println("too many temp devices, limit to 3"); numberOfDevices = MAX_DS18B20_DEVICES; } .....
-
Alternative wäre Tasmota flashen und Sonoff Adapter nutzen.
-
@haselchen Das ist schwierig, weil da noch mehr angeschlossen ist. Bildet einen kompletten Heizkörperthermostaten, und der Regler ist auch im ESP codiert...
Da wäre ich nicht fit genug in Tasmota Script Programmierung, um das zu übertragen.Mal überlegen, wie ich da vorgehe. Ich tippe aktuell immer noch auf den D1 Mini Clone von AZ Delivery mit ungeeignetem Spannungsregler. Der startet alle paar Tage neu, und dann ist sporadisch ein Temperatursensor "weg". Wahrscheinlich ist die Spannung im entscheidenden Moment nicht stabil.
Ein pinkompatibles ESP32 Modul und eine richtige Leiterplatte sind bereit, um eingesetzt zu werden. Warte aber auf das Ende der Heizsaison, da ich den alten Aufbau zerlegen muss ...
-
Hallo und guten Morgen in die Runde,
habe das Thema gerade gesehen und dacht mir ich klinke mich mit ein. Ich habe auch die Temperatursensoren verbaut jedoch bekomme ich ab und zu fehlerhafte Messwerte ein. Die Sensoren messen in D50 Rohren die Wassertemperaturen von meinem Pool.
Man sieht das hier auf dem Bild recht gut. -336 ist dann doch recht kaltHat jemand eine Idee in welcher Richtung ich den Fehler suchen könnte?
Viele Grüße
-
@flexer Hmm, wie werden die Sensoren denn ausgewertet?
Eigenes ESP8266 Sketch, oder Tasmota?
Alle parallel auf einen OneWire Bus?
Ist der "Solar" Sensor auch der mit der höchsten Seriennummer unter den drei Sensoren?Falls Du etwas mit den Messwerten machst, reicht es ja nicht, das Problem "kosmetisch" zu lösen...
Falls eine kosmetische Lösung reicht und Du die Werte über den influx-Adapter schreibst, könnte man hier etwas eintragen, um die Ausreißer zu ignorieren:
-
Widerstände in Deinem Konstrukt verbaut ?
-
@martinp Geht mal, geht mal nicht klingt erstmal nach Wackelkontakt oder Störsignalen.
Versuch doch mal die DS direkt über ihre Adressen aufzurufen, siehe hier: https://github.com/milesburton/Arduino-Temperature-Control-Library/blob/master/examples/Multiple/Multiple.ino#L139 -
@haselchen Ja genau einen. Den Aufbau muss ich raussuchen. Melde mich
-
@geschild das ist auch mein Verdacht. Zweite Möglichkeit wäre der Spannungsregler des D1Mini Clones...
Neue Version mit Leiterplatte und ESP32 ist eigentlich fertig. Hat aber andere Abmessungen, als der Prototyp. Warte noch bis es wärmer ist mit dem Umbau
-
So hab ich es gemacht. Ist eine Nodemcu dran mit ESP Easy
So wie in dem Video
https://youtu.be/jQrcybWapuA?si=igohLALrPQ5Ec6lD -
@flexer sagte in ESP 8266 Einbindung von DS18B20 Temperatursensoren:
So hab ich es gemacht. Ist eine Nodemcu dran mit ESP Easy
sieht nicht richtig aus.
Nur 1 Widerstand und nur ein datasiehe:
https://forum.iobroker.net/topic/69730/csw120-warmwasserspeicher-an-welchen-rohren-messen/12 -
-
@bahnuhr Man kann mehrere OneWire-Instanzen auf verschiedenen Pins betreiben.
-
@bananajoe Ist aber natürlich auch in der Weise, wie von @Flexer gelöst durchaus funktionsfähig. Einen zweiten One-Wire-Bus aufzumachen ist aber Overkill bei zwei Sensoren ... zwei Ports zu nutzen hat Vorteile bei Serienproduktion von Geräten. Da müsste man ansonsten anhand der Seriennummer "anlernen" welcher Sensor welchen Temperatur-Messpunkt überwacht....
Die Farbcodes der Widerstände sind etwas unklar.
Wenn das wirklich gelb - violett - braun - gold ist, wären das 470 Ohm. Das ist deutlich zu wenig ...
https://www.analog.com/media/en/technical-documentation/data-sheets/ds18b20.pdf (Seite 7 Bild 7)In der Regel wird 4,7 kOhm 5% Toleranz genutzt (gelb - violett - rot - gold)
Achtung bei Fünf-Ring-Farbcodes ist das anders! (gelb - violett - schwarz - braun - braun wäre 4,7 kOhm 1%)
-
@geschild said in ESP 8266 Einbindung von DS18B20 Temperatursensoren:
@martinp Geht mal, geht mal nicht klingt erstmal nach Wackelkontakt oder Störsignalen.
Versuch doch mal die DS direkt über ihre Adressen aufzurufen, siehe hier: https://github.com/milesburton/Arduino-Temperature-Control-Library/blob/master/examples/Multiple/Multiple.ino#L139Es sind insgesamt drei Sensoren (Raumtemperatur, und Temperatur an der Zulauf- und Ablauf-Leitung eines Heizkörpers)
Bisher war immer der Ablauf-Sensor betroffen, Jetzt war erstmals der Zulauf-Sensor nicht erreichbar.
Im Code wird beim Startup erst nach den verfügbaren Sensoren gesucht, dann werden die Seriennummern ermittelt, in aufsteigender Reihenfolge sortiert, und danach wird nur noch nach Seriennummern adressiert
Niedrigste Hausnummer -> Raumtemperatur
Mittlere Hausnummer -> Zulauf
Höchste Hausnummer -> AblaufWird nur ein Sensor gefunden, wird davon ausgegangen, dass er für die Raumtemperatur zuständig ist.
Bei zwei Sensoren Raum + ZulaufDer Sensor ging diesmal "einfach so" verloren, ohne dass der ESP neu gestartet worden wäre ...
der DS18B20 sollte ab +3V Versorgungsspannung funktionieren, der ESP-Chip ist mit 2,5 Volt zufrieden...
Mein D1Mini Clone ist von AZ Delivery und hat statt des Spannungsreglers mit 500 mA des Originals nur einen mit 300 mA Maximalstrom. Vielleicht ist der kurz vor dem Zusammenbrechen, und ein DS18B20 ist abgeschmiert, während die anderen es noch vertragen haben ...
Wird wohl wirklich Zeit, die neue Hardware in Betrieb zu nehmen, und den D1Mini Clone in den Giftschrank nebst Aufkleber "Nicht Zuverlässig" zu legen ...
-
@martinp sagte in ESP 8266 Einbindung von DS18B20 Temperatursensoren:
Mein D1Mini Clone ist von AZ Delivery und hat statt des Spannungsreglers mit 500 mA des Originals nur einen mit 300 mA Maximalstrom. Vielleicht ist der kurz vor dem Zusammenbrechen, und ein DS18B20 ist abgeschmiert, während die anderen es noch vertragen haben ...
Ich habe hier die gleichen Klone laufen (von den AZ habe ich schon 25 Stück gekauft), mit 2 x DS18B20 und 1x MAX7219 7-Segmentanzeige. Die wird wohl mehr Strom ziehen.
Anderes Netzteil (nicht Ladegerät) zu testen kann natürlich nicht schaden. Natürlich konnte auch so ein Sensor defekt sein oder die Lötstellen sind nicht perfekt.
-
@bananajoe Vielleicht gibt es verschiedene Chargen, und AZ-Delivery baut inzwischen wieder 500 mA Regler ein ... die Markierungen auf den Winz-Chips sind aber nicht besonders einfach zu entschlüsseln
Meiner trägt die Aufschrift "DE=A1D"
https://www.sunrom.com/p/rt9193-33gb-rt9193-33pb-sot23-5-300ma-ldo
also 300 mAVon AZ-Delivery gibt es aber wohl auch Chargen mit diesem hier, Aufschrift "4A2D"
https://datasheet.lcsc.com/lcsc/2111081830_Shenzhen-Fuman-Elec-4A2D_C2832127.pdfDer hat 500 mA!