Forum: Mikrocontroller und Digitale Elektronik Wie stark belastet ADC Quelle


von Unwissender (Gast)


Lesenswert?

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

von Helmut L. (helmi1)


Lesenswert?

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.

von Georg G. (df2au)


Lesenswert?

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.

von Max M. (jens2001)


Lesenswert?

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.

von Ulrich H. (lurchi)


Lesenswert?

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.

von Jim M. (turboj)


Lesenswert?

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.

von Martin S. (led_martin)


Lesenswert?

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

von Unwissender (Gast)


Lesenswert?

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.

von Anja (Gast)


Lesenswert?

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

von Thomas N. (mc-newbie)


Lesenswert?

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
Noch kein Account? Hier anmelden.