Forum: Analoge Elektronik und Schaltungstechnik Zufallsmuster


von Felix (Gast)


Lesenswert?

Hallo Leute,

mein Name ist Felix ich mache momentan eine Ausbildung zum Elektroniker 
für Geräte und Systeme. Gegen Ende des zweiten Lehrjahres bekommen wir 
vom Betrieb die Möglichkeit uns ein Projekt auszusuchen. Meine Wahl fiel 
auf einen Reaktionsspiel. Dieses Spiel soll ein Feld von 8x8 
beleuchteten Tastern haben. Die Taster sollen nach einem Zufallsmuster 
aufleuchten. Ziel ist es die aufleuchtenden Taster zu betätigen. Während 
man dies tut soll die Zeit gestoppt werden. Doch nun zu meinem Problem 
:(. Ich darf nichts programmieren. Ich habe viel gesucht bin aber bis jz 
nicht fündig geworden. Ich darf allerdings einen fertig programmierten 
µC als Beispiel verwenden.

Hoffe ihr könnt mir weiterhelfen :)

MfG

Felix

PS: falls ihr noch Informationen benötigt über das Projekt kann ich auch 
mein Pflichtenheft hochladen.

von Dennis (Gast)


Lesenswert?


von Felix (Gast)


Lesenswert?

Danke für die schnelle Antwort :)

Hast du zufällig einen simplen Schaltplan parat für die LSFR hab leider 
noch nichts mit diesen Bausteinen zu tun gehabt :(

von Einer (Gast)


Lesenswert?

Anderer Ansatz:

2 mal elektronischer Würfel
http://www.uwehomm.de/schaltungen.html
aber als Decoder zb. 74LS138
und die Lampen als Matrix ansteuern

Die Reaktionszeitmessung ist dann noch die zweite Baustelle.

von Felix (Gast)


Lesenswert?

Danke Einer

ich werde einen Versuchsaufbau machen und diesem Ansatz nachgehen. Das 
wird aber auch ziemlich viel bei 64 Feldern die beleuchtet werden müssen 
:) da habe ich mir ein aufwendiges Projekt ausgesucht ;)

Wie ich das mit der Zeitsteuerung realisieren soll weiß ich leider auch 
noch nicht aber als erstes muss ich das Zufallsmuster erzeugen können

MfG

Felix

von Magic S. (magic_smoke)


Lesenswert?

Ich würd das Projekt in mehrere Teile aufspalten. Zum einen hast Du das 
Anzeigefeld, was auch mechanisch aufgebaut werden möchte. Dieses würde 
ich gleich als Final-Version bauen.

Danach kommt die Frage wie steuert man 64 Lampen. Welche Lampen? Ich 
würde LEDs nehmen. Wie steuert man sie? Entweder 64 Portpins (großer 
µC!!) oder Schieberegister. Wie stellt man ihnen den Betriebsstrom zur 
Verfügung? Ich weiß jetzt noch nicht wieviel Leistung Du da verbauen 
willst, aber wenn es nicht größer als ein Schachbrett wird reichen LEDs 
mit 500mA pro Feld, damit es blendend hell wird. Da kann man 8 ULN2003 
oder so nehmen, erspart den Aufbau aus 64 einzelnen Transistoren. 64 
LEDs direkt an einen Controller oder Schieberegister ist vermutlich nur 
machbar, wenn niemals viele gleichzeitig leuchten und es auch nicht 
besonders hell sein muß.

Ich würds mit Schieberegistern lösen, damit ich nicht so viele Portpins 
brauche. Dann passt auch noch ein LCD-Display oder so mit an den 
(normal-großen) Controller. Die Tastaturmatrix braucht ja auch noch 
Pins.

Dann bleibt als letztes das Problem was Du mit dem LED-Feld machen 
willst. Erst hier kommen Dinge wie Zufallszahlen oder Interaktion 
(Abfrage der Taster, Anzeige der Reaktionszeit) ins Spiel. Das hängt 
alles davon ab, welches Spiel Du Dir da ausgedacht hast.

von uwe (Gast)


Lesenswert?

-Ein 8 Bit Schieberegister für die Spalten mit nur einer getzetn 1 auf 
sich selbst zurücgekoppelt.
-Ein 8 Bit Schieberegister für die Zeilen mit nur einer getzetn 0 auf 
sich selbst zurücgekoppelt.
-Zwei unabhängige RC-Oszilatoren die die beiden Schiebregister takten 
(Freuqenz möglichst ungrades vielfache vondem anderen)
-Die Schiebregister Treiben Die LEDs direkt an ihren ausgängen (ist ja 
immer nur eine LED aktiv).
-Noch nen 555 der die Takte nach einer gewissen Zeit sperrt und einen 
Quartz getaktetn Counter freigibt.
-um den RC Oszillatoren einen zusätzlichen Zufall zu geben eventuell 
noch Mikrofon und anderes Zeug in den Takt einer der beiden.
-dem 555 auch noch irgendwie pseudo Zufäälig beeinflussen.
-bei Druck auf Taster wird der Counter angehalten und das Ergebnis 
angezeigt.
Wäre jetzt das simpelste was mir einfällt, ob das auch zufäälig genug 
ist muss man ausprobieren.
-Bei elekronischen Würfeln missbraucht man den Benutzer als 
Zufallsquelle, der drückt einen Taster und läßt ihn wieder los. Da der 
Takt so hoch ist kann man nicht beeinflussen welche Zahl gewürfelt wird. 
Ob das hier erlaubt ist? Dann könnte man den Taster anstatt des 555 
benutzen.

von Felix (Gast)


Lesenswert?

Danke für eure Antworten :)

Wunschvorstellung ist es farbige bzw beleuchtete Taster (64 an der Zahl) 
anzusteuern und diese durch ihre Betätigung wieder auszuschalten. Bei 
der Betätigung des ersten Tasters (von dem Zufallsmuster) soll eine 
Stoppuhr beginnen zu zählen und bei der Betätigung des letzten Tasters 
soll diese Stoppuhr wieder stoppen.

Leider fehlt mir noch die Erfahrung und das benötigte Fachwissen :(

Ich verstehe einfach nicht wie ich dies realisieren soll :(

MfG

Felix

von Düsendieb (Gast)


Lesenswert?

Felix schrieb:
> Bei
> der Betätigung des ersten Tasters (von dem Zufallsmuster) soll eine
> Stoppuhr beginnen zu zählen und bei der Betätigung des letzten Tasters
> soll diese Stoppuhr wieder stoppen.

Und die nächste Taste leuchtet erst, wenn die richtige betätigt wurde? 
Diese Forderung lässt sich wohl nur durch programmieren lösen.

Mach erst mal einen kleinen Aufbau mit 4x4 Tasten/LED

von Felix (Gast)


Angehängte Dateien:

Lesenswert?

Werde ich machen :)

Du musst dir das so vorstellen es leuchtet ein Muster auf und dieses 
Muster leuchtet dauerhaft für ein "Spiel" also solange bis alle "Lichter 
ausgeknipst sind" es ist egal in welcher Reihenfolge ich dieses Muster 
anfange auszudrücken. Doch sobald ich den beleuchteten Taster betätigt 
habe erlischt das Licht von ihm.

Ich habe mein Pflichtenheft im Anhang dann kannst du dir das Beispiel 
als Skizze anschauen

von Hans Müller (Gast)


Lesenswert?

Felix schrieb:
> Ich darf nichts programmieren.

Wie vereinbart sich das mit:

Felix schrieb:
> Ich darf allerdings einen fertig programmierten
> µC als Beispiel verwenden.

Heißt das, du sollst die Programmierarbeit als Auftrag vergeben?
Denn wenn ich mir dein Pflichtenheft ansehe, dann wird das ohne 
Mikrocontroller in richtig viel Aufwand ausarten. Wenn du nur bis Ende 
Juli Zeit hast, hast du nur mit einem Mikrocontroller eine Chance haben 
das noch zu schaffen.

von Felix (Gast)


Lesenswert?

Ich darf das programmieren leider nicht vergeben das ist es ja was mich 
so fertig macht.

Ich muss wohl den riesen Aufwand in Anspruch nehmen da ich bis jz keinen 
fertigen Baustein gefunden habe der mir ein Zufallsmuster generiert

von Düsendieb (Gast)


Lesenswert?

Dann lerne das Programmieren.

Bis Juli ist jede Menge Zeit, und ein Aufbau mit 4x4 sollte auch für 
einen Anfänger bis ende Mai möglich sein. Selbst wenn man sich das 
Programmieren frisch beibringt.

Kauf ein Arduino, Stöpsel da 16 LED und 16 Taster dran und leg los.

Dann hast Du noch einen Monat für den großen Aufbau.

Los geht's

von Felix (Gast)


Lesenswert?

Ich darf nicht programmieren das ist die Vorgabe vom Betrieb.

Ich muss dieses Projekt ohne programmieren verwirklichen

Kann man das Zufallsmuster mit einem CMOS o.ä. realisieren??

von Johannes (menschenskind)


Lesenswert?

Von "nichts programmieren" steht nichts in diesem Pflichtenheft, also 
frag noch mal Deinen Chef, was er damit genau meint, ansonsten machst Du 
das mit nem µC (microcontroller) :)

von Felix (Gast)


Lesenswert?

Habe ihn gefragt das Projekt muss ohne das programmiert wird 
verwirklicht werden :(

Was nun?

von Sebastian (Gast)


Lesenswert?

Unter diesen Umständen würde ich versuchen, das so primitiv wie möglich 
umzusetzen: Pseudozufallszahlen beispielsweise über eine von einem Motor 
angetriebene Stiftwalze (wie bei einer Spieluhr) oder von einem 
Lochstreifen einlesen, Logik aus Relais bauen, freiverdrahtet. Sollte 
alles gehen, und wenn's dann einen halben Schrank füllt, egal, oder?

von Felix (Gast)


Lesenswert?

Sollte so klein wie nur irgend möglich sein.

Da hab ich ne knackige Aufgabe :)
Ich hatte so an TTL gedacht oder Schieberegister damit kann ich doch 
auch ein Zufallsmuster erzeugen oder?

von Sebastian (Gast)


Lesenswert?

Wenn immer nur eine Taste aufleuchten soll, kann man auch einfach einen 
Zähler laufen lassen, der vom Benutzer zu einem beliebigen Zeitpunkt 
gestoppt wird, und dessen Ausgänge auf alle Tasten dekodieren.

von 6A66 (Gast)


Lesenswert?

Felix schrieb:
> Da hab ich ne knackige Aufgabe :)
> Ich hatte so an TTL gedacht oder Schieberegister damit kann ich doch
> auch ein Zufallsmuster erzeugen oder?

Hallo Felix,

So knackig ist das nicht :)

Idee: Du erzeugst Zufallszahlen als bit (0 oder 1) und schiebst davon 8 
Stück in ein Schiebregister. Damit hast du schon mal das Bitmuster (für 
eine Zeile). Du zeigst die Ausgangsbits des Schieberegisters als Zustand 
des Tasters an (1 = an). Jetzt musst Du nur noch das Schieberegister 
selektiv löschen:
Es gilt zu prüfen ob Bitposition = 1 und Taster = 1 dann lösche 
Bitposition des Schieberegisters. Wenn Bitposition = 0 und Taster = 1 
dann Fehler.

Wie Du die Bitzustände des Schiebregisters löschst: na da würde ich z.B. 
auf einen Parallel-Load optieren.

So und jetzt könnte ich mir vorstellen das ganze noch mit 74xxx74 zu 
machen, das ganze vielleicht seriell reinzsuschieben und mit dem Taster 
asynchron Reset zu machen und jedes mal einen Fehler auszulösen wenn 
Bitposition = 0 Und Taster gedrückt.

Von diesen Schaltungen kannst Du 8 parallel (8 Zeilen) schalten.

rgds

von 6A66 (Gast)


Lesenswert?

Felix schrieb:
> Du musst dir das so vorstellen es leuchtet ein Muster auf und dieses
> Muster leuchtet dauerhaft für ein "Spiel" also solange bis alle "Lichter
> ausgeknipst sind" es ist egal in welcher Reihenfolge ich dieses Muster
> anfange auszudrücken. Doch sobald ich den beleuchteten Taster betätigt
> habe erlischt das Licht von ihm.

