[GELÖST] 1-Wire DS18B20 Temp. Sensoren funktionieren mit einer langen Leitung nicht

Begonnen von Burny4600, 26 November 2022, 12:56:54

Vorheriges Thema - Nächstes Thema

Burny4600

Ich verwende das Betriebsystem Raspberry Bullseye Lite.
Ich habe DS18B20 1-Wire Sensoren, mit einer langen Leitung von ca. 30m, an dem Raspberry Pi 3 angeschlossen.
Kurz vor den Fühlern wird das Kabel für die zwei Sensoren gesplittet. Die Kabellängen zu den Fühlern sind ca. 1m und ca. 2m lang.
Ein 4,7k Widerstand ist am Raspberry Pi am +3,3V Pin und am GPIO4 Pin angeschlossen.
Der DS18B20 Sensor ist am Raspberry Pi mit dem +5V Pin, dem GND Pin und dem DQ (GPIO4) Pin verbunden.
Die Adern für GND und DQ (GPIO4) sind vom Raspberry bis zum Sensor verdrillt ausgeführt.

Die gemessene Spannung am Sensor am Vdd Pin gegen den GND Pin ist 5,211V.
Die gemessene Spannung am Sensor am DQ (GPIO4) Pin gegen den GND Pin ist 3,285V.

Die Konfiguration der Datei /boot/config.txt
### 1-Wire Temperaturfühler mit externem Pullup Widerstand
dtoverlay=w1-gpio,gpiopin=4

Die Konfiguration der Datei /etc/modules
### 1-Wire Temperaturfühler mit externem Pullup Widerstand
w1-gpio
w1-therm

Überprüft mit
ls /sys/bus/w1/devices/ergibt
w1_bus_master1
Wenn ich einen DS18B20 1-Wire Sensor direkt am Raspberry anschließe, funktioniert die Verbindung zwischen Raspberry und dem DS18B20 1-Wire Sensor.
Überprüft mit
ls /sys/bus/w1/devices/ergibt
28-0516a17948ff  w1_bus_master1
Wenn ich die Spannung am DS18B20 1-Wire Sensor messe, erhalte ich auch die gleichen Spannungswerte wie am Ende der langen Leitung, wo die beiden DS18B20 1-Wire Sensorleitungen aufgeteilt werden.

Ich finde keinen Fehler, und dennoch funktioniert die 1-Wire Ausführung mit der langen Leitung nicht.
Was kann diesen Fehler verursachen?
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

UweH

Moin,

such mal ein bisschen in den alten Threads zu dem Thema, diese Problemstellung hatten wir schon vor 8 oder 10 Jahren diskutiert. Besorg Dir einen korrekten Busmaster und dann läuft das auch.

Gruß
Uwe

Nobbynews

Bei einem ESP-01 hatte ich auch ziemliche Probleme.
Habe dann den Pullup-Widerstand durch Parallelschaltung mit einem 6k8 verkleinert.

Aus der Doku zu ESPEasy:
ZitatThe DS18B20 runs well on 3,3V so no level shifter or special power supply is needed.

The sensor needs a pull up resistor. If you use the breakout board type the resistor usually is already on the board. This gets you into problems if using several DS18B20 breakout boards- As there should be only one resistor on the whole line you might have to remove resistors leaving just one at one end of the line.

Cabling: Do not use very thin cabling! Tested with a 3*0,14mm² cable the length with 5 Sensors was 10 meters, longer cabling did not work. Use a phone cable (2*2*0.6mm²) instead if you need long distances up to 50..100 meters. remember: One (!) pull-up resistor for the whole line!

The preferred structure is a straight line. If possible avoid "stubs". If necessary it can be cabled in a "star" infrastructure. But be aware that stubs and star form reduce the possible cable length.     

ZitatTroubleshooting
Usually the DS18B20 works without issues. It's also usual that most problems result from cabling mistakes... With long cabling you might get wrong data sometimes. It might be helpfull to reduce the resistor a bit, 2,2 KOhm is lowest possible.

