Forum: Mikrocontroller und Digitale Elektronik Strom über Spannungsabfall am Mosfet messen(Code)


von Jonathan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo ihr,

ich bin gerade dabei, einen DCDC-StepUp wandler zu bauen, leider sind 
meine Programmierkünste echt nicht die besten.

Zur Problematik: Anbei sind zwei Bilder die den Schaltplan des StepUp 
Wandlers zeigen. Um den Ausgangsstrom zu messen, habe ich mich dazu 
entschieden den Spannungsabfall über den N-Mosfet(TK56E12N1) zu messen, 
was jedoch nur möglich ist wenn der Mosfet durchgeschaltet ist. Da ich 
den Mosfet mit 100kHz schalte muss also mein ADC um einiges schneller 
sein, was ich, soviel wie ich verstanden habe auf die gleiche Frequenz 
wie der MC eingestellt habe(32MHz)... soweit so gut.

jedoch schaffe ich es nicht eine geeignete schleife zu entwickeln die 
nur dann misst wenn der Mosfet durchgeschaltet ist. Heißt also, wenn ich 
einen duty cycle von 50% bei 100kHz habe also der Mfet für 5us 
durchgeschaltet ist kann ich nur in dieser zeit messen.

ich benutze den MC Pic16f1828 (C in mplab)

der Condensator in zweiten bild muss raus da er sich zu langsam aufläd

schonmal vielen Dank im Voraus,

Jonathan

von Michael B. (laberkopp)


Lesenswert?

Jonathan schrieb:
> der Condensator in zweiten bild muss raus da er sich zu langsam aufläd

Ach.

Was ist bitte DC_P1 ?

Der RDSon deines MOSFETs ändert sich von 6 auf 12mOhm wenn er sich von 
Einschalttemperatur bis Betriebstemperatzur aufwärmt.

Was willst du da messen ?

Jonathan schrieb:
> jedoch schaffe ich es nicht eine geeignete schleife zu entwickeln die
> nur dann misst wenn der Mosfet durchgeschaltet ist. Heißt also, wenn ich
> einen duty cycle von 50% bei 100kHz habe also der Mfet für 5us
> durchgeschaltet ist kann ich nur in dieser zeit messen.

Ja nun, es hat ja niemand behauptet, daß es so einfach geht.

