DS18B20 - sporadische Messfehler beheben

(deleted)

Ich vermute, du liest den Sensor zu schnell hintereinander aus.
Das muss doch nicht in jedem Loopdurchlauf geschehen.

Wenn du mittels eines "Timers" alle 5 Sek. o.ä. den Sensor ausliest, reicht es doch.

Verkleiner doch mal den Pullup auf 1-2k.

Parasitär oder normale Betriebsart?

Was für ein uC?

ElEspanol:
Was für ein uC?

anwofis:
P.S.: Hier ist mein Code für den Uno:

Naja, Posts 1, könnte ja sein, dass er Uno Code für eunen ESP32 benutzt und dann im Wifibetrieb Probleme bekommt. Alles schon dagewesen :wink:

(deleted)

Dann sollte das mit längeren Pausen zwischen dem Auslesen funktionieren.

Aber mach die Pausen bitte nicht nur mit delay().
Verwende den "SimpleTimer" oder besser"Interval.h"

[ OT ]

oder besser"Interval.h"
Danke für die Anregung.

Meine innere Einstellung zu INTERVAL hat sich mittlerweile geändert.

Ich schätze, dass ich das in den nächsten Tagen mal ausformulieren werde.
[ /OT ]

Dann tausch den Widerstand nicht aus, sondern mach einen zusätzlich mit 2k parallel.

Im Sketch seh ich auf Anhieb nix gravierendes. Die String Objekte könntest du durch char* ersetzen. Die Verzögerung macht die Lib. Ich sehe nichts, warum das nicht funktionieren sollte.

combie:
[ OT ]

oder besser"Interval.h"
Danke für die Anregung.

Meine innere Einstellung zu INTERVAL hat sich mittlerweile geändert.

Ich schätze, dass ich das in den nächsten Tagen mal ausformulieren werde.
[ /OT ]

Na da bin ich aber gespannt.
Ich setze die "INTERVAL.h" mittlerweile sehr gern ein.

Ich bin allerdings auch zu faul, um was anderes/besseres zu suchen. :wink:

Ich bin allerdings auch zu faul, um was anderes/besseres zu suchen.

Das gibts auch (noch) nicht!
Auf der ganzen Welt nicht.
:smiling_imp: :smiling_imp:

Ja, INTERVAL ist durchaus nutzbar!
In einer Prozeduralen Umgebung wird es nichts hübscheres/schlankeres geben.
Und ich bin weiterhin ein wenig stolz darauf.

Aber ich bin mit dem ganzen Verfahren, gerade bei der Verwendung in Klassen/Objekten, derbe auf die Nase gefallen. Das gilt ebenso für meine TaskMakros.

combie:
Das gibts auch (noch) nicht!
Auf der ganzen Welt nicht.
:smiling_imp: :smiling_imp:

Ja, INTERVAL ist durchaus nutzbar!
In einer Prozeduralen Umgebung wird es nichts hübscheres/schlankeres geben.
Und ich bin weiterhin ein wenig stolz darauf.

Aber ich bin mit dem ganzen Verfahren, gerade bei der Verwendung in Klassen/Objekten, derbe auf die Nase gefallen. Das gilt ebenso für meine TaskMakros.

Hey....super.
Dann brauch ich auch nicht suchen. Und für meine rel. einfachen Projekte ist das genau richtig.

Hi

anwofis:
Ab und zu wird als Messwert "-127 °C" ausgegeben, wenn ich den Sensor abfrage. Momentan löse ich das so, dass ich diese Werte beim Regeln einfach ignoriere.

Da ich gerade darüber geflogen bin - in der DallasTemperature.cpp ab Zeile 56 wird bei nicht gefundenem Sensor genau dieser Wert

// Error Codes
#define DEVICE_DISCONNECTED_C -127
#define DEVICE_DISCONNECTED_F -196.6
#define DEVICE_DISCONNECTED_RAW -7040

zurück gegeben.

MfG

(deleted)

Dann hast du wohl ein Problem mit der Stromversorgung.
Step down auf 5V anstatt des eingebauten Linearreglers, dicker Elko noch dran.
PC Netzteile benötigen eine relativ hohe Mindestlast für eine korrekte Funktion

Hi