If nothing works disconnect all sensors from line and connect back one by one, checking every time. Cable may be too long (or too thin for the given distance). Keep cabling away from other cables to avoid interferences. If necessary place a 10µF capacitor on the sensors between 3,3v and Gnd.

TomLee

Vor meiner Zeit mit einem "korrekten" Busmaster", hab ich den GPIO4 auch genutzt, kann nur bestätigen, das der Widerstand umso länger die Leitungen wurden, nach unten angepasst werden musste. Mit dem Busmaster (Denkovi) ist das dann, bisher (bin etwa geschätzt bei 120-130m), nicht mehr nötig gewesen.

Burny4600

Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

TomLee

Vielleicht noch was, weil das heute passt -> auch wenn Burny4600 gar nicht danach gefragt hat ist er und andere die hier mitlesen bestimmt nicht traurig wenn jemand eine günstige Alternative zu dem Denkovi empfehlen kann (hab vor ein paar Wochen gesehen das der jetzt für mehr als 60 € angeboten wird, hab vor ein paar Jahren ca. 24€ gezahlt).

TomLee


TomLee

Die günstigste Lösung ist mMn (voübergehend) ein kleinerer Widerstand, die kostet fast nix. Rantasten !

Burny4600

Ich bin mit dem Widerstand schon bei 1,1k angelangt.
Funktioniert aber trotzdem nicht mit der langen Leitung. Den 1-Wire direkt am Raspberry angeschlossen funktioniert.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

TomLee

Rantasten, bedeutet bei mir auch nicht ganz unten anzufangen, versuch mal auf einen Wert zu kommen irgendwo zw. 4 und 4,5 .

Nobbynews


UweH

Zitat von: Burny4600 am 27 November 2022, 19:57:24
Gibt es auch günstige Busmasterlösungen?
Kommt drauf an, ob es eine fertige und käuflich zu erwerbende Lösung sein muss oder ob Du auch selbst zum Lötkolben greifen willst (kannst)? Es gab seinerzeit einige Entwicklungen eines LAN- (WLAN)/1-Wire- Interfaces und auch ein USB-Interface (bei mir laufen beide Versionen seit Jahren ohne Probleme mit über 30 Devices auf teilweise sehr langen Strecken). Für beide könnte ich die Schaltpläne zur Verfügung stellen (sind aber auch alle hier im Forum und im Wiki verfügbar). Wenn ich ganz tief grabe, finde ich sicher auch noch Platinen. Darüber hinaus kann ich aber aus Zeitmangel keinen weiteren Support anbieten.

Gruß
Uwe

Burny4600

ZitatBeide gleichzeitig?
Es funktioniert nur der 1-Wire Sensor der direkt am Pi angeschlossen wird.
Hänge ich die beiden anderen Sensoren am Pi an wird kein Sensor erkannt.
Wenn der lokale Sensor der direkt am Pi angeschlossen (der der funktioniert), und anschließend die exponierten dazu hänge, wird kein Sensor angezeigt.
Die Leitung ist OK. Ebenso die exponierten Sensoren (zum Test wurden diese direkt am Pi getestet).
Die Spannungen die ich beim funktionierenden Sensor anliegen habe (GDN ^ +5V = +5,21V , GND ^ DATA = +3,282V), sind auch bei Verwendung der Sensoren mit der langen Leitung.
Ich habe für weitere Tests ein Drehpoti mit 4,7k anstatt des 4,7k Widerstandes an die Anschlüsse +3,3V ^ DATA angeschlossen. Zwischen 4,7k und 1,2k hat sich bei den Schrittweisen Test nichts geändert. Nach jedem neu eingestellten Widerstandswert, habe ich immer einen Neustart durchgeführt.

ZitatKommt drauf an, ob es eine fertige und käuflich zu erwerbende Lösung sein muss
Ich habe für die ganze Haustechnik vieles selbst gelötet. Was ich betreffen der 1-Wire Angelegenheit errichte, soll nur funktionieren. Ich brauche nämlich noch zwei Stränge mit langen Leitungen auf anderen Pis.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

buec65

