Forum: Mikrocontroller und Digitale Elektronik MP5016 Current Limit Switch - Fehlersuche


von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe auf meiner Bastelplatine eine zweiten USB-C Buchse die 
angeschlossene Geräte auch mit Strom versorgen soll. Damit die aber 
nicht beliebig viel Strom liefert, habe ich davor einen MP5016 Current 
Limit Switch 
https://www.mouser.de/datasheet/2/277/mp5016h_r1.11-1670128.pdf gebaut.

An dessen Pin ILIMIT wird extern mit einem Widerstand nach Masse das 
Stromlimit eingestellt.

Im Datenblatt auf Seite 11 (Anhang) ist eine Formel wie man den 
Widerstandswert berechnen kann. Ich habe den für 1 A berechnet und komme 
auf grob 2,2 kOhm. Die habe ich auch eingebaut.

Jetzt habe ich aber das Problem, dass der Strom schon bei ca. 200 mA 
nicht limitiert, sondern abgeschaltet wird. Das Bildchen im Anhang zeigt 
den Strom am Eingang in meine Bastelplatine. Die Schaltung auf der 
Platine selber braucht grob 200 mA. Man kann schön sehen, dass bei knapp 
über 400 mA abgeschaltet wird.

Meine Frage ist also:
Warum ist das so? Habe ich da einen Fehler gemacht?

Randnotiz: Ja, ich habe einen Fehler, ich habe den Softstartkondensator 
vergessen am DV/DT Pin. Aber das sollte keinen Einfluss auf das 
Stromlimit haben.

Edit:
Laut Seite 14 im Datenblatt darf man DV/DT auch floaten lassen. Ist also 
kein Fehler von mir.

Das Stromlimit teste ich mit einem 500 Ohm Poti das auch genug Leistung 
verbraten kann.

Edit:
Auch noch interessant:

"The current limit cannot be set too low, because the MP5016H works in 
sleep mode when the load is lower than 0.38A, typically. The current 
limit logic is disabled in sleep mode, also."

Also eigentlich müsste der sich sogar noch im Schlaf befinden.

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

So, ich habe also am Layout gezweifelt und auch daran wie gut die Pins 
gelötet sind. Jetzt habe ich das noch mit einem fliegenden Aufbau 
nachgebaut, also gleiche Schaltung, aber ohne Platine sondern nur mit 
sehr dünnen Drähten.

Tja, das Ergebnis ist gleich. Das Labornetzteil sagt ca. 180 mA. Wenn 
ich den Lastwiderstand dann noch weiter verringere bricht der Strom auf 
0 mA ein.

von Achim S. (Gast)


Lesenswert?

Gustl B. schrieb:
> Jetzt habe ich aber das Problem, dass der Strom schon bei ca. 200 mA
> nicht limitiert, sondern abgeschaltet wird.

das Abschalten ist normal - zumindest für ein paar hundert ms: if the 
current limit condition lasts longer than 2ms, the IC enters hiccup mode 
with 2ms of on time and 700ms of off time.

dass der Strom einen Faktor 5 daneben ist, ist natürlich schon ein 
Fehler.

von Gustl B. (-gb-)


Lesenswert?

Tja, das scheint schon irgendwie sowas wie hiccup zu sein, aber nicht 
alle 2 ms. Laut meinem Oszi sind das so alle 0.8 s, da sehe ich dann 
einen kurzen Spannungspuls am Ausgang. Zu warm wir der IC auch nicht, 
0.2 A sind für den eigentlich echt wenig.

von Achim S. (Gast)


Lesenswert?

Gustl B. schrieb:
> Laut meinem Oszi sind das so alle 0.8 s, da sehe ich dann einen kurzen
> Spannungspuls am Ausgang.

genau das steht im Datenblatt: 2ms an, 700ms aus

von Gustl B. (-gb-)


Lesenswert?

Tatsache (sorry, war sehr dumm von mir)! Hm ... jetzt habe ich mal aus 
purer Paranoia auch schon das Flussmittel auf Leitfähigkeit gemessen. 
Aber ne, leitet nicht. Der ILimit Widerstand hat auch wirklich 2,2k Ohm.

: Bearbeitet durch User
von Achim S. (Gast)


Lesenswert?

Gustl B. schrieb:
> ILimit Widerstand hat auch wirklich 2,2k Ohm.

fallen den auch 0,55V an ihm ab?

von Gustl B. (-gb-)


Lesenswert?

