Metall-Touch-Sensor

Easy · 5 min · Günstig

Ziel & Lerninhalt

Mache aus jedem leitfähigen Metallobjekt (Türklinke, Löffel, Alu-Streifen) ein Touch-Pad – ohne IC, nur mit Mikrocontroller und einem hochohmigen Widerstand.

  • Kapazitive Sensorik per Ladezeit-Messung verstehen.
  • Körperkapazität als 'parallele Kapazität' erkennen.
  • Mit gleitendem Mittelwert + Hysterese Fehlauslösungen vermeiden.

Erklärung & Wissen

Basic

Berührst du ein Stück Metall, das mit deinem Mainboard verbunden ist, 'spürt' der Mikrocontroller das, ohne dass Strom in dich fließt. Der Grund: Dein Körper ist elektrisch wie ein kleiner Kondensator zur Umgebung – ungefähr 100 pF Kapazität. Über den Finger wird diese Kapazität an die Sensorfläche 'angehängt'. Schickt der Mikrocontroller jetzt einen kleinen Lade-Impuls an das Metall, dauert das Aufladen ein winziges bisschen länger als sonst – und genau diese Verzögerung erkennen wir.

Medium

Die Standardlösung ist die CapacitiveSensor-Library für Arduino: Ein Sendepin und ein Empfangspin sind über einen hochohmigen Widerstand (1–10 MΩ) verbunden, der Empfangspin sitzt zusätzlich an der Metallfläche. Die Software schaltet den Sendepin auf HIGH und zählt, wie viele Mikrosekunden der Empfangspin braucht, bis er HIGH erreicht – das ist ein Maß für die Kapazität. Ohne Berührung ergibt das einen Basiswert von z.B. 50 Counts. Beim Berühren springt der Wert auf 500 oder mehr. Der Code legt einen Schwellwert dazwischen und bei Bedarf eine kleine Hysterese, damit der Sensor nicht flattert.

Expert

Der Hauptfeind kapazitiver Sensoren ist die 50-Hz-Einkopplung aus dem Stromnetz. Die hochohmige Sensorbahn wirkt wie eine Antenne – ohne Schutz schwankt der Rohwert um Dutzende Counts. Lösungen: Mittelung über mehrere Samples, Sensor mit einem geerdeten Schirm umgeben (Alufolie + GND), oder Wechsel auf eine dedizierte Touch-IP wie TTP223. Wichtig: Wenn dein Mainboard nicht geerdet ist (z.B. Batteriebetrieb), wird der Effekt schwächer, weil der Pfad 'Körper → Erde → Netzteil' fehlt. Eine kleine Drahtschleife am GND-Pin als 'künstliche Erde' hilft erstaunlich gut.

Fun Fact

In den ersten kapazitiven Aufzugknöpfen der 70er Jahre wurden ganze Plastikplatten leitfähig beschichtet – wegen schlechter Filterung sprangen die Aufzüge oft schon an, wenn jemand vor der Tür Static-Pullover trug.

Kapazitive Sensorik
Berührungserkennung ohne direkten Stromkontakt – nur das elektrische Feld des Körpers wird registriert. Der Sensor misst eine Zeitdauer, nicht eine Spannung. Das macht ihn robust gegen Verschmutzung und Oxidation auf der Metallfläche. Moderne Touchscreens nutzen dasselbe Prinzip mit einem dichten Raster von winzigen Elektroden – so weiß das Gerät, wo genau du getippt hast.
Körperkapazität
Der menschliche Körper verhält sich elektrisch wie ein Kondensator von ca. 100–200 pF gegenüber seiner Umgebung. Diese Kapazität kommt durch die große, leitfähige Körperfläche zustande, die von isolierender Luft/Kleidung umgeben ist. Beim Berühren des Sensors wird diese Körperkapazität parallel zur Sensor-Eigenkapazität geschaltet → Gesamtkapazität steigt → Ladezeit steigt. Im Erdungs-Modus (Körper an Masse) ist der Effekt stärker als im freistehenden Modus.
Ladezeit-Messung (CapSense-Prinzip)
Der Mikrocontroller zählt, wie viele Mikrosekunden der Sensor zum Aufladen braucht – mehr Kapazität = längere Zeit. Zeitkonstante: $\tau = R \cdot C$. Mit $R = 1\,\mathrm{M\Omega}$ und $C = 50\,\mathrm{pF}$ gilt $\tau = 50\,\mu\mathrm{s}$. Kommt Körper dazu: $C = 150\,\mathrm{pF}$ → $\tau = 150\,\mu\mathrm{s}$. Der Mikrocontroller misst diese Differenz in Taktzyklen. Je größer R, desto empfindlicher, aber auch anfälliger für Störungen.
Hysterese
Zwei unterschiedliche Schaltschwellen für 'berührt' und 'losgelassen' verhindern, dass ein Signal am Rand ständig flattert. Ohne Hysterese: Signal schwankt um Schwelle → viele Falsch-Auslösungen. Mit Hysterese: $S_{on} = 300$, $S_{off} = 150$ → erst bei 300 'berührt', erst bei 150 wieder 'frei'. Die Lücke (150 Punkte) muss größer sein als das typische Rauschen des Sensors im Stand-by.

