Forum: Mikrocontroller und Digitale Elektronik kapazitive Füllstandsmessung mir variabler Tankhöhe


von Dennis K. (scarfaceno1)


Lesenswert?

Guten Tag,
ich habe mir eine Schaltung entwickelt, mit der ich den Füllstand eines 
Flüssigkeitstanks in einem Wohnmobil oder auch anderen Fahrzeug messen 
möchte. Vornehmlich geht es dabei um den Frischwassertank in meinem 
Wohnmobil.
Es handelt sich hierbei um eine kapazitive Messschaltung, die schon für 
sehr flache Tanks funktionieren soll. So ab 10cm Tankhöhe. Das ganze 
wird von einem AtMega8 gemessen. Nachdem ich nun gerade so geschafft hab 
die Auflösung bei der geringen Höhe annehmbar hin zu bekommen habe ich 
nun das nächste Problem.

Ich habe noch weitere Tanks im Wohnmobil und möchte den Sensor nicht 
jedesmal neu kontruieren. Ich habe  an den ADC Eingang ein Poti 
angeschlossen mit dem ich die Tankhöhe einstellen will. Nun bin ich mir 
nicht sicher, wie ich das in der Formel für die Ausgabe verpacken soll.

Wenn das Poti vom ADC in 10bit auflöst und ich nur die oberen 8bit 
nutze, dann muss ich dann für jeden der 256 Werte eine eigene Tabelle 
anlegen.
Also Messbereich von 10cm bis 2m oder so...

Wie erstelle ich die Tabelle am geschicktesten?

Vielen Dank im Vorraus
Dennis

von Udo S. (urschmitt)


Lesenswert?

Dennis Kaufmann schrieb:
> Ich habe  an den ADC Eingang ein Poti
> angeschlossen mit dem ich die Tankhöhe einstellen will.

Ich gehe davon aus, daß du diese Höhe für Berechnungen brauchst.
Dann ist ein Poti doch ziemlich suboptimal.
Warum liest du das nicht digital über einen Jumperblock oder BCD 
Codierschalter ein?

von Dennis K. (scarfaceno1)


Lesenswert?

Hmmm, wäre möglich, aber wieviele Jumperblöcke bräuchte ich wohl, wenn 
ich eine Tankhöhe zwischen 10cm und 2m einstellen möchte?
Da ist der Teil mit den Jumperblöcken ja größer als meine ganze 
Schaltung.

Bei einem BCD Codierschalter bin ich auf 16 Stufen zwischen Min und Max 
Wert eingeschränkt, das erscheint mir doch etwas wenig.

von HuJk (Gast)


Lesenswert?

Dennis Kaufmann schrieb:
> wieviele Jumperblöcke bräuchte ich wohl

2

von Udo S. (urschmitt)


Lesenswert?

Dennis Kaufmann schrieb:
> Hmmm, wäre möglich, aber wieviele Jumperblöcke bräuchte ich wohl, wenn
> ich eine Tankhöhe zwischen 10cm und 2m einstellen möchte?

Überlege mal, pro Jumper hast du 2 Möglichkeiten, bei 2 also 2 * 2, bei 
3 2* 2 * 2, ... nennt sich binäres Zahlensystem :-)
Das gleiche mit BCD Codierschaltern, einer hat 16, 2 haben ...

von Dennis K. (scarfaceno1)


Lesenswert?

Ich möchte nicht ausschließlich entweder 10cm oder 2m Tankhöhe messen, 
sondern wie oben beschrieben auch Tankhöhen, die dazwischen liegen...

von fonsana (Gast)


Lesenswert?

Da wuerde ich gleich eine Art Kalibrierung vorsehen.
Also einen jumper fuer jeden Kanal.

Ablauf:
Tank 1 ganz leer
Jumper fuer Kanal 1 auf Lernen stecken
Programm merkt sich den Wert fuer leer
Tank 1 ganz fuellen
Jumper fuer Kanal 1 auf normal stecken
Programm merkt sich den Wert fuer voll

Weiter so fuer die anderen Tanks.

