SHT75 liest komische Werte

OP #339810
Lesenswert?

Hi,

ich habe betreibe hier an einem Atmega16 (1 Mhz) einen SHT75. Die
Kommunikation scheint zu funktionieren, ich habe zum großen Teil den
C-Code von Sensirion benutzt und ihn modifizert (für Keil geschrieben,
ich nutze gcc).

Nun bekomme ich bei meinen Messungen irgendwie seltsame werte, die sich
(je nach Erwärmung) auch ändern, allerdings nur in regelmäßigen
Schritten - ich habe hier im Forum auch schon einen ähnlichen Beitrag
dazu gelesen, allerdings hat mir der nicht weitergeholfen.

Lt. datenblatt wird der messwert (die ersten 14 Bit) folgendermaßen
berechnet:

Messwert * 0,01 - 40 = Temperatur

Messwert [errechnete Temperatur]
- 0xE2FF [49,59] (Zimmertemperatur)
- 0xE37F [50,87] (leicht erwärmt)
- 0xE3BF [51,51] (leicht erwärmt)
- 0xE4FF [54,71] (mit Fön erwärmt)
- 0xE4BF [54,07] (mit Fön erwärmt)

Die Werte unterscheiden sich immer genau in Vielfachen von 0,64...

Kann sich das jemand erklären? Habe ich irgendetwas übersehen? Wäre
nett wenn mal jemand einen Blick auf den Code werfen könnte.

Gruß und Danke,

Andreas
Angehängte Dateien:
Gast #339812
Lesenswert?

Ein Ausrufezeichen zu viel...
In sht_measure(...) steht:
  while(!SHT_DATA_IN){
     asm volatile ("nop");
  }
Im Datenblatt aber:
Measurement is finished when the SHTxx pulls down the DATA line.

Vermutlich liest du dadurch schon aus, wenn der SHT den ACK vom
Wandelbefehl ausgibt.

Ich habe diesen Democode auch mal angepasst. Das ist eine der wenigen
Stellen, die bei mir deutlich anders sind. Ausserdem hast du ein paar
sehr lange Delays drin, aber ich nehme an nur zu Testzwecken.

Gruß Uwe

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren