mikrocontroller.net

Forum: Platinen Fragen zum Platinenlayout für Laufschrift


Autor: Daniel D. (wuzt)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Schönen guten Abend,

Ich Bastele momentan an einer LED Laufschrift mit insgesamt 672 LED's.
Angesteuert werden diese mit mehreren (insgesamt 42) 16-Kanal LED 
Treibern CAT4016.
Die CAT4016 sollen ihre Daten via SPI von einem STM32 bekommen.
da die Laufschrift eine Länge von ca. 2,4m haben soll, verwende ich 6 
gleichartige Platinen (400*300mm) welche Kaskadiert werden sollen.

Nun bin ich mir beim Layout der Platine aber bei mehreren punkten 
unsicher und hoffe das ihr mir da vielleicht Rat geben könntet.

Grober Aufbau der Platine:
Auf einer Platine befinden sich 7 CAT4016 LED Treiber mit jeweils 16 
LED's (insgesamt 112 LED's).
In der oberen linken Ecke befindet sich der Anschluss für die Daten 
Signale(Eingang) (von oben nach unten: BLANK, LATCH, CLK, DATA IN).
Der Daten Eingang führt auf einen 74HC125 (dieser soll mehr oder weniger 
die Datensignale Auffrischen, wollte nicht ein Ausgang vom µC direkt an 
42 IC's führen).
In der rechten oberen Ecke befindet sich der Daten Ausgang, welcher die 
Daten einfach an die nächste Leiterplatte weitergibt.
Auf diese Weise sollen 6 Platinen hintereinander geschaltet werden.
An die erste Platine kommt natürlich der µC und schaufelt die Daten 
rein.
Die Platine ist Einlagig, die Leitungen im Bottom Layer sind später 
Drahtbrücken.

Probleme:
1. EMV:
   Da ich mit Schaltplan/Layout Entwicklung noch relativ
   wenig Erfahrung habe
   kann ich nicht abschätzen ob bei meinem Layout nicht größere EMV
   Probleme auftreten. Falls ihr mir da Tipps geben könntet,
   was so gar nicht geht oder verändert werden sollte,
   wäre ich euch sehr dankbar.

2. Stabile Spannungsversorgung:
   als Spannungsquelle will ich das VLT130-3100 Schaltnetzteil von
   Pollin verwenden (Bestellnummer: 350 824) 3,3V/16A ; 5V/14A.
   Die 3,3V sollen auf die Platine geführt werden.
   Die Länge der Zuleitung vom Netzteil zur Platine beträgt max. 2x1,5m
   Meine Frage ist jetzt, muss ich auf der Platine selbst noch
   irgendwelche Puffer-Elkos vorsehen?
   Die LED's selbst werden mit jeweils 20mA betrieben macht bei
   112 LED's auf einer Platine 2,24A + einige mA
   für die restliche Schaltung.
   Für alle 6 Platinen (672 LED's) > 13A.
   Da könnte ich mir vorstellen das im Worstcasefall, wenn alle LED's
   gleichzeitig eingeschaltet werden, die Versorgungsspannung
   an den IC's zu stark einbricht.
   Ist es evtl. sogar sinnvoll auf die Platine selbst Spannungsregler zu
   packen?
   (müsste dann halt die 5V Leitung vom Netzteil als Quelle nehmen)

3. Propagation delay CLK to SOUT:
   Das letzte größere Problem das ich sehe,
   ist die kontinuierlich steigende Verzögerung des Datensignals
   zum Taktsignal.
   Das Taktsignal liegt an allen LED Treibern gleichzeitig (parallel) an
   (Verzögerung durch Leitungslänge außer acht gelassen),
   das Daten Signal wandert jedoch durch jeden LED Treiber.
   Die Verzögerung vom Datenausgang des CAT4016 zum Takt liegt laut
   Datenblatt bei 8-25ns (Typ.: 15ns).
   D.h. am Ausgang der Platine, also nach 7 Treiber IC's kommen die
   Daten ca. 105ns (max. 175ns) später an als der Takt.
   Am Ausgang der sechsten Platine
   hätte man schon eine Verzögerung von durchschnittlich 630ns
   (im Extremfall 1050ns).
   Das wiederum bedeutet ja das mein Takt <1MHz sein muss,
   weil ansonsten die Periodendauer des Taktsignals (1µs) kleiner ist
   als die maximale Verzögerung des Datensignals, sodas das Taktsignal
   das Datensignal überholt(was schlecht wäre).
   Als Zieltakt mit dem die Schaltung letztendlich
   betrieben werden soll habe ich max. 5MHz eingeplant(T=200ns),
   da die maximale Signal Verzögerung pro Platine bei 175ns liegt
   würde es also reichen am ende jeder Platine das Signal zu verzögern.
   Lange Rede wenig Sinn, ich Suche nach einer Möglichkeit
   das Taktsignal am Ausgang jeder Platine um 60-180 ns zu verzögern.

   Eine Idee wäre vllt. einen weiteren HC125 zu nehmen und dessen
   Propagationdelay zur Verzögerung zu nutzen,
   also Takt an Eingang 1 rein,
   gucken wie groß die Verzögerung am ersten Ausgang ist, falls zu klein
   einfach mit dem 2. Eingang verbinden und schauen wie groß das delay
   nach dem 2ten Ausgang ist etc. solange bis man ne halbwegs brauchbare
   Verzögerung erreicht hat.
   Aber so richtig toll finde ich die Lösung nicht,
   vor allem weil das delay dort auch wieder abhängig von Temperatur
   und wer weiß was ist.

   Eine andere Idee war nen Schmitt trigger 74HC14 mit Tiefpass am
   Eingang, nur leider hat das Taktsignal am Ausgang des
   Schmitt triggers nicht mehr das gleiche Tastverhältnis wie am
   Eingang.

Falls ihr da Ideen habt, immer her damit.

Vielen Dank im Voraus

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 3. Propagation delay CLK to SOUT:
> Das wiederum bedeutet ja das mein Takt <1MHz sein muss,
Richtig.

> Eine Idee wäre vllt. einen weiteren HC125 zu nehmen und dessen
> Propagationdelay zur Verzögerung zu nutzen, ...
> Aber so richtig toll finde ich die Lösung nicht, vor allem weil das
> delay dort auch wieder abhängig von Temperatur und wer weiß was ist.
Ja nun, das Delay durch den LED-Treiber dürfte auch nicht annähernd die 
Konstanz von PI erreichen...
tod Propagation delay time SOUT CLK to SOUT   min.8  typ.15  max.25 ns
Ich würde sagen: sieh mal solche "Verzögerungsleitungen" vor...

>    Als Zieltakt mit dem die Schaltung letztendlich
>    betrieben werden soll habe ich max. 5MHz eingeplant(T=200ns),
>    da die maximale Signal Verzögerung pro Platine bei 175ns liegt
Das ist letztlich egal, denn die Laufzeiten durch die Platine betreffen 
ja jedes einzelne Signal.

Auf die gesamte Länge betrachtet finde ich das Verhalten der Schaltung 
bzgl. Groundbouncing interessant, wenn mal alle LED gleichzeitig ein- 
bzw. ausgeschaltet werden.
Da müssen garantiert noch ein paar Pufferelkos rein, nur sehe ich da 
keine optimale Ankopplung, weil so viele Kupferinseln herumfahren...

Ich würde da auf jeden Fall noch eine (Serien-)Terminierung jeweils nach 
den Treibern IC2 vorsehen. Wenn die nicht nötig ist, dann kannst du 
immer noch eine Brücke reinlöten...

Schalte mal das unnötige Kupferfüllen ab (Orphans). Erst dann siehst du, 
wo wirklich eine Verbindung irgendwohin besteht. Einfach so Kupfer 
stehen zu lassen ist in erster Linie eine Antenne, die in beide 
Richtungen (senden+empfangen) wirken kann...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Daniel D. (wuzt)

>Der Daten Eingang führt auf einen 74HC125 (dieser soll mehr oder weniger
>die Datensignale Auffrischen, wollte nicht ein Ausgang vom µC direkt an
>42 IC's führen).

Erstmal richtg, so aber nur halbgar. Du hast vier Signale

Latch
CLK
SIN
SOUT

Latch und CLK gehen parallel an alle 42 (sic!) Schieberegister. Dort 
braucht man Dampf, vor allem bei CLK. So ein Kaskadieren ist da nicht 
sehr sinnvoll, vor allem wegen der akkumulierenden Verzögerung der 
Gatter. Besser ist hier gleich ein guter, differentieller Treiber.
Nimm einen RS485 Baustein ala MAX488 und nimm den als CLK und LATCH 
Treiber. Die Leitung (differentiell) geht dann direkt an alle Boards 
direkt, kein Kaskadieren. Am Ende die Leitung ganz normal parallel 
Terminieren, wie im Lehrbuch, siehe Wellenwiderstand. Auf dein Board 
kommen dann zwei Empfänger ala MAX488 für LATCH und CLK, keine 125er.
SIN geht direkt an deinen MC, denn der muss ja nur EINEN IC treiben. 
Genauso wie der letzte IC auf dem Board nur EINEN IC vom nächsten 
treiben muss. Alles easy. Aber bitte auch hier Das Signal mit Masse 
verdrillt führen, siehe Artikel oben.

Dann passt das schon.

>1. EMV:

>2. Stabile Spannungsversorgung:
>   Die 3,3V sollen auf die Platine geführt werden.

Kann man manchen, bedenke aber dann dass du MASSIVE Querschnitte 
brauchst. Bei 3,3V und 13A kannst du dir nur wenig Spannungsabfall 
leisten, ich sag mal max. 0,3V. Den Rest kannst du selber ausrechnen.

>   Meine Frage ist jetzt, muss ich auf der Platine selbst noch
>   irgendwelche Puffer-Elkos vorsehen?

Ja, Pi mal Daumen 470uF pro Board.

>   Ist es evtl. sogar sinnvoll auf die Platine selbst Spannungsregler zu
>   packen?
>   (müsste dann halt die 5V Leitung vom Netzteil als Quelle nehmen)

Kann man machen, ist aber nicht zwingend.

>3. Propagation delay CLK to SOUT:
>   Das letzte größere Problem das ich sehe,
>   ist die kontinuierlich steigende Verzögerung des Datensignals
>   zum Taktsignal.

Irrtum. Alle Schieberegister werden annähernd gleichzeitig getaktet, 
lediglich die Laufzeitverzögerung des Taktes auf der Leitung spielt eine 
kleine Rolle. Damit kann man nahezu beliebig viele ICs kaskadieren, 
deine 42 Stück sind kein Problem, ebenso wie deine 5 MHz.

>   Das Taktsignal liegt an allen LED Treibern gleichzeitig (parallel) an

In deinem Entwurf nicht, da kommen noch massig Verzögerungen durch deine 
"Auffrischtreiber" rein, so ca. 6x10ns.

>   Die Verzögerung vom Datenausgang des CAT4016 zum Takt liegt laut
>   Datenblatt bei 8-25ns (Typ.: 15ns).

Das akkumuliert sich aber zum Glück nicht. Die Register schalten 
GLEICHZEITIG.

>   D.h. am Ausgang der Platine, also nach 7 Treiber IC's kommen die
>   Daten ca. 105ns (max. 175ns) später an als der Takt.

Nein.

>   Am Ausgang der sechsten Platine
>   hätte man schon eine Verzögerung von durchschnittlich 630ns
>   (im Extremfall 1050ns).

Nein, es ist alles synchron, KEIN Ripple-Counter ala 4040!

>   Das wiederum bedeutet ja das mein Takt <1MHz sein muss,

Nein, siehe oben.

>   Lange Rede wenig Sinn, ich Suche nach einer Möglichkeit
>   das Taktsignal am Ausgang jeder Platine um 60-180 ns zu verzögern.

Nein, suchst du nicht. Du musst synchrone Systeme verstehen lernen. 
Solche Verzögerungssachen sind zu 99% Unsinn.

>   Aber so richtig toll finde ich die Lösung nicht,
>   vor allem weil das delay dort auch wieder abhängig von Temperatur
>   und wer weiß was ist.

Genau so sieht es aus!

MfG
Falk

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Lothar Miller (lkmiller) Benutzerseite

>Ich würde sagen: sieh mal solche "Verzögerungsleitungen" vor...

Eieiei Lothar, solche Enpfehlungen von DIR? Bist wohl noch nicht 
ausgeschlafen?

Solche Verzögerungen sind zu 99% Unsinn!

>Auf die gesamte Länge betrachtet finde ich das Verhalten der Schaltung
>bzgl. Groundbouncing interessant, wenn mal alle LED gleichzeitig ein-
>bzw. ausgeschaltet werden.

Wohl wahr, das kann interessant werden. Darum auch differentielle 
Taktverteilung. GGf. muss man sogar die Daten differentiell von Board zu 
Board schaffen.

>Ich würde da auf jeden Fall noch eine (Serien-)Terminierung jeweils nach
>den Treibern IC2 vorsehen.

Lothar, was'n los? Serienterminieung für Multidrop Takte ist ein No-Go!

MFG
Falk

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner schrieb:
>>Ich würde sagen: sieh mal solche "Verzögerungsleitungen" vor...
> Eieiei Lothar, solche Enpfehlungen von DIR? Bist wohl noch nicht
> ausgeschlafen?
Ist ja noch früh am Morgen... :-o
Der Knackpunkt ist das:
>> Das akkumuliert sich aber zum Glück nicht.
Es zählt also begrenzend für die maximale Taktfrequenz immer nur die 
eine einzige Verzögerung vom SOUT zum nächsten SIN.

Falk Brunner schrieb:
> Lothar, was'n los? Serienterminieung für Multidrop Takte ist ein No-Go!
Ich bin mir bei der Konstellation hier überhaupt nicht sicher, wie sich 
das Ganze verhalten wird. Daher besser zwei Pads zuviel als hinterher 
alles aufgetrennt. Und in der Praxis hilft lustigerweise (auch mit 
ungeklärten theoretischem Hintergrund) ein Serienwiderstand auch bei 
mehreren Teilnehmern...  :-o

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, noch ein Kommentar zum Layout. Wie bereits gesagt sind 
potentialfreie Flächen meist Unsinn bis kontraproduktiv. Also 
ausschalten. Bzw. per Lötbrücken an die Masse anbinden.
Zweitens sollte man die Leitungen zu den LEDs näher zusammenrücken, 
jetzt kann man ja dort ein Schwein durchtreiben. Und dann verlegt man 
die Leitungen zu den LEDs so, dass sie immer bis an die VCC-Leitung 
rangehen. Damit vrschwinden automatisch die losen Kupferflächen und die 
Massefläche wird breiter. Auch gut.
Deine großen Lötaugen als Befestigungspunkte zu missbrauchen ist keine 
gute Idee. Nimm richtige Bohrungen aus der lib holes, im Layout 
einfügen. So eine Platine muss ordentlich montiert werden.
Stichwort Verlustleistung. Wenn du das alles mit 3,3V betreiben willst, 
ist dir hoffentlich klar, dass deine LEDs max. 2,9V Flußspannugen haben 
dürfen, der IC braucht min. 0,4V selber. Also nix mit blau, weiß oder 
Ultrahell, siehe LED. Und bei 20mA/Kanal sowie grünen LEDs mit ~2,2V 
bleiben 16x20mA=320mA * 1,1V = 352mW im IC hängen. Bei höheren Strömen 
noch mehr. Komisch, das Ding hat ausser im QFN gehäuse kein Thermal Pad, 
so wie die Kollegen ala TLC5921 & Co von TI. Dennoch würde ich die 
Massefläche unter dem IC maximieren, die VCC-Letung minimieren und an 
die Seite schieben und den IC mit einem Klecks Wärmeleitpaste auf die 
Platine löten.

So, genug gemeckert ;-)

Autor: Daniel D. (wuzt)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vielen dank für eure Hilfe

@ falk
Das Layout werde ich, wie von dir empfohlen, Anpassen.
Als Spannungsversorgung werde ich dann wohl doch direkt 5V auf die 
Platine legen, mit entsprechenden Elkos.
Als Bus Treiber hab ich mir erst mal den SN75176B Rausgesucht(oder 
spricht irgendwas gegen diesen?), der ist deutlich Preiswerter als die 
MAX488 Reihe.

>Latch und CLK gehen parallel an alle 42 (sic!) Schieberegister. Dort
>braucht man Dampf, vor allem bei CLK. So ein Kaskadieren ist da nicht
>sehr sinnvoll, vor allem wegen der akkumulierenden Verzögerung der
>Gatter. Besser ist hier gleich ein guter, differentieller Treiber.
>Nimm einen RS485 Baustein ala MAX488 und nimm den als CLK und LATCH
>Treiber. Die Leitung (differentiell) geht dann direkt an alle Boards
>direkt, kein Kaskadieren. Am Ende die Leitung ganz normal parallel
>Terminieren, wie im Lehrbuch, siehe Wellenwiderstand. Auf dein Board
>kommen dann zwei Empfänger ala MAX488 für LATCH und CLK, keine 125er.
>SIN geht direkt an deinen MC, denn der muss ja nur EINEN IC treiben.
>Genauso wie der letzte IC auf dem Board nur EINEN IC vom nächsten
>treiben muss. Alles easy. Aber bitte auch hier Das Signal mit Masse
>verdrillt führen, siehe Artikel oben.

Entspricht der Schaltplan im Anhang so ungefähr deinem Vorschlag? (ist 
natürlich nicht komplett, will nur wissen ob das vom Prinzip her richtig 
ist, vor allem die Terminierung)
Falls das so passt, wie sollte dann die Leitung vom "Master" Bus Treiber
zu den anderen aussehen? Muss ich da zwangsläufig mit twisted-pair 
Leitungen ran, oder gibt es da eine Möglichkeit das per Leiterbahnen auf 
den Platinen zu regeln?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Daniel D. (wuzt)

>Als Bus Treiber hab ich mir erst mal den SN75176B Rausgesucht(oder
>spricht irgendwas gegen diesen?),

Nur der Stromverbrauch. Aber der fällt bei 13A nicht mehr ins Gewicht.

>Entspricht der Schaltplan im Anhang so ungefähr deinem Vorschlag?

Ja.

>Falls das so passt, wie sollte dann die Leitung vom "Master" Bus Treiber
>zu den anderen aussehen? Muss ich da zwangsläufig mit twisted-pair
>Leitungen ran,

Nein, nicht auf der Platine.

> oder gibt es da eine Möglichkeit das per Leiterbahnen auf
> den Platinen zu regeln?

Sicher. Zieh das sauber linear durch, daneben die Masse. Dann passt das.

MFG
Falk

Autor: Daniel D. (wuzt)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So, ich bins nochmal, ich hab Schaltung und das Layout jetzt angepasst,
habe die beiden Leitungspaare CLK und Latch komplett parallel 
durchgezogen und mit Masse umgeben. Am ende (Ausgang) der letzten 
Platine werde ich dann jeweils einen 120 Ohm Abschlusswiderstand 
platzieren.
Die beiden "Master Bustreiber" werde ich auf eine kleine extra 
Leiterplatte packen die direkt an den Eingang der ersten Platine kommt 
(evtl. gleich noch mit entsprechenden Buchsenleisten um das Stm32 
Headerboard einzustecken).
Alle großen Flächen sind jetzt mit Masse verbunden.
Habe 3x220µF Pufferkondensatoren hinzugefügt.
Die Ausgänge der beiden Bustreiber (CLK u. Latch) haben am ende eine 
AC-Terminierung (erstmal 100pF + 100 Ohm, weiß nicht so recht wie man 
die Perfekte/Korrekte Terminierung ermittelt).
Die Stichleitungen sind relativ lang, ist das sehr schlimm?

MfG. D.D.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Daniel D. (wuzt)

>So, ich bins nochmal, ich hab Schaltung und das Layout jetzt angepasst,

Sieht gut aus, sollte passen.

>AC-Terminierung (erstmal 100pF + 100 Ohm, weiß nicht so recht wie man
>die Perfekte/Korrekte Terminierung ermittelt).

Probieren und Messen.

>Die Stichleitungen sind relativ lang, ist das sehr schlimm?

Naja, nicht schön, sollte aber trotzdem gehen. Aber man kann wenigsten 
die Taktleitung DEUTLICH näher ranrücken und dafür den anderen Kram 
wegrücken. Da spart man locker 2/3 der Stichleitung ein!

MFG
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.