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

Re: Probleme beim DS2482-800 <-> DS18B20 Kategorie: I²C-Bus (von Jörg Hansen - 3.06.2009 23:16)
Als Antwort auf Probleme beim DS2482-800 <-> DS18B20 von Dirk - 3.06.2009 21:37
Ich nutze:
C-Control II Unit, eigenes Board, OSOPT V3.1
> Hallo miteinander,
>
> irgendwie soll es mit den Raumfühlern nicht so richtig klappen.
> Da ich die DS18B20 sternförmig in den jeweiligen Heizkreizverteiler verkabelt habe erhoffte ich mir
> über die 1W-Bridge-800 die Lösung meiner Probleme. Zunächst sah alles recht gut aus.
> An den seperaten 1W-Anschlüssen 0,1,2,6,7 waren bis heute je ein Temp.-Fühler angeschlossen.
> Hin und wieder lieferte einer, manchmal auch zwei Sensoren, den Wert -0,0625°C (�bertragung
> ausschlieÃ?lich von "1"en. Zumeist ein Zeichen, wenn die Abfrage der Sensoren zu schnell, also mit zuwenig
> Wartezeit versehen war => eher kein Problem.
>
> Heute wollte ich den nächsten Temp.-Fühler an einen der noch freien 1W-Anschlüsse 3,4 oder 5
> anschlie�en. Kein Weg führte zum Ziel. Zunächst vemutete ich der zusätzliche Fühler sei defekt.
> Konnte ich durch Anschlu� an Port 7 ausschlie�en. Hier lieferte er regelmä�ig reale Werte.
> Manchmal hat der zusätzl. Fühler an Port 4 funktioniert, aber nur dann wenn ich den Fühler an Port 6
> nicht mit der DS2482 verbunden hatte.
>
> Gibt es hier eine Art "Lastproblem"?
> Hat jemand eine DS2482-800 mit allen Anschlüssen beschalten erfolgreich in Betrieb?
>
> Ein Fehler am Baustein (DS2482-800) selber möchte ich fast ausschlie�en, da besagte Phänomene
> genau so bei einem zweiten Baustein auftreten (zwei Heizkreisverteiler im EFH).
> Beim Anschlu� eines Fühlers am 5 Port zeigt dieser lediglich die -0.0625°C an.
>
> Alle Temp.-Fühler werden mit 5V (OK, manchmal sind es nur 4,87V) "Speisung" betrieben
> => kein parasitärer Mode.
>
> Die Längen zu den Fühlern sind mitunter schon recht erheblich:
> Ltg.-Nr.       Länge in Meter
> 1                  11m
> 2                   4m
> 3                   6 / 10 / 22m
> 4                   9 / 14m
> 5                   5 / 12 / 23m
> 6                   12 / 21m
> 7                   13 / 22 / 26 / 32m
> 8                   8 / 9m
> 9                   12m
> 10                 22m
>
> Aber das sollte doch gerade bei dem "gemächlichen" 1W-Bus nicht das Problem sein. ODER?
>
> Vielen Dank für Eure sachdienlichen Hinweise.

Hallo Dirk,

betreibe auch den DS2482-800 mit z.Zt. 15 Sensoren (alle DS18B20).
Habe die Ports 0-4 in Verwendung mit bis zu 4 Senoren auf einem Port und ähnlich langen Leitungen.
(Port 5 und 6 sind noch frei, Port 7 benötige ich um Romcodes neuer Sensoren einzulesen und an-
schliessend im EEPROM abzulegen).

Alle Ports und Sensoren laufen bei mir ohne Probleme.
Ich betreibe die Sensoren ausschliesslich im parasitären Stromversorgungsmodus.

Folgende Punkte fallen mir als Fehlerquellen ein:
Hast Du jeweils einen 100 Ohm Widerstand zwischen IO-Port und Bus geschaltet?
Wie zuverlässig ist deine gemeinsame GND/ 0 Volt Verbindung ?
Wir konstant sind die +5 Volt (Restwelligkeit) ?
Welche Kabel verwendest Du ?
Ich benutze normale Telefonkabel, Sternvierer-verseilt.
Habe testweise 3 Sensoren aber auch schon über einen 100m Ring H03VV-F 3x0,75 ohne Probleme
betrieben.

Wichtig ist auch, dass Du ca. 800ms zwischen dem convertTemperatur Befehl zum Sensor
und dem Auslesen des Wertes wartest.
Anbei mein Quelltext zum Auslesen aller meiner Sensoren und Ausgabe auf HWCOM.
(habe jedoch das DS 2482 Modul selber für die 800er Version erweitert und benutze nicht die spätere
Version von Andre.  Die Funktionen haben dadurch eine etwas andere Namensgebung, sind aber
kompatibel)


//--------------------------------------------------
 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)
  wait oneWirecapture ==0;
  oneWirecapture =1;
  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 (kein Romcode) weiter mit nächstem Sensor
    ds2482800.setChannel (0,getrom[8]); // Kanalregister setzen 0-7
    ds2482800.resetDevices(0);
    ds2482800.matchROM(0,getrom);
    ds2482800.writeByte(0,0x44); //Convert Temperatur
    sleep 800; // diese Zeit braucht ein DS18B20 bis der Wert ausgelesen werden kann
    ds2482800.matchROM(0,getrom);
    ds2482800.writeByte(0,0xbe); //read scratchpad
    scratchpad=ds2482800.readByte(0) or ds2482800.readByte(0) shl 8;
    if debug //Ausgabe des Temperaturintegers
    {
    s="Scratchpad gelesen:";
    hwcom.send(s,19);
    wait hwcom.ready();
    s="";
    str.putint(s,scratchpad);
    hwcom.send(s,10);
    hwcom.ret();
    wait hwcom.ready();
    };
    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);
      };
  oneWirecapture =0;
};



GruÃ? und viel Erfolg
Jörg


    Antwort schreiben


Antworten:

Re: Probleme beim DS2482-800 <-> DS18B20 (von Dirk - 4.06.2009 9:32)
    Re: Probleme beim DS2482-800 <-> DS18B20 (von Dirk - 5.06.2009 7:30)
        Re: Probleme beim DS2482-800 <-> DS18B20 (von Jörg Hansen - 6.06.2009 21:12)
            Re: Probleme beim DS2482-800 <-> DS18B20 (von Dirk - 11.06.2009 14:50)
                Re: Probleme beim DS2482-800 <-> DS18B20 (von Dirk - 11.06.2009 19:01)
                    Re: Probleme beim DS2482-800 <-> DS18B20 (von Jörg Hansen - 12.06.2009 19:51)
                       Re: Probleme beim DS2482-800 <-> DS18B20 (von Dirk - 15.06.2009 16:21)