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
  API auslesen von Coindesk! Gandalf 1 232 15.01.2018 15:34
Letzter Beitrag: Tommy56
  [Frage] Unterschied zwischen &=~ und ^= beim Bit ändern auf dem Port? avoid 13 741 11.01.2018 00:53
Letzter Beitrag: avoid
Star BME680 IAQ Wert auslesen Bitklopfer 7 494 08.01.2018 11:48
Letzter Beitrag: Bitklopfer
  Arduino zu MySQL via Wifi Fehler beim compilieren Franzel007 21 857 05.01.2018 20:24
Letzter Beitrag: Tommy56
  Kleiner Denkanstoß - Auslesen eines KY-040 Encoders Stargazer 26 1.144 20.12.2017 16:13
Letzter Beitrag: Stargazer
  Arduino Uno - einen digitalen Pin mit nodeMCU 12E auslesen Stargazer 6 346 17.12.2017 17:40
Letzter Beitrag: hotsystems
  Fehlermeldung beim Compilieren DonCamillo 1 325 16.12.2017 21:04
Letzter Beitrag: Chopp
  Neuling Fehler beim Kompilieren guenni71 6 558 26.11.2017 16:48
Letzter Beitrag: hotsystems
  Fehlermeldung beim Kompilieren Arduino/Genuino Uno Otto 12 1.027 21.11.2017 20:30
Letzter Beitrag: Tommy56
Question Problem beim seriellen Einlesen von RFID-Reader Bezel 5 509 05.11.2017 22:37
Letzter Beitrag: Tommy56

Gehe zu:


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