projekte:hex_trainer

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
projekte:hex_trainer [2014/10/19 16:47] – [Grundidee] 89.204.130.105projekte:hex_trainer [2020/09/09 17:23] (aktuell) – ↷ Links angepasst weil Seiten im Wiki verschoben wurden noby
Zeile 1: Zeile 1:
 ====== HEX-BIN-Trainer ====== ====== HEX-BIN-Trainer ======
 +[[en:projekte:hex_trainer|(English version)]]
  
-Ein Teilprojekt im Dunstkreis der Ausstellung zur [[veranstaltungen:2wickl2014|2wickl2014]]. +**Koch:** mirwi\\  
 +Ein Teilprojekt im Dunstkreis der Ausstellung zur [[veranstaltungen:2wickl2014|2wickl2014]].\\ 
 +Später eingesetzt beim [[veranstaltungen:32c3|32C3]].
 ===== Grundidee ===== ===== Grundidee =====
-"Binary Kitchen lehrt hexadezimale und binäre Zahlendarstellung". Auf einer 7-Segmentanzeige wird ein zufällig gewürfeltes HEX Zeichen angezeigt. Die Nutzer müssen nun diese Zahl in Binärdarstellung eingeben. Fürs Zwickl geschah dies über vier Fussschalter. Bei richtigem Bit-Muster wird für eine gewisse Zeit eine Aktion ausgelöst (Jubelbox) sowie zeitgleich eine neue Zufallshexzahl ermittelt.\\+"Binary Kitchen lehrt hexadezimale und binäre Zahlendarstellung". Auf einer 7-Segmentanzeige wird ein zufällig gewürfeltes HEX Zeichen angezeigt. Die Nutzer müssen nun diese Zahl in Binärdarstellung eingeben. Fürs Zwickl geschah dies über vier Fussschalter. Bei richtigem Bit-Muster wird für eine gewisse Zeit eine Aktion ausgelöst (->[[projekte:jubelbox|Jubelbox]]) sowie zeitgleich eine neue Zufallshexzahl ermittelt.\\ 
 ===== Umsetzung ===== ===== Umsetzung =====
 ==== Primitivansatz: uC - langweilig ==== ==== Primitivansatz: uC - langweilig ====
 Eine einfache Umsetzungsmöglichkeit wäre, die Anzeige und die nötigen Eingabeschalter einfach an einen kleinen uC zu hängen und die primitive Funktionalität mit ein paar Zeilen Code abzubilden. Das wäre Stand der Technik ist aber **langweilig**.\\ Eine einfache Umsetzungsmöglichkeit wäre, die Anzeige und die nötigen Eingabeschalter einfach an einen kleinen uC zu hängen und die primitive Funktionalität mit ein paar Zeilen Code abzubilden. Das wäre Stand der Technik ist aber **langweilig**.\\
-Daher ziele ich auf die 2. Lösung ab.+Daher wurde die 2. Lösung gewählt.
  
 ==== Nostalgieansatz: TTL/CMOS-Grab ==== ==== Nostalgieansatz: TTL/CMOS-Grab ====
-Viel Lustiger ist es, die nötige Schaltung diskret, naja schon mit IC's, aber eben mit althergebrachten Logikschaltkreisen, aufzubauen. Der Aufbau kann damit schön nach Funktionsgruppen getrennt erfolgenanhand derer die Funktion der Schaltung dem geneigten Publikum auch erklärt werden kann. Bei genauerer Betrachtung ist die Anzahl an Bausteinen auch eigentlich sehr überschaubar... +Viel Lustiger ist es, die nötige Schaltung diskret, naja schon mit IC's, aber eben mit althergebrachten Logikschaltkreisen, aufzubauen. Ausserdem war es mal wieder interessant etwas in diesem Modus zu machen: Lochraster mit einigen gelöteten Leiterbahnen, der Rest mit Kupferlackdraht "geroutet"
 + 
 +=== Schaltungsbeschreibung === 
 +Zwei der vier NAND Gatter eines 74HC00 bilden einen standard CMOS RC-Oszillator mit ca. 40 kHz. Über einen der NAND-Eingänge kann er aktiviert bzw. ausgeschaltet werden. Dieser Takt speist einen 4040 11-Bit Binärzählerdessen niederwertigste vier Bit die "Zufallszahl" bilden. 7-Segment Treiber, die den vollen Hex-Zeichensatz darstellen, sind schwer zu bekommen. Als Alternative wurde der Dekoder über ein altes 2732 EPROM realisiert, bei dem nur die ersten 16 Byte im Speicher mit Daten belegt sind. Jedes der Datenbits aus dem EPROM schaltet masseseitig über einen BS170 MOS-FET ein Anzeigesegment, bzw. den Dezimalpunkt (wenn auch bisher nicht benutzt). Die Einzelsegmente des verwendeten großen Displays bestehen aus vier in Serie geschalteten LEDs. Die für alle Segmente gemeinsame Anode wird daher direkt mit +12V gespeist. Bipolartransistoren (unbekannten Typs) in jedem Zweig bilden eine Art diskretem Stromspiegel mit starker Gegenkopplung. Damit kann die Helligkeit aller Segmente gemeinsam über einen Referenzstrom einigestellt werdenParallel zum Anzeigedekoder liegt die Zufallzahl als Referenzwert an einem 4585 vier Bit Vergleicher an. Der andere Satz Vergleichereingänge ist mit Pull-Down-Widerständen und den nach +5V schaltenden Eingabetasten belegtDer "Werte sind gleich" Ausgang Triggert eines der beiden Monoflops in einem 74HC123, dessen Zeitkonstante die Einschaltdauer des Aktionsausgangs bestimmt. Über einen kräftigeren MOS-FET (IRF640) wird die externe Last gegen Masse geschaltet. Gleichzeitig wird der Taktgenerator am Zähler aktiviert. D.h. während dieser Zeit läuft die Anzeige mit hoher Geschwindigkeit durch und alle Segmente erscheinen aktiviert.
  
