TTL-Ampel - Funktionsweise

Die Ampel hat vier Phasen: rot, rot-gelb, grün, gelb. Wir müssen also vier Zustände unterscheiden, d.h. unser Zustandsautomat braucht mindestens zwei Bit "Gedächtnis". Aus den beiden D-Flip-Flops können wir einen Zähler aufbauen, der binär betrachtet von 00 bis 11 zählt. Dann kann mittels der vier NAND-Gatter eine logische Schaltung gebaut werden, die aus diesen vier Bitmustern die passenden Signale zur Ansteuerung der drei LEDs ableitet.

Die D-Flip-Flops des 74LS74 werden durch positive Flanken getriggert. Das bedeutet, daß beim Auftreten einer steigenden Flanke (Spannungsverlauf) am CLK-Eingang der am D-Eingang anliegende Pegel in das Flip-Flop übernommen und am Q-Ausgang abgebildet wird. Der Ausgang Q hat dabei den invertierten Pegel von Q. Für unsere Zwecke wird der Ausgang Q auf den Eingang D zurückgekoppelt, sodaß sich der Zustand des Flip-Flops bei jeder steigenden Taktflanke umkehrt. Das zweite Flip-Flop wird genauso beschaltet, wobei der Takt-Eingang mit dem Ausgang Q des ersten Flip-Flops verbunden wird.

Schaltbild 01

Die Eingänge PRE (preset) und CLR (clear) können unbeschaltet bleiben, weil bei LS-TTL-Bausteinen unbeschaltete Eingänge einen definierten High-Pegel haben. Das gilt für Bausteine der 74HC-Familie (CMOS) beispielsweise nicht. Wer sich besser damit fühlt darf die Eingänge natürlich auch auf VCC legen. Wenn man nun die Ausgänge Q1 (linkes Flip-Flop) und Q2 (rechtes Flip-Flop) betrachtet, erhält man die folgende Sequenz:

Takt 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
Q1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
Q2 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0

Die gelben Felder zeigen die steigenden Flanken des jeweiligen Ausgangs an, die fett gedruckten Ziffern entsprechen den Zuständen die für die Ampel genutzt werden können (die Taktquelle selbst soll nicht weiter belastet werden). Wie man leicht erkennt halbiert sich der Takt mit jedem Flip-Flop: der ursprüngliche Takt hat auf die gezeigte Länge 8 steigende Flanken, an Q1 lassen sich noch 4 Flanken erkennen, während Q2 nur noch zwei Flanken aufweist. Wenn wir Q2 als erste und Q1 als zweite Binärziffer nehmen erhalten wir die Bit-Sequenzen 11, 10, 01, 00 die als Dezimalzahl interpretiert 3, 2, 1, 0 ergeben. Wir haben also einen Binärzähler, der rückwärts zählt. Das Phänomen des Rückwärtszählens kommt durch das Weiterschalten bei steigenden Flanken. Damit wandert bei der ersten 1 diese gleich bis zum letzten Flip-Flop durch, während die fallenden Flanken erstmal zu keiner Reaktion führen. Die gleiche Schaltung mit einem D-Flip-Flop, das bei fallenden Flanken schalten würde, hätte einen Vorwärtszähler zur Folge.

Als nächstes müssen aus diesen Zuständen die Ampel-Phasen gebildet werden. Dazu muß gesagt werden, daß wir eine negative Logik brauchen, d.h. bei uns wird eine LED leuchten wenn der entsprechende Ausgang auf 0 steht. Diese Notwendigkeit beruht auf der Tatsache, daß TTL-Gatter bessere Stromsenken als Stromquellen sind. Anders ausgedrückt: sie können kräftig nach Masse ziehen, sind aber miserable Treiber (brechen also bei geringem Strom schon in ihrer Spannung ein). Zwar funktioniert es auch meistens, aus einem Ausgang der auf High steht eine LED zu versorgen, jedoch betreibt man damit die Bauteile außerhalb der spezifizierten Bereiche. Um diese negative Logik zu realisieren schalten wir die LEDs mit Vorwiderstand an der Anode nach VCC und verbinden die Kathode mit dem jeweiligen TTL-Ausgang. Damit fließt dann Strom, wenn dieser auf Masse liegt, die LED leuchtet.

Doch nun zur booleschen Algebra. Wir haben zunächst folgende Tabelle:

Q2Q1RotGelbGrün
11X
10XX
01X
00X

Wie man sieht könnte man die gelbe LED direkt aus Q1 versorgen. Das wollen wir jedoch nicht tun, denn dieser Ausgang soll noch den Takt für das zweite Flip-Flop bilden, und ggf. ein paar der NAND-Gatter aus dem 74LS00 steuern. Wie wir sehen werden reichen die vier NAND-Gatter aus, wenn wir uns zusätzlich die Q-Ausgänge der Flip-Flops zu Nutze machen, die ja wie bereits gesagt immer den invertierten Wert der Q-Ausgänge haben.

Zunächst einmal stellen wir die Formeln ganz "geradeaus" auf, wie man es auf einen Blick sehen kann. Dabei werden die Zeichen der booleschen Algebra verwendet: ∧ stellt die AND-Verknüpfung dar, ∨ die OR-Verknüpfung und ¬ das NOT. Da wir NAND-Gatter verwenden werden wir OR nicht brauchen (verwirrt hier erstmal nur) und uns auf NOT und AND beschränken.

