Haftungsausschluss!
Für die Richtigkeit, der auf meinen Webseiten gemachten Angaben, übernehme ich keinerlei Haftung!
Ein Nachbau bzw. Eigenbau geschieht immer auf eigenes Risiko!


Serielle Schnittstelle des PC (COM-Port) steuert Großanzeige für Datum / Zeit, oder als Countdown
Seite 1: Einleitung und Planung Seite 2: Umsetzung Seite 3: Steuerung


Einleitung:

Dieses Projekt war mein erster Versuch einer digitalen Steuerung durch den Computer. Da ich bis zu diesem Zeitpunkt nur analoge Schaltungen im NF-Bereich gebaut und noch absolut keine Ahnung von digitaler Technik hatte, wollte ich mich erst einmal langsam diesem Fachgebiet nähern. Deswegen habe ich Schaltkreise verwendet, die eine sehr einfache Funktion haben und leicht zu handhaben sind.

Bei digitaler Signalübertragung gibt es nur zwei Extreme. Entweder volle Spannung, oder gar keine. NF-Signale hingegen besitzen absolut andere Eigenschaften. Dort kommt so etwas eigentlich nie vor und wird teilweise aufwendig verhindert. Analoge Signale dürfen praktisch niemals das Minimum, oder das Maximum erreichen, weil es sonst zu Verzerrungen kommt, die das Signal beeinträchtigen, oder ganz unbrauchbar machen. Ein Transistor in Sättigung ist im Audiobereich absolut verboten, aber eine Grundvoraussetzung der digitalen Signalverarbeitung.

Bei meiner Planung konzentrierte ich mich jedoch zu sehr auf die mir neuen und unbekannten digitalen Bauelemente und beachtete einige wichtige Sachverhalte nicht. So musste es zu Problemen bei der Umsetzung kommen. Als Vorbereitung und erster Versuch für weitere Steueraufgaben eines Computers kam mir die Idee einer direkten Ansteuerung von 7-Segmentanzeigen mittels serieller Datenübertragung vom Computer. Sinn des Ganzen war hauptsächlich die Kommunikation vom Rechner zur selbstgebauten Peripherie zu erproben und weitere Steuertests durchzuführen. Als "rein zufälliger Nutzen" soll diese Anzeige nicht nur eine Uhr mit Sekunden und Datum anzeigen, sondern auch eine optische und akustische Alarmfunktion beinhalten. Ich spiele das Browsergame Space-Fights und dort wird gelegentlich ein Wecker benötigt, um zeitlichte Abläufe zu koordinieren. Da der Rechner bereits schon läuft, kann er auch gleich die Uhr, bzw. die Anzeige steuern.


Planung:

Die eigentliche Hauptaufgabe ist es, versuchsweise eine einzelne LED aus einer ganzen Reihe anzusteuern. Bei der Verwendung von 7-Segmentanzeigen scheint ein BCD-Decoder besonders gut geeignet zu sein. Da aber eine direkte Ansteuerung eines einzelnen Segments von jeder Anzeige erreicht werden soll, kommt ein BCD-Decoder nicht in Frage. Denn dieser kann nur Zahlen darstellen. Ich möchte aber auch jedes "Lämpchen" einzeln schalten können. Also auch solche Spielchen machen:

Eine gängige Praxis für Steueraufgaben des Computers ist die Nutzung der parallelen Schnittstelle. Diese ist einfach zu bedienen und Bausätze dafür gibt es in jedem Fachgeschäft. Da die parallele Schnittstelle jedoch nur 8 Ausgänge hat, reichen die Steuerkanäle bei weitem nicht aus. Um nur 4 Zahlen darzustellen, braucht man bereits 28 Steuerleitungen. So bleibt nur die serielle Schnittstelle. Damit ich jedes, der acht Elemente (der Punkt zählt auch) schalten kann, müssen die seriellen Daten in ein anderes "breiteres" Format gebracht werden. Ich brauche einen Seriell-Parallel-Umsetzer. Ein 8bit-Schieberegister tut genau das.

Erfreulicherweise gibt es so etwas bereits als DIL-Schaltkreis. Ein 4094 nimmt die seriellen Daten auf und gibt sie auf "Befehl" parallel aus. Die Daten werden einfach durch seinen Eingang "hinein geschoben" und wenn es mehr als 8 Bit sind, werden die zuerst übertragenen Bits einfach durch einen Ausgang "weiter geschoben", was eine Reihenschaltung dieser Schaltkreise problemlos ermöglicht.

Zuerst legt man das Datenbit an und geht dann mit dem Clock einmal kurz auf High-Pegel, damit das Schieberegister seinen ganzen Inhalt um eine Stelle weiterschiebt und zeitgleich das erste Bit einliest. Den Vorgang wiederholt man bis alle Bits übertragen sind. Gibt man dann auf der "Strobe"-Leitung den Ausgabebefehl (High), schalten alle 4094 die übertragenen Bits auf die parallelen Ausgänge.

