Hallo Als erste "Warnung": Wer keine Lust hat einen längeren Text auf der verlinkten Seite zu lesen, möge bitte direkt meine Frage ignorieren und zu irgendeinen anderen Thread wechseln - nicht das noch Beschwerden kommen man würde in seiner Ruhe gestört werden... Es geht hier um : http://henrysbench.capnfatz.com/henrys-bench/arduino-projects-tips-and-more/arduino-lm358-op-amp-pwm-to-voltage-converter/ und dabei eigentlich nur um den ersten Teil bis zum Punkt "Arduino LM358 Op Amp PWM to Voltage Out Tutorial" Dort wird "vorgerechnet" wie sich ein Tiefpassfilter (für einen PWM - Spannungswandler mit einen OP) auflädt bzw. entlädt. Leider aber nur über Onlinetools - na ja mit welche Formel diese letztendlich arbeiten lässt sich aber herausfinden bzw. ich kenne diese schon und kann sie auch nachvollziehen. Aber trotzdem: Es wird sich zwar sehr gut verständlich aber letztendlich doch umständlich "irgendwie durchgehangelt" und zu einen "richtigen" Endergebnis kommt man eigentlich auch nicht (das wäre zwar absolut nicht Praxis relevanten da reale Toleranzen und "Schmutzeffekte" sowieso schon viel früher einen Strich durch eine "perfekte Rechnung machen würden, aber... man ist ja neugierig). Ich "weiß" das die Berechnung auch ohne durch hangeln möglich ist und man wohl (das ist dann aber nur eine Vermutung weil ja ein Kondensator theoretisch und von der physik her nie 100 % aufgeladen sein kann) zu einen mathematisch "vollkommenen" Endergebnis kommen kann: Also was muß man wissen, bzw. wie wird die Rechenmethode genannt mit der man sich eben nicht "mühsam" (aber dafür auch leicht und verständlich nachvollziehbar) durchhangeln muss, sondern wo das mit einen (?) Schritt erledigt wird und auch mathematisch "vollkommenen" Ergebnis kommt? Die Krönung wäre es wenn dann noch erklärt werden würde wie man (ich) die Rechenmethode dann auch anwende - wobei ich die Befürchtung habe das es dann bei mir an Grundlagen mangeln wird... Tünnes
Die Exponengialfunktion (Schulmathemstik 9. Klasse) berechnet die e-Kurve nach der sich der Kondensator umlädt. Man braucht noch die Angabe, wie genau er den Endwert erreichen soll, denn zu 100% geht ja nicht. Meist nutzt man 1 bit, bei 8 Bit PWM also 1/256 (0.3%) der Gesamtspannung, bei 10 bit 0.1%. http://www.lothar-miller.de/s9y/archives/11-RC-Glied-fuer-PWM.html#extended http://sim.okawa-denshi.jp/en/Fkeisan.htm (RC Filter Rechner) http://ltwiki.org/images/8/82/PWM_Filters.pdf (Filtering PWM Signals, "You CANNOT go all the way to zero with a single supply active filter!") Microchip AN538 "Using PWM to Generate Analog Output"
1 | uC --R--+-- Analog (gering belastbar) --|+\ besser belastbar |
2 | | | >-+- geht aber nicht ganz auf 0V |
3 | C +-|-/ | wenn OpAmp keine negative Versorgung hat |
4 | | | | mindestens ein Widerstand nach Masse: |
5 | Masse +------+----pulldown--- GND |
> Dort wird "vorgerechnet" wie sich ein Tiefpassfilter (für einen PWM - > Spannungswandler mit einen OP) auflädt bzw. entlädt. Vorgerechnet? Das ist so eine typische Seite fuer Arduinoanbeter die keine Grundlagen gelernt haben. Ich seh da eigentlich gar keinen richtigen Filter. Und LM358..oh backe... > Die Krönung wäre es wenn dann noch erklärt werden würde wie man (ich) > die Rechenmethode dann auch anwende - wobei ich die Befürchtung habe das Du ueberlegst du zuerst mal wieviel Aufloesung du brauchst oder haben willst. Nehmen wir als Beispiel mal 13Bit. (um die abschreiber zu aergern :-) ) Dann kuckst du wie mit welcher Taktfrequenz du die PWM in deinem Prozessor laufe lassen kannst. Nehmen wir mal an das waeren 55Mhz. Dann hast du eine PWM-Frequenz von 55Mhz/2^13=6.7khz. Das ist die Stoerung die du auf deiner Gleichspannung hast. Dan ueberlegst du dir wie schnell du die Gleichspannung aendern musst. Nehmen wir mal an du willst 10x pro Sekunde einen neuen Wert ausgeben. Also 10Hz. Davon musst du noch ein bisschen abstand halten weil Filter ein gewisses Uebergangsverhalten haben. Sagen wir mal du willst einen Tiefpass mit fg= 100Hz haben. Jetzt musst du zwischen 100Hz und 6.7khz eine Daempfung von 13x6db = 78dB schaffen. Also berechnest du dir dafuer einen passenden Filter. Grundlagen vermittelt dir Tietze und Schenk, Praxis geht gut mit Filterpro von TI. Filterpro ist deshalb geil weil man einfach alle C in E6 und alle R in E12 berechnen kann. Dadurch entfernt man sich etwas von der gewuenschten Filtercharakteristic (z.B Butterworth). Als letztes simulierst du nochmal alles in LT-Spice. Ich hab damit schon problemlos 16Bit Systemdynamik erreicht. Ist billig, einfach und langsam. Oh..und noch ein Trick. Schick den PWM-Ausgang des Mikrocontrollers nicht direkt auf dein Lade-C sondern durch ein Gatter das du sehr sauber versorgst. Vielleicht sogar aus einer Referenz. Olaf
> "You CANNOT go all the way to zero with a single supply active filter!")
Hehe..das stimmt natuerlich auch! Also entweder den Nullpunkt anheben
oder -0.5V fuer den OP herbeizaubern.
Olaf
Tünnes schrieb: > Ich "weiß" das die Berechnung auch ohne durch hangeln möglich ist und > man wohl (das ist dann aber nur eine Vermutung weil ja ein Kondensator > theoretisch und von der physik her nie 100 % aufgeladen sein kann) zu > einen mathematisch "vollkommenen" Endergebnis kommen kann: Er wird hier auch nur dann komplett aufgeladen oder komplett entladen, wenn die PWM 100% oder 0% hat. Auch wenn die Physik sagt, dass es theoretisch erst nach unendlicher Zeit möglich wäre, diese Zustände zu erreichen, so reicht einem in der Praxis mit 99,x% Genauigkeit die Abschätzung mit 5*tau. Tau = R*C. > Also was muß man wissen, bzw. wie wird die Rechenmethode genannt mit der > man sich eben nicht "mühsam" (aber dafür auch leicht und verständlich > nachvollziehbar) durchhangeln muss, sondern wo das mit einen (?) Schritt > erledigt wird und auch mathematisch "vollkommenen" Ergebnis kommt? Der Tiefpass soll ja den Mittelwert des PWM-Signals am Ausgang haben. Damit weiß man schon mal, was das Ziel ist: bei 50% Tastverhältnis erwartet man 5V/2. Interessant ist eigentlich nur, wie viel Rest-Ripple noch auf dem Ausgang ist. Das kann man jetzt dadurch bestimmen, dass man den Spannungsteiler aus R und C mit komplexer Rechnung bestimmt, den Betrag bildet und dann bei der PWM-Frequenz schaut, wie viel Dämpfung da vorhanden ist. Am Eingang sind es 5V Hub, am Ausgang dann eben x dB weniger. Man kann auch von dem oben abgeschätzten Wert (50% Tastverhältnis ⇒ 2.5V) ausgehen und dann mit der e-Funktion berechnen, um wie viel sich der Kondensator lädt bzw. entlädt, wenn der PWM-Eingang für 1ms auf 5V liegt und dann wieder für 1ms auf 0V. Siehe https://de.wikipedia.org/wiki/RC-Glied in den Abschnitten Ladevorgang und Entladevorgang. Man kann es sich auch einfach machen und LTSpice zur Hilfe nehmen. Da kann man die Dämpfung des RC-Glieds bei deiner PWM-Frequenz berechnen lassen oder direkt im Zeitbereich den Restripple anschauen. Letztere wäre die Methode, die ich bevorzuge und die mir reicht. Gut, ich habe mal vor langer Zeit gelernt, wie man das rechnet und damit ist das Verständnis für den Vorgang da, auch wenn ich heute tatsächlich die komplexe Betragsbildung nicht mehr so aus dem Ärmel schüttle - schließlich habe ich das in 40 Jahren kaum benötigt. Mit deinen Zahlen ergibt das rund 50mV Ripple bei 50% Tastverhältnis.
Olaf schrieb: > Ich seh da eigentlich gar keinen richtigen Filter. ... Dann mach mal die Augen auf und achte auf den passiven TP 1. Ordnung. p.s. Was ist in deinen Augen überhaupt ein "richtiger Filter"?
> Was ist in deinen Augen überhaupt ein "richtiger Filter"?
Irgendwas hoeherer Ordnung. Liegt wohl daran das ich Messtechnik mache
und da praktisch 16Bit die Grundanforderung ist.
Olaf
Olaf schrieb: > Irgendwas hoeherer Ordnung. Liegt wohl daran das ich Messtechnik mache > und da praktisch 16Bit die Grundanforderung ist. Die Ordnung eines Filters wird bestimmt nicht in Bit gemessen, hat also irgendwie erstmal nichts damit zu tun. ;-) Und welche Filterordnung du brauchst, um bei geforderter Restwelligkeit auf die passende Amplitudendämpfung zu kommen, hängt vom Verhältnis von PWM-Frequenz zu Filtergrenzfrequenz ab - auch bei 16Bit Irgendwas.
> Die Ordnung eines Filters wird bestimmt nicht in Bit gemessen, hat also > irgendwie erstmal nichts damit zu tun. ;-) Ja okay. Aber man will ja nicht zu weit weg sein von der Grenzfrequenz. PWM ist ja so schon lahm genug wenn du da Aufloesung rausquetschen willst. Es gibt uebrigens noch eine coole Trickschaltung welcher sich Horrowitz und Hill in ihren X-chapters gewidmet haben. (s.383) Geht auf einen EDN Artikel zurueck. Mompls...ist doch vielleicht im Netz... https://www.edn.com/cancel-pwm-dac-ripple-with-analog-subtraction/ Olaf
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.