Eine Einführung in den Piezo-Lautsprecher
Lautsprecher waren ursprünglich auf elektromagnetische Technologie angewiesen, bei der eine Spule in einem Magnetfeld schwingt, um Schall zu erzeugen. Piezo-Lautsprecher, die in den 1960er Jahren eingeführt wurden, sind jedoch eine alternative Technologie, die sich seither stetig weiterentwickelt hat.
Die Konstruktion eines Piezo-Lautsprechers umfasst eine piezoelektrische Keramikmembran, die zwischen zwei Metallplatten oder Elektroden platziert ist. Wenn du eine elektrische Spannung an den Piezo anlegst, führt der piezoelektrische Effekt zu einer mechanischen Verformung der Membran und erzeugt dadurch Schallwellen.
Piezo-Lautsprecher bieten mehrere Vorteile, die du schätzen wirst. Sie sind einfach zu bauen und verbrauchen wenig Strom. Sie sind robust und langlebig, weil sie keine beweglichen Teile haben. Piezos können zudem eine hohe Klangqualität liefern, besonders im Hochfrequenzbereich. Ihre geringe Größe macht sie ideal für Anwendungen, bei denen der Platz begrenzt ist.
Aber es gibt auch einige Nachteile. Es ist wichtig, anzumerken, dass Piezos keine akustischen Meisterwerke erzeugen können. Die Töne, die sie erzeugen, erinnern eher an die einfachen Piep-Töne von Computerspielen aus den 80er Jahren. Piezo-Lautsprecher haben eine begrenzte Bandbreite und können tiefe Frequenzen nicht so gut wiedergeben wie herkömmliche elektromagnetische Lautsprecher.
Piezo-Lautsprecher sind immer noch weit verbreitet und finden in einer Vielzahl von Bereichen Anwendung. Sie kommen häufig in kleinen elektronischen Geräten wie Mobiltelefonen, Weckern, Spielzeugen, medizinischen Geräten und Haushaltsgeräten zum Einsatz. Ihre einfache Steuerung und geringe Größe machen sie ideal für viele eingebettete Systeme. Bei Anwendungen, bei denen eine hohe Lautstärke und Klangqualität wichtig sind, werden oft andere Lautsprechertechnologien bevorzugt.
Piezo-Lautsprecher lassen sich in zwei Kategorien unterteilen: aktive und passive Piezos. Ein aktiver Piezo verfügt über einen integrierten Oszillator, der selbständig Schwingungen erzeugt. Sobald du 5V an den aktiven Piezo anlegst, gibt er einen Dauerton mit einer festen Frequenz ab. Du bist jedoch auf diese eine Frequenz beschränkt und kannst keine anderen Töne oder Melodien erzeugen.
Mit einem passiven Piezo hast du zwar einen höheren Programmieraufwand, kannst aber eine Vielzahl von Tönen erzeugen. Bedenke aber, dass du mit Piezos keine akustischen Wunderwerke erschaffen kannst. Die erzeugten Töne erinnern eher an die Klänge alter Computerspiele aus den 80er Jahren. Sie eignen sich jedoch hervorragend für akustische Signale.
Piezos sind hochohmige Elemente, das bedeutet, sie benötigen nur wenig Strom. Daher kannst du sie direkt an einen Arduino-Pin anschließen. Die maximale Lautstärke (Amplitude) des Piezos ist auf die Spannung des Arduinos (5V) beschränkt. Wenn du eine höhere Spannung, etwa 9 oder 12V, verwenden würdest, könnte die Lautstärke signifikant erhöht werden. Beachte dabei aber die technischen Spezifikationen und Sicherheitsstandards deines speziellen Modells, um Schäden zu vermeiden.
Aufbau und Verkabelung
Der Sketch
Denke daran, dass wir mit Piezo-Lautsprechern keine geschwungenen Sinuskurven erzeugen können. Das liegt an der digitalen Natur unserer Hardware, aber wir können trotzdem ein quasi-sinusförmiges Signal erzeugen. Wie wir das machen? Betrachte es so: Jedes HIGH und jedes folgende LOW in unserem digitalen Signal repräsentiert eine Schwingungsperiode. Und die Anzahl dieser HIGH- und LOW-Signale innerhalb einer Sekunde? Genau, das ist unsere Frequenz.
Jetzt werden wir allerdings etwas abstrakt. Wir lassen die Frequenz mal beiseite und sprechen über zeitunabhängige Oszillationen - also das reine Hin- und Herschwingen. Die spezifischen Frequenzeinstellungen bewahren wir uns für später auf, wenn wir die tone()-Funktion nutzen. Jetzt steht erstmal das Experimentieren im Vordergrund.
Die Dauer eines Tons ist abhängig von der Zeit, die wir brauchen, um unseren Piezo ein- und auszuschalten. Hier kommt ein kleines Paradoxon ins Spiel: Je kürzer der Zeitraum zwischen dem HIGH und dem LOW-Pegel, desto höher wird der erzeugte Ton. Je länger die Zeit zwischen den beiden Pegeln, desto tiefer wird der Ton.
Betrachte nun den folgenden Sketch, der von unserem alten Bekannten, dem Blink-Sketch, inspiriert ist. Dieser Code lässt den Piezo-Lautsprecher in einem stetigen Takt ein- und ausschalten, wodurch ein kontinuierlicher Ton erzeugt wird. Die Frequenz des Tons hängt von der Länge der Verzögerung ab. Je kürzer die Verzögerung, desto höher ist der erzeugte Ton.
Wir definieren den Piezo-Pin und eine Oszillationsvariable, und in der loop()-Funktion schalten wir den Piezo mit der delayMicroseconds()-Funktion ein und aus.
const int piezoPin = 7; //Pin, an dem der Piezo-Summer angeschlossen ist
int oscillation = 5000; //Variable zur Steuerung der Oszillationsgeschwindigkeit
void setup()
{
pinMode(piezoPin, OUTPUT); //Setzt den Pin als Ausgang
}
void loop()
{
digitalWrite(piezoPin, HIGH); //Schaltet den Piezo-Summer ein (setzt den Pin auf HIGH)
delayMicroseconds(oscillation); //Pausiert für die angegebene Anzahl von Mikrosekunden
digitalWrite(piezoPin, LOW); //Schaltet den Piezo-Summer aus (setzt den Pin auf LOW)
delayMicroseconds(oscillation); //Pausiert für die angegebene Anzahl von Mikrosekunden
}
Wie bereits erwähnt ähnelt der obige Sketch stark dem bekannten Blink-Sketch, mit einer Ausnahme: Vielleicht fragst du dich über die Funktion delayMicroseconds(). Diese Funktion ist vergleichbar mit delay(), operiert jedoch in viel kleineren Zeiteinheiten, um genauer zu sein, ist sie um den Faktor 1000 kleiner als delay().
![Bild delaymicroseconds]
Im Gegensatz zu delay(), das in Millisekunden operiert, ermöglicht delayMicroseconds() die Arbeit in Mikrosekunden. Das bedeutet, dass eine Sekunde in 1.000.000 Mikrosekunden eingeteilt werden kann!
![Bild 1s = 1000ms 1ms = 1000µs]
Dein Piezo-Lautsprecher benötigt diese extrem feine Zeiteinteilung, um die Membran zum Schwingen zu bringen. Du kannst auch mit der normalen delay()-Funktion Töne erzeugen, solange der eingesetzte Wert klein genug ist. Probiere an dieser Stelle verschiedene Werte für delayMicroseconds() aus und experimentiere mit verschiedenen Tönen.
Der Sketch mit einer for-Schleife
Du erhältst mehr Kontrolle über den Piezo mit einer for-Schleife und kannst so pulsierende Töne, ähnlich einem Alarmsignal, erzeugen. Ohne eine Pause zwischen den Schwingungen, wie im obigen Sketch, erhältst du einen durchgängigen Ton.
const int piezoPin = 7; // Pin, an dem der Piezo-Summer angeschlossen ist
int oscillation = 1000; // Variable zur Steuerung der Oszillationsgeschwindigkeit
int pause = 20; // Variable für die Pause zwischen den Zyklen
int cycle = 500; // Variable für die Anzahl der Zyklen
void setup() {
pinMode(piezoPin, OUTPUT); // Setzt den Pin als Ausgang
}
void loop() {
for (int i = 0; i < cycle; i++) {
digitalWrite(piezoPin, HIGH); // Schaltet den Piezo-Summer ein (setzt den Pin auf HIGH)
delayMicroseconds(oscillation); // Pausiert für die angegebene Anzahl von Mikrosekunden (Oszillationsgeschwindigkeit)
digitalWrite(piezoPin, LOW); // Schaltet den Piezo-Summer aus (setzt den Pin auf LOW)
delayMicroseconds(oscillation); // Pausiert erneut für die angegebene Anzahl von Mikrosekunden (Oszillationsgeschwindigkeit)
}
delay(pause); // Pausiert für die angegebene Zeit (Pause zwischen den Zyklen)
}
Ohne das delay() außerhalb der for-Schleife klingt der Ton ähnlich wie im vorherigen Sketch. Erst das delay() außerhalb der for-Schleife erzeugt einen pulsierenden Ton. Es sorgt dafür, dass der Programmablauf für die angegebene Zeit (in Millisekunden) angehalten wird, bevor die loop()
-Funktion erneut durchlaufen wird. Dadurch entsteht eine Pause zwischen den Zyklen des Piezo-Summers.
Im Detail bedeutet dies, dass der Piezo-Summer eine bestimmte Anzahl von Zyklen durchläuft, wie durch die Variable cycle
festgelegt. Nach Abschluss der Zyklen wird das delay(pause)
ausgeführt, um eine Pause von pause
Millisekunden einzulegen, bevor der nächste Schleifenzyklus beginnt. Dies ermöglicht es, eine bestimmte Zeit zwischen den Aktivitäten des Piezo-Summers zu haben, um beispielsweise den Klangmusterablauf zu steuern oder Pausen einzufügen, um den Gesamteffekt zu gestalten.
Experimentiere mit den Werten der Variablen oscillation, pause und cycle. Hör dir an wie sich der Sound verändert.