Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

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
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB