Hallo, ich habe vor eine lange LED Leiste mit dem TLC5922 (SPI) anzusteuern. Eine Leiste ist dabei 50cm lang und gibt das Signal daisy-chained an die nächste weiter. Für drei Leisten (1,5 Meter) läuft hier schon alles. Das ganze soll jetzt über mehrere Meter (mindestens 20) funktionieren. Da ist klar, dass das nicht ohne Signalverstärkung und Terminierung funktionieren kann. Jetzt habe ich mir also überlegt auf jede Platine 4 Transistoren zu platzieren um das Signal nach Bedarf verstärken zu können. Jedoch bin ich mir weder sicher ob ich die richtige Transistorschaltung verwende, noch ob die Dimensionierung nicht völlig daneben liegt. Am liebsten würde ich die Widerstände noch um den Faktor 10 erhöhen. Wäre super wenn sich das mal jemand angucken könnte. Grüße Kai
Pro Stufe gehen 0.6V über die Basis-Emitterstrecke verloren. So geht das also schon mal nicht. Nimm Schmitt-Trigger ala 74HC14.
danke für den Hinweis, ich glaube ich werde Transistoren nie richtig verstehen :( Laut Datenblatt ist der 74HC14 ein inverting schmitt trigger, ich werde aber wohl einen "normalen" brauchen. Oder gibt es die nur invertierend und ist deshalb ein OPV besser? Wichtig ist, dass es das Teil in SMD gibt und, dass es so klein ich möglich ist, meine Platine ist nur 12mm breit und schon sehr voll. Gruß Kai
Ich werde auf deine Stelle ein 74AC244 als BUS-Treiber(+-24mA) verwenden. Das ist auf jeden Fall bessere Lösung als von dir vorgeschlagene Transistorstufe.
den Baustein finde ich jetzt allerdings weder bei Reichelt, noch bei TME Was spricht denn gegen die Schmitt Trigger? Ich habe doch gar keine Tri-State, daher sollten die doch locker reichen. Kann mir jemand eine Bauteilbezeichnung nennen, ich habe bisher nur invertierende gefunden Gruß Kai
Hallo, nimm 7407 oder 74LS07, die haben OpenCollector-Ausgänge und können bis 40mA treiben. Als Kollektor-Arbeitswiderstand würde ich in deinem Fall dann 270 Ohm nehmen. Gruß Udo
Die Transistorstufe ist schon deshalb problematisch, weil sie entweder wie hier gezeigt stark asymmetrisch ist (Transistor rauf, 1K Widerstand runter) oder reichlich Strom braucht (100 Ohm pulldown statt 1K). Schon mal daran gedacht, RS422 Transceiver zu verwenden (26LS31/32 oder irgendwelche SN75xxx/MAX4xx)? Ist m.E. auch nicht aufwendiger, zumal die dann nicht als Zwischenverstärker dienen, sondern bis auf die Datenleitung ein einziger Gesamtbus entsteht. Viel mehr Kabel sind es auch nicht, denn bei unsymmetrischer Übertragung braucht du bei der Länge auch 2 Leitungen pro Signal.
Der 74LS07 scheint schonmal nicht schlecht, das einzige, was mich noch stört ist, dass er PullUps braucht :( Ideal wäre es für mich wenn ich den Treiber nur alle 2-3 Leisten bestücken müsste und den Rest mit Lötbrücken anstelle des Treibers. Wieso gibt es denn keine nicht-invertierenden Schmitt Trigger? Also vom Prinzip ein invertierender und ein Nicht-Gatter in einem Chip. Irgendwelche MAXe oder Co kommen eher nicht in Frage, weil die vom Prinzip her zu teuer sind und da ich 50-60 Leisten bauen will, fällt das schon irgendwann ins Gewicht. @Andreas: was meinst du mit asynchron?
Kai Franke wrote: > Wieso gibt es denn keine nicht-invertierenden Schmitt Trigger? Weil in den 70ern wohl niemand solche Leisten gebaut hat und dafür nicht invertierende Schmitt-Trigger brauchte. Und danach hat sich bei den ICs für Standard-Logik zwar die Technik geändert, an den Funktionen jedoch nur noch wenig. Und weil zwar sicherlich mancher irgendwelche dringend benötigten Bausteine für was auch immer gebaut hat, die aber regelmässig 5-10 mal so viel kosten wie die weit verbreiteten Standardbausteine. > Prinzip her zu teuer sind und da ich 50-60 Leisten bauen will, fällt das > schon irgendwann ins Gewicht. Die 26LS31/32 kosten bei R 30 Cent.
Kai Franke wrote:
> @Andreas: was meinst du mit asynchron?
Wenn du mich meinst: Dieses Wort habe ich nicht verwendet.
sorry, meinte asymmetrisch und ich habe tatsächlich non-inverting Schmitt Triggers gefunden, allerdings nur bei alldatasheet und in keinem Shop :(
Die Transistorschaltung zieht mit wenigen Ohm rauf, mit 1K Ohm runter. Wenn da 20m Kabel dranhängen, dann hast du bei der fallenden Flanke einen Tiefpass von ungefähr 1K Ohm / 2nF. Dafür ist die ansteigende Flanke sehr schön steil und benötigt daher eine Terminierung. Beim 7407 ist es genau andersrum. Langsame Flanken sind akzeptabel, wenn keiner der Bausteine auf der betreffenden Flanke triggert. Ansonsten entsteht eine deutliche Unsicherheit (jitter) bei der Flankenerkennung, was bei Schieberegisterketten (HC595, TLC592) zu Problemen führen kann wenn Kaskadeein- und Ausgang auf die gleiche Flanke reagieren - mit dem CD4094 ist man in der Hinsicht aufgrund seines um einen halben Takt verzögerten Kaskadeausgangs besser dran.
Also . . . Transistorbastellösung -> Nicht wirklich in Stufen kaskadierbar, ausserdem langsamer als man denkt -> nischt OPV -> nischt (hallo, wir reden über flinke Digitalsignale) 74AC244 -> Schuss ins Knie, weil viel zu schnell, der schreit nach Terminierungsproblemen, ausserdem stark asymetrisch bei LOW/HIGH, siehe Wellenwiderstand Einfachste und solide Lösung. EIN 74HC04 treibt ALLE Takteingänge direkt. Ja liebe Kinder das kann er. Die Leitung wird am Ende AC terminiert mit 50..120 oHm + 220pF. Das sollte funktionieren. MFG Falk P.S. Ach ja, die Taktleitung bitte nciht als 0815 Klingeldraht ziehen, sondern wenn schon als ordentlich verdrillten Klingeldraht. Oder Ethernetkabel nehmen, CAT3 reicht dicke. Siehe Artikel Wellenwiderstand
Hallo, jetzt hatte ich mich gerade gefreut, dass ich einen günstigen Leitungstreiber gefunden habe 74HC126, der auch schön klein ist und für vier Signale gedacht ist, da muss ich lesen, dass es wohl Probleme mit der Terminierung gibt. @Falk: meinst du ich soll direkt an die Ausgänge vom Controller einen 74HC04 hängen, der dann alle 20 Meter durchtreiben kann? Ich hab da so meine Bedenken, dass auf dem Weg irgendwo Störsignale eingefangen werden. Wäre es nicht sicherer einen Leitungstreiber auf jede Platine zu basteln und mit einem Serienwiderstand zu terminieren? PS: Als Datenkabel ist ein RJ12 Kabel gedacht.
Falk Brunner wrote: > Einfachste und solide Lösung. EIN 74HC04 treibt ALLE Takteingänge > direkt. Ja liebe Kinder das kann er. Die Leitung wird am Ende AC > terminiert mit 50..120 oHm + 220pF. Das sollte funktionieren. Alle 60 Stück an zig Meter Leitung? Sicher, er wird nicht kaputt gehen. Ich habe allerdings die Sorge, dass der Jitter bei der Erkennung des Taktes durch die langsame Flanke so gross wird, dass die korrekte Weitergabe der Daten vom einen Modul zum nächsten nicht mehr gesichert ist: Wenn durch den Jitter das Modul (n+1) die Daten erst reintaktet, wenn das Modul (n) sie schon rausgetaktet hat, dann wird's lustig.
Kai Franke wrote:
> PS: Als Datenkabel ist ein RJ12 Kabel gedacht.
Man neigt dazu, bei solchen Leitungen pro Signalleitung eine
Masseleitung vorzusehen. Bei Leitungen, bei denen eine durch
Übersprechen ausgelöste Störung etwas bewirken kann (beispielsweise dem
Takt), ist das dringend anzuraten.
Falk Brunner wrote: > 74AC244 -> Schuss ins Knie, weil viel zu schnell, der schreit nach > Terminierungsproblemen, ausserdem stark asymetrisch bei LOW/HIGH Dass man mit dem 74AC244 arg in HF rumspielt und mit Wellenwiderstand und Terminierung kämpft ist klar. Aber dass der stark asymmetrisch sei, das offenbart sich mir nicht.
Ein weiterer Grund warum ich in jede Platine einen Treiber verbauen will ist, dass der TLC5922 laut Datenblatt selbst bis zu 300ns propagation time braucht, damit nach einem SCKL Signal die Daten am SOUT anliegen. Ich bin mir zwar nicht sicher ob das nicht vielleicht ein Tippfehler ist, weil der TLC5924 nur 30ns braucht, aber auch das würde sich irgendwann aufaddieren. Durch einen Treiber würde ich sozusagen auch in die anderen Leitungen ein kleines delay einbauen. Für eine Masseleitung ist leider kein Platz mehr, da RJ12 nur 6 polig ist, ich habe aber eine VCC Leitung drin.
Kai Franke wrote: > aber auch das würde sich irgendwann aufaddieren. Da addiert sich garnichts, das Zeug arbeitet synchron zu einem gemeinsamen Takt. Die takten ja alle so um den gleichen Dreh herum (siehe oben bzgl. Jitter). Wenn die 300ns stimmen, dann hast du im Gegenteil sogar entsprechend weniger Risiko durch Jitter, denn je grösser das Clk-to-Data Delay, desto grösser die zulässige Taktabweichung. Vielleicht ist das also sogar Absicht. > Für eine Masseleitung ist leider kein Platz mehr, da RJ12 nur 6 polig > ist, ich habe aber eine VCC Leitung drin. Dann achte wenigstens drauf, dass im Kabel links und rechts vom Takt nichts liegt, was sich in der Datentransferphase bewegt und was seinerseits ein paar Störungen durch Übersprechen vom Takt nicht weiter krumm nimmt.
hast Recht, war ein Denkfehler. Dann denke ich mal, dass nichts dagegen spricht einen Treiber mit Serienterminierung alle 2-3 (ausprobieren) Platinen zu setzen. Sollte es gar nicht gehen, kann ich immer noch auf die Variante von Falk umsteigen. Andersherum wäre das leider nicht möglich. Vielen Dank für eure Hilfe Gruß Kai
Serienterminierung ist ein prima Idee, wenn man genau einen Absender am einen Ende und genau einen Empfänger am anderen Ende hat. Zwischendrin sollte man sich die Leitung lieber nicht ansehen ;-). Siehe http://www.mikrocontroller.net/articles/Wellenwiderstand#Serienterminierung. Nö, entweder implementierst du deine aktive Daisy Chain in jedem Knoten, mindestens für den Takt, dann ist Serienterminierung ok. Oder du zapfst die Taktleitung auch mal zwischendrin an, dann brauchst du einen Abschluss am Ende.
Den Artikel vom Wellenwiderstand hab ich mir schon durchgelesen, allerdings habe ich wohl Serien- und Parallelterminierung verwechselt. Ich wollte eine Parallelterminierung machen, aber eben nur auf den Platinen, auf denen tatsächlich ein Treiber verbaut ist. Meinst du es reicht, wenn ich nur das SCLK Signal verstärke und den Rest wie MODE, BLANK und CS einfach komplett durchziehe? Ich poste dann zur Sicherheit auch gleich mal einen Schaltplan, wie gesagt, ich will gleich 100 Stück bestellen.
Prima Ansatz. Platine designen, 100 Stück bestellen, nix vorher ausprobiert haben, nur um festzustellen, dass es doch nicht so funktioniert, 100 Platinen wegschmeissen. Herrje nein. Wenn man sich nicht selbst einigermassen sicher ist, probiert man das aus. Wozu sind Breadboards oder Lötpunktrasterplatinen denn da? Also: Probier die Lösungen aus, teste sie durch mit unterschiedlichen Längen und Methoden, dann bist du hinterher klüger. Müssen ja nicht alle 50 in voller Länge sein, aber ein paar Stück schon, damit du weisst ob das Prinzip einigermassen stabil funktioniert. Mit Oszi mal in die Leitungen reinhorchen zu können ist natürlich von Vorteil.
Ich habe ja schon 3 Platinen auf Lochraster aufgebaut, die funktionieren auch. siehe hier(externer Link): http://www.myvideo.de/watch/4258285/Moodlight_fuer_Wohnzimmer_Bar_Disco Das Signal werde ich mir auch mal bald anschauen, muss dazu nur zu jemand anders, weil ich hier kein Oszi hab. Bei den aufgebauten Platinen lasse ich eben noch alles von einem mega8 treiben ohne jegliche Signalaufbereitung. Die Schaltung funktioniert also soweit schon, nur brauche ich eben noch etwas für die Länge. Um Auszuprobieren ob das jetzt auch mit 20 Treibern noch funktioniert, brauche ich eben die Platinen.
Probier aus, ob es mit der Länge, Art und Qualität von Kabel geht, die du hinterher zwischen den Nodes einsetzen willst. Darum geht es doch.
Hallo nochmal, nach langem Datenblätter wälzen und berechnen der eventuell nötigen Terminierung bin ich auf folgendes Ergebnis gekommen: Ich lasse jegliche Terminierung sein und versehe alle 3-4 Platinen mit einem 4050. Das ist ein 6 Bit HEX Buffer, der genau die Transition Time hat, die ich mir gewünscht habe: zwischen 50 und 100ns. Dadurch brauche ich nur alle paar Meter einen neuen Treiber setzen und habe keine nennenswerten Reflektionen (zumindest laut dem Artikel über den Wellenwiderstand) Damit spare ich mir jeglichen Widerstände zum Terminieren und Strom gleich noch dazu, weil ich wohl eine parallel Terminierung gebraucht hätte. Die Bausteine werden gleich morgen bestellt und getestet. Ich berichte dann wie es ausgegangen ist Gruß Kai
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.