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
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
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 ?
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?
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.
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