Skip to Content

Aktive und passive Piezo-Summer mit Arduino

Aktive und passive Piezo-Summer mit Arduino

Piezo-Summer sind einfache, klangerzeugende Bauteile, die in Elektronikprojekten weit verbreitet sind. Sie warnen Benutzer mit Pieptönen, Signalen oder Alarmen.

Es gibt zwei Haupttypen von Summern: aktive und passive. Jeder Typ funktioniert unterschiedlich und eignet sich für verschiedene Anwendungen. Aktive Summer haben eingebaute Oszillatoren und erzeugen Klang, sobald sie mit Strom versorgt werden. Passive Summer benötigen ein externes Signal, wie eine Rechteckwelle, um Klang zu erzeugen.

In den folgenden Abschnitten werden wir die Unterschiede zwischen aktiven und passiven Summern untersuchen, wie man sie anschließt und wie man sie effektiv programmiert.

Benötigte Bauteile

Du benötigst einen passiven und einen aktiven Summer. Ich habe unten zwei Beispiele aufgeführt, aber es gibt viele Alternativen. Beachte, dass der aktive Summer für 5V ausgelegt ist, während der passive Summer für 3V bis 5V funktioniert.

Als Mikrocontroller habe ich für dieses Projekt ein Arduino Uno verwendet, aber auch andere Arduino-Modelle oder ESP32 funktionieren. Außerdem sind ein Breadboard, einige Kabel und ein Satz Widerstände hilfreich.

Aktiver Summer 5V

Passiver Summer 3..5V

Widerstands-Kit

Arduino

Arduino Uno

USB Data Sync cable Arduino

USB-Kabel für Arduino UNO

Dupont wire set

Dupont-Kabel-Set

Half_breadboard56a

Breadboard

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Funktionsweise von Piezo-Summern

Ein Piezo-Summer arbeitet basierend auf dem piezoelektrischen Effekt. Dieser Effekt tritt in bestimmten Keramikmaterialien auf, die ihre Form ändern, wenn eine Spannung angelegt wird.

Im Inneren des Summers befindet sich eine dünne piezoelektrische Keramikscheibe. Diese Scheibe ist mit einer Metallmembran verbunden. Die Metallmembran fungiert als flexible Membran.

Piezo Element
Piezo-Element

Wenn eine Spannung an den Anschlüssen angelegt wird, entsteht ein elektrisches Feld im Keramikmaterial. Die Keramik dehnt sich aus oder zieht sich zusammen, abhängig von der Polarität der Spannung. Die Dimensionsänderung ist sehr klein, reicht aber aus, um die angeschlossene Metallmembran zu verbiegen.

Piezo element bending depending on polarity
Biegung des Piezo-Elements abhängig von der Polarität

Wird eine konstante Gleichspannung angelegt, bewegt sich die Scheibe in eine Position und bleibt dort (passiver Summer). In diesem Fall wird kein kontinuierlicher Ton erzeugt. Um Klang zu erzeugen, muss eine Wechselspannung angelegt werden, die ihre Polarität mit einer bestimmten Frequenz ändert. Aktive Summer haben eine eingebaute Oszillatorschaltung, die die Wechselspannung erzeugt.

Active buzzer with piezo element and oscillator circuit
Aktiver Summer mit Piezo-Element und Oszillatorschaltung

Während die Spannung wechselt, dehnt sich die Keramikscheibe schnell aus und zieht sich zusammen. Dadurch bewegt sich die Metallmembran auf und ab. Die Membranbewegung drückt die umgebende Luft zusammen und zieht sie auseinander. So entstehen Druckwellen in der Luft, die wir als Klang wahrnehmen.

Die Klangfrequenz entspricht der Frequenz des angelegten Signals. Die Lautstärke hängt von der Amplitude der Spannung und dem mechanischen Design des Summers ab. Viele Piezo-Summer sind so konstruiert, dass sie bei einer bestimmten Frequenz resonieren, um die Lautstärke zu erhöhen.

