Countdown-Timer aus TTL-Bausteinen

Foto der fertigen Platine (Thumbnail)

Schon von Kindesbeinen an haben mich Countdowns fasziniert. Wenn sie abgelaufen sind, passiert meistens irgendwas aufregendes. Vielleicht startet ein Raumschiff? Oder eine große böse Bombe geht in die Luft? Aber auch viele Jahre später haben Countdown-Timer einige interessante Aspekte zu bieten, insbesondere wenn man sie mit fertigen Logik-Bauteilen aufbauen möchte. Es gibt einen sequentiellen Teil, der sich mit dem Zählen beschäftigt, und einen logischen Teil, der das Erreichen des Nullpunkts erkennt, und daraufhin etwas veranlasst (z.B. daß der Timer nicht weiter zählt, was reichlich blöde aussähe!).

Auf dem Schaltplan erkennt man die folgenden wesentlichen Bestandteile:

Verwendet werden 74LS192, "synchronous up/down decade counter". Sie können über Eingabe-Pins mit einem Wert vorbelegt werden, was in meiner Schaltung über drei DIP-Switches passiert. Die Zähler sind untereinander über den "borrow"-Pin verbunden, das ist der Übertrag bei Subtraktionen. Damit wird beim Unterschreiten der 0 der nächsthöhere Zähler um 1 dekrementiert, d.h. auf die 20 folgt z.B. die 19. Die Ausgägne der Zähler laufen in die Eingänge zweier Baugruppen: die "Null-Logik" zur Erkennung des Zustands "000", sowie die Dekodier-Logik mit angeschlossener Ausgabe über 7-Segment-Displays.

Die Null-Logik verknüpft alle Zählerausgänge über logische ODER-Verknüpfungen miteinander. Ich setze dazu drei 74LS32-Bausteine ein, die jeweils vier 2-Input-OR enthalten. Die Zuteilung der Eingänge bzw. Aufteilung der ODER-Gatter mag im Schaltplan etwas merkwürdig aussehen, aber ergibt auf der Platine eine bessere Leiterbahnführung. Wenn der Gesamtausgang auf LOW fällt, bedeutet dies, daß alle drei Zähler den Wert 0 erreicht haben. In diesem Fall wird ganz einfach der RESET-Eingang des NE555 gezogen, wodurch der Zähler anhält. Ausserdem wird ein weiteres ODER-Gatter geschaltet (zur Pufferung des Signals) und dessen Ausgang über ein Lötpad für das Anflanschen weiterer Schaltungen zur Verfügung gestellt. Hier würde z.B. die zu startende Rakete angetüddelt werden. :-)

Die Dekodier-Logik für den Einsatz von 7-Segment-Displays wäre ein übles TTL-Massengrab für sich geworden, gäbe es nicht den vorzüglichen 74LS47 "BCD to 7 segment decoder/driver". Dieser Baustein nimmt eine BCD-Zahl (binary coded decimal, im Prinzip also eine Binärzahl die eine Dezimalziffer darstellt) als Eingabe und erzeugt das 7-Segment-Muster zu seiner Darstellung als Ausgabe. Diesen Baustein gibt es übrigens nicht in der 74HC-Reihe, dafür aber den 74HC4511, der das gleiche kann.

Die Ausgabe auf die 7-Segment-Anzeigen ist eher primitiv, braucht man doch ganze 21 Widerstände und drei Dekodier-Bausteine. Einen besseren Weg (mit anderen Tücken) zeigt das Nachbar-Projekt TTL-Counter-Multiplex.

Die Spannungsversorgung verdient eigentlich kaum Erwähnung (ein 7805 in Standardbeschaltung), wohl aber noch die ganze Reihe von Keramik-Kondensatoren im Schaltplan unten rechts. Sequentielle Bauteile wie die Zähler mögen Spannungseinbrüche überhaupt nicht. Wenn nun eine Reihe von Ausgängen umschaltet, passiert dies recht plötzlich (wir reden von Nanosekunden!). Wenn die Leitung zur Spannungsversorgung entsprechend lang ist, und der Regler möglicherweise nicht beliebig schnell reagiert, kann dies zu Zuckungen in der Versorgungsspannung führen, die die Bauteile zum Reset oder zu anderen unerwünschten Reaktionen bringt. Diesem Problem entgegenwirken kann man durch das Anbringen kleiner Keramik-Kondensatoren, und zwar möglichst nahe an den VCC/GND-Pins der Bausteine. Man nimmt hier üblicherweise 100 Nanofarad. Diese Kondensatoren, großzügig verteilt, haben schon so manches merkwürdige Verhalten verschwinden lassen, und haben selbst keinen Nachteil für die Schaltung (von einem etwas grösserem Strombedarf im Einschaltmoment mal abgesehen). Sie werden im Bastler-Jargon deshalb auch gerne "Schadnix" genannt, da sie nicht schaden.

Auf der Unterseite meiner Platine sieht man ein paar nachträglich gezogene Leitungen. Ich habe 74HC-Bausteine an Stelle der 74LS-Bausteinen verwendet. Bei diesen müssen Eingänge definiert auf VCC oder GND gezogen werden, während bei 74LS-Eingängen unbeschaltete Eingänge auf HIGH liegen. Die drei Lackdrahtleitungen ziehen nun die "UP"-Eingänge der Zähler auf VCC, damit der Baustein nicht zufällig aufwärts zählt. Am oberen Rand der Platine wird das geübte Auge zwei SMD-Widerstände sehen, die im Schaltplan ebenfalls nicht vorgesehen sind. Der rechte Widerstand zieht den "CLR"-Eingang nach GND, damit bei offener Leitung der Zähler nicht zurückgesetzt wird. Dies ist nur notwendig, wenn die Leitung (wie in meinem Laboraufbau) nicht an einer anderen Schaltung hängt, die definierte Pegel vorgibt, sondern in der Luft hängt oder an einem Taster angeschlossen ist. Sowas ähnliches gilt auch für den linken Widerstand: dieser zieht den "LD"-Eingang zum Laden der Zählerwerte nach VCC (der Eingang ist LOW-aktiv, d.h. durch Ziehen auf GND wird die Funktion ausgelöst).

Die Leiterplatte ist übrigens ohne Durchkontaktierung gefertigt worden. Ich habe beim Bestücken die Vias durch auf beiden Seiten verlötete Bauteilbeinchen hergestellt. Eine fehlerträchtige Sparmaßnahme, die ich niemandem empfehlen würde (es sei denn Zeit steht in deutlich höherem Maße als Geld zur Verfügung).

Downloads

Version Datum Änderungen Datei Beschreibung
1.1 2007-03-25 Erstes Release TTL-Counter.zip Schaltplan und Layout im Eagle-Format (Version 5)