ich bin dabei mir eine Füllstandsanzeige für meinen Regenwassertank zu bauen, der quer unter der Erde liegt. Ich bin dabei dies anhand dieses Projektes zu realisieren: Zisterne Füllstandsanzeige - Arduino
Das funktioniert auch soweit. Problem ist nur, dass ich zur genauen Berechnung bei einem quer liegenden Tank noch eine etwas aufwändigere Berechnung vornehmen muss. Leider fehlt mir das Wissen, wie man solche Berechnungen mit einem Arduino durchführt. (mit einem Taschenrechner ist das ja kein Problem)
Dies wäre die Formel zur Berechnung bei einem quer liegenden Tank:
"r" und "L" sind bekannt. "h" wird von einem Ultraschallsensor bestimmt. Wie baue ich das in den Vorhandenen Sketch ein? Hat da jemand eine Idee?
Würde mich freuen, wenn mir dabei jemand helfen kann.
Jetzt weiß ich nicht wie genau Du das haben willst. Wenn Dir sagen wir mal 5% kein problem sind:
Ich würde eine Tabelle machen zB für 10 Werte für Füllhöhen von 0 bis r (Halb voll) dann hast Du gleich auch die Werte von r bis 2r ausrechnen. Für Zwischenwerte kannst Du linear interpolieren. So bekommst Du leicht auf 100 Werte.
Grüße Uwe
Vielen Dank für die Tipps. Ich denke ich werde mir den Vorschlag von uwefed mal näher anschauen. Der Weg scheint mir am Ressourcensparendsten zu sein. Mal schauen ob ich das so implememntiert bekomme. Bin noch ein ziemlicher Anfänger was die Programmierung angeht. Aber ich habe mir dazu schon ein paar Beispiele angesehen, anhand derer ich das jetzt mal testen werden.
Vielen Dank schon mal. Ich werde berichten ob es klappt... oder auch wenn ich nicht weiter komme.
[ Tabelleninterpolation ] braucht nahezu keine Rechenzeit, dafür aber Platz im Speicher.
math.h für die arccos-Funktion und float-Variable brauchen vermutlich noch mehr Platz. Die Tabelle kann man übrigens ins PROGMEM legen.
Das Problem ist vermutlich eher die Meßtechnik: Bei 0...1% bzw 99...100% hat man kaum Höhenänderung.
Außerdem: Willst du den Tank mit allem Schlamm tatsächlich komplett leeren? 0% und 100% würde ich eher "willkürlich" setzen. Und dann nutzt dir die Formel noch weniger.
michael_x:
... das Problem ist vermutlich eher die Meßtechnik: Bei 0...1% bzw 99...100% hat man kaum Höhenänderung ...
Da unterliegst du einem Denkfehler. Gerade in den "Randbereichen" (Oben und Unten) ergibt sich beim liegenden Zylinder die größte Höhenänderung bei gleicher Änderung des Volumens ...
ich möchte mich bei der Thematik "Rechnen oder als Tabelle speichern" auch einmal einklinken. Ich dimme eine LED, um das passender zur menschlichen Wahrnehmung zu machen, werden die PWM-Werte über eine Formel umgewandelt. Beim ESP8266 gibt es 1024 verschiedene Werte, die bei jeder Erhöhung berechnet werden.
Gibt es hier eine Faustregel, wie sich die Berechnung gegenüber dem Abspeichern auf Stromverbrauch o.Ä. auswirkt? Speicherplatz habe ich noch genug im ESP, die Stromkosten wären das einzige, was mich deswegen überlegen ließen.
Glaube nicht daß die Controller so extreme Stromsparstrategien haben wie die CPU in PCs. Ich rede da von dynamischer Tatfrequenzabsenkung in Funktion von Temperatur und auslastung, Abschaltung von Prozessorkernen, Absenkung von Versorgungsspannungen der Rechenkerne usw.
Ein einfacher Controller müßte gleichviel verbrauchen ob er jetzt irgendwelche Berechnungen durchführt oder ob er Leerschleifen macht weil er gerade auf ein delay gestoßen ist.