Nachtrag zum Pflichtenheft:

Das Spiel ist nicht Fair da die Anzahl der zu drückenden Taster bei 
völlig freier Zufallsgenerierung nicht immer gleich ist, es kann also 
sein dass Spieler1 nur eine Taste und Spieler2 z.B. 32 oder gar 63 
Tasten "abräumen" muss und damit schon länger braucht. Das ist aber dem 
Prinzip "TTL Logik" geschuldet ansonsten bräcutest Du tatsächlich mehr 
Aufwand um die Anzahl der Einsen im Zufallsfeld zu kontrollieren.

Nachtrag zum Voschlag:
Man könnte auch ohne Mikrocontroller das Ganze in einem CPLD pro Zeile 
lösen, reduziert den Aufwand ist aber "programmiert" :)

rgds

von Felix (Gast)


Lesenswert?

Danke dir :)

Damit könnte ich ein Zufallsmuster erzeugen doch nun zu meinem nächsten 
Problem über diesen LED´s wird ein Taster montiert und sobald ich diesen 
betätige soll die LED darunter ausgehen

Doch wie ?

von Felix (Gast)


Lesenswert?

Ja das mit der Fairness ist nicht wichtig hehe

von Sebastian (Gast)


Lesenswert?

Jede Taste benötigt ein Flip-Flop. Set wird durch den Zufallsgenerator 
betätigt, Reset durch die Taste selbst. Ob noch irgendeine Taste 
"leuchtet", könnte man mit 64 Dioden erkennen.

von 6A66 (Gast)


Lesenswert?

Felix schrieb:
> Doch wie ?

Jedes Feld hat ein Flipflop, der Zustand des Flipflops ist das Feld. Das 
Feld ist gesetzt = 1 = LED an.

Wenn das Feld gesetzt ist kann man es mit einem Taster zurücksetzten (da 
gibt es verschiedene Möglichkeiten, achtung ein paar haben da 
gravierende Nachteile). Erlaubt ist ein Zurücksetzten nur wenn das Feld 
gesetzt ist und der Taster für das Feld gedrückt wird. Ist das Feld 
nicht gesetzt und der Taster wird gedrückt wird ein Fehler angezeigt, 
die Uhr gestoppt.

Also ich komme auf ca. 10...12 TTLs pro Zeile:
4x 74xx00 (1/2 pro Feld)
4x 74xx74 (1/2 pro Feld)
Und dann noch die Fehlererzeugung:
irgendetwas mit Open Collector
und die Anzeige "alle Leer":
1x 8-fach NAND

Für das Laden brauchst Du einen Zähler der 9 Impulse erzeugt, 8 mal für 
das einschieben und 1x für Game Start/Uhr Start.

Und dann noch die Uhr.

rgds

von 6A66 (Gast)


Lesenswert?

Sebastian schrieb:
> Set wird durch den Zufallsgenerator
> betätigt, Reset durch die Taste selbst.

tricky - think it over !

rgds

von Felix (Gast)


Lesenswert?

Ohje 10 bis 12 TTLs ist serh viel :O wenn man das Spielfeld auf 6x6 oder 
4x4 verkleinern würde wäre das eine große Ersparnis?

von Sebastian (Gast)


Lesenswert?

Ja, eine Verkleinerung des Spielfeldes reduziert den Aufwand erheblich.

von Frank (Gast)


Lesenswert?

Wie wäre es einfach mit Pseudozufallszahlengeneratoren:
http://de.wikipedia.org/wiki/Linear_r%C3%BCckgekoppeltes_Schieberegister

Entweder 1 pro Zeile und einfach die Reihenfolgen für die LEDs 
vertauschen. Oder unterschiedliche Polynome (wäre wahrscheinlich besser, 
da dann auch unterschiedlich viele LEDs pro Zeile leuchten).
Dann haben Deine Zeilen schon mal einen Startwert.

Per Knopfdruck kommt das nächste Muster und der Zähler wird Resettet.
Zusätzlich könntest Du über einen globalen Resetknopf den Startzustand 
wiederherstellen (erste Pseudozufallszahl --> erstes Spiel) und jeder 
Spieler hätte die gleichen Spiele hintereinander (da ja  nur 
Pseudo-Zufall).

