Seite 1 von 1

I2cdump -y 1 0x37 w im Python script verarbeiten

Verfasst: Mittwoch 10. September 2014, 13:47
von doener1944
Hallo,
Seit einem Jahr experimentiere ich mit meinem Raspberry und baue mir gerade eine Haussteuerung zusammen. Aber nun mein Problem:
seit Tagen versuche ich dem TMP175 (Temperatursensor) das low und high Byte für die 12 Bit Temperaturmessung zu entlocken. Ich schaffe es nur das Highbyte im 9 Bitmodus auszulesen an das Low Byte komme ich ankeinem anderen Modus (9,10,11,12 Bite) heran und sehe damit nur ganze Temperaturen ohne Nachkommastellen. Aber mit I2cdump -y 1 0x37 w sehe ich die beiden Byts und könnte damit die Temperatur berechnen. Andere Sensoren wie LM 75 usw gehen nicht, da der einzig freie Bereich im I2C Bus die Adressen 0x30 bis 0x37 sind. Alles andere ist weitgehend belegt. Wie kann ich in einem Python Programm diese Werte werde auslesen und auswerten?
Wer hat einen Idee?
Besten Dank
Gruß
Michel

Re: I2cdump -y 1 0x37 w im Python script verarbeiten

Verfasst: Mittwoch 10. September 2014, 15:23
von jerch
Im Datenblatt steht, dass nach Powerup die Pointerregisterbits P0/P1 auf 0/0 gesetzt sind, d.h. Du das Temperaturregister auslesen kannst. Unter Temperaturregister findest Du den Hinweis, dass Du 2 Bytes lesen musst (logisch bei 12Bit-Breite) und das erste Byte den Vorkomma- und das zweite den Nachkommastellen entspricht.

Wie liest Du denn die Vorkommawerte derzeit mit Python aus?

Re: I2cdump -y 1 0x37 w im Python script verarbeiten

Verfasst: Mittwoch 10. September 2014, 15:36
von doener1944
Hallo Jerch

in meinem Datenblatt sind es die Bits R1/R0 die auf 0 stehen, wahrscheinlich identisch. Durch ändern der Bits wird die Auslösung geändert:

0 0 9 Bit
0 1 10 Bit
1 0 11 Bit
1 1 12 Bit.
Ist soweit Klar. Der Punkt ist, dass das Byte 1 Adresse 0x00 sowohl das High als auch das ow Byte ausgibt. Im Datenblatt seht aber nicht wie. Ich lese wie folgst aus:
a = bus.read_byte_date(0x37,0x00)
2 maliges auslesen bringt nichts
Die 12 Bit Auflösung ändere ich durch
bus.write_byte_data(0x37,0x01,96) - es werden im 6. und 7 Bit (R0/R1) des Configurationsregister beide Bits gesetzt
Gruß
Michael

Re: I2cdump -y 1 0x37 w im Python script verarbeiten

Verfasst: Mittwoch 10. September 2014, 15:45
von jerch
Vllt hilft Dir das hier weiter: https://www.kernel.org/doc/Documentatio ... s-protocol

Demnach gibts analog zu `read_byte_data` ein `read_word_data`, welches 2Bytes liest. Laut Datenblatt des Sensors muss man 2 Bytes lesen, wiederholtes Lesen eines Bytes gibt immer nur die Vorkommawerte.

Re: I2cdump -y 1 0x37 w im Python script verarbeiten

Verfasst: Mittwoch 10. September 2014, 15:59
von doener1944
Danke für den Tipp und den Link, werde mich mal da durcharbeiten.
Gruß
Michael