Habe mir ein paar Gedanken über ein gemultiplextes LED-Lichtspiel auf 16F886-Basis gemacht.
Ich möchte fünf Zeichen darstellen, dazu brauche ich pro Zeichen maximal 3*8 LEDs, insgesamt läuft es auf ein 12*8-Multiplex hinaus.
Als LEDs kommen Beispielsweise diese in Frage:
http://www.reichelt.de/?ACTION=3;GR.....65134
Nicht stark gerichtet, recht hell und noch erschwinglich. Vertragen bei 1/12 Spieldauer und 1,5ms Periodendauer noch 100mA Pulsstrom.
Als "Zeilentreiber" ließe sich ein ULN2803A verwenden. Dazu eine Frage: Gelten die 500mA für einen Ausgang oder für alle zusammen?
http://www.reichelt.de/?;ACTION=7;L.....4baf1
Als Spaltentreiber ließen sich 12*BC327-40 verwenden:
http://www.reichelt.de/?;ACTION=3;L.....4baf1
Als besonderes Gimmick könnte man noch zwischen Massepin des ULN2803 und Masse einen weiteren Transistor schalten (BC337 wäre eine Möglichkeit, aber auf Kante genäht, muss ja schließlich 800mA aushalten), und diesen von einer der beiden PWM-Module des 16F886 ansteuern lassen. So wäre ein energiesparendes globales Dimmen der gesamten Anzeige möglich, ohne noch große Kunstgriffe im Programm machen zu müssen.
Einlesen der gewünschten Helligkeit via Poti und ADC in einer kleinen Routine. Eine 5-bit-Abstufung (64 Stufen) sollte masse reichen.
Der 886 lässt sich mit einem externen RC-Glied zum oszillieren bringen; wenn man ein Poti verwendet, sollte man den Takt einfach zwischen 40kHz und 4MHz verstellen können. Prima für ein einfaches Einstellen der Lichtspielgeschwindigkeit.
Grundgedanken zum Programmablauf und zur benötigten Frequenz:
Es gibt 12 Achtergruppen, also bekommt jede Gruppe 1/12-tel der Rechenzeit zugestanden. Am Anfang dieses Zwölftels kann jede der 8 LEDs mit 100mA eingeschaltet werden.
Das Zwölftel wird weiter in 64 Teile unterteilt, in denen jeweils geprüft wird, ob alle anfangs eingeschalteten LEDs eingeschaltet bleiben. So lässt sich jede LED einzeln auf einen von 64 Durchschnittshelligkeitswerten einstellen.
Diese 64stel sind jeweils 64 Zyklen/Befehle lang. 64 Befehle sollten ausreichen, um im ersten 64-stel des Zwölftels das jeweils gewünschte Bitmuster zu erzeugen und zu laden. In den anderen 63 64-stel müssen ja dann nur noch je acht Zähler dekrementiert und eventuell LEDs ausgeknipst werden.
Ein Zyklus dauert beim PIC bekanntlich vier Takte. Möchte man nun pro Sekunde 25 verschiedene globale Bitmuster laden, so ergibt sich für die benötigte Taktfrequenz des PIC:
4 * 25 * 12 * 64 * 64 = 4 915 200 .
Das sollte mit dem RC-Oszi noch machbar sein. Ist das fürs Auge zu schnell, kann man ja einfach das Geschwindigkeits-Poti runterdrehen und so den Ablauf bis zum Faktor 100 verlangsamen.
Läuft der Takt ganz langsam mit so 30.000Hz, bedeutet das, dass die einzelnen LED (ohne globale PWM) mit 30.000/4/12Hz=625Hz gepulst werden (Spieldauer=1/12), das sind etwa 1,5ms, und dafür spuckt das oben verlinkte LED-Datenblatt die 100mA zulässigen Pulsstrom aus (für höhere Frequenzen ist bei gleicher Spieldauer ein höherer Pulsstrom erlaubt).
Bei 6V Versorgungsspannung komme ich mit den oben beschriebenen jeweils drei Transistoren pro LEDs auf einen Vorwiderstand von 27 Ohm, der schlimmstenfalls kontinuierlich knapp 300mW verbrät. Also 8 Stück 1W-Metallfilmwiderstände direkt hinter den ULN2803 schalten und gut ist. Oder doch besser 12 Stück an die Spaltentransistoren, könnte der gleichmäßigeren Erwärmung der Widerstände und damit einem gleichmäßigeren LED-Helligkeitsnormal dienen, mal sehen.
Energieversorgung entweder über 4 Mignonzellen (reichen knapp 2 Stunden) oder Netzteil. Vdd des PIC wird mittels Dioden auf ein erträgliches Maß gebracht. Bei den Pufferelkos und Blockkerkos mus ich noch mal schauen, was ich wohl so brauche.
Die 64*64*12-Zyklen-Einteilung sollte sich durch die Überwachung eines Timers leicht realisieren lassen (der 16-bittige Timer1 ist ja noch frei). Muss man ja nur mittels btfss/btfsc jeweils warten, bis das entsprechende Bit umgekippt ist.
Welche Musterfolge jeweils abgespielt werden soll, sollte sich auch via ADC und Poti einlesen lassen (am besten gleich mit Hysterese). Damit gibt es dann am fertigen Lichtspiel insgesamt einen Ein-/Aus-Schalter sowie je ein Poti für Helligkeit, Geschwindigkeit und Muster.
Sieht jemand grobe Fehler im (Hardware-)Konzept? Sonst werde ich wohl demnächst die Teile ordern. An der Software lässt sich ja dann beliebig rumdoktorn.
Gruß, Bartho