Firmata mit Arduino Nano an USB oder ESPeasy mega mit ESP8266, ESP32 oder z. B. WT32-ETH01 (LAN-Anbindung) wären Alternativ möglich.

Nobbynews

Zitat von: Burny4600 am 28 November 2022, 14:09:51
Es funktioniert nur der 1-Wire Sensor der direkt am Pi angeschlossen wird.
Hänge ich die beiden anderen Sensoren am Pi an wird kein Sensor erkannt.
Alles ein wenig verworren für mich.
Also insgesamt 3 Stück?
Ich würde jetzt mal nacheinander die anderen beiden abgesetzen Sensoren direkt an den Pi hängen.
Scheint, dass da evtl. einer der beiden kaputt ist??
Zitat von: buec65 am 28 November 2022, 14:42:20
Firmata mit Arduino Nano an USB oder ESPeasy mega mit ESP8266, ESP32 oder z. B. WT32-ETH01 (LAN-Anbindung) wären Alternativ möglich.
An einem D1-Mini habe ich unter ESPEasy 6 Stück an einem Port dran hängen. Keine Probleme.

buec65

Würde nicht die 3.3V Stromversorgung ohne zusätzliche 5V ausreichen?

Burny4600

ZitatAlles ein wenig verworren für mich.
Wenn ich alle drei Sensoren direkt am Pi anschließe werden alle drei Sensoren erkannt.
Sobald ich die lange Leitung verwende, funktionieren die 1-Wire Sensoren nicht.
Es wurde bei der Leitung darauf geachtet, dass dies geschirmt und Data und GND verdrillt ausgeführt wird.
Die lange Leitung wurde auf Kurzschluss und Unterbrechung geprüft.
Es können nur mehr von irgendwo Störungen auf die Leitung einwirken, wodurch der GPIO des Pis die Sensoren bei der langen Leitung nicht erkennt.
Was anderes kann ich mir nicht mehr vorstellen.

ZitatWürde nicht die 3.3V Stromversorgung ohne zusätzliche 5V ausreichen?
Bei langen Leitung wird darauf hingewiesen die Verdrahtung vieradrig durchzuführen.
Was aber den Widerstand betrifft, gibt es unterschiedliche Aussagen.
Was die Verkabelung betrifft denk man an ein Bussystem, wodurch man an auf beiden Enden einen Abschlusswiderstand setzen würde. Aber bei vielen Beschreibungen für 1-Wire Ausführungen heisst es den Widerstand am Anfang der Leitung zu setzten, und es reichen drei Adern für die Verkabelung.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Adimarantis

Bei einer so langen Leitung (vorallem unterschiedlich langen Leitungen per Sensor) dürften Signalstörungen und Reflexionen eine Rolle spielen.
Bin jetzt kein Experte, aber hab zumindest gelesen, das ungünstige Abstände, sowie Stern-Verkabelung zu Reflexionen führen können die dir das Signal überlagern.
Irgendjemand hat auch empfohlen ein twisted pair (Cat5 oder so) für die lange Leitung zu nehmen - aber trotzdem immer nur eine Ader! Auf jeden Fall was gut abgeschirmtes.
1-Wire funktioniert über Timing - wenn das Signal zu lange läuft, dann kommt die Antwort nicht mehr im erwarteten Fenster. Rein rechnerisch aber wohl erst bei mehreren 100m ein Problem.
Sofern du es irgendwie schaffst zumindest einen Sensor zum Laufen zu kriegen, kann man am Raspberry auch noch weitere GPIO als 1Wire definieren - ob man dann automatisch mehr Power pro Leitung bekommt, weiss ich aber nicht.

Auch mal wirklich alles andere vom Raspi abhängen. Ich hatte schon das Problem, dass zwei 1-Wire Counter (allerdings simulierte über einen ATMEGA) partout nicht funktionieren wollten, wogegen die Temperatursensoren problemlos liefen. Dann habe ich meinen RFXTRX433 der am USB hing mal abgesteckt - und plötzlich ging alles.

Ansonsten hab ich erfolgreich 10 DS18B20 gleichzeitig dranhängen. Sogar sternförmig - aber eben nur 3m pro Sensor.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

