Hallo,
Ich habe ein Projekt bei dem aus einem Tank der Pegel ermittelt werden soll. Dies geschieht über Ultraschall-Sensor.
Der Tank ist elliptisch im Schnitt.
Um nun exakt den Tankinhalt zu berechnen muss ich aufgrund der elliptischen Form bei jeder Berechnung des Inhalts wie folgt vorgehen:
Ellipse als Funktion im ersten Quadranten aufstellen, die den Tank im Schnitt nachbildet
Diese Funktion mit einer Geraden gleichstellen, die y=... lautet, wobei ... der Abstand vom Boden des Tanks in cm ist, also z.B. 50
Diese Gleichung umstellen um die Schnittpunkte der Funktionen, also die Integrationsgrenzen, zu bestimmen.
Über die Trapezmethode innerhalb der Grenzen "integrieren" und dann mit der Breite des Tanks multiplizieren um den Inhalt zu erhalten. (Über die Breite des Tanks ändert sich die Geometrie nicht mehr.)
Das einzige Problem hier habe ich mit Schritt 3, da ich leider keine Beiträge gefunden habe, ob und wie der Arduino Funktionen nullsetzen/nach x lösen kann.
Da es sich bei 2. ja nur um eine Zahl handelt, kann diese einfach negativ auf die andere Seite gebracht werden. Wie aber erhalte ich die Schnittpunkte beider Funktionen, also die Gleichung nach x gelöst?
Ist denn die Gleichung die du da hast linear?
Dann würde das mit dem "umstellen" gehen.
Wenn die Gleichung quadratisch ist könnte man die "p-Q-Formel" oder "Mitternachts-Formel" nehmen.
Wenn es noch irgendwie anders ist dann bietet sich an das numerisch mit dem Newton-Verfahren zu lösen.
Wenn du in Mathe nicht so bewandert bist dann poste halt mal die Gleichungen die du hast. Als rein mathematische Gleichungen. Ein fremdes Programm wieder in eine Mathematische Gleichung zurückübersetzen ist sehr viel mühsamer als aus einer mathematischen Gleichung das Programm zu entwickeln.
vgs
Geht da ein Wertearray nicht einfacher?
Einfach mit der Höhe als Index und dem resultierenden Volumen als Wert. Da der Tank weitgehend symmetrisch ist braucht es die Daten nur bis zur halben Höhe.
Bei einer cm genauen Messung und einem Durchmesser des Tanks von 1m sind das nur 50 Werte also 50 oder 100 Byte Daten (bei int Werten) . Ist der Tank größer werden es mehr Werte aber auch ein 2mTank braucht nur 100 Werte.
Gute Idee. Das bringt mich jetzt noch auf eine weitere Idee:
Mit Excel oder libreOffice-Calc kann man sich aus einer XY-Punkteschar
eine best-fit Näherungsfunktion berechnen lassen. Dabei kann man auswählen ob die Funktion ein Polynom, eine Exponentialfunktion und dergleichen mehr sein soll. Man kann auch die maximale Abweichung die die Näherungsfunktion hat anzeigen lassen. Oder eben noch einmal mit einer Tabelle die Abweichungen berechnen lassen und dann die maximale Abweichung bestimmen lassen.
Man muß diese Abweichung gegen die Meßgenaugkeit des Meßsystems abgleichen. Es hat keinen sinn auf 0,1% genau rechnen zu wollen wenn die Höhenmessung 5% genau ist.
Die Wertetabelle kann man via PROMEM ja im Flash halten und braucht somit kaum RAM
Wenn ja, dann ist V=A*h
V= Volumen des Tanks
A = ist die Grundfläche des Tanks und diese ist konstant
h = Höhe, die über den Sensor ermittelt wird.
Oder steht der Tank hochkant?
Wenn ja, dann ist das Mist
sehe ich auch so.
bei einem Ultraschallsensor der nur auf ein paar cm genau ist, bei einem angenommen Tank der 2einhalb Meter tief ist ... reicht ein Array mit 254 lange um auf die geschätzten Liter zu kommen.
Ich habe aber noch nirgens gelesen welchen Durchmesser der Tank hat. Der TO sollte uns aufklähren bezüglich Dimensionen und Meßgenauigkeit/ Auflösung.
Bei 2,5m und Sensorauflösung von 1cm da reichen 125 Werte, die halbe Höhe des Tanks. Die anderen Werte kann man errechnen weil angenommen daß die große Achse der Elypse waagerecht steht
Grüße Uwe
Hallo,
Danke schonmal an alle!
An das Newtonverfahren hatte ich gar nicht gedacht. Ich denke das werde ich so verwenden.
Die Gleichung sieht dann wie folgt aus:
Ellipse: f(x)=x²/a² + y²/b² = 1 <-> f(x)= x²/a² + y²/b² -1 =0
Gerade mit Höhe vom Boden 20cm: g(x)=y=20
Statt x² und y² würde man natürlich (x-m)² und (y-n)² nutzen, da es sich ja um eine verschobene Ellipse handelt. Der Übersichtlichkeit halber habe ich das oben weggelassen.
Die Maße des Tanks weiss ich im Moment leider noch nicht. Durch diese würde sich dann a und b ergeben, so dass man mit x und y übrig bleibt.
Nun kann ich nach x und y mit Newton lösen und erhalte die Grenzen.
Dann wird doppelt integriert, jeweils über eine Variable und anschließend habe ich die Fläche.
Ich denke das sollte so schon klappen, werde das aber die Tage nochmal ausprobieren.
Vielen Dank für jegliche Hilfe.
Sollte ich bemerken, dass das ganze zu genau ist und der Aufwand nicht gerechtfertigt ist, werde ich das Wertearray nutzen.
Die Ellipse ist bei diesem Tank nicht die Grundfläche, dann wäre es wirklich einfach.
Die Ellipse liegt in der horizontalen und nach "hinten" verändert sich die Geometrie nicht mehr. Da der Tank von unten nach oben befüllt wird, bietet es sich an hier zu integrieren.
Ein Ellipsoid ist eine gequetschte Kugel, mathematisch ausgedrückt ein affines Bild einer Kugel. Was der TO wohl hat, ist ein gequetschter Zylinder, dessen Mittelachse parallel zum Boden verläuft.
Ich habe mal eine analytische Formel hergeleitet. Ausgangspunkt war die Formel für das Kreissegment (Wikipedia), die ich für die Ellipse und die dritte Dimension angepasst habe. Ich hoffe, der TO kann etwas damit anfangen.
19 Beiträge und wir wissen immer noch nicht was Sache ist.
Elipsoid - nein ist es nicht.
Querschnitt Elipse? nein schaut auch nicht danach aus.
Querschnitt Oval?
Entweder kommst jetzt mit einer aussägekräftigen Schnittzeichnung aller Dimensionen oder du kannst deine Volumensberechnung gleich mit einer einfachen Multiplikation machen: