mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Kleine Verständnisfrage OpAmp als Differenzverstärker


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Tuxpilot (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

dies ist meine erste OpAmp-Schaltung. Sie dient dazu, einen Ladestrom zu 
begrenzen, indem die Feedback-Spannung des Schaltreglers erhöht wird, 
wenn der gewünschte Strom erreicht ist. (Siehe Schaltplan.) Meine Frage 
hier betrifft aber nur den Differenzverstärker.

OpAmp ist ein MCP6231. Da ich keine besonderen Anforderungen an den 
OpAmp sehe, habe ich einfach einen im kleinen Gehäuse gewählt.

1. Gegenkopplung

Impedanz am negativen Eingang (Tiefpass mit integriertem 
Spannungsteiler): 4,7kΩ (R13)
Gewünste Verstärkung: 250
-> Gegenkopplung: 1MΩ (R14)

Die beabsichtigte Ausgangsspannung Ua habe ich daneben gezeichnet, für 
den Fall Ladestrom = 0,5A. Die 35mV sind die minimale Ausgangsspannung 
des MCP6231. Ist so richtig, oder?

2. Eingangsstromkompensation am positiven Eingang

Wird oft empfohlen. Habe ich aber weggelassen, da R8 mit 0.02Ω eine 
„niedrige“ Impedanz darstellt. In Ordnung, oder?

3. Stabilisierung der Ausgangsspannung

Der OpAmp geht bis 200kHz, der Schaltregler schaltet mit 1MHz. Damit der 
Feedback-Spannungsteiler trotzdem stabil arbeiten kann, habe ich einen 
100nF-Kerko vorgesehen. Ist das sinnvoll, oder provoziere ich evtl. den 
OpAmp zum Schwingen, oder...?

Versorgungsspannung des OpAmp ist Akkuspannung (≈3,2V) oder extern (mit 
78L05), mit Dioden zusammengeschaltet.

(Mir ist klar, dass R8 relativ klein ist, und evtl. weitere 
Spannungsabfälle zwischen R8, Schaltregler-GND, OpAmp-GND, und 
PWM-Tiefpass-GND entstehen können. Da muss ich beim Platinenlayout 
sorgfältig sein.)

Autor: Achim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tuxpilot schrieb:
> habe ich einen
> 100nF-Kerko vorgesehen. Ist das sinnvoll, oder provoziere ich evtl. den
> OpAmp zum Schwingen, oder...?

Ja die 100nF direkt am OPV-Ausgang können dazu führen, dass er schwingt 
(siehe Abschnitt 4.3 im Datenblatt deines OPV).

http://ww1.microchip.com/downloads/en/DeviceDoc/21881e.pdf

Noch übler in dieser Hinsicht ist C12 (47nF) direkt am invertierenden 
Eingang des OPV. Der liegt in der Rückkoppelschleife und kostet dich 
schon bei einigen kHz-Bereich viel Phasenreserve. Schau dir Abschnitt 
4.7.2 im Datenblatt an, wo sich die Hersteller des OPVs schon wegen ein 
paar pF am inv-Eingang Sorgen machen und Kompensationsmaßnahmen 
vorschlagen.
-> C12 darf nicht direkt am invertierenden OPV-Eingang liegen.

Tuxpilot schrieb:
> Da ich keine besonderen Anforderungen an den
> OpAmp sehe

Du willst in Anbetracht deines sehr kleinen Messwiderstands erreichen, 
dass der OPV am Eingang mit einer Genauigkeit von besser 1mV arbeitet, 
oder? Aber der von dir gewählte OPV hat eine Offsetspannung irgendwo 
ziwschen -5mV und +5mV.

Autor: Günter Lenz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Schaltung wird wohl so nicht funktionieren,
weil der OpAmp keine symetrische Spannungsversorgung hat.
Was liegt bei PWM-CHG für eine Spannung an, eine positive?
Der OpAmp ist nicht in der Lage eine negative Spannung
auszugeben wenn es keine negative Betriebsspannung gibt.

Autor: Jürgen Wissenwasser (Gast)
Datum:

Bewertung
-7 lesenswert
nicht lesenswert
Messer, Gabel, Schere, Licht sind für kleine Kinder nicht.

Dasselbe gilt für totale Nullen im Power-Management.

Tipp: Fürs Laden eines LiPo-Akkus gibt es eigene Charger-ICs mit 
Schaltregler.

Autor: Tuxpilot (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hinweise.

Achim S. schrieb:
> Ja die 100nF direkt am OPV-Ausgang können dazu führen, dass er schwingt
> (siehe Abschnitt 4.3 im Datenblatt deines OPV).

Dann lasse ich sie weg. Ok, es wären nur 2μA Ripple, das schafft die 
Ausgangsstufe des OpAmp sicher alleine, und ist im Schaltregler sowieso 
intern kompensiert.

> Noch übler in dieser Hinsicht ist C12 (47nF) direkt am invertierenden
> Eingang des OPV. Der liegt in der Rückkoppelschleife und kostet dich
> schon bei einigen kHz-Bereich viel Phasenreserve. Schau dir Abschnitt
> 4.7.2 im Datenblatt an, wo sich die Hersteller des OPVs schon wegen ein
> paar pF am inv-Eingang Sorgen machen und Kompensationsmaßnahmen
> vorschlagen.
> -> C12 darf nicht direkt am invertierenden OPV-Eingang liegen.

Einige kHz würden am positiven Eingang wieder reinkommen, wenn der Strom 
begrenzt wird. Der Tiefpass ist nicht so schnell. Reicht es, einen 
1kΩ-Widerstand zwischen negativen Eingang und Tiefpass zu schalten?

> Du willst in Anbetracht deines sehr kleinen Messwiderstands erreichen,
> dass der OPV am Eingang mit einer Genauigkeit von besser 1mV arbeitet,
> oder? Aber der von dir gewählte OPV hat eine Offsetspannung irgendwo
> ziwschen -5mV und +5mV.

Aber die Offsetspannung ist konstant, und so kann ich sie in Software 
kompensieren. Richtig?

Günter Lenz schrieb:
> Die Schaltung wird wohl so nicht funktionieren,
> weil der OpAmp keine symetrische Spannungsversorgung hat.
> Was liegt bei PWM-CHG für eine Spannung an, eine positive?
> Der OpAmp ist nicht in der Lage eine negative Spannung
> auszugeben wenn es keine negative Betriebsspannung gibt.

(Oh, habe ich verschwiegen.) PWM_CHG ist der PWM-Ausgang eines AVR. 
10kHz PWM-Frequenz und Logikspannung von 3–5V High bzw. 0V Low. μC und 
OpAmp haben dieselbe Versorgungsspannung.

Negative Ausgansspannung brauche ich nicht, im Diagramm habe ich ja 35mV 
als niedrigste Ausgansspannung gezeichnet.

Jürgen Wissenwasser schrieb:
> Tipp: Fürs Laden eines LiPo-Akkus gibt es eigene Charger-ICs mit
> Schaltregler.

Ja, aber da ich Eingangsspannung 4,5–24V, Ausgangsspannung 3,6V, 
Ausgangsstrom ≥2A, und Eingangsstrom begrenzbar möchte, fand ich den 
TPS54332 letztendlich doch einfacher (bis jetzt). Kennst du einen 
Laderegler, den ich bisher übersehen habe?

Autor: Tuxpilot (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube, ich verstehe jetzt das Problem wegen der asymmetrischen 
Spannungsversorgung. Der OpAmp gibt bei U_d = 0 eine Spannung von 
(VCC+GND)/2 aus. Das heißt, ich muss U- der Versorgungsspannung 
entsprechend anpassen.

Autor: Klaus R. (klara)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tuxpilot schrieb:
> dies ist meine erste OpAmp-Schaltung. Sie dient dazu, einen Ladestrom zu
> begrenzen, indem die Feedback-Spannung des Schaltreglers erhöht wird,
> wenn der gewünschte Strom erreicht ist. (Siehe Schaltplan.) Meine Frage
> hier betrifft aber nur den Differenzverstärker.

Gut gemeinter Rat. Die Frage solltest Du LTspice stellen. Dafür ist das 
Tool da.
mfg Klaus

: Bearbeitet durch User
Autor: Achim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tuxpilot schrieb:
> Der OpAmp gibt bei U_d = 0 eine Spannung von
> (VCC+GND)/2 aus.

Nein, sorum läuft das nicht. Denk an die Rückkopplung des OPV. Würde der 
Ausgang bei Ud=0 immer auf die halbe Versorgungsspannung gehen, dann 
würde vom Ausgang über den Rückkoppelwiderstand ja wieder Strom auf den 
Eingang fließen, der das Ud=0 aufhebt.

Solange der OPV stabil mit Rückkopplung arbeitet (nicht schwingt oder in 
Sättigung geht) gibt er am Ausgang genau die Spannung aus die es 
braucht, dass das Ud an seinen Eingägen gegen 0V geht. (Genauer: dass 
das Ud am Eingang seiner Offsetspannung entspricht).

Du willst den OPV in Sättigung betreiben. Dann geht sein Ausgang nicht 
auf die halbe Versorgung sondern so weit "nach unten" wie es der OPV 
schafft. Du bräuchtest von daher eine negative Versorgung also nur dann, 
wenn du auch negative Ausgangsspannungen erreichen wolltest oder wenn du 
sehr nahe an die 0V herankommen willst.

Zu glauben, der OPV würde über einen großen Bereich der 
Eingangsspannungen den Ausgang genau auf 35mV legen (wie du es für deine 
Regelung ansetzt), ist aber auch illusorisch. Die 35mV sind ein Wert aus 
dem Datenblatt, der für eine bestimmte Übersteuerung des Eingangs und 
für eine bestimmte Last passt. Wenn du den OPV in Sättigung betreibst, 
dann wird sich irgendeine Ausgangsspannung einstellen (die aber 
zumindest die Größenordnung von 35mV hat). Einen genauen Wert für die 
tatsächliche Spannung kannst du aber nicht vorhersagen.

Autor: J Zimmermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
J.W.:
> Tipp: Fürs Laden eines LiPo-Akkus gibt es eigene Charger-ICs mit
> Schaltregler.
So
oder
"Aufgabentrennung": Vielleicht solltest Du den Spannungswert am Shunt 
verstärken, auf einen ADC Deines µC geben und den DCDC via Deiner PWM 
steuern. Habe das mal (nicht mit PWM sondern) mit DAC gemacht - geht.
oder
mit der PWM einen MOSFET/L/C/D-Kombi ansteuern... Gute App-Note bei 
Atmel/Microchip. http://application-notes.digchip.com/015/15-16122.pdf
mfg

Autor: Tuxpilot (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Spannung an R8 kann ich mit dem ADC im AVR direkt lesen, der hat ja 
einen Verstärker integriert. Wenn ich schnell genug lese, kann ich VSNS 
über PWM_CHG beeinflussen, indem ich den Tiefpass nicht an einen OpAmp 
anschließe, sondern direkt an VSNS. (Ausgehend vom letzten Schaltplan.) 
Das kann ich beides auf der gleichen Platine ausprobieren.

Das mit dem MOSFET klingt nach ATtiny861A mit PLL, negativ-Buck-Regler 
mit N-FETs, mehr Software, und weniger Bauteile.

Ich werde es mit dem OpAmp ausprobieren, das erscheint mir am 
einfachsten.

Ich habe es in LTspice ausprobiert, Schwingen habe ich aber nicht 
erreichen können. (Ich habe wenig Vertrauen in meine Fähigkeiten, 
Simulationen korrekt durchzuführen.)

Autor: Achim S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Tuxpilot schrieb:
> Ich habe es in LTspice ausprobiert, Schwingen habe ich aber nicht
> erreichen können. (Ich habe wenig Vertrauen in meine Fähigkeiten,
> Simulationen korrekt durchzuführen.)

Um die Stabilität/Schwingneigung zu bewerten nehme ich meist eins von 
folgenden beiden Verfahren:
a) schau dir in der Transienten-Simulation das Verhalten bei einem 
kleinen Spannungssprung an. Du kannst dafür auch gerne eine zusätzliche 
Spannungsquelle einbauen, die nichts anderes macht, als den aktuellen 
Arbeitspunkt nach einigen µs um z.B. 5mV zu verschieben. Stellt sich das 
System schnell und gutmütig auf den neuen Arbeitspunkt ein? Oder 
schwingt es über und schwingt lange nach, bis es den neuen Arbeitspunkt 
erreicht? Im zweiten Fall ist es nicht ganz unwahrscheinlich, dass das 
reale System schwingen würde.
b) mach eine AC-Simulation und schau, ob dein Verstärker ein starkes 
"Peaking" hat (also Anstieg der Verstärkung in einem schmalen 
Frequenzbereich kurz vor der Grenzfrequenz des Systems). Geht das 
Peaking um mehr als 10 dB nach oben? In dem Fall ist es nicht ganz 
unwahrscheinlich, dass das reale System schwingen wird.

Die Simulation wird dir nicht "exakt" zeigen, ob du die Grenze zur 
Schwingneigung überschritten hast. Denn es gibt immer noch ein paar 
reale parasitäre Effekt zusätzlich, die du in der Simu nicht abbildest. 
Aber die Simu kann dir sagen, ob dein Verstärker deutliche 
Schwingneigung hat oder nicht.

Als Illustration habe ich dir mal Ausschnitte aus deiner ursprünglichen 
Schaltungsidee angehängt. Du siehst in der AC-Analyse ein starkes 
Peaking bei ~10kHz, in der Transienten-Analyse ein starkes Überschwingen 
und langes Nachschwingen mit ~10kHz. In der Simu (mit dem einfachsten 
OpAmp-Modell) scheint die Schaltung als (grade noch) stabil. In der 
Realität, mit weiteren parasitären Effekten, wäre sie aber sicher ein 
Kandidat für eine Instabilität.

Auf die Art kannst du also überprüfen, ob der Differenzverstärker 
alleine stabil ist oder nicht. Ob das Gesamtsystem dann auch stabil wäre 
(bei dem du den OPV ja in die Rückkopplung deines Schaltreglers packst) 
wäre nochmal eine andere Frage.

Autor: Tuxpilot (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich dachte mir, jetzt wo ich LTspice zum Laufen bekommen habe, kann ich 
ja ein wenig damit rumspielen.

Das mit den AC-Simulationen verstehe ich ehrlich gesagt nicht so genau. 
Solche Peaks habe ich bisher nicht entdeckt.

(Ich habe den MCP6231 in LTspice plötzlich nicht mehr zum Laufen 
bekommen, obwohl ich an der MCP6231.lib nichts geändert habe. Immer 
„Timestep too small […]“. AD8613 soll ein Ersatz für die Simulation 
sein.)

AD8613_PWM_1k.png:
Scheint nicht zu vielen Schwingungen zu neigen. Ich habe versucht, ein 
paar Sprünge vor dem Tiefpass, nach dem Tiefpass, und an U+ zu erzeugen.

Andere Bilder:
Ich habe mit einem 700kHz Buck-Converter versucht, den TPS54332 ungefähr 
nachzubilden, weil ich nicht weiß, was ich mit TIs PSPICE-Modell 
anfangen kann. Ich habe Sprünge an V_out und U- erzeugt, und I_out wird 
nachgeregelt.

20kHz_Vout_1k.png
Eine sehr seltsame Akkuspannung, aber I_out passt.

Das simulierte Verhalten entspricht meinen Vorstellungen. Mal sehen, wie 
es in der Realität aussehen wird. (Und mal sehen, wie ich das messen 
werde.)

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.