|
Projekte
|
|
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!!!
|
LED-Lichtobjekt #1
|
|
"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
|
LED-Lichtobjekt #2
|
|
H A L ;-)


Ansicht (Klicken für Großbild)
Schaltplan (Klicken für Großbild)
(2.0MB
Quicktime-Film)
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!
|
LED-Lichtobjekt #3
|
|
Sprite oder "Movie-Matrix"

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: Die Software:
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 Sourcen und Doku für Visual C++ 6.0.
|
|
|
|