Unterschiede zwischen passiven und aktiven Summern

Passiver Summer

Ein passiver Summer enthält nur das piezoelektrische Element und die Membran. Er besitzt keine interne Oszillatorschaltung. Wenn du Gleichspannung anlegst, erzeugt er keinen kontinuierlichen Ton, sondern klickt nur, wenn sich die Spannung ändert.

Das folgende Bild zeigt die Bauteile eines passiven Summers. Wie du siehst, hält das Gehäuse nur das Piezo-Element, aber keine Elektronik:

Bauteile eines passiven Summers

Um mit einem passiven Summer einen Ton zu erzeugen, musst du ein Wechsel- oder Rechtecksignal anlegen. Dieses wird üblicherweise von einem Arduino oder ESP32 per PWM erzeugt. Die Ausgangsfrequenz bestimmt direkt die Klangfrequenz. So kannst du verschiedene Töne und einfache Melodien erzeugen.

Aktiver Summer

Ein aktiver Summer enthält eine eingebaute Oszillatorschaltung. Wenn du eine Gleichspannung im zulässigen Bereich anlegst, erzeugt die interne Schaltung automatisch ein Wechselspannungssignal für das Piezo-Element. Der Summer gibt einen festen Ton ohne externe Signalerzeugung von sich. Du musst nur den Steuerpin auf HIGH setzen, damit er klingt. Die Frequenz ist durch den internen Oszillator vorgegeben – typischerweise zwischen 2 und 4 kHz – und kann nicht geändert werden.

Zusammenfassung

Passive Summer bieten volle Kontrolle über Frequenz und Timing. Sie eignen sich für Anwendungen, bei denen verschiedene Töne oder Melodien benötigt werden. Aktive Summer sind einfacher zu verwenden und eignen sich für Alarme oder Statusanzeigen, bei denen nur ein fester Ton benötigt wird.

Aus Sicht des Mikrocontrollers benötigt ein passiver Summer einen PWM-fähigen Pin oder eine timerbasierte Signalerzeugung. Ein aktiver Summer benötigt nur einen digitalen Ausgangspin, der zwischen HIGH und LOW schalten kann.

Erkennung von aktiven und passiven Summern

Passive und aktive Summer sehen von außen ähnlich aus und werden leicht verwechselt. Es ist wichtig, vor dem Anschluss an dein Arduino oder ESP32 zu erkennen, ob ein Summer aktiv oder passiv ist.

Wie bereits erwähnt, haben aktive Summer eine eingebaute Schaltung mit Oszillator. Das bedeutet, sie benötigen nur eine Gleichspannung, um Klang zu erzeugen. Passive Summer haben keinen internen Oszillator und benötigen ein externes Signal, wie eine Rechteckwelle, um Klang zu erzeugen.

Rückseite

Typischerweise ist die Rückseite eines aktiven Summers komplett mit schwarzem Epoxidharz bedeckt, während passive Summer eine Leiterplatte zeigen:

Rückseite aktiver versus passiver Summer

Höhe

Aufgrund der internen Schaltung ist das Gehäuse eines aktiven Summers meist höher als das eines passiven Summers, und der Pin für den Pluspol ist oft länger:

Höhe aktiver versus passiver Summer

Aufkleber

Schließlich haben neue aktive Summer oft einen Aufkleber über dem Schallloch, den du vor der Benutzung entfernen musst:

Widerstand

Neben dem Aussehen kannst du auch den Widerstand des Summers messen, um seinen Typ zu bestimmen. Aktive Summer haben einen höheren Widerstand von etwa 40 Ω oder messen als Unterbrechung. Passive Summer haben einen niedrigeren Widerstand von etwa 20 Ω zwischen ihren Anschlüssen.

Test mit Spannung

