Relaisrechner

Seiten: (1) | 2 | 3 | 4 | 5
Zurück zur Startseite

justin

08.06.13 14:39

Tag zusammen,

ich habe in den letzten Wochen (Abiprüfungen vorbei, nichts zu tun) immer mal wieder an einem Relaisrechner gebastelt. Ziel ist, dass er völlig halbleiterfrei wird. Da ich nun den kompletten Logik-teil fertig habe und damit den Rechner schon mal in Betrieb nehmen konnte, wollte ich ihn hier mal vorstellen. Außerdem habe ich noch ein paar Fragen.

Erstmal ein paar schlecht gemachte Fotos:





Der Rechner versteht einen Brainfuckdialekt, weil ich dachte, dass das am einfachsten zu realisieren wäre, allerdings bin ich mir da nicht mehr so sicher. Mit einer anderen Sprache bräuchte man wahrscheinlich weniger Speicher.
Im Unterschied zu Brainfuck sind die Zellen nur 4 Bit groß, außerdem fehlt der Punkt, die Ausgabe läuft über die ersten vier Zellen. Bei drei Bit pro Befehl bleibt dann noch Platz für einen weiteren und weil es ohne ein weiteres Relais hinzuzufügen ging, habe ich eine zweite Sorte Schleifenende hinzugefügt, welche die Schleife in keinem Fall noch einmal ausführt. Man hat also im Prinzip ein
if(*p!=0){ ... }
Das spart immerhin einiges an Speicher und auch an Rechenzeit.
Mit diesem Code führt der Rechner eine 8-bit Addition je nach Takt in wenigen Minuten durch

,+->,+->,+->,+-<<<mem: AhAlBhBl000
>>>[-<<+<+>(<-<+>(<->)>)>>]<<<
>>[-<<+<+>(<->)>>]<<
>[->+<]<
[->+<]
<[->+<]>
,

Das '(' ist dabei synonym mit '[' und das ')' steht für den neuen Befehl. Vor der ersten Zelle befindet sich die Letzte.

Weil der Rechner ja vollkommen frei von Halbleitern sein soll, ist als Speicher für das Programm natürlich einen Lochstreifen vorgesehen. Ich habe mich aufgrund bescheidener mechanisch-handwerklicher Fähigkeiten und weil ich ihn endlich mal im Betrieb sehen wollte, aber entschieden, erstmal einen "Lochstreifenleseremulator" (ist Emulator die richtige Bezeichnung?) auf Basis des Olinuxino Micro zu basteln. Das mag zwar mit Kanonen auf Spatzen geschossen sein (der Olinuxino dürfte wohl je nach Anwendung eine milliarden- bis billionenfache Rechenleistung haben), hat aber den Vorteil, dass man die Programme einfach über das Netzwerk auf den Rechner schieben kann.
Achja, ich kann euch nur empfehlen, nichts annähernd zeitkritisches für Olinuxino in Perl zu schreiben. Das bisschen Pintoggeln brachte die CPU-Last auf 100% und ließ die Ausführungsgeschwindigkeit auf dem Relaisrechner zwischen 10Hz und 1Hz schwanken.
In C++ ist jetzt alles gut.

Wie auch immer, hier noch ein paar Daten:
6,6 Hz Takt (er läuft noch bis ca. 20 Hz, produziert dann aber ab und zu Fehler, da muss ich noch ausführlicher testen)
28 Bit Speicher
maximal 16 ineinander verschachtelte Schleifen
ungefähr 120 Relais

Nun zu den Fragen:
Es fehlen ja noch Netzteil und Lochstreifenleser zu einem tatsächlich halbleiterfreien Rechner.
Wie realisiere ich die beiden am besten?
Ich hatte für den Lochstreifenleser an einen alten VCR gedacht, allerdings ist das Band da schon sehr schmal, es müssen immerhin 4 Bit nebeneinander, ein alter Fotoapparat mit Antrieb wiederum dürfte ein etwas arg kurzes "Band" haben.
Für das Netzteil fielen mir nur Nassgleichrichter ein, aber die sind natürlich recht unhandlich, außerdem dauert es bestimmt eine Weile, bis man es raus hat, wie man die am sinnvollsten baut. Ich bräuchte Spannungen von 12, 24 und 48 Volt, das dürfte etwas knapp für irgendwelche Röhren sein?

Gruß Justin


Jannyboy

08.06.13 14:44

http://mosfetkiller.de/?s=warp-1

Hier hat sich ein Fricklerkollege schon mit beschäftigt...

Halbleiterfrei Gleichrichten


Zuletzt bearbeitet: 08.06.13 14:48 von Jannyboy

