Forum: Mikrocontroller und Digitale Elektronik Hygrosens TEMOD-I2C an STM32


von Eduard (Gast)


Lesenswert?

Hi

ich habe hier ein kleines Problem beim Ansprechen eines Hygrosens 
Temperaturmodul mit I2C Schnittstelle.

Der Temperatursensor sendet kein ACK-Signal an den Master, egal auf 
welcher Adresse ich versuche ihn anzusprechen. Habe schon die in der 
Dokumentation angegebene Adresse 0x78 probiert, ausserdem habe ich 0xA0 
und 0xFO versucht, aber auf keiner Adresse antwortet der 
Temperatursensor.

Der Temperatursensor läuft mit einem 10V Netzteil an VDD und Ground und 
die Leitungen SCL und SDA sind korrekt an den I2C Bus angeschlossen.

Woran könnte es liegen dass ich kein ACK Signal erhalte.

Mfg

Eduard

Hier ist das Datenblatt:

http://shop.hygrosens.com/out/media/i2c_temperaturmodul_dbd.pdf

von Lutz (Gast)


Lesenswert?

Sag mal, wie soll denn irgendwer außer dir mit diesen Informationen 
etwas anfangen können???

Ohne Beschaltung und Code wird das wohl nix!

von Sven Wagner (Gast)


Lesenswert?

Eduard schrieb:
> 0x78
Probier mal 0x3C als Adresse.

Zum Checken ob was am Bus hängt, habe ich eine Standardprozedur: Die 
geht alle Adressen einmal durch und gibt diejenigen aus, bei denen ein 
ACK zurückkomt.

Schau Dir mal mit einem Oszilloskop die SCL und die SDA-Leitung an, ob 
bei Deinem Code überhaupt was passiert.

Grüße
Sven

von Eduard O. (Gast)


Lesenswert?

Sorry für die schwammige Beschreibung meiner Frage.

Also am Code kann es nicht liegen, da ich den STM32 I2C Example Code 
nehme, der auch wunderbar funktioniert. Habe 2 STM32 Boards 
zusammengeschalten und auf einem Board den Mastercode laufen lassen und 
auf dem anderen den Slavecode. Lief alles wunderbar, am Oszi hat man 
auch schön die Startcondition gesehen, dann die Adresse und die Daten 
die gesendet wurden.

Dann habe ich im Code lediglich die Slave Adresse geändert um nun mit 
dem Temperatursensor zu kommunizieren. Auf dem Oszi sieht man die 
Startcondition gefolgt von der Adresse und ab dem Zeitpunkt an dem der 
Slave (in dem Fall der Temperatursensor) ein Ack senden sollte passiert 
gar nichts mehr, SDA ist auf High und SCL Low.

Habe hier im Forum schon öfters gelesen, dass dieser Temperatursensor 
mit der Adresse 0xF0 angesprochen werden soll, im Datenblatt steht als 
Standardadresse 0x78 und in der Serial Digital Interface Beschreibung 
von Hygrosens steht, die Adresse sei 0xA0.

Nun weiß ich nicht welche Adresse ich ausser den drei vorher genannten 
probieren soll, da der Temperatursensor auf allen drei Adressen nicht 
antwortet. Ist es eventuell möglich dass der Temperatursensor den Geist 
aufgegeben hat? Der Analogausgang funktioniert einwandfrei, nur eben 
über I2C hat er noch nie geantwortet.

Sven wie kommst du auf die Adresse 0x3C? Werde morgen mal probieren ob 
diese Adresse funktioniert.

Danke schonmal für euere Antworten.

Mfg

Eduard


Hier ist die Serial Digital Interface Beschreibung:

http://www.mikrocontroller.net/attachment/127539/501994_Serial_Digital_Interface.pdf

von spess53 (Gast)


Lesenswert?

Hi

>Habe hier im Forum schon öfters gelesen, dass dieser Temperatursensor
>mit der Adresse 0xF0 angesprochen werden soll, im Datenblatt steht als
>Standardadresse 0x78 und in der Serial Digital Interface Beschreibung
>von Hygrosens steht, die Adresse sei 0xA0.

Die Angabe der Adresse ist leider nicht einheitlich. Manchmal wird der 
Wert der Bits 7...1 (ohne R/W-Bit), manch mal die Adresse mit R/W-Bit 
Null angegeben. Daraus ergeben sich unterschiedliche Werte:

           |-$78-|
           |     |
         0b11110000
           |--$F0-|

MfG Spess

von Lutz (Gast)


Lesenswert?

Warum hast du nicht gleich mit diesen Infos rausgerückt?

In der Tat ist die Kommunikation mit Hygrosensmodulen nicht so 
selbsterklärend, weil die Doku echt bescheiden ist. Ich habe schon 
länger mehr in keine STM-Lib reingeschaut, aber es müßte in den 
Beispielen ja erkennbar sein, ob die dort "intern" mit 7 oder 8 bit 
adressen arbeiten.

Ich tippe auch auf 0xF0 statt 0xA0.

Sollte das nicht klappen, veilleicht noch einmal das Timing von Lib und 
Chip durchgehen und vergleichen.

von Eduard O. (Gast)


Lesenswert?

Das doofe ist, egal ob ich 0xA0, 0x78 oder 0xF0 nehme, der Sensor 
leifert einfach kein ACK. Fühlt sich also nicht angesprochen das Teil.

Hab leider nicht früher raus rücken können mit den Infos, weil ich im 
Labor war und mich auf den Weg nach hause machen musste. Sowas kommt 
nicht mehr vor dass die Infos zu dürftig sind ;)

Also ich frage mich echt wie die von Hygrosens auf diese A0 kommen, wäre 
auch eher auf die F0 gekommen, da die Rechnung ja plausibel erscheint.

An den Timings habe ich nichts geändert, muss mal abgleichen ob da vllt 
irgendwas falsch getimed wird am STM32, wüsste aber jetzt auf Anhieb 
nicht wie ich aus den C oder H Dateien das Timing ablesen könnte.

Ausserdem ist mir noch nicht ganz schlüssig was es mit diesen Commands 
auf sich hat die man senden kann (evtl sogar muss?) um an die Messdaten 
ranzukommen. Aber ohne Ack Signal brauche ich mich vorerst nicht um die 
Commands kümmern.

Hat denn bisher keiner hier im Forum den Temperatursensor zum laufen 
bekommen? Würde mich echt interessieren wie das nun richtig geht.

Es wäre echt genial wenn sich einer hier melden könnte der das ganze 
Problem schon hinter sich und gelöst hat.


Mfg

Eduard

von DisM (Gast)


Lesenswert?

Hallo,

mich würd interessieren ob der Analog Ausgang deines Moduls 
funktioniert, also die korrekte Spannung ausgegeben wird.
Meine Module sind indes schrottreif.
(da ein Reset nicht zu greifen scheint; das Modul nicht ohne Sensor 
betreiben bzw. Sensor nicht im Betrieb abziehen!)

Wir verwenden demnächst eine AD Karte und Messumformer der Firma LKM 
Electronics.
http://www.lkmelectronic.de/deutsch/produkte/kopfmontage.html

Gruß
DisM

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.