ebps.de.vu > Bastelecke > Tischrechner-Drucker

Tischrechner-Drucker

Beschreibung

Seit längerem schon liegt bei mir ein ungenutzter Tischrechner mit Drucker herum, genauer der HR-8TER von Casio. Also habe ich überlegt, ob man nicht mit dem Drucker etwas anfangen könnte. Relativ schnell wurde klar, dass der Drucker vom Rechner angesteuert nicht besonders nützlich sein würde, die Verwendung des kompletten Rechners mit dem PC-Interface war also schonmal nicht möglich.

Dann kam ich auf die Idee, den Drucker komplett aus dem Rechner zu entfernen und zu versuchen, ihn selbst anzusteuern. Kurz darauf hatte ich den Drucker vom Typ Epson M-31A vor mir auf dem Tisch stehen und soweit zerlegt, dass man sehen konnte, wohin die 8 Leitungen des Flachbandkabels führen. Zwei davon gehen deutlich sichtbar zum Motor, zwei verschwinden irgendwo im Getriebe auf der linken Seite und vier sind mit einem flachen Plastikteil auf der rechten Seite verbunden, welches sich beim Zerlegen als Schleifkontakt offenbart. Auf der Platine, über die die Schleifkontakte schleifen, befinden sich drei Ringe (jeder für einen Kontakt), zwei davon aufgeteilt in je 14 gegeneinander versetzte, schmale Streifen, der dritte enthält nur ein einziges Segment, welches etwa so breit wie der Abstand zwischen zwei der schmalen Streifen auf den anderen Ringen ist.

Aufbau des Druckers

Diese drei Schleifkontakte (die vierte Leitung ist der gemeinsame Anschluss für die drei "Schalter") liefern die Information, an welcher Stelle sich die Typenräder des Druckers gerade befinden - der Ring mit nur einem Segment kennzeichnet den Start einer neuen Umdrehung, die anderen beiden Ringe geben Anfang und Ende der Zeichen an. Die zwei Leitungen, die im Getriebe verschwinden, enden an einem Elektromagnet, der betätigt wird, um ein Zeichen zu drucken oder einen Zeilenvorschub einzuleiten, denn der Motor des Druckers läuft durchgehend (man könnte ihn also theoretisch auch durch eine Kurbel ersetzen ;-)). Zunächstmal also die Anschlussbelegung des Kabels (von rechts nach links!):

  1. Elektromagnet
  2. Elektromagnet
  3. Motor Plus
  4. Motor Minus
  5. Schleifkontakt "Zeichen Ende"
  6. Schleifkontakt "Anfang der Umdrehung"
  7. gemeinsamer Schleifkontakt-Anschluss
  8. Schleifkontakt "Zeichen Anfang"

Ansteuerung

Mit 3 LEDs an den Schleifkontakten und einem Taster am Elektromagneten ermittelte ich, wie alles zusammenhängt (den Motor habe ich dabei von Hand ganz langsam gedreht, um beobachten zu können, wann die LEDs an- und ausgehen und was sich dabei im Drucker bewegt). Nach einer Weile kam ich dabei zu diesem Ergebnis:

Position finden

Der Schleifkontakt "Anfang der Umdrehung" schließt am Anfang jeder Umdrehung der Typenrollen. Fast gleichzeitig schließt "Zeichen Anfang". Das jeweils erste Zeichen auf den beiden Typenrollen ist jetzt in Position vor dem Papier. Soll eines der folgenden Zeichen gedruckt werden, kann man einfach die richtige Anzahl der Impulse des "Zeichen Anfang"-Schleifkontakts abwarten.

Zeichen drucken

Elektromagnet einschalten, sobald "Zeichen Anfang" schließt und sofort wieder abschalten, wenn "Zeichen Ende" schließt. Das Zeichen wird dann gedruckt, indem der Plastik-"Hammer" in der Typenrolle das Typengummi gegen das Papier drückt. Anschließend wird der Wagen automatisch um ein Zeichen nach links bewegt. Erst dann dreht sich die Typenrolle weiter, schaltet man also beim nächsten Schließen des "Zeichen Anfang"-Kontakts den Elektromagnet sofort wieder ein, wird das Zeichen gedruckt, welches auf der Typenrolle direkt auf das soeben gedruckte folgt. Es ist also nicht nötig, nach jedem Druckvorgang auf den Anfang einer neuen Umdrehung zu warten, wenn das nächste Zeichen in der Reihenfolge hinter dem bereits gedruckten liegt.

Zeilenumbruch

Um einen Zeilenumbruch zu erzeugen, wird der Elektromagnet beim Drucken des letzten (linkesten) Zeichens in der Zeile noch nicht abgeschaltet, wenn "Zeichen Ende" schließt, sondern erst, wenn anschließend "Zeichen Anfang" zum zweiten Mal schließt. Anschließend muss nochmal ca. 100 ms gewartet werden, bis der Zeilenumbruch fertig ist, bevor man mit der nächsten Zeile fortfahren oder den Motor abschalten kann.

