Ich möchte mit einem AVR die Kapazitätsänderung von (Platten-)Kondensatoren erfassen (Bereich 0-40pF und 0-300pF). Ich arbeite mit dem Programm BASCOM. Der darin enthaltene Befehl "GETRC" eignet sich leider nur für erheblich größere Zeitkonstanten (Kondensatoren mit ca. 100nF) [bei 40pF ist der entsprechende Widerstand zu groß mit dem diese Zeit erreicht werden könnte!]. Habe auch einige andere Ideen (Zähler während Entladevorgang fortlaufend erhöhen) verfolgt (siehe auch Anhang). Leider reicht mir die Auflösung (Kapazitätsänderung zu Zähleränderung) nicht aus. Hat jemand Ideen oder Lösungen zu diesem Problem??
Wie wäre es mit einer Cf-Wandlung, sprich einen Multivibrator mit Rs und Cs aufbauen und die Frequenz messen? Bei 40pF liegt man doch schon im Bereich der Leitungskapazität, oder? Sprich 4-Leiter-Schaltung wäre angebracht. Vorschläge halt...
Habe bis jetzt auf diese Weise gearbeitet. Schwingkeis mit NE555 eine Hand voll Bauteile und der Plattenkondensator. Die Frequenzdifferenz dann ausgewertet. Wollte aber auf externe Bauteile verzichten und versuchen nur mit Microcontroller (möglichst wenig Bauteile) zu messen. Brauche ein Signal mit >= 20 Schritten auf 40pF.
Nimm doch einfach die Capture-Funktion des Komparators. Mit einem 1MOhm solltest Du auch bei 40pF schon gut auswertbare Zählerwerte erhalten. Die Kabelkapazitär kann man z.B. eimal im EEPROM speichern und dann rechnerisch abziehen. Peter
nicht superelegant, geht aber: c hängt über 1MOhm an Pinx und 100KOhm an int0. Pinx auf High setzen. wenn c aufgeladen wird int0 ausgelöst. int0 entlädt c über 100K widerstand und setzt pinx auf low. ebenfalls ist in int0 ein zähler enthalten, der um 1 erhöht wird. die torzeit wird mit timerx auf 1 sekunde gesetzt, wenn timerx overflow erfolgt fragste in timerinterrupt den zähler von int0 ab. kapazität ist prop. dem zählerstand. kapazitäten bis runter auf 2pF kein problem. gruss, harry
Danke Harry, habe Verständnisprobleme mit Int0-Routine. Du meinst, wenn die Spannung aufgrund des aufladevorganges steigt, erfolgt ein Pegelwechsel an Int0 von lo nach hi. In der dadurch aufgerufenen Int0-Routine soll was geschehen..??? Aufruf der Interrupt-Routine durch positive Flanke?? Pin Int0 als Eingang schalten ?? gleichzeitig Pinx = 0 ?? wann wird der Zähler erhöht (fortlaufend, in Abhägigkeit von was) ?? Hast du das ausprobiert? Dann schick mir doch mal das Programm. Ist dann leichter für mich das zu verstehen was du meinst. Danke - Marco
1. genau, wenn die spannung steigt, gibt's den int0. 2. aufruf durch pos. flanke, klar. (config int0 = rising) 3. int0 als input, richtig. 4. in der int0 routine müssen 2 dinge passieren: a) das c muss entladen werden (ladung abschalten, int0 vorübergehend als output, low setzen, schon isser leer.) b) zähler erhöhen (der die int0 aufrufe zählt das prog muss ich mal ausgraben, das war schon 'ne weile her... gruss und fröhliches gelingen, harry
Der INT0 hat keine definierte Schwellspannung, das dürfte also nicht sonderlich genau sein. Der Komparator kompensiert sogar Änderungen der Betriebsspannung. Der Komparator hat dagenen auch noch den Vorteil, daß der Timer sofort mit ausgelesen wird, d.h. man bekommt keinen zusätzlichen Fehler durch die Interruptbehandlungszeit mit rein. Den INT0 statt des Komparators zu nehmen bedeutet also nur einen Haufen verschenkter Möglichkeiten. Peter
Hi Problem dabei ist der unbekannte Schaltpunkt des Eingangs. Der ist nicht wirklich definiert. Man verwendet besser den Analog-Komperator im AVR oder einen externen Komperator. Die Aufladung des Kondensators macht man nicht mit Konstantspannung und Vorwiderstand sondern mit Konstantstrom. Da ist die Ladekennlienie über die Zeit linear und nicht logarithmisch und damit die Rechnung wesentlich einfacher. Dann kann man per C=Q/U und Q=I*t also C=(I*t)/U auf die Kapazität des Kondensators schließen. Matthias
Hallo bastel-marco, Schau mal auf der elm-chan Seite: http://elm-chan.org/works/cmc/report.html Da ist ein Kapazitäts-Meßgerät, mit automatischer Umschaltung zwischen zwei Bereichen und Kalibrierfunktion. Kann wohl zwischen 1pF und 470µF messen und benutzt einen 2313. Gruß, Chaldäer
@Matthias, ob die Ladekennlinie linear ist oder nicht spielt keine Rolle. Die Ladezeit ist immer eine lineare Funktion der Kapazität: T = k * C Und wenn der Spannungsteiler am anderen Eingang des Komparators von der gleichen Spannung gespeist wird, wie der Ladewiderstand, kürzt sich diese Spannung sogar komplett raus: k = konstant für VCC = 2,7..5,5V Peter
@ Chaldäer Danke, leider viel zu aufwendig. Wollte, wenn möglich, nur den MC und ´nen Widerstand benutzen. @ Peter Auch eine Gute Idee! Werde ich mal versuchen. Bin AVR-Anfänger und muss mich erst mal mit der Komparator-Funktion beschäftigen. Wie stellst Du dir die Beschaltung und das Programm vor??
Hi @Peter Stimmt. Uc ist ja konstant und damit ist auch der Faktor im Logarithmus konstant und damit ist das Ganze eine rein lineare Geschichte. Vermerk ans Hirn: Zuerst denken, dann schreiben. Matthias
Hm, viel mehr ist auch nicht drauf. Wichtig ist ja auch nur der Teil am Komperator. Wenn Du die Bereichsumschaltung wegläßt, bleibt nicht viel mehr, als ein paar Widerstände. Das sollte dann auch ungefähr die Schaltung sein, die peter meinte. Gruß, Chaldäer
"Das sollte dann auch ungefähr die Schaltung sein, die peter meinte." Stimmt. R1,R4,R6,Q1 sind nur eine zusätzliche Bereichsumschaltung. R7 begrenzt den Entladestrom auf ungefährliche Werte. Also minimal nur R2,R3,R5,R7 ist doch nicht aufwendig. Peter
@Chaldäer hast recht, ist dann erheblich weniger. Wollte wie gesagt möglichst auf ext. Komponenten verzichten.
peter dannegger schrieb: > R1,R4,R6,Q1 sind nur eine zusätzliche Bereichsumschaltung. ist zwar ein uralter Fred, aber das kann ich nicht so stehen lassen: R1 dient nicht der Bereichsumschaltung! Elm Chan misst aus guten Gründen nicht die Zeit zwischen 0V und einer Schwellenspannung, sondern zwischen 0,17U und 0,5U, und R1 braucht er für die Umschaltung zwischen diesen Schwellenspannungen. Walter
@Walter Das mag vielleicht bei 470µF eine Rolle spielen, aber 300pF kann man nach wenigen ms als vollständig entladen ansehen. Peter
das Peter Dannegger schrieb: > Das mag vielleicht bei 470µF eine Rolle spielen, aber 300pF kann man > nach wenigen ms als vollständig entladen ansehen. das ist der eine Grund den Elm Chan nennt, da hast du bei 330pF natürlich recht, aber zum einen besteht der andere Grund weiter: "the leakage current on analog input is increased near zero volt. This will cause a measurement error" zum anderen habe ich nur gesagt: R1 dient nicht der Bereichsumschaltung Walter
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.