Per PWM+RC-Glied eine Dreieckspannung mit 800Hz erzeugen?

Gast #613697
Lesenswert?

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
Gast #613709
Lesenswert?

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

@ 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
Gast #614150
Lesenswert?

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 :-))
#614157
Lesenswert?

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

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

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

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..

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