Hallo! Da ich es praktisch noch nicht gemacht habe wollte ich hier kurz fragen, bevor ich einen Testaufbau erstelle. Evtl. kann ja gleich einer sagen "Vergiss es" oder "Kein Problem"... :) Controller wird irgendein kleiner AVR werden (Tiny26 oder Mega8) Also: Ich möchte (um einen DAC-IC zu sparen) ein Dreiecksignal von 50-800Hz erzeugen. Die Amplitude soll von (U-Spitze-unten) 1V bis (U-Spitze-oben) 2,5V gehen. Dabei ist die Signalform (saubere Spitzen; nichts Sinusähnliches) besonders wichtig. Hab ich da mittels PWM + RC-Glied eine Chance in bezug auf Signalform und Frequenz oder bin ich gezwungen einen ext. DAC zu verwenden? :) Schöne Grüße, Techniker
>Hab ich da mittels PWM + RC-Glied eine Chance in bezug auf Signalform >und Frequenz oder bin ich gezwungen einen ext. DAC zu verwenden? Klar geht das mit PWM. Da aber EIN RC-Filter nicht sehr steil ist (-20dB/Dek), solltest du mit deiner PWM-Frequenz möglich weit weg von deiner max. Ausgangsfrequenz bleiben. Über den Daumen würd ich sagen, f_PWM zehnmal größer, also über 8kHz. Und das RC Filter auf etwas über 1kHz (größer 800Hz) einstellen. Müsste aber mal nachgerechnet werden... EDIT: Theoretisch reicht als PWM Frequenz die doppelte max. Signalfrequenz. Aber nur dann, wenn du einen IDEALEN Tiefpass bauen kannst...
Danke! Mehr wollte ich vorerst garnicht wissen.. :-) Dann mach ich mich jetzt mal an den Testaufbau.. ;)
@ Der Techniker (techniker) >Hab ich da mittels PWM + RC-Glied eine Chance in bezug auf Signalform >und Frequenz oder bin ich gezwungen einen ext. DAC zu verwenden? Kann man machen. >Über den Daumen würd ich sagen, f_PWM zehnmal größer, also über 8kHz. >Und das RC Filter auf etwas über 1kHz (größer 800Hz) einstellen. >Müsste aber mal nachgerechnet werden... Naja, um gerade die Spitzen sauber hinzukriegen sollte man vielleicht nicht die PWM als DAC misbrauchen, sondern lieber über einen OPV als Integrator und ein Taktsignal mit 50% Tastverhältnis. Rechtecksignal (50% DC) -> Integrator -> Dreieck. Allerdings braucht man dann eine Möglichkeit, die Zeitkonstante zu verändern. Hmm. Oder man schaltet einen zweiten OPV mit variabler Verstärkung dahinter. Das ist einfacher. >Dann mach ich mich jetzt mal an den Testaufbau.. ;) Ich würde erstmal drüber nachdenken und dann erst loslegen. Sonst läuft das nur auf viel geschrei und wildes Rumlöten hinaus. MFG Falk
...wieso rumlöten? :) -> Steckbrett! ;)
Um ein Dreiecksignal zu erzeugen braucht man eigentlich nur eine Stromquelle und einen Kondensator den man damit lädt. Wenn du die Stromstärke steuerbar machst und die Ladepolarität des Kondensators umkehrbar machst hast du einen schönen Dreieckgenerator. Mit der Stromstärke kannst du dann die Anstiegzeit regeln und mit der Polarität lädtst und entlädtst du den Kondensator fortwehrend. Das ganze natürlich von deinem uC gesteuert. Das Ausgangssignal durch einen Impedanzwandler oder Verstärker geschickt und du hast ein Dreiecksignal. Ob die Geschichte mit einer PWM (gerade die Spitzen) so sauber hinzubekommen sind? Tiefpassfilter müssen schon sehr steil sein damit das gelingt. Vielleicht wäre es aber eine Möglichkeit die ansteigende Flanke und die abfallende Flanke jeweils mit einer eigenen PWM getrennt zu erzeugen. Nach der Filterung der beiden Signale schaltet man mit einem schnellen Multiplexer beide Signale abwechselnd auf den Ausgang. Die beiden PWM-Signale müssen sich dabei zeitlich etwas überlappen damit du die Rundungen mit dem Multiplexer praktisch abschneidest. (Ist jetzt nur so eine Idee aber vielleicht hilft es weiter :-))
Matthias L. wrote: > Über den Daumen würd ich sagen, f_PWM zehnmal größer, also über 8kHz. > Und das RC Filter auf etwas über 1kHz (größer 800Hz) einstellen. > Müsste aber mal nachgerechnet werden... Das muss es in der Tat: Das Frequenzspektrum eines Dreiecks ist (theoretisch) unendlich groß. Mit einem unendlich steilen 1kHz Tiefpass erhält man daher einen sauberen 800Hz Sinus, wenn man per PWM ein 800Hz Dreieck ausgibt. Wenn die Ecken vom Dreieck sauber sein sollen, sollte man mindestens die 10 fache Frequenz, also 8kHz sauber wiedergeben. Daher wird es mit PWM etwas schwer. Ich würde also auch zur Integratormethode greifen.
Da du nun schon fasst gerechnet hast, kann ich meine Werte ja etwas anpassen: 16MHz Quartz bei 8Bit Timer ergibt 62,5kHz Wenn diese PWM-Frequenz von 62,5kHz jetzt einen Dreieck mit 1kHz Grundfrequenz erzeugen, gibt es folgende Frequenzen: Signal: 1; 3; 5; 7; 9; 11; 13; ... Summen: 63,5; 65,5; 67,5; 69,5; ... Differenzen: 61,5; 59,5; 57,5; 55,5; ... PWM: 62,5 Somit wäre es sinnvoll, die Grenzfrequenz des Tiefpasses bei f_pwm/2, also bei etwa 30kHz anzusetzen. Somit sind genug Oberwellen zur Erzeugung eines (ausreichend) steilen Dreiecks vorhanden. Und dasVerhältnis f_pwm/f_max_signal, welches etwa 65 ist, erlaubt eine relativ kleine Stufenhöhe von ca 80mV (bei 5V Dreiecksamplitude) Das sollte so funktionieren...
>PWM-Frequenz von 62,5kHz
tiny26 kann 8-bit-pwm dank PLL mit bis zu 250kHz ausgeben...
das waere eine faktor 312,5 hoehere frequenz. da sollte man auch mit
einem einfachen tiefpass noch brauchbare ergebnisse bekommen.
Das ist korrekt, allerdings ist zu bedenken, dass es für eine kleine Stufenhöhe mit jeder Overflow des PWM-Timers auf einen neuen Wert zu laden gibt. Also immer Interrupt rein, Wert holen und laden, RETI..
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.