NEWS
DS18B20 mit RPi instabil
-
Ja, Pete, genau so ist es.
Die Snesoren T2-T4 sind ein Bus. Und untereinander sternförmig verschaltet.
Die Sensoren T5-T9 sind ein Bus. Und untereinander sternförmig verschaltet.
Wobei ich ehrlich zugeben muss, dass ich parallele und sternförmige Verschaltung an dieser Stelle für das gleiche halte und keinen Unterschied dazwischen erkenne.Der Sensor T1 hat einen separaten Bus. Und demnach einen separaten Pin.
Danke, dass ihr an dieser Stelle meine Verschaltung hinterfragt!Da T1 aber eigenen Bus hat, und auch dann nicht stabil läuft, halte ich es für eher unwahrscheinlich, dass die Ursache für die Spontanabbrüche die Verschaltung ist.
Bevor ich 3 separate Busse verwendete, lief das System auf 2 Bussen. Und ganz am Anfang auf einem. Immer erschien das gleiche Problem. Es scheint sogar, dass nun mit T1 auf einem separaten Bus das System am instabilsten ist.@gari sagte in DS18B20 mit RPi instabil:
Wobei ich ehrlich zugeben muss, dass ich parallele und sternförmige Verschaltung an dieser Stelle für das gleiche halte und keinen Unterschied dazwischen erkenne.
naja, im Fall "OneWire" geht es natürlich um "mechanische" Sterne, nicht "elektrische". Denn elektrisch sind es ja (je Bus) Parallelschaltungen.
Als unproblematischer (stabiler) angesehen wird beim DS18B20 allgemein halt die Verdrahtung, die eher nach Art der "Weihnachtslichterketten" aufgebaut ist - Sensor B hängt eher dicht an Sensor A, und C dito an B usw. Aber das ist eigentlich alles hübsch im oben bereits genannten Link dargestellt, auch visuell... -
Liebe Community,
nun wende ich mich doch noch an euch. Ich hatte gehofft, dass ich auf Grundlage der bisher im Forum gefallenen und nützlichen Hilfestellungen ich mein Problem lösen könnte. Nun weiß ich aber nicht mehr weiter. Folgendes:
Mein aktuelles Ziel ist es, 9 Temperaturen in unserem Heizungssystems mittels DS18B20 zu messen und zu loggen. Ein Sensor fällt aktuell immer wieder aus und die Messung bricht ab. Das ist mein Problem.
Ich habe mich neu in die Thematik eingearbeitet und mich vor 2 Monaten für einen RaspberryPi 4B mit Raspbian als Betriebssystem entschieden. Trotzdem ich Neuling in Python bin klappte der Start des Projekts sehr gut. Ich führte verschiedene Tests mit dem Breadboard durch, die bis auf kleine Probleme sehr gut funktionierten. Ich machte Kalibrierungsmessungen, um die Messwerte der DS18B20 mit einem geeichten Messgerät zu vergleichen und shiftete daraufhin einezlne Senosrwerte um -0,1 bis 1,3 K, um die Streuung zu verringern. Ich positionierte die Fühler an den Messstellen und installierte im Technikraum einen kleinen Schaltschrank, indem ich den RPi und die Klemmverteiler untergebracht habe.
Soweit so gut. Vor etwa einem Monat nahm ich das Mess-System in Betrieb. Erst schien alles gut. Doch das System läuft einfach nicht stabil.
- Folgende Kenndaten des Systems:
- Raspberry Pi 4B, Raspbian
- Betrieb nicht über parasite mode, sondern normal 3 poliger Anschluss (0,1,Bus)
- 3-Bussystem an GPIO 4, 17, 27
- sternförmige Verschaltung, siehe fritzing-Skizze. Skizze_Schaltplan_3_Busse.pdf
- Kabellängen der Sensoren: zwischen 1,5 m und 6 m, mit Ausnahme des Außenfühlers, ca. 30 m
- Kabelquerschnitt: 3 x 0,75 mm², alle: ungeschirmt, mit Außnahme Außenfühler: geschirmt
- 5,5 V Betriebsspannung (Empfehlung von AZ-Delivery bei Kabellängen über 1 m)
- PullUp-Widerstände: 2x 2,2 kOhm, 1x 3,7 kOhm
- Code temp_T1-T9_short.py
- Fehlerbeschreibung:
- Die Messung bricht scheinbar spontan nach 2 h bis 2 Tagen ab.
- Fehlermeldung im Shell: „list index out of range“
- Schaut man über das terminal, welche Sensoren gefunden werden, so fehlt dann immer der Außenfühler (T1)
- Ein neuer Compiliervorgang in Python ist ohne Fehlermeldung nach ca. 3 min möglich (vorher nicht. - Warum auch immer). Dann werden weiter alle Temperaturen richtig ausgeben. Nur aber nicht der Außenfühler. Für den Außenfühler (out_) erscheint in der shell: „out_: None“
- Nach Neustart des RPi werden alles Sensoren wieder gefunden und es werden für alle Sensoren Messwerte ausgegeben.
- Der Außenfühler startet aber nach Auftreten des Abbruchs und Neustart des RPi nicht fehlerfrei. Es werden Temperaturen ausgelesen, welche ca. 20 K zu warm sind. Innerhalb der ersten 3 Minuten des Messvorganges geht die Überhitzung zurück und der Wert des Außenfühlers stimmt mit einer Vergleichsmessung überein.
- Fehlerinterpretation
- Ich denke, dass es wahrscheinlich mehrere Fehlerquellen gibt.
- Bitte checkt deswegen auch meinen Code. temp_T1-T9_short.py
- Eine Quelle ist der Ein- bzw. Auschaltprozess des 3-Phasen-Ventilator des Luftkollektors (LK-Ventilator). Wenn dieser ausschaltet bricht das Mess-System (fast immer) ab und es erscheint die Fehlermeldung in der Shell. Leider ist wie gesagt dieser Fehler nicht immer 100% reproduzierbar. Manchmal schaltet man den LK-Ventilator aus, und die Messung bricht nicht ab. Sehr oft fallen aber das Ausschalten des LK-Ventilators und das Abbrechen der Messung zusammen und anschließend läuft die Messung wieder einige Stunden fehlerfrei. Eine Korrelation beider Ereignisse liegt sehr nahe, da das Kabel des LK-Ventilators neben dem Kabel des geschirmten Außenfühlerkabels verlegt ist und eine Induktion möglich ist.
- Die Messung ist aber auch schon abgebrochen, als der Ventilator bereits aus war.
- Lösungsansätze
Ich möchte euch an dieser Stell nicht gleich auflisten, was ich bereits alles versucht habe, um keinen falschen Fokus zusetzen und euch einen unvoreingenommen und kreativen Geist zu bewahren. Außerdem würde meine Beschreibung dann noch viel, viel länger werden...😉
Ich wäre euch sehr, sehr dankbar, wenn ihr mir weiterhlefen könntet!!
bis bald
Gari -
Liebe Community,
nun wende ich mich doch noch an euch. Ich hatte gehofft, dass ich auf Grundlage der bisher im Forum gefallenen und nützlichen Hilfestellungen ich mein Problem lösen könnte. Nun weiß ich aber nicht mehr weiter. Folgendes:
Mein aktuelles Ziel ist es, 9 Temperaturen in unserem Heizungssystems mittels DS18B20 zu messen und zu loggen. Ein Sensor fällt aktuell immer wieder aus und die Messung bricht ab. Das ist mein Problem.
Ich habe mich neu in die Thematik eingearbeitet und mich vor 2 Monaten für einen RaspberryPi 4B mit Raspbian als Betriebssystem entschieden. Trotzdem ich Neuling in Python bin klappte der Start des Projekts sehr gut. Ich führte verschiedene Tests mit dem Breadboard durch, die bis auf kleine Probleme sehr gut funktionierten. Ich machte Kalibrierungsmessungen, um die Messwerte der DS18B20 mit einem geeichten Messgerät zu vergleichen und shiftete daraufhin einezlne Senosrwerte um -0,1 bis 1,3 K, um die Streuung zu verringern. Ich positionierte die Fühler an den Messstellen und installierte im Technikraum einen kleinen Schaltschrank, indem ich den RPi und die Klemmverteiler untergebracht habe.
Soweit so gut. Vor etwa einem Monat nahm ich das Mess-System in Betrieb. Erst schien alles gut. Doch das System läuft einfach nicht stabil.
- Folgende Kenndaten des Systems:
- Raspberry Pi 4B, Raspbian
- Betrieb nicht über parasite mode, sondern normal 3 poliger Anschluss (0,1,Bus)
- 3-Bussystem an GPIO 4, 17, 27
- sternförmige Verschaltung, siehe fritzing-Skizze. Skizze_Schaltplan_3_Busse.pdf
- Kabellängen der Sensoren: zwischen 1,5 m und 6 m, mit Ausnahme des Außenfühlers, ca. 30 m
- Kabelquerschnitt: 3 x 0,75 mm², alle: ungeschirmt, mit Außnahme Außenfühler: geschirmt
- 5,5 V Betriebsspannung (Empfehlung von AZ-Delivery bei Kabellängen über 1 m)
- PullUp-Widerstände: 2x 2,2 kOhm, 1x 3,7 kOhm
- Code temp_T1-T9_short.py
- Fehlerbeschreibung:
- Die Messung bricht scheinbar spontan nach 2 h bis 2 Tagen ab.
- Fehlermeldung im Shell: „list index out of range“
- Schaut man über das terminal, welche Sensoren gefunden werden, so fehlt dann immer der Außenfühler (T1)
- Ein neuer Compiliervorgang in Python ist ohne Fehlermeldung nach ca. 3 min möglich (vorher nicht. - Warum auch immer). Dann werden weiter alle Temperaturen richtig ausgeben. Nur aber nicht der Außenfühler. Für den Außenfühler (out_) erscheint in der shell: „out_: None“
- Nach Neustart des RPi werden alles Sensoren wieder gefunden und es werden für alle Sensoren Messwerte ausgegeben.
- Der Außenfühler startet aber nach Auftreten des Abbruchs und Neustart des RPi nicht fehlerfrei. Es werden Temperaturen ausgelesen, welche ca. 20 K zu warm sind. Innerhalb der ersten 3 Minuten des Messvorganges geht die Überhitzung zurück und der Wert des Außenfühlers stimmt mit einer Vergleichsmessung überein.
- Fehlerinterpretation
- Ich denke, dass es wahrscheinlich mehrere Fehlerquellen gibt.
- Bitte checkt deswegen auch meinen Code. temp_T1-T9_short.py
- Eine Quelle ist der Ein- bzw. Auschaltprozess des 3-Phasen-Ventilator des Luftkollektors (LK-Ventilator). Wenn dieser ausschaltet bricht das Mess-System (fast immer) ab und es erscheint die Fehlermeldung in der Shell. Leider ist wie gesagt dieser Fehler nicht immer 100% reproduzierbar. Manchmal schaltet man den LK-Ventilator aus, und die Messung bricht nicht ab. Sehr oft fallen aber das Ausschalten des LK-Ventilators und das Abbrechen der Messung zusammen und anschließend läuft die Messung wieder einige Stunden fehlerfrei. Eine Korrelation beider Ereignisse liegt sehr nahe, da das Kabel des LK-Ventilators neben dem Kabel des geschirmten Außenfühlerkabels verlegt ist und eine Induktion möglich ist.
- Die Messung ist aber auch schon abgebrochen, als der Ventilator bereits aus war.
- Lösungsansätze
Ich möchte euch an dieser Stell nicht gleich auflisten, was ich bereits alles versucht habe, um keinen falschen Fokus zusetzen und euch einen unvoreingenommen und kreativen Geist zu bewahren. Außerdem würde meine Beschreibung dann noch viel, viel länger werden...😉
Ich wäre euch sehr, sehr dankbar, wenn ihr mir weiterhlefen könntet!!
bis bald
Gari@gari Habe eine ähnliche Hardware-Config wie Du. Bei mir sind es 10 Stück DS18B20, die ich auf einem Verteiler zusammen führe. Als Pullup-Widerstand habe ich 4K7 genommen. Allerdings habe ich auf der Betriebsspannung am Verteiler noch einen 100nF und einen 100µF Kondensator gesetzt. Läuft seit Jahren stabil bei mir.
-
ich hatte nach dem Wechsel auf den Raspi4 auch das Problem. Bei mir half in der
"/boot/config.txt" den GLIO Pin mit einzutragen.
dtoverlay=w1-gpio,gpiopin=4 -
Hey, danke euch alle für die Anregungen!
@Pete0815 Danke besonders dir, für die ausführlichen Erklärungen.
Nach dem ich die Messung allein mit T1 (Außenfühler) laufen ließ und danach mit den Fühlern T2-T9, musste ich feststellen, dass beide Varianten spontan abbrechen. :( Es liegt also nicht nur am Außenfühler (wie ihr ja schon befürchtet habt).
Beim Überprüfen der PulluP-Widerstände habe ich dann festgestellt, dass durch die 5,5 V die GPIOs der Busse 1 und 2 eine wegbekommen haben. Es stellte sich nämlich zwischen GPIO und dem Spannungspin, ein Widerstand von 27 kOhm ein. Bei den anderen GPIOs hingegen nur 40 MOhm.
Also habe ich nun erstmal die Busse auf neue GPIOs gelegt und teste T2-T9 über 3,3 V (Ohne Außenfühler). Alle anderen Ratschläge habe ich natürlich gelesen. Ich teste mich Stück für Stück durch. -
@gari Habe eine ähnliche Hardware-Config wie Du. Bei mir sind es 10 Stück DS18B20, die ich auf einem Verteiler zusammen führe. Als Pullup-Widerstand habe ich 4K7 genommen. Allerdings habe ich auf der Betriebsspannung am Verteiler noch einen 100nF und einen 100µF Kondensator gesetzt. Läuft seit Jahren stabil bei mir.
-
@gari Darf ich mich hier auch noch einschalten und fragen, weshalb du ein separates Skript verwendest und nicht einfach einen der bestehenden Adapter? Es gibt den iobroker.ds18b20 und den owfs Adapter.
@unclesam Danke für den Tip Uncle Sam, ich kannte die Adapter noch nicht ;) Ich muss aber auf Jeden Fall auch die Temperaturen abspeichern können. Zur Zeit mach ich das in eine txt. Die kann ich ja dann in Excel gut weiter verarbeiten.
Des Weiteren habe ich die Überlegung (Wenn dann man die Temperaturmessung richtig klappt) ggf. auch aktive Elemente (Pumpen, Stellventile) zu schalten. Das wäre dann natürlich ein eues Vorhaben. Mein Ziel ist aber, dass mit besthendem Skript man dann daran anküpfen könnte.
Würde der Adapter sich dazu als Zwischenglied auch eignen?Nun aber erst mal eins nach dem anderen ;)
-
Hey, danke euch alle für die Anregungen!
@Pete0815 Danke besonders dir, für die ausführlichen Erklärungen.
Nach dem ich die Messung allein mit T1 (Außenfühler) laufen ließ und danach mit den Fühlern T2-T9, musste ich feststellen, dass beide Varianten spontan abbrechen. :( Es liegt also nicht nur am Außenfühler (wie ihr ja schon befürchtet habt).
Beim Überprüfen der PulluP-Widerstände habe ich dann festgestellt, dass durch die 5,5 V die GPIOs der Busse 1 und 2 eine wegbekommen haben. Es stellte sich nämlich zwischen GPIO und dem Spannungspin, ein Widerstand von 27 kOhm ein. Bei den anderen GPIOs hingegen nur 40 MOhm.
Also habe ich nun erstmal die Busse auf neue GPIOs gelegt und teste T2-T9 über 3,3 V (Ohne Außenfühler). Alle anderen Ratschläge habe ich natürlich gelesen. Ich teste mich Stück für Stück durch.@gari
klingt als kommst Du einen Schritt weiter auch wenn das Ergebnis gerade noch nicht so erfreulich klingt. Ob man die GPIOs so "durchmessen" kann k.A. Mir ist die Fummellei dort meistens mit Widerständen (Spannungsteilern) zu aufwendig und da ich eh örtlich in Abzweigkästen viel mit Dupontkabeln unterwegs bin führe ich die Sensorseite gerne voll in 5V aus und geht auf GPIOs, kommt ein Logic Shifter davor (Stückpreis 50Cent 4 Kanäle ;)).
https://de.aliexpress.com/item/32771873030.htmlViel Erfolg!
-
@josh Hey, Klingt ja interessant.
Wie lang sind deine Kabel?
Welche Art Verschaltung hast du umgesetzt?
Welche Spannung nutzt am DS18B20 als Phase bzw. am PullUp?
Wie hast du die Kondensatoren verschaltet?@gari sagte in DS18B20 mit RPi instabil:
@josh Hey, Klingt ja interessant.
Wie lang sind deine Kabel?
Welche Art Verschaltung hast du umgesetzt?
Welche Spannung nutzt am DS18B20 als Phase bzw. am PullUp?
Wie hast du die Kondensatoren verschaltet?Vom RPi bis zum Verteiler ca. 0,2m. Dann vom Verteiler sternförmig mit Kabellängen zwischen 3m und 5m. Als Kabel habe ich 3x 0,14mm² PUR-Kabel genommen. Waren halt Kabelreste von Näherungsinitiatoren.
Als Pullup habe ich einen 4K7 genommen. Spannung 3,3V. Alles an nur einem GPIO.
Beide Kondensatoren am Verteiler zwischen 3,3V und GND. Der 100µF ist zum Buffern der Betriebsspannung und der 100nF ist gegen "HF"-Störungen.
Mehr als 10 Stück DS18B20 sollte man aber nicht nehmen, weil der GPIO nicht mehr sicher versorgen könnte.
-
@unclesam Danke für den Tip Uncle Sam, ich kannte die Adapter noch nicht ;) Ich muss aber auf Jeden Fall auch die Temperaturen abspeichern können. Zur Zeit mach ich das in eine txt. Die kann ich ja dann in Excel gut weiter verarbeiten.
Des Weiteren habe ich die Überlegung (Wenn dann man die Temperaturmessung richtig klappt) ggf. auch aktive Elemente (Pumpen, Stellventile) zu schalten. Das wäre dann natürlich ein eues Vorhaben. Mein Ziel ist aber, dass mit besthendem Skript man dann daran anküpfen könnte.
Würde der Adapter sich dazu als Zwischenglied auch eignen?Nun aber erst mal eins nach dem anderen ;)
@gari sagte in DS18B20 mit RPi instabil:
Zur Zeit mach ich das in eine txt. Die kann ich ja dann in Excel gut weiter verarbeiten.
Dafür gibt es ja die verschiedenen "history" Adapter: ioBroker.history, ioBroker.sql und Co.
Mein Ziel ist aber, dass mit besthendem Skript man dann daran anküpfen könnte.
Ehrlich gesagt würde ich versuchen, die ganze Logik in ioBroker zu haben und nicht darum herum. Für Logik-Sachen gibt es ja den JavaScript Adapter (mit Blockly, JS/TS und Rules) oder z.B. den Node Red Adapter.
Mein Konzept ist immer:
- Adapter (und wenn nötig eigene Skripte) holen sich die rohen Daten rein
- ioBroker.javascript macht die gesamte Logik
- Adapter schalten Aktoren (Relais, GPIOs, ...)
-
@gari sagte in DS18B20 mit RPi instabil:
@josh Hey, Klingt ja interessant.
Wie lang sind deine Kabel?
Welche Art Verschaltung hast du umgesetzt?
Welche Spannung nutzt am DS18B20 als Phase bzw. am PullUp?
Wie hast du die Kondensatoren verschaltet?Vom RPi bis zum Verteiler ca. 0,2m. Dann vom Verteiler sternförmig mit Kabellängen zwischen 3m und 5m. Als Kabel habe ich 3x 0,14mm² PUR-Kabel genommen. Waren halt Kabelreste von Näherungsinitiatoren.
Als Pullup habe ich einen 4K7 genommen. Spannung 3,3V. Alles an nur einem GPIO.
Beide Kondensatoren am Verteiler zwischen 3,3V und GND. Der 100µF ist zum Buffern der Betriebsspannung und der 100nF ist gegen "HF"-Störungen.
Mehr als 10 Stück DS18B20 sollte man aber nicht nehmen, weil der GPIO nicht mehr sicher versorgen könnte.
-
@josh Top! Klingt ja wirklich ähnlich zu meinem Aufbau (ohne Außenfühler)... Eine Frage noch: die beiden Kondensatoren zwischen GND und 3,3 V parallel?
@gari sagte in DS18B20 mit RPi instabil:
@josh Top! Klingt ja wirklich ähnlich zu meinem Aufbau (ohne Außenfühler)... Eine Frage noch: die beiden Kondensatoren zwischen GND und 3,3 V parallel?
Ja, beide parallel zwischen 3,3V und GND. Klingt für einen Nicht-Elektrotechniker vielleicht unsinnig, aber die Elektrolytkondensatoren filtern keine bzw. kaum HF-Störungen raus. Dafür der Keramik- oder Vielschichtkondensator mit 100nF.
Sieht bei mir dann so aus (ich weiß, ist noch nicht perfekt):