Dann noch 8x8 AND und SR-FF für das ausschalten der gedrückten Lampen.
Also Lampe an AND Taster-Impuls rücksetzen des SR-FF.

Dann bräuchtest Du nur noch die ganzen Schalter verodern. Das gibt dann 
Dein Startsignal. Sobald einer gedrückt wird start Counter.

Dann brauchst Du noch ein NOR über alle FF Ausgänge (oder Lampen).
Also wenn alle Lampen aus sind = 1.
Das gibt Dein Stopsignal für den Counter.

Dann noch den eigentlichen Zähler und einen Bin to BCD Wandler für die 
Anzeige.

Das müsste es gewesen sein. Oder hab ich was vergessen?

von 6A66 (Gast)


Lesenswert?

6A66 schrieb:
> Sebastian schrieb:
>> Set wird durch den Zufallsgenerator
>> betätigt, Reset durch die Taste selbst.
>
> tricky - think it over !
>
> rgds

Felix schrieb:
> Ohje 10 bis 12 TTLs ist sehr viel

Hallo Felix,

na ja. Du hast ohnehin in Deinem Projektplan die Erstellung einer 
Leiterplatte, ohne die kommst Du nicht hin. Dann Eine für die zentrale 
Steuerung und eine für die Uhr, sind drei die Du bauen musst - die 
Zeilenplatine dann eben 8x. Sind gesamt 10 Stück. So what. Wenn Du eine 
Lösung findest die einfacher geht gerne. Ideen hast Du ja jetzt. Ich bin 
hier wieder raus, höre aber gerne mal zwischendurch mal wieder rein für 
den Gall dass es Fragen gibt.

Keine Angst, das Projekt ist nicht so kompliziert. Überlege erst einmal 
eine Zeilenplatine, simulier die und bau die auf dem Steckbrett oder 
einer Lochraster auf. Wenn die geht hast Du schon das ganze Brett. Und 
die Uhr ist nicht zu kompliziert (100Hz Oszillator, 4 BCD-Zähler mit 
7-Segment Decoder für 99,99 Sekunden).

Und das ganze wird dann doch bei euch im Foyer bei Rafi ausgestellt - 
oder? Da sollte es schon was Professionelles sein.

rgds

von Felix (Gast)


Lesenswert?

Danke euch für die vielen Ideen ich werde jetzt erstmal ein bisschen rum 
experimentieren und euch dann meine Ergebnisse mitteilen einen 
Probeaufbau machen und die Schaltung simulieren.

Nochmals vielen Dank :)

von Hans Müller (Gast)


Lesenswert?

Interessant, was in den Köpfen der Lehrbetriebe bzw. der Ausbilder so 
vor sich geht. Leben die noch in der Steinzeit? Da wird ein Projekt, 
welches mittels Controller eigentlich ein besseres Wochenendprojekt ist, 
durch unsinnige Vorschriften zu einer im Monaten zu rechnenden 
Sisyphusarbeit aufgeblasen.

von Frank (Gast)


Lesenswert?

Hans Müller schrieb:
> Interessant, was in den Köpfen der Lehrbetriebe bzw. der Ausbilder
> so vor sich geht. Leben die noch in der Steinzeit? Da wird ein Projekt,
> welches mittels Controller eigentlich ein besseres Wochenendprojekt ist,
> durch unsinnige Vorschriften zu einer im Monaten zu rechnenden
> Sisyphusarbeit aufgeblasen.

Naja, so aufwändig ist es nun auch nicht.
Von der Logik hat man das in einem Tag durchgespielt.
Dann noch Platinen designen, fertigen lassen, aufbauen und testen.
Wahrscheinlich soll in diesem Projekt der Schwerpunkt halt mehr auf 
Logik und HW liegen.
Wobei man das auch (meiner Meinung nach) auf einem CPLD/FPGA machen 
könnte.

von 6A66 (Gast)


Lesenswert?

Hans Müller schrieb:
> Interessant, was in den Köpfen der Lehrbetriebe bzw. der Ausbilder so
> vor sich geht. Leben die noch in der Steinzeit? Da wird ein Projekt,
> welches mittels Controller eigentlich ein besseres Wochenendprojekt ist,
> durch unsinnige Vorschriften zu einer im Monaten zu rechnenden
> Sisyphusarbeit aufgeblasen.

