PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schaltung überprüfen



Che Guevara
22.06.2014, 00:39
Hi,

ich hab eine Schaltung entwickelt, welche jetzt nicht so funktioniert wie erwartet ...
Im Prinzip ist es ein OP mit Verstärkung, Offset und Tiefpass Funktion. An dem einen Eingang (+) hängt ein Luftdrucksensor, am anderen Eingang (-) eine Offset-Spannung, erzeugt mittels PWM und Tiefpass (& Mosfet).
Die Pwm Frequenz beträgt 7.8kHz, nur messe ich am Ausgang des OP eine starke Schwingung mit 78kHz (also um Faktor 10 größer). Schwingt der OP?
Hier der Schaltplan:
28517
Der Op ist ein TS912D, beim anderen OP (also #2 im Gehäuse) ist - & Ausgang verbunden, + liegt über 200k an GND.
V3 stellt den PWM-Ausgang des ATMEL dar, V2 soll den Sensor darstellen. Dieser ist an 5V angeschlossen, deswegen der Spannungsteiler, um auf max. 3V3 zu kommen.
Der Verstärkungsfaktor sollte bei V = 200k / 2195 = 91.12 liegen?!

Hab ich einen prinzipiellen Fehler im Schaltplan? Oder sind die Werte evtl. falsch dimensioniert?
Vielen Dank & Gruß
Chris

ranke
22.06.2014, 07:56
Du treibst einen hohen Aufwand um das PWM-Signal glatt zu bekommen, im Prinzip sind es zwei Tiefpässe zwischen dem PMOS und dem OP und noch einen weiteren im Rückkopplungszweig. Teilweise behindern sich die gegenseitig. Was über C4 rückgekoppelt wird, fließt gleich über C2 an Masse ab.
Vorschlag: Mindestens mal C2 weglassen. Besser, wenn es die geforderte Bandbreite erlaubt: das gesamte Eingangsnetzwerk weglassen, warum nicht direkt vom PWM-Pin des MC über einen Widerstand (ich nenne ihn mal R1) direkt auf den invertierenden Eingang des OP? R1 und R8 bestimmen dann die Gleichstromverstärkung, die Dämpfung der PWM Frequenz erfolgt über C4. Eine Restwelligkeit am Ausgang ist theoretisch nicht zu vermeiden, kann aber mit einem ausreichend großen C4 beliebig klein gemacht werden (zu Lasten der Bandbreite).

Che Guevara
22.06.2014, 13:18
Hi,

da hab ich es wohl zu gut gemeint mit der Glättung. Werd das gleich mal ausprobieren, obs dann funktioniert.
PWM direkt vom µC möchte / muss ich vermeiden, weil am selben Port noch ein paar Verbraucher hängen und wenn diese eingeschaltet werden, sinkt die Spannung am gesamten Port (also auch an der PWM) um wenige mV ab - zuviel für meine Schaltung, ich will Spannungen im <1mV Bereich messen, deswegen der NMOS.

Gruß
Chris

ranke
22.06.2014, 14:58
PWM direkt vom µC möchte / muss ich vermeiden, weil am selben Port noch ein paar Verbraucher hängen und wenn diese eingeschaltet werden, sinkt die Spannung am gesamten Port (also auch an der PWM) um wenige mV ab - zuviel für meine Schaltung, ich will Spannungen im <1mV Bereich messen, deswegen der NMOS.

Der ON-Widerstand des NMOS ist allerdings temperaturabhängig und bildet mit R2 einen Spannungsteiler, dessen Ausgangsspannung demnach auch von der Temperatur des NMOS abhängt. Ist also wahrscheinlich keine gute Lösung für genaues Messen. Wenn es um Millivolt geht, sollte man die ganze Sache komplett überdenken. Willst Du etwas zum Drucksensor sagen (idealerweise mit Link zum Datenblatt) und außerdem zum Sinn und Zweck der Gesamtschaltung? Es ist immer hilfreich zu wissen um was es geht, wenn man einen Rat geben soll.

Che Guevara
22.06.2014, 15:23
Hi,

die Vorgehensweise (MOSFET) wurde mir in einem anderen Thread angeraten.
Der Drucksensor ist ein MPXH6115A6U, der gibt 46mV / kPa aus. Da ich eine mind. Genauigkeit von ca. 1cm / Step benötige, muss der Ausgang stark verstärkt werden. 1kPa entspricht in etwa 8m (grob geschätzt) --> 46mV / 800cm = 0.0575mV/cm.
Der µC, der das Signal messen soll, läuft mit 3V3, deswegen muss dieser Wert auch noch geteilt werden --> 0.0575mV/cm * 0.618 = 0.0355mV/cm. Der ADC ist ein 12Bit ADC, mit Reference entweder 2.0625V oder 1V. Ich nehme 1V, weil ich damit schonmal 1Bit ggü. den 2.0625V gewinne. 1V / 4096 = 0.244mV.
0.244mV / 0.0355mV/cm = 6.87cm / Step, das reicht bei weitem nicht, da das Rauschen des ADC (1-2 Bit) auch noch weggemittelt werden muss.
Ergo muss ich auf mind. 0.5cm / Step kommen, um auch nur annähernd die gewünschte Genauigkeit zu erreichen.

Wenn du eine gute Umsetzungsidee dazu hast, immer her damit :D

Gruß
Chris

ranke
22.06.2014, 16:40
Erst noch mal die Ausgangssituation klarstellen:


ist ein MPXH6115A6U, der gibt 46mV / kPa aus

Das Datenblatt das ich auf die Schnelle gefunden habe, sagt: 0,2V @ 15kPa, 4,5V @ 115kPa, also 43 mV/kPa


1kPa entspricht in etwa 8m (grob geschätzt)

Wikipedia behauptet, 1hPa entspricht in etwa 8m. 1 kPa wären also 80m.


1cm / Step ... 12Bit ADC

Das wären also gerade mal 40 Meter bis zum Überlauf des ADC, wenn man den Verlust an Genauigkeit für das Rauschen des ADC und der Vorverstärkung vernachlässigt. Ist das so gewollt bzw. ausreichend?

Die PWM-Geschichte soll also eine Nullpunktskalibration werden?

Noch etwas zum Verständnis: Soll es für die Flugzeit eine absolute Höhenmessung ergeben oder nur eine Steig/Sinkrate ausgeben? Falls absolut, wie lange wäre die maximale Flugzeit (ich denke konkret an Langzeitstabilität, speziell auch im Zusammenhang mit meteorologisch bedingten Luftdruckschwankungen).

Che Guevara
22.06.2014, 17:33
Hier ( http://www.freescale.com/files/sensors/doc/data_sheet/MPXA6115A.pdf ) steht auf Seite 3: Sensitivy 45mV/kPa
Ok, bei der Höhenscalierung hab ich mich wohl vertan (hab mich schon gewundert)...
Wegen deiner genannten 40m brauche ich eben den Offset durch die PWM, um den vollen Bereich ausnutzen zu können.
Der Sensor wird sowohl zur Steig/Sinkraten Berechnung als auch zur Höhenmessung benutzt. Die max. Flugzeit liegt bei etwa 30Min (hoch geschätzt), wenn der Wert dann um ein oder zwei Meter driftet ist das vernachlässigbar (ich wüsste auch nicht, wie man das kompensieren könnte?!)

Gruß
Chris

ranke
22.06.2014, 18:08
Wegen deiner genannten 40m brauche ich eben den Offset durch die PWM, um den vollen Bereich ausnutzen zu können.

Das Verfahren scheint mir insgesamt recht umständlich zu sein. Die Restwelligkeit des PWM liegt dann verstärkt am ADC an, das bringt zusätzlichen Ärger.

Man könnte sich folgendes Verfahren näher ansehen:

Der MC erzeugt eine PWM, über eine RC-Kombination macht man daraus eine Gleichspannung (schwach wellig im Bereich weniger Millivolt). Diese Spannung kommt auf den einen Eingang eines Komparators, auf den anderen Eingang das Sensorsignal (eventuell vorverstärkt und geklippt auf den interessierenden Bereich). Für das Ausgangssignal des Komparators gibt es 3 Möglichkeiten:
entweder Low, High oder rechteckig im Takt der PWM, nämlich genau dann, wenn die Sensorspannung im Bereich der Restwelligkeit des geglätteten PWM-Signals liegt. Die PWM regelt man auf Gleichtakt des Komparatorausgangs.
Vorteil: mit einem 16-Bit Zähler kommt man schon mal auf 16 bit Einstellbarkeit der PWM. Wenn man den Mittelwert von mehreren Durchläufen nimmt, kann man noch interpolieren. Einen Komparator haben viele MC schon eingebaut.


Die max. Flugzeit liegt bei etwa 30Min (hoch geschätzt), wenn der Wert dann um ein oder zwei Meter driftet ist das vernachlässigbar (ich wüsste auch nicht, wie man das kompensieren könnte?!)

Bei einem Wetterumschwung können das auch mal 100 Meter pro halbe Stunde werden. Man könnte am Boden einen zweiten Sensor plazieren und dessen Werte per Funk an das Fluggerät übermitteln, zwecks Differenzbildung. Wenn man dann auch noch die Temperatur misst, könnte das schon ziemlich genau werden.

Che Guevara
22.06.2014, 18:31
Glücklicherweise könnte ich deine vorgeschlagene Methode gleich ausprobieren, hab nämlich schon ne Platine, die genau die Anforderungen erfüllt ;)
Allerdings sehe ich keinen Vorteil darin im Vergleich zur OP-Methode.
Du meinst also, ich soll die PWM so einstellen, dass der AC dauernd (im Takt der PWM) toggelt?! Und dieses Signal dann interpolieren, anhand des PWM-Wertes erhalte ich die Größenordnung / Offset des Signals.
Einen zweiten Sensor am Boden möchte ich vermeiden, das hat sonst auch niemand und trotzdem funktionierts.
Evtl. ist es noch erwähnenswert, warum ich das ganze überhaupt betreibe:
Ich habe schon eine Platine, die den internen OP eines ATXMega ausnutzt und mit der ich auf ca. 1cm Genauigkeit komme, die Lösung mit externen OP (wie im ersten Thread) wollte ich mal ausprobieren, weil dadurch der digitale Tiefpass im µC entfällt und ich evtl. steilere Flanken des Filters implementieren könnte, sodass der Wert schneller auf Höhenänderungen reagiert (momentan habe ich eine Phasenverschiebung von ca. 200ms).

Gruß
Chris

EDIT:
Picture, was genau meinst du? Einfach den Ausgang verstärken und diesen messen? Das geht nicht, weil ich dann nur einen kleinen Bereich messen könnte.

Che Guevara
22.06.2014, 19:20
Angenommen, ich habe eine Verstärkung von 100 und eine Referenz von 1V, dann kann ich nur eine Spannung zwischen 0V und 1V/100 = 10mV messen, weil darüber der ADC in die Begrenzung geht, da Vin > Vreference.

Gruß
Chris

ranke
22.06.2014, 19:47
Du meinst also, ich soll die PWM so einstellen, dass der AC dauernd (im Takt der PWM) toggelt?! Und dieses Signal dann interpolieren, anhand des PWM-Wertes erhalte ich die Größenordnung / Offset des Signals.

Man müsste dann auch auf ein bestimmtes Taktverhältnis (z.B. 1:1) regeln, sonst verschenkt man Genauigkeit. Wenn Du es schon probiert hast und es nicht gut geht, dann glaube ich das mal so.

Also nochmal Bezug auf die Schaltung im Ursprungspost:
Soweit ich es jetzt verstehe wird die PWM einmal eingestellt (vor dem Start) und bleibt dann für den Flug konstant. Damit ist die Zeitkonstante für die PWM Glättung nicht besonders kritisch. Die Restwelligkeit sollte aber gering sein (deutlich unterhalb der Auflösung des ADC). Der Meßwert hingegen ist zeitkritisch, die Bandbreite muß aber vermutlich wegen Rauschen begrenzt werden.
Also folgender Vorschlag:
Auf den PWM Ausgang folgt ein Tiefpass mit entsprechend geringer Restwelligkeit. Um das Problem mit dem Kondensator in der Rückkopplung zu vermeiden kann man die geglättete PWM an den nicht invertierenden Eingang des OP legen. An den invertierenden Eingang dann über einen Widerstand den Sensor. Rückkopplung wie gehabt (Widerstand entsprechend der Gleichspannungsverstärkung, Kondensator entsprechend der Rauschunterdrückung, wird man probieren müssen). Bei allen Kondensatoren Folientypen wählen.
Momentan sehe ich die PWM Spannungspegel als kritischsten Punkt was die Genauigkeit betrifft. Die Pegel sollten nämlich mit hoher Genauigkeit der Referenzspannung des ADC folgen. Normalerweise einfach, man nimmt ein CMOS Gatter und versorgt es mit der Referenzspannung des ADC und die Sache passt. Ich weiß allerdings kein CMOS Gatter, das sich mit 1V Betriebsspannung begnügt. Man sollte vielleicht etwas mit Analogschaltern bauen (CD4016 fällt mir spontan ein, bestimmt gibt es heute bessere). Man bräuchte dann z.B. 3 Schalter, einen PWM zur Referenzspannung, einen PMW zu Masse und einen schaltet man als Inverter, damit man nur ein Pin des MC zum Ansteuern der Beiden braucht.

Che Guevara
22.06.2014, 20:21
Also ich habs noch nicht probiert, hätte nur eine Schaltung, um es zu testen, aber ich verstehs noch nicht ganz...
Wenn ich auf z.b. 50% Dutycycle einstelle, bekomme ich bei VCC = 3V3 genau 1.65V raus. Wenn jetzt aber der Sensor z.b. 1.4V ausgibt (nach dem Spannungsteiler), wie soll ich dann messen?
Ich dachte du meintest, ich solle den Dutycycle so einstellen, dass die geglättete Spannung so genau wie möglich der Sensorspannung entspricht??

Ja, bei Programmstart wird die PWM von 0 bis 100% durchfahren, um den Offset zu finden, dieser Wert wird gespeichert und bleibt konstant (bis der ADC an einen Anschlag läuft, dann wird der PWM Wert erhöht oder erniedrigt, um die Spannung wieder in Richtung Mitte des ADC zu bringen (zum Höhenwert wird dann eine konstante hinzugerechnet, um keinen Sprung im Höhenwert zu haben).)

Ja, die PWM-Glättung ist der springende Punkt. Momentan habe ich ja einen passiven Tiefpass 2. Ordnung (ohne den OP miteinzubeziehen), mit den Werten R = 10k, C = 1µ, das ergibt eine Zeitkonstante von 10ms. Die Werte habe ich damals mit LTSpice simuliert, da war kein Ripple mehr zu sehen. Mittlerweile bin ich aber der Meinung, dass das nicht ganz richtig ist. Evtl. werde ich einen Tiefpass 3. Ordnung verwenden, was meinst du? Die Pwm Frequenz liegt bei 125kHz, kann aber nicht mehr vergrößert werden, weil das zu lasten der Auflösung ginge und dann evtl. der Offset nicht mehr gefunden werden kann.
Die Zeitkonstante zu vergrößern ist keine gute Idee, da dann die Offsetfindung bei Programmstart zu lange dauert (momentan max. 255*50ms = 12.75s), außerdem muss wenn während dem Flug der Offset verschoben wird, auch wieder eine Weile gewartet werden, bis sich der neue Wert eingependelt hat.

Gruß
Chris

ranke
22.06.2014, 21:28
Also ich habs noch nicht probiert, hätte nur eine Schaltung, um es zu testen, aber ich verstehs noch nicht ganz...
Wenn ich auf z.b. 50% Dutycycle einstelle, bekomme ich bei VCC = 3V3 genau 1.65V raus. Wenn jetzt aber der Sensor z.b. 1.4V ausgibt (nach dem Spannungsteiler), wie soll ich dann messen?
Ich dachte du meintest, ich solle den Dutycycle so einstellen, dass die geglättete Spannung so genau wie möglich der Sensorspannung entspricht??

das bezieht sich jetzt wohl auf meinen Alternativvorschlag aus meinem Post #8.
Ich versuche meinen Gedanken an einem Beispiel zu konkretisieren, vielleicht sieht man dann deutlicher:
Man erzeugt eine PWM mit einer Auflösung von 16 Bit, z.B. von 0 bis 3V3. Man glättet und reduziert mittels Spannungsteiler auf die Vergleichsspannung x V bis x+327,7 mV. Die 327,7 mVolt sind so gewählt, dass die Änderung von einem digit im PWM Wert eine Spannungsänderung von 5 uV (u = Mikro) der Vergleichsspannung gibt (das entspricht einem Zentimeter Höhe bei der Sensorspannung). Die vom PWM darstellbare Vergleichsspannung umfasst damit einen Bereich von etwa 650 Höhenmeter. Die Vergleichsspannung hat jetzt noch eine Restwelligkeit, die deutlich über 5uV liegt (vielleicht bei 1 mV um irgendeinen Wert zu nennen). Die Spannung x wird so gewählt, dass die PWM Spannung im Bereich der zu erwartenden Sensorspannung liegt (im einfachsten Fall Trimmpoti, vor Start einzustellen).
Jetzt wird Vergleichsspannung und Sensorspannung mit einem Komparator verglichen. Die PWM wird so nachgeregelt, dass die Ausgangsspannung des Komparators ein Taktverhältnis von 1:1 hat. Dazu würde ich bei jedem Flankenwechsel ein Interrupt auslösen und verarbeiten. Die PWM Frequenz darf dabei relativ niedrig (z.B. 1kHz oder gar niedriger) sein, eine Restwelligkeit ist ja explizit erlaubt, ja sogar notwendig. Das Verfahren mit Auswertung des Tastverhältnis im MC vermeidet die langdauernde Glättung mit anschließender AD-Wandlung. Der gültige Höhenwert wird durch gleitende Mittelwertbildung des Compareregisters des Zählers ermittelt.


Ja, die PWM-Glättung ist der springende Punkt. Momentan habe ich ja einen passiven Tiefpass 2. Ordnung (ohne den OP miteinzubeziehen), mit den Werten R = 10k, C = 1µ, das ergibt eine Zeitkonstante von 10ms. Die Werte habe ich damals mit LTSpice simuliert, da war kein Ripple mehr zu sehen. Mittlerweile bin ich aber der Meinung, dass das nicht ganz richtig ist. Evtl. werde ich einen Tiefpass 3. Ordnung verwenden, was meinst du? Die Pwm Frequenz liegt bei 125kHz, kann aber nicht mehr vergrößert werden, weil das zu lasten der Auflösung ginge und dann evtl. der Offset nicht mehr gefunden werden kann.

Mit den Daten kann man schon eine Abschätzung machen. Wenn wir annehmen, dass die mittlere PWM Spannung 1,65V ist (bei 3V3 maximal), dann fließt bei jedem Aufladezyklus des Kondensators ein Strom von 1,65V/10k = 0,165mA. Der Aufladezyklus dauert eine halbe Periode, also 4 us. Die Ladung in den Kondensator ist also Q=0,165mA * 4us = 6,6e-10 C. Die Spannungsänderung (ripple) an 1 uF ist damit U=Q/C = 0,66 mV.

Che Guevara
22.06.2014, 21:59
Hi,

also diese Lösung ist für mich inakzeptabel, weil der ganze Prozess auf einem µC laufen soll, der doch schon etwas augelastet ist, sodass ich auf weitere Interrupts verzichten möchte. Auch die Idee, den Offset vor Start durch ein Poti einzustellen, ist kontraproduktiv, weil zuviel Aufwand und nicht standalone.
Wenn ich deine Rechnung mal weiterführe, also den 2. Tiefpass auch noch miteinbeziehe, komme ich mit:


1.65V/10k = 0.165mA
Q = 0.165mA * 4us = 6.6e-10
U = Q / C = 6.6e-10 / 1e-6 = 6.6e-4

6.6e-4/10k = 6.6e-8mA
Q = 6.6e-8 * 4us = 2.64e-13
U = Q / C = 2.64e-13 / 1e-6 = 2.64e-7

bei 1V Referenz, 12Bit Auflösung und Gain=64 auf nichtmal 1Lsb Rauschen. In der Realität habe ich aber ca. 1.14mV Rauschen.
Ist mein Layout womöglich so schlecht? Könnte es bei Bedarf ja mal reinstellen.

Gruß
Chris

ranke
23.06.2014, 08:34
also diese Lösung ist für mich inakzeptabel, weil der ganze Prozess auf einem µC laufen soll, der doch schon etwas augelastet ist, sodass ich auf weitere Interrupts verzichten möchte.

Schade, von dieser Variante hätte ich mir einiges an Performancegewinn versprochen.


Auch die Idee, den Offset vor Start durch ein Poti einzustellen, ist kontraproduktiv, weil zuviel Aufwand und nicht standalone.

Diese Idee gefällt mir auch nicht (eher aus Gründen der Zuverlässigkeit, Potis fangen irgendwann zu "kratzen" an, das kann man hier nicht brauchen.
Alternativ könnte man die PWM auf mehr als 2 byte ausweiten, das wäre auch kein riesiger Aufwand. Die machbare Frequenz wird dann aber schon langsam (je nachdem, welchen Timertakt du maximal zulassen kannst). Damit könnte man sich alles Kalibrieren vor dem Start sparen, weil der gesamte Meßbereich des Sensors im bester Auflösung erfasst wird.


bei 1V Referenz, 12Bit Auflösung und Gain=64 auf nichtmal 1Lsb Rauschen. In der Realität habe ich aber ca. 1.14mV Rauschen.

Die "Rechnung" war ja nur eine Abschätzung für ein rechteckiges Eingangssignal. Das läßt sich nicht ernsthaft über gekoppelte Tiefpässe fortsetzen. Momentan weiss ich nicht, ob eine Kaskadierung von Tiefpässen sinnvoll ist, oder ob man es mit einem Tiefpass mit möglichst niedriger Grenzfrequenz probieren soll. Das Thema hatten aber andere auch schon, wenn du z.B. im mikrocontroller.net die Suchbegriffe "pwm restwelligkeit" eingibst, kommt einiges zum Lesen. Alternativ über spice simulieren, das geht manchmal schneller.


In der Realität habe ich aber ca. 1.14mV Rauschen.

An welcher Stelle? Rauschen oder Restwelligkeit? Realität oder Simulation? Rauschen kommt mit Sicherheit über den Sensor rein, das kann man durch Tiefpassfilterung (Hardware, Software) auf Kosten der Bandbreite reduzieren. Das ist ja hier die eigentliche Kernfrage, gibt es hier noch Potential zum Optimieren?


Ist mein Layout womöglich so schlecht? Könnte es bei Bedarf ja mal reinstellen.

Glaube ich nicht. Für Tiefpässe von Meß- und Vergleichs- und Referenzspannungen sollte man ausschließlich Folienkondensatoren nehmen. Kerkos und Elkos nur zum Abblocken von unkritischen Betriebsspannungen.

Che Guevara
23.06.2014, 13:08
Hi,

was genau meinst du mit Perfomancegewinn? Im Sinne von schneller reagierenden Eingangssignalen?
Beim ATXMega lassen sich 2 16Bit Timer zu einem 32Bit Timer kaskadieren, das hab ich allerdings noch nicht gemacht, kann deswegen auch nicht sagen, ob damit dann noch PWM möglich ist, das liese sich aber herausfinden.
Den momentanen Tiefpass 2. Ordnung hab ich schon mit Spice simuliert, da kommt am Ende kein messbarer / anzeigbarer Ripple mehr raus (nicht mal im µV Bereich), irgendwie will ich nicht glauben, dass das stimmt...
Die 1.14mV hab ich direkt am ADC in der Realität, also nach dem Tiefpass 2. Ordnung. Ich nehme an, es ist Restwelligkeit, kein Rauschen (oder rauschen Widerstände so stark).
Zum Sensor Rauschen gibts hier was: http://cache.freescale.com/files/sensors/doc/app_note/AN1646.pdf , ich hab ja einen Spannungsteiler nach dem Sensor, diesem ist noch ein 220nF parallel geschaltet.
Das ganze ist in SMD aufgebaut (0603), hab da bis jetzt immer nur Kerkos (X7R od. X5R) verbaut, hab aber auch noch nie andere Typen in der Bauform gesehen.

Gruß
Chris

ranke
23.06.2014, 19:26
was genau meinst du mit Perfomancegewinn? Im Sinne von schneller reagierenden Eingangssignalen?

Ja, hätte ich erwartet. Die Routine gibt bei jeder Periode des PWM einen Output, ohne dass man auf eine Glättung warten müsste.


Beim ATXMega lassen sich 2 16Bit Timer zu einem 32Bit Timer kaskadieren, das hab ich allerdings noch nicht gemacht, kann deswegen auch nicht sagen, ob damit dann noch PWM möglich ist, das liese sich aber herausfinden.

Das geht einfacher auch, bei jedem Zählerüberlauf inkrementiert man ein Register, das ist dann das dritte Byte. Man muss das dritte Register nicht voll machen, sonst wird es zu langsam, bei 16MHz Zählertakt bekommt man nur noch etwa 1 Hz PWM.


Den momentanen Tiefpass 2. Ordnung hab ich schon mit Spice simuliert, da kommt am Ende kein messbarer / anzeigbarer Ripple mehr raus (nicht mal im µV Bereich), irgendwie will ich nicht glauben, dass das stimmt...

Ich auch nicht. Da ist wohl irgendwo ein Fehler drin.


Das ganze ist in SMD aufgebaut (0603), hab da bis jetzt immer nur Kerkos (X7R od. X5R) verbaut, hab aber auch noch nie andere Typen in der Bauform gesehen.


Folienkos gibt es auch in SMD, z.B. auch bei Reichelt, einfach mal danach suchen. Die keramischen Typen mit "X.." sind gut für Abblockkondensatoren. Sie haben verschiedene Eigenschaften (z.B. Mikrofonie, spannungsabhängige Kapazität), die sie für andere Anwendungen weitgehend disqualifizieren. Allerdings sind die erhältlichen Kapazitäten kleiner. Falls der zweite OP im Gehäuse noch frei wäre, könnte man mit dem einen Tiefpass (Integrator) auch mit einem kleinen Kondensator aufbauen.

Die Appnote zum Sensor habe ich jetzt nicht angesehen, ich vermute dass die Welligkeit aus der PWM das Hauptproblem ist. In einer früheren Bastelei habe ich mal einen sample & hold Verstärker mit einem Analogschalter und einem kleinen Kondensator aufgebaut, das hat damals ganz brauchbar funktioniert. Die Idee ist, dass das geglättete PWM Signal vom Eingang des OP durch einen Analogschalter getrennt wird. Der Schalter wird immer nur ganz kurz durchgeschaltet und zwar immer in Phase zur PWM Spannung. Also z.B. immer bei einer Spitze des ripple. Damit kriegt man die Welligkeit ziemlich gut weg. Hinter dem Analogschalter sitzt der kleine Kondensator der nur die Spannung halten muss, bis zum nächsten Durchschalten (quasi als Analogspeicher).
Noch eine Idee: Man kreiert ein gegenphasiges Ripple ohne Gleichstromanteil des PWM Signals und addiert das zum geglätteten PWM. Ist bestimmt einfacher als der S&H Verstärker.