Piezo-Klopfsensor
Medium · 20 min · Günstig
Ziel & Lerninhalt
Nutze ein Piezo-Scheibchen (z.B. aus einem alten Quarzwecker) als Klopfsensor und erkenne Anzahl, Stärke und Muster von Klopfsignalen.
- Den piezölektrischen Effekt verstehen.
- Einen Piezo gegen Überspannung schützen (Pull-Down, Zener).
- Klopfsignale im Code zeitlich entprellen und Muster erkennen.
Erklärung & Wissen
Basic
Ein Piezo-Element ist eine dünne Keramik-Scheibe, die einen erstaunlichen Trick beherrscht: Drückt man sie, gibt sie eine kleine elektrische Spannung ab. Klopfst du auf eine Oberfläche, an die der Piezo geklebt ist, verformt sich die Keramik mikroskopisch – und am Mainboard erscheint kurz eine Spannungsspitze. Je härter du klopfst, desto höher die Spitze. Im Code zählen wir diese Spitzen, messen ihren Abstand und können daraus 'Klopfmuster' erkennen, fast wie einen Morsecode.
Medium
Die Spannungsspitzen eines Piezos sind kurz aber heftig – bei kräftigem Schlag durchaus 20–50 V. Das ist für 5-V-Eingänge gefährlich. Schutz: Erstens ein 1 MΩ-Widerstand parallel zum Piezo, der die Spannung schnell entlädt und gleichzeitig den Pin auf 0 V zieht. Zweitens, optional, eine 5,1-V-Zenerdiode oder zwei antiparallele Standard-Dioden, die Spannungsspitzen auf sichere Spitzenwerte kappen. Das gefilterte Signal kannst du an A0 lesen: Ruhezustand ≈ 0, kurzer Schlag erzeugt eine Spitze, die für wenige Millisekunden weit über 0 schießt. Per Schwellwert + Entprellung (mind. 50 ms Pause zwischen zwei Klopfern) zählt der Code zuverlässig.
Expert
Ein Piezo verhält sich elektrisch wie eine Spannungsquelle in Reihe mit einer kleinen Kapazität (typ. 10–30 nF) und einer mechanischen Resonanz bei einigen kHz. Diese Resonanz prägt das Ausschwingen – nach einem Schlag 'klingelt' der Piezo elektrisch noch einige Millisekunden nach, weshalb eine Hardware-Entprellung allein nicht reicht. Im Code wartest du nach einem erkannten Klopfer 30–80 ms, bis das Ausschwingen abgeklungen ist. Möchtest du nicht nur Klopfer zählen, sondern Muster (z.B. 'Shave and a haircut'), speicherst du die Inter-Klopf-Abstände als Pattern und vergleichst sie mit erlaubter Toleranz. Das ist die Grundlage von DIY-Schlüsselersatz à la 'klopfgesteuertes Türschloss'.
Fun Fact
Marie und Jacqüs Curie entdeckten 1880 den Piezo-Effekt an Quarzkristallen. Bis heute steckt in jedem klassischen Quarzwecker ein winziges Piezo-Element, das nicht nur den Ton erzeugt, sondern manchmal auch als Sensor für Schock-Auslösung verbaut wird.
- Piezölektrischer Effekt
- Mechanischer Druck verformt die Kristallstruktur der Keramik — dabei entsteht eine messbare elektrische Spannung. Beim Klopfen verbiegt sich die Keramikscheibe. Die Verformung verschiebt Ladungsschwerpunkte im Gitter → elektrische Polarisation → Spannungspuls an den Kontakten. Formel: $Q = d \cdot F$ (Ladung = Piezoköffizient × Kraft). PZT-Keramik: d ≈ 100–500 pC/N. Bei kräftigem Klopfen können Spitzen von 20–50 V entstehen — der Eingang muss geschützt werden.
- Eingangsschutz (Piezo)
- Spannungsspitzen über 5 V würden den Mikrocontroller beschädigen — ein einfacher Widerstand schützt. 1 MΩ parallel zum Piezo: Entlädt die piezölektrische Spannung schnell und hält den Eingang definiert auf 0 V im Ruhezustand. Optionaler Zusatzschutz: 5,1-V-Zenerdiode klemmt Spitzen unter 5,1 V. Ohne Schutz: ADC-Eingang kann durch Überspannung dauerhaft beschädigt werden (Latchup).
- Software-Entprellung (Klopf)
- Nach jedem Klopfer schwingt der Piezo noch weiter — der Code muss warten, bis das 'Klingeln' abklingt. Der Piezo hat eine mechanische Resonanzfrequenz (einige kHz). Nach dem Schlag schwingt er elektrisch noch 5–30 ms nach. Ohne Entprellung: Jeder Klopfer wird als 3–10 Klopfer gezählt. Lösung: Nach einem erkannten Puls 50 ms Sperrzeit einhalten — in dieser Zeit werden alle weiteren Signale ignoriert.
- Klopf-Muster
- Nicht nur zählen, sondern das zeitliche Muster erkennen — wie ein geheimer Code. Statt nur die Anzahl der Klopfer zu zählen, werden die Pausen zwischen ihnen gemessen. 'kurz-kurz-lang' = z.B. 100 ms, 120 ms, 400 ms. Der Code vergleicht das Muster mit Toleranzbändern (±30%). So entsteht ein einfaches DIY-Schloss: nur bei der richtigen Sequenz wird entsperrt.
Praktischer Versuch: Klopf-Zähler
Piezo flächig an eine Holzkiste kleben, Schutzschaltung an A0, Klopfer zählen und Muster auswerten.
- 1 Piezo-Scheibchen (passive Buzzer-Scheibe)
- 1 Widerstand 1 MΩ (Pull-Down/Entladung)
- Optional: 1 Zenerdiode 5,1 V oder 2 Standard-Dioden
- Holzkiste, Pappschachtel oder Tischplatte
- Klebeband / Heißkleber
Piezo mechanisch ankoppeln
Klebe den Piezo mit der flachen Keramik-Seite auf die Innenseite einer Holzkiste oder direkt unter die Tischplatte.
Check: Piezo sitzt flach und fest auf der Oberfläche, kein Luftspalt.
Tipp: Heißkleber ist okay, doppelseitiges Klebeband oft besser – Heißkleber dämpft die mechanische Kopplung leicht.
Schutzwiderstand parallel
Löte oder klemme den 1 MΩ direkt parallel zu den beiden Piezo-Anschlüssen.
Check: Multimeter zwischen Piezo-Klemmen zeigt 1 MΩ.
Tipp: Ohne den Widerstand schwebt der Eingang elektrisch – Pin liest Zufallswerte.
An A0 anschließen
Verkabele die Schaltung mit dem Mainboard: Piezo+ → A0, Piezo− → GND, 1 MΩ parallel.
Check: Im Ruhezustand zeigt ADC ≈ 0–10.
Tipp: Eine Klemme an A0, die andere an GND.
Schwellwert ermitteln
Lade einen Testcode, der den Maximalwert anzeigt. Setze den Schwellwert dann etwa auf 30–50% des Klopf-Maxes.
Check: Sanftes Klopfen liefert ADC-Spitzen bis ~200, kräftiges Klopfen >500.
Tipp: Lass den Code 'max value seit dem letzten Reset' anzeigen, das macht die Kalibrierung intuitiv.
Klopfer entprellen und zählen
Lade den finalen Code mit Schwellwert und Entprell-Pause. Klopf-Test durchführen.
Check: Monitor zählt pro Klopf genau eins (nicht mehr und nicht weniger).
Tipp: Wartezeit nach einem erkannten Klopf 50–80 ms, sonst zählt das mechanische Nachklingen mit.
Piezo+ → A0, Piezo− → GND. 1 MΩ parallel zum Piezo. Optional 5,1-V-Zener zwischen A0 und GND.
// ProtoPeaks - Piezo-Klopfsensor
const int piezoPin = A0;
const int schwelle = 80;
const unsigned long deadtime = 60; // ms
unsigned long letzterKlopf = 0;
int klopfZaehler = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
int v = analogRead(piezoPin);
if (v > schwelle && millis() - letzterKlopf > deadtime) {
letzterKlopf = millis();
klopfZaehler++;
Serial.print("KLOPF! #"); Serial.print(klopfZaehler);
Serial.print(" Staerke ADC: "); Serial.println(v);
}
}- Mikrocontroller hängt sich auf oder bootet beim Klopfen. — Spannungsspitzen erreichen den Pin. Zener 5,1 V oder zwei antiparallele Dioden zwischen A0 und GND/+5V ergänzen.
- Pro Klopf werden 3–5 gezählt. — Nachklingen des Piezos. Deadtime im Code auf 80–100 ms erhöhen.
- Sehr leise Klopfer werden ignoriert. — Piezo besser ankoppeln (direkter Kontakt zur Oberfläche, kein Polster), oder Schwellwert senken.
Kurzzusammenfassung
Mit einem Piezo-Scheibchen, einem 1 MΩ-Schutzwiderstand und etwas Code wird aus einer Kiste ein präziser Klopfsensor. Schwellwert + Deadtime zählen sauber jeden Schlag, weitergehend lassen sich daraus auch komplette Klopf-Muster erkennen.