Forum: Mikrocontroller und Digitale Elektronik Busprobleme mit Onewire 1wire am Raspberry Pi


von Tom W. (limpbiz)


Lesenswert?

Liebes Forum,

ich habe Probleme mit meinem OneWire Bus an einem RasPi Zero - 
vielleicht habt ihr eine Idee. Angeschlossen sind zwei DS18B20 (diese im 
Metallstift) mit einem Y-Kabel, die drei Arme jeweils ca. 1-2m. Also ca. 
1,5m vom RasPi zu einem Verteiler, von dort jeweils 2m zum Sensor.

4k7 pullup zwischen 3.3V und Daten (GPIO4), Versorgung ebenfalls über 
3.3V. (Pin1)

Es funktioniert für ein paar Stunden bestens, danach ist der Raspi zwar 
da, aber die Sensoren sind einfach weg. Auch ein Reboot hilft dann 
nicht, ich muss einfach das gesamte Teil vom Strom nehmen.

Probiert habe ich den Eintrag in /etc/modules mit und ohne pullup, ich 
habe keine Statistik, aber der erste Versuch ohne diesem Pullup-Eintrag 
brachte gefühlt ein paar mehr Stunden Stabilität - geholfen hat es aber 
auch nichts.

Die Verbindung ist ungeschirmt, für die Leitungslängen und Anzahl der 
Sensoren sollte das ja eigentlich nicht das Problem sein.

1. Hat jemand eine Idee, woran das liegen könnte ?

2. Wie kann ich den 1wire resetten, ohne das gesamte Teil vom Strom zu 
nehmen ? Das wäre natürlich erstmal eine Notlösung.

Vielen Dank,
Tom

von Peter D. (peda)


Lesenswert?

Tom W. schrieb:
> Wie kann ich den 1wire resetten, ohne das gesamte Teil vom Strom zu
> nehmen ?

Laut 1Wire-Protokoll erfolgt vor jedem Paket ein Reset, d.h. Du brauchst 
kein extra Reset.
Es wird wohl ein Bug in der 1Wire-Lib sein und die stürzt dann ab.

Die einzige Möglichkeit, einen Sensor abstürzen zu lassen sind 
Datenkämpfe, d.h. Fehler im Protokoll. Dann zündet ein parasitärer 
Thyristor, es fließt viel Strom, der Sensor wird heiß und schließlich 
zerstört.
Der Master darf nie aktiv high treiben, außer bei parasite Power.

von Tom W. (limpbiz)


Lesenswert?

Peter D. schrieb:
> Tom W. schrieb:
>> Wie kann ich den 1wire resetten, ohne das gesamte Teil vom Strom zu
>> nehmen ?
>
> Laut 1Wire-Protokoll erfolgt vor jedem Paket ein Reset, d.h. Du brauchst
> kein extra Reset.
> Es wird wohl ein Bug in der 1Wire-Lib sein und die stürzt dann ab.
>
> Die einzige Möglichkeit, einen Sensor abstürzen zu lassen sind
> Datenkämpfe, d.h. Fehler im Protokoll. Dann zündet ein parasitärer
> Thyristor, es fließt viel Strom, der Sensor wird heiß und schließlich
> zerstört.
> Der Master darf nie aktiv high treiben, außer bei parasite Power.

Danke Peter,

Software Probleme schließe ich Mal aus, da ein reboot nicht hilft. Der 
Bus muss komplett von der Spannung getrennt werden, dann laufen die 
Sensoren wieder für ein paar Stunden.

Ich überlege, ob ich die Sensoren über gpio versorge, damit ich die zum 
Messen einschalte....

von Peter D. (peda)


Lesenswert?

Tom W. schrieb:
> Software Probleme schließe ich Mal aus, da ein reboot nicht hilft. Der
> Bus muss komplett von der Spannung getrennt werden, dann laufen die
> Sensoren wieder für ein paar Stunden.

Das ist genau der Effekt, wenn ein SW-Fehler vorliegt, d.h. das 
Protokoll verletzt wird. Der Master darf niemals high senden, wenn der 
Slave low sendet. Der Master darf nur low oder hi-Z senden.

Wenn das Protokoll eingehalten wird, laufen die Sensoren 24/7.

Es kann auch sein, daß eine andere Funktion den Pin versehentlich auf 
high setzt, weil sie andere Pins des selben Ports benutzt.

Tom W. schrieb:
> Ich überlege, ob ich die Sensoren über gpio versorge, damit ich die zum
> Messen einschalte....

