www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DS2482-800 I2C to 1-Wire Bridge


Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Hat jemand von euch schonmal mit diesem Chip gearbeitet? Speziell geht 
es mir darum 6x einen DS18S20 auszulesen.

- Kanal 0 wählen, wandlung starten
- aktivieren des SPU(Strong Pull Up)

- Kanal 1 wählen, wandlung starten
- aktivieren des SPU(Strong Pull Up)

.
. Warten, bis alle DS18S20er gewandelt haben (800ms)
.

- Kanal 0 wählen, SPU aus, daten auslesen
- Kanal 1 wählen, SPU aus, daten auslesen

geht das so? Ich meine speziell das Config Register ist dieses pro Kanal 
definierbar oder gilt dies für alle Kanäle gemeinsam? Im Datenblatt kann 
ich momentan nichts darüber finden. Evtl. bin ich auch zu Blöd.

Viele Grüße, Tubie

Autor: xxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne dieses ICs näher zu kennen, schlage ich vor, die Wandlung von Kanal 
1 erst zu starten, nachdem Kanal 0 mit der Wandlung fertig ist, da sonst 
alle 6 Kanäle gleichzeitig versorgt sein wollen.

Das IC ist ein 8-Kanal Multiplexer. Auf Seite 5 sehe ich nur ein 
Config-Register.
Und auf Seite 11 lese ich bei SelectRegister:
Restriction 1-Wire activity must have ended before the DS2482 can 
process this command.

Also: alles schön der Reihe nach, einer nach dem anderen.

Willst Du einen langen Bus betreiben? oder warum verwendest Du dieses 
IC?

6 OneWires an einem µC-Pin geht nämlich auch recht gut und kostet 
nichts.

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo xxx,

der I2C Bus wird eh schon in der Schaltung verwendet (RTC+EEProm) also 
kann ich hiermit sehr bequem und vor allem Timing unabhängig auf die 
1Wire's zugreifen.

Ich verwende pro Bus nur einen Sensor, da ich dann auf die ganze 
sucherei mit den ID's verzichten kann. Und wenn mal ein Sensor defekt 
ist, so kann ich ihn einfach austauschen und weiter machen. Da ich 
gerade noch 2 IO's am mega16 freihabe, kam mir der I2C auch recht 
gelegen für das 1Wire Zeugs.


gruß,
Tubie

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich werde die Sensoren jetzt über den Vdd Pin permanent mit 5V 
versorgen. Damit soll laut Datenblatt der Strong Pullup (SPU) entfallen. 
Dann kann ich alle Sensoren mit Tconvert starten und dann 800ms später 
die Ergebnisse nacheinander auslesen. Sollte etwas schneller gehen...

Gruß,
Tubie

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe neue erkenntnisse gesammelt...

der DS2482-800 lässt die ungenutzten Ports auf +5V stehen. Habe nun an 
den ersten 3 io Ports je einen Sensor DS18S20 angeschlossen und mußte 
feststellen, es geht!


Wenn der Port nicht gewählt ist, geht dieser auf +5V das entspricht ja 
dem Strong Pullup. Nach 800ms wird der Port wieder angewählt und die 
Messdaten liegen bereit.

Ich kann also bei meinen benötigten 6 Sensoren die Messung mit Convert t 
Starten, 800ms warten und alle 6 Ergebnisse nacheinander abholen. Und 
gleich wieder starten - freu !!!


Nur einen kleinen Haken gibt es an der Sache: Ich kann im Datenblatt 
keinen Hinweis darüber finden. Und so ganz wohl ist mir auch nicht bei 
der Sache. Es mag jetzt funktionieren und in 2 Jahren geht nix mehr.


Gruß,
Tubie

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tubie wrote:

> Wenn der Port nicht gewählt ist, geht dieser auf +5V das entspricht ja
> dem Strong Pullup. Nach 800ms wird der Port wieder angewählt und die
> Messdaten liegen bereit.

1-Wire liegt immer auf 5V wenn nichts los ist. Die Frage ist stets nur, 
wieviel Strom der Anschluss in diesem Zustand liefert.

Gemäss Datasheet ziehen 800-1675 Ohm nach oben.

Wenn man nun den schlimmsten Fall betrachtet:
- 1675 Ohm Pullup
- 1,5mA Sensorstrom bei parsitärer Versorgung
- Stromversorgung liefert 4,7V am DS2482 ab
Bleiben dem Sensor nur noch 2,2V, was definitiv zu wenig ist.

Wie gesagt, das ist der Extremfall. Meistens wird es funktionieren.

Zum Vergleich: Der Strong Pullup bricht bei 1,5mA nur um maximal 0,3V 
ein.

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas,

Danke für den Tip! Ich habe gleich mal mit dem Oszi gemessen. Ich messe
während der messphase an den Pins ca. 4V. Scheint also ok zu sein.