Praktischer Versuch: Metall-Touch

1 MΩ zwischen Send- und Receive-Pin, Sensor-Pin an Alufolie/Metallobjekt – Library übernimmt die Zeitmessung.

  • Stück Alufolie, Löffel oder Metallplatte
  • 1 Widerstand 1 MΩ (5–10 MΩ für höhere Empfindlichkeit)
  • Krokoklemmen
  1. Library installieren

    Öffne die Arduino-IDE → Bibliotheksverwalter → 'CapacitiveSensor' installieren.

    Check: Sketch kompiliert ohne 'CapacitiveSensor not found'.

    Tipp: Im Arduino-Library-Manager nach 'CapacitiveSensor' (Paul Stoffregen) suchen.

  2. Schaltung verkabeln

    1 MΩ zwischen Pin 4 (send) und Pin 2 (receive). Pin 2 zusätzlich per Krokoklemme an die Metallfläche.

    Check: Sketch hochgeladen, Monitor zeigt Werte zwischen 5 und 500.

    Tipp: Der Sensorpin ist der EMPFANGS-Pin (Pin 2 im Code), nicht der SENDE-Pin (Pin 4).

  3. Basiswert ermitteln

    Lade den Code, beobachte den Ruhewert (ohne Berührung) über 10–20 Sekunden.

    Check: Ruhewert liegt stabil bei z.B. 10–80, ohne starkes Driften.

    Tipp: Driftet der Wert stark, fängt das Kabel Brummen ein – Sensorkabel kurz halten, Aufbau weg vom Netzteil.

  4. Schwellwert + Hysterese setzen

    Notiere Basis und Berührt-Wert. Setze Schwellwerte im Code (S_on / S_off mit Abstand).

    Check: LED an Pin 13 schaltet beim Berühren ein, beim Loslassen wieder aus.

    Tipp: Schwelle ca. 3× Basiswert ansetzen.

Pin 4 (send) — 1 MΩ — Pin 2 (receive) — Metallfläche.

// ProtoPeaks - Metall-Touch
#include <CapacitiveSensor.h>
CapacitiveSensor cs = CapacitiveSensor(4, 2);

const long S_on  = 200;
const long S_off = 100;
bool touched = false;

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop() {
  long val = cs.capacitiveSensor(30); // 30 Samples Mittelung
  if (!touched && val > S_on)  touched = true;
  if ( touched && val < S_off) touched = false;
  digitalWrite(13, touched ? HIGH : LOW);
  Serial.println(val);
  delay(50);
}
  • Wert dauerhaft hoch (immer 'berührt'). — Sensorkabel zu lang oder durch Feuchtigkeit gebrückt. Kabel kürzer, Metallfläche trocknen, Aufbau überprüfen.
  • Werte schwanken extrem. — Netzbrummen. Aufbau weiter weg vom Steckernetzteil, ggf. Akkubetrieb, Library-Sample-Zahl auf 50–80 erhöhen.
  • Geringe Empfindlichkeit. — Widerstand zu klein. Auf 5 MΩ oder 10 MΩ erhöhen – das verlängert τ und macht den Effekt stärker.

Kurzzusammenfassung

Mit einem 1 MΩ-Widerstand und der CapacitiveSensor-Library wird jedes Metallstück zu einem berührungsempfindlichen Sensor. Die Ladezeit eines RC-Glieds verändert sich messbar, sobald die Körperkapazität dazukommt – Schwellwert plus Hysterese sorgen für sauberes Schalten.

Ähnliche Themen