Nachbau eines Kenbak-1

Der Kenbak-1, welcher 1971 von John V. Blankenbaker entwickelt wurde, gilt als der erste "Personal Computer" der Welt. (Details siehe: Wikipedia-Artikel über Kenbak-1).
Mark Wilson hat im Jahr 2011 einen Nachbau (d.h. Emulation) auf Basis eines Arduinos durchgeführt, der sogenannte Kenbakuino der hier nachgebaut und ausprobiert werden soll.

Der originale Kenbak-1
Abb.: Der originale Kenbak-1

Betrieb

Erweiterungen des KENBAKuino

Zusätzlich zu den Original-Funktionen des Kenbak-1 verfügt der KENBAKuino über einige Erweiterungen. Ich stelle diese nur in einer kurzen Übersicht vor, weitere Details können auf der Dokumentations-Seite des KENBAKuino nachgelesen werden.

Prototyp auf dem Breadboard

Verwendete Bauteile

Aufbau der Schaltung

Der Aufbau basiert auf dem Schaltplan von Mark Wilson, jedoch wird hier ein kompletter Arduino Uno/Nano verwendet und kein einzelner ATMega328.
Achte auf die Reihenfolge der Bits bei den Mikrotastern!

                 +-----------+
                 |  Arduino  |
                 |    Uno    |
                 |           |
                 |         11+-------<LED11 "RUN">
                 |         A3+-------<LED10 "MEM">
                 |         A2+-------<LED9  "ADDR">
                 |         A1+-------<LED8  "INP">
                 |           |
                 |           |        +-----------+
                 |           |        |    595    |
                 |         10+--------+SH(11)   Q0+----<LED0 "Bit0">
                 |          9+--------+ST(12)   Q1+----<LED1 "Bit1">
                 |          8+--------+DS(14)   Q2+----<LED2 "Bit2">
                 |           |  [+5V]-+Vcc(16)  Q3+----<LED3 "Bit3">
                 |           |  [GND]-+Gnd(8)   Q4+----<LED4 "Bit4">
                 |           |  [+5V]-+MR(10)   Q5+----<LED5 "Bit5">
                 |           |  [GND]-+OE(13)   Q6+----<LED6 "Bit6">
                 |           |        |         Q7+----<LED7 "Bit7">
                 |           |        +-----------+
+------+         |           |
| RTC  |         |           |             +-----------+
|   SDA+---------+A4         |             |   165-1   |
|   SCL+---------+A5       A0+-------------+Q7(9)    D0+----<SW0 "Bit0">
|   Vcc+-[+5V]   |         13+-----+-------+CP(2)    D1+----<SW1 "Bit1">
|   Gnd+-[GND]   |         12+--+  |       |         D2+----<SW2 "Bit6">
+------+         +-----------+  +--|-------+PL(1)    D3+----<SW3 "Bit7">
                                |  | [GND]-+Gnd(8)   D4+----<SW4 "Bit4">
                                |  | [GND]-+CE(15)   D5+----<SW5 "Bit5">
                                |  | [+5V]-+Vcc(16)  D6+----<SW6 "Bit2">
                                |  |    +--+DS(10)   D7+----<SW7 "Bit3">
                                |  |    |  +-----------+
                                |  |    |
                                |  |    |
                                |  |    |  +-----------+
                                |  |    |  |   165-2   |
                                |  |    +--+Q7(9)    D0+----<SW8  "STOP">
                                |  +-------+CP(2)    D1+----<SW9  "STRT">
                                |          |         D2+----[GND]
                                +----------+PL(1)    D3+----<SW10 "CLR">
                                     [GND]-+Gnd(8)   D4+----<SW11 "DISP">
                                     [GND]-+CE(15)   D5+----<SW12 "SET">
                                     [+5V]-+Vcc(16)  D6+----<SW13 "READ">
                                           |         D7+----<SW14 "STOR">
                                           +-----------+


Details:
                   _  (Mikrotaster)
                  + +
--<SWx>      --+--+ +----[+5V]
               |
               +-[10kΩ]--[GND]

--<LEDx>     --[220Ω]--[LED]--[GND]

Test-Programm

Um zu testen, ob alle Verbindungen und Anschlüsse richtig verdrahtet sind, habe ich ein kleines Demo-Programm gesucht und Folgendes gefunden:

003	00000011	SET
004	00000100	STOR
103	01000011	STOR
			CLR
001	00000001	STOR
134	01011100	STOR
			CLR
200	10000000	STOR
344	11100100	STOR
			CLR
004	00000100	STOR
			STRT

Der Oktal-Wert in der ersten Spalte ist der eigentliche Befehl, jedoch ist es einfacher für Leute, die im Kopf nicht so gut oktal zu binär konvertieren können (wie ich), den Binärcode direkt daneben zu notieren. Also müssen nacheinander die Bits gesetzt werden und danach die entsprechende Steuertaste gedrückt werden. Wenn alles richtig eingegeben wurde und STRT betätigt wird (letzter Befehl), dann sollte ein Zähler hochtickern (siehe folgendes Video)

Video: Programmierung des Kenbakuino mit einem einfachen Demo-Programm (Zähler)

Nachbau des KENBAKuino

Verwendete Bauteile

Da im Prototyp einige andere Teile zum Einsatz gekommen sind, hier noch einmal eine vollständige Liste aller benötigten Komponenten auf einen Blick:

Letztlich habe ich mich nicht für das "Panel Kunststoffgehäuse 159 x 139 x 59mm schwarz" entschieden, sondern aus dünnem MDF eine kleine Kiste gebaut, indem die Elektronik Platz finden sollte.
Eine Beschriftung für die Frontseite durfte auch nicht fehlen und kann hier druckfertig heruntergeladen werden:

