RIFF(WAVE) Daten in PWM übertragen

Gast #2252535
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?
#2252596
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 ) );
#2252609
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).

...
Gast #2252859
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren