P-Kanal-MOSFET-Schaltproblem

Ich habe versucht, eine 16x9-LED-Matrix mit einer MCU mit einer begrenzten Anzahl von Pins zu bauen. Die Anoden der LEDs werden von P-Kanal-MOSFETs angesteuert, deren Gates von einem 74HC595 8-Bit-Schieberegister angesteuert werden. die Kathoden der LEDs werden durch den LED-PWM-Treiber-IC TLC5940 versenkt. Die Schaltung um die MOSFETs sieht so aus:Geben Sie hier die Bildbeschreibung ein

Die Source wird mit 5 V verbunden und das Gate wird über den 1-kΩ-Widerstand auf 5 V hochgezogen. Drain ist mit den Anoden von 16 LEDs parallel und das Gate mit dem 74HC595 verbunden. Nun meine Beobachtung auf einem Logikanalysator (sowie auf einem Oszilloskop):

Geben Sie hier die Bildbeschreibung ein

Der rote Kanal ist nur die konstante 5-V-Versorgung an der Quelle. Der braune Kanal ist das vom 74HC595 kommende Schaltsignal und der schwarze Kanal die Spannung am Drain. Soll der MOSFET nicht sofort abschalten, nachdem das Gate wieder hochgezogen wird? Die Ausschaltverzögerung wird mit ca. 80 ns beschrieben, was eindeutig am Ausgang des Logikanalysators weitergegeben wird. Ist das das erwartete Verhalten oder mache ich hier etwas falsch? Da der TLC5940 nur an den Kathoden der LEDs Strom ziehen kann, kam ich nicht um die High-Side-Schaltung herum, aber ich hatte den Eindruck, dass diese Schaltung funktionieren sollte ...

BEARBEITEN:

Nachdem ich endlich etwas Zeit hatte, habe ich eine einfachere Version der Schaltung nachgebaut und sie auf einem Prototyping-Board mit einem Arduino getestet, um das Problem einzugrenzen. Dies ist mein Schema, die nicht verbundenen Netze verbinden sich mit den Steuerpins des Arduino:

Geben Sie hier die Bildbeschreibung ein

Als p-Kanal-MOSFETs habe ich beide ausprobiert, den FQP27P06 und den IRF9540N, die beide ähnliche Spezifikationen haben. Meine Messwerte waren in beiden Fällen fast gleich:Geben Sie hier die Bildbeschreibung ein

Wir sehen, dass der MOSFET laut Gate-Lesung nur für 0,27 ms leiten soll, aber es bleibt für weitere 0,86 ms, was meiner Anwendung wirklich Schaden zufügt, wenn alle 9 LED-Reihen am Ende angeschlossen sind. Es verursachte Probleme, weil eine Spalte mit allen 16 leuchtenden LEDs 320 mA zog. Mit diesem Verhalten bei allen MOSFETs und allen aktivierten LEDs in meiner Matrix leiteten jedoch 3-4 MOSFETs gleichzeitig, was die Stromaufnahme mindestens verdreifachte, und da mein Board nicht dafür ausgelegt war, bremste die Spannung und die MCU am Ende stehen geblieben. Auch mein Paket des TLC5940 wurde nicht für die Menge der Wärmeableitung bewertet und ging gelegentlich in den Temperaturfehlermodus. Hat jemand eine Idee, warum dieses Problem auftreten könnte? Jede Antwort wird sehr geschätzt!

Bitte zeigen Sie mehr von der Schaltung, damit wir genau sehen können, wie die MOSFETs angeschlossen sind.
Zeigen Sie kein Fragment der Schaltung und beschreiben Sie dann den Rest. Zeigen Sie die gesamte Schaltung.
Was als nächstes geschah? Gab es einen schwebenden Stift?

Antworten (7)

Versuchen Sie, den Drain-Pins der MOSFETs Pulldown-Widerstände hinzuzufügen. Die Wellenformen, die Sie zeigen, sind klassische kapazitive Entladungskurven, die durch hochohmige Lasten verursacht werden.

Da Ihre FET-Source-Pins auf 5 VDC liegen, versuchen Sie es mit 1k-Widerständen von den Drains zur Masse.

