Christians Webseite        << zurück        vor >>

Tektronix TDS 210

Die TDS 200er Serie kam irgendwann Anfang der 90er Jahre auf den Markt. Es war eines der ersten kostengünstigen Digital-Oszilloskope für private Anwender. Es gab 3 Ausführungen:
TDS210: 60 MHz, 2 Kanäle
TDS220: 100 MHz, 2 Kanäle
TDS224: 100 MHz, 4 Kanäle

TDS 210 TDS 210

Als Option wurden diverse Einschübe angeboten um per Centronics, GPIB oder RS232 alles mögliche fernzusteuern und Daten auszulesen.

TDS2HM: Centronics only
TDS2CM: Centronics, RS-232, GPIB
TDS2MM: Centronics, RS-232, GPIB, FFT-Option

Die Einschub-Module waren noch nie besonders preiswert, mittlerweile werden sie aber mit Gold aufgewogen.

Centronics nach USB Konverter

Drucker-Daten in den PC einlesen.

Die Idee zu dieser Schaltung entstand als ich aus meinem Oszilloskop einen Schnappschuss "absaugen" wollte. Ich hatte ausgerechnet ein Exemplar erwischt das nur einen simplen Centronics-Druckerausgang hat :/

Centronics nach USB Centronics nach USB Centronics nach USB
Centronics nach USB Centronics nach USB

Für solche Fälle gibt es natürlich diverse Umsetzer von parallel auf seriell. Die allermeisten arbeiten aber in der Gegenrichtung und dienen dazu einen Drucker mit Centronics-Eingang an einem PC mit only-USB benutzen zu können. Ich wollte aber Drucker-Daten zurück in den PC einlesen. Erschwerend kommt hinzu dass Centronics ein aussterbender Standard ist und kaum noch Umsetzer angeboten werden, vom Preis ganz zu schweigen.

Aber, kann ja alles nicht so schwer sein. Mein erster Gedanke war das Scope (genauer dessen Centronics-Ausgang) einfach mit dem PC-Centronics zu verbinden. Alle modernen PCs sind schliesslich mit bi-direktionalen Centronics-Schnittstellen ausgestattet (falls noch vorhanden), da kann man prinzipiell auch Daten zurücklesen. Es fehlt jedoch ein wichtiges Detail. Das Timing der Ack-, Busy- und Strobe-Signale ist nicht vorhanden. Im Zeitalter von Windows(10?) und entsprechenden Treiberschichten vor der Druckerkarte wollte ich mir eine Programmierung dieser Signale per Software aber nicht antun.
Andere schwindelige Konstrukte, mit Umwegen über Bluetooth-Karten und ähnlichem, kamen ebenfalls nicht in Betracht.

Wie gut wenn man für solche Fälle einen Atmel-Prozessor im Haus hat und sich mit seiner Programmierung etwas auskennt. Was früher ein Elektronikgrab geworden wäre macht dieses kleinen Kerlchen mit links, und etwas Software.

Im Detail

Der Prozessor ist ein ATmega168. Freundlicherweise enthält er bereits einen UART (=serielle Schnittstelle auf TTL-Pegel). Er überwacht das STROBE Signal, liesst die parallelen Daten ein, bedient ACK und BUSY und sendet die Daten über den UART zum PC. Für das Scope verhält er sich damit wie ein perfekter Drucker.

Auf der seriellen Seite fehlt noch etwas. Da auch die RS232 ihren Zenit überschritten hat, und bei vielen Laptops bereits lange verschwunden ist, habe ich einen USB-Umsetzer hinzugefügt. Dieses IC hat die Bezeichnung FT232RL und stammt von der Firma FTDI. Die Beschaltung ist super simpel, es wird nicht mal ein Quarz benötigt. Über den USB-Port hat man auch direkt die benötigte 5V Versorgung für die gesamte Schaltung zur Verfügung. Im PC verhält sich die virtuelle Schnittstelle wie eine normale RS232-Verbindung. Den zugehörigen Windows-Treiber gibt es auf der FTDI-Webseite zum Download.

Benutzung

Die Aufzeichnung eines Schnappschuss ist simpel: Im PC wird ein Terminalprogramm gestartet, z.B das meist vorhandene HyperTeminal, Parameter 38400,8,N,1. Als COM-Nummer wird der virtuelle USB-Treiber ausgewählt. Der "Geräte Manager" in der Systemsteuerung gibt Auskunft welcher Port zugeordnet wurde. Die Funktion "Textdatei aufzeichen" starten. Am Tektronix als Druckerformat BMP (oder PCX oder EPS) auswählen, danach die Taste HARDCOPY drücken. Nach 10 ... 20 Sekunden sind alle Daten überspielt. Im HyperTerminal die "Textaufzeichnung" beenden. Die gespeicherte Datei enthält direkt die Daten im Format 640 x 480, BMP, S/W.
Ziel erreicht :-).

