mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Audio als PWM speichern


Autor: Philipp (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: ArnoR (Gast)
Datum:

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

Autor: gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Web-Applikator (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

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

Autor: gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-(

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.