Frontpanel des KENBAKuino [20kB]
Frontpanel des KENBAKuino [27kB]

Eigenbau

Kenbak-Nachbau: Erste Platine für LEDs und Taster
Abb. 1: Fast fertige Bestückung von LEDs und Tastern für die erste Front-Platine (Bits 7, 6, 5, 4, 3).
Kenbak-Nachbau: Hauptplatine für Arduino und Schieberegister
Abb. 2: Hauptplatine für mit Sockeln für den Arduino Nano und die drei Schieberegister: 2x 74HC165 und 74HC595.
Kenbak-Nachbau: Drei Front-Platinen für LEDs und Taster
Abb. 3: Die drei Front-Platinen, die für alle Status-LEDs und die Taster verwendet werden.
Kenbak-Nachbau: Rückseite der Hauptplatine
Abb. 4: Fertig gelötete Rückseite der Hauptplatine mit den Sockeln für den Arduino Nano und die drei Schieberegister.
Kenbak-Nachbau: Erste fertige Front-Platine mit LEDs und Tastern
Abb. 5: Erste fertige Front-Platine mit LEDs und Tastern (Bits 7, 6, 5, 4, 3).
Kenbak-Nachbau: Fertig bestückte und gelötete Front-Platinen
Abb. 6: Fertig bestückte und gelötete Front-Platinen mit allen Status-LEDs und Tastern.
Kenbak-Nachbau: Front-Platinen werden mit Hauptplatine verbunden
Abb. 7: Erste Kabel werden zwischen den Front-Platinen mit der Hauptplatine verbunden.
Kenbak-Nachbau: Kabel zwischen Front-Platinen, DC1307 und Hauptplatine
Abb. 8: Fast fertig verbundene Kabel zwischen Front-Platinen, RTC-Modul DC1307 und Hauptplatine.
Kenbak-Nachbau: Gebohrte Löcher der Front-Seite
Abb. 9: Gebohrte Löcher der Front-Seite für 3mm-LEDs und Mikrotaster.
Kenbak-Nachbau: Front-Platinen werden mit Frontseite verbunden und die Box zusammengesetzt
Abb. 10: Front-Platinen werden mit Frontseite verbunden und die Box zusammengesetzt.
Kenbak-Nachbau: Die Box ist fertig und die Elektronik eingebaut
Abb. 11: Die Box ist fertig und die Elektronik eingebaut. 2 Magneten sollen den Deckel am Gehäuse halten.
Kenbak-Nachbau: Fertiger Kenbak-Nachbau mit Deckel vor dem ersten Test
Abb. 12: Fertiger Kenbak-Nachbau mit Deckel vor dem ersten Test
Kenbak-Nachbau: Front-Ansicht des Kenbak-Nachbaus
Abb. 13: Front-Ansicht des Kenbak-Nachbaus.
Kenbak-Nachbau: Front-Ansicht des Kenbak-Nachbaus
Abb. 14: Front-Ansicht des Kenbak-Nachbaus.
Kenbak-Nachbau: Rückseite des Kenbak-Nachbaus mit Mikro-USB-Buchse des Arduino Nano
Abb. 15: Rückseite des Kenbak-Nachbaus mit Mikro-USB-Buchse des Arduino Nano.

Inbetriebnahme: Obwohl ich den Nachbau vor dem Einbau in den Kasten einer erfolgreichen Funktionsprüfung unterzogen hatte, machte der erste Test einige Probleme. Anscheinend sind beim Zusammenbau Lötstellen zerstört worden. Hier muss ich noch die Fehler finden...

Kenbakuino als SMD-Version

Nach dem Bau ist mir die Idee gekommen, eine einzige Platine mit SMD-Bauteilen zu erstellen, die als Kenbakuino dient. Zunächst habe ich mit EasyEDA einen Schaltplan und daraufhin ein Layout für eine SMD-Platine entworfen.

Schaltplan des SMD-Kenbakuino
EasyEDA-Schaltplan für SMD-Kenbakuino [132kB]

Platinen-Layout

Platinenlayout des SMD-Kenbakuino
Abb.: Platinenlayout des SMD-Kenbakuino
Vorschau der Platine für den SMD-Kenbakuino
Abb.: Vorschau der Platine für den SMD-Kenbakuino
3D-Ansicht der Platine für den SMD-Kenbakuino
Abb.: 3D-Ansicht der Platine für den SMD-Kenbakuino
EasyEDA-Platinenlayout für SMD-Kenbakuino [604kB]
Gerber-Dateien für SMD-Kenbakuino [44kB]
Fertiger SMD-Kenbakuino
Abb.: Fertiger SMD-Kenbakuino mit allen angelöteten Bauteilen.
Detailansicht des SMD-Kenbakuino
Abb.: Detailansicht des SMD-Kenbakuino
Detailansicht des SMD-Kenbakuino
Abb.: Detailansicht des SMD-Kenbakuino
Detailansicht des SMD-Kenbakuino
Abb.: Detailansicht des SMD-Kenbakuino
Detailansicht des SMD-Kenbakuino
Abb.: Detailansicht des SMD-Kenbakuino
Detailansicht des SMD-Kenbakuino
Abb.: Detailansicht des SMD-Kenbakuino

Hinweis: Leider ist mir im Design der Platine ein Fehler unterlaufen. Die LEDs für die Bits sind in der falschen Reihenfolge angebracht, während die Mikrotaster richtig liegt. Daher muss man bei der Programmierung nicht den LEDs sondern den Knöpfen folgen.

Video: Programmierung des SMD-Kenbakuino mit einem einfachen Demo-Programm (Zähler)

Weiterführende Links

zurück