Gibt es eine Möglichkeit, mit einem Arduino oder einem anderen Mikrocontroller 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.
Gibt es eine Möglichkeit, mit einem Arduino oder einem anderen Mikrocontroller 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:
Ja.
Am einfachsten wäre es, 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 tatsächliche Sensor, mit dem das Vorhandensein einer Hand erkannt wird, wird im Video ausführlich erläutert. Hier finden Sie jedoch eine Übersicht. Unser Sensor arbeitet nach dem gleichen Prinzip wie ein kapazitiver Berührungssensor auf Ihrem Laptop-Touchpad. Diese kapazitiven Berührungssensoren gehen davon aus, dass Menschen hauptsächlich aus Wasser bestehen. Wenn Sie sich einem elektrischen Feld nähern, ändern Sie die Kapazität so weit, dass der Sensor sie wahrnimmt.
In unserem System haben wir eine RC-Schaltung mit einem Kondensator und einem Widerstand parallel aufgebaut. Wir verwenden die MCU, um Kondensatoren bis zu 5 V (eine digitale Hochspannung) aufzuladen. Dann verwandeln wir den Pin in einen Eingangs-Pin, 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 multipliziert mit der Kapazität ab. Wir wählen einen Widerstandswert, der groß genug ist, dass die RC-Zeitkonstante lang genug ist, um mit der MCU gemessen zu werden. In diesem Fall haben 100K Ohm hervorragend funktioniert. Der Sensor besteht in diesem Fall aus zwei Aluminiumfolienblättern, von denen eines mit dem MCU-Pin und eines mit GND verbunden ist. Diese beiden Blätter erzeugen 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 Zinnfolienvorrichtung. Die Entladung des Kondensators dauert daher länger, und das erkennt der Code auf unserem Mikrocontroller!
Eine der besten Möglichkeiten, 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 den Lade- / Entladezyklus beginnen. Verwenden Sie dann einen Komparator, um festzustellen, ob 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 - die möglicherweise auf einem AVR funktionieren würde
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=de545264
Das einzige Problem bei diesen Methoden ist der mangelnde Schutz vor statischer Entladung
Ein kapazitiver Berührungssensor kann ohne zusätzliche Hardware ausgeführt 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 des Auftrags vom Mikrontroller zu entfernen, indem ich den zu testenden Kondensator als Teil eines Oszillators verwende und dann den Controller zum Messen der Puse-Breite verwende. Es ist ein zusätzlicher Teil, aber ich habe auf diese Weise bessere Ergebnisse erzielt.