Forum: Projekte & Code ds1820 - Eeprom id-Verwaltung mittels IR


von grundschüler (Gast)


Angehängte Dateien:

Lesenswert?

Die ds1820-IDs werden als 16bit-Wert im Eeprom gespeichert. Die 
Weiterverarbeitung der Messwerte erfolgt über die Eeprom-Speicherstelle, 
so dass die Id für die Verarbeitung nicht mehr benötigt wird.

Die Verwaltung der IDs im Eeprom geschieht über ein IR-Menu. Nach Aufruf 
des Eeprom Menus (Bild) können die Sensoren durch up/down und die 
Eeprom-Speicherstellen durch left/right angesprungen werden.

Mit FB-Green werden dann IDs gespeichert - mit FB-Red gelöscht.

Damit muss die ID im Programmcode nicht mehr eingegeben werden.

von Martin K. (maart)


Lesenswert?

Ok.

von grundschüler (Gast)


Angehängte Dateien:

Lesenswert?

neue Version:

bug bei mehr als drei Sensoren behoben
Anzeige der eeprom-Werte verbessert
Anzeige von Ir-FB-Werten erleichtert das Anpassen der Fernbedienung

von grundschüler (Gast)


Angehängte Dateien:

Lesenswert?

Auch wenn die Resonanz äußerst bescheiden ist, stell ich noch mal eine 
neue Version ein. Ich habe mich überzeugen lassen, dass ein Auslesen 
mittels match_rom vorzugswürdig ist - 
Beitrag "ds1820 Fragen". Also von search_rom 
auf match_rom umgestellt. Es müssen jetzt je sensor 2x64bit im rom und 
1x64bit im eeprom für die IDs gespeichert werden. Beim m328 aber sicher 
kein Problem.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

grundschüler schrieb:
> Auch wenn die Resonanz äußerst bescheiden ist

Das ist sie möglicherweise deswegen, weil kaum zu verstehen ist, welches 
Problem Du hier gelöst hast.

Wozu sollte man IDs von Temperaturfühlern mit einer IR-Fernbedienung 
"verwalten"?

Und warum können nicht neben dem Display (dem man sich zum angucken eh' 
nähern muss) einfach ein paar Taster angebracht sein, die das gleiche 
machen, wie die Tasten Deiner IR-Fernbedienung? Jetzt muss man, so wie 
ich Deine knappe Beschreibung verstehe, eigens eine Fernbedienung 
verwenden, wenn man sich vor das Display stellt ...


Ich will Dein Projekt nicht madig machen, versteh' mich nicht miss, aber 
mir ist schon beim ersten Durchlesen Deiner Beschreibung im Mai nicht 
klargeworden, wobei das helfen soll.

Wenn Du beschreiben würdest, wozu das ganze dient (etwas höhere Ebene 
als das "Verwalten von IDs"), könnte vielleicht der eine oder andere 
feststellen, daß Du genau sein Problem gelöst hast, oder aber ein 
interessantes Detail in Deinem Ansatz finden.

