Forum: Mikrocontroller und Digitale Elektronik DS18B20 gibt immer 85°C


von malptek (Gast)


Lesenswert?

Hallo.
Habe wieder Probleme mit dem DS18B20. Ich habe 4 Sensoren an einem 
Datenbus und 7 weitere an einem anderen Datenbus angeschlossen. Wenn ich 
die Temperatur der Sensoren für jeden Datenbus separat abfrage, 
funktioniert alles.
Wenn ich aber von beiden Datenbusen die Temperatur auslesen will, geben 
mir einige Sensoren des zweiten Datenbusses immer 85°C aus.

Der Code sieht wie folgt aus:
1
void convertTemp()
2
{
3
OW_reset(DATAPIN2);                  // Master sendet Reset Pulse
4
  OW_write_byte(DATAPIN2, CMD_SKIPROM);         // Ueberspringe ROM
5
  OW_write_byte(DATAPIN2, CMD_CONVERTTEMP);       // Master sendet Start Conversion
6
  OW_reset(DATAPIN3);                  // Master sendet Reset Pulse
7
  OW_write_byte(DATAPIN3, CMD_SKIPROM);         // Ueberspringe ROM
8
  OW_write_byte(DATAPIN3, CMD_CONVERTTEMP);       // Master sendet Start Conversion
9
}

und danach lese ich nacheinander die einzelnen Sensoren aus.

Hab schon ganze Web durchsucht, komme nicht auf den Fehler.

Danke und lg,
malptek

von malptek (Gast)


Angehängte Dateien:

Lesenswert?

Nachtrag:

das Problem wird vlt. anhand dieser 3 bilder deutlicher. Also wenn ich 
beide geplottet haben möchte, geben mir einige sensoren nur 85°C aus.

von (prx) A. K. (prx)


Lesenswert?

malptek schrieb:
> Hallo.

> und danach lese ich nacheinander die einzelnen Sensoren aus.

Aber du wartest schon bis sie mit der Messung fertig sind? Und hast die 
lieben Sensörchen schön brav mit Strom versorgt, statt parasitär.

von Lutz (Gast)


Lesenswert?

Den Pull-Up an DQ auch nicht zu groß gewählt?

von malptek (Gast)


Lesenswert?

Jepp.
Kann es sein, dass wenn ich nach Convert Temp die Temperatur erst 
verzögert, d.h. einigen Sekunden später, lese dieser dann verloren geht?

Habe nach viel rumprobieren und hin und her, mal einfach, bevor ich die 
Temperatur vom Datenbus 2 auslese wieder ein 'Convert Temp - Aufruf' 
gemacht und dann den zweiten Datenbus ausgelesen und dann lief es.
Ist irgendwie komisch, find ich, aber egal, hauptsache es läuft nun, 
obwohl mir dadurch natürlich wieder Zeit drauf geht durch convterieren.

Danke und lg,
malptek

von (prx) A. K. (prx)


Lesenswert?

malptek schrieb:

> Kann es sein, dass wenn ich nach Convert Temp die Temperatur erst
> verzögert, d.h. einigen Sekunden später, lese dieser dann verloren geht?

Ohne Strom ja.

Wie sind die Dinger angeschlossen? Plan!

von chris (Gast)


Lesenswert?

Hey hallo

versuchs mal so:

> void convertTemp()
> {
> OW_reset(DATAPIN2);                  // Master sendet Reset Pulse
>  OW_write_byte(DATAPIN2, CMD_SKIPROM);         // Ueberspringe ROM
>  OW_write_byte(DATAPIN2, CMD_CONVERTTEMP);       // Master sendet Start
  Warte 750ms

> OW_reset(DATAPIN3);                  // Master sendet Reset Pulse
>  OW_write_byte(DATAPIN3, CMD_SKIPROM);         // Ueberspringe ROM
>  OW_write_byte(DATAPIN3, CMD_CONVERTTEMP);       // Master sendet Start
  Warte 750ms

von Klaus (Gast)


Lesenswert?

@malptek!

Mit SkipRom und anschliessender Convertiereung werden alle Sensoren 
Temperaturen messen. Bei Parasitären Versorgung ist lt. Datenblatt der 
s.g. Strong-Pullup solange Aufrecht zu halten bis die Messung fertig 
ist.
In diesem Fall wirst auf jeden Fall die 750ms lt.Datenblatt einhalten 
müssen.
Wenn zu früh abfragst kommt es eben zu diesen Ominösen 85°C.

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.