Ladezeit eines Kondensators bestimmen?

Hallo miteinander!

Ich habe folgendes Problem: Ich möchte einen (sehr kleinen - ein paar pF) Kondensator laden und über die erreichte Spannung die Ladezeit bestimmen. Ich habe allerdings die Befürchtung, dass über "analogRead" der Kondensator wieder entladen wird.

Stimmt meine Befürchtung? Wenn ja, wie kann man sowas realisieren?

Danke schon mal für Eure Anregungen.

Ich habe allerdings die Befürchtung, dass über "analogRead" der Kondensator wieder entladen wird.

Stimmt meine Befürchtung? Wenn ja, wie kann man sowas realisieren?

Ja.
Zum Zeit Messen ist analogRead ja wohl das schrägste was ich mir vorstellen kann.

Bevor ich was von millis() und micros() und Timer und Interrupt schreib,
denk ich, dass da was ganz anderes hinter steckt.

Der AD-Wandler des ATMega funktioniert, in dem er intern einen 14pF Kondensator auflädt.

Solltest du also versuchen die Spannung an einem anderen pF-Kondensator zu messen, so wird die Messung schon alleine dadurch verfälscht, dass sich die Ladungen auf beide Kondenstoren verteilen.

Vielleicht wäre es hilfreich, wenn du mal beschreibst, was du eigentlich tun willst?
Es gibt ja vielleicht andere Lösungen, als die Spannung eines Kondensators zu messen.

Gunther

Es geht mir um die Unterschiede der Ladezeit von zwei Kupferflächen mit unterschiedlichen Dielektriken (u.a. Wasser, Gips, nasse, feuchte, trockene Erde). Es handelt sich dabei nicht um ein zu realisierendes Projekt, sondern ums rumexperimentieren. Im Netz hab ich gelesen, dass ich bei zwei Euro-Leiterplatten eine Kapazität von ein paar pF hinbekommen werde.

OK.

"Wie kann ich die Kapazität eines Kondensators mit einem Arduino messen"

ist also die Aufgabe für unsere Arduino / Elektronik - Experten

Hallo daeuklau,
mein Tip wäre: bau einen astabilen Multivibrator mit einem NE555 auf.
Damit kannst du ein Rechtecksignal generieren, dass mit dem Arduino messbar ist (Pulsdauer).
Bei Änderungen der Kapazität ändert sich proportional die Frequenz des Rechtecksignals. Damit müsste man auch kleine Änderungen relativ gut messen können.
Hier http://freespace.virgin.net/matt.waite/resource/handy/pinouts/555/ kannst du mal mit unterschiedlichen Werten R und C rumspielen.
Diese Methode findet auch Anwendung bei der Bodenfeuchtemessung, such mal nach "kapazitiver Bodenfeuchtesensor".
Gruß Reinhard

Richtig,
die Methode Kapazitätsmessung mit NE555 ist hier ganz gut beschrieben:
Klaus Rohwer - Genaue Kapazitätsmessung - ganz einfach

Wenn du mal nach Kapazitätsmessung googlst, dann kommen noch einige andere Methoden hoch.

Aber bedenke: 1m Zwillingsleitung hat unter Umständen auch schon 30pF Kapazität.
Also die Leitungen vom NE555 zum "kondensator" kurz halten.

Gunther

Danke schön, die Herren!

Dann versuch ichs mal mit der Methode. Vielleicht könnt ihr mir noch schnell einen Tip geben (nur ganz grob), wie ich mit dem Arduino genau eine Sekunde lang die Signale messen kann.

daeuklau

wenn 1 msec nicht genau genug ist, nimm micros()

Was meinst du mit Signale messen ?
Analog dauert

naja, wenn ich das richtig verstanden habe, liefert dieser NE555 lows und highs in Frequenzen abhängig von der Kapazität. Diese muss ich ja schließlich zählen, bzw. den Zeitabstand zwischen zwei Zuständen messen, nur wie...

Ohne mich da detailliert eingearbeitet zu haben:

Es gibt eine eigene Library für solche zwecke:

FreqcounterLibrary

Gunther

Ohne mich in NE555 detailliert eingearbeitet zu haben:
Es kommt nur auf das Produkt aus R*C an, d.h. mit passendem R kannst du eine angenehme Frequenz einstellen, und dann Belieben in loop() oder in einer ISR Pulse zählen bis die Genauigkeit gut genug ist. ( d.h. nach Belieben )

f ~ R * C --> Capacity = MYCONSTANT * (millis() - startmillis) / Count;

Schau mal da rein:

Dietmar Weisser: Bodenfeuchte Senso

Gunther

Der dort beschriebene Sensor hat einen Vorläufer, welcher die kapazitive Feuchtigkeitsmessung mithilfe eines 74HC14 (Schmitt-Trigger Inverter) realisiert.
Hierfür ist Digitaler RC-Oszillator: Elektronik-Magazin die simpleste Möglichkeit,

Bei einem Widerstand von 1M (empfohlen 4.7k .. 4.7M) ergeben sich Pulsdauern von in der Größenordnung von 1ms/nF.
Bei 100pF also Frequenzen im 10kHz Bereich, die bequem mit einer ISR gezählt werden können.

Die FrequentCounterLibrary sollte bei noch schnelleren Pulsen mitkommen

daeuklau:
Danke schön, die Herren!

Dann versuch ichs mal mit der Methode. Vielleicht könnt ihr mir noch schnell einen Tip geben (nur ganz grob), wie ich mit dem Arduino genau eine Sekunde lang die Signale messen kann.

daeuklau

Du mißt nicht wieviele Impulse in 1 Sekunde kommen sondern wie lange ein Impuls ist.
http://arduino.cc/en/Reference/PulseIn
Grüße Uwe

Yo!

Danke nochmal! Jetzt hab ichs kapiert. Danke an Gunter, Michael und Erni für die basics und an Uwe für den Tip mit pulseIn. War total hilfreich. Ich werd dann mal rumwurschteln....

Schöne Grüße
daeuklau