Pufferspeicher Temperaturanzeige

Es gibt 8 Antworten in diesem Thema, welches 14.083 mal aufgerufen wurde. Der letzte Beitrag () ist von SolarEngel.

  • Hallo liebe Holzheizer und Solaranlagen Nutzer :)



    Im Zuge der Erneuerung meines Holzvergasers habe ich mir eine Anzeige für den Ladezustand der Pufferspeicher entwickelt. Zielsetzung war es, meinem Vater einfach und verständlich zu zeigen ob er nachlegen darf und wie viel warmes Wasser auf welchem Temperaturniveau noch vorhanden ist. Diese Anforderung wird von meinem System erfüllt, selber verschaffe ich mir ebenso immer wieder gerne einen Überblick und sei es nur um den Energieverbrauch über Nacht oder die Zeit bis zum nächsten anfeuern abzuschätzen.



    Kurzum, mit der Anzeige bekommt man einen guten Eindruck über die Schichtung des Speichers sowie seinen Ladezustand, wesentlich Detaillierter als mit den üblichen Thermometern am Puffer.



    Da ich die Anzeige sehr hilfreich finde soll sie nun auch am Trinkwasserspeicher mit Solarunterstützung installiert werden. Hierfür sind ein paar kleine Anpassungen notwendig, grundsätzlich soll es sich aber um das gleiche Gerät handeln (gleiches Anzeigeprinzip).



    Ich könnte mir vorstellen, dass diese Anzeige bei einigen im Forum an Interesse stößt. Da ich die Erweiterung/Umbau für den Solar-Speicher plane und das Gerät fertigen muss bietet es sich an dieser Stelle an gleich ein paar mehr zu bauen sofern jemand interessiert ist.



    Über Anregungen, Anfragen, alternative Ideen freue ich mich sehr.




    Hier eine genauere Beschreibung zu den Bildern und wie es Funktioniert.


    Mein System verfügt über 2 Pufferspeicher mit je 2700L. In einem Abstand von 20cm sind Temperatursensoren an die Pufferwandung montiert (verschraubt, geht aber auch als Kette oder Stab). Für jeden Sensor wird ein eigener Punkt auf der Matrix-Anzeige dargestellt. Der Punkt kann sich in Abhängigkeit der Temperatur seines Sensors, in seiner Spalte, nach oben/unten bewegen. Somit spiegelt sich auf der Y-Achse die Temperatur und auf der X-Achse die Höhe des Speichers wieder. Damit sich ein Punkt um eine Stelle nach oben bewegt muss es eine Temperaturänderung von 2,5°C geben. Da warmes Wasser leichter ist als kaltes kommt es immer zu einem Abfall der Kurve von oben links nach unten rechts. Um neben den Punkten als Indikatoren einen Zahlenwert zu haben ist für jeden Pufferspeicher eine Anzeige hinzugefügt (auf den Bildern sind die Werte noch um 2.5° versetzt, alter Entwicklungsstand). Die Anzeige von beiden Puffern nebeneinander ergibt quasi eine „Gesamtanzeige“ mit einer Kurve.


    Anbei ein paar Beispielbilder von der Anzeige im Betrieb


    Die Bedienungsanleitung:



    Beispielbilder aus dem Betrieb:

    Puffer 1, auf dem die Sensoren im 20cm abstand montiert sind


    Beispieldarstellung für einen Speicher, es wären 16 Sensoren möglich (Bild mit 14)

  • Hallo Michael


    Finde deine Anzeige sehr Umfangreich und Detailiert.
    Ist aber sicher sehr aufwendig zu realisieren.
    Je mehr Temperatursensoren man am Puffer hat um so genauer kann man dessen Inhalt bestimmen.
    Dies trifft insbesonders auf sehr große Puffer zu.


    Ich setze bei meinen 1000 Liter Puffern 5 Sensoren pro Puffer ein und errechne so die einigermaßen mittlere Temperatur von die ziehe ich die nicht nutzbare Heizungstemperatur
    (bei mir 44°C ) ab und erechne mir dann aus allen Puffern die nutzbare Kwh für die Heizung.
    Die Heizlast wird ebenfalls berechnet (Brutto und Netto) welche einseits aus der Eingespeisten
    Heißwassermenge ,Heißwassertemperatur und Rücklauftemperatur sich ergibt.(Brutto).
    Nettoheizleistung ergibt sich aus den Verbrauchsmenge und der sich ev ergebenen verwertbaren
    (für Heizungszwecke) noch nutzbaren Rücklauftemperatur.
    Dividiert man die Nutzbare Heizungsenergie durch die Nettoheizenergiemenge ergibt sich die
    jeweilige Zeitspanne (Std) mit der die Pufferheizung das Heizsystem versorgen kann.


    Siehe auch meine vorhergehenden Beiträge 131231 ; 160245 ; 160527 .


    mfg Glutgeist

  • Hallo asdhh,


    die Idee mit den eng-verteilten Sensoren finde ich sehr gut, deine Visualisierung ist sehr interessant zu sehen!
    Ist das wirklich eine LED-Matrix? Kann man die fertig kaufen, oder hast du die selbst gelötet?


    Ich fange zwar gerade erst an (Pufferspeicher kommt morgen), aber ich habe mir auch schon eine günstige Lösung gebastelt.


    3 x DS18B20 one-wire Sensoren angeschlossen an Sonoff TH10 (mit Tasmota) (Sensoren 4,- Euro, Sonoff ca 15,- Euro).
    Das geht dann an einen Raspberry PI mit Home Assistant zur Visualisierung als Graph über die Zeit.
    Gerade im Probelauf an meiner Ölheizung - das hätte ich schon vor Jahren machen sollen :whistling: . Man sieht auf den ersten Blick Optimierungspotential.


    Da die Sensoren so günstig sind, werde ich deine Idee aufgreifen und noch ein paar mehr an den Pufferspeicher verbauen (ich glaube Tasmota kann >100 an einem Strang) und auch so eine Schichtanzeige basteln (in Software).


    Hier ein erster Screenshot:
    Blau - Kesseltemperatur
    Grün - Zirkulation
    Rot - Vorlauf FBH


    [Blockierte Grafik: https://i.imgur.com/cXukpQj.jpg]


    Man sieht z.B., dass der Brenner morgens 2x startet, weil die Warmwasseranforderung kurz nach der FBH-ANforderung kommt :(
    Überrascht bin ich, dass der Kessel nur ein paar Grad über die Nacht verliert, dafür dass die Isolierung so mangelhaft ist nicht schlecht ... X/


    Viele Grüße!

  • Hallo zusammen,
    habe vor sieben Jahren mal eine Beitrag verfasst der sich mit diesem Thema beschäftigt.
    Alles was man braucht ist ein PT1000 Temperatureingang. Schaltet man dann 10 PT100 Sensoren in Reihe und verteilt diese vertikal über den Pufferspeicher, hat man einen recht hochauflösenden Mittelwert der Puffertemperatur.
    Beitrag: Ladezustand Pufferspeicher
    Hoffe es ist für irgend jemanden hilfreich.
    Grüße, Frank

  • Hallo,


    Im Anhang einmal ein Vorschlag einer Speicheranzeige per Software.
    Der komplette Rechengang ist mit Excel dargestellt und kann damit
    in einer SPS nachvollzogen werden.


    Die Anzahl der Messstellen ist frei wählbar.


    Als Ergebnis wird die Restenergie im Speicher angezeigt.


    mfg
    HJH


    Die Datei ist als zip-Datei gepackt, und ist entpackt eine Excel Datei

  • Hallo Michael,


    gute Idee mit deiner Anzeige für den Ladezustand der Pufferspeicher.


    Meine beiden Pufferspeicher sind für sowas schon vorgerüstet, denn bei mir ist eine lange, senkrechte Leiste dran zum drunter-klemmen vieler Temperatursensoren.
    Ich hatte auch zu Beginn der Pufferinstallation so eine Idee mit vielen DS18B20 one-wire Temperatur-Sensoren, die man in kurzen Abständen wie einen langen Bus unter die Leiste klemmen kann
    und alle einzeln über eigene ID-Adressen die Temperaturen abfragen kann. Aber ich habe das Projekt damals in meine Rentenzeit verschoben, die ja so langsam in greifbare Nähe rückt.


    Aber Löten von solchen LED-Matrixen solltest in heutiger Zeit besser mit einem Grafikdisplay realisieren. Diese Displays bekommst heute schon für ein
    paar Euro in allen möglichen Grössen, hast aber viel mehr Möglichkeiten zum Anzeigen, wenn es eine Anzeige vor Ort am Pufferspeicher im Heizraum sein muss.


    Wahrscheinlich werden die LED-Matrix und die beiden LCD-Anzeigen von einem kleinen Mikrocontroller angesteuert.
    Ich bin ein grosser Arduino (ATmel) Fan, begeistert von der Zuverlässigkeit der kleinen stromsparenden Module.
    Allerdings verwende ich inzwischen nur noch die ESP32 Module, die sind auch sehr stromsparend und klein wie ein Arduino-NANO und auch mit Arduino-IDE zu programmieren,
    haben allerdings einen riesigen Programmspeicher viel mehr Rechenpower und Wlan, Bluetooth und unterstützen alle derzeit aktuellen Bus-Systeme
    sind sogar preiswerter (unter 10 Euro) als ein Arduino-Uno oder Mega oder NANO.


    ESP32 mit TFT-Grafikdisplay


    Du könntest zu dem Grafikdisplay vor Ort, zusätzlich einen WEB-Server auf den ESP32 draufmachen und deine Matrix dort als HTML-Seite ablegen,
    dann kannst zusätzlich im ganzen Haus mit Handy, Tablet oder Computer auf die Matrix-Anzeige von deinem ESP32 im Heizraum übers Wlan zugreifen.
    Wie du siehst, es tun sich viele neue Möglichkeiten damit auf.


    Also das Löten, Erstellen und Zusammenbauen einer speziellen Platine für die LED-Matrix-Anzeige ist in heutiger Zeit viel zu aufwendig und zu teuer.
    Heute wird in solchen Fällen nicht gelötet, sondern programmiert.
    Wenn du dich mit Arduinos auskennst, dann ist der Rest überhaupt kein Problem, es gibt inzwischen eine sehr grosse Maker-Szene, da kann man alles lernen.


    Gruß
    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Michael,


    damit es nicht nur bei ein paar warmen Worten bleibt, habe ich ein kleines Muster-Display für deine Matrix-Anzeige mit der TFT_eSPI-Bibliothek auf einem ESP32 gezaubert.
    Für das Grafikdisplay habe ich mein Waveshare 3.5inch RPi LCD 480x320 verwendet.



    Das ist mein Universal-Display für ESP32 und Raspi, wenn ich eine lokale Anzeige brauche. Mit 9 Drähten kann es direkt mit dem ESP32 verbunden und betrieben werden.
    Es ist kein zusätzliches Netzteil notwendig, da der Stromverbrauch sehr gering ist.


    Das Bespielprogramm ist sehr überschaubar und beinhaltet alle notwendigen Elemente für deine Matrix-Anzeige.
    Bevor das Programm zum laufen bringen kannst, muss in der Arduino-IDE mit dem Bibliotheksverwalter die TFT_eSPI-Bibliothek V2.2.6 von Bodmer installiert werden,
    damit das Waveshare 3.5inch RPi LCD 480x320 vom ESP32 über die SPI-Schnittstelle angesprochen werden kann.


    Ich kann zwar sehr gut löten, hab aber noch mehr Spass ohne zu löten.


    Gruß
    Jürgen

    Dateien

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo an alle die sich bisher die Zeit genommen haben diesen Beitrag zu verfolgen und mit zu gestalten.
    Die eingangs beschriebene Anzeige habe ich schon umgesetzt, dahinter steckt wie so oft ein Arduino, bzw. ein paar mehr....wie auch immer, das ganze ist in kombination mit einer fertigen matrix realisiert, den Lötspaß wollte ich mir nicht antun. Als Sensoren sind wie auch schon aufgekommen die DS18B20 installiert wobei ich massive Probleme mit der Leitungslänge hatte, da werde ich langfristig noch mal was machen müssen, zeitweise steigen sensoren bei Messungen aus, das ist aber von "Luft und liebe / wetter" abhängig (wundert mich echt warum es tagelang gut geht und dann mal weider paar tage nur fehler aufm Bus sind...)


    Hier mal ein Link, zeitweise gibt es diese Displays als Stück zu kaufen, gegebenenfalls muss man 4 4x1 selber zusammenstellen.
    https://de.aliexpress.com/item…042311.0.0.27424c4dc6MpFk


    Zur Zeit beschäftigt mich der Hausumbau etwas, somit ist die Bastelaltivität geringer, ich habe aber alle Beiträge mit Begeisterung verfolgt.
    Sehr praktisch und einfach umzusetzen fand ich die Lösung der Energieabschätzung der Puffer über das bekannte Wasservolumen und die Temperaturen, danke für den Tipp :)
    ebenso toll der vorherige Beitrag mit der Display umsetzung, ich denke da komme ich noch mal drauf zurück um so ein Display neben den Kessel zu hängen.


    Ich möchte mir ja immer noch eine/diese Lösung für die Solar-Trinkwasserspeicher bauen, vielleicht wär das ja was für jemanden, bitte bei mir melden, dann würde ich paar mehr Komplettsets zusammenstellen.


    Ich hoffe dieser Beitrag hilft Einigen bei der Lösungsfindung der Speichertemperaturanzeige oder regt die kreativität an.
    Soweit erstmal schöne grüße aus Uelzen und eine gute Heizfreie Zeit ;)
    mfg Michael


  • Als Sensoren sind wie auch schon aufgekommen die DS18B20 installiert wobei ich massive Probleme mit der Leitungslänge hatte, da werde ich langfristig noch mal was machen müssen, zeitweise steigen sensoren bei Messungen aus, das ist aber von "Luft und liebe / wetter" abhängig (wundert mich echt warum es tagelang gut geht und dann mal wieder paar tage nur fehler aufm Bus sind...)


    Hallo Michael,


    die DS18x20 Sensoren werden mit 1-Wire-Bus und Betriebsspannungen zwischen 2,8 V und 5,5 V betrieben und arbeiten im Bereich von -55 °C bis +125 °C .
    Bei deinen Arduinos mit 5V Betriebsspannung in der Regel.


    Vielleicht kannst du deinen 1-Wire-Bus von den DS18x20 Sensoren näher beschreiben:
    1. welche Topologie hat dein 1-Wire-Bus ? Lineare Struktur, Sternstruktur ?
    2. hast du mehrere 1-Wire-Busse ?
    3. wie lange sind die Leitungen vom Arduino zum DS18x20 Sensor ?
    4 wie lange sind die Leitungen von Sensor zu Sensor ?
    5 mit welcher Betriebsspannung arbeitet dein 1-Wire-Bus?
    6 abeitet dein 1-Wire-Bus mit parasitaerer Versorgung (2 Leitungen) ?
    7. wieviele DS18x20 Sensoren hängen am 1-Wire-Bus ?
    8. wie gross ist der Pull-Up Widerstand am Arduino-Pin (DATA zu Vdd) vom 1-Wire-Bus? 4,7kOhm oder kleiner ?


    Mit meinem ESP32 betreibe ich den 1-Wire-Bus mit 3 Leitungen und mit 3,3V direkter Spannung zu jedem der 10 Sensoren, also ohne parasitaere Versorgung,
    alle 10 DS18x20 Sensoren parallel auf einem BUS mit 3 Leitungen (Vdd=3.3V, DATA, GND).


    Mein 1-Wire-Bus mit 3 Leitungen (normal power mode)


    Wie immer, wenn irgendwelche Probleme auftreten, gehts gleich ins Eingemachte, auch hier bei serieller, asynchroner Signalverarbeitung auf DATA-Leitung.


    Der 1-Wire-Bus arbeitet mit DS18x20 Sensoren im Standard-Modus (ca. 15,4 kBit/s, Busgeschwindigkeit) mit sogenannten "Time Slots" um 60-120µs im Idealfall.


    Der Abtastzeitpunkt (SAMPLE LINE), um eine digitale "0" oder "1" zu erkennen, liegt etwa in der Mitte eines "Time Slots".


    Signal-Störungen sollten in der Nähe dieses Abtastzeitpunktes vermieden werden oder nicht vorhanden sein.
    Alles andere wirkt sich theoretisch nicht negativ auf den Dateninhalt aus.


    1-Wire-Bus "Time-Slot"


    Zur Fehlersuche am 1-Wire-Bus brauchst ein Oszilloskop um das DATA - Signal und mögliche Störungen darauf, sehen und beurteilen zu können.



    Messung1 an meinem 1-Wire-Bus: Idealfall, 1-Wire Signale (ohne Störungen auf DATA) kurze Leitungen auf dem Steckbrett



    Messung2 an meinem 1-Wire-Bus: mit 20m langer Leitung vom ESP32 zu den DS18x20 Sensoren 1-Wire Signale (mit Störungen auf DATA)
    Diese Störungen sind zeitlich unkritisch und verursachen keine Fehler bei der Decodierung.


    Da das Timing auf dem 1-Wire-Bus mit den "Time Slots" sehr wichtig ist, verwende ich noch zusätzlich einen Logikanalyser.


    Dieser kann die Signale (Time-Slots) und andere wichtige Impulse vom 1-Wire-Bus über einen längeren Zeitraum digital anzeigen
    und kann das 1-Wire-Protokoll decodieren und zeigt mir ganz genau jeden einzelnen Befehl der vom Master(Arduino oder ESP32)
    zum Slave(DS18x20 Sensor) und umgekehrt ausgeführt wird, lesbar in Hex-Bytes an.


    Also mit dem Logikanalyser kann man auch Softwarefehler vom Master(Arduino) Programm erkennen, wenn z.B. das Timing der "Time Slots", der RESET-IMPULS,
    oder der PRESENT-IMPULS sich nicht optimal auf der Zeitachse befinden.


    Messung3 an meinem 1-Wire-Bus: Logikanalyser mit 1-Wire Decoder


    Logikanalyser-Ausgabe von 1-Wire-Protokoll Analyse:
    ...
    0.032081600000000,1-Wire,DATA: [D (0x44)]
    0.132317920000000,1-Wire,RESET condition
    0.132831200000000,1-Wire,PRESENCE condition
    0.133287440000000,1-Wire,MATCH ROM command: [U (0x55)]
    0.133872240000000,1-Wire,FAMILY CODE section from ROM: ['16' (0x10)]
    0.134481040000000,1-Wire,ROM CODE section from ROM: ['34393275975' (0x000801FFBE47)]
    0.138033200000000,1-Wire,CRC section from ROM: ['208' (0xD0)]
    0.138631120000000,1-Wire,DATA: ['190' (0xBE)]
    0.139225680000000,1-Wire,DATA: [1 (0x31)]
    0.139841680000000,1-Wire,DATA: ['0' (0x00)]
    0.140457280000000,1-Wire,DATA: [K (0x4B)]
    0.141065040000000,1-Wire,DATA: [F (0x46)]
    0.141679360000000,1-Wire,DATA: ['255' (0xFF)]
    0.142288800000000,1-Wire,DATA: ['255' (0xFF)]
    0.142904720000000,1-Wire,DATA: ['2' (0x02)]
    0.143513200000000,1-Wire,DATA: ['16' (0x10)]
    0.144121840000000,1-Wire,DATA: [r (0x72)]
    ...


    Es können Hardwarefehler (Signalstörungen) oder Softwarefehler (Timing Probleme) auftreten. Aber mit den zwei Werkzeugen
    Oszilloskop und Logikanalyser sollte man diese Probleme analysieren und sichtbar machen können
    und ggf. Abhilfe (Pull-Up Widerstand 4,7kOhm verkleinern) schaffen können.

    Im Anhang ist ein ESP32-Scanner-Programm, das nach 1-Wire devices sucht und z.B. Adresse und Daten von meinen 10 DS18x20 Test-Sensoren ausgibt.


    Ausgabe vom ESP32-Scanner-Programm: Liste aller DS18x20-Sensoren, die auf meinem 1-Wire-Bus gefunden wurden


    ............64-Bit-ROM-Code (Adresse)..............Sensor-Typ...........9-Byte Daten aus Scratch Pad.................umgerechnete Daten in Temperaturwerte
    1. ROM-10-40-7E-FF-1-8-0-77 CRC=77 Chip=DS18S20 Data = 1 31 0 4B 46 FF FF 6 10 49 CRC=49 Temperatur = 24.37 Celsius, 75.87 Fahrenheit
    2. ROM-10-A8-A6-FF-1-8-0-9F CRC=9F Chip=DS18S20 Data = 1 31 0 4B 46 FF FF 5 10 1C CRC=1C Temperatur = 24.44 Celsius, 75.99 Fahrenheit
    3. ROM-10-22-A9-FF-1-8-0-D5 CRC=D5 Chip=DS18S20 Data = 1 31 0 4B 46 FF FF 4 10 D8 CRC=D8 Temperatur = 24.50 Celsius, 76.10 Fahrenheit
    4. ROM-10-36-BE-FF-1-8-0-7F CRC=7F Chip=DS18S20 Data = 1 31 0 4B 46 FF FF 5 10 1C CRC=1C Temperatur = 24.44 Celsius, 75.99 Fahrenheit
    5. ROM-10-51-87-FF-1-8-0-4E CRC=4E Chip=DS18S20 Data = 1 31 0 4B 46 FF FF 4 10 D8 CRC=D8 Temperatur = 24.50 Celsius, 76.10 Fahrenheit
    6. ROM-10-09-BC-FF-1-8-0-35 CRC=35 Chip=DS18S20 Data = 1 31 0 4B 46 FF FF 4 10 D8 CRC=D8 Temperatur = 24.50 Celsius, 76.10 Fahrenheit
    7. ROM-10-6B-9D-FF-1-8-0-AD CRC=AD Chip=DS18S20 Data = 1 31 0 4B 46 FF FF 4 10 D8 CRC=D8 Temperatur = 24.50 Celsius, 76.10 Fahrenheit
    8. ROM-10-47-BE-FF-1-8-0-D0 CRC=D0 Chip=DS18S20 Data = 1 31 0 4B 46 FF FF 5 10 1C CRC=1C Temperatur = 24.44 Celsius, 75.99 Fahrenheit
    9. ROM-10-B7-91-FF-1-8-0-35 CRC=35 Chip=DS18S20 Data = 1 31 0 4B 46 FF FF 5 10 1C CRC=1C Temperatur = 24.44 Celsius, 75.99 Fahrenheit
    10.ROM-10-5F-A1-FF-1-8-0-39 CRC=39 Chip=DS18S20 Data = 1 31 0 4B 46 FF FF 6 10 49 CRC=49 Temperatur = 24.37 Celsius, 75.87 Fahrenheit
    Keine weitere device addresse.


    Ich habe zwei Testfälle um definierte Zustände auf dem 1-Wire-Bus zu erzeugen, mit meinem ESP32 ausprobiert, die zur Fehlersuche verwendet werden können:
    Damit kann eine Kommunikation vom Slave((DS18x20 Sensor) zum Master(Arduino) mit festen, bekannten Werten erzwungen werden.


    Dies sollte zum Testen der reinen 1-Wire-Bus Kommunikation ausreichend sein, um mögliche Fehler auf dem 1-Wire-Bus zu erkennen,
    denn man kennt ja aus den Testfällen (die nachfolgend beschrieben werden) die 9-Byte Daten aus Scratch Pad, die kommen müssen.


    1. Testfall Timing-Probleme:
    Es sind nur kleine Änderungen im Programm notwendig.
    Hier wird die Temperaturmessung auskommentiert (weggelassen)


    // ds.reset();
    // ds.select(addr);
    // ds.write(0x44, 0); // Start Messung, parasitaere Versorgung aus


    Testfall um zu sehen, was passiert, wenn diverse Timing-Probleme auftreten.
    Das Scratch Pad ist im DS18x20 als SRAM-Speicher (statisches RAM) realisiert, 9 Byte groß.
    Bei den beiden Bytes 0 und 1 ist der Temperaturmesswert 85°C (= 00AAh) angegeben und dieser Wert hat eine besondere Bedeutung,
    er ist ein „Fehler-Anzeige-Wert“
    Der Wert „85“ ist der Power-On-Wert des Sensors, d.h. immer wenn der DS18x20 eingeschaltet, also mit Spannung versorgt wird,
    wird dieser Wert als definierter Anfangswert in die beiden Register geschrieben.
    Wenn nun KEINE korrekte oder eine fehlerhafte Wandlung durchgeführt wird, so bleibt dieser Wert erhalten
    und der Master liest immer nur „85“ aus.


    Um das zu simulieren habe ich für diesen Testfall das Convert T (Leitet die Temperaturmessung ein) 0x44 weggelassen.


    .............................................................................................Byte0 + 1
    1. ROM-10-40-7E-FF-1-8-0-77 CRC=77 Chip=DS18S20 Data = 1 AA 0 4B 46 FF FF C 10 87 CRC=87 Temperatur = 85.00 Celsius, 185.00 Fahrenheit
    2. ROM-10-A8-A6-FF-1-8-0-9F CRC=9F Chip=DS18S20 Data = 1 AA 0 4B 46 FF FF C 10 87 CRC=87 Temperatur = 85.00 Celsius, 185.00 Fahrenheit
    3. ROM-10-22-A9-FF-1-8-0-D5 CRC=D5 Chip=DS18S20 Data = 1 AA 0 4B 46 FF FF C 10 87 CRC=87 Temperatur = 85.00 Celsius, 185.00 Fahrenheit
    4. ROM-10-36-BE-FF-1-8-0-7F CRC=7F Chip=DS18S20 Data = 1 AA 0 4B 46 FF FF C 10 87 CRC=87 Temperatur = 85.00 Celsius, 185.00 Fahrenheit
    ...


    2. Testfall falsche Sensor-Adresse:
    Es sind nur kleine Änderungen im Programm notwendig.
    Hier wird eine falsche Adresse erzeugt.


    ds.reset();
    addr[5] = 99; //test adress-array manipuliert , falsche Adresse erzeugt
    ds.select(addr);
    ds.write(0x44, 0); // Start Messung, parasitaere Versorgung aus



    Testfall um zu sehen, was passiert, wenn eine falsche Sensor-Adresse verwendet wird.
    adress-array manipuliert, so dass eine falsche (nicht existierende) ROM-Adresse angesprochen wird.
    -ds.select(addrArray) // Auswahl eines Device anhand seiner Adresse.
    Ergebnis: alle 9 Bytes aus der Scratch Pad haben den Wert "FF"


    1. ROM-10-40-7E-FF-1-8-0-77 CRC=77 Chip=DS18S20 Data = 1 FF FF FF FF FF FF FF FF FF CRC=C9 Temperatur = -0.50 Celsius, 31.10 Fahrenheit
    2. ROM-10-A8-A6-FF-1-8-0-9F CRC=9F Chip=DS18S20 Data = 1 FF FF FF FF FF FF FF FF FF CRC=C9 Temperatur = -0.50 Celsius, 31.10 Fahrenheit
    3. ROM-10-22-A9-FF-1-8-0-D5 CRC=D5 Chip=DS18S20 Data = 1 FF FF FF FF FF FF FF FF FF CRC=C9 Temperatur = -0.50 Celsius, 31.10 Fahrenheit
    ...


    Bevor das ESP32-Programm zum laufen bringen kannst, muss in der Arduino-IDE mit dem Bibliotheksverwalter die OneWire-Bibliothek Vers. 2.3.5
    von Paul Stoffregen installiert werden, damit über den 1-Wire-Bus die DS18x20 Sensoren angesprochen werden können.


    Viel Erfolg bei der Fehlersuche auf dem 1-Wire-Bus.


    Gruß
    Jürgen

    Dateien

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!