Das würde nicht den SW-Fehler beseitigen, d.h. die Sensoren könnten 
trotzdem Schaden nehmen.

: Bearbeitet durch User
von Guido (Gast)


Lesenswert?

Du kannst die 3.3V auf einem GPIO legen und diesen immer auf High 
setzten wenn du misst und danach wieder auf low, Nach high würde ich 10 
Sekunden sleep einfügen.So deaktivierst bzw. aktivierst du den BUS je 
nach Bedarf.

von Joachim B. (jar)


Lesenswert?

Peter D. schrieb:
> Wenn das Protokoll eingehalten wird, laufen die Sensoren 24/7.

1. 4,7k ist bei längeren Leitungen zu hochohmig, die Kabelkapazität muss 
ja umgeladen werden! (am PI sollte man eher mit 3,3k starten und 
manchmal auch auf 1k runtergehen)
2. Sternverkabelung klappt zwar (bei mir) ist aber lt. Datenblatt 
unzulässig.
3. Arbeitspunkte an den DS verschieben sich, zuerst klappte bei mir 2,2k 
nach 1 Jahr keine Daten mehr, ich musste auf 1,8k pullup runter gehen, 
danach lief es wieder!
4. CRC Prüfung vornehmen und 85°C Fehlermeldung ignorieren dann läuft es 
auch.

von Falk B. (falk)


Lesenswert?

Joachim B. schrieb:
> Arbeitspunkte an den DS verschieben sich, zuerst klappte bei mir 2,2k
> nach 1 Jahr keine Daten mehr, ich musste auf 1,8k pullup runter gehen,
> danach lief es wieder!

Da verschiebt sich gar nichts. Das klingt eher nach einem schleichenden 
ESD-Schaden.

von Falk B. (falk)


Lesenswert?

Tom W. schrieb:
> Es funktioniert für ein paar Stunden bestens, danach ist der Raspi zwar
> da, aber die Sensoren sind einfach weg. Auch ein Reboot hilft dann
> nicht, ich muss einfach das gesamte Teil vom Strom nehmen.

Welchen Pegel hat der Bus dann? Möglicherweise verklemmt sich ein Slave 
und hält den Bus dauerhaft auf LOW.

Ein Workaround wäre, die 3,3V Versorgung der Sensoren schaltbar zu 
machen und alle X Stunden einfach einen Power ON Reset auszuführen.

von Heinz (Gast)


Lesenswert?

Tom W. schrieb:
> ich habe Probleme mit meinem OneWire Bus an einem RasPi Zero -
> vielleicht habt ihr eine Idee.

Schau mal bitte, ob es ggf ein Problem mit der Spannungsversorgung gibt.
Für einen ersten Test in dieser Richtung schalte einen 10uF über die 
Versorgung der Sensoren.

Als nächstes schau bitte nach, ob einer der Sensoren eine Macke hat. 
Betreibe die Sensoren einzeln.

Wenn das alles nicht hilft, betreibe die 1wire Komponenten mit 5V und 
einem Levelshifter, um die Datenleitung von 3,3V auf 5V umzusetzen. Mit 
5V ist das System meines erachtens robuster ggü Stör-Einstrahlungen.

Ansonsten: Der Raspi kann das an sich - bei mir funktionieren 1wire 
Komponenten seit Jahren 24/7 problemlos.

von svensson (Gast)


Lesenswert?

Joachim B. schrieb:
> 2. Sternverkabelung klappt zwar (bei mir) ist aber lt. Datenblatt
> unzulässig.

Der Punkt ist bei Dallas aber eher schwammig gehalten, ebenso die 
maximale Ausdehnung des Netzwerkes.
Die Fa. Hygrosens hatte ein Meßsystem mit rein passiven Verteilern und 
4adrigem Flachband"telefon"kabel, wo jeder Sensor mindestens 5m 
stichleitung hatte. Hat bei uns nachweislich mit 60 Sensoren ein Jahr 
lang funktioniert.
Daraus folgere ich, daß der Bus jetzt nicht sooo empfindlich sein kann.

Ich verwende auch den 4k7 Pull-Up, allerdings am ATmega mit 5V.

Und das Problem mit dem überhitzten Sensor hatte ich auch schon, war 
aber nicht reproduzierbar. Mein Verdacht ist, daß die Chinaclone des 
DS18B20 vielleicht nicht 100% zuverlässig arbeiten.

von bingo (Gast)


Lesenswert?

Tom W. schrieb:
> Angeschlossen sind zwei DS18B20 (diese im
> Metallstift) mit einem Y-Kabel, die drei Arme jeweils ca. 1-2m. Also ca.
> 1,5m vom RasPi zu einem Verteiler, von dort jeweils 2m zum Sensor.