Leider reicht 1K wahrscheinlich nicht aus, um die Arbeit zu erledigen - das ist eine ziemlich große Kapazität für 16 LEDs. Außerdem verschwendet es Strom, wenn die Säule eingeschaltet ist.

Sie haben etwas Entscheidendes falsch verstanden, und es geht nicht um Ihre Schaltung, sondern um das Lesen des Datenblatts. IRF9540 sagt:

Geben Sie hier die Bildbeschreibung ein

Es ist jetzt klar, dass die "versprochene" Abfallzeit tatsächlich 51 ns beträgt. Aber Sie müssen auf die Bedingungen achten:

  • VDD = -50 V
  • ID = -11A

Dies bedeutet, dass die "versprochene" Abfallzeit nicht 51 ns betragen wird, oder zumindest nicht mit Ihrer 5-V-Versorgung. Dies ist die Wurzel des Problems.

Wenn Sie mir noch nicht glauben, dann überprüfen Sie Folgendes, ich habe einige Tests durchgeführt:

Geben Sie hier die Bildbeschreibung ein

Dies ist die Antwort der Schaltung mit VDD = 5V. Die resultierende Abfallzeit beträgt 4 ms!

Geben Sie hier die Bildbeschreibung ein

Dies ist die Antwort der Schaltung mit VDD = 12 V. Hier beträgt die resultierende Abfallzeit 2,5 ms. Es ist tatsächlich weniger, weil wir uns den Testwerten (z. B. VDD = 50 V) nähern.

Ich würde dies gerne mit VDD = 50 V testen, aber ich habe gerade nicht die Werkzeuge.

Abschluss:

Lesen Sie das Datenblatt und seien Sie beim nächsten Mal vorsichtig! Sie versprechen einige Dinge, aber Sie sollten zwischen den Zeilen lesen.

Das ist auf keinen Fall das Problem. Die RC-Entladezeit OP zeigt ein Vielfaches von ms. Dies ist eine Ladung, die auf dem Drain verbleibt, ohne dass ein Abfluss möglich ist, sobald die LEDs nicht mehr aktiv in Vorwärtsrichtung vorgespannt sind.
Uhm, gut, Sie können auch versuchen, es zu replizieren. Bitte keine Simulationen. Ich hatte diesen Zweifel schon einmal und das war meine Schlussfolgerung. Ich kann mich irren, aber du musst den Beweis erbringen. Wissenschaft <3
Hallo Marcelo, danke für die Antwort und die Mühe! Ich habe mir das auch überlegt und einen weiteren Test gemacht, statt der 16 LEDs parallel die bei der am TLC eingestellten Strombegrenzung einen Stromfluss von 320mA ergeben, habe ich einen 16 Ohm Widerstand (6x100 parallel für die Wattzahl) als verwendet eine Last, die einen fast gleichen Stromfluss haben wird. Jetzt lag die Abfallzeit bei weniger als einer Mikrosekunde, nicht das, was das Datenblatt sagt, aber viel viel besser als zuvor und etwas, mit dem ich definitiv arbeiten konnte. Für mich scheint es also, dass die Kapazität meiner spezifischen Last das Problem ist und ein Pulldown tatsächlich geholfen hat
Ja, ich habe es gestern getestet, der Pulldown-Widerstand reduziert die Abschaltzeit von Millisekunden auf den Bereich von Mikrosekunden. Wegen der geringen Stromverschwendung nicht ideal, aber es geht. Immer noch nicht die versprochenen Nanosekunden.

Ich glaube, dass am Design nichts auszusetzen ist. Irgendetwas stimmt mit dem physikalischen Schaltkreis nicht. Drei Hauptkandidaten fallen mir ein:

  1. Der MOSFET ist defekt
  2. Der TLC5940 und die LED-Teilschaltung weisen einige Fehler auf, die zu einer unerwünschten Kopplung mit dem Drain-Anschluss führen.
  3. Eine andere unbeabsichtigte Kopplung mit dem Drain-Anschluss im Stromkreis

