Forum: Mikrocontroller und Digitale Elektronik Pi und DS18S20


von Ice R. (ascareth)


Lesenswert?

Tach zusammen,

ich habe hier scheinbar falsche Temperaturangaben. Wenn ich über den 
owfs-werbserver abfrage bekommen ich 60-80 Grad angezeigt. Konfiguriert 
habe ich das ding auf auf Celsius mit "owfs -C". Was soll das Bedeuten? 
Da stimmt wohl generell was nicht?

Wenn ich meine DS direkt über das System abfrage mit: 
/sys/bus/w1/devices/10-00080234149b/w1_slave dann bekomme ich etwa 18 
Grad also 18625 (Milligrad) angezeigt. Beim Raumthermometer zeigt 15,2 
°C an. Ein paar Milligrad Abweichung würde ich für normal halten, aber 
das sind immerhin über 3° K Abweichung. Sind die Dinger wirklich so 
ungenau?

Gruß


PS: Angeschlossen habe ich den DS hiernach: 
http://webshed.org/wiki/File:Fritzing_rPI_DS1820.png

Das mit dem 4,7k R müsste doch so richtig sein oder?

Was mir außerdem noch auffällt ist, dass die Messungen teilweise von 
Sekunde zu Sekunde um bis zu 3K abweichen! ... Man kann zwar 5 Messungen 
glätten, wäre ja auch kein Ding. Aber gibts da nicht etwas, dass ein 
bisschen genauer arbeitet, oder könnte es noch einen anderen Grund 
haben, warum das Ding so ungenau zu sein scheint?

von HDD-Sucher (Gast)


Lesenswert?

Ice Rage schrieb:
> Wenn ich meine DS direkt über das System abfrage mit:
> /sys/bus/w1/devices/10-00080234149b/w1_slave dann bekomme ich etwa 18
> Grad also 18625 (Milligrad) angezeigt. Beim Raumthermometer zeigt 15,2
> °C an. Ein paar Milligrad Abweichung würde ich für normal halten, aber
> das sind immerhin über 3° K Abweichung. Sind die Dinger wirklich so
> ungenau?

Wenn du ein Orginateil von Maxim hast, dann gibt Maxim +/- 0.5 
Genauigkeit an. Was schon sehr beachtlich ist. Wenn du allerdings einen 
DS18S20 aus Fernost / China o.Ä. hast, dann erwischst du leicht eine 
nette Fälschung. Auf der steht zwar auch DS18S20 - aber natürlich nicht 
mit der Genauigkeit. Ansonsten ein Raumthermometer - kommt halt auf das 
Raumthermometer an. Wenn das Ding (wie die meisten) einen NTC/PTC 
verbaut hat, dann kannst du getrost +/-3 Grad rechenen. Die Dinger sind 
selbst in besseren Preiklassen höchstens Schätzeisen. Ich hatte mal 2 
identische von Hama da. Halt die für 29€. Sind nen Tag nebeneinander 
gestanden und hatten immernoch 2 Grad Abweichung voneinander. Bei der 
Luftfeuchtigkeit waren es sogar 7% rel. Luftfeuchte Abweichung.

von Cyblord -. (cyblord)


Lesenswert?

HDD-Sucher schrieb:

> Wenn du ein Orginateil von Maxim hast, dann gibt Maxim +/- 0.5
> Genauigkeit an. Was schon sehr beachtlich ist. Wenn du allerdings einen
> DS18S20 aus Fernost / China o.Ä. hast, dann erwischst du leicht eine
> nette Fälschung. Auf der steht zwar auch DS18S20 - aber natürlich nicht
> mit der Genauigkeit.

Hast du da mal eine Quelle dazu? Hast du ein gefälschtes Teil? Allein 
mir fehlt sonst der Glaube. Ich habe jetzt schon sehr viele von denen 
aus Fernost gekauft und die haben sich exakt so verhalten wie die von 
Digikey oder Reichelt. Nie eine abweichende Temperatur. Immer diese 
Märchen.

gruß cyblord

von Ice R. (ascareth)


Angehängte Dateien:

Lesenswert?

Also die Temperaturanzeige in der Konsole passt jetzt irgendwie. Aber 
wenn ich den selben sensor über owfs mit python abfrage, kommt da nur 
Müll dabei raus.


http://666kb.com/i/cbzv42qgnbv5tu1aw.jpg



Hat jemand ne Ahnung woran das liegen kann?

von Ice R. (ascareth)


Lesenswert?

hat jemand schon mal solche merkwürdigen werte über das owfs ausgelesen?

von Nerd (Gast)


Lesenswert?

Ice Rage schrieb:
> hat jemand schon mal solche merkwürdigen werte über das owfs ausgelesen?

Du bist bestimmt nicht der erste, der owfs auf pi einsetzt, um DS18S20 
Daten zu entlocken. Die Sache mit den Milligrad mußt du dir wohl 
abschminken. Wenn der Sensor nicht genug rauscht, bringt auch 
Oversampling nicht.

von Sven B. (scummos)


Lesenswert?

Ich würde mir mal die Raw-Werte anschauen, die vom Sensor kommen, die 
werden bestimmt bloß falsch konvertiert.

