www.mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Per PWM+RC-Glied eine Dreieckspannung mit 800Hz erzeugen?


Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!
Mehr wollte ich vorerst garnicht wissen.. :-)


Dann mach ich mich jetzt mal an den Testaufbau.. ;)

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...wieso rumlöten? :)
-> Steckbrett! ;)

Autor: Mandrake (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-))

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: déjà vu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.