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:
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):
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:
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:
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!
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.
Sie haben etwas Entscheidendes falsch verstanden, und es geht nicht um Ihre Schaltung, sondern um das Lesen des Datenblatts. IRF9540 sagt:
Es ist jetzt klar, dass die "versprochene" Abfallzeit tatsächlich 51 ns beträgt. Aber Sie müssen auf die Bedingungen achten:
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:
Dies ist die Antwort der Schaltung mit VDD = 5V. Die resultierende Abfallzeit beträgt 4 ms!
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.
Ich glaube, dass am Design nichts auszusetzen ist. Irgendetwas stimmt mit dem physikalischen Schaltkreis nicht. Drei Hauptkandidaten fallen mir ein:
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:
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!
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:
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.
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.
Ein paar Gedanken.
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:
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.
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.
Bruce Abbott
Andi aka
Russell McMahon