PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zufallsgenerator selber Bauen



MS7315
09.02.2011, 20:29
Hallo Leute,

hab ein Problem.
Ich würde mir gerne einen Zufallsgenerator bauen, welcher aber am liebsten ohne µC funktionieren sollte...

Aber erstmal zum eigentlichen Punkt.

Also er soll folgendes können:

Ich habe hier 10 Relais, (5V Spulenspannung)

wenn ich einen Taster drücke,

sollen die Relais in zufälliger Reihenfolge jedes einmal anziehen mit ca. 5s

verzögerung zwischen den einzelnen Relaisanzügen.

Dann ist der Durchgang zuende.

Neuer Durchgang wieder mit Tasterdruck.

Kann ich sowas auf einfache Art selber bauen?

vll. mit nem IC oder sowas?

will halt nicht extra nen µC programmieren, da ich mich da nicht auskenne...

So das mal soweit... wenn Ihr mehr Infos braucht gebt mir bitte bescheid...

Danke schonmal im Voraus für eure Hilfe...

Gruß Matze

TobiKa
09.02.2011, 20:58
Conrad: Best.-Nr.: 115479 - 62

PICture
09.02.2011, 21:46
Hallo!

@ MS7315

Wenn du sowas selber bauen willst, könnte ich dir allgemein eine vor zig Jahren ausprobierte Idee vorstellen:

unerplärter Taster -> Zählereingang mit Dekoder (z.B. 4017) und Stromverstärker für Relais (z.B. 2x ULN200X) + Monoflop (z.B. 1/2 von 4098) mit Transistorschalter für Relaisversorgungsspannung (z.B GND schalten mit übrig gebliebenen Darlington von ULN200X).

MfG

MS7315
09.02.2011, 22:54
Hallo,

Danke schonmal für die schnellen Antworten,

@TobiKa

Danke für den Link, ist aber nicht genau das was ich benötige und wie ich es abändern kann weis ich leider nicht...

@PICture

Kannst du mir deine Idee genauer erläutern?
ich bin Gelernter Industriemechaniker bräuchte vll. nen Schaltplan und genaue bezeichung von bauteilen damit ich mich da reinversetzen kann...
und natürlich ne erklärung in Textform... wenns geht...
wäre dir sehr Dankbar...

Gruß Matze

PICture
09.02.2011, 23:19
Sorry, aber ich kann das nicht tun, weil ich deine Elektronikkenntnisse gar nicht kenne und kann mich leider nicht in dich versetzen. :(

Stell dir vor, dass ich als Elektroniker eine automatische Getriebe für mein Auto bauen will (bisher habe ich immer fertige Autos gekauft). Kannst du mir das so erklären, das ich es schaffe und es wie von mir gewünscht funktionieren wird ? ;)

Nach fertigen für dich verständlichen Schaltplänen und Bauanleitungen musst du selber suchen, da ich dir höchstens unausprobierte und für dich wahrscheinlichst unverständliche Schaltung skizzieren könnte.

MfG

Hubert.G
10.02.2011, 10:39
Ich kann mir vorstellen was du gerne möchtest, allerdings ist das ohne µC nur mit großem Aufwand zu erreichen.
Wenn ich dich nämlich richtig verstanden habe, möchtest du eine zufällige Reihung der Relais haben in der sie anziehen sollten.

MS7315
10.02.2011, 11:41
Hallo zusammen,

@PICture

Ja klar verstehe ich... Kein problem...

vll. habe ich mich auch etwas falsch ausgedrückt... es ist nicht so das ich keine Ahnung hab von Elektronik, nur schaltungen entwerfen und sowas ist halt nicht gerade meine Spezialität... ich war 2 Jahre lang auf der Technikerschule Fr. Automatisierungstechnik, da haben wir schon Elektronikkurse gehabt...

Aber hast natürlich recht das wäre zuviel aufwand...

Trotzdem vielen dank...

Werde vermutlich doch mal nen µC ins Auge fassen...

Lg Matze

MS7315
10.02.2011, 11:44
hallo Hubert.G

Genau... die Relais sollen in jedem Durchgang eine Zufällige reihenfolge haben... aber wie gesagt Pro durchgang jedes Relais immer nur 1 mal anziehen...

Ja hab schon bemerkt das das ohne µC Schwer werden wird...

Gruß Matze

oZe
10.02.2011, 14:37
Ja ohne µC wirds wirklich schwer werden. Das steht dann in keiner Relation mehr ;-)
Ich würde dir also auch einen kleinen µC vorschlagen wie z.b. einen AtTiny2313 den du mit 5 Ausgangstransistoren ausstattest an denen deine Relais hängen. Dann noch einen Eingang wählen und schon kanns losgehen.