Nein. Ohne Last fallen da 0 V ab. Und mit einer Last damit der Hiccup 
eintritt fallen bei jedem dieser Hiccup Pulse mal ein paar mV ab.

Ich habe jetzt einen neuen 2,2k Ohm hingelötet und dabei die Pins am IC 
nochmal nachgelötet. Ist zwar sehr klein, aber es sieht zumindest 
optisch gut aus. Am Verhalten änderte sich aber nichts. Der Pin ILimit 
hat auch keine Verbindung zu seinen beiden Nachbarn. Wenn ich direkt am 
Pin gegen Masse den Widerstand messe komme ich auf ziemlich genau 2,2k 
Ohm.

von Achim S. (Gast)


Lesenswert?

seltsam. skaliert die Sache denn wenigstens? d.h. wenn du auf 1kOhm 
gehst, schafft der Strom dann 400mA?

von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

Nein, skaliert nicht. Auch der Zweite im fliegenden Aufbau nicht.

Ich hoffe ja doch noch auf einen einfachen sehr dummen Fehler ...

Edit:
Und das Layout. Ja, ich habe mich da nicht an das im Datenblatt 
gehalten. Aber ich habe auch zwei Massenlagen in der Platine und in 
einer weiteren Lage ein Polygon für die 5V. Ich habe das Bild so 
gedreht, dass Pin 1 links oben ist.

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Enable funktioniert jedenfalls. Ich messe 2,45 uA von VCC zum Enable 
Pin. Das passt auch ganz gut, denn 5,12 V/2,2 MOhm ist 2,3 uA.

Den Pullup Widerstand kann ich ja eigentlich auch durch einen 0 Ohm 
ersetzen, denn wenn ich ca. 5 V als VCC verwende fließt auch kein großer 
Strom durch die eingebaute Zenerdiode.

Edit:
Laut Datenblatt kann man ILimit auch floaten lassen. Das bedeutet dann, 
dass der Strom auf 2,5 A begrenzt wird. Habe ich versucht, aber es wird 
schon sehr viel früher abgeregelt. Bei wenigen mA.
Dann kann man ILimit aber auch mit Masse verbinden und damit die 
Strombegrenzung ausschalten. Tja und jetzt wird es richtig seltsam:

Ich belaste ja mit einem 500 Ohm Poti. Ich erwarte also, dass der Strom 
langsam steigt wenn ich den Widerstand vom Poti verringere. Aber das 
passiert nicht. Es fließt gar kein Strom. Ausser wenn ich das Poti auf 
einen ganz kleinen Wert stelle, dann fließen plötzlich mehrere Ampere 
und meine Platine verliert die Verbindung zum USB.

Wenn ILimit also mit Masse verbunden ist sieht das für mich so aus als 
würde erst Strom fließen, wenn der Lastwiderstand gering genug ist. Sehr 
seltsam.

: Bearbeitet durch User
von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

So Freunde der Nacht, ich entschuldige mich hiermit für meine Dummheit.

"Fehler" ist gefunden, es war das Poti welches ich als Lastwiderstand 
verwendet habe. Das ist ein 500 Ohm Poti, und für kleine 
Widerstandswerte scheint es zu springen. Ich schaffe es einen Wert 
zwischen 20 und 30 Ohm einzustellen, danach aber erst wieder ca. 3 Ohm. 
Ich schaffe es nicht einen Wert dazwischen einzustellen. Und das erklärt 
auch das beobachtete Verhalten. Entweder war ich sehr weit unter dem 
Stromlimit, oder eben drüber.

Jetzt habe ich einen Steckbrett nach USB-C Adapter gelötet und auf dem 
Steckbrett eine Reihe aus 47 Ohm und 100 Ohm Widerständen von Versorgung 
nach Masse gesteckt. Wie man sieht geht der Strom schön nach oben. Dann 
schlägt das Limit zu und ich kann da sogar etwas darüber hinaus 
belasten. Also einen weiteren 100 R konnte ich parallel dazustecken ohne 
dass der Strom abgeschaltet wurde. Erst bei noch weiterer Belastung geht 
der in den Hiccup Modus. Ganz links im Bildchen ist zu sehen, dass 
direktes Anschließen der vollen Last auch funktioniert. Dazu ist der 
Baustein ja auch gedacht.

Jedenfalls bin ich zufrieden, Schaltung funktioniert, darf nachgebaut 
werden.

von Achim S. (Gast)


Lesenswert?

