INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
DS18B20 - Zeit beim Auslesen verkürzen?
08.01.2015, 21:17
Beitrag #1
DS18B20 - Zeit beim Auslesen verkürzen?
Hallo,

bin gerade dabei über zwei NRF24L01 diverse Daten für eine Fernsteuerung auszutauschen. Nun würde ich gerne Temperaturwerte vom DS18B20 versenden, um die Temperatur von Motoren und Motorregler überwachen zu können. Dabei besteht jedoch das Problem, dass der Sensor zu lange beim Auslesen braucht uns die Kommunikation zwischen den Funkmodulen darunter leidet/gebremst wird.

Der Teil des Sketches, welcher die Temperaturwerte ausliest, sieht derzeit ungefähr so aus:
Code:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 9        //1Wire auf D9

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

DeviceAddress Temp_Motor_links =         { 0x28, 0xEA, 0xC8, 0x36, 0x02, 0x00, 0x00, 0x7A };  //Adr DS18B20 links
DeviceAddress Temp_Motor_rechts =        { 0x28, 0xC2, 0xA6, 0x16, 0x05, 0x00, 0x00, 0x1C };  //Adr DS18B20 links


void setup ()
{
  Serial.begin(9600);
  
  sensors.begin();
  
  sensors.setResolution(Temp_Motor_links, 9);
  sensors.setResolution(Temp_Motor_rechts, 9);

}


void loop()
{
  sensors.requestTemperatures();
  float tempML = sensors.getTempC(Temp_Motor_links);
  float tempMR = sensors.getTempC(Temp_Motor_rechts);

  Serial.print("Motor Links: ");
  Serial.println(tempML);
  Serial.print("Motor Rechts: ");
  Serial.println(tempMR);
}

Gibt es eventuell eine Möglichkeit schneller an die Temperaturwerte zu kommen oder müsste ich dafür dann einfach analoge Sensoren verwenden?
Kann man das ganze eventuell irgenwie im Hintergrund laufen lassen, sodass das Hauptprogramm dadurch nicht ausgebremst wird?

Danke, Lg ArduPI
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2015, 21:42
Beitrag #2
RE: DS18B20 - Zeit beim Auslesen verkürzen?
Hi,
man kann die OneWire-Sensoren Non-Blocking auslesen. Dann kann man während der Wartezeit andere Sachen machen.
Schau Dir mal das letzte Programm auf dieser Seite an: http://playground.arduino.cc/Learning/OneWire-DE. Statt dem delay(1000) kann man dann auch was anderes machen...
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2015, 22:26
Beitrag #3
RE: DS18B20 - Zeit beim Auslesen verkürzen?
Wenn ich das richtig verstanden habe, startet das Beispiel im playground-Link mit ds.write(44,1) letztlich wieder die Konvertierung und wartet bis diese abgeschlossen ist.
Was hier fehlt ist setWaitForConversion(false) um das Blocking der Konvertierung abzuschalten, also das Ende der Konvertierung nicht abzuwarten.
Das Beispiel WaitForConversion2 im Lib - Ordner zeigt wie's geht und die notwendigen Timings gesetzt werden können.
Grüße RK

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.01.2015, 19:00
Beitrag #4
RE: DS18B20 - Zeit beim Auslesen verkürzen?
Hallo,

großen Dank an euch beide. Mit "sensor.setWaitForConversion(false)" scheint es derzeit perfekt zu funktionieren...

Danke, Lg ArduPI
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Anzahl der DS18B20 ermitteln AlphaRay 3 312 02.08.2017 09:13
Letzter Beitrag: Fips
  DS18B20 Pool-Thermometer mit 7Seg.-Anzeige Evilgnievel 19 861 23.06.2017 09:27
Letzter Beitrag: Tommy56
  Datenlogger mit DS18B20 lcd und sd Kart FreDicnc 7 323 15.06.2017 09:48
Letzter Beitrag: hotsystems
Sad Fehlermeldung beim Hochladen meines Sketches kletterloewe 5 363 14.06.2017 16:08
Letzter Beitrag: hotsystems
Question Problem beim Hochladen auf AtTiny45. Hilfe -.- Jonas Lindenblatt 17 1.120 16.04.2017 12:58
Letzter Beitrag: Jonas Lindenblatt
  Befehl braucht viel Zeit GuaAck 5 376 14.03.2017 19:40
Letzter Beitrag: GuaAck
  Zeit varriert ständig Frank1234 9 473 19.02.2017 12:50
Letzter Beitrag: Pit
  Arduino Serielle Schnittstelle auslesen mit Visual Basic Obermuda 1 453 29.01.2017 17:02
Letzter Beitrag: hotsystems
  Arduino hängt beim Upload deranda 14 1.294 20.01.2017 16:14
Letzter Beitrag: renid55
  Led Impuls beim Taster betätigen clemens5555 11 765 17.01.2017 20:00
Letzter Beitrag: renid55

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste