Forum: Mikrocontroller und Digitale Elektronik Schwierigkeiten mit PCA9685 - LED dimmen


von Lars G. (lgw)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe Schwierigkeiten mit nem PCA9685.

Kurz zum Background: ich will (viele) LED-Strips mit nem Rapsberry 
dimmen. Ich habe bereits eine Schaltung mit Software-PWM und 
NPN-Darlington-Transistoren gebaut, sowie eine Schaltung mit dem 
Adafruit-PWM-Board, welches mit einem PCA9685 bestückt ist.

Läuft alles gut!

Nun wollte ich das ganze etwas günstiger aufbauen, habe daher den 
PCA9685 ohne das Adafruit-Board bestellt und selber auf ne 
SMD-Adapterplatine gelötet. Damit fehlt natürlich die komplette 
Bestückung der Adafruit-Platine, da sind so Widerstände drauf und so, 
von denen ich nur teilweise herausfinden konnte wozu sie da sind.

Software ist gleich geblieben! Ich habe etwas andere Transistoren 
verwendet als zuvor.

Ich habe den PCA eigentlich so beschaltet wie es die Dokumentation 
hergibt, also EXTCLK, A5 auf GND, A0-A4 zZt auf high mit 10kOhm. Ich 
kann die i2c-Adresse erfolgreich ändern, der Chip wird vom Raspberry auf 
der eingestellten Adresse erkannt. Ich kann Register normal setzen.

Wenn ich die Beschaltung korrekt verstehe, kann ich mit den LED-outs 
auch direkt auf die Transistoren gehen, ohne zusätzliche Widerstände.

Der angehängte Plan ist eher ne Skizze für die Streifenplatine und soll 
als Anhaltspunkt dienen wie das ganze aufgebaut ist!

VDD ist 3.3V.

Was nun passiert ist folgendes:

- wenn ich einzelne Outs schalte/dimme, funktioniert dies einwandfrei. 
Alle Ausgänge scheinen korrekt anzusteuern, meine Platine wirkt also 
eigentlich "korrekt" beschaltet.

- wenn ich aber mehrere Outs gleichzeitig einschalte, etwa mehr als vier 
gleichzeitig, dann flackern die LEDs kurz auf, danach ist "tote Hose" - 
bis ich den Chip neu initialisiere.

- wenn ich die LEDs via ALL-Kommando schalte, ergibt sich das gleiche 
Phänomen, es hat also eher nicht mit der Datenmenge auf den BUS zu tun

- das parallel auf dem gleichen Bus betriebenes Adafruit-PCA läuft 
weiter

Leider habe ich relativ wenig Ahnung von der Materie, und habe auch 
nicht so etwas wie ein Oszilloskop. Die Versorgungsspannung ist stabil 
bei 3.3V.

Ich habe irgendwie das Gefühl, dass der Chip "abschaltet" weil er 
befindet, dass zu viel Strom fliesst - aber so wie ich die Dokumentation 
verstehe muss man ja keine zusätzlichen Widerstände an den LED-Outs 
verwenden, sofern OUTDRV=1 gesetzt ist (was der Fall sein sollte). 
Könnten die Transistoren (Tip112) mehr als 25mA "verbrauchen"?

Ich bin etwas ratlos - was könnte ich tun?

Bisher weiss ich nur, dass die LED-outs im Fehlerzustand keine messbare 
Spannung mehr liefern, selbst wenn sie quasi dauerhaft an sein sollten.

Das Protokoll von der i2c-Library spuckt keine Fehler aus, und so etwas 
wie ein Statusregister das man auslesen könnte habe ich in der Form auch 
nicht gefunden.

Ich danke euch im Voraus! :)

PS: Transistoren bei der alten Schaltung (die geht) mit dem 
Adafruit-Board waren Typ BDX53C, die auf der neuen Schaltung sind 
TIP112. Das Adafruit-Board scheint mir so ca. 300 Ohm-Widerstände zu 
haben...

von Lars G. (lgw)


Lesenswert?

Hm. Habe noch mal Transistordatenblätter gewälzt, kenne mich ja echt 
nicht gut aus. Aber Base Current wird bei dem den ich früher verwendet 
habe mit 0.2mA angegeben, bei dem neueren mit 50mA.

50mA würde auch passen, da wären ungefähr bei 8 Kanälen die 400mA die 
der PBA verkraftet erreicht.

Andererseits steht da was von 8mA für Saturation bei 2.5V und 2A 
Kollektorstrom... hätt' ich mal in E-Technik aufgepasst.

