Forum: Mikrocontroller und Digitale Elektronik RIFF(WAVE) Daten in PWM übertragen


von Stephan (Gast)


Lesenswert?

Ich habe mir mal die wav Datei angeguckt und hab festgestellt, dass die 
Daten dort von 00 bis ff gehen. Doch in Audacity sehe ich, dass es von 
-1 bis 1 geht, d.h das 80 der Mittelpunkt ist. Wie kann ich das denn in 
PWM übertragen?? Wie mache ich diese Wechselspannung oder muss man sie 
nicht machen?

von Klaus W. (mfgkw)


Lesenswert?

Du kannst die Zahlen als int8_t lesen, das gibt Werte -128...+127.
Dann auf int16_t erweitern, und 0x80 bzw. 128 dazuzählen, das gibt Werte 
von 0...255.
Konvertiert zu einer uint8_t hast du den Wert für die PWM... (8 Bit).
1
int8_t    i8wert;
2
i8wert = ...; // aus WAV lesen
3
gib8bitzupwmaus( (uint8_t)( ( (int16_t)i8wert ) + 0x80 ) );

von Hannes L. (hannes)


Lesenswert?

Stephan schrieb:
> Ich habe mir mal die wav Datei angeguckt und hab festgestellt, dass die
> Daten dort von 00 bis ff gehen.

Stimmt.

> Doch in Audacity sehe ich, dass es von
> -1 bis 1 geht,

Verstehe ich nicht, aber ich nutze das Programm auch nicht.

> d.h das 80 der Mittelpunkt ist.

Der Mittelpunkt. bzw. die Mittellinie ist 128 bzw. 80 Hex.

> Wie kann ich das denn in
> PWM übertragen??

Ja warum denn nicht? Der Bereich geht von 0 bis 255, die Mitte ist 128. 
Wichtig ist nur, dass die PWM schnell genug ist. Mit dem Tiny85 (auch 
Tiny84 oder Tiny861) ist das sehr gut realisierbar.

> Wie mache ich diese Wechselspannung oder muss man sie
> nicht machen?

Welche Wechselspannung, die zu erzeugende NF?

Du erzeugst eine PWM mit relativ hoher (Träger-)Frequenz und modulierst 
den Tastgrad im Zeitraster der Samplerate mit den Bytes der WAV-Datei. 
Ein Tiefpass zwischen PWM-Ausgang und Verstärker filtert die 
PWM-Frequenz weg und übrig bleibt die Wechselspannung, die in der 
WAV-Datei gespeichert ist. Jedes Byte (außer WAV-Header, der muss 
entfernt werden) repräsentiert den Augenblickswert dieser 
Wechselspannung. 0 entspricht negativster Pegel, 128 entspricht 
Mittellinie und 255 entspricht dem positivsten Pegel. Funktioniert 
wunderbar, ich baue damit Soundmodule für Gartenbahn-Loks (Diesel und 
Dampf).

...

von Stephan (Gast)


Lesenswert?

Ja den Header hab ich schon weggemacht. Was ich nicht verstehe ist, wenn 
man den Wert 0x00 an PWM übergibt, dann kommt doch an den Ausgang nichts 
raus, und wie soll den daraus eine negative Spannung werden?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Da Audiosignale mittelwertfrei sind kannst du den Ausgang einfach über 
einen Kondensator in Reihe anschließen (AC-Kopplung), dadurch wird der 
Gleichanteil entfernt und du hast die gewünschte 0-symmetrische 
Wechselspannung.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Der Kondensator muss nur von der Kapazität her so groß sein, dass er 
beim Treiben des nachfolgenden Verstärkers nie voll ge- und entladen 
wird. Gegebenenfalls muss dann noch eine Pufferstufe nachgeschaltet 
werden, um den Portpin des Controllers zu entlasten.

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.