Forum: Mikrocontroller und Digitale Elektronik HIH6130 liefert als Ausgabe immer 0x28 ?


von Heinrich (Gast)


Lesenswert?

Hallo,

ich steuer mit meinem ATmega1284p einen HIH6130 an.

Ich bekomm allerdings für HumidityH, HumidityL, TempH und TempL immer 
den Wert 40 zurück oder hexadezimal 0x28. Die I2C Adresse ist 0x27.

Angesteuert wird er wie in den appnotes beschrieben mit i2c_readAck und 
für das letzte Byte (TempL) mit i2c_readNack der P Fleury Library.

Sind die Werte normal oder ist das eher die I2C Adresse, die da zurück 
kommt?


Gruß Heinrich

von Gugo (Gast)


Lesenswert?

kann die Adresse sein, wer weiß

von Heinrich (Gast)


Lesenswert?

hat niemand von euch je so einen Baustein benutzt?

langsam glaub ich auch, dass es die i2c write adresse ist, ergibt aber 
eigentlich keinen Sinn

von Stephan (Gast)


Lesenswert?

Hallo,

der Sensor interessiert mich auch sehr, aber irgendwie sind die 
Informationen, die Honeywell auf der Website anbietet, sehr mager. 
Irgendwie finde ich da keine vollständige Kommando Referenz. Oder schaue 
ich nur nicht richtig?
Mich würde da z.B. interessieren, wie man die I2C Adresse 
umprogrammiert, weil ich mehrere Sensoren am Bus brauche.
Hast du eine vollständige Referenz?

Das hier habe ich noch beim Stöbern im Internet gefunden:

http://www.phanderson.com/arduino/I2CCommunications.pdf

Abschnitt 2.2 sagt, dass der Sensor im Power Down bleibt, bis er ein 
Measurement Request Command bekommt. Also die Adresse und r/w = 0 (also 
ein WRITE) senden und Kommunikation mit STOP terminieren.
Erst dann kann man gewisse Zeit später mit einen 4-Byte read (r/w = 1) 
die Daten holen.

0x28 kann übrigens nicht das Write Command sein, weil die Adresse um 1 
nach rechts geschiftet + 1 für write gleich

(0x27 << 1) | 0x01 = 0x4e | 0x01 = 0x4f

sein müsste.

Oder sehe ich da irgendwas falsch?

Gruß, Stephan

von Heinrich (Gast)


Lesenswert?

Hallo,

bei mir kommt immernoch als Ausgabe 0x28 zurück, auch nachdem ich ein 
write geschickt hab, was aber wohl nicht verwunderlich ist, weil ich 
wohl wie du sagst, die falsche Adresse benutzt hab.

Die Referenz die du hier gepostet hast, hab ich auch, was besseres gibts 
nicht :-(

wie kommst du auf (0x27 << 1) | 0x01 = 0x4e | 0x01 = 0x4f ?

von Heinrich (Gast)


Lesenswert?

hab die Bits geschoben wie dus gesagt hast, es funktioniert irgendwie 
immernoch nicht. Das Teil schläft und schläft

von tom und jerry (Gast)


Lesenswert?

Ich hab auch das selbe Problem mit dem Sensor, man kann das Teil 
scheinbar einfach nicht wecken

von Stephan (Gast)


Lesenswert?

Hallo,

der letzte Post ist schon etwas her, aber es hat eine Weile gedauert, 
bis ich meine Sensoren erhalten habe. Sie funktionieren tadellos. Das 
oben beschriebene Problem kann ich bei mir nicht feststellen.
Ob euch mein Code was nützt weiß ich nicht - ich verwende den Sensor in 
einem Embedded Linux System - aber hier mal die entscheidenden Zeilen 
(Fehlerbehandlung rausgekürzt):
1
#include <fcntl.h>
2
#include <sys/ioctl.h>
3
#include "i2c-dev.h"
4
5
...
6
7
fd = open(i2c_dev, O_RDWR);
8
ioctl(fd, I2C_SLAVE, HIH6131ADDR);
9
write(fd, &dummy, 0);
10
usleep(100000);
11
read(fd, &data, 4);

Das write mit Länge 0 ergibt den Measurement Request. Dann warte ich 
100ms und hole mit read 4 Bytes ab. Nach dem Umformatieren von data 
erhalte ich sehr plausibele Werte für Temp. und Hum. und der Sensor 
reagiert auch richtig auf z.B. anhauchen oder auf die Hand legen.

Habt ihr vielleicht Sensoren, die mit einer anderen Adresse programmiert 
wurden?

von Heinrich (Gast)


Lesenswert?

nein unsere Adressen sollten eigentlich die gleichen sein, ich probiers 
noch mal aus

von Thomas (Gast)


Lesenswert?

Hallo,

Ich bin neu in diesem Forum, habe aber schon viele nützliche Tips hier 
bekommen.
Den Sensor HIH6130 verwende ich mit einen Atmega 328 und ebenfalls mit 
der Lib. von P Fleury.
Ich hatte genau dasselbe Problem mit dem Sensor.
Die Lösung ist man das man die Adresse um 1 nach rechts schiften muß 
damit es funktioniert.
Das hängt damit zusammen wie die Adresse im Datenblatt angegeben ist.
Wenn du die Adresse 0x4E verwendest kannst du die Lib. ganz normal 
verwenden und es funktioniert.

von Naveen (Gast)


Lesenswert?

Hello Henry, can you please upload the code for this sensor, it will be 
more useful for my project since I am using this HIH6130-021-001 sensor 
with ATmega644pa controller

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.