-
@gari sagte in DS18B20 mit RPi instabil:
@josh Top! Klingt ja wirklich ähnlich zu meinem Aufbau (ohne Außenfühler)... Eine Frage noch: die beiden Kondensatoren zwischen GND und 3,3 V parallel?
Ja, beide parallel zwischen 3,3V und GND. Klingt für einen Nicht-Elektrotechniker vielleicht unsinnig, aber die Elektrolytkondensatoren filtern keine bzw. kaum HF-Störungen raus. Dafür der Keramik- oder Vielschichtkondensator mit 100nF.
Sieht bei mir dann so aus (ich weiß, ist noch nicht perfekt):


@josh Hallo alle, nun habe ich das Zwischenergebnis, dass auch meine Messung ohne den Außenfühler, bei 3,3 V Betriebsspannung abbricht. Da es mir bisher das Einfachste scheint, möchte ich (bevor ich die Schaltung der slubs verändere) Joshs Kondensatoraufbau testen.
@Josh 100µF habe ich sogar noch da. Der Kondensator ist aber für eine Spannung von 63 V. Meint ihr, der geht trotzdem?
Link zum Produkt: https://www.conrad.de/de/search.html?search=445400Gleiche Frage für die 100nF Kondensatoren. Welche angebene Spannung sollte ich da wählen, wenn ich davon ausgehe mit 3,3 V, bzw. maximal 5,5 V zu betreiben? Ginge da auch ein 50 V Kondensator? Theoretisch müsste das doch gehen, wenn die angegebene Spannung nur die Maximalspannung ausweist. Oder?
-
@gari sagte in DS18B20 mit RPi instabil:
@josh Top! Klingt ja wirklich ähnlich zu meinem Aufbau (ohne Außenfühler)... Eine Frage noch: die beiden Kondensatoren zwischen GND und 3,3 V parallel?
Ja, beide parallel zwischen 3,3V und GND. Klingt für einen Nicht-Elektrotechniker vielleicht unsinnig, aber die Elektrolytkondensatoren filtern keine bzw. kaum HF-Störungen raus. Dafür der Keramik- oder Vielschichtkondensator mit 100nF.
Sieht bei mir dann so aus (ich weiß, ist noch nicht perfekt):