Übrigens: Dieses Forum ist aktiv genug, um nicht drei Threads mit 
demselben Thema zu eröffnen und die ständig durch doppelte Beiträge zu 
pushen. Warte doch einfach ein bisschen, dann antwortet schon jemand.

von Ice R. (ascareth)


Lesenswert?

Nerd schrieb:
> Ice Rage schrieb:
>> hat jemand schon mal solche merkwürdigen werte über das owfs ausgelesen?
>
> Du bist bestimmt nicht der erste, der owfs auf pi einsetzt, um DS18S20
> Daten zu entlocken. Die Sache mit den Milligrad mußt du dir wohl
> abschminken. Wenn der Sensor nicht genug rauscht, bringt auch
> Oversampling nicht.

Die Milligrad interessieren mich auch nicht. Ich lege keinen Wert auf 
eine derartige Genauigkeit. Wenn das Ding +- 0,5 Grad Abweichung hat, 
dann ist das schon in Ordnung. Das sah aber wie gesagt eine Zeit über 
nicht so aus, deshalb der Thread hier. Du musst scohn richtig lesen, 
bevor du auf etwas antwortest, dass überhaupt nichts mit der Frage zu 
tun hat.

Was heißt rauschen und was meinst du mit Oversampling? In welchem 
Zusammenhang steht das mit meiner Frage ... kann ich nicht erkennen. Tut 
mir leid.


Sven B. schrieb:
> Ich würde mir mal die Raw-Werte anschauen, die vom Sensor kommen, die
> werden bestimmt bloß falsch konvertiert.
>
> Übrigens: Dieses Forum ist aktiv genug, um nicht drei Threads mit
> demselben Thema zu eröffnen und die ständig durch doppelte Beiträge zu
> pushen. Warte doch einfach ein bisschen, dann antwortet schon jemand.

Wieso 3? Ich habe diesen Thread hier eröffnet, weil ich dachte es hätte 
vielleicht etwas mit den Sensoren zu tun -> also Forum µKontroller. Dann 
habe ich, nach dem für mich geklärt ist, dass es am Sensor nicht liegen 
kann einen Thread in der PC-Programmierung eröffnet, weil ich ebenfalls 
davon ausgehe, dass es ein Softwareproblem ist. Es wird wohl etwas im ow 
Paket nicht richtig konfiguriert sein. Was das deiner Meinung nach 
speziell mit µKontrollern zu tun haben soll, musst du mir mal erklären! 
Es handelt sich hier bei um den 1-wire Bus! So gesehen könnte ich dann 
hier auch Fragen zu Miksrohsoft Office posten, weil das auch auf 
Systemen läuft die was mit µKontrollern zu tun haben?! .... naja ....

von Nerd (Gast)


Lesenswert?

Ice Rage schrieb:
> Was heißt rauschen und was meinst du mit Oversampling?

http://de.wikipedia.org/wiki/Rauschen_%28Physik%29
http://de.wikipedia.org/wiki/Oversampling
Anschließend Mittelung zur Verringerung des Quantisierungsrauschens ...

Aber wenn dich die Milli-Grad sowieso nicht interessieren, ist das auch 
egal.

von Gert K. (kawa0815)


Lesenswert?

Ich habe 8 Stück dieser Sensoren (aus China) an einem Atmega644 hängen.
Die sind von 3 verschiedenen Lieferanten und zur Hälfte gekapselt.
Alle liegen im Bereich von 1 K Fehler bei 20 °.

Ich habe aber den Widerstand zwischen Datenausgang und +5V auf 2,7 K 
reduziert.

von Ice R. (ascareth)


Lesenswert?

Gert Kawa schrieb:
> Ich habe 8 Stück dieser Sensoren (aus China) an einem Atmega644 hängen.
> Die sind von 3 verschiedenen Lieferanten und zur Hälfte gekapselt.
> Alle liegen im Bereich von 1 K Fehler bei 20 °.
>
> Ich habe aber den Widerstand zwischen Datenausgang und +5V auf 2,7 K
> reduziert.


Hm, ok. Was bewirkt das schaltungstechnisch mit dem 2,7K ?

von Florian T. (florian_t)


Lesenswert?

Ice Rage schrieb:
> Hm, ok. Was bewirkt das schaltungstechnisch mit dem 2,7K ?

Der 4,7K ist ein Pullup um die DQ-Leitung auf HIGH Pegel zu ziehen.
Je kleiner der Pullup wird, desto mehr Strom kann der DS18S20 ziehen.
Wenn der Sensor parasitär betrieben wird, dann wirst Du bei einer langen 
Leitung einen stärkeren Pullup brauchen (Strong Pullup = 2,7k). Versuche 
es einfach mal.

Allerdings tippe ich bei dem Python Problem eher darauf, dass Du den 
falschen Code verwendest. Der DS18S20 liefert andere Daten als ein 
DS18B20. Die werden unterschiedlich berechnet. Darauf musst Du achten.

von Ice R. (ascareth)


Lesenswert?

