Hi, wie kann ich einen Kondensator ziemlich exakt mit dem µC messen lassen? Ich hab nämlich einen Feuchtesensor, und der ist ein variabler Kondensator. Andere Sensoren (~1µF) lass ich über ne Astabile Kippstufe mit einem NE555 ausmessen, der ein Rechtecksignal je nach Kondensatorgröße erzeugt. Nur ist mein Problem, dass der Feuchtesensor im Bereich von 120pF und 180pF liegt, und der NE555 ist eben zu ungenau um so kleine Werte zu "messen". Ich hab auch schon das hier gefunden: http://www.mikrocontroller.net/forum/read-1-85196.htm nur das hilft mir nicht wirklich weiter. Ich hab 'nen 8515, und der sollte laut Beschreibung einen Analog-Komparator haben. Nur hab ich noch nie mit dem gearbeitet, und weiß deshalb auch nicht, wie ich den per Code ansprechen und auswerten lassen kann. Hat mir also jemand zufällig eine Idee und ein bisschen asm-Code, wie ich den Analog-Komparator bedienen kann? thx
Guck mal hier: http://www.mikrocontroller.net/wiki/AVR-GCC-Tutorial#Messen_eines_Widerstandes Wenn du den Widerstand fest dimensionierst, kannst du den Kondensator messen.
Sponatn fallen mir 3 Methoden ein: - mit Hilfe eines Oszillators (RC): Frequenzmessung - Ladezeit messen beim Anlegen eines Konstantstromes - Sinusschwingung an RC Reihenschaltung und Signalpegel am R messen Umsetzung: Bequem geht das mit dem 1. Vorschlag: XR2206 VCO aufbauen, den Cx anschließen und die Frequenz messen. dafür brauchz man aber ein solches IC. Vorschlag 2 erfordert einen schnellen Timer, besonders bei kleinen Kapazitäten. Vorschlag 3 ist unangenehem, da man hier entweder den Sptzenwert der Sinusschwingung oder den Effektivwert mißt. Also ich würde mich an Vorschlag 2 machen. Formel: U = I*t/C Gerhard
Also praktisch so: |------------------| | |(A) | ------- | | .-. | | | | R = 10M | | | | | | '-' | |(B) | | uC ------- | | | | | --- | | --- Cx | | | | | | | | === | | GND | | | | |------------------| A ist Ausgang: einschalten, B mit Interrupt (D2) verbinden und auf Interrupt warten? Müsste das so gehen? Dann wäre ja U*C/I=t bei I=U/R ==> R*C=t bei R=10M und C=150pF => 0,0015 sec. Müsste sich ja eigentlich gut auslesen lassen. Aber funktioniert das überhaupt so, wie ich oben gedacht habe? thx
Hallo Alex grundsätzlich ja. Nur ist der Strom bei der Schaltung nicht konstant. Damit ist die Ladekurve keine Gerade. Aber nach "Ladezeit = 5 Tau" und Tau = R*C kann man das annähernd so berechnen. Fehler müßte man mal berechnen. Aber sonst wäre das eine billige Lösung. Gerhard
Ach ja und nochwas: Besser wäre es vermutlich einen Komparator zum Erfassen der Spannung am C zu verwenden, genauer gesagt ein C-MOS Komparator, damit Ströme aus dem IC, wie vermutlich auch aus dem uC sonst die Messung negativ beeinflussen. Gerhard
Was denkst du, wie groß wäre der Fehler in etwa bei einem so kleinen Konensator? (~150pF)
Hm. Die Sache mit dem Konstantstrom ist durchaus nachvollziehbar. Was haltet ihr hiervon?
Den Fehler, den man über die Konstant-Spannungsaufladung macht kann man wohl gleich in die Berechnung einbeziehen. Im Moment fällt mir nichts ein, warum der Fehler von der Größe des Kondesators abhängig sein könnte. Also es muß sichergestellt sein, daß zu Beginn der Messung der Kondesator leer ist, dann unterstell ich, daß aus dem Mess-Komparator-Eingang kein Strom herauskommt, dann ist Deine Messungenaugkeit nur noch von Deinem uC anhängig (Auflösung). Du mißt dann bei einer Spannung von 5,0 Volt am Ausgang des uC bis zu einer Spannung von sagen wir mal 4,0 Volt. Da würd ich mal eine Genauigkeit von besser 3% annehmen. Gerhard
Im Anhang ist eine Konstantstromquelle, die ist aber leider nicht temperaturstabil - aber mal so als Beispiel Gerhard
Wieso fließt da kein Konstantstrom? Durch den Basisstrom(Begrenzt durch Basiswiderstand) * Verstärkungsfaktor fließt ein bestimmte Strom durch Uce
Das mit dem Konstanstrom ist absoluter Bullshit ! Die Aufladezeit bis zu einer bestimmten Spannung ist völlig linear zur Kapazität. Im Gegenteil: Bei Aufladung über einen Widerstand und 2 Widerständen als Spannungsteiler am anderen Komparatoranschluß ist die Messung sogar unabhängig von Temperaturschwankungen der VCC. Die AVR-Bauer haben da schon mitgedacht und deshalb kann der Komparator direkt den Captureinterrupt (= Zeitmeßinterrupt) ansteuern. Peter
@Simon: Wie berechnest Du den Basiswiderstand für einen Emitterstrom von etwa 1uA ? Theoretisch hast Du natürlich recht. Mit einem Basiswiderstand kann man den Kollektorstrom beeinflussen, aber ob das für einen Konstantstrom reicht - und das thermisch stabil ? gerhard
Transistor-LED-Konstant-Stromquelle: http://www.elektronik-kompendium.de/public/schaerer/currled.htm Der Transistor-LED- und der FET-Konstantstromzweipol: http://www.elektronik-kompendium.de/public/schaerer/curr2pol.htm (Hab gerade eben zufällig ein paar von den Dingern auf Vorrat fürs Steckbrett gemacht. Den FET-Konstantstromzweipol kann man vergessen, viel zu weiche Stromregelung) Aber wie Peter schon bemerkte für eine C-Meter braucht man keine Konstantstromquelle.
Jetzt bin ich aber mal gespannt, ob das geht! Nach meiner überschlägigen Rechnung ist ein 150pF-Kondensator mit einem einzigen mA (Konstant-)Strom in etwa 375 Nanosekunden auf die halbe Betriebsspannung aufgeladen. Bin gespannt, wie der Zeitloop aussieht, der das misst! mfg gerd
Bin insgesamt gespannt was die Genaugkeit angeht. Wenn das nicht bloss eine Daumenpeilung werden soll, dann sollten ja die parasitären Kapazitäten, die rund im den Kondensator auch noch mitmischen, allenfalls im einstelligen pF-Breich liegen. Wobei der Analog Comparator Pin vom µC schon mal selbst mit max 10pF dazu beiträgt. Wenn also der Aufwand sich in Grenzen halten sollte, dann wird's wohl ohne rechnerische Kompensation des solcherart inhärenten Messfehlers kaum abgehen. Sprich: Test und Kalibrierung im gesamten Temperatur- und Feuchtebereich in dem das arbeiten soll.
@A.K. eine 3-stellige Genauigkeit ist ohne weiteres drin. Zum Abgleich brauchst Du nur einen möglichst genauen Kondensator. Und den Nullpunkt abzuziehen kostet in Software nur ne simple Subtraktion. Peter
Dreistellig, also auf 0,x%, <1pF? Wie genau und konstant sind solche parsitären Kapazitäten (z.B. die Leiterbahnen auf der Platine) über den Temperatur- und Feuchtebereich in dem die Schaltung messen soll und in dem sie selbst sich befindet?
Wo wir grad bei Parasiten sind... Wenn der AVR eine 3-stellige Zeitmessung vornehmen soll, dann muss sollte die Messdauer ja wohl mindestens einige zig µsec betragen. Ich kriege dabei einen Widerstand in der Grössenordnung von einem halben MOhm raus. Nun haben µC Pins nicht bloss parasitäre Kapazitäten sondern auch Leckströme. 1µA max laut Datasheet. 0.5MOhm und 1µA...
Die Feuchte spielt überhaupt keine Rolle, solange natürlich nicht der Leckstrom des Kondensators zu hoch wird. Bei einem Ladewiderstand von 1MOhm sollte der Kondensator etwa >1GOhm haben. Um Temperaturschwankungen gering zu halten, sollte der Ladewiderstand einen möglichst geringen TK haben. Peter
Also A.K haut ganz schön auf die Tüte. Eine Genaugigkeit (nicht Auflösung) von 3 Stellen ist wahrscheinlich gar nicht nötig, weil (die meisten) kapazitiven Feuchteensoren eh ziemlich ungenau sind. Die Temperatur muss sowieso zwingend mitgemessen werden, da die Kapazität des Sensors und die relative Feuchte temperaturabhängig sind und korrigiert werden müssen. Ein Blick ins Datenblatt sagt, der AnalogKomperator des 8515 hat einen Leckstrom von 50n(nano)A, das entspricht bei 5V einen Eingangswiderstand von 100M(mega)Ohm. Trotzdem würde ich die Schaltung mit einem externen Komperator aufbauen. Nimm die CMOS-Variante des 555 => ICM7555 von MAXIM hat Eingangsströme im pA-Bereich und kann Kondensatoren im 10pF-Bereich noch handeln. Am kontinuierlich erzeugten Takt über den Zähler des 8515 die Frequenz messen sollte dann kein Problem sein. Die Versorgung des 555 muss gut stabilisiert und gepuffert sein. Sven
Die 3 Stellen waren ja nicht meine Idee, ich hab da bloss Peter etwas Kontra gegeben ;-). Dass für den Komparator andere Werte gelten hatte ich übersehen, danke.
Bei Kapazitäten im 100pF-Bereich neige ich eher dazu, einen sauberen LC-HF-Oszillator im MHz-Bereich zu empfehlen als so ein Digitalmonster von 555. Die Diagramme im Data sheet gehen alle nur bis 10 mikrosekunden, und das dürfte dann doch eineinhalb Größenordnungen zu langsam sein für das Lade/Vergleich/Entlade-Prinzip vom 555. mfg gerd
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.