Die sicherste Methode, den Summer-Typ zu bestimmen, ist, ihn mit 5V zu verbinden. Ein aktiver Summer gibt einen Ton von sich, während ein passiver Summer still bleibt oder nur einmal klickt.

Zusammenfassung

Die folgende Tabelle fasst die Unterschiede zwischen aktiven und passiven Summern zusammen:

Merkmal  Aktiver Summer Passiver Summer
Interner Oszillator Ja Nein
Direkter Gleichstromklang Ja Nein oder Klicks
Rückseite Mit schwarzem Epoxidharz versiegelt Offene Leiterplatte
Klangfähigkeit Fester Ton Verschiedene Töne/musikalisch
Widerstand Hoch (≈ 40 Ω) Niedrig (≈ 20 Ω)
Strom 1 … 15 mA 1 … 5 mA (aber Stromspitzen)

Die richtige Wahl des Summers für Projekte

Die Wahl des richtigen Summers hängt von den Anforderungen und der Komplexität deines Projekts ab. Aktive Summer sind einfach zu verwenden. Sie haben einen eingebauten Oszillator, sodass du nur Strom zuführen musst, um Klang zu erzeugen. Das macht sie ideal für einfache Warnungen oder Alarme, bei denen ein konstanter Ton ohne zusätzlichen Programmieraufwand gewünscht ist.

Passive Summer benötigen hingegen ein externes Signal, um Klang zu erzeugen. Sie erzeugen keinen Klang von selbst. Stattdessen sendest du ein Rechteck- oder Tonsignal von deinem Arduino, um Tonhöhe und Dauer zu steuern. Diese Flexibilität macht passive Summer perfekt für Projekte, die Melodien, Soundeffekte oder variable Töne benötigen.

Wenn du Zeit sparen und deinen Code einfach halten möchtest, wähle einen aktiven Summer. Er ist Plug-and-Play und eignet sich gut für einfache Benachrichtigungen. Wenn dein Projekt jedoch Musik oder komplexe Klangmuster beinhaltet, bietet ein passiver Summer mehr Kontrolle und Kreativität.

Beachte auch die Leistungsanforderungen und Größe. Aktive Summer verbrauchen oft mehr Strom wegen des internen Oszillators. Passive Summer können energieeffizienter sein, wenn du das Signal sorgfältig steuerst. Außerdem kannst du sie ohne Gehäuse kaufen, was passive Summer besonders für kompakte Projekte geeignet macht.

Vergiss nicht, das Datenblatt auf Spannungs- und Stromwerte zu prüfen, um die Kompatibilität sicherzustellen.

Anschluss eines aktiven Summers an Arduino

Der Anschluss eines aktiven Summers an ein Arduino ist einfach. Da aktive Summer eingebaute Oszillatoren haben, benötigen sie nur eine Gleichspannung, um Klang zu erzeugen. Du musst also kein Tonsignal vom Arduino erzeugen; das einfache Einschalten des Summers lässt ihn piepen. Allerdings

beginne damit, die positiven und negativen Anschlüsse des Summers zu identifizieren. Der Pluspol ist meist mit einem Pluszeichen (+) oder einem längeren Anschlussdraht markiert.

Positive and negative terminal of active buzzer
Positiver und negativer Anschluss eines aktiven Summers

Verbinde diesen Anschluss mit einem der digitalen Pins des Arduino, z. B. Pin 8. Dann verbinde den Minuspol mit dem GND-Pin des Arduino, wie unten gezeigt:

Connecting Active Buzzer to Arduino UNO
Anschluss eines aktiven Summers an Arduino UNO

Sobald der Anschluss hergestellt ist, kannst du den Summer steuern, indem du den digitalen Pin auf HIGH oder LOW setzt – genau wie bei einer LED. HIGH schaltet den Summer ein und lässt ihn klingen, LOW schaltet ihn aus.

