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, > > > > > ich möchte den Temp- Feuchtesensor SHT15 an mein RB anschließen (DTA mit 10k PullUp an VCC). > > > > > Mit ca 30cm Leitungslänge funktioniert das auch (auch ohne 10K PullUp), bei 3m (mit CAT-Kabel) nicht. > > > > > Was muß ich machen, damit der Sensor auch mit langen Leitungen angeschlossen > > > > > werden kann? Hat jemand Erfahrung damit? > > > > > > > > > > > > > Hallo, > > > > > > > > mich würde die mögliche Leitungslänge bei SHT Sensoren auch sehr interessieren. > > > > Bei mir müssten es ca. 20m sein. > > > > Als Leitung steht ein grünes geschirmtes Kabel J-Y(St)Y (2x2x0,8) zur Verfügung > > > > (bekannt als EIB-Bus Leitung). > > > > Pull-Up Widerstand (10K) gegen Vdd und Kondensator gegen GND ist auch vorhanden. > > > > > > > > Danke für Hinweise ! > > > > > > > > Markus > > > > > > Hallo ihr beiden, > > > > > > wie wollt Ihr den SHT15 an das RB anschliessen? Die SHTx Serie spricht zwar ein serielles Protokoll, > > > aber kein I2C. Wenn via I2C, mit PCF8574(P), kann ich einen Schaltplan liefern, dazu gibt es im Forum, > > > unter Module & Funtionen eine sht.zip. > > > Mit ca. 20m Kabellänge Cat5-Kabel habe 3 x SHT75 verkabelt, läuft seit einem Jahr problemlos. > > > mfg Ralf > > > > Hallo Ralf, > > > > in meinem Fall wird ein SHT Sensor an die C-Control II Station an zwei digital Ports angeschlossen. > > Sollten es mehr als ein oder zwei SHT's werden ist die Lösung über den I2C Bus port expander > > schon besser. Dann werde ich auf Dich zurückkommen. > > Aber die sht.zip im Forum unter Module beinhaltet nur die Lösung mit den digitalen Ports !? > > Ein sht.c2 mit der Anpassung über den PCF8574 hab ich unter Module und Funktionen nicht gefunden. > > > > Danke, > > Markus > > > Hallo Markus, > sorry mein Fehler. Hier das Modul für SHTx am PCF8574. > <code> > // Modul 1: shtpcf.c2 > > /******************************************************************/ > /* Treiberbibliothek fuer Sensirion SHT Feuchtesensoren(12/14Bit) */ > /* Autor : André Helbig (andre.h@cc2net.de) */ > /* Vorlage : André Helbig (andre.h@cc2net.de) */ > /* Version : 1.0 */ > /* Datum : 20. Juli 2003 */ > /* Getestet : ja */ > /* Benötigt : ports.c2, system.c2, math.c2, mathx.c2 */ > /* Bemerkung : Messung nur im hi-res.Mode(12Bit RH / 14Bit Temp.) */ > /* modified : krassos > -angepasst auf sht an pcf8574 > -diverse Zeilenkommentare > - Taupunktberechnung eingefügt > > /******************************************************************/ > byte Clock,Data,err,Adr; > /*************************************/ > /* Schnittstelle initialisieren !!!geändert!!!*/ > /*************************************/ > function init(byte adr, byte clock, byte data) > {byte i; > Clock=clock%16; //modulo kann ggf wegfallen > Data=data%16; > Adr=adr%16; > pcf.set(adr,Clock,0); //clockport auf 0 setzen > pcf.on(adr, Data); // dataport als eingang schalten (high) > for i = 0 ... 9 pcf.pulse(adr, Clock); //10 Pulse ausgeben > } > > /*************************************/ > /* Datenport festlegen !!!!geändert !!!!*/ > /*************************************/ > function setDataPort(byte adr, byte data) > {byte i; > pcf.on(adr, data); > Data=data%16; > } > > /*************************************/ > /* Startbedingung senden !!!geändert!!!! */ > /*************************************/ > function start() > { > pcf.set(Adr,Clock,1); > pcf.set(Adr,Data,0); > pcf.set(Adr,Clock,0); > pcf.set(Adr,Clock,1); > pcf.on(Adr,Data); > pcf.set(Adr,Clock,0); > } > > /*************************************/ > /* Byte senden !!!geändert!!!! */ > /*************************************/ > function Write(byte data) returns int > {int i; > for i=0 ... 7 > { > if (data shl i) and 0x80 pcf.on(Adr,Data);else pcf.set(Adr,Data,0); > pcf.pulse(Adr,Clock); > } > pcf.on(Adr,Data); > pcf.set(Adr,Clock,1); > i=not(pcf.get(Adr,Data)); //ack vom sensor > pcf.set(Adr,Clock,0); > return i; > } > > /*************************************/ > /* Byte empfangen !!!geändert!!!! */ > /*************************************/ > function Readbyte(int ack) returns byte > {byte data,i; > data=0; > for i=0 ... 7 > { > pcf.set(Adr,Clock,1); > data=(data shl 1) or pcf.get(Adr,Data) and 1; > pcf.set(Adr,Clock,0); > } > if ack pcf.set(Adr,Data,0); else pcf.on(Adr,Data); > pcf.pulse(Adr,Clock); > pcf.on(Adr,Data); > return data; > } > > //------------------------------------ > function round(float wert) returns int > //------------------------------------ > // Kaufmännische Rundungsfunktion, float zu int > { > float ganz, rest, neu; > int ergeb; > > ganz = math.floor(wert); > rest = wert - ganz; > if rest >= 0.5 neu = ganz + 1; > else neu = ganz; > ergeb = neu; > return ergeb; > } > > > > /*************************************/ > /* Integer lesen */ > /* wartet auf Bereitschaft (Data=Low)*/ > /* (timeout 1sek.=Rückgabe 0xF000) */ > /*************************************/ > function Readint(int ack) returns int > {long timer;int data; > timer=system.timer(); > loop > { > if pcf.get(Adr,Data)==0 break; > if system.timer()-timer>=1000 return 0xF000; > yield; > } > data=Readbyte(1); //High-Byte > data=(data shl 8) or Readbyte(0);//Low-Byte > return data; > } > > /*************************************/ > /* Statusregister schreiben */ > /*************************************/ > function setRegister(byte reg) returns int > { > start(); > Write(0b00110); > return Write(reg); > } > > /*************************************/ > /* Statusregister lesen */ > /*************************************/ > function getRegister() returns byte > { > start(); > Write(0b00111); > return Readbyte(0); > } > > /*************************************/ > /* Software Reset */ > /*************************************/ > function Reset() returns int > { > start(); > err=Write(0b11110); //errorbitauswertung > return err; > } > > /*************************************/ > /* Heizung schalten */ > /*************************************/ > function setHeater(int state) returns int > {byte reg; > reg=getRegister(); > reg=(reg and 0xFB) or (state!=0 and 0x4); > return setRegister(reg); > } > > /*************************************/ > /* Temperatur auslesen */ > /* Format: 0,00 */ > /*************************************/ > function getTemp() returns int > {int temp; > start(); > Write(0b00011); > return Readint(0)-4000; > } > > /*************************************/ > /* Feuchtigkeit auslesen */ > /* Format: 0,00 (temp & hyg) */ > /*************************************/ > function getHyg(int temp) returns int > {int hyg; > long SOrh,RHlin; > start(); > Write(0b00101); > hyg=Readint(0); > if hyg and 0x8000 return -1; > SOrh=hyg; > RHlin=((405*SOrh - 40000)*250 + ((-7)*SOrh*SOrh))/25; > hyg=(((temp-2500)*(1000+8*SOrh)/100)+RHlin)/1000; > return hyg; > } > > > /* Taupunktberechnung by krassos*/ > /* t = Temperatur im Format wie von getHyg() übergeben */ > /* h = wie von getHyg() übergeben */ > /* Rückgabewert Format 0,0 */ > function dew(int t, int h) returns int > { > float logEx,dew_point,t1,h1; > t1=t/100; > h1=h/100; > if h1 == 0 h1=0.01; > logEx=0.66077+7.5*t1/(237.3+t1)+(math.log(h1)-2) ; > dew_point = (logEx - 0.66077)*237.3/(0.66077+7.5-logEx) ; > //dew_point = logEx; > return round(dew_point*10); > } > </code>
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB