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
  Windmesser auslesen will noch nicht so recht klappen.. Stargazer 12 508 05.04.2018 10:54
Letzter Beitrag: amithlon
Star BME680 IAQ Wert auslesen Bitklopfer 9 1.086 18.03.2018 02:33
Letzter Beitrag: Wampo
  Hilfe beim skript Devtris 24 1.160 12.03.2018 18:19
Letzter Beitrag: Tommy56
  Hilfe beim Programmieren Klawino 28 1.362 10.03.2018 13:36
Letzter Beitrag: hotsystems
  Serial auslesen > 64 Byte uk1408 18 840 09.03.2018 16:05
Letzter Beitrag: Tommy56
Question Arduino Due nach dem 2. Start Fehlermelddung beim flashen juergen001 2 229 03.03.2018 09:07
Letzter Beitrag: juergen001
  Reset beim Arduino Franz54 6 337 03.03.2018 00:41
Letzter Beitrag: ardu_arne
  API auslesen von Coindesk! Gandalf 1 344 15.01.2018 15:34
Letzter Beitrag: Tommy56
  [Frage] Unterschied zwischen &=~ und ^= beim Bit ändern auf dem Port? avoid 13 895 11.01.2018 00:53
Letzter Beitrag: avoid
  Arduino zu MySQL via Wifi Fehler beim compilieren Franzel007 21 1.055 05.01.2018 20:24
Letzter Beitrag: Tommy56

Gehe zu:


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