Beitrag #5070399 wurde von einem Moderator gelöscht.
von grundschüler (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Wozu sollte man IDs von Temperaturfühlern mit einer IR-Fernbedienung
> "verwalten"?



Danke für den Beitrag. Wenn du es nicht verstanden hast, liegt es an 
meiner Erklärung oder daran, dass ich ein Problem gelöst habe, dass gar 
keines ist.

Problemstellung:
Ich habe ein Programm für die MCU, welches z.B. 10Stück ds1820 nach 
bestimmten Zuordnungen auswerten soll. Ein Sensor mit eindeutiger ID 
misst zum Beispiel die Außentemperatur, ein anderer die 
Fußbodentemperatur im Wohnzimmer. Je nach Messergebnis wird irgendwas 
vom Programm geschaltet.

An irgendeiner Stelle muss dem Programm mitgeteilt werden, welche ID der 
Sensor für die Außentemperatur hat. Ich habe mir bisher immer die ID 
anzeigen lassen und den angezeigten Wert ins Programm geschrieben. Das 
ist schlecht, denn wenn z.B. ein Sensor getauscht werden muss, muss das 
Programm  geändert werden. Die IDs müssen also irgendwo abgespeichert 
werden. Der Zugriff auf die IDs muss als Zeiger über diese 
Speicherstelle erfolgen.

Das bedingt aber dann die Möglichkeit für den Anwender, die Zuordnung 
der Speicherstellen über das Programm zu ändern. Man braucht dazu ein 
Menu, über das die Sensoren-Hardware dem Speicher zugeordnet werden 
kann. Ob das Menu über Taster neben dem Display oder über eine 
IR-Tastatur bedient wird ist egal. Wenn ich ein entsprechendes Menu mit 
Tastern gefunden hätte, hätte ich mir die Arbeit mit der Fernbedienung 
nicht gemacht. Fernbedienung hat den Vorteil, dass ganz viele Tasten zur 
Verfügung stehen, mit denen man alles Mögliche machen kann und dass der 
Hardware-Aufwand in etwa dem Aufwand für den Einbau nur eines Tasters 
entspricht.

Wenn es ein vergleichbares Menu-System schon gibt - ich habe es nicht 
gefunden, aber auch nicht besonders danach gesucht - dann wäre 
Aufgabenstellung und Lösung sicher überflüssig.

von Rothhp (Gast)


Lesenswert?

Guten Tag,
nach der Suche nach einem Testgerät für DS18B20 Fühlern bin ich auf 
diesen Beitrag gestoßen. Bei Meiner Heizungssteuerung JBR-1 von 
Thematronic werden die Fühler ebenfalls nicht an der 64Bit Adresse 
unterschieden, sondern an einem für mich noch nicht nachvollziehbaren 
System.
Ich würde dieses Projekt gerne nachbauen um die Fühler auszulesen.
Gibt es dazu Schaltpläne und eine Stückliste? Welcher Compiler wurde 
verwendet? Ist der m328 ein Arduino m328 Uno?

Herzliche Grüße

Hp. Roth

von Falk B. (falk)


Lesenswert?

@ Rothhp (Gast)

>Ich würde dieses Projekt gerne nachbauen um die Fühler auszulesen.

Naja, ich kann ein anderes Projekt anbieten, welches diese Sensoren 
ausliest und alle internen Daten anzeigen kann. Es arbeitet mit einem 
Arduino deiner Wahl.

Beitrag "Re: Onewire + DS18x20 Library"

von Max G. (l0wside) Benutzerseite


Lesenswert?

Rothhp schrieb:
> Bei Meiner Heizungssteuerung JBR-1 von
> Thematronic werden die Fühler ebenfalls nicht an der 64Bit Adresse
> unterschieden, sondern an einem für mich noch nicht nachvollziehbaren
> System.

Der DS18B20 kann auch noch ein paar Nutzerdaten ins EEPROM schreiben, 
wenn auch nur zwei Bytes (Byte 2 und Byte 3, Datenblatt S. 7). Die kann 
man auch zur Identifizierung nehmen, wenn man das will.

von Karl K. (leluno)


Lesenswert?

Falk B. schrieb:
> Naja, ich kann ein anderes Projekt anbieten, welches diese Sensoren
> ausliest und alle internen Daten anzeigen kann.


Der Vorteil bei meinem Projekt ist halt, dass man mittels ir beliebig 
Positionen löschen oder umsortieren kann, ohne neu programmieren zu 
müssen. Wenn dein Projekt das auch kann, ist meines überflüssig. Ich hab 
mir deins natürlich auch angeschaut. Sowas habe ich nicht gefunden.

Rothhp schrieb:
> Gibt es dazu Schaltpläne und eine Stückliste? Welcher Compiler wurde
> verwendet? Ist der m328 ein Arduino m328 Uno?

Schaltpläne/Stückliste wäre hier oversized. Es braucht einen Uno, einen 
ca. 4k-Widerstand als pullup für die ds, einen ir-Empfängerbaustein, ein 
i2c-lcd.

Ich habe zwei unos, die miteinander kommunizieren. Der eine sitzt an der 
Heizung, steuert diese, misst temperaturen, Stromverbrauch, 
Wärmeerzeugung und und überträgt diese Daten an den Uno im Flur der das 
ganze graphisch aufbereitet und Schaltbefehle sammelt und weitergibt.

Ich stell den weiterverbesserten code am WE noch einmal in einem 
gestrafften Projektordner zusammen und stell ihn hier ein.

Compiler ist winAVR mit aktueller toolchain. Alles andere ist mir zu 
langsam. Du kannst den Code aber auch mit jedem anderen Compiler 
verwenden, da ich mich inzwischen um Einhaltung der c-Konventionen 
bemühe.

von Falk B. (falk)


Lesenswert?

@Karl K. (leluno)

>Der Vorteil bei meinem Projekt ist halt, dass man mittels ir beliebig
>Positionen löschen oder umsortieren kann, ohne neu programmieren zu
>müssen.

Das war gar nicht die Aufgabe.

"Ich würde dieses Projekt gerne nachbauen um die Fühler auszulesen."

von grundschüler (Gast)


Angehängte Dateien:

Lesenswert?

hier noch mal eine erheblich geänderte neue Version. IR läuft jetzt über 
Interrupt.

Bei Verwendung von D7 für den ds1820 und D2 für den ir-Empfänger müsste 
das Projekt auf Anhieb laufen. Angepasst werden müssen natürlich die 
Werte für die Tastenbelegung der FB in irint.h.

Benötigt werden
- fb_ok für Aufruf/Schließen des Menus
- fb_up/down zum Selektieren der Sensorposition im eep
- fb_left/right zum Selektieren des Sensors
- fb_raute zum löschen des selektierten eep-werts
- fb_stern zum speicher des selektierten Sensors an der selektierten 
eep-Stelle

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.