Go Down

Topic: Dallas DS18B20 verursacht delay (Read 1 time) previous topic - next topic

currymuetze

Hi,
mir ist beim testen aufgefallen, dass mein TempCode den Gesamtencode durch ein Delay verzögert. Ca 800ms.
Ein Delay habe ich selbst nicht integriert, nur die Libraries:
#include <OneWire.h>
#include <DallasTemperature.h>

Dass der Sensor ein wenig Zeit zum auslösen benötigt ist mir bekannt, aber gibt es ne Möglichkeit, dass parallel mein RestCode weiterläuft?
Bzw. gibt es da schon überarbeitete Libraries, die das berücksichtigen?

Falls ihr meinen Code benötigt sagt Bescheid, aber wie gesagt, der ruft einfach nur die Temp ab:
void getTemp() {
  sensors.requestTemperatures();
  TempLED1 = sensors.getTempCByIndex(0);
//  TempLED2 = sensors.getTempCByIndex(1);
//  TempWasser = sensors.getTempCByIndex(2);
//  TempLuft = sensors.getTempCByIndex(3);
}

uwefed

Dafür ist der DS18B20 schuld. Je nach Auflösung braucht er ca 94 bis 750mSek für die Digitalisieung des Temperturwerts und einige mSek für die Datenübertragung / Meßanfrage.
Seite 20 von http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf 
Wahrscheinlich ist die Bibliothek so programmiert, daß diese Zeit gewartet wird.
Grüße Uwe

currymuetze

Hi,
das habe ich auch so gelesen, ich hatte nur gehofft, das könne man durch ein "blink without delay" in der bibliothek umgehen.
Ich werd das dann mal so ändern, dass die temperatur nur alle 10 oder vielleicht 30 sekunden gelesen wird. Sollte ja ausreichen.
Anders scheint es dann ja nicht zu gehen.
Gruß

MaFu

Ich weiß ja nicht, welche Temperaturen Du messen willst. Aber wenn es sich um die Umgebungstemperatur handelt, reicht ja einmal pro Minute dicke. So schnell ändert sich die Temperatur ja normalerweise nicht.
_______
Manfred

Go Up