Software

Die Software ist sehr einfach gestrickt. Die folgenden Signale auf der Centronics-Schnittstelle müssen bedient werden:
- STROBE: Eingang am "Drucker", das Gerät (Sender = Oszilloskop);signalisiert dass es neue Daten senden möchte.
- BUSY: Ausgang des "Druckers", Wartesignal, der "Drucker" signalisiert dass er mit der Verarbeitung beschäftigt ist.
- ACK: Ausgang des "Druckers", der "Drucker" hat die Daten gelesen.
- 8-Bit Daten: Port-Eingang des "Druckers".
- Paper Empty: Nur Richtung Gerät (Sender), fest auf LOW.
- SELECT und ERROR: Nur Richtung Gerät (Sender), fest auf HIGH (über 4k7 Pull-Up Widerstände).

Der Pegel der STROBE-Leitung wird in einer Endlosschleife überwacht. Sobald der Pegel auf LOW geht wird die BUSY-Leitung auf HIGH gesetzt. Danach;die 8-Bit-Daten vom Port einlesen und per serieller Schnittstelle an den FT232RL senden. Nun einen kurzen Low/High Impuls auf ACK senden (am Ende;auf;HIGH belassen). Dieser Impuls sollte eine Dauer von ein paar Mikrosekunden haben. Danach BUSY wieder auf LOW setzen und auf den nächsten STROBE Impuls warten.

Mit einem Interrupt auf die fallende Flanke vom STROBE ginge es auch. Führte bei mir aber zu Problemen mit dem Timing. Der Atmel ist offensichtlich zu flott und man muss diverse Delays einbauen damit alles passt.

Hardware

Die folgenden Bilder zeigen den Aufbau. Als Basis habe ich die Platine von einem (selbstgebautem) Atmel-Programmer-Projekt benutzt. Auf ihr sitzen der ATmega168 und der FTDI mitsamt USB-Buchse. Ansonsten ist nur etwas "Vogelfutter" für diverse Pull-Ups und so notwendig. Etwas aufwändig und lästig war die Verdrahtung der 25 störrischen Adern des Centronics-Kabels.
CDI CDI

Schöner geht immer. Deshalb habe ich die ganze Schaltung auf eine neue, eigene Platine gesetzt.
Centronics nach USB

Einfach auf der Rückseite in den TDS stecken, ein USB-Kabel zum Rechner, und fertig :)

Das Ergebnis sieht so aus:
Centronics nach USB Centronics nach USB

Hier ein Beispiel-Schnappschuss :
Centronics nach USB

Alternativen

(alles ungetestet)

Es geht auch noch einfacher. Die folgende Seite beschreibt einen Konverter der nur mit einem FT254R (von FTDI) arbeitet:
Parallel-Druckdaten auffangen
Auch mit dieser Schaltung werden die Druckdaten aufgefangen und auf einen virtuellen COM-Port geleitet. Von dort kann man die Daten mit einem Terminal-Programm (z.B. HyperTerminal) in eine Datei speichern.

Das Program SPE leitet die seriellen Daten direkt auf einen lokal installierten Drucker um. Damit kann man direkt ausdrucken oder z.B. ein PDF erzeugen.

Ein weiteres Fundstück ist der Parallel To Serial Converter. Dieser arbeitet mit einem PIC Prozessor.

Weiterhin wäre es denkbar einen (Atmel-)Prozessor zu benutzen der bereits ein USB Interface eingebaut hat. Oder einen mit einer USB-Emulation per Software. Das würde zu einer sehr einfachen Schaltung führen.

Centronics Timing

Der Centronics-Quasi-Standard wurde erst mit der IEEE 1284 vereinheitlicht. Bis dahin hatte jeder Hersteller sein eigenes Süppchen gekocht. Das Timing der Steuersignale war zwar ähnlich aber im Detail nicht identisch. Genau diese kleinen Unterschiede können dazu führen dass bestimmte Geräte/Drucker Kombinationen nicht korrekt zusammen spielen. Eventuell hilft es am druckenden Gerät einen anderen Druckertyp auszuwählen.

Einige Beispiele die das Timing beschreiben :

Link 1
Centronics nach USB

Link 2
Centronics nach USB

Link 3
Centronics nach USB

Link 4
Centronics nach USB