DS18B20

Hi und viele Grüße an Euch (erster Auftritt meinerseits),

Frage : Wie bekomme ich die DeviceAddress von sensors.getTempCByIndex(0) heraus ?
oder sensors.getTempCByIndex(X) ?

Bei einem Ausfall eines Sensors und Auswechslung ändert sich die Adresse und somit weiß ich nicht mehr welcher Sensor den Platz getauscht hat.

Gibt es eine Lösung ?

Mit freundlichen Grüßen
udo45

Gibt es eine Lösung ?

Ja, speichere die Adressen der Sensoren und verwende nicht den Index, sondern die Adresse für die Abfrage.

Hallo,

die Dallas Lib zeigt dir in den Bsp. die Adresse(n) an.

Danke, aber ..

ich will meinen arduino "Fest" vebauen und bei einem Ausfall eines DS18B20 kann ich zwar den Ds tauschen, aber in meinem Sketch ist die "alte" Adresse einen DS zugeordnet. Bei einem Tausch wird sich die Reihenfolge des Index ändern und somit weiß ich nicht mehr welcher DS(Index) welcher ist. Alles klar ?

Bei einem Tausch muss ich den arduino ausbauen und die Adresse auslesen (kein problem) und dem Programm neu zu ordnen.
Das könnte ich mir bei einer Index-Verarbeitung sparen. Der arduino wird extern von einem PC/Raspi abgefragt und ferngesteuert.

Ich hatte gehoft ... address_x = sensor[0 ..x].address;

Wenn nicht muss ich jeden DS eine eigene Pin zuordnen.

Mit freundlichen Grüßen von der Hausautomationsfront.

ich will meinen arduino "Fest" vebauen und bei einem Ausfall eines DS18B20 kann ich zwar den Ds tauschen, aber in meinem Sketch ist die "alte" Adresse einen DS zugeordnet. Bei einem Tausch wird sich die Reihenfolge des Index ändern und somit weiß ich nicht mehr welcher DS(Index) welcher ist. Alles klar ?

Der DS18B20 wird nicht häufiger ausfallen als der Arduino :-).

Bei einem Tausch muss ich den arduino ausbauen und die Adresse auslesen (kein problem) und dem Programm neu zu ordnen.

Du kannst die Adressen ja im EEPROM speichern und beim Starten des Sketches die Liste auslesen, mit dem EEPROM vergleichen und bei Bedarf die geänderte Adresse wieder im EEPROM speichern. Das bedingt natürlich, dass Du nicht mehr als einen Sensor pro Start wechselst. Im Katastrophenfall, wenn also alle Sensor auf's einmal ausfallen, musst Du wohl oder übel den Arduino neu flashen.

Das könnte ich mir bei einer Index-Verarbeitung sparen. Der arduino wird extern von einem PC/Raspi abgefragt und ferngesteuert.

Alternativ könntest Du die Adressen auch auf dem Raspi speichern und vom Arduino die Werte zusammen mit der Adresse schicken.

Hi

Der DS18B20 bietet auch zwei User-Byte Platz . dort könnte man eine Art ID rein packen.
Der Sketch sucht dann, wie zuvor, 'den Nächsten', liest Dessen Temperatur und Dessen User-Byter und weiß daraus, welches Sensor Temperatur gerade vorliegt.

Man könnte die Sensoren auch einzeln anstecken und den Arduino so die einzelnen Sensoren erlernen lassen.
Das, bis zur Anzahl der verbauten Sensoren - Diese muß dem Arduino halt vorher bekannt sein.

Wenn jetzt ein Sensor ausfällt, wird Dieser nicht mehr gefunden - wenn statt Dessen ein Neuer gefunden wird, kann man die alte, nicht mehr gefundene ID, überschreiben.
Ist genau der Weg, Den pylon beschrieben hat.

Oder eben statt der EEprom-Schreiberei dem neuen DS18B20 die User-Byte-Daten des ausgefallenen Sensor aneignen.
(User-Bytes müssten identisch mit den Alarm-Temperaturen sein - geht also nur, wenn man diese Funktionalität nicht braucht - hier kann man mit Alarm-Search speziell nur Sensoren finden, Die im Akarm sind)

MfG

MfG

Hallo,

Idee.
Eine Funktion schreiben die dir immer den Bus scannt und alle Adressen die gefunden werden auflistet. Kann man aus den Lib Bsp. entnehmen. Danach durch Auswahl schreibt die Funktion die gewünschte Adresse an die gewünschte Stelle ins EEprom. Damit können so viele ausfallen wie wollen, du weißt welchen du gerade gewechselst hast oder neu dazu gekommen ist und legst die Nummer im EEprom fest. Dein eigentliches Programm liest dann alle nach der Reihenfolge wieder aus. Die extra Funktion kannste per Tastendruck oder Befehl aufrufen. Übernahme nach verlassen der Funktion oder Arduino Reset oder sofort nach Änderung oder wie auch immer.
Das wäre die Luxusvariante.

Wobei ich auch sagen muss, dass ein Ausfall unwahrscheinlich ist. Meine Dallas sind komplett im Außenbereich seit über 3 Jahren allen Temperaturen ausgesetzt. Von Frost bis knapp über 100°C im Auto am Motor Kühlwasser. Alles kein Problem. Sind welche in Metallhülse gekappselt.

Hi, vielen Dank für die Input's und Gedankengänge.
Ich werde die Adressenzuweisung extern vergeben und kann dann den Sensor irgenwo auslesen um die ermittelte DeviceAddress per Serial in meinen Sketch zu verarbeiten. Die DS sollen meine Heizungstemperaturen auslesen (Vorlauf, Rücklauf) und mein eigentliches PC-Programm wird dann darauf reagieren.
Nochmals vielen Dank aun rauchende Köpfe.

Udo45