Hallo,
ich bastel an einer Regelung für meine FBH rum. Ich verwende einen Arduino Mega 2560 mit Ethernet-Shield. Als Temperatursensoren vewrwende ich den DS18B20 von Dallas mittels One-Wire-Bus. Das Haus erstreckt sich über vier Etagen, vom Keller bis zum Dachgeschoss. Die Regelung befindet sich bei der Heizung im Keller und von dort führen vorhandene Kabel sternförmig jeweils in eine Etage. An den Enden hängen dann, wieder sternförmig, 6 bis 14 Sensoren. Dadurch ist das Leitungsnetz und damit der One-Wire-Bus umfangreich. Keller- und Dachgeschoss sind angeschlossen und funktionieren. Der Vorwiederstand zwischen Plus und Digital-Pin ist schon auf 1,2 kOhm reduziert. Beim Anschluss weiterer Sensoren in einer weiteren Etage hört die Zuverlässigkeit auf.
Meine C- und Programmierkentnisse sind begrenzt. Ich habe viele Teile meines Sketches von unterschiedlichen Stellen zusammenkopiert. Einige Daten, die im Sketch verwendet werden, befinden sich in einer Datei auf der SD-Karte: die Sensor-ID und ein Klarname, die Auflösung, die Nummer eines zu schaltenden Pins, eine Soll-Temperatur. Zu Beginn des Sketches, im Setup, vergleiche ich die Anzahl Sensoren am Bus und in der Datei. Zusätzlich prüfe ich, ob unbekannte Sensoren am Bus sind und ob bekannte Sensoren fehlen. In der Loop werden dann die einzelnen Sensoren angesprochen, ihre Temperatur abgefragt, auf der SD gespeichert und am Terminal per USB angezeigt. Weiterhin wird die Temperatur mit dem Soll-Wert verglichen und der Ausgangspin nach einigen Berechnungen geschaltet.
Die Temperaturmessung funktioniert noch zuverlässig. Die Unzuverlässigkeit tritt bei der Prüfung des Sensor-Bestandes auf. Obwohl dies sehr hilfreich ist, wenns funktioniert. Sowie ich einen neuen Sensor hinzufüge wird mir die ID angezeigt und ich kann sie in die Datei übernehmen. Es ist jetzt aber die Situation eingetreten, wenn ich einen Sensor hinzufüge, dann werden plötzlich mehrere bekannte Sensoren als fehlend angezeigt und andere als neue. Daraus schließe ich, dass die Struktur des One-Wire-Busses an seine Grenzen stößt.
Als Ursache sehe ich drei Möglichkeiten:
-
- mein Sketch ist fehlerhaft. Der betreffende Teil ist (hoffentlich) fehlerfrei beigefügt. Die eingefügten Delays haben keine wirkliche Verbesserung gebracht.
-
- die Hardware (Arduino) ist überfordert. Stromversorgung?
-
- der One-Wire-Bus ist an seiner Grenze. Ich habe überlegt, den One-Wire-bus zu teilen, z.B. jede Etage ein eigener Bus. Habe aber überhaupt keine Idee wie ich das im Sketch umsetzen soll. Der Pin für den One-Wire-Bus ist in allen Beispielen im allgemeinen Teil der Sketche definiert. So auch in meinem Sketch. Mir fehlt schon die Idee, wie ich in einer Schleife mehrere One-Wire-Bus-Pins durchlaufen kann.
Anmerkung: Aufgrund der Größe musste ich den Sketch als Anlage anfügen.
Gerd
- der One-Wire-Bus ist an seiner Grenze. Ich habe überlegt, den One-Wire-bus zu teilen, z.B. jede Etage ein eigener Bus. Habe aber überhaupt keine Idee wie ich das im Sketch umsetzen soll. Der Pin für den One-Wire-Bus ist in allen Beispielen im allgemeinen Teil der Sketche definiert. So auch in meinem Sketch. Mir fehlt schon die Idee, wie ich in einer Schleife mehrere One-Wire-Bus-Pins durchlaufen kann.
HR_42a.ino (23.9 KB)