Forum: Mikrocontroller und Digitale Elektronik TLC5940 - Daisy Chain - Komisches Verhalten


von Patrick L. (crashdemon)


Lesenswert?

Hallo Zusammen,

ich habe zwölf TLC5940 zu einer Daisy-Chain verbaut und habe daran 
insgesamt 64 RGB-LEDs angeschlossen. Es befindet sich jeweils ein 
TLC5940 auf einem PCB. Die PCBs sind untereinander mit Flachbandkabel 
verbunden. Angesteuert werden die Chips in einer Daisy Chain mit einem 
Orange Pi Zero.

Wenn ich jetzt versuche auf allen LEDs z.B. nur die Farbe Rot auszugeben 
kommt es teilweise vor das nicht alle LEDs leuchten oder das diese mit 
einer unterschiedlichen Helligkeit leuchten.

Auch zeigt sich eine starke Abhängikeit von Schalthandlungen im Raum. 
Wenn ich z.B. eine Halogen-Lampe einschalte wird die Schaltung mitunter 
so stark gestört, dass zufällig LEDs ein- oder aus gehen.

Ich habe vor jedem Chip einen 100nF Kerko und einen 4,7µF Elko zwischen 
VCC und GND aber das scheint das Problem nicht zu beseitigen. Die 
Kondensatoren befinden sich direkt an den Pins der Chips.

Kann mir jemand einen Tipp geben in welchen Bereich ich suchen muss um 
das Problem in den Griff zu bekommen?

Kann ich evtl. die Datenleitungen zu dem Chip noch entstören? Ich habe 
auch schon einen Klapp-Ferrit an dem Flachbandkabel ausprobiert. Das hat 
aber zu keiner Besserung geführt.

Grüße

Patrick

von Falk B. (falk)


Lesenswert?

Patrick L. schrieb:

> ich habe zwölf TLC5940 zu einer Daisy-Chain verbaut und habe daran
> insgesamt 64 RGB-LEDs angeschlossen.

Das ist schon ein bisschen was. Wieviel Strom ziehen dein LEDs maximal? 
Der TLC5940 kann 120mA/Pin!

> Es befindet sich jeweils ein
> TLC5940 auf einem PCB. Die PCBs sind untereinander mit Flachbandkabel
> verbunden.

Mit welcher Pinbelegung? Wieviele Adern für Masse und VCC?

> Angesteuert werden die Chips in einer Daisy Chain mit einem
> Orange Pi Zero.

Kann der 5V Signale ausgeben? Denn der TLC5940 will die haben.

> Wenn ich jetzt versuche auf allen LEDs z.B. nur die Farbe Rot auszugeben
> kommt es teilweise vor das nicht alle LEDs leuchten oder das diese mit
> einer unterschiedlichen Helligkeit leuchten.

Da ist was instabil.

> Auch zeigt sich eine starke Abhängikeit von Schalthandlungen im Raum.
> Wenn ich z.B. eine Halogen-Lampe einschalte wird die Schaltung mitunter
> so stark gestört, dass zufällig LEDs ein- oder aus gehen.

Uups ;-)
Die böse EMV mal wieder.

> Ich habe vor jedem Chip einen 100nF Kerko

Gut.

>und einen 4,7µF Elko zwischen

Könnte knapp werden, wenn man viele LEDs auf einmal schaltet.

> VCC und GND aber das scheint das Problem nicht zu beseitigen. Die
> Kondensatoren befinden sich direkt an den Pins der Chips.

Zeig mal ein Bild von deinem Aufbau und Schaltplan.

> Kann ich evtl. die Datenleitungen zu dem Chip noch entstören? Ich habe
> auch schon einen Klapp-Ferrit an dem Flachbandkabel ausprobiert. Das hat
> aber zu keiner Besserung geführt.

;-)
Das sind zwar die ersten Maßnahmen, wenn die EMV Probleme macht, aber 
man sollte schon ansatzweise wissen, wie sie wirken.