Gustl B. schrieb:
> "Fehler" ist gefunden, es war das Poti welches ich als Lastwiderstand
> verwendet habe.

Gut: denn an der Schaltung wäre mir keine weitere Fehlerquelle mehr 
eingefallen.

Gustl B. schrieb:
> Ich schaffe es einen Wert
> zwischen 20 und 30 Ohm einzustellen, danach aber erst wieder ca. 3 Ohm.

Ich hätte eigentlich erwartet, dass du im Überstromfall an R_lim jeweils 
2ms lange Pulse auf 0,55V siehst. Aber wahrscheinlich gilt dies nur bei 
"moderatem" Überstrom, nicht bei beinahe Kurzschluss.

Gustl B. schrieb:
> Das Stromlimit teste ich mit einem 500 Ohm Poti das auch genug Leistung
> verbraten kann.

Du kennst den Effekt: wenn das 500Ohm-Poti insgesamt 50W verbraten kann, 
dann können die letzten 10% davon (Poti eingestellt auf 50Ohm) nur noch 
5W verbraten. Die Gesamtleistung des Potis muss bei deinen Einstellungen 
also weit über dem Wert liegen, den du tatsächlich umsetzen möchtest.

von -gb- (Gast)


Lesenswert?

Achim S. schrieb:
> Ich hätte eigentlich erwartet, dass du im Überstromfall an R_lim jeweils
> 2ms lange Pulse auf 0,55V siehst.

Die sieht man auch mit dem Oszi. Aber nicht mit meiner Python Grafik, 
denn die hat nur eine Abtastrate von so 10 Sps. Meine Python Grafik ist 
eigentlich für den Beschleunigungssensor ADXL363 und scrollt langsam von 
links nach rechts. Die kurzen Pulse fallen da also manchmal nicht auf. 
Vor allem zeigt die Grafik ja den Strom am Eingang meiner Platine. 
Gemessen mit einem INA216A über einem 20mOhm Shunt. Das geht dann zu 
einem diff Amp und dann zum XADC im Spartan7. Wenn bei den kurzen Pulsen 
also kein/kaum Strom fließt, dann sieht man die nicht.

Achim S. schrieb:
> Du kennst den Effekt: wenn das 500Ohm-Poti insgesamt 50W verbraten kann,
> dann können die letzten 10% davon (Poti eingestellt auf 50Ohm) nur noch
> 5W verbraten.

Vielen Dank! Ja mir war schon klar, dass ich das Poti überlaste, aber 
wenn ich das nur für kurze Zeit mache, dann finde ich das OK. Aber ja, 
kann natürlich sein dass das Widerstandsmaterial im Poti in einem 
Bereich jetzt geschädigt ist. Wird wohl mal Zeit für eine echte Last mit 
einstellbarem Strom.

von Achim S. (Gast)


Lesenswert?

-gb- schrieb:
> Die sieht man auch mit dem Oszi.

ach menno: deswegen hatte ich oben doch extra nachgefragt. aber egal - 
du hast den Fehler ja selbst gefunden.

von -gb- (Gast)


Lesenswert?

Sorry, die Frage mit den 0,55V habe ich so verstanden als würden da 
immer diese 0,55V abfallen. Mit dem trägen Multimeter konnte ich die 
aber nicht sehen. Das nächste mal werde ich die Option -v einschalten 
und Oszibildchen anhängen (-:
Die 0,5 V Pulse habe ich mit dem Oszi auch nicht am ILimit gesehen (dort 
habe ich nicht mit dem Oszi gemessen) sondern am Ausgang Source.

von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

So, letztes Update:

In den Bildchen oben war der Strom schön glatt bei 1 A limitiert. Und 
das passt natürlich nicht. Ich habe ja ILimit auf 1 A gestellt und die 
Platine selbst braucht auch ca. 0,19 A also würde man 1,19 A als Maximum 
erwarten. Und in der Tat, der Fehler liegt an der Beschaltung vom ADC. 
Ich verwende da den XADC im FPGA und habe die Beschaltung "doof" 
gemacht. Damit ich statt maximal 1 A jetzt 2 A messen kann habe ich den 
Shunt von 20 mOhm ersetzt durch einen mit 10 mOhm. Jetzt sieht es wie 
gewünscht aus. Mit anderer ADC Beschaltung könnte man aber auch mit 
einem 20 mOhm Shunt bis 2 A messen. Naja, sollte ich die Platine jemals 
in einer neueren Revision aufbauen wird das behoben.

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.