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?
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 ) ); |
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). ...
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.