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
> 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...
1 | 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...
@ 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
@ 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
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
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 ;-)
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?
@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
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.
@ 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.