Das kryptische Zeugs auf dem Display lässt erahnen, daß das Display Mist verstanden hat - die Übertragung also gestört war.
Wenn nur noch die hälfte der Zeilen voll angezeigt werden, die andere Hälfte gar nicht, hat das Display resettet (bzw. wurde nicht initialisiert, was nach einem Reset des µC ja normal direkt gemacht wird).
Auch hier wird die Spannungsquelle wohl unter den Schuldigen zu vermuten sein :wink:

MfG

anwofis:
Mir ist aufgefallen, dass ohne aktive Heizung, wenn ich den Uno mit 5V am PC versorge alles stabil läuft auch über mehrere Stunden. Wenn ich den Uno über 12V von einem PC-Netzteil betreibe, kommen nach kurzer Zeit wieder Messfehler. Kann es am Netzteil liegen? Ich habe auch schon ein billiges China-12V-Netzteil getestet, aber da fällt nach kurzer Zeit schon das LCD aus. (Es zeigt nur noch irgendwelche Symbole...)

Wie EIEspanol schon geschrieben hat, macht deine Spannungsversorgung Probleme.
Mit 12 Volt belastest du den Regler auf dem Uno zu stark, der wird zu heiß.
Damit bricht deine 5 Volt zusammen und das Display spinnt. Auch dadurch funktioniert deine Temperaturmessung nicht mehr.

Also eine stabile 5Volt Spannung an deine Schaltung (Arduino und den Rest) und alles wird gut.

Hi

Wenn Du nur die Versorgungsspannung zum Arduino runter bekommen musst - packe für jeweils für 0,7V eine normale Diode in Durchlaßrichtung in die Versorgungsleitung (an PLUS !! - an GND würdest Du Dir dein GND-Potential anheben, nix gut).

Um ca. 1,4V 'weg zu bekommen' zwei SI-Dioden in Reihe zwischen der Spannungsquelle und dem Vin-Pin des Arduino.
Die Dioden müssen den fließenden Strom natürlich verkraften können, auch fällt an Diesen Wärme ab (irgendwo müssen ja die reduzierten 0,7V hin) - ist aber im Normalfall kein Problem und wenn's Eins wird, hast Du zumindest schon Mal von gehört.

Mit einer LED kann man noch mehr Spannung auf ein Mal 'weg nehmen' - bis dann aber sehr stark im möglichen Strom begrenzt - Beide, normale Dioden und auch LEDs sind temperatur-abhängig, die 0,7V für eine normale SI-Diode oder die 1,6V (hmm, laut Mikrokontroller.net sogar eher 1,8V) für eine rote LED sind nur grobe Werte, also nicht auf die dritte Nachkommastelle damit rechnen.

MfG

(deleted)

anwofis:
Hallo,

also ich habe jetzt einen einfachen Step-Down-Converter (12 V DC zu 5 V DC) an den USB-Port des Uno angeschlossen. Es kommen immer noch fehlerhafte Sensorwerte, aber es scheint etwas besser geworden zu sein.

@ElEspanol: wie soll ich den Elko anschließen? Die größten, die ich da habe, haben 470 µF. Soll ich einen -wshl. Entstörkondensator - zwischen 12V und Masse vor dem Step-Down-Converter anschließen?

@HotSystems:
Eingentlich dachte ich, dass der Uno bis zu 20V vertragen kann?

Ist ein PC-Netzteil generell eine schlechte Idee zur Versorgung eines Arduinos? Muss es also zwingend ein teures Schaltnetzteil z.B. von MeanWell sein, damit der µC nicht "spinnt"?

Mit einem Stepdown auf 5 Volt ist das schon ok, sollte also funktionieren.

Und ja, die max. Spannung sind 20 Volt, dann wird der Regler auf dem Uno schon heiß und kann abschalten.
Wenn du dann noch einen Verbraucher an 5 Volt angeschlossen hast, funktioniert das nicht mehr.
Du musst auch die Verlustleistung des Reglers berücksichtigen. Da hast du bei 15 Volt Spannung die dieser vernichten muss, schnell das Maximum erreicht.

Edit:
Mit einem PC-Netzteil habe ich bisher noch keine Erfahrung gesammelt.
Ich verwende oft preiswerte Steckernetzteile, die haben mich bisher noch nicht enttäuscht.
Du solltest aber darauf achten, das diese auch eine Regelung eingebaut haben.
Das ist heute allerdings bei den meisten der Fall.