Sie haben mehrere MOSFETS ausprobiert und das gleiche Ergebnis erhalten, das scheint also unwahrscheinlich. Aber Sie können einige Tests durchführen, um es festzunageln und auf den wahren Schuldigen hinzuweisen:

  1. Ersetzen Sie den MOSFET durch einen physischen Schalter und prüfen Sie, ob Sie dasselbe Ergebnis erhalten. Offensichtlich würde das den MOSFET vollständig entlasten und zeigen, dass etwas anderes nicht stimmt.
  2. Wenn Sie das gleiche seltsame Verhalten mit dem Schalter haben, ersetzen Sie den TLC5940 oder trennen Sie vielleicht alle bis auf eine LED davon, um die meisten möglichen fehlerhaften Verbindungen zum Drain-Anschluss zu unterbrechen. Vielleicht haben der TLC5940 und eine LED einen Fehler, der diese Kopplung bereitstellt.

Sie wissen, wenn Sie darauf hinarbeiten, dass ein Schalter an eine einzelne LED/Widerstand-Kombination angeschlossen wird, muss er irgendwo auf diesem Pfad funktionieren. Die Idee ist also, sich darauf hinzuarbeiten und zu identifizieren, woran es scheitert. Vielleicht hat Ihre Platine einen Fehler und gibt Ihnen eine Art Kopplung zum Drain-Anschluss, in diesem Fall könnte sogar der Schalter, der eine LED/Widerstand-Kombination mit Strom versorgt, dieses Verhalten zeigen!

+1 Ein guter Start für einen neuen Mitwirkenden! :-). Willkommen.
Danke für die Vorschläge. Ein Test, den ich durchgeführt habe, bestand darin, die LEDs mit einem Widerstand auszutauschen, was zu einer gleichen Stromaufnahme führte, und es stellte sich heraus, dass die Abfallzeit viel viel besser war und sehr nahe an der im Datenblatt erwarteten Einschaltzeit lag. So kam ich zu dem Schluss, dass die verwendeten LEDs die hochohmige Komponente sind und ein Pull-Down-Widerstand am Drain des MOSFET hat mir geholfen!

Wow. Viele Ablenkungsmanöver Antworten auf diese Frage. Dies ist ein einfaches Problem mit einer einfachen Antwort.

Der MOSFET schaltet nicht zu langsam ab.

Diese Wellenformen messen die Spannung relativ zur Masse , insbesondere die Spannung am Drain des MOSFET.

LEDs sind immer noch Dioden. Sie haben eine Eigenkapazität und einen nichtlinearen Spannungsabfall. Und MOSFETs haben tatsächlich Kapazitäten. Einer von Interesse ist hier die Ausgangskapazität, die effektiv ein Kondensator zwischen Drain und Source ist. Es muss sich durch diese Dioden entladen, und diese Entladung wird exponentiell langsamer (genau wie wir in den Diagrammen der Spannung sehen). Daher fällt die Spannung am Drain natürlich langsam ab.Sie sehen sich nur die erwartete Spannungsabfallkurve für die Ausgangskapazität des MOSFET an, die gezwungen wird, sich durch die Unterschwellenleckage der Dioden zu entladen. Die Kapazität beträgt Hunderte von Picofarad, aber dieser Entladestrom liegt in der Größenordnung von Nanoampere. Immer wenn die Ansteuerspannung nahe am Spannungsabfall der Dioden liegt, macht sich dies viel stärker bemerkbar, bei höheren Spannungen weniger, da sich der Abfall erst etwas unterhalb des Spannungsabfalls der Dioden verlangsamt. Aber es ist immer noch da, nur weniger sichtbar in einem Diagramm. Ich möchte darauf hinweisen, dass dies bei einer Ansteuerspannung von 5 V der Fall ist, und damit wir nicht vergessen, dass aufgrund des Low-Side-Treiberchips (der intern keine MOSFETs, sondern Bipolartransistoren verwendet) ein zusätzlicher Abfall von mindestens 0,6 bis 1,2 V auftritt der möglicherweise 3V-3,4V Abfall für die LEDs ... das' ist nicht viel Kopffreiheit. Ein solcher Verfall wäre umso auffälliger.

