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
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
>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.
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
kleiner Nachtrag: D2 ist der Wert vom Datenblatt und heißt bei mir rtemp.
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?
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.