Unten findest du ein minimales Beispiel-Sketch, das den Summer eine Sekunde lang einschaltet und dann eine Sekunde lang ausschaltet, wiederholt:

const int buzzerPin = 8;

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  digitalWrite(buzzerPin, HIGH);  // Turn buzzer on
  delay(1000);                    // Wait for 1 second
  digitalWrite(buzzerPin, LOW);   // Turn buzzer off
  delay(1000);                    // Wait for 1 second
}

Dieser Code lässt den Summer jede Sekunde an- und ausgehen. Da der aktive Summer die Tonerzeugung intern übernimmt, kannst du die tone() Funktion oder PWM-Signale nicht zur Steuerung des Summers verwenden.

Anschluss eines passiven Summers an Arduino

Der Anschluss eines passiven Summers an ein Arduino ist einfach, erfordert aber etwas mehr Aufmerksamkeit als bei einem aktiven Summer. Passive Summer benötigen ein PWM-Signal, um Klang zu erzeugen, daher verwendest du einen der digitalen Pins des Arduino, die PWM erzeugen können. Die folgende Tabelle listet die PWM-Pins gängiger Arduino-Boards auf:

Board PWM-Pins
Arduino UNO 3, 5, 6, 9, 10, 11
Arduino Nano 3, 5, 6, 9, 10, 11
Arduino Mega 2560 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46
Arduino Leonardo 3, 5, 6, 9, 10, 11, 13
Arduino Micro 3, 5, 6, 9, 10, 11, 13
Arduino Due 2 bis 13
Arduino Zero 3, 4, 5, 6, 8, 9, 10, 11, 12, 13

Um den Summer anzuschließen, beginne damit, die positiven und negativen Anschlüsse zu identifizieren. Der Pluspol ist meist auf der Leiterplatte markiert oder es befindet sich ein Pluszeichen auf dem Gehäuse. Oft ist das Pluszeichen sehr schwach und schwer zu erkennen:

Positive and negative terminal of passive buzzer
Positiver Anschluss eines passiven Summers

Verbinde den Pluspol mit einem PWM-fähigen digitalen Pin am Arduino, z. B. Pin 11. Dann verbinde den Minuspol mit der Masse (GND) des Arduino.

Passive Summer ziehen im Durchschnitt sehr wenig Strom, etwa 1 bis 5 mA. Allerdings können beim Schalten Stromspitzen auftreten. Daher wird empfohlen, einen strombegrenzenden Widerstand in Reihe zum Summer zu schalten. Ein 100 Ω Widerstand funktioniert in den meisten Fällen gut. Verbinde den Widerstand zwischen dem Arduino-PWM-Pin 11 und dem Pluspol des Summers, wie unten gezeigt.

Connecting Passive Buzzer to Arduino UNO
Anschluss eines passiven Summers an Arduino UNO

Wenn die Lautstärke zu niedrig ist, kannst du versuchen, den 100 Ω Widerstand zu entfernen oder durch einen Widerstand mit niedrigerem Wert zu ersetzen.

Die Schaltung ermöglicht es dem Arduino, Signale mit variabler Frequenz an den passiven Summer zu senden, sodass dieser verschiedene Töne erzeugen kann. Denk daran, dass der passive Summer nur klingt, wenn du im Code ein PWM-Signal erzeugst.

Code-Beispiele für aktive Summer

Aktive Summer sind mit Arduino einfach zu verwenden, da sie nur eine Gleichspannung benötigen, um Klang zu erzeugen. Du musst kein Tonsignal erzeugen, sondern kannst den Summer einfach über einen digitalen GPIO-Pin ein- oder ausschalten.

Hier ist ein einfaches Beispiel, um einen aktiven Summer eine Sekunde lang piepen zu lassen:

int buzzerPin = 8; 

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  digitalWrite(buzzerPin, HIGH);  // Turn buzzer on
  delay(1000);                    // Wait for 1 second
  digitalWrite(buzzerPin, LOW);   // Turn buzzer off
  delay(1000);                    // Wait for 1 second
}

