Forum: Mikrocontroller und Digitale Elektronik Audio als PWM speichern


von Philipp (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich möchte ein Audio Signal digitalisieren und als PWM über einen 
Class-D Verstärker wiedergeben. Deshalb so, weil ich die Kosten und den 
Platz drastisch einsparen muß.

So nun wird ein Signal ja laut diversen Empfehlungen mit der 4fachen 
Samplerate (Analog zu PWM) gespeichert. Also bei 8kHz mit 32kHz. Wie 
speicher ich nun die Informationen (Datensignal) ab? Das ist ja 
wesentlich mehr als beim normalen Samplen. Wenn ich nun 32x bei einer 
Sinuswelle die Information vom PWM speicher mit 8 Bit, dann habe ich ja 
32 Bytes gegenüber 2 Bytes bei der "normalen" Version. Verstehe ich da 
was falsch?

Grüsse,
Philipp

von ArnoR (Gast)


Lesenswert?

Mit einem Class-D-Verstärker kannst du nur analoge Signale wiedergeben. 
Für PWM-Signale reicht eine Schaltendstufe mit Filterung.

von gerd (Gast)


Lesenswert?

ArnoR schrieb:
> Mit einem Class-D-Verstärker kannst du nur analoge Signale wiedergeben.
> Für PWM-Signale reicht eine Schaltendstufe mit Filterung.

Lies nochmal die Frage... deine Antwort geht ein wenig daran vorbei.

@Phillip:

Das Stichwort das du suchst lautet "Kompression".

- gerd

von Philipp (Gast)


Lesenswert?

Also ich hab noch etwas nachgedacht. Werden die Daten für die Ausgabe 
als PWM eigentlich anders abgespeichert oder erfolgt die Berechnung der 
PWM erst bei der Ausgabe? Bei einem MP3 Player sind die Daten nach der 
MP3 Decodierung ja auch als Samples vorhanden.

Bei eine 4kHz Sinuswelle habe ich bei 8kHz Sampling eigentlich nur 2 
Samples. Bei der Wiedergabe als PWM (über einen Class-D) ist das PWM 
Signal aber fast unbrauchbar - funktioniert das überhaupt?

von Web-Applikator (Gast)


Lesenswert?

Dein (Class-D-) PWM-Signal muss VIEL Schneller takten, ×4 Reicht da 
nicht, eher so richtung ×100.
Da macht es auch keinen Sinn, die einzelnen Takt-Einschaltdauern zu 
speichern.

Taste dein Eingangssignal mit z.B. 32kHz ab.
Speicher die Werte. (ggfs komprimiert)

Beim Abspielen:
Zwischen den gespeicherten Werten interpoliern, daraus PWM mit z.B. 
125kHz erzeugen, die auf H-Brücke geben, Lautsprecher dazwischen.

von Sebastian (Gast)


Lesenswert?

Kommerzielle Class-D Verstärker werden nach wie vor nicht per PWM 
angesteuert, sondern mit einem analogen Eingangssignal. Die PWM wird 
intern gemacht.

von gerd (Gast)


Lesenswert?

Sebastian schrieb:
> Kommerzielle Class-D Verstärker werden nach wie vor nicht per PWM
> angesteuert,

Naja, wenn man Class-D als Verstärkerart sieht und nicht als 
Produktbezeichnung, wie sie gern vom Marketing genutzt wird, dann ist 
ein PWM-Signal schon das korrekte Eingangssignal. Also in diesem Sinne 
waren hier keine falschen Aussagen gemacht worden.

- gerd

von Philipp (Gast)


Lesenswert?

Also im Grunde möchte ich mit einem Cortex-M3 das auf einem ADC Eingang 
liegende Audiosignal sampeln, intern im Flash speichern (habe 384KB) und 
dann auf einem Pin ausgeben (PWM). Über einen RC bzw. LC Filter an den 
OPAmp und auf einen 32 Ohm Lautsprecher ausgeben.

Also die Samplingdaten werden roh (ähn. WAV) im Flash abgelegt. Wie 
konvertiere ich die in die PWM? Im Grunde genommen ist der "Puls" zur 
"Pause" wie die Abtastzeit zur Steigung des Signals. Wird in der 
Realität hier wirklich eine Interpolierung durchgeführt?

Angenommen ich habe 2 Samples auf je 100%max und 100%min vom Signal, 
dann wäre die Puls-Pause wie? Ist 0 beim Signal eigentlich dann 50:50 
beim PWM?

Viele Fragen und ich Google schon den ganzen Tag :-(

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.