Ich hoffe, hier hat jemand Erfahrung mit dem PWM-Controller PCA 9685 (16-Kanal, I2c-Schnittstelle). Bisher funktioniert alles ziemlich gut, nachdem ich die Schaltung richtig angeschlossen habe. Ich verwende einen Picobuck-LED-Treiber, um diese Hochleistungs-RGB-LED anzusteuern .
Der PCA9685 ermöglichte eine PWM-Frequenz zwischen 40 Hz und etwa 1500 Hz. Der Standardwert ist 200 Hz. Nachdem ich diese Frequenz eingestellt habe, kann ich das Impuls-Ein- und Impuls-Aus-Intervall zwischen 0 und 4096 (das ist die Impulsauflösung) wählen. Wenn ich also die LED auf voller Helligkeit haben möchte, kann ich On=0 und Off=4095 setzen. Das funktioniert gut und ich bekomme eine schöne solide LED.
Wenn ich jedoch anfange, eine der LEDs zu dimmen, um 25% ihrer Helligkeit zu sagen, setze ich On = 0, Off = 1000. Dadurch wird die LED gedimmt, aber manchmal fängt sie an zu flackern. Ich habe viele verschiedene Kombinationen von Ein- / Auszeiten und PWM-Frequenzen ausprobiert. Selbst bei 1000 Hz flackert es, und es wird schlimmer, wenn ich anfange, alle 3 RGB-Komponenten zu verwenden.
Ich treibe den Picobuck mit einer separaten 12-V-Gleichstromquelle und er hat einen Kühlkörper. Benötige ich irgendwo im Stromkreis einen Widerstand oder einen Kondensator, um das Flackern zu stoppen? Ich versuche nur, die LED flimmerfrei von 0-100% dimmbar zu machen, damit ich die Farben Rot, Grün und Blau kombinieren kann.
Hier ist ein Bild des Aufbaus, es gibt keine zusätzlichen Komponenten - nur PCA9685-Platine, Picobuck und die RGB-LED. Die rot/schwarzen Drähte vom Picobuck gehen zu einer separaten 12-V-Gleichstromversorgung.
Ich hatte das gleiche Problem wie das OP und fand diesen Beitrag in den NXP-Foren, der mein Problem (und ich denke, das Problem des OP?) gut beschreibt. Auf jeden Fall ist diese ESE-Seite eine der ersten Seiten, die bei der Suche nach erscheint PCA9685 flickering LEDs
, also dachte ich, ich füge hier meine Lösung hinzu. Aus dem NXP-Forum:
Betrachtet man das Datenblatt ( http://www.nxp.com/docs/en/data-sheet/PCA9685.pdf ) fig. 11 auf Seite 20 sieht dies nach Design aus, das Problem besteht darin, dass das Gerät immer dann, wenn LEDn_ON > LEDn_OFF und das LEDn_OFF-Register aktualisiert werden, eine ganze Ausgangsphase überspringt und den Ausgang unabhängig von den Registern ausschaltet -- sehen Sie sich den leeren Zyklus zwischen "register (s) in diesem Zyklus aktualisiert“ und „Ausgang(e) in diesem Zyklus aktualisiert“. Es gibt keinen leeren Zyklus, wenn LEDn_ON < LEDn_OFF ist, wie in Abb. 2 zu sehen. 10 auf der vorherigen Seite.
Es ist also kein elektrisches Problem oder ein Problem mit dem Picobuck (ich verwende einfache alte MOSFETs), sondern ein Problem mit dem PCA9685-Chip selbst: Halten Sie den Ausgang für (den Rest?) wird geändert, wenn bestimmte Registerbedingungen erfüllt sind und wenn die steigende Flanke nicht mit dem internen Timer des Chips synchronisiert ist.
Der abschließende Kommentar dieses Posters lautete:
Gibt es eine Möglichkeit, diese Art von Verhalten zu vermeiden und dennoch vom Lastausgleich der Ausgabe zu profitieren?
Spoiler-Alarm: Zum Zeitpunkt des Schreibens gibt es noch keine Antwort - Aber das veranlasste mich, nachzuforschen und zu versuchen, diese "Lastausgleichs" -Sache auszuschalten. Ich verwende diese Bibliothek , um sie zu steuern, und nachdem ich die Quelle durchsucht hatte, versuchte ich, die Deklaration des im Beispiel gefundenen PCA9685-Objekts von dieser zu ändern:
PCA9685 pwmController;
dazu:
PCA9685 pwmController(Wire, PCA9685_PhaseBalancer_None);
Und... Butterweich!
Was ist Load Balancing und warum sollte es mich interessieren?
Nun, es scheint eine Möglichkeit zu sein, die ansteigende Flanke des PWM-Signals über jeden Kanal zu verschieben, vermutlich um die sofortigen Stromänderungen aller 16 Kanäle zu erleichtern, die gleichzeitig ansteigen und möglicherweise sofort abfallen, wenn die Helligkeit / Einschaltdauer jedes Kanals gleich ist . Die anderen Optionen in der Bibliothek sind *_Linear , das die Wellenformen um eine feste Verzögerung für jeden Kanal gegenüber dem vorherigen versetzt, *_Weaved , das die Verzögerungen über die Kanäle hinweg verschachtelt, „die ersten paar Ausgänge besser ausgleicht“ (was auch immer das bedeutet) und * _Count , das nicht von der Bibliothek implementiert wird und genauso funktioniert wie *_None .
Eine eventuelle Staffelung der Phase führt zu einem Flimmern, sobald Pegel geändert werden, was sich auch auf bestimmte Duty-Cycle-Bereiche bezogen auf die PWM-Frequenz auswirken kann.
Ich nehme an, dass die Auswirkungen instabile Leistungsaufnahme und stärkere EMI sind. Ich nehme an, dies bedeutet, dass die Stromversorgung mit einer ausreichend großen Obergrenze gepuffert werden sollte, aber ich bin mir nicht sicher, was (wenn überhaupt) bezüglich der potenziellen EMI zu tun ist - ist dies ein Problem? Gibt es ein weiteres Problem, das beim Deaktivieren des Phasenausgleichs zu berücksichtigen ist? Wenn jemand, der technisch versierter ist, dazu etwas sagen kann, wäre ich sehr dankbar.
Von der Seite, die Sie für Ihren PicoBuck verlinkt haben:
This PicoBuck supports PWM control so long as the signal is above a minimum of ~1.5V and each LED is driven to ~350mA.
Was hier passieren könnte, ist, dass es eine Kapazität (entweder eine absichtliche Obergrenze oder eine parasitäre Kapazität ... höchstwahrscheinlich eine Obergrenze) zwischen Ihrem Rechteckwellen-PWM-Ausgang und dem entsprechenden Eingang Ihres PicoBuck gibt.
Mögliche Korrekturen:
Versuchen Sie, einen NPN und einen Schmitt-Trigger/P-FET (oder einen Operationsverstärker mit Hochspannungsvervielfacher) zwischen dem PWM-Ausgang und dem Eingang des PicoBuck hinzuzufügen, um die Signalwellenform so nah wie möglich an saubere +5 V/ 0V Rechtecksignal, niederohmiges Signal.
Hier ist ein Beispiel mit Komponenten im Wert von etwa 2 $ pro LED:
Prüfen Sie auf Unregelmäßigkeiten der Versorgungsspannung in den Versorgungspins Ihres PWM-Controllers oder des PicoBuck. Ich vermute, dass Ihr Hinweis auf "es wird schlimmer, wenn Sie alle 3 RGB-Komponenten verwenden" höchstwahrscheinlich darauf zurückzuführen ist, dass dies aufgrund des Näherungs- / visuellen Vergleichs stärker auffällt, als dass die "tatsächliche" Ausgabe beeinträchtigt wird. Da Sie es jedoch erwähnt haben, wäre die Überprüfung auf Probleme mit der Versorgungsspannung der erste Ort, um nach etwas zu suchen, das dies verursachen könnte.
Beim Lesen des Datenblatts für AL8805 (der Chip in PicoBuck) gibt es zwei Steuerungsmodi: entweder PWM oder eine konstante Steuerspannung. Es ist möglich, dass das Flackern auftritt, weil der Chip verwirrt ist, welchen Sie versuchen zu tun.
Ein paar Dinge zur Fehlerbehebung, die Sie ausprobieren sollten:
Experimentell: Wenn die Konstantspannungsregelung funktioniert und Sie PWM nicht zum Laufen bringen können, stecken Sie einen großen Kondensator zwischen den PicoBuck-Eingang und Masse und vielleicht einen kleinen Widerstand zur Strombegrenzung. Die Idee ist, das PWM-Signal in eine entsprechende Steuerspannung zu glätten. Haftungsausschluss: Ungetestet, könnte den PWM-Controller braten. Wenn man sich das Datenblatt ansieht, sieht es unwahrscheinlich aus, aber gehen Sie mit Vorsicht vor.
Das Datenblatt als Referenz: http://cdn.sparkfun.com/datasheets/Components/LED/AL8805.pdf
Daniel
Jon
Daniel
Robherc KV5ROB
Jon
pcdev
Jon
pcdev
pcdev