Ich vermute seit einiger Zeit, dass meine Heizanlage nicht optimal arbeitet. Manche Heizstränge fühlen sich wärmer an als andere ... Da hilft nur messen, aber wie? Am Ende entstand ein Board mit 8 unabhängigen Kanälen zur Messung der Temperatur (DS18B20) und 2 Kanälen zur Messung von Strom mittels "Current-Transformers" (Stromzangen). Der Gedanke ist, damit gefahrlos den Schaltzustand von Pumpen zu erfassen. Wenn schon, dann aber richtig. Jeder Messkanal hat einen eigenen Eingangsschutz, die Platine ist passend auf ein zu bearbeitendes Standardgehäuse dimensioniert und der ESP32-S3 (Arduino Nano ESP) kann mit ESPhome oder Micropython genutzt werden. Auch habe ich ordentliche Klemm-Anschlüsse zum leichten Wechsel der Sensoren vorgesehen. Hinzu kommt ein kleines on-Board Display zur Anzeige der gerade erfassten Werte. Ich betreibe den Controller mit ESPHome und Homeassistant und zusätzlich mit InfluxDB und Grafana. Das ermöglicht eine Langzeitdatenaufnahme und spätere Auswertung. (Mit ESPHome ist auch MQTT möglich.) Was würdet ihr bei gleicher Fragestellung noch messen wollen? Den Durchfluss durch ein Rohr zu messen wäre schön. Aber wie, ohne einen Sensor in das Rohr einzubauen? Ich hatte mir schon eine nicht-intrusive Durchflussmessung mit TOF-Sensoren überlegt. Das muss nicht sonderlich genau sein. Ist da jemand schon weiter? Demnächst werde ich meine überzähligen Platinen einschließlich einiger essentieller Bauteile im Form Markt anbieten.
:
Verschoben durch Moderator
Was hast du für eine Heizung? Ich hab was ähnliches hier laufeb. Messe diverse Vorlauf/Rücklauftemperaturen und über die Viessmann Opto-Schnittstelle noch ein paar Daten. Demnächst kommt hoffentlich noch ein Impulsgeber für den Gaszähler Gruß Roland
:
Bearbeitet durch User
Klaus H. schrieb: > Am Ende entstand ein Board Ohne Schaltplan und Layout hat das in diesem Thread nichts zu suchen! Ach ja, im Titel des Forums steht auch noch "Code".
Auch wenn hier nebenan fleißg über das Entrosten von Funkgeräten berichtet wird -- Projekte & Code ist nicht die Ecke zum Präsentieren von "Problemen und Fragen", sondern zum Vorstellen (weitestgehend) fertiger Projekte, mit Schaltplan und Quelltext (so vorhanden). Das hier passt nach "Haus & Hof" oder vielleicht nach "Zeigt her Eure Basteleien".
Suche nach Hydraulischen Abgleich. Geht auch durch drosseln der Rücklaufdrossel in den Heizkörpern mit der höchsten Rücklauftemperatur.
Klaus H. schrieb: > Was würdet ihr bei gleicher Fragestellung noch messen wollen? Den > Durchfluss durch ein Rohr zu messen wäre schön. Bei meiner Ölheizung im EFH hatte ich über Viessmann Optolink die Anlagenzustände erfasst, und parallel dazu den Pegel im Öltank über Ultraschall gemessen. Auf der Basis der Betriebszeiten und des über den Ölverbrauch im Tank kalibrierten Düsendurchsatzes konnte ich grob den Wärmebedarf des Hauses je nach Außentemperatur ermitteln. Später kam noch die Messung der Heizkreis-VL/RL-Temperaturen dazu. Diesen Sommer habe ich Ölheizung und 300l Warmwasserspeicher durch eine Monoblock-Wärmepumpe mit 600l Hybridspeicher und Frischwasserstation ersetzen lassen. Dabei habe ich sowohl im Sekundärkreis der Wärmepumpe zwischen Außeneinheit und Inneneinheit als auch im Heizkreis zwischen Mischer und Heizkörpern Wärmemengenzähler (Zenner C5-IUF) einbauen lassen, und frage diese alle 10s über Kabel-Mbus ab. Die ins Warmwasser gelieferte Wärmemenge messe ich mit einem Impulszähler im Kaltwasserzulauf und zwei DS18B20 in Kaltwasserzulauf und Warmwasserlieferung. Damit habe ich die thermischen Leistungsströme auch unabhängig von den (reichlichen) Messdaten der neuen Geräte recht gut im Griff. Rückblickend hätte ich den Wärmemengenzähler im Heizkreis wohl schon früher einbauen lassen sollen. Denn die jetzt eingebaute 10kW-Wärmepumpe ist ziemlich unterfordert, weil das Haus bei AT -5°C nur ca. 5½kW abnimmt. Mit einem Wärmemengenzähler im Heizkreis lässt sich zudem die Heizkurve gut einstellen. Denn der Zähler misst natürlich auch den Volumenstrom. Man öffnet alle Thermostaten einmal voll, notiert den sich dabei einstellenden maximalen Volumenstrom, stellt dann die Thermostaten wieder auf die gewünschte Raumtemperatur, und kann anhand der dann erfolgenden Drosselung des Volumenstroms abschätzen, wie weit die Vorlauftemperatur über dem Nötigen liegt. LG, Sebastian
Roland P. schrieb: > Was hast du für eine Heizung? Ich hab was ähnliches hier laufeb. Messe > diverse Vorlauf/Rücklauftemperaturen und über die Viessmann > Opto-Schnittstelle noch ein paar Daten. Demnächst kommt hoffentlich noch > ein Impulsgeber für den Gaszähler Ich betreibe eine Ölheizung mit 5 Strängen "Einrohrheizung" mit jeweils 3 bis 5 Heizkörpern in einem Strang. Ein hydraulischer Abgleich ist beinahe unmöglich, aber messen erzeugt vielleicht mehr Erkenntnis.
Manfred P. schrieb: > ... > Ohne Schaltplan und Layout hat das in diesem Thread nichts zu suchen! > Ach ja, im Titel des Forums steht auch noch "Code". Harald K. schrieb: > ... > Das hier passt nach "Haus & Hof" oder vielleicht nach "Zeigt her Eure > Basteleien". Da habe ich wohl im falschen Thread eingeordnet. Jetzt wurde es ja umgezogen :-).
Rüdiger B. schrieb: > Suche nach Hydraulischen Abgleich. Geht auch durch drosseln der > Rücklaufdrossel in den Heizkörpern mit der höchsten Rücklauftemperatur. Bei mir ist es leider eine Einrohrheizung. Dort kann man an manchen Heizkörpern den Anteil des Durchfluss durch den Heizkörper einstellen. Ich habe aber zunächst das Problem, dass die Stränge im "statischen Zustand" wohl unterschiedlich durchflossen werden.
Sebastian W. schrieb: > ... > Rückblickend hätte ich den Wärmemengenzähler im Heizkreis wohl schon > früher einbauen lassen sollen. Denn die jetzt eingebaute 10kW-Wärmepumpe > ist ziemlich unterfordert, weil das Haus bei AT -5°C nur ca. 5½kW > abnimmt. > ... Ein Wärmemengenzähler wäre gut, doch bräuchte ich einen Zähler je Strang. Und ein Wärmemengenzähler misst den Volumenstrom (Durchfluss) und die Differenztemperatur zwischen Hin- und Rücklauf. Eine nicht-intrusive Messung des Durchfluss wäre interessant. Ich vermute aber, das ist (heute) nicht möglich.
Klaus H. schrieb: > Am Ende entstand ein Board mit 8 unabhängigen Kanälen zur Messung der > Temperatur (DS18B20) ... > ... > Wenn schon, dann aber richtig. Jeder Messkanal hat einen eigenen > Eingangsschutz, Warum brauchst du für busfähige Sensoren jeweils individuellen Eingangsschutz, wenn doch ein Klemmblock und EIN gemeinsamer Eingang reicht? Je nach räumlicher Anordnung in der Anlage können die Sensoren auch auf einem Kabel aufgereiht sein.
:
Bearbeitet durch User
Klaus H. schrieb: > Ein Wärmemengenzähler wäre gut, doch bräuchte ich einen Zähler je > Strang. Und ein Wärmemengenzähler misst den Volumenstrom (Durchfluss) > und die Differenztemperatur zwischen Hin- und Rücklauf. Eine > nicht-intrusive Messung des Durchfluss wäre interessant. Ich vermute > aber, das ist (heute) nicht möglich. Möglich ist alles... https://de.wikipedia.org/wiki/Ultraschall-Durchflussmesser#Clamp-On-Durchflussmesser Aber ob es das billig genug gibt, dass man das privat in jeden Strang einbauen will, weiss ich nicht. PS: suche mal auf Aliexpress nach "TUF-2000M" ob das was taugt.
:
Bearbeitet durch User
Klaus H. schrieb: > Demnächst werde ich meine überzähligen Platinen einschließlich einiger > essentieller Bauteile im Form Markt anbieten. Neben dem Angebot im Markt, wäre eine Veröffentlichung von Schaltung und Board sicherlich für einige sehr nützlich. Der Aufbau sieht auf den ersten Blick sehr ordentlich aus.
Rainer W. schrieb: > > Warum brauchst du für busfähige Sensoren jeweils individuellen > Eingangsschutz, wenn doch ein Klemmblock und EIN gemeinsamer Eingang > reicht? > Je nach räumlicher Anordnung in der Anlage können die Sensoren auch auf > einem Kabel aufgereiht sein. Hier gibt es zweieinhalb Gründe: 1. Die Zuverlässigkeit der Linien oder Sternverkabelung ist mit vielen Sensoren mäßig. Man muss nur die vielen Posts zu dem Thema im Internet lesen. Dallas/Analog Devices beschreibt in der Abhandlung [Guidelines for Reliable Long Line 1-Wire Networks](https://www.analog.com/en/resources/technical-articles/guidelines-for-reliable-long-line-1wire-networks.html) die vielen beeinflussenden Parameter. Da ist es am sichersten je GPIO einen Kanal zu haben, das reduziert die nicht beeinflussbaren Parameter. Der Ausfall eines Sensors kann bei BUS-Verkabelung zum Ausfall aller Sensoren führen. Und noch ein halbes Argument dazu. Ich habe festgestellt, dass die Messwerte der Sensoren bis zu 1,5 K voneinander abweichen. Meine Vermutung ist, dass in manchen Kabelsensoren mangelhafte Kopien der DS18B20 verbaut sind. Ob diese Sensoren beim onewire-Protokoll sich nach Datenblatt verhalten? Im Internet wird bezüglich der messbaren Stromaufnahme von deutlichen Unterschieden berichtet. 2. Ich halte es für wenig komfortabel, wenn die "Adressen" der DS18B20 nach jeder Änderung der physikalischen Zuordnung in der Konfiguration nachgetragen werden müssen. Noch schlimmer, vor der Nutzung muss die Adresse jedes Sensors bekannt sein oder ermittelt werden. Ein Beispiel aus der Praxis: Das Kabel zu einem Messpunkt ist zu kurz. Schnell tausche ich gegen einen Sensor mit längerem Kabel. Fertig, es ist kein Nachziehen der Konfiguration notwendig.
Nikolaus S. schrieb: > PS: suche mal auf Aliexpress nach "TUF-2000M" ob das was taugt. Danke für den Hinweis.
Joe G. schrieb: > Neben dem Angebot im Markt, wäre eine Veröffentlichung von Schaltung und > Board sicherlich für einige sehr nützlich. Der Aufbau sieht auf den > ersten Blick sehr ordentlich aus. Die Unterlagen werden nach Fertigstellung auf Github veröffentlicht. Derzeit arbeite ich an einer Version 2 mit kleineren Veränderungen gegenüber der Version 1. Mit diesem Beitrag hatte ich auf weiteren Input gehofft, was denn andere potenzielle Anwender für ihre Messanordnung noch gerne verfügbar hätten.
Klaus H. schrieb: > Mit diesem Beitrag hatte ich auf weiteren Input gehofft, was denn andere > potenzielle Anwender für ihre Messanordnung noch gerne verfügbar hätten. gerne 8 Temperatur- und zwei Stromsensoren (Pumpen) sind schon recht nützlich. Bei dieser Hydraulikvariante sind oft noch zwei Mischer verbaut. Es wäre also nützlich auch noch den Mischerzustand über 4 IO’s (zwei pro Mischer, Auf, Zu) welche 230V vertragen, einlesen zu können.
Joe G. schrieb: > ... über 4 IO’s ... welche 230V vertragen, einlesen zu können. Gedanklich sah ich das auch schon. Auf der Leiterkarte möchte ich keine Netzspannung haben. Nicht jeder ist Elektrotechniker und verhält sich entsprechend. daher auch die "Current Transformers". Für etwa 10 Euro je Transformator ist man dabei und die Netzspannung bleibt außerhalb. Soweit ich weiß, fahren die Mischer in Position und verbleiben dann dort. D.h. man hat nur eine Spannung anliegen oder Strom fließen, während der Mischer neu positioniert. Ist das richtig?
Ja, das ist korrekt. Der Mischer läuft immer nur während er positioniert. Ist die Position erreicht, wird die Spannung abgeschaltet. Die vier IO wären trotzdem sinvoll. Der jeweilige Optokoppler kann ja außerhalb deiner Platine positioniert werden. So bleiben die 230V draußen.
Klaus H. schrieb: > Die Zuverlässigkeit der Linien oder Sternverkabelung ist mit vielen > Sensoren mäßig. Es kommt natürlich auf Anzahl der Sensoren, Kabellängen und Kabelkapazität an. Sternverkabelung ist da eher ungünstig, weil sich die Kabelkapazitäten addieren. > Ich halte es für wenig komfortabel, wenn die "Adressen" der DS18B20 nach > jeder Änderung der physikalischen Zuordnung in der Konfiguration > nachgetragen werden müssen. Müssen sie ja nicht, falls du die Alarmfunktion des DS18B20 nicht verwendest. Bevor du einen Sensor einbaust, schreibst du die Kennung der Messstelle in sein EEPROM. Deine Software bezieht sich dann auf diese Kennung und nicht auf den 64 Bit ROM-Code. Der Sensor trägt die Information über seinen Einbauort und bei Tausch musst du nur die Messstellenkennung im Sensor eintragen.
Rainer W. schrieb: > Bevor du einen Sensor einbaust, schreibst du die Kennung der Messstelle > in sein EEPROM. Deine Software bezieht sich dann auf diese Kennung und > nicht auf den 64 Bit ROM-Code. Der Sensor trägt die Information über > seinen Einbauort und bei Tausch musst du nur die Messstellenkennung im > Sensor eintragen. Das wusste ich nicht. Mit welcher Software kann ich die Kennung der Messstelle in den Sensoren konfigurieren und welche Software kann die Kennung anzeigen bzw. verwenden? Was brauche ich dazu an besonderer Hardware?
:
Bearbeitet durch User
Rainer W. schrieb: > Müssen sie ja nicht, falls du die Alarmfunktion des DS18B20 nicht > verwendest. Gute Idee! Darauf bin ich bisher auch noch nicht gekommen. Ich habe es gleich mal probiert...
1 | import machine |
2 | import onewire |
3 | import ds18x20 |
4 | import time |
5 | |
6 | # Pin-Definition für den DS18B20
|
7 | datapin = machine.Pin(15) |
8 | |
9 | # Initialisierung des 1-Wire-Busses und des DS18B20
|
10 | ow = onewire.OneWire(datapin) |
11 | ds = ds18x20.DS18X20(ow) |
12 | |
13 | # Geräte suchen (kann mehrere DS18B20-Sensoren auf einem Bus geben)
|
14 | roms = ds.scan() |
15 | if not roms: |
16 | print("Kein DS18B20 gefunden!") |
17 | raise SystemExit |
18 | |
19 | print("Gefundene Sensoren:", roms) |
20 | |
21 | # Funktion zum Schreiben und Lesen von Alarmwerten
|
22 | def write_read_alarm(rom, th, tl): |
23 | # Schreiben der Alarmwerte
|
24 | print(f"Schreibe Alarmwerte: TH={th}, TL={tl}") |
25 | ow.reset() |
26 | ow.select_rom(rom) |
27 | ow.writebyte(0x4E) # Write Scratchpad Befehl |
28 | ow.writebyte(th) # TH-Alarmwert |
29 | ow.writebyte(tl) # TL-Alarmwert |
30 | ow.writebyte(0x7F) # Konfiguration (0x7F für 12 Bit Auflösung) |
31 | |
32 | time.sleep(0.1) |
33 | |
34 | # Lesen des Scratchpads zur Überprüfung
|
35 | ow.reset() |
36 | ow.select_rom(rom) |
37 | ow.writebyte(0xBE) # Read Scratchpad Befehl |
38 | data = bytearray(9) |
39 | for i in range(9): |
40 | data[i] = ow.readbyte() # Byteweise lesen |
41 | print("Gelesene Scratchpad-Daten:", list(data)) |
42 | return data |
43 | |
44 | # main
|
45 | for rom in roms: |
46 | print("Bearbeite Sensor:", rom) |
47 | |
48 | # Beispiel: Alarmwerte schreiben und auslesen
|
49 | scratchpad_data = write_read_alarm(rom, th=25, tl=20) |
50 | |
51 | # Temperaturmessung starten
|
52 | print("Starte Temperaturmessung...") |
53 | ds.convert_temp() |
54 | time.sleep(1) # Messzeit warten |
55 | |
56 | # Temperatur auslesen
|
57 | temp = ds.read_temp(rom) |
58 | print(f"Gemessene Temperatur: {temp:.2f}°C") |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.