Immerhin tastet ein ADC nur zu Beginn der Messung ab. Du kannst also 
deinen MOSFET einschalten, warten bis es durchschaltet (hast du je 
exztra über R17 D4 auf unbekannte Zeit verzögert, und dann den ADC 
anstossen damit er eine Messung macht. Wenn man R14 weglässt, kommt 
vielleicht sogar was bei raus.

Daß diese Messung erst später vorliegt, als der MOSFET schon wieder 
abgeschaltet wurde, muss das Programm halt berücksichtigen, der ADC 
eigent sich jedenfalls nicht zur Überstrom-Notabschaltung damit der 
MOSFET bei gesättigter Spule nicht platzt.

Daher verwenden andere Leute richtige Schaltregler-ICs. Die sind auch 
nicht grösser als dein DC_P1.

Die Messung zu Beginn der Rampe nützt dir wenig, wenn du einen current 
mode Regler bauen willst. Der Strom steigt ja im diskontinuierlichen 
Betrieb von 0 an und ist erst am Ende des Impulses auf Nennwert. Im 
kontinuierlichen Betrieb ist der Strom schon zu Beginn hoch, steigt aber 
noch weiter. Korrekterweise müsstest du mehrere Wandlungen pro Impusl 
machen, viele Wandlungen pro Impuls, mehr als 1 Wandlung pro 
Mikrosekunde.

Das kann dein uC nicht, der ADC dort braucht mindestens 12us für eine 
Wandlung, und in C würedet du die Auswertung sowieso nicht so schnell 
programmiert bekommen.

Ausserdem beachte 15.3 A/D Acquisition Requirements im Datenblatt, 4.5us 
muss er die Analogquelle mindestens stabil haben bevor er wandlen kann.

von Thomas E. (picalic)


Lesenswert?

Michael B. schrieb:
> Ausserdem beachte 15.3 A/D Acquisition Requirements im Datenblatt, 4.5us
> muss er die Analogquelle mindestens stabil haben bevor er wandlen kann.

Jain - dieses Requirement ergibt sich durch eine Rechnung mit gewissen 
Annahmen, u.a. zum Widerstand der Quelle und zur gewünschten 
Messgenauigkeit. Wenn die Quelle recht niederohmig ist (mit R14 = 100k 
wird das natürlich nix), man ggf. ein paar Abstriche bei der 
Messgenauigkeit macht und der ADC-Eingang auch keine großen 
Spannungssprünge sieht (mit der Messung am "heißen Ende" des FETs wird 
das diesbezgl. aber auch nix), kann die Acquisition-Time auch deutlich 
kürzer ausfallen.

Die Messung des Stroms über den RDSon des FETs dürfte aus den genannten 
Gründen mit dem PIC-ADC wohl kaum ordentlich machbar sein. Ein geeignet 
dimensionierter Shunt zwischen Source und GND ist deutlich besser 
geeignet zur Strommessung mit dem ADC. Mit dem Shunt könnte man in 
Verbindung mit dem Comparator im PIC auch eine schnelle 
Shutdown-Funktion beim Überschreiten eines gewissen Stroms in Hardware 
realisieren (Enhanced PWM -> Auto Shutdown). So ist auch "Cycle-by-Cycle 
Current Limit" möglich.

Den ADC kann man dann zusätzlich zur Überwachung des "normalen" Stroms 
nutzen, das geht auch bei 100 kHz, aber dann nicht mit einer Schleife, 
sondern per Timer-Interrupt, in dem der ADC zur korrekten Zeit, synchron 
mit der PWM, gestartet wird, und natürlich kann der nicht jeden 
PWM-Zyklus messen, sondern immer nur alle paar Zyklem eine Messung 
durchführen. Genau sowas habe ich zufälligerweise gerade auf meinem 
kleinen PWM-Board zur Motor-Steuerung implementiert (PIC12F1840). Da 
geht es bis 125 kHz PWM.
Dabei wird TMR2 für PWM und der TMR0-Interrupt zum Start der AD-Wandlung 
verwendet. In der ISR wird TMR0 auch wieder geladen, so daß nach ca. 
50µs eine neue Ad-Wandlung exakt am Ende des PWM-Impulses gestartet 
wird. Diese 50 µs sind willkürlich gewählt, man könnte bei 100kHz 
vielleicht auch jeden 2. Zyklus samplen (alle 20µs) - da wird's mit der 
Laufzeit der ISRs aber vielleicht schon knapp.

von Ralf (Gast)


Lesenswert?

Der Strom durch den Fet hat nichts mit deinem Ausgangsstrom zu tun.

von Thomas E. (picalic)


Lesenswert?

Ralf schrieb:
> Der Strom durch den Fet hat nichts mit deinem Ausgangsstrom zu tun.

Naja, "nichts" ist auch nicht ganz richtig - ein gewisser Zusammenhang 
des FET-Stroms mit dem Ausgangsstrom besteht schon.

von Der Andere (Gast)


Lesenswert?

Über den Tiefpass von 100K und 100nF kann man garantiert kein 
Rechtecksignal von 100kHz messen, egal wie schnell der ADC ist.

von Ralf (Gast)


Lesenswert?

Thomas E. schrieb:
> Naja, "nichts" ist auch nicht ganz richtig - ein gewisser Zusammenhang
> des FET-Stroms mit dem Ausgangsstrom besteht schon.

Ist aber auch sehr stark von anderen Parametern abhänig (z.B. L und Vin)

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
Noch kein Account? Hier anmelden.