Softwaremäßig würde ich das einfach so realisieren:

generiere Zufallszahl zwischen 1 und 5
Prüfe ob Zufallszahl schonmal im Zyklus gekommen ist
Falls nicht:
Schalte entsprechenden Ausgang
Falls doch:
Generiere neue Zufallszahl
Speichere Zufallszahl um prüfen zu können ob diese bereits kam.
Verzögere 5 Sekunden

Fertig

hardware.bas
10.02.2011, 19:59
Ich kann oZe nur beipflichten ... nutze einen AVR.
Eine reine Hardwarelösung - ich werde mich hüten, jetzt dazu einen
Schaltungsvorschlag zu machen, da reine Zeitverschwendung - würde
in etwa folgendermassen aussehen.
- mit der Taste direkt schaltbarer Oszillator mit ein paar hundert kHz
- 4-Bit-Zähler mit Rücksetzung auf 10-Zustände (Zufallsergebniss)
- aufwändige Decodierungsschaltung für die Relais, denn es dürfen ja
keine mehrfach anziehen und keine ausgelassen werden
Fazit: ein kleines TTL- bzw. CMOS-Bergwerk. VG Micha

MS7315
12.02.2011, 12:46
Hi leute,

Also wie ich rauslese hab ich mir das wohl etwas zu leicht vorgestellt...

Hab mir jetzt gestern ein Buch über C-Programmierung gekauft...

arbeite mich da jetzt ein und besorg mir dann nen µC

vielen Dank für eure Zahlreichen Antworten...

lg Matze

TobiKa
12.02.2011, 13:10
Sag bescheid wenn es soweit ist.
N Buch hätte aber nicht unbedingt not getan, es gibt auch viele kosntelose Anleitungen.

runner02
12.02.2011, 20:00
Dann könnte ich dir gleich noch einen Tipp geben, wenn es nicht zu spät ist:


Statt C könntest du BASCOM lernen...

Diese Sprache ist um einiges Leichter und es gibt High-Level-Befehle, die dir den Einstieg sehr erleichtern würden...

Also C ist hald Industriestandart und man bekommt Einblicke in die Register und Funktionsweisen. Was sicher nicht schlecht ist.

Einfacher ist es aber allemal, einen Highlevelbefehl wie x = random(0,5) zu benutzen, statt ein Register aus dem Datasheet zu suchen, das eine Zufallszahl generiert, dann das in einer Variable zu speichern, ...

Wenn u also relativ schnell vorankommen willst, würde ich dir wie gesagt zu BASCOM raten...
Willst du die Funktionen und Mechanismen besser verstehen, ist C sicher besser...

TobiKa
12.02.2011, 20:54
@runner02
Hast du überhaupt schonmal in C programmiert?
Wenn ich in C ne Zufallszahl brauch, schreibe ich auch einfach "x = rand(..);"

hardware.bas
13.02.2011, 10:00
Ohne eine Diskussion von Zaun brechen zu wollen, pflichte ich runner02
bei. Als Einstieg empfielt er die Programmiersprache, welche auch
gleich die ersten Erfolge verspricht. Warum kompliziert, wenns auch
einfach - und damit zukünftig trotzdem professionell - geht.
Es soll ja nicht nur eine Zufallszahl generiert werden (diesen Befehl gibt
glaub ich in allen Programmierumgebungen), sondern das Geamtprojekt
realisiert werden. Daher meine Meinung: Ja, nimm BASCOM ... Warum
C(hinesisch) oder kompliziert. VG Micha

TobiKa
13.02.2011, 10:41
Warum einfach, wenn es auch richtig geht :P

oZe
13.02.2011, 12:01
Naja Bascom ist ja nicht unbedingt falsch. Ist eben nicht so hardware nah wie C aber das heißt ja noch lange nicht, dass man nicht mit Bascom anfangen kann und später wenn einen die Hardware mehr interessiert auf C umschwenken kann. Das hat den Vorteil das man schonmal die größten Anfängerhürden wie z.b. Fusebits, Wie flashe ich überhaupt einen Controller etc. überwunden hat.
In meinen Augen ist nichts frustrierender als ein Anfang an dem rein gar nichts funktioniert und man nur Probleme hat. Da is man mit Bascom einfach besser beraten finde ICH.
Aber wie schon erwähnt: Das ist ähnlich wie die Frage "AVR oder PIC". Jeder hat da seinen eigenen Geschmack ;-)