Und ich kann es beweisen. Wenn Sie einen Lastwiderstand parallel zu den Dioden gegen Masse schalten, vielleicht 10 K, sollten Sie den Spannungsabfall viel schneller sehen, da er jetzt einen linearen Widerstandspfad zum Entladen hat und nicht das exponentielle Verhalten von PN-Übergängen.

Mein Punkt ist, dass der MOSFET abschaltet . Der Spannungsabfall ist normal, erwartet und steht in keinem Zusammenhang mit den anderen Problemen, die er hat. Es ist auch einfach. Messen Sie den Strom. Messen Sie den Strom in Reihe mit Drain oder Source des MOSFET. Das Messen der Spannung am Drain ist kein korrekter Weg, um die Abschaltung in dieser Schaltung zu bestimmen . Das Messen des Stroms ist der richtige Weg, um festzustellen, ob der MOSFET abschaltet oder nicht. Und ich bin sicher, es schaltet sich so schnell ab, wie man erwarten würde.

Und natürlich, wenn der MOSFET wirklich so langsam abgeschaltet hat, wie die Spannung am gemessenen Knoten abfällt, warum können wir dann diese sehen:

Geben Sie hier die Bildbeschreibung ein

Spannungsregler erhöhen ihre Ausgangsspannung nicht so, wenn die Last wie die gemessene Spannung abfällt. Die einzige Möglichkeit, wie wir eine solche plötzliche Spitze der Versorgungsspannung sehen würden, wäre, wenn der Regler einen plötzlichen Lastsprung von einer hohen Stromaufnahme zu fast keiner Stromaufnahme erfährt. Es kann nicht sofort reagieren, daher gibt es einen kurzen Zeitraum, in dem die Spannung aus der Regelung gerät, insbesondere indem sie höher ist als vorgesehen, bevor der Ausgang wieder in die Regelung gebracht werden kann. Dies erfordert einen großen, schnellen Lastsprung.

Ein Lastsprung, der nicht auftreten könnte, wenn der MOSFET nicht wie vorgesehen abschaltet. Eine, die sicherlich nicht auftreten könnte, wenn sie sich so langsam ausschaltet, wie die falsche Methode zur Bestimmung dieser (Spannung) uns glauben machen würde.

Es gibt einen solchen Lastsprung in der Spannungsschiene, was bedeutet, dass der MOSFET tatsächlich abschaltet und etwas schneller als diese Spannungsspitze auf den Stromschienen auftritt.

Messen Sie den Strom. Sie werden sehen, dass der Strom so schnell abfällt, wie Sie es erwarten würden.

Sieht gut aus. dh was Dwayne in 3 Zeilen gesagt hat.
Danke für die ausführliche Erklärung!
Schöner Einblick in die Spitze der Ausgangsspannung beim Ausschalten des MOSFET. Ich stimme zu, dass sich der MOSFET ausschaltet ... aber würden Sie nicht erwarten, dass unmittelbar nach dem Ausschalten des MOSFET, während an der LED-Anode noch volle 5 V anliegen, die LED immer noch in Vorwärtsleitung ist und Sie beobachten würden eine sehr kurze Zeit mit extrem schnellem Abfall, bis die LED-Spannung unter den Schwellenwert fällt?

Links zu Datenblättern IMMER eine gute Idee.

C im Gate um 1400 pF, abhängig von Ihren Bedingungen.
R -Pullup 1 kΩ

Die Zeitkonstante am Gate ist T = RC = 1000 x 1400 E -12
= 1,4 µS

Sie sehen eine viel längere Gate-Ausschaltzeit als das. Sind Sie sicher, dass 1 kΩ keine 100 kΩ oder so sind?

Andernfalls macht es keinen großen Sinn.
Suchen Sie nach etwas Unsinnigem :-)


Hinzugefügt:

... wie Sie im braunen Kanal des Logikanalysators sehen können, verhält sich die Gate-Spannung wie erwartet. Es ist die Drain-Spannung, die mir dieses seltsame Verhalten gibt. Ich habe auch den Widerstand überprüft und mit einer Reihe anderer Widerstände (1k, 10k, 100k ...) getestet ... gleiches Verhalten.

