SHT25@I2C will nicht

Hallo zusammen,

ich hab da ein Problem, mit dem ich einfach nicht weiter komme. Mag sein, dass es daran liegt, dass ich ganz neu in der Materie bin, aber um Hilfe wäre ich dennoch sehr froh.

Also, ich habe mir einen SHT25 Temp/Feuchtigkeits-Sensor geleistet. Bezogen habe ich den auf einem Mini-Breakout montiert hier: http://www.misenso.com/product_p/002.htm

Da ich das Teil an meinem Arduino Mega 2560 betreiben möchte und dieses ja auf 5V läuft, habe ich mir noch einen Logic Level Converter geleistet, diesen hier: https://www.sparkfun.com/products/8745

Angeschlossen habe ich das ganze so, dass der Low Volt des LLC und der Sensor ihre VDD-Versorgung vom 3.3V-Pin des Arduino bekommen. Der High Volt des LLC bekommt seine Spannung vom 5V-Pin des Arduino. Die I2C-Leitungen (SDA und SLC) habe ich jeweils an den TX-Port des LLC gehängt, die entsprechende Leitung des Sensors ebenfalls an den jweils entsprechenden TX-Port auf der Low Power Seite. Ich hoffe, das ist soweit verständlich... :wink:

Mein Problem nun ist, dass es nicht tut :wink: Ich sehe mich mit dem selben Verhalten konfrontiert, wie es hier beschrieben ist: http://arduino.cc/forum/index.php/topic,92923.0.html. Die Kurzfassung ist, dass der Aufruf von Wire.available() immer 0 zurück gibt, nach dem ich Wire.requestFrom(eSHT2xAddress, 3) abgesetzt habe. Auch gibt der vorhergegangene Aufruf von Wire.endTransmission(); einen Wert von 2 zurück.

Hat vielleicht jemand eine Idee, was hier das Problem sein könnte? Ich wäre um jede Hilfe dankbar.

Greez,

dialsc

Hast Du auch die GND Pins verbunden?

Ja, ich hab beides versucht, mit und ohne. Irgendwo im Netz sah ich ein Bild von dem LLC im Einsatz, da waren die GNDs nicht verbuden, darum habe ich es dann auch mal so versucht. Geht aber beides nicht...

OK, dann teste doch erstmal den Level-Converter alleine. Schalte an auf Deinem Arduino einfach die entsprechenden PINs als Ausgang und schalte dann im Sekundentakt zwischen HIGH und LOW hin und her. (einfach das Blink-Beispiel erweitern). Du solltest dann an den 3.3V Ausgängen das Signal messen können.
Das Gleiche machst Du mit den Eingängen. Dort den Eingang auf der 3.3V jeweils gegen Masse schalten und auf den entsprechenden Arduino-Pins, die als Eingang mit aktivierten Pull-Up gesetzt sind, das Signal auslesen und auf dem seriellen Monitor ausgeben.

Somit kannst Du den Converter erstmal als Fehlerquelle ausschliessen. Außerdem lernst Du dabei auch gleich, wie man das Dingen richtig anschliesst :slight_smile:

Erst mal vielen Dank für den Tip. Werde es gerne versuchen, sobald ich dazu komme und mir sicher bin, dass ich verstanden habe, was du mir vorschlaegst... :wink:

Haettest du denn vielleicht noch eine andere Idee, wie ich dem problem naeher kommen koennte? Nur so, falls der LLC tut. Den habe ich naemlich schon gegen einen zweiten getauscht... :wink:

Ich glaube auch nicht, das der LLC kaputt ist, nur das Du ihn ggf. falsch anschliesst, oder zumindest unvollständig. Solange das nicht klar ist, wirst Du mit der Fehlersuche nicht wirklich weiter kommen.
Schau Dir mal folgendes Bild an: hast Du Deinen LLC so angeschlossen?

Hier noch das Bild für den Uno:

Jep, hab ich. Hab da mal einen kleinen Fritzing-Entwurf angehängt, welcher wieder gibt, was ich da genau gemacht habe. Ich hab in der Zwischenzeit auch Antwort von dem Verkäufer des Boards bekommen, welchen ich auch um Rat anfragte. Er teilte mir - nebst anderem - noch mit, dass da ein Fehler auf dem Breakout sei und bei der Beschriftung SDA und SCL vertauscht wurden und die Kabel daher getauscht werden sollen. Das hab ich auch getan, das Ergebnis ist aber nach wie vor das selbe.

Wenn das Schema auf der von Dir verlinkten Seite korrekt ist, dann sind die SDA und SCL Pins in der Mitte und Vcc/GND sind aussen. Könntest Du das auch mal versuchen?

Hi,

ich denke nicht, dass das Schema korrekt ist. Ich hab mir gerade die Leiterplatte nochmal genau angeschaut und entsprechend der Bahnen bezüglich des Kondensators und der Widerstände müsste die Bezeichnung der Pins schon stimmen. Irgendwie beginne ich zu denken, dass der Sensor einen Defekt hat.

Gehe ich recht in der Annahme, dass es schwierig ist, das zu verifizieren?

In deinem Schaltplan fehlen die Pullup Widerstände (4,7k bis 10k) für SDA und SCL.
evtl. Verläuft die Kommunikation nicht sauber....

Gruß derRobert

Hallo derRobert,

danke für den Hinweis aber ne du, die sind auf dem kleinen Breakout schon drauf, auf welchem der Sensor montiert ist.

Das wäre dann auf der 3,3V Seite.
versuche es mal mit zusätzlichen PullUp's auf der 5V Seite.

Wenn ich den Schaltplan richtig verstehe ist die TX Leitung des Levelconverters nur Unidirectional. Aber eine I2C Leitung ist doch Bidirectional oder????

Ich bin mir nicht sicher. Aber Logisch erscheint mir das nicht.
Gruß derRobert

Wenn ich den Schaltplan richtig verstehe ist die TX Leitung des Levelconverters nur Unidirectional. Aber eine I2C Leitung ist doch Bidirectional oder????

Nein, die TX-Leitung ist bidirektional, die RX-Leitung ist nur unidirektional. Die interne Diode des MOSFETs macht die eine Richtung, die andere über den durchgeschalteten Transistor (jeweils auf den LOW-Status bezogen, der HIGH-Status sperrt einfach am Transistor und die Pull-ups kommen zum Zug.

Hallo zusammen,

was nun kommt, wird euch hoffentlich nicht auf die Palme bringen... :wink: Ich konnte das Problem lösen. Nachdem ich die Schaltung komplett zerlegt und nochmal neu aufgebaut habe, konnte ich durch trial n error in Erfahrung bringen, dass eines der verwendeten Kabel wohl einen Schaden hatte. Nun tut es so, wie erhofft.

Habt besten Dank für eure tolle Unterstützung!

Greez,

dialsc