Zeichensatz

Der Drucker besitzt zwei nebeneinanderliegende Typenrollen, hat also auch zwei Zeichensätze. Die eine Typenrolle wird nur in der Spalte ganz rechts (für das erste gedruckte Zeichen, denn der Drucker druckt von rechts nach links!) verwendet, anschließend schiebt die Mechanik zwar den Wagen mit dem Hammer, aber noch nicht die Typenrolle weiter, so dass für die bis zu 17 folgenden Zeichen die zweite Typenrolle verwendet wird. Folgende Zeichen können gedruckt werden (in der Reihenfolge, wie sie auf den Rollen erscheinen, angefangen mit dem Zeichen, bei dem "Anfang der Umdrehung" schließt):

Rolle Zeichen
erstes Zeichen (rechts) T + × ÷ * N M C = (leer) %
weitere Zeichen # 0 1 2 3 4 5 6 7 8 9 ,

Hinweise

Der Drucker weist ein paar Besonderheiten auf, auf die ich hier nochmal hinweisen möchte. Die wichtigste Eigenschaft, die man beim Erstellen eines Programms zur Ansteuerung beachten muss ist wohl die ungewohnte Druckrichtung von rechts nach links, die aber natürlich für das Drucken von Zahlen gut geeignet ist. Außerdem ist es etwas gewöhnungsbedürftig, dass das erste/rechteste Zeichen in jeder Zeile aus einem anderen Zeichensatz stammen muss als die anderen. Hinzu kommt, dass nur dieser "Sonderzeichen-Zeichensatz" das Leerzeichen enthält - linksbündig ausgerichtete Zeilen sind also nicht möglich! Tatsächlich hatte der Tischrechner jedoch eine Funktion, um genau dies zu erreichen, hier wurde der überschüssige Platz rechts mit Punkten gefüllt.

Die Möglichkeit, ganz rechts ein Leerzeichen drucken zu können, ist übrigens unbedingt notwendig, was der nächsten Besonderheit zu verdanken ist: ein Zeilenumbruch kann nicht erfolgen, ohne zuerst mindestens ein Zeichen zu drucken. Um einen einfachen Papiervorschub zu erreichen, muss man also ein Leerzeichen, gefolgt von einem Zeilenumbruch, drucken. Gleichermaßen muss man auch beim Zeilenumbruch aufpassen: schon vor dem Drucken des letzten Zeichens muss bekannt sein, ob auf dieses ein Zeilenumbruch folgen soll.

AVR-Programm

Um meine Erkenntnisse über die Ansteuerung des Druckers auszuprobieren, habe ich ein AVR-Programm geschrieben, welches eine Zeile per RS232 einliest und dann ausdruckt, sofern die passenden Zeichen auf dem Drucker bereitstehen. Zeichen, die nicht gedruckt werden können, werden durch das erste Zeichen im Zeichensatz ("T" ganz rechts, "#" für alle anderen Spalten) ersetzt, es ist also ratsam, dass das Programm auf der anderen Seite der RS232-Verbindung die Zeichenkette vor dem Senden an den AVR selbst überprüft. Das gilt insbesondere für das letzte Zeichen (Zeichen ganz rechts), soll hier keines der Sonderzeichen gedruckt werden, muss hinter den Ziffern ein Leerzeichen folgen. Endet hingegen die gesendete Zeichenkette mit einer Ziffer, wird versucht, diese in die Spalte ganz rechts zu drucken, was jedoch nicht möglich ist - es wird ein "T" anstelle der Ziffer gedruckt.

Ist die gesendete Zeile kürzer als 18 Zeichen, wird sie rechtsbündig ausgerichtet, ist sie länger, werden nur die ersten 18 Zeichen (von links gezählt) gedruckt. Am Ende der Zeichenkette muss CR (ASCII 0x0d) oder LF (ASCII 0x0a) gesendet werden, erst dann wird mit dem Drucken begonnen (da ja rechtzeitig bekannt sein muss, auf welches Zeichen der Zeilenumbruch folgt). Wird eine leere Zeichenkette gesendet (nur CR oder LF), so wird automatisch ein Leerzeichen gedruckt, damit ein Zeilenvorschub möglich wird. Wird der Text manuell in einem Terminal-Programm eingegeben, kann man Tippfehler mit Backspace noch korrigieren, bevor man Enter drückt.

Fotos

[Foto]
800 | 1280
Der Drucker beim händischen Ausprobieren der Funktionen.
[Foto]
800 | 1280
Der Wagen mit den beiden Typenrollen, der Farbrolle (unter den Typenrollen) und dem Hammer mit zusätzlicher Nase, um das Papier geradezudrücken.
[Foto]
800 | 1280
Das komplizierte Getriebe des Druckers mit eingebautem Elektromagnet.

Links