Hast du es erstmal mit nur einem TLC5940 probiert? Wie läuft es da?

von Patrick L. (crashdemon)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Das ist schon ein bisschen was. Wieviel Strom ziehen dein LEDs maximal?
> Der TLC5940 kann 120mA/Pin!
>
Sind auf ungefähr 17mA pro LED eingestellt. Sind dann pro Chip 272mA

> Mit welcher Pinbelegung? Wieviele Adern für Masse und VCC?
>
Die Pin-Belegung habe ich mal angehängt.

> Kann der 5V Signale ausgeben? Denn der TLC5940 will die haben.
>
Ich versorge die TLC5940 selber mit einem 3,3V Low-Drop 
Festspannungsregler. Laut Datenblatt sollte das auch gehen. Dann passt 
das wieder mit den 3,3V des Orange Pi Zero. Bin natürlich bei solch 
"kleinen" Spannung-Pegeln auch anfälliger für Störungen.

> Könnte knapp werden, wenn man viele LEDs auf einmal schaltet.
>

Kann ich noch erhöhen. Was wäre denn ein besserer Wert? 100µF?

> Zeig mal ein Bild von deinem Aufbau und Schaltplan.
>
Habe ich mal angehängt.

> Hast du es erstmal mit nur einem TLC5940 probiert? Wie läuft es da?

Ja, hatte ich. Da lief es mal stabil und dann auch mal wieder nicht....

Masse Leitung über die Flachbandleitung ist teilweise eine bisschen dumm 
dimensioniert. Da muss ich nochmal dran.

von Falk B. (falk)


Lesenswert?

Patrick L. schrieb:
>> Das ist schon ein bisschen was. Wieviel Strom ziehen dein LEDs maximal?
>> Der TLC5940 kann 120mA/Pin!
>>
> Sind auf ungefähr 17mA pro LED eingestellt. Sind dann pro Chip 272mA

Klingt eher harmlos.

>> Mit welcher Pinbelegung? Wieviele Adern für Masse und VCC?
>>
> Die Pin-Belegung habe ich mal angehängt.

Naja, geht so, ist aber nicht optimal. GND sollte man weiter verteilen 
und im Idealfall direkt neben die Taktleitungen legen.

>> Kann der 5V Signale ausgeben? Denn der TLC5940 will die haben.
>>
> Ich versorge die TLC5940 selber mit einem 3,3V Low-Drop
> Festspannungsregler. Laut Datenblatt sollte das auch gehen. Dann passt
> das wieder mit den 3,3V des Orange Pi Zero. Bin natürlich bei solch
> "kleinen" Spannung-Pegeln auch anfälliger für Störungen.

OK.

>> Könnte knapp werden, wenn man viele LEDs auf einmal schaltet.
>>
>
> Kann ich noch erhöhen. Was wäre denn ein besserer Wert? 100µF?

Irgendwas im Bereich 22-100uF. Da muss man ggf. auch mal messen. Und 
testen. Mach mal ein Lauflicht, bei dem nur eine LED durch alle Ausgänge 
wandert. Das ist eine kleine Schaltlast, da reichen auch 4,7uF. Wenn 
dann immer noch Fehler kommen (was ich vermute), liegt es nicht an den 
4,7uF sondern an Reflektionen auf deinem Flachbandkabel.

>
>> Zeig mal ein Bild von deinem Aufbau und Schaltplan.
>>
> Habe ich mal angehängt.

Uffff! Schönes Drahtverhau. Warum in aller Welt hast du KEINE normalen 
Wannenstecker mit passenden Gegenstücken zum crimpen genutzt? 
Flachbandkabel in Durchkontaktierungen einlöten ist Irrsinn.

> Masse Leitung über die Flachbandleitung ist teilweise eine bisschen dumm
> dimensioniert. Da muss ich nochmal dran.

Ja. Aber ich vermute, daß das Problem in einer fehlenden Terminierung 
liegt. Siehe Wellenwiderstand.