derrdaniel

08.06.13 14:51

was wäre mit zwei gekoppelten Motoren? Drehstrom treibt einen Gleichstrommotor an und der gibt den Gleichstrom ab? bei genügend parallelgeschalteten Gleichstrommotoren müsste man auch den Kondensator wegfallenlassen können, oder?

einstein2000

08.06.13 15:09

Cooles Projekt!

48V sind zu knapp für irgendwelche Röhren? Ich habe zwar nur seeehr ansatzweise Ahnung von der Röhrentechnik, aber die Anodenspannung in Radios wurde doch auch mit Röhren gleichgerichtet? Dort herrschen zwar höhere Spannungen, aber technisch müsste das doch funktionieren?

Lg,
Dominic

PS: Viel Glück!

Jan_Tuks

08.06.13 16:06

Wirklich sehr geiles Projekt !

Also was Daniel schrieb: Nennt sich "MotorGenerator"... und das wurde sehr gerne in der alten Röhrentechnik verwendet, wenn das Radio auch noch sendete.
Das Prinzip funktioniert also.
Gleichrichterröhren, Einstein.. das hat den Nachteil, das die meisten erhältlichen Röhren kaum Strom können.
Jedenfalls wird so ein Relaisrechner auch etwas Strom haben wollen..
Und beschaff mal ne Tungar..

Lochstreifen : Bestehen Photowiderstände aus halbleitern ? Meines wissens nicht... Mit denen könntest Du aber ein Relais direkt schalten.

justin

08.06.13 18:17

Die Tungaröhre kannte ich noch garnicht. Die scheint ja an sich am besten geeignet, aber die Beschaffung dürfte, wie Jan schon schrieb wohl ein Problem sein.
Wenn ich mir dieses Angebot angucke, dann würde mich eine Röhre, von der ich nichtmal weiß, ob sie funktioniert, mehr kosten, als der ganze Rechner bisher.

Die Variante Motorgenerator dürfte wohl am Zuverlässigsten sein, allerdings wird das dann wohl auch recht aufwendig. Wie würdet ihr denn so die Erfolgsaussichten für nen Nassgleichrichter einschätzen? Der wäre mir in sofern lieber, als da nichts mit Mechanik rumzumurksen wäre.
Ich muss mal kalkulieren, wie hoch der Verbrauch denn so ist.

Beim Lochstreifenleser hatte ich gedacht, ich käme um Röhren oder Schaltkontakte zum Abtasten nicht drumrum, aber, wenn man mit nem Fotowiderstand auch direkt Relais schalten kann, ist das natürlich bestens.

Den WARP1 kannte ich noch nicht, wohl aber den. Aber die spielen wohl beide in einer anderen Liga, die kann man ja geradezu sinnvoll verwenden. Ich wollte einfach nur einen möglichst simplen turingmächtigen Rechner bauen.

derrdaniel

08.06.13 18:30

Motorgleichrichter wird je nach Verbrauch fast nicht aufwändig (herumliegendes Lego) bis mittelmäßig aufwändig.
schau mal hier herein: http://f3.webmart.de/f.cfm?id=1663923&r=threadview&t=3980897&m=16515981#16515981

Kann man Lochraster auch mit federbelasteten Stiften auslesen, die in den löchern Kontakt zur Unterlage haben und auf dem Papier nicht?

Kuddel

08.06.13 19:27

Kein Plan, ob es geht: Relaisgleichrichter. Es wird ein Gleichspannungsrelais mit magnetsiertem Anker benötigt. Bei Positiver Halbwelle wird es angezogen, bei negativer Halbwelle abgestoßen.
Gruß
Kuddel

Anse

08.06.13 20:02

Wie wäre es mit einem Quecksilbergleichrichter

Jannyboy

08.06.13 20:23

Mechanisch gehts auch...
http://de.wikipedia.org/wiki/Gleichrichter#Mechanische_Gleichrichter

Fritzler

08.06.13 20:38

Wie jetz? Das Ding frisst direkt Brainfuck und Schleifen ohne dass es vorher in Assembler/Maschinencode übersetzt wird?

Haste mal mehr Infos zu Registern/Speicher, befehlsatz und ALU Aufbau?

Jan_Tuks

08.06.13 22:32

Also nicht das ganze irgendwann mal so endet :
http://mycpu.eu/

Allerdings scheint mir die CPU noch relativ "klein" zusein..
Jungs... was haltet ihr davon sowas zum Treffen aus Schützen zu realisieren ?

Damit hätte sich dann die Wandlerproblematik erledigt.. ;-)

lg JAn

justin

08.06.13 23:05