Wenn Du Tasten mit einem Menu zur Verfuegung hast, geht das natuerlich 
noch viel eleganter.

fonsana

von Dennis K. (scarfaceno1)


Lesenswert?

Ok, ok.... überzeugt.
Jetzt ist dies allerdings ja garnicht mein Problem, sondern eher das, 
wie ich von der eingestellten Tankhöhe über den Messwert zu meinem 
Ausgang komme.

von Anja (Gast)


Lesenswert?

Dennis Kaufmann schrieb:
> Hmmm, wäre möglich, aber wieviele Jumperblöcke bräuchte ich wohl,

für jeden Sensor genau 1 oder 2 EEPROM Bytes.

Gruß Anja

von HuJk (Gast)


Lesenswert?

Gibt es auch kugelförmige Tanks?

Nach welcher Formel errechnest Du dabei die Wassermenge, wenn Du nur den 
Wasserstand kennst?

von Dennis K. (scarfaceno1)


Lesenswert?

Das ganze ist erstmal nur für Tanks in Form eines Quaders.

Mit einer Kugel müsste es aber gehen, wenn man auch über eine Tabelle 
jedem Messwert eine feste Ausgangsgröße zuweist.
Mit Hilfe der Kugelformel
http://www.walter-fendt.de/m14d/kugelvolumen.htm
kann man ja dann das ganze in Relation setzen.

von Helmut L. (helmi1)


Lesenswert?

Dennis Kaufmann schrieb:
> Jetzt ist dies allerdings ja garnicht mein Problem, sondern eher das,
> wie ich von der eingestellten Tankhöhe über den Messwert zu meinem
> Ausgang komme.

Im einfachsten Fall eine lineare Gleichung:  Y = a + b * x

Jetzt brauchst du nur noch a und b zu bestimmen.
Das machst du einmal fuer den leeren Tank und einmal fuer den vollen 
Tank.
Damit hast du 2 Bestimmungsgleichungen fuer die 2 Unbekannten.
Und fertig ist die Kalibrieung.

von HuJk (Gast)


Lesenswert?

Dennis Kaufmann schrieb:
> Mit Hilfe der Kugelformel
> http://www.walter-fendt.de/m14d/kugelvolumen.htm
> kann man ja dann das ganze in Relation setzen.

Damit ist noch nicht erklärt, wie ich die Wassermenge in Abhängigkeit 
von der Füllhöhe einer Kugel berechne.

von fonsana (Gast)


Lesenswert?

Guckst Du hier:

http://www.wer-weiss-was.de/theme50/article4571427.html

Allerdings wird das fuer einen AVR sicher schwierig. (Kubikwurzel)

fonsana

von Helmut L. (helmi1)


Lesenswert?

fonsana schrieb:
> Allerdings wird das fuer einen AVR sicher schwierig. (Kubikwurzel)

Warum?

Willst du pro Sekunden 1 Million mal das Volumen ausrechnen?
Der uC hat doch Zeit ohne Ende dafuer.

von fonsana (Gast)


Lesenswert?

Probier es.
Ich wuerde wahrscheinlich eine Tabelle verwenden.

fonsana

von b35 (Gast)


Angehängte Dateien:

Lesenswert?

HuJk schrieb:
> Damit ist noch nicht erklärt, wie ich die Wassermenge in Abhängigkeit
> von der Füllhöhe einer Kugel berechne.

Hallo,
vor ca. 13 Jahren habe ich das für einen (Öl) Tank mit Zylinderbauform 
berechnet. Die Stirnwand kann als ebene Platte, Halbkugel oder Ellipse 
geformt sein. Letzteres ist häufig anzutreffen.
Von Jumo gab (gibt es noch?) es einen Transmitter welcher diese Formel 
implementiert hatte, Parameter zur Eingabe r, l, etc., Eingangssignal 
die Füllstandshöhe (für Weg- oder Abstandssensor).

von Dennis K. (scarfaceno1)


Lesenswert?