Gibt es eine ungenutzte Auswahl- oder Adressleitung auf dem HC595, die schwebend ist, wenn sie hoch oder niedrig festgeschnallt werden sollte? Das würde ein solches Verhalten erklären - oder auch zufälliges Verhalten in anderen Fällen.

Hier kann die schwebende Leitung einer Quelle (Auswahlleitung oder ...) über Leckage (im IC oder extern) mit einer langen Zeitkonstante aufgrund der Pin-Kapazität und des hohen Leckwiderstands oder Vorspannungsstroms folgen.

Dies ist eine sehr häufige Verhaltensklasse mit einem Floating-Pin.

Danke für die Antwort, aber wie Sie im braunen Kanal des Logikanalysators sehen können, verhält sich die Gate-Spannung wie erwartet. Es ist die Drain-Spannung, die mir dieses seltsame Verhalten gibt. Ich habe auch den Widerstand überprüft und mit einer Reihe anderer Widerstände (1k, 10k, 100k ...) getestet ... gleiches Verhalten. Ich werde einen detaillierteren Schaltplan mit einem besseren Kontext meines Projekts hinzufügen!
@tlubes Gibt es eine unbenutzte Auswahl- oder Adressleitung auf dem schwebenden HC595, wenn sie hoch oder niedrig festgeschnallt werden sollte? Das würde ein solches Verhalten erklären - oder auch zufälliges Verhalten in anderen Fällen. Hier folgt die Leitung einer Quelle (Auswahlleitung oder ...) über ein Leck (im IC oder extern) mit einer langen Zeitkonstante aufgrund der Pin-Kapazität und v hohem Leckwiderstand oder Vorspannungsstrom.
Nein, keine schwebenden Stifte. Alle Pins von 74hc595 waren an ein Level gebunden. Ich werde bald weiter debuggen, dies ist nur eines meiner Nebenprojekte. Mir ist auch aufgefallen, dass das Verhalten bei geringerer Frequenz nicht so schlecht war, aber immer noch völlig überproportional, wenn man sich das Datenblatt ansieht.
@RusselMcMahon Ich weiß Ihr Engagement sehr zu schätzen! Ich habe meine Frage so bearbeitet, dass klarer ist, was los ist. Ich habe alle neuen Komponenten verwendet und alles zweimal neu aufgebaut, also denke ich, dass ich alle zufälligen Probleme so gut wie möglich isoliert habe!
@tlubes Dwaynes Antwort kann das Problem gut identifizieren. dh ein schwimmender Stift, ABER die Last ist der Stift, der schwimmt! :-). Hoffentlich funktioniert seine Lösung. Es scheint mit dem übereinzustimmen, was Sie bisher beschrieben haben.

Ein paar Gedanken.

  • Versuchen Sie, eine untere Schiene für die LED zu verwenden, z. B. 3,8 V oder so (wenn möglich knapp über Ihrer maximalen Vf).
  • Verwenden Sie an jeder Spalte einen N-FET- oder NPN-Transistor, um die Anoden nach unten zu ziehen, wenn die Spalte "aus" ist.

Die Verwendung einer niedrigeren LED-Spannung auf ihrer eigenen Schiene reduziert die Verlustleistung im TLC-Stromquellentreiber. Und da die LED-Transientenströme naturgemäß hoch sind, schadet es nicht, sie von ihrer eigenen Versorgung zu isolieren. Und ... weniger Ladung, die abfließen muss, wenn es an der Zeit ist, die Reihe auszublenden.

Nun zu dem Problem, das Sie sehen.

tl; dr: Ihre LEDs sind Geisterbilder . Sie könnten einen Exorzisten holen oder... Sie müssen die Anoden während der Totzeit herunterziehen.

Hier ist ein relevanter Link zu genau diesem Thema: Vertikales Ghosting auf 64x32 1/16 RGB-LED-Matrix-Panel

Warum passiert das?

Wenn der Spalten-High-Side-FET ausgeschaltet ist, geht der LED-Strom auf nahezu Null. Das ist in Ordnung, aber auf den LED-Anoden, den Leiterbahnen und dem P-FET-Drain ist noch Restladung vorhanden. Ja, diese LEDs werden zu Kondensatoren .