Wenn dem so ist, und ich das Datenblatt korrekt interpretiere, kann ich 
da irgendwas tun, i.e. Widerstand reinlöten, oder muss ich andere 
Transistoren besorgen? Wäre schade wenn ich sie nicht verwenden könnte, 
hab' bereits recht viele von den Transistoren gekauft ;)

Also zu schaltenden Strom pro Kanal nehme ich ungefähr 1A bei 12V an...

: Bearbeitet durch User
von derElf (Gast)


Lesenswert?

Du brauchst einen 
https://www.mikrocontroller.net/articles/Basiswiderstand da ansonsten 
der IC in eine Art Überlastabschaltung schalten wird.

von Lars G. (lgw)


Lesenswert?

Ah es hat einen Namen :)

Danke, leuchtet auch irgendwie ein.

Laut Datenblatt des Controllers hätte ich angenommen, dass es auch ohne 
Widerstand gehen müsste, da sind entsprechende 
Schalt/Konfigurationsbeispiele drin.

Kann jemand bei der Berechnung helfen? Ich tu' mich da schwer mit :/

Datenblatt Transistor:
http://www.farnell.com/datasheets/1685006.pdf

Also Steuerspannung kann ich 3.3 oder 5V "anbieten".

von derElf (Gast)


Lesenswert?

Die Schaltung im Datenblatt verwendet einen 
https://www.mikrocontroller.net/articles/FET der funktioniert etwas 
anders als ein Transistor.

Im von mir verlinkten Artikel steht der genaue Rechenweg beschrieben. 
Sogar die Bezeichnungen im Datenblatt sind gleich.
Das einzige was du beachten musst, ist dass du einen DARLINGTON 
Transistor verwendest, aber sogar dieser Fall ist im Artikel 
beschrieben.

von derZwölf (Gast)


Lesenswert?

derElf schrieb:
> Die Schaltung im Datenblatt verwendet einen
> https://www.mikrocontroller.net/articles/FET der funktioniert etwas
> anders als ein Transistor.

FET bedeutet Feld Effekt Transistor. Wie man aus der Bezeichnungs 
sieht, handelt es sich um einen Transistortyp, genauso wie PKW auch ein 
Fahrzeug ist.

https://de.wikipedia.org/wiki/Transistor#Typen

von Lars G. (lgw)


Lesenswert?

Moinsen,

jo, also hab' ein wenig gerechnet.

Ich bin mir nicht ganz sicher weil im Dokument steht man sollte den Wert 
für die Stromverstärkung durch "einen Wert von 2 bis 10" teilen, bei 
Darlington steht aber wiederum, man kann Werte zwischen 400 und 2500 
annehmen. Im Datenblatt steht ein Wert von 500 bei 2A Kollektorstrom und 
1000 bei 1A Kollektorstrom. Das passt ja ganz gut zu 400-2500... muss 
man da jetzt noch was dividieren?

Wenn ich nix dividiere, ergibt sich:

IC = 1A; VCE = 4V
hFE* = 1,000

IC = 2A; VCE = 4V
hFE* = 500

IB = 1A / 1000 = 0.001A
RB = ( 3,3V - 1,4V ) / 0.001A = 1,9V / 0.001A = 1.9kOhm

IB = 2A / 500 = 0,004A
RB = ( 3,3V - 1,4V ) / 0.004A = 1,9V / 0.004A = 475Ohm

Ich gehe von max. 1.4A Kollektorstrom aus.

Da die 0.004A deutlich niedriger sind als die vom PCA möglichen 25mA 
würde ich jetzt Widerstände roundabout 400Ohm einsetzen wollen, macht 
das Sinn?

von Lars G. (lgw)


Lesenswert?

Nachdem sich ja leider niemand mehr gemeldet hatte, habe ich mir auch 
noch mal den Adafruit-Controller angeschaut (bzw. endlich nen Schaltplan 
gefunden), auf dem sind 220Ohm-Widerstände verbaut. Habe nach kurzer 
Überschlagsrechnung entschieden dass die eigentlich auch noch ganz gut 
passen müssten, immerhin ergeben sich rechnerisch bei den genannten 
Spannungen erst bei nur 80 Ohm Ströme um 25mA.

Hab' das soweit aufgebaut und nu scheint die Schaltung stabil zu laufen!

Vielen Dank auf jeden Fall für die Tipps. Bei der nächsten Platine messe 
ich evtl. mal nach wie viel Strom nu fliesst, auch steht ja ein Test mit 
einem kompletten 5m-LED-Streifen aus, bisher hatte ich nur kurze 
Schnipsel dran...

anyway, schönen Dank :-)

von lgw (Gast)


Lesenswert?

Kurze Rückmeldung:

bisher nur mit 9 von 16 Kanälen in der Praxis getestet, aber 220Ω 
scheint zu funktionieren :-)

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.