Schönen guten Morgen, ich bin gerade am Grübeln wie ich eine Temperatursensornetzwerk Software mäßig aufbauen sollte. Wie aus dem Titel hervor geht möchte ich 1Wire Sensoren verwenden. Ich habe bereits mit Hilfe der Codesammlung und das Durchstöbern Vieler Foren Beiträge den 1wire Bus soweit in griff das ich mehrere Sensoren mitsamt Id auslesen kann. Nun zu meiner Frage wie wird in der Praxis vorgegangen um mehrere Sensoren zu Identifizieren? Wird nach jedem Einlesen die Id verglichen und so dem Standort zugeteilt? Oder wird beim einschalten eine Art Tabelle erstellt und dann anhand der Regenfolge mit der sich die Sensoren Melden gearbeitet? Oder Denke ich viel zu kompliziert und es gibt noch eine viel einfacheren und effektiveren Weg? Vielen Dank für Eure Hilfe Tom
Kleiner Nachtrag zum Schluss sollten ca. 30Sensoren am Bus Hängen! LG ToM
Hei, also ich hab auch mal nach einer Lösung gesucht. Da ich auch einzelne Sensoren austauschbar machen wollte, ohne etwas am Programm zu ändern habe ich folgendes gemacht: Jeder der Temperatursensoren hat ein E²prom mit zwei Byte (wenn ich mich recht erinnere) und da habe ich seine "Position" reingeschrieben. Der µC sucht nun alle Sensoren im Bus und speichert die ID in ein Array, dann liest er dessen Temperatur aus und speichert diese ebenfalls in ein Array und zwar an die Adresse, die im E²prom hinterlegt ist. Wird nun ein Sensor ausgetauscht, muss nur der µC neu gestartet werden, damit er den neuen Sensor mit ins Adressarray aufnimmt. https://www.youtube.com/watch?v=-4rBRaiAmNc Die Kette mit ca. 80 Sensoren habe ich per Peltierelement in Reihe gebracht. Dazu einen einzelnen Sensor unter einen Schwellwert abgekühlt und diesem dann seine Position in der Kette ins E²prom geschrieben... Die Sensoren werden dann natürlich wild durcheinander ausgelesen und nicht nach ihrer Position, aber das ist mir egal. Grüße, Tom
:
Bearbeitet durch User
Klingt recht interessant! Ich staune immer wieder was für gute Ideen hier im Forum eingestellt werden! LG ToM
switch-abfrage:
1 | |
2 | if(CelsiusTemp==849||CelsiusTemp==850||CelsiusTemp==851)//kein Messergebnis |
3 | {
|
4 | // lcd_int(CelsiusTemp); //char
|
5 | // lcd_goto(1,1);
|
6 | }else{ |
7 | switch ((id[1]<<8)+id[7])// nach crc-wert sortieren |
8 | {
|
9 | case (CRCsensor01):tr_lub =CelsiusTemp;break; |
10 | case (CRCsensor02):tr_rl =CelsiusTemp;break; |
11 | case (CRCsensor03):tr_nob =CelsiusTemp;break; |
12 | case (CRCsensor04):tr_wzl =CelsiusTemp;break; |
13 | case (CRCsensor05):tr_rlu =CelsiusTemp;break; |
14 | case (CRCsensor06):tr_erdrl =CelsiusTemp;break; |
15 | case (CRCsensor07):tr_nol =CelsiusTemp;break; |
16 | case (CRCsensor08):tr_vl1 =CelsiusTemp;break; |
17 | case (CRCsensor09):tr_erdvl =CelsiusTemp;break; |
18 | case (CRCsensor10):tr_wzb =CelsiusTemp; |
19 | error_tr_wzb=0; |
20 | break; |
21 | case (CRCsensor11):tr_leb =CelsiusTemp;break; |
22 | case (CRCsensor12):tr_vlu =CelsiusTemp;break; |
23 | case (CRCsensor13):tr_ww =CelsiusTemp; |
24 | error_tr_ww=0; |
25 | break; |
26 | case (CRCsensor14):tr_lul =CelsiusTemp;break; |
27 | case (CRCsensor15):tr_au =CelsiusTemp;break; |
28 | case (CRCsensor16):tr_lel =CelsiusTemp;break; |
29 | }
|
30 | }// if 850 |
31 | |
32 | //
|
Hei, ja, direkt versorgt. Bei 80 Stück in Reihe wollte ich kein Risiko eingehen und die parasitäre Versorgung brachte für mich keinen Vorteil. Grüße, Tom
Hotdog schrieb: > Kan dein Beispiel nicht verstehen! Mach dir nichts draus, das hat er selbst auch nicht. Sonst hätte er es anders gemacht.
Tom P. schrieb: > ja, direkt versorgt. Bei 80 Stück in Reihe wollte ich kein Risiko > eingehen und die parasitäre Versorgung brachte für mich keinen Vorteil. Kann ich verstehen! Hast Du es auch nie versucht? NUR so au Interesse Lg Tom
Ich habe mal gut 20 Stück an einem ca. 15m langen Kabel mit parasitärer Versorgung getestet: kein Problem. Beim Gegentest mit VCC meldeten dagegen einige Sensoren, dass sie parasitär versorgt werden.
Hei, nein, parasitäre Versorgung habe ich nie getestet. Nur den Pullup-Widerstand musste ich variieren. (oder hab einfach nach der Hälfte noch einen reingelötet. Weiß nicht mehr so genau.) Da ich bis an die 100°C messen möchte, ist die parasitäre Versorgung eh nicht angebracht. Was hast du mit Deiner Sensorkette vor? Grüße, Tom
Tom P. schrieb: > Was hast du mit Deiner Sensorkette vor? Ich möchte mit meiner Sensor Kette meine Heizung und Klimaanlage steuern!
Hotdog schrieb: > Grundschüler schrieb: >> switch-abfrage > > Kan dein Beispiel nicht verstehen! nach dem Programmteil, in dem die Temperatur ausgelesen wird, kommt die switch Abfrage. Jeder Sensor hat 8byte id. Zur eindeutigen Identifizierung reichen byte1 und byte7. Jeder Sensor erhält ein entsprechendes define: #define CRCsensor01 0x7f21//LuBoden #define CRCsensor02 0x7f8e//Rücklauf #define CRCsensor03 0x8f31//NoBoden #define CRCsensor04 0x3bb2//178 //WZ-Luft #define CRCsensor05 0x63fb//Ladepumpe mit switch schaut das programm, welcher sensor gerade ausgelesen wurde und weist der Temperaturvariable dieses Sensors die gerade gemessene Temperatur zu.
Wenn Du irgendwann einen Sensor austauschen musst, ist der Quellcode des Programms herauzusuchen. Dann muss er noch verstanden werden. Nun die entsprechenden Codebereiche anpassen, neu compilieren, Programmer suchen. Wie war noch die Anschlussbelegung meines Programmierinterfaces? Ach ja, steht ja in der Doku - wo ist die nur?... Nicht wirklich erstrebenswert.
Hei, ja so ist es. Bei einem Bastelobjekt mit wenigen Sensoren und keiner allzu langen Lebensdauer mag ein manuelles Ändern noch möglich sein. Aber bei mehr Sensoren verliert man ganz schnell den Überblick. (eigene Erfahrung ;-) ) Allerdings muss man bei meiner Methode eine Art Programmiergerät für den Sensor basteln, um ihm einmalig seine Position ins Hirn zu brennen... Da reicht aber schon ein einfacher Arduino+Widerstand. Grüße, Tom
Ich werde versuchen die Lösung von Tom (ID ins EEprom)zu verwirklichen. Ich werde das so machen das ich ich die neuen Sensoren im Webinterface Adressieren kann. Habe zwar das EEprom von den Sensoren noch nicht verwendet aber ich hoffe das es kein Hexenwerk ist.
hotdog schrieb: > Ich möchte mit meiner Sensor Kette meine Heizung und Klimaanlage > steuern! Anhand von 30 Sensoren??? Wohnst du im Buckingham Palace?
A. K. schrieb: > Anhand von 30 Sensoren??? Wohnst du im Buckingham Palace? Nein bald in einem kleinem Häuschen! Und ich neige zur Übertreibung. Mir wurde immer gelernt viel hilft viel ;-)
Habe noch eine Frage! Gibt es ein spezielles Kommando um das EEProm zu schreiben! Irgendwas mache ich falsch ich lese immer nur ff aus dem EEprom egal was ich vorher schreibe! LG TOM
Dieser Link aus Temperatursensor liefert Beispiele für alle DS18B20-Funktionen: http://siwawi.bauing.uni-kl.de/avr_projects/tempsensor/
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.