hardware.bas
13.02.2011, 13:55
Tja einfach UND richtig, siehe oben, wie ich schrieb.
Wir wollen ja MS7316 nicht gleich abschrecken.
VG Micha

runner02
14.02.2011, 10:18
Hast du überhaupt schonmal in C programmiert?

Zufallszahlen habe ich noch nie gebraucht...

Output/Input
ADC
Timer

Soweit bin ich in C...
Brauche noch einen besseren Sockel für den Mega8, dann versuch ich mich mal am UART (ohne Interrupts) :)

Darum bin ich jetzt zur Hälfte auf BASCOM umgestiegen...


In meinen Augen ist nichts frustrierender als ein Anfang an dem rein gar nichts funktioniert und man nur Probleme hat.
Dito!

Richard
14.02.2011, 11:20
Ich habe es genau umgekehrt gemacht und bin mit Assembler angefangen. Das war nicht verkehrt, man lehrnt sehr viel über µC und wie sie arbeiten. Allerdings ist es recht mühsam wenn der µC gewechselt wird muss man alle Register neu lernen. :-(

C ist etwas Hardware näher als Basic, auch dort muss man (oft) wieder die Register bei System Wechsel neu lernen. abschreckend ist für (mich) die Syntax von C, man merkt deutlich das c auf einer Englischen Tastatur entwickelt würde....deren Tastatur Belegung ist für C optimal.

Als wieder neu Einsteiger liegt mir Bascom daher auch näher. Allerdings weiß Mensch da leider nicht was wirklich auf dem µC abläuft wenn er Print "Hallo" eingibt! Ein Nachteil wenn es um Zeit kritische Anwendungen geht. :-(

Damals zu PIC Zeiten und Assembler konnte man im Simulator sehr schön sehen wie fiele
Prozessor Takte jeder Befehl so verbraucht hat und entsprechend das Programm anpassen. :-)

Gruß Richard

hardware.bas
14.02.2011, 12:33
Hat ich schon mal geschrieben, in der Meisterschule wurde versucht, uns
ASM beizubringen, meine Mitschuler (ich denk die meissten) und ich
haben ernsthaft versucht, diese Sprache zu begreifen. Nicht ansatzweise
erfolgreich, so wurde es auch aus dem Lehrplan genommen. Als ich
begann, mich mit Mikroprozessoren zu beschäftigen, habe ich versucht
unvoreingenommen PICs, AVRs und Z80 abzuchecken. Ebenso die
Programmierumgebungen C, wie BASCOM. Mit ASM wa ich jedoch aus o.g.
Gründn zu frustriert damit nochmal anzufangen.Tja und dann habe
ich mich entschieden, den praktischen Weg mit BASCOm und dadurch
mit AVRs zu gehen. Daß das klassische BASIC, mit dem ich
"grossgeworden bin", ebenso, wie die anderen Programmiersprachen
(Pascal, Fortran,C u.Co.) eben "nur" Programmiersprachen sind, ist
mir klar und deshalb wollt ich auch nicht ewig C-Controls benutzen,
obwohl die von der hardwaremässigen Ausstattung gar nicht so schlecht
sind, sondern in Maschinensprache programmieren. ASM hatte ich nun
mal nicht begriffen, so dass ich mich für einen der beiden COMPILER!!!
C oder BASCOM entschieden habe und das letztere war das Einzige,
was ich begriffen habe und es funktioniert supi. Jedoch, wie gesagt,
meine eigene Meinung, die sich natürlich in entsprechenden
Empfehlungen meinerseits widerspiegeln muss, ohne an der
Qualität anderer Chips und Programmierumgebungen zu zweifeln,
mitreden kann und werd ich da eh nicht. VG Micha
Systeme

Hubert.G
14.02.2011, 14:53
Zu unserem "Glück ?" habe wir die Möglichkeit aus einer großen Palette auszuwählen.
Meine Meinung zu den vielen Auswahlmöglichkeiten ist die:
Das Schlechteste, mit dem man sich gut Auskennt, ist immer noch besser als das Beste von dem man keine Ahnung hat.
Ich habe mit AVR und Assembler angefangen und programmiere jetzt in C.

Besserwessi
14.02.2011, 17:58
Für die Aufgabe sind BASCOM (auch die eingeschränkte Demo Version) und C geeignet. An die etwas kryptische Schreibweise von C muss man sich erstmal gewöhnen, und gehört einiges an Selbstdisziplin dazu damit die Programme lesbar bleiben. Dann geht es aber. Bei BASCOM muss man sich auch erstmal daran gewöhnen alle Rechnungen in Einzelschritte zu zerlegen. Für die Übersichtlichkeit ist das auch nicht gut.