Eine ältere Version des Dokuments wurde geladen! Beim Speichern wird eine neue Version des Dokuments mit diesem Inhalt erstellt. Dateiauswahl====== HEX-BIN-Trainer ====== Ein Teilprojekt im Dunstkreis der Ausstellung zur [[veranstaltungen:2wickl2014|2wickl2014]]. ===== 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 (->[[projekte:jubelbox|Jubelbox]]) sowie zeitgleich eine neue Zufallshexzahl ermittelt.\\ ===== Umsetzung ===== ==== 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**.\\ Daher wurde die 2. Lösung gewählt. ==== Nostalgieansatz: TTL/CMOS-Grab ==== 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 C-MOS 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ähler, dessen 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 dar Datenbits aus dem EPROM schaltet masseseitig über einen BS170 MOS-FET ein Segment, bzw. den Dezimalpunkt, der Anzeige. Nachdem die Einzelsegmente aus vier in Serie geschalteten LEDs bestehen, werden diese an der gemeinsamen Anode direkt aus 12V versorgt. Bipolartransistoren (unbekannten Typs) in jedem Zweig bilden eine Art diskretem Stromspiegel mit starker Gegenkopplung. Damit kann die Helligkeit aller Segmente gemeinsam über einen Refernzstrom einigestellt werden. Parallel zum Anzeigedekoder liegt die Zufallzahl an einem 4585 vier Bit Vergleicher an. === Anzeige === 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 == **Segmentpositionen** | |a| | | |f| |b| | | |g| | | |e| |c| | | |d| |dp| Warheitstabelle für die Segmentausgänge, nur die untersten 4 Adressbits sind benutzt, der Rest ist 0.\\ {{ :projekte:eproms.jpg?direct&100|}} ^Addr\\ hex^D7^D6^D5^D4^D3^D2^D1^D0^Byte\\ hex^ ^ ^a^b^c^d^e^f^g^dp^ ^ |**0**|1|1|1|1|1|1|0|0|**FC**| |**1**|0|1|1|0|0|0|0|0|**60**| |**2**|1|1|0|1|1|0|1|0|**DA**| |**3**|1|1|1|1|0|0|1|0|**F2**| |**4**|0|1|1|0|0|1|1|0|**66**| |**5**|1|0|1|1|0|1|1|0|**B6**| |**6**|1|0|1|1|1|1|1|0|**BE**| |**7**|1|1|1|0|0|0|0|0|**E0**| |**8**|1|1|1|1|1|1|1|0|**FE**| |**9**|1|1|1|1|0|1|1|0|**F6**| |**A**|1|1|1|0|1|1|1|0|**EE**| |**B**|0|0|1|1|1|1|1|0|**3E**| |**C**|1|0|0|1|1|1|0|0|**9C**| |**D**|0|1|1|1|1|0|1|0|**7A**| |**E**|1|0|0|1|1|1|1|0|**9E**| |**F**|1|0|0|0|1|1|1|0|**8E**| Ein kleiner Bitfehler hatte sich noch eingeschlichen, das **F** war ein **P**. Ist oben in der Tabelle und auch in den EPROMS korrigiert.\\ Ich hatte noch drei "kleine", fast schon historische, EPROMS rumliegen, die ich mit den Dekoderdaten gefüttert habe. Ein 2716 (2kByte) und zwei 2732 mit ganzen 4kByte Kapazität.\\ So alte EPROMS programmiert man natürlich stilecht mit legacy Hardware :-). {{ :projekte:legacy_eprom_brenner.jpg?direct&200 |}} === Auswertung === 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 === 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. ==== Aufbau ==== 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 ... What's the answer to life, the universe and everything? Dieses Feld bitte leer lassen:SpeichernVorschauAbbrechen Zusammenfassung projekte/hex_trainer.1413741787.txt.gz Zuletzt geändert: 2014/10/19 18:03von mirwi