Phänomen: steigende Werte

Hallo liebe Foriker,
ich bin erst seit kurzem Arduino Fan, ich hab da was gebraucht, das hatte einer als Arduino Lösung...
Aber ich finde es echt ein nettes "Spielzeug" :smiley:

Ich programmiere bereits seit einigen Jahren, allerdings nicht in C / C++.

Das Wachstum meines "ersten" Sketches verlief durchaus positiv, jetzt leider nicht mehr:
Der Aufruf einer Funktion mit nahezu gleichbleibenden Parameterwerten führt zu einem, nach einer gewissen Zeit,
stetig wachsendem Ergebnis!?!?!? Ich kann das einfach nicht fassen, ich habe so etwas noch nicht erlebt.
Aber: das Problem sitzt immer vorm Bildschirm :astonished:

Ich habe hier http://arduino.cc/forum/index.php/topic,112334.0.html mal mein Problem beschrieben,
im letzten Post von mir sind der Sketch und die verwendeten libs angehängt.

Ich kann das Problem leider nicht einordnen und hoffe, das vielleicht ein erfahrener Arduinosiast da mal einen Blick
drauf werfen könnte. Ich bin für alle Vorschläge offen. Bestimmt ist nicht alles optimal, aber das wird sicher noch...irgendwann...

Grüße

Siggi

Hallo Siggi,

du benutzt die lib von Fabio, die hat leider einen Fehler und hat bei mir nicht richtig funktioniert.

Hier ein Link Pressure Sensors MS5611 MS5803 - #17 by Juergen-05 - Sensors - Arduino Forum

Hab den Code von _Leo genommen und an mein Projekt angepasst. Habe mit diesen Code stabile Druck- und Temperaturwerte :slight_smile:

Gruß

Jürgen

Hallo Jürgen,

ja den Code, den Du nutzt, hatte ich bereits gesehen. Ich habe mich dann aber entschieden, die lib
von Fabio anzupassen, was auch (scheinbar?) funktioniert hat. Die von ihm verwendeten Variablen-Typen
habe ich nach den Vorgaben aus dem Datenblatt des MS5611BA angepasst.
Kannst die lib ja mal ausprobieren...nur mal so....würde mich über eine Rückmeldung freuen.

Jedenfalls sind mein Problem nicht schwankende Sensorwerte (da finden sich übrigens auch welche in dem anderen Post), sondern das Phänomen, dass eine Funktion die mit fast identischen Werten aufgerufen wird (getHeight), einfach sich aufbauende Ergebnisse zurückgibt.

Ich war gerade eben dabei, einem Rat zu folgen und NULL nicht mehr zu nutzen sondern statt dessen
NAN und die Funktion isnan(). Das war aber totale Sch...., ich hab jetzt alle Stellen im Code angepasst und leider erst dann festgestellt, das eine float Funktion scheinbar nicht NAN als Ergebnis zurückliefern kann. Bin mir aber da noch nicht ganz sicher und werde da wohl erst noch mal einen Test-Sketch zu anlegen.

Man gönnt sich ja sonst nix. Morgen ist auch noch ein Tag...

Grüße
Siggi

Hallo Siggi,

habe eben deine geänderte Lib von Fabio ausprobiert und mit den Moverage-sketch folgende Ergebnisse bekommen:

temp: 19.30 degC pres: 479.00 mbar<\r>
temp: 19.30 degC pres: 479.00 mbar<\r>
temp: 19.30 degC pres: 479.00 mbar<\r>
temp: 19.30 degC pres: 479.00 mbar<\r>
temp: 19.30 degC pres: 479.00 mbar<\r>

Die Temperatur passt ja noch einigermaßen, aber die Druckwerte überhaupt nicht! Habe hier 23 Grad und 973 hpa mit dem Code von Leo und das passt!
Die Temperatur springt auch bei steigenden Werten! Zum beispiel von 19 auf 21 und zurück. Dieses Verhalten habe ich schon in der ersten lib von Fabio bemerkt.

Mit dem Altitude-sketch ist es nicht anders.

Ich werde wieder meinen sketch benutzten, habe keine Probleme.

Gruß

Jürgen

Klasse Jürgen,

vielen Dank für Deine Rückmeldung. Dann werde ich mich da einfach mal anschließen und
ebenfalls den von Dir verwendeten Sketch nutzen.
Vielleicht könnte man ja daraus eine neue lib bauen, dann hätten auch andere die Möglichkeit
der problemlosen Nutzung. was hälst Du davon?

Ich hatte auch schon mal versucht, den Code der Multiwii zu extrahieren, der sich auf den
MS5611 bezieht. Der soll ja wohl auch Korrekte Werte liefern. Daran bin ich aber leider
kläglich gescheitert, da hat nicht mal die Initialisierung bei mir funktioniert :blush: :blush:

Grüße
Siggi

Hallo Siggi

habe es auch schon selber versucht die cpp.datei von Fabio mit den Formeln anzupassen, auch kein erfolg :~

hast du deinen Sketch mal überprüft, die Variable NULL hat bei dir, glaube ich keinen Wert. Du mußt der Variable einen Wert zuweisen, zB. 0!

Mein Sketch läuft ja mit dem EA-DIP204J-4NLW Display, dies läuft mit 3,3 Volt und mit einer modifizierten liquidChrystal-lib.
Es ist klein, hat 4 Zeilen 20 Stellen, kann auch im SPI-Mode betrieben werden, der einzige Knackpunkt ist: 2 x 9 Pin Anschlüsse im 2 mm raster!!
Habe davon schon 3 Stück im Einsatz.

Musst halt die lcd.comand sequenzen löschen, die brauche ich um das Display zu initialisieren.

Gruß

Jürgen

Hallo Jürgen,

NULL ist keine Variable sondern eine #define Anweisung und hat den Wert 0. Hab' ich auch
gerade erst gelernt. :grin:

Dein Sketch funktioniert bei mir auch, stabile Werte XD XD XD

Ich übernehme jetzt deine zeilen in meinen Sketch und dann schaun mer ma, da werden wir dann schon sehen...

Ich habe mich für das Nokia 5110 display entschieden, weil: billig,
wenig anschlüsse, vorhandene lib, Beleuchtung und... kann auch so ein wenig Grafik(wenn man's braucht).

Grüße

Siggi

Hallo Siggi,

ja auch wieder was gelernt :smiley:

Schön das du mit dem Sketch von Leo weiter kommst, ich bin auch noch ziemlich neu in C++, hab mir als letztes das Arduino Cookbook besorgt.
Ist sogar schon für IDE 1.0 überarbeitet worden. Einziger Wermutstropfen: Ist in Englisch, aber mein Schulenglisch reicht dafür noch aus. :slight_smile:
Damit hab ich schon einiges gelernt, komme aber aus Zeitgründen auch nicht immer so dazu mich näher mit der Materie zu befassen.

Gruß

Jürgen