Forum: Mikrocontroller und Digitale Elektronik HP03S, gleicher Wert für D1 und D2


von Peter (Gast)


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?

von Peter (Gast)


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

von Peter (Gast)


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

von david (Gast)


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

von Richard (Gast)


Lesenswert?

Hallo Peter,
ich hätte auch großes Interesse an deinem Quellcode.
LG

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.