Florian Trück schrieb:
> Ice Rage schrieb:
>> Hm, ok. Was bewirkt das schaltungstechnisch mit dem 2,7K ?
>
> Der 4,7K ist ein Pullup um die DQ-Leitung auf HIGH Pegel zu ziehen.
> Je kleiner der Pullup wird, desto mehr Strom kann der DS18S20 ziehen.
> Wenn der Sensor parasitär betrieben wird, dann wirst Du bei einer langen
> Leitung einen stärkeren Pullup brauchen (Strong Pullup = 2,7k). Versuche
> es einfach mal.

jo besten dank. betreiben will ich den tatsächlich an einer längeren 
leitung.


>
> Allerdings tippe ich bei dem Python Problem eher darauf, dass Du den
> falschen Code verwendest. Der DS18S20 liefert andere Daten als ein
> DS18B20. Die werden unterschiedlich berechnet. Darauf musst Du achten.



die sache ist nur, dass ich den vollkommen typunabhängig auslese über 
owfs. der typ wird mir korrekt angegeben, also kann zwar ermittelt 
werden. aber für die initialisierung gebe ich gar keinen typ an. und es 
gibt auch keine typspezifischen methoden.

von Nerd (Gast)


Lesenswert?

Ice Rage schrieb:
> ... und es gibt auch keine typspezifischen methoden.

Du meinst: "es sind keine typspezifischen Methoden implementiert, obwohl 
die Register der Bausteine unterschiedlich interpretiert werden müßten"

Komm mal von deinem Abstraktionslevel runter, guck in die Datenblätter 
und dann in die DS18S20 bzw. DS18B20 Treiber in den owfs-Sourcen.
Beim DS18S20 liegen die Temperaturdate komplett im LS Byte, beim DS18B20 
liegt die oberen drei Bits im MS Byte und der Rest im LS Byte.

Die Bausteine unterscheiden sich im 1-Wire Family Code (DS18S20 10h bzw. 
DS18B20 28h). Kontrollier doch mal, ob owfs den richtig ausliest.

von Jan H. (jan_h74) Flattr this


Angehängte Dateien:

Lesenswert?

So schlecht sind die China Teile nicht, habes mal 5 Teile vermessen in 
Eiswasser und in Heisses wasser. Abweichungen waren immer in Zehntel 
Bereich. Die Absolut temperatur kan naturlich mehr abweichen.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Ice Rage schrieb:
> Also die Temperaturanzeige in der Konsole passt jetzt irgendwie. Aber
> wenn ich den selben sensor über owfs mit python abfrage, kommt da nur
> Müll dabei raus.

Sehe ich da im Bild zwei verschiedene IDs?
Shell:  10-0008021daef0
Python: 10.67c6697351ff

von Ice R. (ascareth)


Lesenswert?

Christian H. schrieb:
> Ice Rage schrieb:
>> Also die Temperaturanzeige in der Konsole passt jetzt irgendwie. Aber
>> wenn ich den selben sensor über owfs mit python abfrage, kommt da nur
>> Müll dabei raus.
>
> Sehe ich da im Bild zwei verschiedene IDs?
> Shell:  10-0008021daef0
> Python: 10.67c6697351ff


Schau dir doch mal ganz genau die beiden Seriennummern an. Was fällt dir 
auf? Einerseits Punkt, andererseits Strich. Wie sollen das beides 
änliche Seriennummern sein? Eines ist eine Seriennummer, die in der 
Konsole. owfs vergibt dann noch mal intern Nummern wie es aussieht und 
das ist die mit dem Punkt, die dann auch im Pythonfenster benutzt werden 
muss. Also: Nein! Daran liegt es sicher nicht.


Nerd schrieb:
> Ice Rage schrieb:
>> ... und es gibt auch keine typspezifischen methoden.
>
> Du meinst: "es sind keine typspezifischen Methoden implementiert, obwohl
> die Register der Bausteine unterschiedlich interpretiert werden müßten"
>
> Komm mal von deinem Abstraktionslevel runter, guck in die Datenblätter
> und dann in die DS18S20 bzw. DS18B20 Treiber in den owfs-Sourcen.
> Beim DS18S20 liegen die Temperaturdate komplett im LS Byte, beim DS18B20
> liegt die oberen drei Bits im MS Byte und der Rest im LS Byte.
>
> Die Bausteine unterscheiden sich im 1-Wire Family Code (DS18S20 10h bzw.
> DS18B20 28h). Kontrollier doch mal, ob owfs den richtig ausliest.


Ich weiß nicht ob du mit dem Konzept objektorientierter Programmierung 
vertraut bist, aber irgendwie macht das auf mich nicht den Eindruck. Es 
gibt also überhaupt gar keinen Grund, warum ich von irgendwas runter 
kommen müsste. Alle spezifischen Low-level-routinen, die nötig sind um 
sensorspezifisch anzusteuern, sind in den beiden Methoden die ich 
benutze gekapselt. Da ist es mir vollkommen wumpe was da dranhängt. Das 
ist ja eben gerade der Grund, warum man eine api verwendet!

von Ice R. (ascareth)


Lesenswert?

Hat hier echt keiner jemals owfs benutzt und damit erfolgreich 
Temperaturwerte ausgelesen?

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.