Schwarz, elegant, formschön. So sieht der Power-User seinen HP-48. Wer dieses Gerät als Taschenrechner bezeichnet, fällt sogleich der ewigen Verdammnis anheim. Nichts stört die Harmonie. Doch beim Datentausch muß der HP an die Nuckelstrippe. Wie häßlich! Daß es auch anders geht, zeigt dieser Artikel.
In diesem Artikel beschreiben wir ein bidirektionales optisch gekoppeltes Interface zur seriellen Datenübertragung nach RS232-Norm.
Ursprünglich wurde es für den „Taschenrechner“ HP-48-SX entwickelt, inzwischen haben sich aber viele andere Anwendungsbereiche ergeben. Das Gerät wird an die serielle Schnittstelle beliebiger Rechner (RS232) angeschlossen und überträgt Daten mit Infrarotimpulsen. Die einzelnen Daten-Bits werden in ein spezielles „Infrarotformat“ konvertiert. Dies ermöglicht eine wirkungsvollere Störunterdrückung und verringert den Betriebsstrom dermaßen, daß die Energie aus der seriellen Schnittstelle bezogen werden kann. Die Konvertierung bedingt (leider), daß das Interface auf die verwendete Übertragungsrate eingestellt werden muß. Dies geschieht sehr einfach über einen Oszillator, der die Baud-Rate für beide Übertragungsrichtungen einstellt.
Der übliche Übertragungsabstand beträgt ein bis zehn Zentimeter. Besonders interessant ist der „serienmäßige“ Einbau in Geräte, die mit einer seriellen Schnittstelle ausgestattet werden sollen. Dann könnten z.B. Meßgeräte, Daten-Logger oder Pocket-Computer ihre Daten durch einfaches „Anlegen“ an den Rechner übertragen. Dazu sind lediglich ein Transistor nebst IR-Diode (Senden) und eine Fotodiode mit Verstärker (Empfangen) notwendig, da die Impulskonvertierung durch die Übertragungs-Software vorgenommen werden sollte. Alle Anwender und Hersteller sollten sich auf ein IR-Format einigen; unser Beitrag schlägt ein dazu geeignetes vor.
Der IR-Transceiver kann in etwa doppelter Streichholzschachtelgröße problemlos aufgebaut werden (keine SMDs). Es werden lediglich zwei ICs und einige Transistoren benötigt; einzige Spezialbauteile sind die Fotodiode, die IR-Sendediode und ein Low-Drop-Spannungsregler. Der Aufbau erfolgt völlig ohne Abgleich; auch die Oszillatorfrequenz kann nach „trial and error“ eingestellt werden. Dies ließe sich durch den Einsatz eines integrierten Quarzoszillators mit Teiler (z.B. aus der SPG-8640-Serie) umgehen, ist aber aufgrund der Stabilität des vorhandenen Oszillators nicht notwendig.
Der Rechner HP-48-SX hat eine IR-Schnittstelle eingebaut, die zu unserem Interface kompatibel ist. Dadurch entfällt das Spezialkabel, die Buchse wird geschont. Im Übertragungsmenü wird lediglich von „Wire“ auf „IR“ gewechselt.
Die nachfolgenden Informationen zur Infrarotdatenübertragung beim HP-48 sind zum Teil aus dem „HP 48 I/O TECHNICAL INTERFACING GUIDE“ entnommen. Dort finden sich auch weitergehende Informationen zur Programmierung der seriellen Schnittstelle des HPs.
Die Grafik (Bild 1) zeigt die Anschlußbelegung der seriellen Schnittstelle. Da die Pin-Nummern an den Steckern und Buchsen eingeprägt sind, dürften eigentlich keine Verwechslungen auftreten.
Ein serieller Datenrahmen besteht aus einem Start-Bit, acht Daten-Bits und mindestens einem Stopp-Bit. Das Start-Bit entspricht einer logischen „Null“ und das Stopp-Bit einer logischen „Eins“. Die Daten werden mit dem niederwertigsten Bit zuerst gesendet (LSB first). Der HP-48 sendet etwas mehr als zwei Stopp-Bits; er benötigt mindestens ein Stopp-Bit, um beim Empfang die einzelnen Bytes korrekt zu trennen. Die Zeitdauer eines Bits wird im weiteren als „Bit-Zeit“ oder „Bit-Breite“ (bit width) bezeichnet.
Der logische Zustand „Eins“ oder „Mark“ entspricht einer negativen Spannung auf der seriellen Leitung. „Null“ oder „Space“ entspricht einer positiven Spannung. Im „powerdown“-Zustand beträgt die Ausgangsspannung 0 Volt. Der Ausgangs-Port des HP-48 wird in diesen stromsparenden Modus geschaltet, wenn der Port geschlossen wird. Bei geöffnetem Port wird der Ausgang normalerweise im „Mark“-Zustand gehalten. Ausgesendete Daten müssen mit einem „Mark“ beginnen; wenn der Port wieder geschlossen wird, muß zunächst wieder der „Mark“-Zustand durchlaufen werden, ehe der „powerdown“-Zustand erreicht wird.
Signal | Beschreibung | Min | Typ | Max | Einheit |
---|---|---|---|---|---|
TX | Output Voltage Swing(1) | +-3.0 | 3.5 | - | V |
Bit width tolerance | 2,5 | % | |||
RX | Input + operating range | 1.0 | 15.0 | V | |
Input-operating range | -15.0 | 0.3 | V | ||
Input impedance | 5.0 | 7.0 | kOhms | ||
Bit width tolerance | 2.5 | % | |||
All Absolute maximum voltage | +-25 | V | |||
(1) Load 3kOhm min, 500pF max |
RS232-Spezifikationen
Beschreibung | Min | Typ | Max | Einheit |
---|---|---|---|---|
Wellenlänge | 940 | nm | ||
Abstand Sender zu Empfänger | 5.1 | cm | ||
Strahlbreite | +-20 | +-30 | ||
Empfänger Pulsbreite | 40 | 52 | 80 | µs |
Sender Pulsbreite | 46.8 | 52 | 57.2 | µs |
Baud | 2340 | 2400 | 2460 | bit/s |
IR-Spezifikationen
Der IR-Port des HP-48 ermöglicht Halbduplexkommunikation zwischen Systemen mit 2400 B aud unter der Verwendung infraroter Lichtimpulse anstelle von drahtgebundenen Leitungen. Vollduplex kann nicht benutzt werden, da die auftretenden Reflexionen unterdrückt werden müssen. Das Format zur IR-Datenübertragung ist ähnlich dem der seriellen „Drahtübertragung“ mit der Ausnahme, daß ein kurzer IR-Impuls von 52 ps zur Übertragung eines Null-Bits verwendet wird. Die Abwesenheit eines Impulses zeigt ein Eins-Bit an.
Nach einer zeitlichen Verlängerung dieser Impulse auf die übliche Bit-Zeit wäre die Ähnlichkeit zum seriellen Signal bereits unverkennbar... Der umgekehrte Weg ist nicht so einfach. Mit einer einfachen Impulsverkürzung ist es nicht getan, denn wenn mehrere Nullen aufeinander folgen, würde kein neuer Impuls ausgelöst werden. Eine Taktrückgewinnung müßte her ...
Die Skizze (Bild 2) zeigt die Position von IR-Sender (LED) und Empfänger (LDR) im HP-48. Der Rechner ist 27,6 mm hoch. Die IR-Schnittstelle befindet sich auf ca. 15,9 mm Höhe. Die Achse der optischen Elemente ist etwa 10° nach unten geneigt.
Die Datenübertragung unter Kermit ist der unformatierten I/O vorzuziehen, da Kermit Übertragungsfehler erkennen und durch erneute Übertragung defekter Pakete korrigieren kann. Da die Fehlerrate bei Infrarotübertragung höher ist, sollte CRC (Typ-3) als Prüfsumme eingesetzt werden. Im sogenannten Server-Mode benutzt das im HP-48 residente Kermit „I-Pakete“, um Prüfsummen zu erzwingen.
Die nachfolgenden Hinweise sind für diejenigen von Bedeutung, die z.B. in Assembler eigene Sende- und Empfangsroutinen schreiben wollen. Das Infrarotlicht des Senders kann z.B. durch Reflexion in den eigenen Empfänger einstrahlen. Daher sollten die Ausgangsdaten des Empfängers während einer Aussendung nicht beachtet und danach der Empfangspuffer sofort gelöscht werden. Ansonsten werden fälschlicherweise eigene Daten oder Teile davon zurückgelesen. Wenn in eigenen Schaltungen der Infrarotempfänger einen UART (Universal Asynchronous Receiver Transmitter) speist, sollte mit dem Löschen des UART-Empfangpuffers mindestens eine halbe B it-Zeit nach dem Stopp-Bit einer Aussendung gewartet werden. So stellt man sicher, daß alle eventuell angefallenen Reflexionen abgeklungen sind. Danach ist der Empfänger bereit, „gültige“ Daten anzunehmen, auch wenn diese „gültigen“ Daten Fehler aufgrund infraroter oder elektrischer Störimpulse enthalten können. Eine zuverlässige Fehlererkennung und -korrektur ist bei infraroter Datenübertragung unverzichtbar! Da mit IR nur Halbduplexverbindungen möglich sind, kann kein XON/XOFF-Handshake verwendet werden.
Die Schaltung wird aus der seriellen Schnittstelle des angeschlossenen Computers mit Energie versorgt; eine externe Versorgung ist nicht notwendig. Über D1, D2 und D3 wird die positive Betriebsspannung aus RTS, DTR und TXD gewonnen. Auf der negativen Seite wird nur TXD über D4 herangezogen. C1 und C2 speichern die Energie; RI und R2 schützen den Computer vor den ungeladenen Siebkondensatoren (sicher ist sicher). D5 und D6 begrenzen die Betriebsspannungen auf maximal +15V und schützen das Interface vor Überspannungen.
U1 erzeugt die stabilisierte Betriebsspannung von 5 Volt für die Logik-ICs. Der LP-2950 darf nur durch gleichwertige Regler ersetzt werden; so ist z.B. der weitverbreitete LM-2940 ungeeignet. Der Grund ist im problematischen „Start-Up“-Verhalten vieler Low-Drop-Regler zu suchen. Wenn die Eingangsspannung von Null ausgehend ansteigt, durchläuft die Ruhestromaufnahme des Reglers bei etwa 2 Volt ein Maximum von bis zu 100 mA. Bei hochohmigen Quellen bleibt die Eingangsspannung bei eben diesen 2 Volt „hängen“ und „kommt nicht über den Berg“. Der LP-2950 ist garantiert frei von dieser Eigenschaft. Zur Not kann ein 78L05 eingesetzt werden. Dessen Ruhestromaufnahme von 2 bis 3 mA liegt aber bereits höher als der gesamte Stromverbrauch auf der 5-Volt-Leitung, und „jedes mA zählt!“.
Baud-Raten-Generator
Dieser klassische Schmitt-Trigger-Generator aus IC1a erzeugt den zentralen Steuertakt mit 8facher Baud-Rate.
IR-Empfänger
Diese einfache Zwei-Transistor-Schaltung erfüllt die gestellten Anforderungen. Der Mittelwert der am Emitter von Q2 anliegenden Ausgangsspannung wird von Q1 in einen Strom umgesetzt. Dieser wird von der Photodiode LRD1 geliefert. Die Spannung an C6 stellt sich auf ungefähr 1,0 Volt ein. Durch die Rückkopplung ergibt sich eine Kompensation der Umgebungshelligkeit, und nur die infraroten Lichtimpulse gelangen zum Ausgang. IC1b und IC1c puffern das Signal und versteilern die Flanken.
IR-Empfangskonverter
Dieser ist im Prinzip ein nachtriggerbares digitales Monoflop. Der Zähler IC2a erhält an seinem Clock-Eingang einen Takt von 19,2kHz (bei 2400 Baud). Das RC-Glied aus C7 und R8 führt die positiven Flanken der empfangenen IR-Impulse auf den Reset-Eingang. Nach einem Reset sind die Ausgänge Q0 bis Q3 low. Wegen der Rückführung von Q3 auf Enable beginnt IC2a nun zu zählen. Nach acht Takten wird Q3 high und blockiert über Enable ein weiteres Zählen. Am Ausgang von IC1e steht nun das verlängerte Signal an.
RS232-Ausgangsstufe
Über Q3 wird die Endstufe aus Q4 und Q5 angesteuert. Diese wird aus den unstabilisierten Betriebsspannungen gespeist. R10 „schützt“ die Endstufe vor Kurzschlüssen und in begrenztem Umfang auch vor Stör-und Fremdspannungen.
RS232-Eingangsstufe
Der Spannungsteiler aus R13 und R14 legt die Schaltschwelle von Q6 auf etwa 2V fest. IC1d stellt die ursprüngliche Polarität wieder her.
IR-Sendekonverter
Der Sendekonverter ist im Prinzip ein synchronisierter Impulsgenerator. Die positive Flanke des ankommenden seriellen Datenstroms setzt den Zähler IC2b zurück und gibt über D12 den Ausgang frei. IC2b beginnt nun, von Null anfangend hochzuzählen. D13, D14 und, über den Inverter IC1f, D15 dekodieren den Zählerstand „3“ und erzeugen so einen kurzen Ausgangsimpuls, der Q7 durchsteuert und an die IR-Sendestufe geleitet wird. Bleibt nun das serielle Eingangssignal high, weil mehrere „Nullen“ aufeinander folgen, zählt IC2b ungestört weiter und liefert bei jedem Zählerstand „3“ einen Impuls. Kommt eine „Eins“, wird über D12 der Impuls unterdrückt, bis schließlich der nächste Wechsel auf „Null“ den Zähler wieder synchronisiert. Da der Zählerstand „3“ in der Mitte der „Bit-Zelle“ steht, wird ein großer Toleranzbereich erreicht, falls die empfangene Baud-Rate nicht exakt mit der eingestellten übereinstimmt. Durch diesen „Kniff“ ist der Abgleich des Generators weniger kritisch.
IR-Sendestufe
Die Endstufe ist als Stromquelle geschaltet. Die an der Basis von Q7 anstehenden Impulse schalten über R18 die Stromquelle Q8 ein. LED1 hält die Spannung an R19 auf etwa 0,8 bis 1V konstant. Der Wert von R19 bestimmt somit den Strom durch die IR-Sendedioden. Mit steigender Stromstärke nimmt die Reichweite entsprechend zu. Leider können aus der seriellen Schnittstelle nicht mehr als 10mA entnommen werden, da ansonsten die Spannung unter 5 V absinkt. Da die Länge der IR-Impulse nur ein Achtel einer Bit-Zeit hat, beträgt auch die Stromaufnahme der Endstufe im „worst case“ höchstens ein Achtel des mit R19 eingestellten Impulsstromes. In der Praxis kann ein Verhältnis von eins zu zehn erwartet werden. Normale IR-Dioden zeigen oft ein Schwell wertverhalten; erst ab 50mA Sendestrom wird nennenswerte IR-Strahlung abgegeben. Von HP gibt es eine spezielle Low-Power-IR-Diode, die aber nicht allgemein erhältlich ist. Das Siebglied aus R20 und C9 soll Rückwirkungen der Endstufe auf die restliche Schaltung vermeiden.
Die gesamte Schaltung ist auf einer Platinenfläche von nur 50*70mm realisiert. Als Gehäuse bietet sich z.B. ein sogenanntes Interface-Gehäuse aus der Computertechnik an. Der überstehende Rand bewirkt einen zusätzlichen Schutz gegen Fremdlicht. An der gegenüberliegenden Seite ist eine etwa 1,20m lange vieradrige abgeschirmte Leitung angeschlossen, die in einem 25poligen Sub-D-Stecker endet.
Die elektronischen Bauteile sollten (in Einzelstückzahlen) für etwa DM 25,- beschaffbar sein. Hinzu kommen noch Leitung, Stecker und Gehäuse, für die DM 15,-veranschlagt werden, und die Platine (ca. 45cm2). Nicht bekannt sind die Fertigungskosten. Als Ladenverkaufspreis sollte DM 99,- nicht überschritten werden.
Klaus Schönhoff/ Christian Sautner
C1,C2, C9: 100µF/16V
C3: 22µF/10V
C4: 560pF
C5: 22nF
C6: 1µF/10V
C7, C8: 100pF
D1, D2, D3, D4: 1N4001
D7, D9: 1N4001
D5, D6: ZPY15V
D8, D10, D11, D12: 1N4148
D13, D14, D15, D16: 1N4148
IC1: 7414 IC2: 4520
LED1: RED
LED2, LED3: IR
LRD1: BPW43
PI: 64W/10kΩ
Q1, Q2, Q3, Q6, Q7: BC548
Q4, Q5, Q8: BC328
R1: 47Ω
R2, R4: 220Ω
R3: 120kΩ
R5: 1MΩ
R6, R10, R14, R15: 47kΩ
R7, R8, R16: 10kΩ
R9, R13, R17: 100kΩ
R11: 22kΩ
R12: 10Ω
R18: 4,7kΩ
R19: 8,2kΩ
R20: 100Ω
U1: LP2950CZ