Rot = Q2
Gelb = ¬ Q1
Grün = Q1 ∧ ¬ Q2

Jetzt denken wir noch einmal an die negative Logik, die LEDs leuchten wenn der Ausdruck 0 ergibt. Dann gilt:

Rot = ¬ Q2
Gelb = Q1
Grün = ¬ (Q1 ∧ ¬ Q2)

Wir wollten allerdings die Ausgänge der Flip-Flops nicht direkt belasten, d.h. die Formel für Gelb muß noch einmal umgeschrieben werden. Weiterhin ergibt sich die Einsparmöglichkeit für ein NOT in der Formel für Grün, wenn auch hier der invertierte Ausgang des Flip-Flops genutzt wird:

Rot = ¬ Q2
Gelb = ¬ Q1
Grün = ¬ (Q1 ∧ Q2)

Man kann ein NOT darstellen, indem man entweder beide Eingänge des NAND auf den gleichen Wert setzt, oder einen Eingang fest auf High legt. Daraus ergibt sich folgende Realisierung unter Verwendung von NAND-Gattern:

Rot = NAND(Q2, 1)
Gelb = NAND(Q1, 1)
Grün = NAND(Q1, Q2)

Wenn jetzt der Taktgeber, die Flip-Flops und die Dekodier-Logik zusammengesetzt werden, entsteht folgender Schaltplan:

Schaltbild 02

Die angegebenen Bauteilwerte sorgen für einen gemütlichen Takt von etwa 0,2 Hz, d.h. die Ampel schaltet ungefähr alle 5 Sekunden in die nächste Phase. Ich habe schon mehrere E-Mails von Leuten erhalten, die diese Schaltung nachbauen wollten, aber von Elektronik nichts bis wenig verstanden haben. Um es all jenen leichter zu machen, die Schaltung an eigene Bedürfnisse anzupassen, habe ich die Bauteile und ihre Bedeutung für die Schaltung in folgender Tabelle noch einmal aufgeführt:

Bauteil Art Mein Wert Bedeutung
C1 Keramikkondensator 1 nF Ableitkondensator, das Datenblatt empfiehlt sogar 10 nF.
C2 Elektrolytkondensator 33 µF Timing-Kondensator des Taktgebers, im Datenblatt als C bezeichnet.
Größere Werte = langsamerer Takt.
R1 Widerstand 100 kΩ Entladewiderstand des Taktgebers, im Datenblatt üblicherweise als RB bezeichnet.
Größere Werte = langsamerer Takt, kann aber nicht beliebig gewählt werden (siehe unten).
R2 Widerstand 10 kΩ Ladewiderstand des Taktgebers, im Datenblatt üblicherweise als RA bezeichnet.
Größere Werte = langsamerer Takt.
R3-R5 Widerstand 6,8 kΩ Vorwiderstand zur Steuerung der LED-Helligkeit.
Meine 6,8 kΩ sind wirklich dunkel, hier kann man ruhig um eine Zehnerpotenz kleinere Werte nehmen (z.B. 330 Ω bis 1 kΩ, je nach LED-Typ).

Das Verhalten des Taktgebers ist meines Erachtens nach am besten in der Application Note AN170 von Philips beschrieben (kursiert im Netz unter dem Namen 555an.pdf). Kurz gesagt wird der Kondensator C über die Reihe RA+RB aufgeladen und (nur) durch RB entladen. Durch den unsymmetrischen Weg ergibt sich folgende Formel für den Takt:

f = 1.49/((RA + 2 * RB) * C)

Mit meinen Bauteilwerten erhält man also folgenden Takt:

f = 1.49/((10 * 103 Ω + 2 * 100 * 103 Ω) * 33 * 10-6 F)

f = 1.49/(210 * 103 Ω * 33 * 10-6 F)

f = 1.49/(6,93 ΩF)

Jetzt noch die Einheiten. Das Ohm (Ω) ist als V/A definiert, das Farad (F) als C/V, wobei das Coloumb (C) das gleiche wie die Amperesekunde (As) ist:

f = 1.49/(6,93 V/A * As/V)

f = 1.49/(6,93 s) = 0,215 1/s

Die Einheit 1/s ist auch als Hertz bekannt, die gesuchte Frequenz. Noch mal Glück gehabt.1

Wie man sieht geht RB doppelt in den Takt ein, wohingegen RA nur beim Aufladen eine Rolle spielt. Je größer also RA ist, desto unsymmetrischer ist das Taktsignal. Das ist für uns aber egal, da die D-Flip-Flops nur auf die jeweils steigenden Flanken reagieren. Das Datenblatt weist allerdings darauf hin, daß RB mindestens 3 kΩ haben sollte, damit der Oszillator zuverlässig anspringt.


1 Ich bin ein großer Freund vom Rechnen mit Einheiten. Wenn man diese konsequent mitführt und gegeneinander kürzt, bemerkt man es sehr schnell, wenn man irgendwo falsch abbiegt und sich auf den Holzweg begibt. Bei einer Länge in Kilogramm oder einer Zeit in Volt ist immer klar, daß irgendwo ein Fehler ist.