Beitrag "Re: Skurriles Problem mit BS170 Mosfets"

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Falk B. schrieb:
> Ja. Aber ich vermute, daß das Problem in einer fehlenden Terminierung
> liegt. Siehe Wellenwiderstand.
Vermute ich auch...

Ein Oszilloskop könnte da Licht ins Dunkel bringen und z.B. solche 
Bilder zeigen wie im Beitrag "Re: Signalproblem bei langem Kabel"

Oder wie dort im Beitrag "Re: Serienwiderstand bei Hochfrequenz"

von Erich (Gast)


Lesenswert?

Patrick L. schrieb:
> Masse Leitung über die Flachbandleitung ist teilweise eine bisschen dumm
> dimensioniert. Da muss ich nochmal dran.

Ja, und +Versorung auch.
Unbedingt ordentlich mit 0,5 qmm über separates Leitung nochmals 
zuführen.
Am besten auch nochmal zu Ende der Kette.

von Patrick L. (crashdemon)


Lesenswert?

Falk B. schrieb:
> Irgendwas im Bereich 22-100uF. Da muss man ggf. auch mal messen. Und
> testen. Mach mal ein Lauflicht, bei dem nur eine LED durch alle Ausgänge
> wandert. Das ist eine kleine Schaltlast, da reichen auch 4,7uF. Wenn
> dann immer noch Fehler kommen (was ich vermute), liegt es nicht an den
> 4,7uF sondern an Reflektionen auf deinem Flachbandkabel.

Alles klaro, das probiere ich nochmal aus. Danke für den Tipp!!

Falk B. schrieb:
> Uffff! Schönes Drahtverhau. Warum in aller Welt hast du KEINE normalen
> Wannenstecker mit passenden Gegenstücken zum crimpen genutzt?
> Flachbandkabel in Durchkontaktierungen einlöten ist Irrsinn.

Ja, ist nicht gerade schön geworden. Hap keine Crimp-Zange für sowas 
deshalb hatte ich es eingelötet :-)

Falk B. schrieb:
> Ja. Aber ich vermute, daß das Problem in einer fehlenden Terminierung
> liegt. Siehe Wellenwiderstand.
>
> Beitrag "Re: Skurriles Problem mit BS170 Mosfets"

Das hört sich sehr vielversprechend an. Das ist auf jedenfall eine sehr 
guter Tipp!! Danke!!

Was würdet ihr den vorgschlagen: Besser einen Serien-Widerstände oder 
Abschluss-Widerstände am Ende der Leitung?

Wie kann ich ungefähr abschätzen wie groß ich den 
Terminierungswiderstand machen muss? Gibt es grobe Anhaltswerte für den 
Wellenwiderstand von Flachbandkabeln?

Lothar M. schrieb:
> Ein Oszilloskop könnte da Licht ins Dunkel bringen und z.B. solche
> Bilder zeigen wie im Beitrag "Re: Signalproblem bei langem Kabel"
>
> Oder wie dort im Beitrag "Re: Serienwiderstand bei Hochfrequenz"

Ja, schaue ich mir auf jedenfall nochmal mit einem Scope an! Dann wird 
vermutlich die Clock-Leitung die Probleme haben.

Erich schrieb:
> Ja, und +Versorung auch.
> Unbedingt ordentlich mit 0,5 qmm über separates Leitung nochmals
> zuführen.
> Am besten auch nochmal zu Ende der Kette.

Ok, auch die 3,3V Versorgung für die TLC5940? Weil die Versorgung für 
die LEDs habe ich schon extar über eigene Leitungen geführt. Nur die 
Masse fehlt noch!

von Falk B. (falk)


Lesenswert?

Patrick L. schrieb:

>> Uffff! Schönes Drahtverhau. Warum in aller Welt hast du KEINE normalen
>> Wannenstecker mit passenden Gegenstücken zum crimpen genutzt?
>> Flachbandkabel in Durchkontaktierungen einlöten ist Irrsinn.
>
> Ja, ist nicht gerade schön geworden. Hap keine Crimp-Zange für sowas
> deshalb hatte ich es eingelötet :-)

