Guten Abend zusammen, ich habe vor einen digitalen step sequenzer zu bauen und suche jetzt einen einfachen weg Klänge zu erzeugen. Mein Zeil ist es eine art VCO zu bauen mit dem ich verschiedene Arten von Schwingungen erzeugen kann ( Rechteck , Sägezahn , Sinus ). Meine Idee wäre ein ATMEGA8 so zu programmieren , dass man mittels 2 Potis die Frequenz grob und fein einstellen kann und mittels eines Schalters zwischen den Schwingungsarten wechseln kann. (siehe bild1). Das Problem ist, dass ich nicht weiß wie ich aus dem PWM signal ein analoges Signal mache. Ist das überhaupt möglich ? LG. Dennis
:
Bearbeitet durch User
Hallo. Ich vermute mal, dass das was du suchst ein einfacher Tiefpass ist: http://www.instructables.com/id/Analog-Output-Convert-PWM-to-Voltage/?lang=de
Wie programmiere ich das den am besten? Kann ich das dann ganz einfach mit pwm machen also 255 -> 5V 0 -> 0V ? Ich hab auch noch zwei TDA1534A. Kann ich die verwenden und wenn ja wie steuer ich die am besten mit der Arduino IDE an ? Ich habe es schon mal versucht aber nicht hinbekommen. Gibt es dazu eine Library? Lohnt sich der Aufwand oder ist der Tiefpass einfacher ?
Der übliche Weg, aus PWM einen Zeitverlauf wie Sinus, Sägezahn oder ... zu machen besteht aus einem Tiefpass, also kein Problem. Der trennt Nutzsignal von der Frequenz der Taktimpulse. Wenn man aber hohe Ansprüche stellt braucht man einen möglichst hohen Abstand zwischen Taktfrequenz des PWM-Taktes und der Nutzfrequenz, um aus der PWM ein sauberes Nutzsignal herauszutrennen. PWM ist daher eher für langsamere Signale als Tonsignale geeignet (z.B. im Hz-Bereich variable Spannungen.) Mit einem atmega8 dürfte man einige hundert Hz gut hinbekommen, aber das hängt von den Ansprüchen an die Kurvengenauigkeit ab. Besserer Weg zur Erzeugung tonfrequenter Signalse dürfte das DDS-Verfahren sein. (Dazu gibts hier einige elend lange threads, wie man das mit einem atmega macht)
Wie sieht es mit höheren frequenzen also im kHz aus ? also bis ca. 5kHz.
So einfach wird das nicht werden, denn Du mußt Dir ein sog. R2R- Netzwerk an einen ganzen Port bauen, um wenigstens ein ganzes Byte parallel ausgeben zu können, damit es genügend Stützstellen gibt. Damit kannst Du dann 256 verschiedene Werte ausgeben, so daß die ent- stehende Spannung nach dem Netzwerk auch in 256 "Stufen" oder besser gesagt "Stüfchen" erscheint. Das macht das Signal dann von Natur aus schön rund, so daß Du nicht mehr soviel Aufwand für die Filterung brauchst als sonst. Wenn Du nun im Kontroller Tabellen ablegst, deren Werte nacheinander auf den Port ausgegeben werden, dann kannst Du mit dem Inhalt der Tabelle bestimmen, ob Sinüsse, Sägezähne, Dreiecke oder völlig abartige Kurven- formen erzeugt werden sollen. MfG Paul
:
Bearbeitet durch User
oder mal eine andere frage : kann ich mit einen atmega2560 8 komplett voneinander unabhängige frequenzen erzeugen? z.b. auf einen pwm 200hz sinus , auf dem 2. 400hz rechteck , ... ?
Für höhere Anforderungen an die Qualität würde ich dann doch besser einen zusätzlichen DA-Wandler verwenden. Z.B. MCP3202 oder MCP4802 Oder vielleicht direkt einen ATXMega nehmen der schon DA-Wandler integriert hat.
Als Einstieg vielleicht mal Elm Chans 'Wavetable Melody Generator' anschauen.
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.