Das mit dem Relaisgleichrichter klingt auch interessant, wenn das ginge, wäre das natürlich optimal, da habe ich alles da. Ich habs grad mal auf die Schnelle ausprobiert (mit Diode vor der Relaisspule), das hat aber nicht so gut geklappt. Bei 24 Vac Eingangsspannung 4 Vdc am unbelasteten Ausgang. Das wird jetzt hauptsächlich am Kondensator liegen. Ich habe aus Angst vor einer Explosion keinen Elko genommen, sondern einen sehr mickrigen Folienkondi. Aber auch mit 1kOhm vor dem Kondensator hatte ich nur 10 Volt, was wohl daran liegen dürfte, dass das Relais ja erst kurz vor dem Nulldurchgang abschaltet (mag sein, dass das Relais auch eh etwas langsam war). Ich habe auch noch eine Induktivität am Ausgang versucht, aber das brachte auch nichts und tut bestimmt den Kontakten des Relais nicht gut.
Egal, ich werde da Morgen im Freien mit dickem Elko nochmal etwas expirimentieren.

Der Brainfuckcode wird für den Rechner nur von den ASCII-Werten in Werte von 0 bis 7 übersetzt, weil es halt etwas blöd wär, ein werweiß wie breites Lochband zu brauchen, nur um jedemenge überflüssigen Kram speichern zu können.
Der C++ Code auf dem Lochstreifenleseremulator sieht so aus.

Schaltpläne existieren, sind allerdings recht zerstückelt und entsprechen nicht ganz dem, was ich dann gebaut habe. Wenn ich mich mal dazu durchringen kann, mach ich die mal ordentlich und lade sie hoch.

Der Rechner besteht jedenfalls aus folgenden Teilen:
Ein Speichermodul mit 32 Bit, von denen vier Bit zum zählen der Schleifen verwendet werden. Der Speicher wird nicht absolut addressiert (außer den vier Bit für die Schleifen natürlich); es kann nur zur nächsten oder vorherigen Zelle gewechselt werden. Erst wollte ich, dass auch jede Zelle nur zwei Leitungen zum in- und dekrementieren hat, das hätte aber zu viele Relais gebraucht.
Deswegen hat der Rechner jetzt noch ein In-/Dekrementiermodul, dessen Name wohl selbsterläuternd ist. Es wird sowohl zum zählen der Schleifen, als auch zum verändern der normalen Speicherzellen genutzt.
Die Steuereinheit steuert das ganze. Sie decodiert die Befehle, wobei +,-,>,< normalerweise einfach an das entsprechende Modul durchgeleitet werden, es sei denn, es wird gerade nach einem Schleifenende oder -anfang gesucht, dann werden sie einfach ignoriert. Das passiert, wenn ein '[' bei *p=0 auftaucht oder ein ']' bei *p!=0.
Die Eingabeeinheit ist ein altes Telefon; über die Wählscheibe gibt man Zahlen ein, bei Einhängen des nicht mehr vorhandenen Hörers wird das Programm fortgesetzt.
Der Lochstreifenleser existiert, wie gesagt, noch nicht.

Das mit den Schützen wäre mal was, aber wie schnell ist so ein Schütz? Ich finde, dieser Rechner ist schon nahe an unerträglich langsam.
Ich denke, ich werde ihn jedenfalls mal mit zum Treffen nehmen.

Jan_Tuks

08.06.13 23:53

Also Schütze sind unendlich langsam.. ;-)
Aber es ging auch mehr darum, den Rechner Meilenweit beim Rechnen zuzuhören.. ;-)

Aber noch mal zu dem Stromversorgungsproblem :
Sind die Relais, die Du verbaut hast, so fix, das sie auf die 50 Hz reagieren ?
Wir reden hier von Relais.. die können normalerweise mit Wechselstrom gefüttert werden... wenn sie langsam genug sind.

lg JAn

Edit : Gerade noch mal gefunden :
http://aturingmachine.com/




Zuletzt bearbeitet: 08.06.13 23:54 von Jan_Tuks

Fritzler

09.06.13 00:10

Jan_Tuks:
Also nicht das ganze irgendwann mal so endet :
http://mycpu.eu/


hehe!
Wintersemester 2014 gibts im Masterstudiengang den Kurs "Mixed Signal Systems" und was wird diesmal gebaut?
Richtig! Ein TTL Rechner!

Zum Thema:
Ein detailierter Schaltplan muss das jetz nich sein, ein Blockschaltbild reicht.
Der Aufbau is mal anders zu dem wasses sonst so an CPUs gibt

Zurück zur Startseite
Seiten: (1) | 2 | 3 | 4 | 5