Dafür reicht ein Mini-Schraubstock und im Extremfall sogar eine 
Wasserpumpenzange.

> Was würdet ihr den vorgschlagen: Besser einen Serien-Widerstände

NEIN!

>oder
> Abschluss-Widerstände am Ende der Leitung?

JA! Wie im Link gezeigt, Thevenin-Terminierung.

> Wie kann ich ungefähr abschätzen wie groß ich den
> Terminierungswiderstand machen muss? Gibt es grobe Anhaltswerte für den
> Wellenwiderstand von Flachbandkabeln?

Steht im Link.

> Ja, schaue ich mir auf jedenfall nochmal mit einem Scope an!

Aber den Tastkopf RICHTIG anschließen.

https://www.mikrocontroller.net/articles/Oszilloskop#Tastk.C3.B6pfe_richtig_benutzen

>> Ja, und +Versorung auch.
>> Unbedingt ordentlich mit 0,5 qmm über separates Leitung nochmals
>> zuführen.
>> Am besten auch nochmal zu Ende der Kette.
>
> Ok, auch die 3,3V Versorgung für die TLC5940?

Nein, da reicht das Kabel, soviele mA fließen da nicht. Ca. 5-12mA/IC, 
macht bei 12 ICs 144mA max. Das geht gerade noch so über so eine Ader 
auf der Flachbandleitung. Im Zweifelsfall mal die Spannung am letzten IC 
messen.

> Weil die Versorgung für
> die LEDs habe ich schon extar über eigene Leitungen geführt. Nur die
> Masse fehlt noch!

OK.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Patrick L. schrieb:
> Weil die Versorgung für die LEDs habe ich schon extar über eigene
> Leitungen geführt. Nur die Masse fehlt noch!
"Die Versorgung" besteht aus Vcc und GND.
Mit einer zu "schwachen" (=zu hochohmigen) Masse bekommst du einen 
Effekt, der sich "Ground-Bouncing" nennt, das Massepotential "hüft" 
über/um 0V herum. Aber blöderweise beziehen sich sämtliche IC-Eingänge 
auf diese "hüpfende" Masse. Den Rest kannst du dir selber ausmalen... 
;-)

von Patrick L. (crashdemon)


Lesenswert?

Alles klaro! Dann werde ich zunächst erstmal die folgenden Dinge 
umsetzen:

1. Masseleitungen zu jedem PCB vom Netzteil (entsprechend dickerer 
Querschnitt)
2. Versorgungsleitung auch zu jedem PCB von der 3,3V Versorgung 
(entsprechend dickerer Querschnitt)
3. Terminierungswiderstand (Thevenin-Terminierung) jeweils an die 
digitalen Signale

Ich berichte dann ob es was gebracht hat!

von Patrick L. (crashdemon)


Lesenswert?

So ich habe jetzt die folgenden die vorher angekündigten Punkte 
umgesetzt.

Ich habe Terminierunswiderstände (Thevenin-Terminierung) mit jweils 
2x330 Ohm und 100nF Kerko an GSCLK, SCLK und SOUT gemacht.

Was sich verbessert hat ist, dass jetzt zumindest schonmal die Farben 
passen. Wenn ich Rot einstelle leuchten die LEDs rot, etc ....

Allerdings leuchten nicht alle LEDs. Es ist teilweise zufällig welche 
angehen.

Habt ihr noch Tipps was ich noch verbessern kann?
Noch Terminierunswiderstände hinzufügen?
Oder zwischen Orange Pi Zero und TLC5940 Daisy Chain einen Logikbaustein 
der die Pegelwandlung 3,3V<>5V macht aber eine geringer Anstiegszeit 
macht?