Helmut Lenzen schrieb:
> Jetzt brauchst du nur noch a und b zu bestimmen.
> Das machst du einmal fuer den leeren Tank und einmal fuer den vollen
> Tank.
> Damit hast du 2 Bestimmungsgleichungen fuer die 2 Unbekannten.
> Und fertig ist die Kalibrieung.


Das klingt soweit schon mal ganz gut.
Jetzt wollte ich das ganze ja aber dem Sensor über das Poti mitteilen.
Wenn ich das jetzt auf 1m Tankhöhe einstelle, dann müsste er den Wert 
für leer und voll ja schon parat haben...
Oder?

von Helmut L. (helmi1)


Lesenswert?

Dennis Kaufmann schrieb:
> Jetzt wollte ich das ganze ja aber dem Sensor über das Poti mitteilen.
> Wenn ich das jetzt auf 1m Tankhöhe einstelle, dann müsste er den Wert
> für leer und voll ja schon parat haben...

Noe. Du hast doch eine Messkette. Also einmal dein kapazitiver Sensor. 
Wieviel pF der bei leeren und vollen Tank macht weist du doch nicht. 
Dann dein Oszillator, wie genau der ist weist du auch nicht. Also must 
du einmal die Frequenz bei leeren und einmal bei vollen Tank kennen. Den 
Volumeninhalt weist du ja (0l und xxl). Erst dann kannst du a und b 
ausrechnen.
Vorraussetzung ist natuerlich ein linearer Zusammenhang zwischen 
Frequenz und Volumen.

von Dennis K. (scarfaceno1)


Lesenswert?

Also eigentlich weiß ich die Kapazität bei leerem und vollem Tank schon. 
Ich habe verschiedene Messungen mit einem Kapazitätsmesser an den 
Elektroden durchgeführt und dabei auch verschiedene Längen der 
Elektroden ausprobiert.
Wie zu erwarten gibt es dort einen linearen Zusammenhang.
Ich weiß also den den min und max Wert, der auftreten kann.
Die Frequenz ändert sich ja nicht bei meiner Messung. Die wird über den 
µC
fest vorgegeben. Lediglich das Das Pulsbreitenverhältnis ist ein 
anderes.

Vielleicht nochmal etwas genauer der Aufbau.
Ich lade einen Kondensator über einen 0,1%igen Widerstand. Das ganze 
lasse ich dann über den Analog Comparator abtasten. Wenn die Kondensator 
Spannung den Schwellwert überschreitet, schaltet der ACOja auf High.
Ich frage den Ausgang zyklisch ab und addiere die High Zustände.
Haben die High Zustände ein gewisses Verhältnis höre ich auf (zwecks 
Fehlerbeseitigung) zu zählen und beginne mit der Auswertung.
Über das Poti soll nun in die Auswertung mit eingefasst werden wie hoch 
der Tank ist, da ja unterschiedliche Kapazitäten zu einem von der 
Tankhöhe abhängigen Füllstand führen. Jetzt ist eben nur die Frage, wie 
ich diesen am besten berücksichtige...

von Helmut L. (helmi1)


Lesenswert?

Dennis Kaufmann schrieb:
> Lediglich das Das Pulsbreitenverhältnis ist ein
> anderes.

Ob Frequenz oder Pulsbreitenverhaeltnis ist bei der Messung eigentlich 
egal.

Dennis Kaufmann schrieb:
> Über das Poti soll nun in die Auswertung mit eingefasst werden wie hoch
> der Tank ist, da ja unterschiedliche Kapazitäten zu einem von der
> Tankhöhe abhängigen Füllstand führen.

Und was soll jetzt das Poti da bewirken? Du kannst doch nicht mit einem 
Poti einen Wert exakt einstellen. Versuch doch mal einfach durch drehen 
am Poti ohne Messung/Feedback einen Wert exakt einzustellen. Also ich 
kanns nicht. Warum machst du dann nicht da ein Drehgeber dran und ein 
kleines Display zum Feedback. Oder 2 Tasten rauf, runter. Auf jedenfall 
must du zur Kontrolle da ein Display dran haben.

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.