An Ideen mangelt es nicht, aber leider gehst Du nie drauf ein und willst immer Fertiglösungen.
Ich kann mir kaum vorstellen, dass dein Dozent sehr glücklich wäre, wenn Du ihm nen Bausatz präsentierst - Du dann über die Note wahrscheinlich auch nicht!
Du hast bei deiner Aufgabenstellung gleich mehrere Probleme zu lösen und ich hab ehrlich gesagt nicht den Eindruck, dass Du da mal drüber nachgedacht hast.
Das geht schon damit los, dass sich die im Bausatz verwendeten 4017er nicht immer ganz problemlos kaskadieren lassen.
Das würd noch halbwegs problemlos (aber aufwendig) funktionieren, wenn die Anzahl der Felder wenigstens die Summe eines Vielfachen der nutzbaren Anzahl von den Digits der einzelnen Zähler oder ein Produkt daraus wäre.
Mit den eingangs erwähnten 38 Feldern (eigentlich Fächern) würd das zwar gehen, aber diese Lösung wäre schon extrem starr und aufwendig.
Ich gebe auch zu bedenken, dass die Anzahl der Fächer verschiedener Varianten bei Roulette stark abweicht.
Es gibt die italienische Variante mit 38 Fächern und die kleine deutsche Variante mit 18 Fächern.
Am verbreitetsten dürfte wohl die französische Variante mit 37 Fächern sein.
Eine ordentliche Schaltung schert sich da nicht drum und kann mit wenig Aufwand den Gegebenheiten angepasst werden. Das ist beim erwähnten Bausatz nicht der Fall.
Im Bausatz wird es leider auch so gemacht, dass die decodierten Zählerausgänge die LEDs direkt ansteuern und das ist eine fürchterliche Unsitte, die halbwegs gut gehen kann aber nicht muss.
Gerade die Ausgänge von CMOS Bausteinen sind kaum belastbar. Immerhin waren die aber so gnädig, den LEDs wenigstens einen 3k9 Widerstand zu gönnen.
Dass es nur ein gemeinsamer Widerstand ist, macht hier nicht viel, denn es kann ja immer nur eine LED leuchten und deren Strom fließt halt durch den Vorwiderstand.
Rechnen wir mal überschlägig aus, welchen Strom wir bei einem angenommenen UF von 2V und einer Versorgungsspannung U0 von 12V annehmen dürfen IF=(U0-UF)/R => IF=10V/3900Ohm - Das sind etwas mehr als 2,5mA und das dürft auch etwa das sein, was man einem normalen CMOS-Ausgang zumuten darf.
In Wirklichkeit wird es sogar etwas weniger sein und da gehen wir mal von ca. 2mA aus.
Ein CMOS Ausgang geht davon nicht gleich kaputt. Überlast dürft wohl eine der wenigen Disziplinen sein, wo die (weitgehend) tolerant sind. Das aber nur, weil sie stromtechnisch nicht so hart am Ball spielen.
Bei ner normalen LED zieht man mit 2mA aber keine Wurst vom Brot und man müsste hier Low-Current-LEDs verwenden.
Es steckt aber noch ein anderer Hund in der Schaltung. Schauen wir uns dazu mal das Schaltbild an und nehmen (o.B.d.A.) an, dass LED1 gerade leuchtet und durch sie soll ein Strom von 2mA fließen. Am Vorwiderstand fallen also ca. 7,8V ab. Die Kathoden aller LEDs führen aber auf diesen gemeinsamen Fußpunkt und entsprechend führen auch die Kathoden der ausgeschalteten LEDs dieses Potential. Und jetzt kommt das Problem. Die CMOS-Ausgänge sind komplementär, d.h. die Anodenpotentiale der ausgeschalteten LEDs werden auf nahezu 0V gezogen. Damit liegt eine "verpolte Versorgung" von 7,8V an den ausgeschalteten LEDs.
Die Durchbruchspannung einer LED beträgt nur etwas mehr als 5V, d.h. die Ausgeschalteten LEDs arbeiten schon im Durchbruchbereich. Die fangen also schon an zu "zenern".
Bei den Stromstärken ist das noch kein Beinbruch, aber gemacht sind sie dafür net und gut tut es den Dingern garantiert nicht.
Eine ordentliche Schaltung sieht deshalb Treiberstufen vor, welche die Ausgänge des Decoders entlasten und die LEDs vor Rückwärtsspannungen bewahren.
Okay, den 4046 als Oszillator kann man nehmen, denn das ist ein VCO und da will ich nix gesagt haben.
Den könntest Du sogar in deiner endgültigen Schaltung verwenden.
Dein Problem fängt aber damit an, dass dir ein einzelner 4017 mit seinen 10 Ausgängen nicht reicht.
Du brauchst also mehrere Zähler um auf die von dir gewünschte Anzahl von LEDs zu kommen.
Nehmen wir mal an, dass Du straight forward arbeiten willst - Also jede LED hat genau einen Zählerausgang.
Gehen wir dazu kurz die Varianten mit 18, 36, 37 und 38 Fächern durch und schauen, was wir an Bauteilen brauchen.
Taktgeber, "innerer Ring" und Ähnliches vergessen wir mal kurz, weil das in allen Varianten nur einmal gebraucht wird.
Der sonstige Aufwand ist von dieser Betrachtung unabhängig und muss gesondert betrachtet werden.
Bei den Zählern verwenden wir 4017er, 4022er und 4013er (zwei als 1 Bit-Zähler missbrauchte D-FF).
Als Treiber verwenden wir 4050er (sechs Treiber in einem Gehäuse).
Gehen wir das mal ganz blauäugig an - Warum das so net stimmt schreib ich unten.
<ul><li>Bei 18 LEDs brauchst Du einen 4017 und einen 4022. Der 4022 ist vom Verhalten her fast identisch mit dem 4017 - Nur dass er halt nur 8 Ausgänge hat.
Bei 18 LEDs brauchen wir also auch 18 Treiber und damit drei 4050er.
<b>Insgesamt also 5 ICs.</b>
<li>Bei 36 LEDs wäre es fast das gleiche Spiel, nur dass es halt zwei 4017er und zwei 4022er sind.
Es sind aber auch 36 Treiber und somit schon sechs 4050er.
<b>Also insgesamt 10 ICs</b>
<li>Bei 37 LEDs ist's etwas kniffliger, es funktioniert aber fast wie bei der Variante mit 36 LEDs - Nur kommt noch ein 4013er dazu.
Wegen dem einen zusätzlich nötigen Treiber fangen wir keinen neuen 4050 an und behaupten, dass wir das mit einem Transistor erschlagen.
<b>Also insgesamt 11 ICs und einen Transistor.</b>
<li>Bei 38 LEDs würd das mit drei 4017ern und einem 4022 gehen. Bei 38 nötigen Treibern sollt man fast doch nen neuen 4050 anbrechen, denn zwei Transistoren mit Beschaltung wären teurer und kaum kleiner - Wir brauchen also sieben 4050er.
<b>Insgesamt also 11 ICs</b></ul>
Man sieht also, dass das (wackelig linear) ganz schön schnell hochgeht und bei 38 LEs garantiert net klein wird - Und wir sind bisher nur bei der "Kugel" :!:
<b>Und wo ist der böse Denkfehler?</b>
Das stimmt zwar grob überschlägig um den Aufwand abzuschätzen - Es ist aber nicht die Wahrheit!
In Wirklichkeit ist das noch schlimmer!
Der Grund ist der, dass z.B. bei einem 4017 nicht alle Ausgänge für das Lauflicht nutzbar sind.
Stellen wir uns dazu nur vor, dass unser Lauflicht aus zwei 4017ern bestünde und die Zähler auf 0 stünden. Beim ersten Zähler führt also Q0 Signal und die erste LED leuchtet - Das ist ja soweit okay. Allerdings gilt das auch für den zweiten Zähler und auch bei dem leuchtet dessen erste LED.
Insgesamt leuchten im Zustand 0 dieses Beispiels also die LEDs 1 und 10 - Und so wollten wir das ja nicht!
Um das zu lösen müssen wir entweder jedem Zähler eine Parkposition ohne LED zuordnen oder durch einen weiteren Zähler bestimmen, welcher der Zähler gerade die gültige und anzuzeigende Kugel enthält.
Wenn man den zweiten Weg wählt, dann endet das in nem Logikgrab, denn jeder Ausgang muss noch durch ein AND-Gate, bei dem ein Eingang mit dem eigentlichen Zählerausgang beschalten ist und der andere Eingag legt fest, ob dieser Zähler grad gemeint ist.
Das wären dann pro Zählerstufe gleich nochmal 2 bis 2,5 Stück 4081 + insgesamt den nötigen Zähler, der bestimmt welche Gruppe grad aktiv ist.
Die Sache mit den 38 Kugeln frisst also nochmal 10 4081er + dem Zähler. Damit wären wir schon bei 36 Kugeln bei einem <b>Aufwand von 21 ICs</b>!!!
Ich denk wir können hier die Überlegung abbrechen, denn das wird einfach zu aufwendig.
Etwas beherrschbarer könnt werden, wenn jeder Zähler eine Parkposition bekommt.
Das könnt z.B. Q0 sein. In der Parkposition müsste sich jeder Zähler selbst verriegeln. Das könnt man z.B. dadurch machen, dass man Q0 auf !EN führt.
Die Verriegelung darf erst dann aufgehoben werden, wenn der vorausgehende Zähler seine Endposition erreicht hat.
Das gibt auch noch ein paar Problemchen mit dem Timing, was man aber (pro Zähler) mit einem D-FF in den Griff bekommt - Die Chose muss nämlich um nen halben Takt verzögert werden, damit ein sicheres Timing erreicht wird. Schätzungsweise kostet das pro Zähler nochmal ein AND Gatter und ein D-FF. Das wär jetzt net so schlimm, denn bei vier Zählern wären das nur ein zusätzlicher 4081 und 2 Stück 4013.
Ich hab beide Konzepte nicht weiter verfolgt, weil sie einfach zu heftig werden. Die letztere Sache werd ich aber noch machen, weil das bei Lauflichtern mit über 100 LEDs interessant wird.
Fakt ist aber, dass uns die "Parkposition" einen Zählerausgang blockiert. Pro 4017 sind also nur noch 9 Ausgänge bzw. beim 4022 nur noch 7 Ausgänge nutzbar.
Bei 37 oder 38 Fächern wären also schon 5 Basiszähler nötig.
Wenn man aber unbedingt linear arbeiten will, dann wären Schieberegister fast günstiger. Denn ein Lauflichtverhalten ist ihr Grundwesen - Aber das verbleibt als Aufgabe.
Vergessen wir das alles, denn glücklicherweise gibt es einen besseren Ansatz.
Bei solchen Sachen kann man (ab einem gewissen Umfang) enorm Bauteile sparen, wenn man die LEDs nicht linear hintereinander klatscht, sondern die LEDs in einer Matrix anordnet.
Ich hab dir das mal schematisch für den bei uns aufwendigsten Fall mit 37 Fächern aufgemalt. Und weil ich ja angeblich mit Yenka net umgehen kann, hab ich's grad mal damit gemacht.
Guckst Du:
http://s1.postimage.org/2pfd7di84/image.jpg
Der Trick ist hier, dass ich einen Zeilenzähler und einen Spaltenzähler habe - Also eigentlich acht Spalten und acht Zeilen - Für 37 Fächer langen uns aber 5 Zeilen und nur die hab ich bestückt.
Die komische Logik neben dran ist dazu da, dass wenn das letzte Fach erreicht wurde, im richtigen Moment ein Reset kommt.
Ein weiterer "Trick" ist, dass der Zeilenzähler seinen Impuls ebenfalls im richtigen Moment bekommt. Das wär hier über einen Inverter einfacher gegangen, aber ich hatte keinen mehr übrig (die Treiber wollt ich nicht antasten - Andere Baustelle).
Also hab ich deshalb das noch übrige D-FF vom 4013 vergewaltigt.
Das ist der Trick, dass ein Taktimpuls zumindest aus zwei Teilen besteht - Der positiven und der negativen Flanke - Und das nutzen wir hier gnadenlos aus!
Diese Schaltung kommt mit 7 ICs aus.
Die Dioden sind drin, um die blöde Reverse-Voltage wegzukriegen.
Weil Treiber da sind, kann ich auch normale LEDs nehmen und hab die mit den 470 Ohm Widerständen auf etwa 15mA eingestellt.
Bei dem Ansatz brauch ich allerdings auch invertierende Treiber und die sind die 4049er.
Nett ist auch, dass ich die Anzahl der Fächer hier leicht ändern kann. Dazu muss ich nur die Steuereingänge von IC1a mit den entsprechenden Ausgängen des Zeilen- bzw. Spaltenzählers verbinden.
Es wäre ohne echten Mehraufwand möglich mit diesen 7 ICs auch 64 LEDs anzusteuern - Das würde kein IC mehr kosten!
Bei 37 LEDs ist der Vorteil noch nicht so überdeutlich, aber wenn dein Lauflicht (und nix anderes ist es!) 100 LEDs oder mehr haben sollte, dann wirst Du die Vorteile der Matrix sehr schätzen.
Ein Treiber-IC mehr, statt der 4022er halt 4017er - Et voilà - 100 LEDs mit 8 ICs!
Einen winzigen Nachteil hat die Schaltung aber. Beim Einschalten werden sich die Zähler in undefinierten Zuständen befinden und erst nach einem Durchlauf ist sichergestellt, dass nur gültige Fächer angezeigt werden. Wenn man das auch noch weg haben will, dann muss man beim ersten Start halt ein Reset einprägen (ginge locker bei IC1c).
Das Problem mit dem nicht definierten Zustand hast Du aber auch bei der linearen Methode - Die zeigt am Anfang halt auch irgendwas an.
Der Sache fehlt aber noch Leben - Der Taktgeber! Den kannst Du bei allen Varianten aber so aufbauen, wie im Bausatz gezeigt.
Da gibt es sicher edlere Varianten, aber für den Anfang tut's das. Schöner geht's immer.
Viel schlimmer ist die Sache mit dem Zufall. Wenn das manuell gestartet wird, dann ist es Zufall genug, wenn man die Startfrequenz hoch genug wählt. Keiner drückt den Knopp immer exakt gleich lang und bei der anfänglich sehr hohen Geschwindigkeit sollte das Zufall genug sein.
Extrazufall kriegt man nur mit nicht unerheblichem Aufwand. Da kann man Pseudozufallszahlen mit nem rückgekoppelten Schieberegister basteln oder das Rauschen einer Diode verwenden (ne BE-Durchbruchstrecke eines Kleinsignaltransistors ist ganz gut geeignet).
Z-Dioden hat man früher genommen, aber die sind heut so hochgezüchtet, dass die kaum noch "brauchbar" rauschen. Das artet aber wieder in Ausprobiererei aus!
Das würd ich mir deshalb an deiner Stelle sehr gut überlegen, ob Du das wirklich brauchst!
Beim inneren Ring ist es halt so, dass Du leider nie beschrieben hast, wie der genau aussehen soll.
Wenn das gegenläufige Kugeln sein sollen, dann wär das net so wild und das könnt man in die Schaltung reinwurschten. Auch das Abschlussgeblinke wär net schlimm zu realisieren.
Aber um da was sagen zu können, sollten wir schon wissen, was Du eigentlich willst.
Schlimmstenfalls müssen wir halt nochmal ein Schieberegistergrab aufmachen - Je nachdem wie's aussehen soll.
Und noch ein Tipp. Die 4050er bzw. 4049er sind nicht grad ne Idealbesetzung.
ULN2804er wären zumindest für den invertierenden Teil wesentlich besser - Aber sowas kennt ja Yenka net :-(
Und weil es so schön ist, es ging noch einfacher, wenn man die Zähler durch Schieberegister ersetzt.
Schau dir dazu mal den 4015 an.
Okay, man wird einen Reset am Anfang brauchen, allerdings spart man nochmal ein IC.
Ein Reset sollt aber eh her am Anfang, also warum den nicht anzapfen?
Wär das nix, 37 LEDs mit nur 6 ICs? Beim Verwendung eines ULN2804 wären es sogar nur 5!
Das allein schon sollte die Note retten (sofern der Dozent schnallt, was hier veranstaltet wurde) - Soll man das machen?
Viele Grüße vom Unwissenden