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?
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.
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.
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
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.
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 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;
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
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.
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....