Tag zusammen!
Ich wollte mal fragen, ob ich mit meiner Planung zur kapazitiven
Füllstandsmessung auf dem Holzweg bin, oder ob es so, wie ich es
vorhabe, klappen kann.
Also ich möchte den Füllstand mittels eines in einen Metallbehälter
hängenden Stabes messen. Dieser Stab ist natürlich isoliert. Auswerten
möchte ich das ganze mit einem uC.
Mein Plan:
1
-----------
2
uCPin|-----
3
||
4
|R
5
||
6
|Cx:MetallstabinBehaelter
7
||
8
Komparator|-----|
9
||
10
|GND
11
------------
Der Portpin ist anfangs auf 'low' - der C ist leer. Der Komparator hat
zwei Schaltschwellen: 0,25*Vcc und 0,5*Vcc. Jetzt stelle ich den
Threshold auf 0,25*Vcc ein und warte auf den Interrupt vom Komparator.
Wenn dieser kommt, stelle ich den Threshold auf 0,5*Vcc und merke mit
gleichzeitig einen Timer-Wert, dieser Timer läuft im Continous-Mode
immer weiter. Meldet der Komparator sich dann bei 0,5*Vcc, so nehme ich
wieder den Timer-Wert und kann die Differenz bilden.
Selbiges kann ich andersherum machen. Jetzt, wo der C ganz voll ist (er
wurde ja weiter geladen nach dem Erreichen des Thresholds, stelle ich
auf negative Flanke des Komparators um und entlade den C. Bei 0,5*Vcc
meldet er sich wieder und ich setze den Threshold weiter herab auf
0,25*Vcc. An beiden Stellen wieder den Timer-Wert merken. Ebenfalls
wieder die Differenz bilden.
Ziel des ganzen ist es, nicht nur voll/leer, sondern halt auch
dazwischen die Menge im Tank ermitteln zu können. Also am Anfang einmal
voll- und leer abgleichen.
Kann man damit erstmal überhaupt brauchbare Ergebnisse erzielen?
Wo ich selber ein wenig die Probleme momentan sehe, ist z.B. dass ich
nicht ganz weiß, wie hoch die Taktfrequenz des ganzen sein sollte, denn:
Je höher die Frequenz ist, desto eher kann mir mein Timer überlaufen -
das müsste ich also gesondert erfassen, was aber natürlich jetzt kein
Problem darstellt.
Je niedriger sie ist, desto eher kommen so Kleinigkeiten zum Tragen, wie
dass z.B. das auslesen des Timers selber und jegliche weitere Code-Zeile
weitere Takte zu meinem Ergebnis hinzufügen.
Die Wahl des Widerstandes...ich denke ja nicht, dass die Kapazität im
ganzen Gebilde sehr groß ist - eher so ein paar pF. Der Widerstand
müsste schon recht groß sein, damit der C nicht direkt voll ist.
Wie schätze ich die Kapazität generell erstmal ab?
Naja, das sind so erstmal die ersten Sachen, die mir in den Sinn kommen
- das werden noch mehr werden.
Hansen schrieb:> Wie schätze ich die Kapazität generell erstmal ab?
mit einem einfachen isolierten Stab: gar nicht.
Du brauchst noch einen Gegenpol.
Ansonsten ist Er von Wasser 81. Luft ca 1.0. Kunststoff ca 2-3.
Für eine Regentonne habe ich einen TLC555 als Oszillator und eine
Klingelstegleitung (isoliert mit breitem Steg) als Kondensator
verwendet. Bei ca 1m Leitung war die Kapazitätsänderung von ca 20 auf
120 pF.
Gruß Anja
Anja schrieb:> Der Widerstand> müsste schon recht groß sein, damit der C nicht direkt voll ist.
So isses. Damit du was Vernünftiges zählen kannst, sollten die
Ladezeiten im Bereich ms liegen; ich denke, dass Anjas Angabe von < 100
pF realistisch ist, dann brauchst du aber für eine Zeitkonstante von ms
einen Widerstand im Bereich MOhm. Das geht wohl gerade noch so, wenn man
weiss was man tut.
Robuster ist es, wie von Anja beschrieben, mit der Kapazität eine
Schwingschaltung zu bauen und deren Frequenz zu messen. Besonders wenn
man diese Schaltung am Fühler direkt unterbringt und den Taktimpuls zum
Prozessor weiterleitet. So kann man auch mit sehr kleinen Kapazitäten
arbeiten, ohne dass die Kabelkapazität mit einfliesst.
Gruss Reinhard
Bau docu eine Ladungspumpe, die mit der Ladung von deinem Sensor einen
größeren Kondensator auflädt. Dann zählst du die Anzahl der
erforderlichen Transfervorgänge, die benötigt werden um eine bestimmte
Spannung zu erreichen.
Hallo und erstmal danke für eure Rückmeldung!
Anja schrieb:> mit einem einfachen isolierten Stab: gar nicht.> Du brauchst noch einen Gegenpol.
Den habe ich ja:
Hansen schrieb:> Also ich möchte den Füllstand mittels eines in einen Metallbehälter> hängenden Stabes messen.
Der Gegenpol ist mein Behälter. Oder muss ich zwei Elektroden direkt
nebeneinander in den Behälter bringen? Müsste doch auch gegen die
Ausßenwand funktionieren.
Reinhard Kern schrieb:> einen Widerstand im Bereich MOhm
Ja, in der Größenordnung habe ich mir schon gedacht.
Reinhard Kern schrieb:> Robuster ist es, wie von Anja beschrieben, mit der Kapazität eine> Schwingschaltung zu bauen und deren Frequenz zu messen.
OK, ist vielleicht besser - im angehängten Bild habe ich einen astabilen
Multivibrator mit OPV. Ist die Geschichte so geeignet dafür?
Reinhard Kern schrieb:> Besonders wenn> man diese Schaltung am Fühler direkt unterbringt und den Taktimpuls zum> Prozessor weiterleitet.
Weit entfernt sind Schaltung und Anschluss nicht - der Plan war, ein
kleines Gehäuse zu bauen, in dem die Elektronik ist und aus dem unten
halt der Stab herauskommt und direkt in den Tank geht.
Michael schrieb:> Bau docu eine Ladungspumpe, die mit der Ladung von deinem Sensor einen> größeren Kondensator auflädt.
Sicherlich auch ne Möglichkeit, werde jetzt aber erstmal den Oszillator
weiter verfolgen. Aber danke!
So: Jetzt kommen weitere Fragen...wie sieht es hier mit den Widerständen
aus?
Ich finde im Netz folgende Formel für die Frequenz:
Weiterhin steht da, dass man R3 nach folgendem Zusammenhand bestimmt:
Also R3 halb so groß, wie R1 und R2. Aber wieso? Wenn ich das simuliere,
dann ist auch mit anderen Werten der Ausgang symmetrisch.
Geht der zusätzliche R für das halbe Potential der Betriebsspannung mit
in diese Berechnung ein? Mehr macht der doch nicht, oder?
Hansen schrieb:> Der Portpin ist anfangs auf 'low' - der C ist leer. Der Komparator hat> zwei Schaltschwellen: 0,25*Vcc und 0,5*Vcc. Jetzt stelle ich den> Threshold auf 0,25*Vcc ein und warte auf den Interrupt vom Komparator.> Wenn dieser kommt, stelle ich den Threshold auf 0,5*Vcc und merke mit> gleichzeitig einen Timer-Wert, dieser Timer läuft im Continous-Mode> immer weiter. Meldet der Komparator sich dann bei 0,5*Vcc, so nehme ich> wieder den Timer-Wert und kann die Differenz bilden.
Viel zu kompliziert.
Du entlädst den Kondensator und dann mißt Du einfach die Aufladezeit bis
zur Komparatorschwelle.
Beim AVR kannst Du dazu den Komparatorausgang als Capture-Input
programmieren, dann erhältst Du die Zeit auf 50ns [20MHz] genau.
Peter
Peter Dannegger schrieb:> Viel zu kompliziert.> Du entlädst den Kondensator und dann mißt Du einfach die Aufladezeit bis> zur Komparatorschwelle.
Hi Peter!
Ja, theoretisch reicht das natürlich. Ich dachte nur, hier muss ich
irgendwie sicherstellen, dass der Kondensator leer ist und nicht noch
irgendeine Restladung enthalten ist. Das kann ich ja so nicht messen.
Also entweder über einen zweiten Portpin sehr niederohmig gegen Masse
kurzschließen, oder eine Zeit warten nach dem Umschalten auf 'low'.
Am liebsten wäre mir eine allgemeine Lösung des Problems, also für
nahezu jeden Tank anwendbar - ohne erst mal so die Kapazität bestimmen,
die maximal und minimal vorliegt und danach die Schaltung berechnen.
(Möglichst...ganz ohne geht wahrscheinlich nicht.
Ist denn die Komparatormethode ausreichend genau? Ich habe mir jetzt mal
testweise einen Oszillator aufgebaut. C ist variabel zwischen 20 und
120pF - die Frequenz ändert sich dabei zwischen 5 - 12kHz. Also schon
ein deutlicher Unterschied.
Aufwändiger isses natürlich - daher die Frage was geeigneter ist. Da
teilen sich ja meist die Meinungen.
Also mal zu meinen vorläufigen Ergebnissen:
Ich habe jetzt einen MCP6001 als OP da drin und mein erstmal kleiner
Behälter von ca. 1l bringt leer eine Frequenz von 62kHz und voll von ca.
6kHz. Bei 6kHz ist das Signal annähernd ein Rechteck, bei 62kHz nurnoch
ein Dreieck. Liegt das an zu wenig GBW des OPs? Der hat ein GBW von
1MHz. Aber wie rechne ich denn jetzt die Verstärkung in dieser Schaltung
aus?
Das Signal sollte ja auch noch bei 62kHz ein Rechteck sein. Kann mir da
einer helfen?
Hansen schrieb:> Ja, theoretisch reicht das natürlich. Ich dachte nur, hier muss ich> irgendwie sicherstellen, dass der Kondensator leer ist und nicht noch> irgendeine Restladung enthalten ist.
Nach 1ms kannst Du ihn als entladen ansehen. Oder brauchst Du 1000
Meßwerte je Sekunde?
Hansen schrieb:> Also entweder über einen zweiten Portpin sehr niederohmig gegen Masse> kurzschließen
Keinen 2.Pin, sondern einfach den gleichen Pin für 1ms als Ausgang, low
setzen.
Dann Timer starten und als Eingang setzen.
Die Zeitmessung hat auch den Vorteil, daß der Wert proportional zur
Kapazität ist.
Bei einer Frequenzmessung ist er aber reziprok, d.h. Du mußt erst
umrechnen. Und die Auflösung ändert sich auch.
Peter
Hansen schrieb:> Liegt das an zu wenig GBW des OPs?
Ja.
Hansen schrieb:> Das Signal sollte ja auch noch bei 62kHz ein Rechteck sein. Kann mir da> einer helfen?
Deswegen nehme ich einen TLC555: Kondensator an Pin 2 + 6 und Widerstand
von Pin 3 an den Kondensator.
Pin 3 ist dann der Rechteck-Ausgang.
Alternativ Pin 7 als open drain.
Bei mir ist die Auswerteelektronik allerdings weiter weg.
Ich verwende einen Pull-Up an Pin 7 und werte dann remote die
Stromänderung des TLC555 (pullup-Strom > 4mA oder nicht pullup << 4 mA)
aus.
Gruß Anja
Peter Dannegger schrieb:> Bei einer Frequenzmessung ist er aber reziprok, d.h. Du mußt erst> umrechnen. Und die Auflösung ändert sich auch.
Man kann auch die Periodendauer (auch von mehreren Schwingungen)
auswerten.
Peter Dannegger schrieb:> Du entlädst den Kondensator und dann mißt Du einfach die Aufladezeit bis> zur Komparatorschwelle.> Beim AVR kannst Du dazu den Komparatorausgang als Capture-Input> programmieren, dann erhältst Du die Zeit auf 50ns [20MHz] genau.
Vorsicht: die Zeit ändert sich dann mit dem Offset (temperaturabhängig)
und der Versorgungsspannung des Komparators. Beim TLC555 werden bewußt
die Schwellen 1/3 UBat und 2/3 UBat gewählt. Die Periodendauer ist dann
bis auf ca 1% proportional zum Kondensator.
Die Frage die dann noch bleibt ist: wie ändert sich die zu messende
Kapazität in Abhängigkeit von Temperatur und sonstigen Einflüssen.
Gruß Anja
> Die Frage die dann noch bleibt ist: wie ändert sich die zu messende> Kapazität in Abhängigkeit von Temperatur und sonstigen Einflüssen.
Wenn sich der Füllstand nur zu bestimmten, bekannten Zeitpunkten ändert
(z.B. wenn ein Ventil aufgemacht wird) und man eben nur nicht weiß,
wieviel genau zu oder abfliesst, könnte man das kompensieren. Also wenn
sich der Füllstand nicht ändert, meine Messwerte aber schon, beziehe ich
den Offset in die nächste Messung mit ein. Meistens ändern sich die
Parameter mit Einfluss auf die Kapazität wie Temperatur,
Luftfeuchtigkeit oder Medium im Tank nicht so schnell.
Ich mach ne Füllstandsmessung übrigens mit 2 Einheiten von nem 74HC14.
Ist nicht sonderlich genau aber funktioniert zuverlässig. Ich will nur
rechtzeitig vor Leer gewarnt werden, einen genauen Füllstand brauche ich
nicht wirklich.
Gruß,
Gerd
Hi
den Ansatz mit dem TLC555 finde ich recht gelungen. Die anderen sind in
der Tat sehr "störanfällig". Vor allem für meine Anwendung (Tankanzeige
Motorschirm) ist dies ein wichtiges Kriterium.
@Anja: wie meinst du das mit "Widerstand von Pin 3 an den Kondensator"?
Ich nehme an du sprichst von der Standardbeschaltung aus dem
Datenblatt?! Wobei
der Sensor ist. Dazwischen ist aber kein Widerstand. Kannst du
vielleicht einmal einen Schaltplan mit deinen Widerstandswerten
veröffentlichen?
Müssen die Messstäbe zwingend vollständig isoliert sein? Ist der
Widerstand der über das Medium entsteht kontraproduktiv? Reicht ein
Schrumpfschlauch oder müssen sogar die Enden isoliert sein?!
Hat das jemand schon einmal mit einem Benzintank versucht? Die
Dielektrizitätskonstante ist ja leider wesentlich geringer als die von
Wasser. Da ich einen Plastiktank habe überlege ich evtl die Kontakte
(Platten) aussen am Tank zu befestigen. Was haltet ihr davon??
Gruß
Jürgen
Anja schrieb:> Vorsicht: die Zeit ändert sich dann mit dem Offset (temperaturabhängig)> und der Versorgungsspannung des Komparators.
Wenn man den 2. Komparatoranschluß über einen Spannungsteiler aus der
VCC gewinnt, kürzt sich die VCC raus (wie beim 555).
Man kann auch mit dem ADC-Multiplexer den Komparatoreingang umschalten
und dann einen Referenzkondensator ausmessen.
Der TK des 555 dürfte auch nicht besser als der des ATtiny Komparators
sein.
Der 555 ist kein Präzisionskomparator.
Peter
Stimmt.
Nicht schlecht... So einen hab ich rum liegen (im Gegensatz zum TLC555).
Dann muss ich nächste Woche nur_noch Experimente mit Benzin machen.
schluck
Die Info über die Isolation der Stäbe will ich vielleicht an der Stelle
nochmal kurz pushen...
Danke
Jürgen
Irgendwo hier gab's das doch schon mal ...
Der 556 ist besser geeignet.
Sind zwei 555 in einem Gehäuse.
Der eine C kriegt die Referenzmessung mit dem KerKo im Medium
(isoliert),
der andere C ist die Sonde (Alurohr als Masse und innen ein Draht
gespannt).
Die Differenz der Ausgangsfrequenzen ist das Maß für den Füllstand, so
kürzt sich der Temperaturfehler 'raus.
So habe ich das auch mal probiert und mit akzeptablen Werten, auch bei
Temperaturschwankungen, auswerten können.