Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Hartwig, > > du musst die ROM-Codes aller DS1822 einmalig einlesen und als > Konstanten (oder Variablen) in deinen Routinen verwenden. > > Ich lege die ROM-Codes meiner Sensoren (DS18B20) in einem EEPROM ab. > Anbei die Quellcodes meiner Routinen (Interaktiv über hwcom ): > > Einlesen der Sensorcodes (immer nur 1 Sensor angeschlossen): > <code> > // Konstanten > const maxSensor = 15; //Anzahl der Tempartursensoren > const Sensorname[] ="Aussentemp. hinten", "Erdwaermetauscher", "Frischluft vor WRG", "Fortluft hinter WGR", > "Zuluft hinter WRG", "Abluft vor WRG", "Raumtemperatur EG", "Raumtemperatur OG", "Raumtemperatur DG", "Heizung Vorlauf", > "Heizung Ruecklauf", "Heizung Kesselwasser", "Aussentemp. vorne","Brauchwasserspeicher","Zirkulationsleitung"; > //---------------------------------------------------------------------------------------------- > function newDS18B20 () // Romcode einlesen, Sensor zuordnen und entsprechend im EEProm ablegen > //---------------------------------------------------------------------------------------------- > { > byte getrom[16]; > string s; > byte i,x,y; > for i = 0...15 getrom[i] = 0xff; // Werte initialiseren > > i=ds2482.getROM(0,getrom); > s= "Romcode gelesen: "; > hwcom.send(s,17); > wait hwcom.ready(); > s= ""; > for i= 0...6 > { > str.putint(s,getrom[i]); > str.putchar(s,44); > }; > str.putint(s,getrom[7]); > hwcom.send(s,30); > hwcom.ret(); > wait hwcom.ready(); > for i = 0...(maxSensor-1) // Ausgabe der Sensorenliste > { > s=" "; > str.putint(s,i); > s=s+" "; > s=s+Sensorname[i]; > hwcom.send(s,str.length(s)); > hwcom.ret(); > } > hwcom.ret(); > s= "Welchem Sensor zuordnen?00-32:"; > hwcom.send(s,30); > y=hwcom.input (1); > hwcom.ret(); > s="(S)peichern, (A)bbruch "; > hwcom.send(s,str.length(s)); > wait hwcom.rxd(); > x=hwcom.get(); > if x=='S' or x=='s' > { > if eeprom.writebytearray(0,(16*y),getrom,16) > { > s= "Ins EEProm geschrieben"; > hwcom.send(s,22); > hwcom.ret(); > } > else > { > s= "Fehler beim EEProm schreiben"; > hwcom.send(s,29); > hwcom.ret(); > return; > }; > }; > if x=='A' or x=='a' > { > s= "Nicht gespeichert"; > hwcom.send(s,17); > hwcom.ret(); > return; > }; > }; > </code> > > Auslesen der Sensoren: > <code> > //-------------------------------------------------- > function tempmessung() // Temperaturmessung manuell > //-------------------------------------------------- > { > string s; //für Textausgaben > int i; // für Schleifen > byte getrom[16]; // Speicherstellen für ROM-Codes > int scratchpad; // Zwischenspeicher für gelesenen Temperaturwert > float temp [16]; // Zwischenspeicher für Temperaturwerte (wie maxSensor) > > for i = 0...(maxSensor-1) > { > eeprom.readbytearray(0,(i*16),getrom,16); // ROMcode aus EEprom lesen > if debug > { > s=Sensorname[i]; > hwcom.send(s,str.length(s)); > hwcom.ret(); > wait hwcom.ready(); > }; > if getrom[1]== 0xff continue; // wenn erste Speicherstelle FF weiter mit nächstem Sensor > ds2482.resetDevices(0); > ds2482.matchROM(0,getrom); > ds2482.writeByte(0,0x44); //Convert Temperatur > sleep 800; // diese Zeit braucht ein DS18B20 bis der Wert ausgelesen werden kann > ds2482.matchROM(0,getrom); > ds2482.writeByte(0,0xbe); //read scratchpad > scratchpad=ds2482.readByte(0) or ds2482.readByte(0) shl 8; > if scratchpad and 0xF000 > temp[i]= (scratchpad) or 0xf000; > else > temp[i]= (scratchpad) ; > s=""; > str.putint(s,i); > if i<10 s=s+" "; > else s=s+" "; > s=s+Sensorname[i]; > s=s+" "; > str.putfloatf(s,(temp[i]*0.0625),1); > log(s); > }; > }; > </code> > > Gruß > Jörg