Hier stelle ich Schaltpläne, Teilelisten etc. für einige LED-Lichtobjekte mit TTL-Gattern vor. Nette kleine Feierabend-Bastelprojekte, zwei der drei kommen sogar ohne programmierbare Bauteile aus!!!
"Der springende Punkt"
Ansicht (Klicken für Großbild)
Schaltplan (Klicken für Großbild)
Eine LED springt wie ein Flummi im Viereck herum.... :-)
Grundsätzliche Funktionsweise:
Der Counter IC2 steuert über den 1aus3-Decoder IC3 (active low) die Zeilen zweier 5x7 LED-Punktmatrixmodule an, der Counter IC7 über die beiden Decoder IC5 und IC6 (active high) die Spalten der beiden Punktmatrixmodule. Der mit einem Inverter von IC1 aufgebaute Oszillator liefert für Reihe und Spalte den selben Takt (ca.19Hz). Da, wo Spalte und Zeile gleichzeitig aktiv sind, leuchtet die LED in den Anzeigemodulen.
Damit der "Springende Punkt" (die leuchtende LED)an den Grenzen der Anzeigemodule "reflektiert" wird, ist mit den beiden Flipflops aus IC4 eine Umschaltung der Zählrichtung für die beiden Counter realisiert:
Wenn die letzte LED in der Spalte oder Reihe aktiviert wird, wird die Zählrichtung umgekehrt. Da die Decoder IC5 und IC6 High-aktive Ausgänge haben, mussen die Set- und Reset-Signale für die Flipflops noch invertiert werden.
Scope-Plot für den Zeilen-Counter (Z0-Z2) sowie Clock, /CTEN und Zeile_Up/Down)
Feinheiten:
1.) Es kann sein, dass der Counter IC7 z.B. beim Zählerstand 12 startet - dann würde keine LED angesteuert, da nur die Zählerstände 0..9 dekodiert werden - über den Kondensator und Wiederstand am /LOAD-Eingang wird beim Power-On der über A,B,C und D eingestellte Zählerstand geladen: die Zahl "4", die immer im dekodierten Bereich liegt.
2.) Je nach Stand des Zeilen-Zählers stellt sich immer der selbe sich wiederholende Verlauf ein, der nicht alle LEDs einbezieht - daher wird der /CTEN (Count Enable)-Eingang des Counters IC2 immer dann nach High gehalten, wenn die letzte Spalte erreicht wird (sieht man gut im obigen Scope-Plot: Der Counter setzt immer für einen Takt aus). Das hat zur Folge, dass der "springende Punkt" nicht genau im Winkel von 45 Grad reflektiert wird, sondern erst einen Punkt gerade von der "Wand" abprallt und dann erst im Winkel von 45Grad weiterfliegt. Diesen Kunstgriff sieht man nahezu kaum, er führt aber dazu, dass alle LEDs der Anzeigemodule in das Pingpong einbezogen werden.
Spannungsversorgung: 5V, ca.30mA. Am einfachsten mit 'nem 7805, zwei Kondensatoren 100uF/16V und einem Steckernetzteil.
Die Schaltung ist zwar schon etwas komplexer, lässt sich aber noch mit Fädeldraht aufbauen. (Zeitbedarf: Ein verregneter Sonntag....) Viel Spaß beim Nachbau!
Stückliste:
IC 1: CD4093 (4 NAND mit Schmitt-Trigger) IC 2,7: 74HCT191 (Presetable Up/Down-Counter) IC 3: 74HCT138 (1aus3 Decoder) IC 4: 74HCT74 (2 D-Flipflops) IC 5,6: 74HCT238 (1aus3 Decoder) LED-Matrix: Kingbright TA12-11 Dioden: 7x1N4148 Widerstaende: 7x220R 2x4k7 Kondensatoren: 1x22uF, 10V 1x10uF, 10V sonstiges: 5xSockel 16polig 2xSockel 14polig 1xSockelleiste einreihig (für die Matrix-Module) Spannungsversorgung
H A L ;-)
Ansicht (Klicken für Großbild)
Schaltplan (Klicken für Großbild)
Eagle-Schaltplan (allerdings ziemlich gestümpert)
Grundsätzliche Funktionsweise:
Wieder mal eine LED-Matrix. Diesmal sieht es aus wie ein Computer in alten Spielfilmen: Irgendwie systematisches Blinken...
Die beiden Oszillatoren rund um die Schitt-Trigger-NAND-Gatter 4093 erzeugen zwei unterschiedliche Taktfrequenzen, mit denen die beiden Binärcounter 74LS/HCT161 angesteuert werden. Die Reihen werden über die 4 Transistoren BC 548 angesteuert, die Spalten über den Open Collector-Treiber 7407.
Versorgungsspannung 5V, mindestens 300mA (wenn alle LEDs angeschaltet sind)
Stückliste:
IC 1: 7407 (Driver) IC 2: CD4093 (4 NAND mit Schmitt-Trigger) V 1,2: 74HCT161 (Presetable Counter) T1-T4: BC548C LEDS: 20xRot oder gemischt Widerstaende: 20x220R 1x4k7 1x3k9 Kondensatoren: 3x100uF, 10V 1x100nF sonstiges: 2xSockel 16polig 2xSockel 14polig Spannungsversorgung 5V
Danke an Christian S. für das Feedback! Hier ein Nachbau von Queckulatius auf flickr.
Ansicht (Klicken für Großbild)
THIS IS A TEST...
Ansicht (Klicken für Großbild)
Part 1: Die Hardware:
Eine einfarbige 8x15 LED-Matrix (LED 1 - LED 3), die per Multiplex mit Daten aus einem EPROM (IC 2) (...die ich seit den ganzen Flash-Controllern haufenweise ungenutzt im Keller rumliegen habe) Grafikdaten darstellt. (Sofern man bei 8x15 Pixeln von "Grafik" sprechen kann.) Über eine Mini-PWM werden sogar 2 Helligkeitsstufen pro "Pixel" unterstützt. Die Refreshrate beträgt flackerfreie 100Hz und wird durch R1,R2 und C1 am Spaltencounter (IC 4) bestimmt: 100Hz x (15 sichtbare + 1 unsichtbare) Spalte x 2 Helligkeits-Zeitschlitze = 3,2kHz Oszillatorfrequenz. Die Framerate ist einstellbar - das ist das * im Schaltplan - durch die Wahl zwischen Pin 1,2,3 oder 13, entsprechend Q14, Q13, Q12 oder Q10 des Spaltencounters IC 4 als Clock-Quelle für den Framecounter IC 1 Pin 1.
Die "unsichtbare" Spalte entsteht dadurch, daß 16 Spalten dekodiert werden, aber die Displays insgesamt nur 15 Spalten haben.
Die beiden Counter sind sogenannte Ripple-Counter: Wenn man die Signale digital weiterverarbeiten wollte, hätte man in der Tat mit ziemlichen Ripple auf den Zählerausgängen zu kämpfen - hier in der Schaltung stört der Ripple kaum, weil das menschliche Auge so schön träge ist. (Beim Einstellen eines Triggers auf dem Scope nervt es allerdings schon... ;-) )
IC 7 und IC 8 selektieren anhand des 4-Bit-Spaltenwertes an ihren Eingängen eine Spalte, deren Kathoden von den Spaltentreibern IC5 und IC 6 an Masse gelegt werden.
Die Ausgänge des EPROMS (IC 2) werden über den 8-Bit Treiber IC 3 auf echte 5 Volt gebracht, damit die in Kollektorschaltung arbeitenden Zeilentreiber-Transistoren an Ihren Emittern echte 5,0V - Uce_sat erreichen.
Der Trick mit den zwei Helligkeitsstufen kommt daher, dass pro "Spalten-Zeitschlitz" zwei "Reihen-Zeitschlitze" zur Verfügung stehen: Die unteren 5 Adressleitungen des EPROMS werden auf 4 Spaltenadressen gemappt. Wenn im EEPROM also an jeweils einer geraden und ungeraden Adresse hintereinander ein Bit gesetzt ist (in der Abbildung unten z.B. Bit 1 in den Adressen 4 und 5), leuchtet die entsprechende LED über die ganze Spaltenzeit (= mit voller Intensität), wenn nur ein Bit gesetzt ist (Bit 5 in Adresse 7) leuchtet die LED nur die halbe Spaltenzeit (also mit halber Intensität.)
Soweit die Theorie... so ganz klappt das mit der halben Intensität dann allerdings nicht, da das Auge kurze Lichtblitze heller wahrnimmt als längere. Die großen Dotmatrix-Videodisplays machen daher noch eine Farb- und Helligkeitskorrektur, arbeiten aber im Prinzip genauso wie die "Moviematrix". Genaueres dazu kann man in der sehr guten Application Note 1216 von Agilent Technologies nachlesen.
Entstehung der zwei Helligkeitswerte
Die Spannungsversorgung ist relativ anspruchsvoll: Wenn alle LEDs an sind bei voller Helligkeit sind das rund 10mA x 15 x 8 x 15/16 = 1,125A plus die Versorgung der ICs! (Der 15/16-Teil kommt durch die 15 Spalten mit LEDs aber die 16 dekodierten Spaltencounter-Werte) Entweder spendiert man da einen 78S05 mit Kühlkörper oder ein Schaltregler... Allerdings sind die 1,2A auch nur der Worstcase: Wenn man Schriften zeigt, sind eingentlich fast alle LEDs aus und nur wenige an - ich habe mich daher mal auf ca. 400mA eingerichtet.
Das Thema "Power-On-Reset": Habe ich einfach mal drauf verzichtet, aber man kann natürlich mit den Reset-Eingängen der beiden Counter über ein RC-Netzwerk (C an Plus, R an Masse) einen POR realisieren.
Stückliste:
LED1-LED3 TC24-11 3x LED-Matrix 5x8 LEDs Kingbright IC 2 27C256 EPROM 32k IC 3 74HC244 Datenleitungs-Treiber IC 4 74HC4060 Spaltencounter und -Oszillator (alternativ CD4060) IC 1 74HC4040 Framecounter (alternativ CD4040) IC 5 ULN2803 Spaltentreiber 1 (8 x Lowside Switch) IC 6 ULN2003 Spaltentreiber 2 (7 x Lowside Switch) IC 7,8 74HC238 2x Spaltendecoder T1-T8 BC548B 8x Reihentreiber (=Highside Switch) R1 56k (Pin 10) R2 150k (Pin 11) C1 2,2pF
Screenshot MOVIEMAT.EXE
Part 2: Der Bitmap-Generator
Dazu gibt es dann auch ein kleines Windows-Progrämmchen, mit dem man die 8x15 Pixel-"Filme" grafisch entwickeln und daraus auch direkt die HEX-Dateien für den EPROMMER erzeugen kann.(Für die Freaks: Das Programm gibt dann auch einen prima Character-Generator ab, mit dem man dann auch Zeichensätze, Grafik, Sonderzeichen etc. für LCD-Displays o.ä. entwickeln kann!) Hier sind die Quellen und Doku für Visual C++ 6.0.