<IRONIE> Jo hast Du völlig recht.
Der Azibu hat ja schon C und die ganze Controllertechnik gelernt und 
kann mit der IDE umgehen. Da kann ihm auch sein Azibu Kollege dabei 
helfen.
Und der Kollege nebenan, der das in einem Jahr verbessern muss hat sich 
schon in die SW einegarbeitet.

Ehrlich gesagt halte ich die Vorgaben und den Zeitplan für sehr 
realistisch für das Projekt. Muss man sich ranhalten, klar, aber no 
rocket science, kann also jeder gut erlernen. Das Projekt mache ich auch 
übers Wochende, klar, auch mit TTL. Interessiert aber hier niemanden 
denn es soll ja ein AZUBI machen und a) dabei noch mal lernen und b) das 
was er kann und gelernt hat an einem Projekt umsetzten lernen wobei es 
um das UMSETZEN geht.

rgds

von Felix (Gast)


Lesenswert?

Hallo zusammen

ich baue mein Zufallsmuster mit Schieberegistern und einem extra Taster 
da ich ja nie gleichzeitig loslassen kann ;) doch wie verwirkliche ich 
jetzt eine Stoppuhr die parallel dazu meine benötigte Zeit stoppt sie 
soll ss:msms anzeigen

Grüße Felix

von Blinky (Gast)


Lesenswert?

Also ein 4 stelliger Zähler der in 10ms Schritten Zählt.
z.B. so was hier (Suche einfach mal nach TTL Zähler 4 stellig):
http://www.elektronik-kompendium.de/public/arnerossius/schaltungen/mitics/count4.htm
mit einem Oszillator der 100Hz liefert.
Spiel beginnt: Oszillatortakt wird an Zähler weitergegeben
Spiel endet: Oszillatortakt wird abgeschaltet
Reset: Zähler wird auf 0 gesetzt.
Der ":" sind 2 LEDs.

von wunder7 (Gast)


Lesenswert?

Hallo zusammen,

Zur Information, im zweiten Lehrjahr hat man noch keine C-Kenntnisse 
oder ähnliches, da dieses erst im Dritten Lehrjahr beinhaltet ist!

Mfg

von Felix (Gast)


Lesenswert?

Wenn ich den Zähler in 1ms Schritt zählen lassen will würde ich demnach 
einen 1kHz Oszillator benötigen oder?

von Blinky (Gast)


Lesenswert?

Ja,

Wobei t Deine Periode (z.B. 1ms / 10ms) in Sekunden ist.

Wenn Du aber eine Anzeige ss:msms brauchst dann ist der niedrigste Wert
10ms, mit 1ms wäre das dann ss:msmsms um bei Deiner Notation zu bleiben.

von Felix (Gast)


Lesenswert?

ok danke dir in dem Fall doch 100Hz Quarz

den Link von der Schaltung den du mir geschickt hast wie muss der 
Oszillator dazu geschaltet werden?

von Blinky (Gast)


Lesenswert?

Bei der Schaltung im Link wäre das oben rechts, 5V, Inp (Der Takt), GND.

Wie genau muß die Messung denn sein?

Einen 100Hz Quarz wirst Du nicht finden. Den Takt musst Du entweder mit 
einem schnelleren Quarz(besser ein fertiger Quarzoszillator der braucht 
keinen Verstärker) und einem entsprechenden Teiler.
Der Teiler ist im Prinzip wieder ein Zähler der z.B. nur jeden 10 Impuls 
weitergibtung (In der Schaltung der 74LS90 mit dem Qd Ausgang) oder wenn 
es nicht ganz so genau sein muss mit einer Schaltung wie z.B.:
http://www.555-timer-circuits.com/astable-multivibrator.html

von Felix (Gast)


Angehängte Dateien:

Lesenswert?

Ist der Schaltplan der Stoppuhr korrekt ?

ich nehme dann noch einen anderen Oszillator der mir 10ms Schritte 
erzeugt.

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
Noch kein Account? Hier anmelden.