-
@josh Hallo alle, nun habe ich das Zwischenergebnis, dass auch meine Messung ohne den Außenfühler, bei 3,3 V Betriebsspannung abbricht. Da es mir bisher das Einfachste scheint, möchte ich (bevor ich die Schaltung der slubs verändere) Joshs Kondensatoraufbau testen.
@Josh 100µF habe ich sogar noch da. Der Kondensator ist aber für eine Spannung von 63 V. Meint ihr, der geht trotzdem?
Link zum Produkt: https://www.conrad.de/de/search.html?search=445400Gleiche Frage für die 100nF Kondensatoren. Welche angebene Spannung sollte ich da wählen, wenn ich davon ausgehe mit 3,3 V, bzw. maximal 5,5 V zu betreiben? Ginge da auch ein 50 V Kondensator? Theoretisch müsste das doch gehen, wenn die angegebene Spannung nur die Maximalspannung ausweist. Oder?
-
@gari Ja, die Spannungsfestigkeit ist egal. Hauptsache die Kondensatoren haben die erforderliche Mindestspannung von 3,3V + Reserve. Ich würde also keine unter 5V wählen.
@josh Okay, nun habe ich die neuen Kondensatoren (100 nF, 100 µF) eingebaut. Nach 2 h kam es wieder zum Ausfall von 4 Sensoren....mh.
Im Anhang der neue Schaltplan 2021.05.07_Schaltplan_mit_C1_C1.pdf. Vielleicht habe ich ja doch was falsch gemacht. (Anmerkung: Bei Fritzing gab es keinen 100 µF-Kondensator, nur einen mit 47 µF. Tatsächlich habe ich natürlich einen mit 100 µF verwendet.)
Ich habe einfach die Minus-Seite der Kondensatoren mit 3,3 V und die Plus-Seite mit GND verbunden. Parallel zu GND und 3,3V.
Eine andere Frage habe ich noch: Wäre es rein physikalisch nicht sinnvoller die Kondensatoren zwischen GND und Bus zu schalten? Denn soweit ich verstanden habe, ist doch das Problem auch, dass die GPIO-Pins ggf. mit zu viel Spannung (durch eine Induktion) belastet werden könnten.
Ich freu mich auf eure Denkanstöße!
-
@josh Okay, nun habe ich die neuen Kondensatoren (100 nF, 100 µF) eingebaut. Nach 2 h kam es wieder zum Ausfall von 4 Sensoren....mh.
Im Anhang der neue Schaltplan 2021.05.07_Schaltplan_mit_C1_C1.pdf. Vielleicht habe ich ja doch was falsch gemacht. (Anmerkung: Bei Fritzing gab es keinen 100 µF-Kondensator, nur einen mit 47 µF. Tatsächlich habe ich natürlich einen mit 100 µF verwendet.)
Ich habe einfach die Minus-Seite der Kondensatoren mit 3,3 V und die Plus-Seite mit GND verbunden. Parallel zu GND und 3,3V.
Eine andere Frage habe ich noch: Wäre es rein physikalisch nicht sinnvoller die Kondensatoren zwischen GND und Bus zu schalten? Denn soweit ich verstanden habe, ist doch das Problem auch, dass die GPIO-Pins ggf. mit zu viel Spannung (durch eine Induktion) belastet werden könnten.
Ich freu mich auf eure Denkanstöße!
@gari sagte in DS18B20 mit RPi instabil:
Ich habe einfach die Minus-Seite der Kondensatoren mit 3,3 V und die Plus-Seite mit GND verbunden. Parallel zu GND und 3,3V.
Für den Elko (100µF) ist das genau falsch rum und der wird dadurch kaputt gehen (eventuell sogar mit einem lauten Knall).
Die gekennzeichnete Minus-Seite muss immer an GND, wie du es auch in deiner Fritzing-Zeichung gemacht hast).
Für den Kerko (100nF) ist es egal wie rum.@gari sagte in DS18B20 mit RPi instabil:
Eine andere Frage habe ich noch: Wäre es rein physikalisch nicht sinnvoller die Kondensatoren zwischen GND und Bus zu schalten? Denn soweit ich verstanden habe, ist doch das Problem auch, dass die GPIO-Pins ggf. mit zu viel Spannung (durch eine Induktion) belastet werden könnten.
Nein. Mit einem Kondensator glättest du eine Spannung. Der Bus ist quasi ein gezieltes Ein-/Ausschalten des Leitung zur Datenübertragung. Durch einen Kondensator zwischen Bus und GND würdest du das stören und damit die Datenübertragung verhindern.
Ich habe bei mir die besten Erfahrungen mit den DS18B20 am Raspi gemacht, wenn ich die Versorgungsspannung der Sensoren an +5V habe und die Datenleitung mit einem Pullup-Widerstand gegen +3,3V habe.
Den Widerstandswert kannst du hier zwischen 4,7 kOhm bis runter auf etwa 1 kOhm wählen. Je geringer der Widerstand, um so steiler sind die Flanken beim Umschalten zwischen High- und Low-Pegel und damit wird das Signal sauberer/besser (einfach gesagt).
Vom Pullup gegen +5V würde ich auf jeden Fall abraten, da damit der Raspi die +5V am GPIO bekommt, wodurch er Schaden nehmen kann.
Was du noch versuchen kannst, ist pro Sensor einen 100nF Keramikkondensator möglichst direkt am Sensor zwischen VCC (+5V bzw. +3,3V) und GND. Der würde noch mal die Versorgungsspannung direkt am Sensor glätten.
-
@josh Okay, nun habe ich die neuen Kondensatoren (100 nF, 100 µF) eingebaut. Nach 2 h kam es wieder zum Ausfall von 4 Sensoren....mh.
Im Anhang der neue Schaltplan 2021.05.07_Schaltplan_mit_C1_C1.pdf. Vielleicht habe ich ja doch was falsch gemacht. (Anmerkung: Bei Fritzing gab es keinen 100 µF-Kondensator, nur einen mit 47 µF. Tatsächlich habe ich natürlich einen mit 100 µF verwendet.)
Ich habe einfach die Minus-Seite der Kondensatoren mit 3,3 V und die Plus-Seite mit GND verbunden. Parallel zu GND und 3,3V.
Eine andere Frage habe ich noch: Wäre es rein physikalisch nicht sinnvoller die Kondensatoren zwischen GND und Bus zu schalten? Denn soweit ich verstanden habe, ist doch das Problem auch, dass die GPIO-Pins ggf. mit zu viel Spannung (durch eine Induktion) belastet werden könnten.
Ich freu mich auf eure Denkanstöße!
@gari Nehme doch einfach mal den GPIO4, wie auch @crycode oben. Den habe ich auch genommen. Und warum hast Du mehrere Pins für 1Wire genommen? Reicht doch einer.
Wenn Du den 100µF wirklich verpolt hast, kannste den jetzt entsorgen. Der arbeitet nicht mehr zuverlässig. Manchmal fliegt Dir so ein Ding auch um die Ohren. Glück gehabt.
100nF Kondensatoren nahe an den Sensor bringen ist auch eine gute Idee. Manchmal ist das aber nicht so einfach, wenn man die Dinger schon schön "verpackt" hat.
Und es ist keine gute Idee einen Kondensator auf die Datenleitung zu hängen. Der macht "wechselspannungsmäßig einen Kurzschluss". Damit machst Du das Signal kaputt. Aber das hatte @crycode ja auch schon geschrieben.