Theoretisch wäre damit alles getan. Wenn man über Widerstände die 7-Segmentanzeigen (gemeinsame Kathode Richtung Masse) anschließt, würden die Anzeigen schon arbeiten. Da ich aber einige als "riesig" zu bezeichnende LED-Anzeigen betreiben möchte, muss eine Verstärkerstufe an den parallelen Ausgängen folgen. Damit man sich das Ausmaß der Anzeigen besser vorstellen kann - hier ein Bild von den beeindruckend großen "Leuchtfliesen" ;-)

Ein ULN2803A ist ein 8fach Darlington-Array mit integrierten Schutzdioden für den direkten Betrieb von induktiven Lasten, wie Relais oder auch Schrittmotoren. Laut Datenblatt ist der Schaltkreis bis maximal 50V Spannungsfest und kann auf jedem seiner acht Kanäle bis zu 500mA Strom durchschleusen. Also perfekt als Treiberstufe für meine Verwendung.

Bei der Berechnung der gesamten Ströme, bin ich über ein kleines Problem gestolpert. Ich hatte bereits ein fertiges Netzteil mit gerade mal 1A Stromausbeute bei 12Volt. Die 5Volt-Anteile sind dabei verschwindend gering, aber die 12Volt Verbraucher (insbesondere die ganz großen Anzeigen) verschlingen unverhältnismäßig viel Strom für eine simple Uhrzeitanzeige. Das muss anders gehen! Das offene Geheimnis: Multiplex! Alles zu seiner Zeit...

So ziemlich fast jede LED-Anzeige und jedes LCD-Display arbeitet im Multiplexbetrieb. Dabei wird jede Segmentanzeige so schnell nacheinander ein- und wieder ausgeschalten, dass das menschliche Auge (normalerweise) das Flimmern nicht mehr sieht. Langsam sieht das aber so aus.

Der Vorteil liegt auf der Hand. Da nur immer eine Anzeige betrieben wird, sinkt der Stromverbrauch drastisch. Die gängigen Multiplexer haben alles schon drin, was die Bauteile "ringsumher" auch verringert, aber da normale Multiplexer nur Zahlen darstellen können, weil der eingebaute BCD-Decoder eben nur diese Aufgabe hat, kommt so etwas für mich nicht in Frage (siehe oben). Ich muss mir selber einen Multiplexer bauen. Dafür braucht man nur 3 Komponenten. Einen Taktgeber, einen "Verteiler" und eine geeignete Endstufe.

Der Taktgeber drängt einem sich geradezu auf. Jeder Elektroniker baut zuerst diese Schaltung. Der astabile Multivibrator schwingt eigenständig und ist narrensicher. Ok, vor mir war er nicht sicher! Doch zuerst mein überarbeiteter Plan:

R3, R4 und T3 ergeben eine die Treiberstufe am Ausgang, die mir einen vernünftigen Pegel liefert. Auf der linken Seite ist das gute Stück aus Kindertagen. Mit den Reglern Re1 und Re2 stellt man die jeweilige Periodendauer ein - also die Taktfrequenz. Mit Re3 kann man zusätzlich das Tastverhältnis verschieben, ohne die Frequenz dabei zu ändern. Ohne die Treiberstufe sah das Ganze schon mal gar nicht schlecht aus (Bild). Um nicht nur an den LED zu sehen, ob alles zufriedenstellend arbeitet, sonder auch um die Taktfrequenz abschätzen zu können, habe ich an stelle der Treiberstufe einen Lautsprecher in Reihe mit einem Elko angeschlossen. Netter, aber nerviger Tongenerator ;-) Ich hatte leider der Einfachheit halber die Widerstände R5 und R6 weggelassen. Ein fataler Entschluss! Beim Einstellen der Frequenz spielt man ja doch ein wenig herum, insbesondere wenn eine Heulboje nebenbei richtig Rabatz macht. Prompt passiert, was passieren muss! Nachdem ich die Frequenz schon extrem hochgedreht hatte und noch eine kleine Idee höher hinaus wollte (Denkfehler!!!), verschob ich das Tastverhältnis bis zum rechten Anschlag! KNACK! und die Siliziumseele von T1 verabschiedete sich in Form eines kleinen grauen Wölkchens Richtung Zimmerdecke. Wenn an der Basis von T1 nach oben kein Widerstand mehr ist, liegt diese an +5Volt, was dann wohl jedem kleinen Transistor Flügel verleiht.

Aber es geht auch anders und vor allem kleiner! Der legendäre 555 ist wie geschaffen für solche Arbeiten. Mit nur wenigen Bauteilen hat man einen Taktgenerator, mit dem man die Geschwindigkeit problemlos in die Höhe schrauben kann. Laut Datenblatt schafft der Timerschaltkreis mühelos hohe Kilohertz Frequenzen, was für einen Multiplex-Taktgeber mehr als ausreichend ist. Das könnte so aussehen:

An den Versorgungspins des 555 sollte man unbedingt noch einen 100nF WIMA-Blocker einsetzen, denn der 555 verursacht beim Umschalten recht nette Stromspitzen.

Die zweite Komponente muss im vorgegebenen Takt des 555 eine Art "Lauflicht" auf die benötigten Ausgänge schalten können. Im Internet findet man unter diesen Begriffen geeignete Bauteile. Am besten scheint mir der 4017 geeignet zu sein. Dieser Schaltkreis ist ein Zähler und kann bis 10 zählen - eigentlich muss er nur bis 9 zählen können, weil die 10 bereits der nachfolgende Zählerschaltkreis übernimmt. Der 4017 zählt eigentlich nicht wirklich, sondern die eingehenden Impulse schalten den Ausgang einfach um einen weiter.

Da der Schaltkreis sogar über einen Reset verfügt, kann man den maximalen "Zählerstand" pro Durchlauf begrenzen, indem man einfach den ersten nicht benutzten Ausgang auf den Reset legt. Würde man immer 10 Takte für einen "Umlauf" verwenden, obwohl man nicht so viele Anzeigen hat, verliert man wertvolle "Leuchtzeit" und die Anzeigen erscheinen dunkler, oder flimmern. Ob ich tatsächlich alle 10 Ausgänge verwende, oder ob ich die kleineren Anzeigen zeitgleich laufen lasse (wie im animierten Bild oben), hängt von den Tests ab, die ich damit durchführen werde. Der erste Test in dieser Richtung scheiterte leider am fehlerhaften Steckboard. Hier der Plan vom Plan:

Die darauf folgenden End- oder Schaltstufen sollten, gesteuert durch die Ausgänge vom 4017, die gemeinsamen Anoden der Anzeigen mit dem Pluspol der 12Volt verbinden. In diese Richtung versuchte ich eine Schaltung zu entwickeln, weil es jeder so macht und weil es sinnvoll erscheint. Aber ein Blick in das Datenblatt vom 4094 offenbarte mir einen viel einfacheren Weg.

Der 4094 besteht intern aus drei Bereichen. Ein Schiebregister, welches die seriellen Daten aufnimmt und weiterleitet. Ein 8-Bit-Speicher, der bei einem Strobe-Signal die anliegenden Bits übernimmt und speichert und die eigentliche Treiberstufe der Ausgabe, bzw. Endstufe des Schaltkreises. Und genau diese Endstufe hat einen Eingang, mit dem man selbige ein- und ausschalten kann.

Die Stromversorgung (5V) geht an den Pin 16. In fast allen Schaltplänen geht von diesem Pin eine Brücke auf den Nachbar-PIN. In den Datenblättern wird dieser Pin als "Output Enable Input" bezeichnet, was nichts anderes bedeutet, als das dieser Anschluss die Endstufe des Schaltkreises ein- bzw. ausschaltet. Vergisst man die Brücke, kommt aus den Ausgängen nichts mehr raus, oder die Ausgänge flackern unkontrolliert.

Wenn man aus dem Taktgenerator (555) Impulse zum 4017 schickt, und dieser seine Ausgänge bei jedem Puls um einen weiter schaltet, kann man einfach an diese Ausgänge die Pins der 4094 anschließen und sie multiplexen sich durch den Takt vom 555 selbstständig. Es kann problemlos auf eine weitere Treiberstufe für die LED-Anzeigen verzichtet werden.

Zusammengefasst würde das dann so funktionieren:
Man schiebt die Daten seriell über die COM-Schnittstelle (mit Data und Clock) in den ersten 4094. Werden es mehr als 8 Bit, schiebt er die Daten automatisch in den nächsten Schaltkreis, bis man das Strobe-Signal setzt. Sodann erfolgt die Übergabe aller Bits in den Speicher aller 4094 und wenn am Pin 15 ("Output Enable Input") +5V anliegen, kommen auch prompt die reingeschobenen Daten zu den Ausgängen parallel raus. Fehlt die Spannung werden die Daten trotzdem übernommen und gespeichert, nur die Ausgabe wird unterdrückt. Die Treiberstufen ULN2803A verstärken die Ausgänge von den 4094 für die Anzeigen. Der Timerschaltkreis 555 produziert Takte, die der 4017 zählt und so nach einander seine Ausgänge schaltet. Diese Ausgänge verteilt man nun einfach an alle Pin 15 ("Output Enable Input") von den 4094, damit diese ihre Ausgänge so lange ausgeschalten lassen, bis der Zähler (4017) jeden nacheinander "durchschaltet".

weiter zur Umsetzung

nach oben
bisher 31115 Gäste