Forum: Mikrocontroller und Digitale Elektronik Hp03 Berechnung läuft schief


von Simon S. (dk1si)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

Bin gerade dabei den HP03 Sensor von Pollin anzusteuern.
Das Auslesen der Parameter klappt, aber die Berechnung läuft schief...

Habe die Rechenschritte aus dem Pollin-Datenblatt entnommen. Für den 
Luftdruck kommt nun bei mir 15220 raus und die Temperatur ist 0.


Ich habe zu Testzwecken das ganze über den UART ausgegeben. Dort kopiere 
ich einfach die float Werte in ein int. Dies ist nur zu Testzwecken.


Leider weis ich nicht mehr weiter woran die Fehlerhafte Berechnung 
liegen könnte...


Vielen Dank für eure Hilfe.

viele grüße

Simon

von Simon S. (dk1si)


Lesenswert?

Hallo nochmals,

Habe nun weitergeforscht und folgendes rausgefunden:

Das Problem liegt vermutlich hier:
1
    for(i=0; i<5; i++)    
2
    {
3
      param[i]=i2c_readAck();    
4
    }

Die ausgelesenen Parameter sind alle 255.

lt. Datenblatt sind es 8 Bit Werte, In der Beispiel Rechnung sind sie 
zwischen 1 und 4....

Warum kommt hier immer 255 raus?

die anderen Parameter werden doch auch korrekt ausgelesen??


Vielen Dank nochmals

gruß

Simon

von holger (Gast)


Lesenswert?

>Leider weis ich nicht mehr weiter woran die Fehlerhafte Berechnung
>liegen könnte...

Lies in deinem C-Buch noch mal das Kapitel Array und Indizes.
1
  uint8_t param[4]; //Hier werden die Sensorparameter gespeichert
2
3
    for(i=0; i<5; i++)    
4
    {
5
      param[i]=i2c_readAck();    
6
    }

Buffer Overflows überall sag ich nur.
param[4] gibts es nicht.

von Simon S. (dk1si)


Angehängte Dateien:

Lesenswert?

So,

habe nun die ganzen Berechnungen überarbeitet und nebenbei noch einen 
Fehler im Pollin Datenblatt gefunden.....

Allerdings habe ich nun ein weiteres Problem:

jedes mal wenn ich die Werte auslese verringert sich der Wert D2!?

Desweiteren stimmt die Berechnung der Temperatur nicht, Habe eben mit 
meinem Multimeter 19Grad gemessen und berechnet wurden 25???


Vielen Dank für die weitere Unterstüzung

Viele Grüße

von Simon S. (dk1si)


Lesenswert?

kleiner Nachtrag:

D2 ist der Wert vom Datenblatt und heißt bei mir rtemp.

von Mr.T (Gast)


Lesenswert?

Habs jetzt nicht komplett durchgeackert, aber bei meinem HP03S muss ich 
das Teil an einem Pin noch mit einem 32768Hz Takt füttern. Hast Du das 
gemacht?

von Simon S. (dk1si)


Lesenswert?

Ja den Takt erzeuge ich auch aber in der main.
Der ist bei mir immer eingeschaltet.

Anbei der Code aber der Takt funktioniert.
1
TCCR1A=(0<<COM1A1) | (1<<COM1A0);  //OC1 Pin im Toggle Mode  aktivieren
2
TCCR1B |=(1<< WGM12); //CTC Mode aktivieren
3
OCR1A = 124; //Timer auf Wert setzen >> 250 Zählschritte entspricht bei 8MHz Takt 32Khz
4
5
TCCR1B |= (1<<CS10); //Timer ohne Vorteiler aktivieren

Grüße

von Simon S. (dk1si)


Lesenswert?

Hallo zusammen,

Leider komme ich immer noch nicht weiter....


Habe mal die Debug Ausgabe angehängt.
 Wenn ich den Sensor auf den Balkon stelle (Aktuell sind es 13°C) Dann 
zeigt er mir -14000°C an, stelle ich Ihn wieder auf den Schreibtisch 
kommen zwischen 25 und 26C dabei raus (eigentlich sind es 20C.

Habe nun mal meine Debug ausgabe angehängt damit die Ausgelesenen 
Parameter zur Verfügung stehen. Ist leider nicht so gut lesbar...



Start HP03    XCLR auf low    i2c start end   coeff Nr 0:-4340  coeff Nr 
1:1606
0  coeff Nr 2:3119  coeff Nr 3:288  coeff Nr 4:1042  coeff Nr 5:-31698 
coeff Nr
 6:5952  coeff Nr 7:2500     param: 9param Nr 0:7  param Nr 1:30  param 
Nr 2:6
param Nr 3:9     XCLR high     rohdaten: rhpa -4113   rohdaten rtemp 
-31236--
Temp: 263  press: 13320 _end----
---------------------------------------------------------------------

Viele Grüße

: Bearbeitet durch User
von Mr.T (Gast)


Lesenswert?

Mit Berechnung mittels int32 hatte ich Abweichungen von ein paar Kelvin. 
Hab es dann auch float umgestellt und es passt. Der LPC1769 hat genug 
Dampf für floats. Also lasse ich es jetzt so. Beim Luftdruck drauf 
achten, dass Du etwa 1mBar je acht Höhenmeter "verlierst".
Das Datenblatt von Pollin hat auch eine ')' in einer Formel zu wenig.
Ich ping dich mal heute/morgen per PN an, dann kannst Du mal in meinen 
Code schauen.

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.