DS18B20 gibt immer 85°C

Gast #2283408
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
Gast #2283767
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
Gast #2283890
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
Gast #2284155
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren