Hallo zusammen, über die Feiertage habe ich mir die Aufgabe eingefangen in einem Behälter den Flüssigkeitsstand zu messen. Nach einem Blick in diesen Tank denke ich, dass die einfachste Lösung eine kapazitive Messung ist, da in dem Salzwasser alle korrodiert und gammelt. Das Gefäß ist ca 35-40cm tief, an die Außenwand komme ich nicht dran, sodass die "Messsonde" Wasserdicht sein soll im Dauerbetrieb (möglichst wartungsfrei) Aus meiner Schulzeit weiß ich noch, dass Kondensatoren ihre Kapazität abhängig vom Dielektrikum ändern, sodass ich mir gedacht habe 2 Kupferadern wasserdicht an einem PVC Rohr (ca. 2-3cm Durchmesser) zu verwenden. Als Kapazität habe ich dann *2,5pF* bzw. 200pF für die extremen Füllstände. Für mich wäre es am einfachsten den Kondensator über einen Widerstand aufzuladen und dann zu messen wie lange er für die Entladung (auf ein definiertes Level) über einen bekannten Widerstand benötigt, sodass ich so die Kapazität ermitteln kann. - Da der Messwert nur ca 1 mal alle 10 Sekunden benötigt wird, kann dies auch gerne lange dauern. Dabei sind jetzt jedoch 2 Fragen, die ich nicht abschließend klären konnte wofür ich Eure Erfahrung brauche: a) Habe ich einen dicken Denkfehler gemacht?! b) Kann ich mit dem ADC regelmäßig die Spannung messen ohne, dass ich die Quelle (Kondensator) so stark belaste und die Messung damit verfälsche? Idee zum Programmcode: in einer Endlosschleife: -bis Startspannung erreicht ist, Kondensator über Output aufladen -Aufladespannung abschalten, Entladung aktivieren -Zeitcounter=0 -TimerInterrupt aktivieren -bis Endspannung erreicht via ADC Spannung messen -TimerInterrupt deaktivieren -Entladung deaktivieren, aufladen starten -Zeit->Kapazität umwandeln -Ergebnis via UART weitergeben
Bau einen Oszillator auf dessen Frequenzbestimmende Kapazitaet dein Fuehler ist. z.B mit einem NE555. Dessen Frequenz misst du mit einem der Timer im uC. Schon hast du deinen Messwert. Den ADC brauchst du dabei nicht.
Die Kapazitäten sind sehr klein. Da reicht ein Mückenfurz, um sie zu laden oder zu entladen. Du wirst sehr auf Isolation achten müssen. Ich würde eher einen Oszillator bauen und die Frequenz messen.
Also das mit den Kupferadern und dem Rohr verstehe ich nicht. Du musst dem Wasser schon die Möglichkeit geben ZWISCHEN die Kupferadern zu kommen. Und zur Auswertung natürlich einen Oszillator.
Es kommt auf den ADC an, wie hochohmig das ist. Das Reicht von etwa 50 Ohm mit Flash ADCs bis einigen GOhm bei etwa einen ICL7106. Bei einer sehr hochohmigen Quelle wird man aber vor allem mit eingekoppelten Störungen rechnen müssen und auch nicht direkt mit dem ADC messen. Für die Methode über die Zeitmessung wird man eher einen analogen Komparator nutzen und eher nicht den ADC. Wenn man es häufig genug wiederholt könnte das verfahren auch funktionieren. Bei 100 pF wird die Zeit aber eher kurz sein. Mit z.B. 100 kOhm als Widerstand sind das nur rund 10 µs - groß warten muss man da nicht, und die Zeitmessung sollte man weitgehend der Hardware (z.B. ICP Funktion beim AVR) überlassen. Für die Messung vom Kapazitäten gibt es noch andere Möglichkeiten, die auch weniger anfällig auf Störungen sind. Man kann die Kapazität z.B. als Teil einer Ladungspumpe nutzen und den Strom messen.
Unwissender schrieb: > b) Kann ich mit dem ADC regelmäßig die Spannung messen ohne, dass ich > die Quelle (Kondensator) so stark belaste und die Messung damit > verfälsche? Kommt schwerstens auf den ADC an. Die lausigen ADCs im AVR haben IIRC so um 15 kOhm Eingangswiderstand, während beim ADS1298 im Datenblatt 500 MOhm - 1 GOhm steht. Eine Frequenzmessung analog zu Qtouch wäre vermutlich besser geeignet als der ADC.
Ich würde es so versuchen: An einem Pin des Mikrocontrollers eine Rechteckspannung generieren, über einen Widerstand die Kapazität umladen (Die Mess-Kapazität und der Widerstand bilden einen Tiefpass), an der Kapazität die Spannung mit einem Digital-Eingang des Controllers erfassen, an dem über Input-Capture genaue Zeitmessungen möglich sind. Da man die Timer mit recht hoher Frequenz laufen lassen kann, lässt sich so auch eine kleine Zeitverzögerung sicher messen, und der Widerstand muß gar nicht so hochohmig sein, dann hält sich die Störempfindlichkeit in Grenzen, und Du hast viele Messwerte, aus denen sich dann Rauschen und Störungen rausrechnen lassen. Je langsamer man das alles macht, um so empfindlicher wird es. Welchen Controller willst Du verwenden? Bei einem ATmega würde sich Timer1 dazu anbieten: Priode mit OCR1A festlegen, über OCR1B und den zugehörigen Ausgang eine PWM mit 50% einstellen, und das als Signal an den Sensor nutzen, als Eingang dann den ICP-Pin verwenden. Einmal konfiguriert, läuft das dann von alleine, und du musst nur die Messergebnisse aus dem Input Capture Register lesen (ICR1), eventuell im Input Capture Interrupt. Die Mess-Anordnung besteht dann nur aus dem Mikrocontroller, einem Widerstand, und dem Sensor selbst. Für gute Ergebnisse sollte Der Controller nahe der Meßstelle angebracht werden, die Daten können ja z.B. per UART weitergereicht werden. Mit freundlichem Gruß - Martin
Wow vielen Dank für die ganzen Antworten; Gut das mit der Entladung verwerfe ich dann erst mal... Von dem Oszillator-Kram habe ich noch nicht so viel Ahnung, deshalb eine weitere Frage, ob das so richtig ist bzw ich das machen kann: http://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/555_Astable_Diagram.svg/220px-555_Astable_Diagram.svg.png Ich verwende Widerstände mit 1 MOhm für R1 und R2, C ist meine Messsonde, damit sollte ich auf eine Frequenz von 2,4kHz bis 213kHz kommen. Den rotmarkierten Output schließe ich an einen geeigneten AVR-Pin und messe damit die Zeit zwischen der steigenden und fallenden Flanke. Die gemessene Zeit ist direkt linear abhängig von der Kapazität, die linear vom Füllstand abhängt.
Unwissender schrieb: > Als Kapazität habe ich dann *2,5pF* bzw. 200pF für die extremen > Füllstände. Du vergißt daß ein IC-Pin auch schon 3-5pF für die ESD-Schutzdioden braucht. Außerdem hast Du sicher eine Zuleitung bis zum auswertenden IC mit 33-100pF/m Kapazität. Gruß Anja
Ich wurde unten ein Gewinde in den Tank machen Drucksensor einschrauben und gut. Je nach Füllstand kannst du einen anderen Druck messen den du auf denn Füllstand umrechnest.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.