Bin für Vorschläge offen ;-)

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Patrick L. schrieb:
> So ich habe jetzt die folgenden die vorher angekündigten Punkte
> umgesetzt.
>
> Ich habe Terminierunswiderstände (Thevenin-Terminierung) mit jweils
> 2x330 Ohm und 100nF Kerko an GSCLK, SCLK und SOUT gemacht.

Und WO hast du die GENAU angebaut? Und warum 330Ohm, wenn im Link 220 
bzw. 240 Ohm verwendet und empfohlen wurden?

> Was sich verbessert hat ist, dass jetzt zumindest schonmal die Farben
> passen. Wenn ich Rot einstelle leuchten die LEDs rot, etc ....
>
> Allerdings leuchten nicht alle LEDs. Es ist teilweise zufällig welche
> angehen.

Entweder noch ein Softwarefehler oder immer noch ein Problem mit der 
Signalqualität. Oder Lötfehler auf den einzelnen Platinen.

Prüfe deine Platinen erstmal alle einzeln direkt an deinem Controller 
mit kurzem Kabel. Hier wären echte Flachbandkabel mit Stecker Gold wert 
. . .

> Habt ihr noch Tipps was ich noch verbessern kann?
> Noch Terminierunswiderstände hinzufügen?

Hast du doch schon! Und bei so einem Bus darf man keine 
Serienterminierung verwenden!

> Oder zwischen Orange Pi Zero und TLC5940 Daisy Chain einen Logikbaustein
> der die Pegelwandlung 3,3V<>5V macht aber eine geringer Anstiegszeit
> macht?

Ist nicht nötig, zumal bei den Längen auch "langsame" HC Typen schon zu 
schnell sind. Man könnte was mit RC oder LC Filtern machen, dazu braucht 
man aber ein Oszi, um das gescheit messen zu können. Hast du eins?

von oszi40 (Gast)


Lesenswert?

Falk B. schrieb:
> Entweder noch ein Softwarefehler oder immer noch ein Problem mit der
> Signalqualität. Oder Lötfehler auf den einzelnen Platinen.

Tritt der Fehler immer an den gleichen LEDs auf?

von Patrick L. (crashdemon)


Lesenswert?

Falk B. schrieb:
> Und WO hast du die GENAU angebaut? Und warum 330Ohm, wenn im Link 220
> bzw. 240 Ohm verwendet und empfohlen wurden?

In dem Artikel stand das man das dopellte des Wellenwiderstandes nehmen 
soll. Da für Flachbandleitung der Wellenwiderstand laut Artikel bei typ. 
150 Ohm liegen soll habe ich mal 330 Ohm genommen. Sind dann auch sicht 
des Leiters ungefähr 160 Ohm.

Falk B. schrieb:
> Entweder noch ein Softwarefehler oder immer noch ein Problem mit der
> Signalqualität. Oder Lötfehler auf den einzelnen Platinen.

Kann natürlich sein, dass der Orange Pi Zero da Probleme macht. Soch 
richtig echtzeitfähig ist der mit dem RaspBian OS ja nicht. Vllt. gibt 
es da auch Timing-Probleme.

Falk B. schrieb:
> Hast du doch schon! Und bei so einem Bus darf man keine
> Serienterminierung verwenden!

Aber nicht an allen Signalleitungen. BLANK fehlt noch.

Falk B. schrieb:
> Ist nicht nötig, zumal bei den Längen auch "langsame" HC Typen schon zu
> schnell sind. Man könnte was mit RC oder LC Filtern machen, dazu braucht
> man aber ein Oszi, um das gescheit messen zu können. Hast du eins?

Ja, hab ein Oszi. Ich werde mal zusehen das ich mal ein paar Bilder 
mache.

oszi40 schrieb:
> Tritt der Fehler immer an den gleichen LEDs auf?

Ne, ist unterschiedlich

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Patrick L. schrieb:
>> Entweder noch ein Softwarefehler oder immer noch ein Problem mit der
>> Signalqualität. Oder Lötfehler auf den einzelnen Platinen.
>
> Kann natürlich sein, dass der Orange Pi Zero da Probleme macht. Soch
> richtig echtzeitfähig ist der mit dem RaspBian OS ja nicht.

Das ist egal, SPI braucht kein exaktes Timing, Hauptsache die Daten 
kommen in der richtigen Logik raus.

>> Hast du doch schon! Und bei so einem Bus darf man keine
>> Serienterminierung verwenden!
>
> Aber nicht an allen Signalleitungen. BLANK fehlt noch.

Das ist egal, denn das ist ein quasistatisches Signal und auch nicht 
flankensensitiv.

von Patrick L. (crashdemon)


Lesenswert?

Falk B. schrieb:
> Das ist egal, SPI braucht kein exaktes Timing, Hauptsache die Daten
> kommen in der richtigen Logik raus.

Ne, das ist kein SPI. Das ist Bit-Bang... Deswegen ist es sicherlich 
auch denkbar das da was nicht tut.

von Falk B. (falk)


Lesenswert?

Patrick L. schrieb:
> Falk B. schrieb:
>> Das ist egal, SPI braucht kein exaktes Timing, Hauptsache die Daten
>> kommen in der richtigen Logik raus.
>
> Ne, das ist kein SPI. Das ist Bit-Bang... Deswegen ist es sicherlich
> auch denkbar das da was nicht tut.

Mein Gott, aber genau DAS kann uns sollte man zuerst mit einem Oszi oder 
Logicanalyzer prüfen . . . . 8-0

Schon mal was von einer systematischen Inbetriebnahme und 
Fehlersuche gehört? Einfach was wild zusammenbauen und programmieren 
und dann hoffen, daß es sofort funktioniert, ist arg naiv.

Das Problem ist jetzt 10 Tage alt. In der Zeit hätte man schon verdammt 
viel messen und testen können.

: Bearbeitet durch User
von Patrick L. (crashdemon)


Lesenswert?

Ja, habe ich ja gemacht. Ich hatte schon zwei TLC in einer Daisy-Chain 
hinter einander geschaltet. Da hat das keine Probleme gemacht.

In diesem Verbau hatte ich mit dem Scope nie gemessen weil es keine 
Probleme gemacht hat.

Es scheint ja auch grundsätzlich zu funktionieren, weil:

- Die LEDs die selbe Farbe ausgeben wenn ich es möchte. Es gehen nur 
nicht immer alle an.

Ich habe nur eine Zwei-Kanal DSO deswegen kann ich nicht alle Signale 
gleichzeitig aufnehmen. Das was ich mir bis jetzt angesehen hatte sah 
bis auf ein paar Störungen beim Low-Pegel gan i.O. aus.

von Falk B. (falk)


Lesenswert?

Patrick L. schrieb:

> Ja, habe ich ja gemacht. Ich hatte schon zwei TLC in einer Daisy-Chain
> hinter einander geschaltet. Da hat das keine Probleme gemacht.

OK.

> In diesem Verbau hatte ich mit dem Scope nie gemessen weil es keine
> Probleme gemacht hat.

> Es scheint ja auch grundsätzlich zu funktionieren, weil:
>
> - Die LEDs die selbe Farbe ausgeben wenn ich es möchte. Es gehen nur
> nicht immer alle an.

Hmm.

> Ich habe nur eine Zwei-Kanal DSO deswegen kann ich nicht alle Signale
> gleichzeitig aufnehmen.

Muss man auch gar nicht. Es reicht, wenn man sich mit einem Kanal auf 
den Ladepuls bzw. Chip Select anklemmt und dort drauf triggert und mit 
dem 2. Kanal die einzelnen Signale nacheinander begutachtet. Sind ja nur 
die Daten und der Takt!

> Das was ich mir bis jetzt angesehen hatte sah
> bis auf ein paar Störungen beim Low-Pegel gan i.O. aus.

Tja, dann hast du wahrscheinlich nicht richtig gemessen und nicht genau 
genug hingesehen.

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.