Grüße *, ich möchte mit einem PIC24 mit der CTMU extrem kleine Kapazitätsänderungen messen, möglichst ohne externe Beschaltung (außer der zu messenden Kapazität natürlich). Mit einem syndhaft teuren LeCroy hab ich herausgefunden, daß die zu messenden Kapazitäten im Bereich von 10pF bis 14pF liegen. * Konzept bisher (CTMU) war: - Entladen - eine bestimmte Zeit t laden mit I=konst. - ADC anwerfen und Spannung messen - Ergebnis als ADC INTEGER: 3100-4096 => Es gehen also viele schöne Bit des ADC ungenutzt verloren. Nun könnte ich einen externen Meßverstärker nehmen, etc.pp., aber das macht das ganze unglaublich komplex; ich hab leider keinen Platz mehr auf der Platine. => Ich könnte noch versuchen, die Vref- auf die maximalen 1V anzu- heben, brauche aber eine belastbare Spannungsquelle, da der Vref- beim Messen Strom zieht. * Konzept neu (wieder CTMU): - Entladen - Komparator auf 1.8V - Timer=0; Timer-Start; - Laden mit I=konst. - Zeit messen, bis Komparator==1 => Keine fixe Meßzeit mehr (verschmerzbar) => Potentiell 16bit Timer, also größere Auflösung Habe ich einen Denkfehler? Läßt sich mit Bordmitteln des besagten PIC noch anders eine extern-bauteil-arme Lösung realisieren? Danke, Christoph
Bei Microchip gibts ne Appnote dazu. Also ich hab das mal für einen Feuchtesensor verwendet. Die CTMU habe ich persönlich als etwas zickig empfunden, es geht aber und ist exakt wenn man sie kalibriert. Ich verwende dazu die 550nA Stromquelle des PIC. Als Schaltung am Pin habe gar nichts, nur den Sensor. An einem anderen PIN hängen ein paar MOhm zur Kalibrierung der Stromquelle. Ein Ablauf läuft so: - Kapazität entladen - ADC Sampleswitch öffnen (wichtig!) - Stromquelle anwerfen - Eine genau definiert Zeit warten - Sampleswich schließen und konvertieren - ADC auslesen Und das macht man z.B. 16 mal und nimmt den Mittelwert. Das lässt sich als "Backgroundtask" machen, wenn man einen Timer nimmt (den man eh braucht). Der ADC-Wert repräsentiert deine Kapazität: C=(I*Messwert)/Messzeit I ist aus der Kalibrierung der Stromquelle bekannt und konstant, Messzeit ist per Definition bekannt, das stellt man im Code sicher. Den Messwert wirft der ADC aus. Den Sampleswitch schließen und die Stromquelle ausschalten muss man also in der Timer-ISR machen. Mit der 550nA-Stromquelle kann man extrem kleine Kapazitäten messen. Beispielseweise bei 8MHz hat man eine Auflösung von ca. 0,07pF. Wie groß die zu messende Kapazität ist muss man ungefähr wissen, oder man probiert es durch - je nachdem muss man die Zeit wählen. Das Verhalten ist dabei linear - die Spannung am C steigt linear an. Warum man den Sampleswitch zu Anfangs öffnen muss, wird klar, wenn man bedenkt dass der ADC Samplekondensator auch ein paar pF hat. Die ADC, Pin und sonstige parasitäre Kapazität tritt als konstanter Offset in auf. Laufzeiten im Code müssen auch konstant sein. Ich messe den Strom wie die Kapazität, nur an einem passenden Widerstand statt an einer Kapazität.
Grüße WehOhWeh, Danke für Deine Antwort, das ist im Prinzip ja genau, was ich auch schon mache. Eine Frage hab ich aber zum Sample-Switch: Warum öffnest Du den, während die externe Kapazität geladen wird? Denn wenn Du ihn dann zum Messen schließt, verteilt sich doch die Ladung auf die S/H-Kapazität und die zu messende Spannung sinkt. Ich: - Vorher (mit CTMU laden): C(ext/*variabel*)+C(leitung)+C(pin)+C(s/h) - Nachher (mit ADC messen): C(ext/*variabel*)+C(leitung)+C(pin)+C(s/h) Du: - Vorher (mit CTMU laden): C(ext/*variabel*)+C(leitung)+C(pin) - Nachher (mit ADC messen): C(ext/*variabel*)+C(leitung)+C(pin)+C(s/h) ICh steh grad etwas auf dem Schlauch, wie sich die nachträgliche Parallelschaltung von Kapazitäten (nach dem LAden) auf die Spannung auswirkt: Gewinne ich dadurch Präzision, und falls ja, warum? Danke, Christoph
Christoph Söllner schrieb: > ICh steh grad etwas auf dem Schlauch, wie sich die nachträgliche > Parallelschaltung von Kapazitäten (nach dem LAden) auf die Spannung > auswirkt: Gewinne ich dadurch Präzision, und falls ja, warum? Da hast du eigentlich recht. Eigentlich müssten sich die Ladungen gemäß Kapaziätä verteilen und dann müsste die Samplekapazität als konstanter Offset in Erscheinung treten und man kann sie wegabgleichen. So genau habe ich das noch gar nicht betrachtet. Ein Problem hat man allerdings, es gibt einen Stromstoß beim laden der Samplekapazität, den man natürlich vermeiden kann, indem man den Sampleswitch vorher öffnet. Auch weiß ich nicht, wie die Stromquelle des PIC auf den plötzlichen Kurzschluss reagiert. Die hat ja auch nur eine begrenzte Bandbreite. Ich habe das generell aus dem Reference Manual entnommen (Kapitel 53.6): http://ww1.microchip.com/downloads/en/DeviceDoc/39743a.pdf Dort ist auch Beispielcode drin, in dem wird das auch so gemacht.
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.