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
  Kleiner Denkanstoß - Auslesen eines KY-040 Encoders Stargazer 12 189 08.12.2017 22:41
Letzter Beitrag: hotsystems
  Neuling Fehler beim Kompilieren guenni71 6 225 26.11.2017 16:48
Letzter Beitrag: hotsystems
  Fehlermeldung beim Kompilieren Arduino/Genuino Uno Otto 12 515 21.11.2017 20:30
Letzter Beitrag: Tommy56
Question Problem beim seriellen Einlesen von RFID-Reader Bezel 5 300 05.11.2017 22:37
Letzter Beitrag: Tommy56
  Ablaufstruktur beim arbeiten mit Sensorwerten? Jan_OL 22 1.102 02.11.2017 00:08
Letzter Beitrag: georg01
  MPU6050 / GY521 auslesen und verstehen Hitikatus 3 509 30.09.2017 11:48
Letzter Beitrag: Hitikatus
  Fortschritte beim 3-flammigen Gasgrill - nun wieder Pause MOE. 17 934 14.09.2017 11:24
Letzter Beitrag: Bitklopfer
  Anzahl der DS18B20 ermitteln AlphaRay 3 500 02.08.2017 09:13
Letzter Beitrag: Fips
  DS18B20 Pool-Thermometer mit 7Seg.-Anzeige Evilgnievel 19 1.312 23.06.2017 09:27
Letzter Beitrag: Tommy56
  Datenlogger mit DS18B20 lcd und sd Kart FreDicnc 7 587 15.06.2017 09:48
Letzter Beitrag: hotsystems

Gehe zu:


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