Messen von niederohmigen Kondensatoren mit Arduino/Atmel

Ich habe kürzlich bei Sparkfun ein Kit gekauft , um Kondensatoren zu messen. (Was eigentlich das ist.) Es funktioniert gut und misst sehr kleine Kondensatoren genau, aber die Firmware ist nicht Open Source, und ich möchte ihre Funktionalität in einen Atmega168 integrieren, der eine Reihe anderer Dinge tut (aber keine Anzeige auf eine LED, wie diese). Das Kit verwendet einen Atmega48.

Ich habe Chris Strattons Alpha einer möglichen Open-Source-Ersatzfirmware ausprobiert: http://github.com/cstratton/atmega_capmeter , aber es scheint nur mit einer Anzeige von 00.0P zu hängen, nachdem kurz eine Anzeige von "3210" angezeigt wurde. Ich bin neugierig, ob jemand den Algorithmus kennt, den das Jyetech-Kit verwendet. Es ist eindeutig nicht das hier besprochene: http://arduino.cc/en/Tutorial/CapacitanceMeter , da diese Technik bei Kondensatoren mit niedrigem Wert fehlschlägt. (Ich habe es mit großen Widerständen versucht, aber es hat keine Kapazität mit Kondensatoren von weniger als etwa 0,01 Mikrofarad festgestellt.) Ich verwende diese Technik, um sich ändernde Niveaus eines Dieseldielektrikums in einem speziellen Kondensator zu messen, der zur Messung des Kraftstoffstands entwickelt wurde, und für Damit dies funktioniert, benötige ich eine sehr genaue Messung der Kapazität mit niedrigem Wert.

Ich sollte erwähnen, dass ich auch versucht habe, den Kraftstoffstand mit IR- und Ultraschall-Entfernungsmessern zu messen, die für meine Anwendung zu ungenau sind.

Wären Sie bereit, ein TI MSP430 Launchpad anstelle eines Atmel-Mikrocontrollers zu verwenden? Der MSP430 verfügt über einige hervorragende Beispiele für kapazitive Abtastung (das Zeug mit kapazitiven Berührungssensoren), das sehr gut für die Picofarad-Kapazitätsmessung funktioniert.
Bitte lesen Sie diesen Artikel , der die Herstellung eines Kapazitätsmessgeräts beschreibt, das mit einem MSP430 Launchpad für sehr kleine Kondensatoren funktioniert.
Ich habe gerade die Arduino Capsense-Bibliothek ausprobiert , um zu sehen, ob sie das tun kann, was ich brauche, da sie theoretisch sehr kleine Kapazitäten erkennen kann. Leider hat es bei mir nicht funktioniert. Es scheint Änderungen der Kapazitäten zu erfordern, um das zu tun, was es tut; Es misst keine absolute Kapazität von einem Kondensator (oder zumindest kann ich es nicht erreichen). Es dauerte eine Weile, bis ich sicher war, dass die digitalen und nicht die analogen Eingänge des Atmega verwendet wurden (da es im Internet überraschend wenige Schaltpläne davon gibt).

Antworten (1)

Soweit ich auf einen Blick sehen kann, scheint es eine einfache RC-Ladezeitberechnung zu verwenden. Es sieht so aus, als ob der Pin wahrscheinlich auf Low gesetzt ist, um sich zu entladen, dann auf Input gesetzt wird und darauf wartet, dass der 3,3-MΩ-Widerstand ihn auflädt, und daraus berechnet. Da der Pin kein analoger Eingang zu sein scheint, scheint es, dass sie den hohen CMOS-Eingangspegel verwenden, um den "Endpunkt" zu bestimmen.

Ich kann mich in einigen der oben genannten Punkte irren, da ich keine AVr-Mikros verwende, aber ich sehe keinen anderen offensichtlichen Weg, Dinge zu tun. Im Allgemeinen gibt es die RC-Konstantmethode, die in vielen Hobby-/Low-End-Metern verwendet wird, die LC-Tankmethode, die auch für einige Hobbyprojekte verwendet wird (die bekannteste ist wahrscheinlich die Elsie-Meter), oder die angewandte Signal- und komplexe Zahlenberechnungsmethode, die die meisten kommerziellen LCR-Messgeräte verwenden.

Kommerzielle LCR-Messgeräte verwenden eine sehr saubere Sinuswelle bei typischen (normalerweise wählbaren) Frequenzen von 1 kHz, 10 kHz, 100 kHz usw. Sie legen das Signal über die Komponente mit einem Shunt-Widerstand an und messen das Verhältnis zwischen Spannung/Strom und der Phase zwischen ihnen. Von dort aus können Sie berechnen, was Sie wissen müssen (Impedanz, ESR, Q usw.). Die besseren enthalten auch eine 4-Draht- Erfassungseinrichtung, auch mit einem Schutzanschluss.
Ich habe hier ein Mastech MS5308, das ein sehr schönes Beispiel für ein solches Messgerät zu einem guten Preis ist - es geht bis auf 0,01 pF bei einer Genauigkeit von ~ 2%.

Wie auch immer, für Ihre Zwecke würde ich, da dies eine benutzerdefinierte Anwendung ist, die Tatsache ausnutzen, dass:

  • Sie kennen bereits ungefähr den Messbereich und dass die Kapazität ziemlich klein sein wird
  • Da es sich um die Kraftstoffstandserfassung handelt, würde ich mir vorstellen, dass die absolute Genauigkeit keine Rolle spielt (was gut ist, da eine genaue Messung von pF schwierig ist), es ist nur die relative Änderung, an der Sie interessiert sind.

Also würde ich etwas entwerfen, das nur einen Messbereich von z. B. 1 - 100 pF hat (oder was auch immer Ihr Bereich zwischen leer/voll ist) und leicht kalibriert werden kann (z. B. die Messwerte bei leer auf Null setzen). Es gibt viele Projekte, die Sie sich ansehen
könnten an und kneifen Sie Ideen aus. Die RC-Zeitkonstante ist wahrscheinlich der einfachste Weg, aber bei niedriger Kapazität schwierig. Ich denke, ich würde wahrscheinlich so etwas wie die Elsie-Methode wählen.
Alternativ gibt es Mikros mit kapazitiver Touch-Sense-Peripherie, die in diesem Szenario verwendbar sein könnten. Ich weiß nichts über AVRs, aber zum Beispiel hat der PIC16F1828 ein kapazitives 12-Kanal-Touch-Peripheriegerät.

Hier ist, was wie eine AVR-basierte Version des PIC-basierten Elsie-Messgeräts aussieht, mit Schaltplan und Quellcode, also vielleicht einen Blick wert.