HP03S, gleicher Wert für D1 und D2

Gast #2372823
Lesenswert?

Hallo!
viele von euch haben sich ja schon mit dem HP03S von Pollin beschäftigt. 
Ich habe diesen nun auch mal an einen PIC angeschlossen. Betreibe den 
I2C Bus mit 100 kHz.
Die Koeffizienten lassen sich problemlos auslesen und liegen in den 
spezifizierten Bereichen.
32 kHz liegt an, und MCLR liegt nun auf high.
Das Auslesen der AD Werte, erfolgt wie im Datenblatt angegeben. doch 
leider bekomme ich für Druck und Temperatur die gleichen Werte. Es ist 
der Wert er Temperatur. Dieser stimmt und verändert sich entsprechend 
bei Erwärmung.
Der Wert für den Druck entspricht demnach D2. Es ist kein Problem der 
Variablen.
Hat jemand von euch dieses verhalten beobachten können?
Gast #2373128
Lesenswert?

1
void read_AD(void){
2

3
  mLED_1_On();
4
           // mclr on
5
  Delay10TCYx(24);
6

7
  StartI2C();      // Startsequenz erzeugen
8

9
  WriteI2C(0xEE);    // Adresse
10

11
  WriteI2C(0xFF);    // Controllbit
12

13
  WriteI2C(0xF0);    // 
14

15
  StopI2C();
16

17
  
18

19
  Delay10TCYx(200);
20

21

22

23
  StartI2C();      // Startsequenz erzeugen
24

25
  WriteI2C(0xEE);    // Adresse
26

27
  WriteI2C(0xFD);    // Controllbit
28

29
  RestartI2C();
30

31
  WriteI2C(0xEF);
32

33
  D[0].byte2.hnib = ReadI2C();
34

35
  AckI2C();
36

37
  D[0].byte2.lnib = ReadI2C();
38

39
  NotAckI2C();
40

41
  StopI2C(); 
42

43
  
44

45
  
46

47
  StartI2C();      // Startsequenz erzeugen
48

49
  WriteI2C(0xEE);    // Adresse
50

51
  WriteI2C(0xFF);    // Controllbit
52

53
  WriteI2C(0xE8);    // 
54

55
  StopI2C();
56

57
  
58

59
  Delay10TCYx(200);
60

61

62

63
  StartI2C();      // Startsequenz erzeugen
64

65
  WriteI2C(0xEE);    // Adresse
66

67
  WriteI2C(0xFD);    // Controllbit
68

69
  RestartI2C();
70

71
  WriteI2C(0xEF);
72

73
  D[1].byte2.hnib = ReadI2C();
74

75
  AckI2C();
76

77
  D[1].byte2.lnib = ReadI2C();
78

79
  NotAckI2C();
80

81
  StopI2C();
82

83
  
84

85
  mLED_1_Off();
86
  //mclr off
87
  
88

89

90

91
}

Das ist der Code zum Auslesen. Gruß Peter
Gast #2376748
Lesenswert?

Guten Abend,

heute hatte ich die Möglichkeit weiter mit dem Sensor zu arbeiten.

Nachdem ich mal versucht habe nur die Werte für den Luftdruck auszulesen 
klappte es auf Anhieb. Nun war klar, dass der Fehler irgend etwas damit 
zu tun haben musste, dass auch der Wert für die Temperatur ausgelesen 
wird.

Es stellte sich heraus, dass die Verzögerung mittels Delay10TCYx(20); 
viel zu kurz war. Ein typischer Copy und Past Fehler. Es sollte 
Delay10KTCYx(20); heißen. Also ein Dalay dass 1000 mal länger ist.

Nun Klappt auch das auslesen mit dem PIC18F4550. Falls jemand Interesse 
hat, lade ich den Quellcode gerne hoch.

Gruß

Peter
Gast #2388476
Lesenswert?

hey peter
ich beschäftige mich ebenfalls mit dem HP03S
und naja ich bin ein totaler anfänger
ich versuche mit dem Arduino uno
den sensor anzusteuern nur hab ich keine ahnung was ich da genau machen 
soll XD
wäre echt super wenn du den code hochladen würdest
lg

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