Piezo Speaker Lautstärke mit Arduino?

2 Antworten

Hi!

Ich hatte genau das gleiche Problem. Kurz gesagt habe es geschafft, indem ich einen Transistor dazwischen geschaltet habe und die Basis per PWM mit einem dazwischen geschalteten Kondensator angesteuert.

Das bedeutet (Ich weiß leider nicht wie man Schaltpläne hier zeichnet):

Piezo:
Pluspol an beliebigen Pin (ich nehme hier mal Pin 2)
Minuspol an Kollektor des Transistors

Transistor (NPN):
Kollektor an Minuspol des Piezos
Emitter an GND
Basis an Widerstand 2

Widerstand 1 (10kOhm):
Anschluss 1 an beliebigen PWM Pin (ich nehme hier mal Pin 3)
Anschluss 2 an Widerstand 2 UND an Kondensator.

Widerstand 2:
Anschluss 1 an Widerstand 1 UND an Kondensator.
Anschluss 2 an Basis des Transistors

Kondensator (100 mikroF):
Anschluss 1 (bei Elektrohytkondensatoren Pluspol) an Widerstand 1 UND
Widerstand 2
Anschluss 2 (Minuspol) an GND

Jetzt kannst du an Pin 2 tone(2, Tonhoehe) und noTone(2) verwenden und an Pin 3 analogWrite(3, Lautstaerke) einsetzen um den Piezo zu steuern.

Der Kondensator ist übrigens sehr wichtig, da sonst der Ton nicht leiser oder lauter würde, sondern lediglichein unangenehmes "Flattern" des Tons entstehen würde.

Mal eins nach den anderen. Den Lautsprech sprichst du folgendermaßen an:

void setup()
{
pinMode(outputPin, OUTPUT); // dein Lautsprecher-Pin als Ausgang definieren
}
void loop()
{
tone(outputPin, frequency, duration);
}

Die Funktion 'tone' verlangt nach 3 Parametern. Zum einen der Pin an dem dein Lautsprecher angeschlossen ist, die Frequenz die der Lautsprecher wiedergibt und die Dauer, wie lange er den Ton abgibt.

Lautstärke mit Programm regeln müsstest du ein wenig genauer erklären, wird aber womöglich nicht so einfach funktionieren.