Was passiert, wenn der FET abschaltet, ist dann:

  • LEDs leiten, bis sie ihre Durchlassspannung Vf erreichen
  • Der LED-Strom fällt schnell auf einen Sub-Vf-Leckstrom ab, der im nA-Bereich liegt

Jede verbleibende Ladung fließt also langsam durch die Sub-Vf-vorgespannten LEDs ab, da sie nirgendwo anders hingehen können. Dies bedeutet, dass diese LEDs während dieser Sub-Vf-Schwellenwert-Abklingzeit immer noch sehr nahe daran sind, „an“ zu sein, wenn auch nur ein wenig.

Und rate was? Wenn die Kathodenspannung durch Aktivieren einer anderen Spalte erhöht wird, koppelt diese über ihre LED-Sub-Vf-Kapazität an die „Aus“-Spalte. Und drückt dabei die Off-Column-Anodenspannung wieder über Vf , wodurch die LEDs in der „Off“-Spalte aufleuchten.

Das ist Ghosting, in einer (Nuss-)Schale.

Wie man es repariert?

Fügen Sie jeder Spalte einen N-FET hinzu, um die Anodenspannung zwangsweise niedrig zu halten, wenn diese Spalte ausgeschaltet ist. Der Pulldown auf der N-Seite entlädt diese Restspannung viel schneller als ein Pulldown-Widerstand dies tun kann. Dies behebt nicht nur Geisterbilder, sondern ermöglicht es Ihnen, die Austastzeit erheblich zu verkürzen.

Der N-FET kann ein sehr billiger sein, wie ein 2N7002, weniger als 2 Cent im Volumen. Ein NPN-Transistor kann auch funktionieren (etwa 1 Cent für 2N3904) oder sogar ein invertierender Open-Drain-Puffer.

Danke für die Anregungen und die ausführlichen Erklärungen! Ich werde die LED-Schiene irgendwann absenken. Dies ist nur ein grobes Hobbyprojekt, das ich lernen muss, also reicht es nicht, den Abfluss herunterzuziehen. Aber natürlich möchte ich mich verbessern und habe einen MOSFET-Treiber-IC bestellt, in dem die N-Kanal- und P-Kanal-FETs enthalten sind. Das sollte zu einem noch besseren Ergebnis führen.

Ich stelle fest, dass die Gate-Low-Zeit jedes Mosfets 0,27 ms beträgt. Nun, 0,27 ms x 9 = 2,45 ms, aber Ihre Zykluszeit beträgt 4,5 ms. Führen Sie zwischen jedem Zyklus um die Saiten 2 ms Verarbeitung durch, wenn das Display nicht angesteuert wird?

Eine übliche Art, eine LED-Anzeige anzusteuern, erfolgt unter Unterbrechungssteuerung. Haben Sie einen zeitgesteuerten Interrupt und jedes Mal, wenn die Interrupt-Subroutine ausgeführt wird, wird die aktuell leuchtende Zeichenfolge ausgeschaltet und die nächste eingeschaltet. Dann gibt es keine Totzeit während anderer Verarbeitung.

Sie könnten die Anzeige unterbrechungsgesteuert machen, und wenn das Problem durch die Abschaltzeit des FET verursacht wird, könnten Sie die Anzeige mit einer niedrigeren Frequenz ansteuern (Sie sollten bei 80 Hz kein Flimmern sehen). Dann können Sie 0,8 ms "alle Gates hoch" Totzeit zwischen dem Abschalten eines Strings und dem Einschalten des nächsten Strings hinzufügen.

Danke für die Antwort. Eigentlich ist meine Matrix mit TIMER0 des atmega168p interruptgesteuert. Der Grund, warum es im Zyklus eine gewisse Auszeit gibt, ist, dass ich die LED-Daten tatsächlich von einem SPI-Blitz beziehe und den TLC5940 einrichte, nachdem ich die Anoden der LEDs ausgeschaltet habe. Nachdem alles erledigt ist und die Verriegelung des TLC durchgegangen ist, aktiviere ich die nächste Anodenreihe. Außerdem läuft meine MCU derzeit nur mit 8MHz. Softwareseitig gibt es noch viel zu verbessern...