Kapazitive Erfassung

Gibt es eine Möglichkeit, einen Arduino oder einen anderen Mikrocontroller dazu zu bringen, eine Kapazitätsänderung zu erkennen?

Ich denke an einen Bildschirm an meiner Tür, der sich nur einschaltet, wenn Sie den Metalltürgriff berühren.

Antworten (6)

Ja.

Der einfachste Weg wäre, einen hochwertigen Widerstand (1-10 M) zu verwenden und den Anweisungen in diesem alten Arduino-Forumsbeitrag zu folgen: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1171076259

Hier ist ein Tutorial http://www.nerdkits.com/videos/halloween_capacitive_touch_sensor/

Der eigentliche Sensor, der verwendet wird, um das Vorhandensein einer Hand zu erkennen, wird im Video ausführlich erklärt, aber hier ist eine Übersicht. Unser Sensor funktioniert nach dem gleichen Prinzip wie ein kapazitiver Berührungssensor auf Ihrem Laptop-Touchpad. Diese kapazitiven Berührungssensoren arbeiten auf der Prämisse, dass Menschen hauptsächlich aus Wasser bestehen. Wenn Sie sich einem elektrischen Feld nähern, ändern Sie die Kapazität so weit, dass sie vom Sensor bemerkt wird.

In unserem System bauen wir eine RC-Schaltung mit einem Kondensator und einem Widerstand parallel auf. Wir verwenden die MCU, um den Kondensator auf bis zu 5 V (eine digitale Hochspannung) aufzuladen. Dann verwandeln wir den Pin in einen Eingangspin, der diesen Knoten im Wesentlichen trennt. Dadurch kann sich der Kondensator über den Widerstand entladen. Die Zeit, die der Kondensator zum Entladen benötigt, hängt vom Widerstandswert mal der Kapazität ab. Wir wählen einen Widerstandswert, der groß genug ist, dass die RC-Zeitkonstante lang genug ist, damit wir sie mit der MCU messen können. In diesem Fall funktionierten 100K Ohm hervorragend. Der Sensor besteht in diesem Fall aus zwei Aluminiumfolien, von denen eine mit dem MCU-Pin und eine mit GND verbunden ist. Diese beiden Blätter bilden einen Kondensator, den unsere MCU lädt und entlädt. Wenn sich Ihre Hände zwischen den beiden Blättern bewegen, ändert sich das elektrische Feld, und damit die Kapazität unserer Stanniolvorrichtung. Der Kondensator braucht daher länger zum Entladen, und das wird durch den Code auf unserem Mikrocontroller erkannt!

Eine der besten Möglichkeiten, die ich gefunden habe, um die Kapazität zu messen, ist die Verwendung einer RC-Schaltung. Verwenden Sie einen digitalen E/A-Anschluss an einem Mikroprozessor, um den kapazitiven Sensor über einen festen Widerstand zu laden und zu entladen. Starten Sie einen Timer, wenn Sie mit dem Lade-/Entladezyklus beginnen. Verwenden Sie dann einen Komparator, um festzustellen, wann der Kondensator vollständig geladen / entladen ist. Stoppen Sie den Timer, wenn der Komparator auslöst. Der im Timer gespeicherte Wert kann dann zur Berechnung der Kapazität des Sensors verwendet werden.

Keine Arduino-spezifische Antwort, aber Microchip hat eine Erklärung für eine Möglichkeit, dies auf dem PIC zu tun - was möglicherweise auf einem AVR funktionieren würde

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en545264

Die einzige Sorge bei diesen Methoden ist der fehlende Schutz vor statischer Entladung

Ein kapazitiver Berührungssensor kann ohne zusätzliche Hardware realisiert werden. Der Trick besteht darin, das interne Hochziehen eines digitalen Pins zu aktivieren und die CPU-Zyklen zu zählen, die zum Hochziehen des Pins erforderlich sind.

Code und Erklärung: http://playground.arduino.cc/Code/CapacitiveSensor

Ich ziehe es vor, den analogen Teil der Arbeit vom Mikrocontroller wegzunehmen, indem ich den zu testenden Kondensator als Teil eines Oszillators verwende und dann den Controller verwende, um die Impulsbreite zu messen. Es ist ein zusätzliches Teil, aber ich habe auf diese Weise bessere Ergebnisse erzielt.