-=== Zufallsgenerator: === +**TODO:** Schaltplan zeichnen.
-Ein einfacher Oszillator speist einen Binärzähler. Wird der Oszillator angehalten, so steht in den unteren 4 Bit des Zählers das Zufallsmuster stabil an. Wenn der Oszillator hineichend schnell im Vergleich zum Aktivierungspuls/Einschaltsignal ist, besonders wenn dessen Länge auch einem gewissen Jitter unterliegt, ist das 4 bit Ergebnis quasi zufällig.\\  +
-**4040** (Counter), externer Oszillator **74HC00**\\+
  
-=== Anzeige === +**Ausbaumöglichkeiten:** Die nächst höherwertigen Bits aus dem Zähler können auch noch zur Adressierung des EPROMS benutzt werden und verschiedene "Spielmodi" auswählenDurch entsprechende Anzeigedekodierung wäre neben HEX->BIN auch HEX-> NOT(BIN), BIN bitgeschoben, Paritätsbit (gerade/ungeradean bestimmten Positionen ... möglich.
-Mit einem HEX fähigem 7-Segment-Treiber sollte aus dem 4-bit "Soll-Wert" direkt die Anzeige angesteuert werden. Aber an HEX fähigen Treibern habe ich nur den **4311 oder 4368** gefunden, die aber bei den einschlägigen Versandhändlern nicht erhältlich sind.\\  +
-Daher benutze ich hier eine Fallbacklösung. Die **Warheitstabelle des Segmentdekoders wird einfach in ein EPROM programmiert.** Die 8 Datenbits passen wunderbar zu den 7 Segmenten + Dezimalpunkt (der aber nicht benutzt wird :-)). Die Datenleitungen des EPROMS steuern über weitere Transistorteiber die Segmente des Displays.\\ +
  
 == 7segment Decoderprogrammierung für das EPROM  == == 7segment Decoderprogrammierung für das EPROM  ==
Zeile 54: Zeile 56:
 {{ :projekte:legacy_eprom_brenner.jpg?direct&200 |}} {{ :projekte:legacy_eprom_brenner.jpg?direct&200 |}}
  
 +==== Aufbau auf Lochraster ====
  
-=== Auswertung === +{{ :projekte:binhexplatine.jpg?direct&200 |}}
-Vier Bit Vergleicher, was sonst.\\ +
-**4585** (Vergleicher)\\ +
-<del>Auslösetaste mit</del> Mindestbetätigungsdauer über RC <del>und Smidttrigger</del>. Der Ausgang des Vergleichers muss also für eine bestimmte Zeit stabil ein "richtig" ausgeben.\\+
  
-=== Aktuator === +==== Der ganze Aufbau beim 32C3 ==== 
-Liegt lange genug ein korrektes Vergleicherergebnis an, soll mit einem (retriggerbaren) Monoflop (74..123 liegt rum) für eine bestimmte Zeit der "Aktionsausgang" aktiv werden. Gleichzeitig wird der Oszillator im Zufallsgenerator wieder freigegeben, so dass am Ende der Aktionsphase eine neue HEX-Kodezahl für die nächste Runde ansteht.+{{ :projekte:jubelbox32c3.jpg?direct&400 |}}
  
-==== Aufbau ==== +[[http://www.digitale-notdurft.de/2015/12/30/binaerzeuch-mit-jubelbox-32c3/|Bild bei digitale-notdurft.de]]
-Da es sich um ein Einzelstück handeln wird, mache ich das auf Lochraster. Nicht weil ich den Aufwand einer "richtigen" Platine scheue, sondern aus Spaß und nostalgischen Anwandlungen. Und weil ich für alles andere sowiso zu spät dran bin ...+
  
 +[[https://twitter.com/derfnull/status/681958423626387457|Hübsches Bild bei Twitter]]
  • projekte/hex_trainer.1413737259.txt.gz
  • Zuletzt geändert: 2014/10/19 16:47
  • von 89.204.130.105