DasQ

Bin ja leider kein gelernter Elektriker und darf mich deswegen unpräzise ausdrücken.

Der DS18S(D)20 ist ein gleichspannungssensor, soweit mir das bekannt ist.

Gleichspannung kannst du nicht unendlich lange Leitungen verwenden da der Widerstand die Spannung schluckt.
Der leitungsquerschnitt ist hier entscheidend.
Kann das Thema heut Nachmittag mit meim Sohn Besprechen (angehender Elektrotechniker) wir diskutieren regelmäßig über solche Themen und ich hab hier ein ähnlichen anwendungsfall.

Zu dem busmaster noch kurz. Olimex baut ESP32 mit Netzwerk anschluß. Damit könntest du gleich mehrere Probleme gleichzeitig erschlagen und es ist viel günstiger.
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

UweH


JoWiemann

Vielleicht einfach zum Kern zurück kommen:

Drei DS18B20
Jeder funktioniert einzeln
Alle Drei zusammen nicht -> Warum

Das Warum ist bisher nicht geklärt und es gibt eine Anscheinsvermutung, dass das durch einen Busmaster behoben werden kann.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

TomLee

Aus der Erinnerung heraus hab ich als ich den GPIO noch nutzte, bis rd. 80-90m, nix anderes gemacht wie ständig den Widerstand nach unten angepasst, wenn Leitungen/Sensoren dazukamen.
Hauptleitung ist ein rd. +/- 25m langes JE-Y(St)Y 16x2x0.6, aus der ich mir einfach willkürlich drei freie Litzen rausgepickt hatte.

Nobbynews

Zitat von: JoWiemann am 30 November 2022, 10:23:10
Alle Drei zusammen nicht -> Warum
Laut TE sollen am Pi alle 3 gleichzeitig funktionieren.
Zitat von: Burny4600 am 28 November 2022, 17:19:59
Wenn ich alle drei Sensoren direkt am Pi anschließe werden alle drei Sensoren erkannt.

JoWiemann

Zitat von: Nobbynews am 30 November 2022, 11:21:50
Laut TE sollen am Pi alle 3 gleichzeitig funktionieren.

Ja, aber nur bei Direktanschluss. Das Problem der Kabellänge ist aber noch nicht zufriedenstellend beschrieben, um einen Busmaster zu kaufen.

Somit: Wo liegt das Problem? Und, lösen die Vorschläge das Problem?

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Frank_Huber

was mir nicht klar ist:
sind es drei lange Kabel oder ein langes mit drei Sensoren am ende?


Burny4600

Nach vielen Test habe ich ein Lösung für mich gefunden.

Zum einem habe ich auf 58_RPI_1Wire https://forum.fhem.de/index.php?topic=123499.30 umgestellt.

Dann habe ich mir so einiges aus dem Web zusammengeführt und eine funktionsfähige Lösung für meine verschiedenen 1-Wire Verdrahtungen gefunden.
Siehe Anhang. Vielleicht hilft es jemanden anderen auch.

Jetzt habe ich mit 1-Wire keine Fehler mehr, keine Temperatur Spikes oder sporadische Ausfälle, und es werden immer alle Sensoren erkannt.
Ist eigentlich ein einfacher Aufbau, trotzdem könnten Störungen auftreten.
Bei mir waren es die LED-Dimmer die zu Störungen führten.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Prof. Dr. Peter Henning

Prima, gute Praxistipps. Bitte unbedingt hier eintragen https://wiki.fhem.de/wiki/1-Wire_Busverlegung - dann kann man diese Erkenntnisse mit den anderen Wiki-Seiten verbinden.

Wichtig dazu wäre, dass die Grafik auch ohne den längeren Text zur Verfügung gestellt wird.

Betreffend die Stichleitungen ("Stubs") vom Bus zu den einzelnen Sensoren: Die Datenleitung kann gemäß Spezifikation von Dallas/Maxim hier bis zu einer Länge von 3,5 Metern als Einzelleitung (nicht hin- und zurück) ausgeführt werden. Funktioniert auch so.

LG

pah