Forum: Mikrocontroller und Digitale Elektronik PWM Soundausgabe


von ThoMiEn (Gast)


Lesenswert?

Hallo.
Ein Buzzer soll über PWM vom µC ansteuern werden.
Ist es möglich, über ein einzelnes PWM-Signal verschiedene Töne mit 
unterschiedlicher Lautstärke auszugeben?
D.h.: Die Lautstärke wird über ein Menü eingestellt (laut, mittel, 
leise) und anschließend werden alle Töne mit dieser definierten 
Lautstärke ausgegeben.
Ich habe das bisher immer mit mehreren PWM-Ausgängen und 
unterschiedlichen Vorwiderständen realisiert.
Vielen Dank schon einmal für die Hilfe!

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Ja.

von Alex G. (dragongamer)


Lesenswert?

Hast du wenigstens eine Minute gegoogelt?

In Arduino gibt es sogar eine extra Funktion dafür: 
https://www.arduino.cc/reference/en/language/functions/advanced-io/tone/

Mit welchen Buzzern das konkret kompatibel ist, musst du selbst 
rausfinden.

EDIT: Lautstärke kannst du so direkt allerdings nicht einstellen denn 
die PWM selbst beschreibt schon die Sinuskurve und damit die Frequenz.

: Bearbeitet durch User
von Marc (Gast)


Lesenswert?

>Hast du wenigstens eine Minute gegoogelt?

>In Arduino gibt es sogar eine extra Funktion dafür:
>https://www.arduino.cc/reference/en/language/funct...

>Mit welchen Buzzern das konkret kompatibel ist, musst du selbst
>rausfinden.

Die Frage war aber nach der Lautstärke.

>EDIT: Lautstärke kannst du so direkt allerdings nicht einstellen denn
>die PWM selbst beschreibt schon die Sinuskurve und damit die Frequenz.

Klar kann man. Nur nicht mit Deiner geposteten Funktion. Es gibt 
genügend High-Frequency-PWM Beispiele, die beliebige Töne erzeugen z.B. 
die Mozzi-Lib.

von Falk B. (falk)


Lesenswert?


von Sound Mann (Gast)


Lesenswert?

klar - du kannst per pwm sogar WAV-Dateien (Musik Sprache...) beliebig 
wiedergeben.

von Audioschlumpf (Gast)


Lesenswert?

> WAV-Dateien ... beliebig wiedergeben.

Das halte ich in dieser Allgemeinheit für ein Laiengerücht.

Ich hab hier gerne auch mal WAV-Dateien im 32 bit Floatformat
mit 192 oder 384 kbit/s und z.T. mit mehreren Kanälen.

Da kommt dann nur noch Husten aus einem Antuino.

von Sound Mann (Gast)


Lesenswert?

> Das halte ich in dieser Allgemeinheit für ein Laiengerücht.

> Ich hab hier gerne auch mal WAV-Dateien im 32 bit Floatformat
> mit 192 oder 384 kbit/s und z.T. mit mehreren Kanälen.

Mittels PWM lässt sich sogar HIFI-Qualität erreichen. Die Anzahl der 
Kanäle, die Bitrate und die Auflösung spielen keine Rolle.

Die erreichbare Qualität hängt nur von der Leistungsfähigkeit der 
Plattform (wurde vom TO nicht genannt) und der Qualität der Filter ab.

Das er einen Arduino benutzt, wurde hier lediglich interpretiert. 
Niemand weiß was der TO wirklich benutzt.

von Sound Mann (Gast)


Lesenswert?

Nachtrag: Falls dich das Thema interessiert hier der passende Wikipedia 
Link:

https://de.wikipedia.org/wiki/Klasse-D-Verst%C3%A4rker

von ThoMiEn (Gast)


Lesenswert?

Vielen Dank für die Antworten.
Es handelt sich bei der Soundausgabe lediglich um BEEP's zur 
akkustischen Unterstützung für Tasterbetätigungen, die in drei 
verschieden Lautstärken ausgegeben werden sollen.
µC (ATmega1284P) --> Transistor --> Buzzer

von bla (Gast)


Lesenswert?

Audioschlumpf schrieb:
> WAV-Dateien im 32 bit Floatformat mit 192 oder 384 kbit/s

Da ist aber nicht nur der Arduino der einzige der das nicht sauber 
wiedergeben kann, die Schaltung die Audio mit 384kBit/s mit 194dB SNR 
wieder gibt will ich sehen.

Wobei du ja von floating point schriebst, das hat ja eh "nur" ein SNR 
von 23+1 Bit, also "nur" 146dB SNR.

von Thomas E. (picalic)


Lesenswert?

ThoMiEn schrieb:
> Es handelt sich bei der Soundausgabe lediglich um BEEP's zur
> akkustischen Unterstützung für Tasterbetätigungen,

In dem Fall kann man eine simple Lautstärkeänderung auch einfach über 
den PWM-Dutycycle erreichen. Das ändert zwar auch die Klangfarbe des 
Pieps, aber für eine einfache akustische Rückmeldung spielt das i.d.R. 
keine Rolle.
Z.B. bei einem 1kHz Pieps: maximale Lautstärke ist 500µs an/500µs aus.
Mit 100µs an/900µs aus ist es ebenfalls 1kHz, aber leiser, der Ton 
klingt aber etwas "schärfer".
Einen netten Effekt erhält man, wenn man die Impulslänge dynamisch 
während des Tons verändert, z.B. alle 10ms die Einschaltdauer halbiert. 
Das klingt dann nicht nach "Beep", sondern wie "Ping".

von bla (Gast)


Lesenswert?

Sound Mann schrieb:
> Mittels PWM lässt sich sogar HIFI-Qualität erreichen.

Das hingegen würde mich ernsthaft interessieren. Hast du da Links dazu?

Mit Multi-level PWM (zwei PWM-Ausgänge gewichtet zusammen schalten) oder 
Delta-Sigma (keine PWM) lässt sich tatsächlich gute Tonqualität 
erreichen, siehe beispielhaft hier: 
https://www.edn.com/design/analog/4441113/A-faster-PWM-based-DAC

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.