Dieser Code setzt den Summer-Pin als Ausgang. Dann schaltet er den Summer eine Sekunde lang ein und eine Sekunde lang aus, wiederholt dies. Der Summer gibt während des HIGH-Zustands einen gleichmäßigen Ton von sich.

Du kannst auch einfache Muster erzeugen, indem du die Verzögerungszeiten änderst. Zum Beispiel, um einen kurzen Piepton gefolgt von einer Pause zu erzeugen:

void loop() {
  digitalWrite(buzzerPin, HIGH);
  delay(200);                   // Short beep
  digitalWrite(buzzerPin, LOW);
  delay(800);                   // Longer pause
}

Dieser Ansatz eignet sich gut für Alarme, Benachrichtigungen oder einfache Soundeffekte. Da aktive Summer eingebaute Oszillatoren haben, musst du dich nicht um die Frequenzgenerierung im Code kümmern. Du kannst die Frequenz jedoch leicht ändern, indem du einen Serienwiderstand wie beim passiven Summer hinzufügst. Probiere den 100 Ω Widerstand, und du wirst einen etwas tieferen Ton hören.

Zusammenfassend ist die Steuerung eines aktiven Summers mit Arduino unkompliziert. Du musst nur HIGH oder LOW an den Pin anlegen, um den Ton ein- oder auszuschalten.

Code-Beispiele für passive Summer

Passive Summer benötigen etwas mehr Aufwand als aktive, da sie keinen Klang von selbst erzeugen. Stattdessen musst du ihnen ein Rechteckwellensignal mit einer bestimmten Frequenz senden, um einen Ton zu erzeugen. Aber die Arduino- tone() Funktion macht das einfach.

Hier ist ein einfaches Beispiel, das einen 1 kHz Ton für eine Sekunde auf einem passiven Summer an Pin 11 abspielt:

int buzzerPin = 11;

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  tone(buzzerPin, 1000);  // Play 1000 Hz tone
  delay(1000);            // Wait for 1 second
  noTone(buzzerPin);      // Stop the tone
  delay(1000);            // Wait for 1 second before repeating
}

Dieser Code setzt Pin 11 als Ausgang und verwendet tone(), um eine 1000 Hz Rechteckwelle zu erzeugen. Der Summer klingt eine Sekunde lang, dann eine Sekunde Pause, wodurch ein Pieptonmuster entsteht.

Du kannst auch Melodien erzeugen, indem du Frequenz und Dauer änderst. Zum Beispiel, um zwei verschiedene Noten nacheinander abzuspielen:

int buzzerPin = 11;

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  tone(buzzerPin, 523);  // Play C5 note (523 Hz)
  delay(500);
  tone(buzzerPin, 659);  // Play E5 note (659 Hz)
  delay(500);
  noTone(buzzerPin);
  delay(1000);
}

In diesem Beispiel spielt der Summer eine C5-Note, gefolgt von einer E5-Note, jeweils eine halbe Sekunde lang. Die noTone() Funktion stoppt den Ton vor der Pause.

Wenn du mehr Kontrolle möchtest, kannst du Töne manuell mit digitalWrite() und delayMicroseconds() erzeugen, aber tone() ist normalerweise ausreichend und einfacher zu verwenden. Hier ist derselbe Code wie zuvor, aber mit tone() ersetzt:

int buzzerPin = 11;

void playTone(int frequency, int durationMs) {
  long halfPeriod = 1000000L / (2L * frequency);   
  long cycles = (long)frequency * durationMs / 1000L;

  for (long i = 0; i < cycles; i++) {
    digitalWrite(buzzerPin, HIGH);
    delayMicroseconds(halfPeriod);
    digitalWrite(buzzerPin, LOW);
    delayMicroseconds(halfPeriod);
  }
}

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  playTone(523, 500);  // C5 (523 Hz) for 500 ms
  delay(10);           // Short pause between notes

  playTone(659, 500);  // E5 (659 Hz) for 500 ms
  delay(1000);         // Equivalent to noTone() + delay(1000)
}

