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
  Zeit varriert ständig Frank1234 9 148 19.02.2017 12:50
Letzter Beitrag: Pit
  Arduino Serielle Schnittstelle auslesen mit Visual Basic Obermuda 1 153 29.01.2017 17:02
Letzter Beitrag: hotsystems
  Arduino hängt beim Upload deranda 14 776 20.01.2017 16:14
Letzter Beitrag: renid55
  Led Impuls beim Taster betätigen clemens5555 11 362 17.01.2017 20:00
Letzter Beitrag: renid55
  Beim Hochladen USB Problem Nils 10 536 29.12.2016 21:05
Letzter Beitrag: renid55
  Fehler beim Hochladen steyr 24 692 16.12.2016 07:52
Letzter Beitrag: hotsystems
  Fehlermedungen beim Kompilieren Franz54 7 440 07.12.2016 14:29
Letzter Beitrag: Pit
  Mit dem Arduino JSON Webseiten auslesen seb201 3 243 05.12.2016 22:25
Letzter Beitrag: Tommy56
  Messchieber auslesen mit nem UNO roadcaptain 8 483 15.11.2016 14:30
Letzter Beitrag: Tommy56
  U-blox Neo 6M GPS auslesen Matthias_Arduino 15 1.320 09.11.2016 16:40
Letzter Beitrag: AvrRobot

Gehe zu:


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