Diese Sternverkabelung ist falsch, die müssen auf einer Leitung sitzen.

von Falk B. (falk)


Lesenswert?

bingo schrieb:
> Diese Sternverkabelung ist falsch, die müssen auf einer Leitung sitzen.

Unsinn! Das ist ein schnarchlangsamer Bus mit Open Drain! Da gilt das 
Thema Wellenwiderstand und Reflektionen nicht!

Es sei denn, man nimmt ein normales IO-Pin und schaltet rattenschnell 
von HIGH auf LOW und erzeugt damit Reflektionen, die im Extremfall einen 
Sensor irritieren könnten.

Ja, viele Master, wie auch der Raspberry Pi, nutzen natürlich ein 
normales IO-Pin, das eigentlich zu schnell schaltet, in den allermeisten 
Fällen funktioniert das aber dennoch ziemlich gut und stabil.

Summa Sumarum.

Eine Sternverdrahtung ist bei OneWire unkritisch!
Es dürfen auch Stichleitungen mit nennenswerter Länge vorkommen.
Es muss KEIN durchgehender Bus ohne Stichleitungen sein.

: Bearbeitet durch User
von bingo (Gast)


Lesenswert?

Falk B. schrieb:
> bingo schrieb:
>> Diese Sternverkabelung ist falsch, die müssen auf einer Leitung sitzen.
>
> Unsinn! Das ist ein schnarchlangsamer Bus mit Open Drain! Da gilt das
> Thema Wellenwiderstand und Reflektionen nicht!

Also mein Raspi war da anderer Meinung, der wollte keine 
Sternverkabeleung meiner drei DS18B20

von svensson (Gast)


Lesenswert?

Falk B. schrieb:
> Ja, viele Master, wie auch der Raspberry Pi, nutzen natürlich ein
> normales IO-Pin, das eigentlich zu schnell schaltet, in den allermeisten
> Fällen funktioniert das aber dennoch ziemlich gut und stabil.

Sollte man vielleicht einen Kerko am IO/Pin vorsehen?

Ich habe mich das bisher nicht getraut, da sonst evtl. die Entladeströme 
zu hoch werden könnten.

von Joachim B. (jar)


Lesenswert?

Falk B. schrieb:
> Das klingt eher nach einem schleichenden
> ESD-Schaden.

ach [/Loriot]
und deswegen läuft es nnun wieder seit weitere 4 Jahre ohne irgendeine 
Änderung?
Das hätte ich gerne erklärt!
An der Verkabelung nichts geändert, Sensoren nicht getauscht.
Mit dem 1,8k ist also der schleichende ESD Schaden weg?

Nun ja du weisst ja mehr über meine Installation als ich, wie dumm von 
mir.

von Falk B. (falk)


Lesenswert?

bingo schrieb:
> Also mein Raspi war da anderer Meinung, der wollte keine
> Sternverkabeleung meiner drei DS18B20

Das kann viele Ursachen haben. Hast du ein Oszi drangehängt und mal 
RICHTIG gemessen?

Wer sagt, daß die Software im Raspi optimal ist?

von Falk B. (falk)


Lesenswert?

svensson schrieb:
> Sollte man vielleicht einen Kerko am IO/Pin vorsehen?

Kann man probieren, so 0,1-1nF.

> Ich habe mich das bisher nicht getraut, da sonst evtl. die Entladeströme
> zu hoch werden könnten.

Das geht schon.

von Falk B. (falk)


Lesenswert?

Joachim B. schrieb:
> Nun ja du weisst ja mehr über meine Installation als ich, wie dumm von
> mir.

Du weißt genauso wenig über die WAHRE Ursache! Du kennst bestenfalls die 
Wirkung, daß es mit 1k8 wieder läuft. Alles andere ist bestenfalls eine 
Hypothese!

von bingo (Gast)


Lesenswert?

Falk B. schrieb:
> Das kann viele Ursachen haben. Hast du ein Oszi drangehängt und mal
> RICHTIG gemessen?

Dadurch bin ja draufgekommen:
Sternverkabelung: Signal scheisse, Bus: Signal gut

> Wer sagt, daß die Software im Raspi optimal ist?

Raspbian hat dafür ein Kernelmodul, das funktioniert sehr gut

von (prx) A. K. (prx)


Lesenswert?

Alter RasPi, ein halbes Dutzend Sensoren in Sternverkabelung, teils 2m 
teils 5m Kabel, über mindestens eine Woche => problemlos.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.