Gruß,
Tubie

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tubie wrote:

> Danke für den Tip! Ich habe gleich mal mit dem Oszi gemessen. Ich messe
> während der messphase an den Pins ca. 4V. Scheint also ok zu sein.

Sowas in der Region hatte ich erwartet. Ca. 1K Pullup und typ 1mA 
Sensorstrom => 1V weg. Wäre aber sicherer, wenn du diese Messung mal bei 
maximaler und minimaler Temperatur wiederholst.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tubie wrote:

> Nur einen kleinen Haken gibt es an der Sache: Ich kann im Datenblatt
> keinen Hinweis darüber finden.

Steht doch ganz klar drin.
Du mußt das SPU-Bit setzen und dann hast Du nen strong pullup.

Es steht auch nirgends drin, daß Du das nur bei einem machen kannst.
Du kannst also alle Wandlungen gleichzeitig machen.


Was kostet denn der Chip?

Alternativ könnte man auch nen ATtiny24 (1,59€) nehmen und den 
automatisch die Wandlungen machen lassen. Dann muß der Master nur noch 
die fertig gewandelten Temperaturen auslesen.


Peter

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das werde ich auf jeden Fall nochmal machen aber heute nicht mehr. Wenn 
alle Stricke reißen sollten, besteht immer noch die möglichkeit, den Vdd 
Pin fest auf +5V legen und dann sollte es laufen.

Die Platine ist leider schon fertig und ich habe keine freien 
Schraubklemmen mehr frei aber das soll wenn's wirklich so kommt nicht 
das Problem sein.

Danke nochmal!

Gruß,
Tubie

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

ich kann aber nicht erkennen, ob das Config. Reg. nur für den Aktiven 
Kanal wirksam ist und alle anderen im "Standby" bleiben oder ob jeder 
Kanal ein eigenes Config Register hat.

Der Chip kostet bei R....... 7,20€. Der wirklich große Vorteil, ich muß 
mich um fast nichts mehr kümmern und habe relativ wenig 
Programmieraufwand. I2C gibts ja im AVR gratis dazu.

Gruß,
Tubie

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andreas Kaiser
Habe den Fühler mal mit Schrumpfschlauch isoliert und ins Gefrierfach 
gelegt. Danach habe ich ihn in Kochendes Wasser gelegt am Pegel auf der 
1Wire Leitung hat sich nichts geändert (jedenfalls für mich nicht 
messbar). Ich behaupte, für meine Zwecke uneingeschränkt einsatzfähig, 
ich denke der Hersteller will/muß sich natürlich gegen solche Sachen 
absichern.



@all
Was ich aber dennoch nicht verstehe, laut Datenblatt haben die Fühler 
(DS18S20) eine Meßtoleranz von +-0,5°C im bereich zwischen -10°C und 
+85°C ich habe 4 Fühler auf dem Schreibtisch nebeneinander liegen. 3 
Stück zeigen Werte bis 0,15° gestreut und der 4. ist fast 1,2°C über den 
anderen 3en. Am StrongPullup kann es jedenfalls nicht liegen, denn der 
Wert ist auch so hoch, wenn ich die Fühler der Reihe nach mit SPU 
auslese.

gruß,
Tubie

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tubie wrote:
> gelegt. Danach habe ich ihn in Kochendes Wasser gelegt am Pegel auf der
...
> Stück zeigen Werte bis 0,15° gestreut und der 4. ist fast 1,2°C über den
> anderen 3en.

Ist das zufällig genau der, der im kochenden Wasser lag?

PVC-Gehäuse sind nicht wassserdicht und die Sensoren mögen das nicht, 
wenn Wasser eindringt.


Peter

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter Dannegger

die Temp Differenz habe ich schon vorher auf dem Schreibtisch gemessen. 
OK, sind zwar keine Laborbedingungen aber wenn die Teile im 10mm Abstand 
nebeneinander liegen und fast 10 min keiner im Raum war (reagieren auf 
Körperwärme), denke ich schon das die Ergebnisse einigermaßen Stimmen 
sollten.

Den Sensor mit der Abweichung habe ich aber dann für den min/max Test 
verwendet.

Wenn das Gehäuse nicht wasserdicht ist, würde es denn helfen, diesen bei 
ca. 100°C im Backofen wieder zu trocknen?

Gruß,
Tubie

Autor: Muhammad Farhan (Firma: Uni-duisburg) (fari01f)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello,
I have a Problem i m using MSP430F169 as i2c Master and Bridge
DS2482-100 as Slave and as 1-Wire master. After that I am using DS1923
temp Sensor. I am new in this embedded field thats why I just want to
know If I send Read ROM Command 0x33. How I could Read ths Uniquie  ID
of  iButton [02(MSB) 00 00 00 02 E1 93 41(LSB)]...I  dont know, how will
be I sure that I get this Uniquie ID.
tahnks

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.