Denke daran, dass passive Summer ein Frequenzsignal benötigen, um Klang zu erzeugen. Verwende daher immer tone() oder vergleichbare Methoden zur Ansteuerung. Für weitere Beispiele siehe unser Use A Piezo Buzzer With Arduino Tutorial.

Du kannst das folgende Tool verwenden, um Frequenzen und Dauern für die tone()-Funktion zu finden, um die gewünschten Klänge abzuspielen:

Fehlerbehebung bei häufigen Problemen

Beim Arbeiten mit Summern können einige häufige Probleme auftreten. Glücklicherweise lassen sich die meisten mit einfachen Prüfungen und Anpassungen beheben.

Wenn dein Summer keinen Ton von sich gibt, überprüfe zuerst die Verkabelung. Stelle sicher, dass die positiven und negativen Pins des Summers korrekt mit dem Ausgangspin und der Masse des Arduino verbunden sind. Eine verpolte Verbindung kann verhindern, dass der Summer funktioniert, besonders bei aktiven Summern.

Überprüfe als Nächstes deinen Code. Bei aktiven Summern sollte ein einfaches digitalWrite auf HIGH Ton erzeugen. Bei passiven Summern musst du die tone() Funktion verwenden, um eine Frequenz zu erzeugen. Wenn du das vergisst, bleibt der Summer stumm oder es ist nur ein Klickgeräusch zu hören.

Wenn der Summer einen schwachen oder verzerrten Ton erzeugt, liegt das Problem möglicherweise an der Stromversorgung. Stelle sicher, dass dein Arduino-Board genügend Strom liefert. Manchmal hilft eine separate Stromquelle oder ein Transistor zur Ansteuerung des Summers.

Ein weiteres Problem ist ein durchgehendes Summen, wenn du eigentlich intermittierende Töne erwartest. Das passiert meist, wenn dein Code keine korrekten Zeitsteuerungen oder Verzögerungen verwendet. Nutze die delay() Funktion oder Timer, um zu steuern, wann der Summer ein- und ausgeschaltet wird.

Beachte schließlich, dass du die Lautstärke des Summers nicht per Code einstellen kannst, egal ob passiv oder aktiv. Du kannst jedoch bei passiven Summern einen Serienwiderstand hinzufügen, um die Spannung und damit die Lautstärke etwas zu reduzieren.

Fazit

Summer fügen deinen Arduino-Projekten auf einfache und effektive Weise Klang und Feedback hinzu. Aktive Summer sind leicht zu verwenden, da sie nur Strom benötigen, um Klang zu erzeugen. Du verbindest sie einfach mit einem digitalen Pin und Masse und schaltest den Pin auf HIGH, um einen Ton zu hören. Passive Summer benötigen mehr Steuerung. Du musst ein Rechteckwellensignal erzeugen, um verschiedene Töne zu erzeugen, was dir mehr Flexibilität für Melodien und Soundeffekte gibt.

Die Wahl des richtigen Summers hängt von den Anforderungen deines Projekts ab. Wenn du einen schnellen Piepton oder Alarm möchtest, ist ein aktiver Summer die beste Wahl. Wenn du Melodien oder individuelle Klänge abspielen möchtest, wähle einen passiven Summer. Prüfe immer das Datenblatt des Summers, um Typ und Spannungsanforderungen zu bestätigen.

Beim Anschluss von Summern an dein Arduino solltest du strombegrenzende Widerstände verwenden, wenn nötig, und vermeiden, sie direkt an Pins anzuschließen, die nicht genug Strom liefern können.

Wenn du Fragen hast, kannst du sie gerne im Kommentarbereich stellen.

Viel Spaß beim Tüfteln 😉