www.jb-electronics.de » Elektronik » Digitaltechnik » LED-Countdown II
"Warum einen neuen Countdown? Der erste tut's doch!" denken sich jetzt vielleicht Einige von Ihnen. Der erste Countdown funktioniert auch zuverlässig, aber er hat diese Nachteile:
Das sollte im neuen Anlauf verbessert werden.
Zudem wurde die Funktionalität leicht abgeändert: Der Countdown beginnt bei Spannungsversorgung sofort mit dem Herunterzählen und bleibt, wenn er fertig ist, bei 00 stehen. Um ihn zu resetten, muss er aus- und dann wieder eingeschaltet werden.
Da die Anzeige möglichst hell sein sollte, musste auf 10mm-LEDs zurückgegriffen werden; diese wurden dann benutzt, um daraus Segmente zu gruppieren. Ich verwendete fünf LEDs pro Segment, für eine zweistellige Zahl werden also insgesamt 70 LEDs benötigt.
Die verwendeten LEDs benötigen für ihre optimale Helligkeit einen Strom von 100mA bei einer Durchlassspannung von 3...3.6V. Da die LEDs aber ja pro Segment zu fünft in Reihe geschaltet werden, sieht mensch schon ein Problem: Die gesamte Durchlassspannung kann von 15...18V variieren. Das lässt sich durch einen festen Vorwiderstand nicht kompensieren, verschiedene Segmente leuchteten dann verschieden hell.
Also muss eine Konstantstromquelle her. Die lässt sich mit einem LM317, also einem einstellbaren Spannungsregler, sehr leicht aufbauen:
Praktisch funktioniert sie so, dass sie bei gegebener Eingansspannung Vin die Ausgangsspannung Vout so nachregelt, dass genau der Strom I fließt. Sie wird einfach wie ein Widerstand in Reihe geschaltet.
Ich verwendete hier einen Widerstand von R = 13Ω, das entspricht einem Strom von ca. 96mA. Die Verlustleistung, die bei diesem Strom und dem obigen Durchlasspannungsbereich von 15...18V bei einer Betriebsspannung Vin von 24V verheizt wird, liegt zwischen 0.6 und 0.9W, das kann das TO220-Gehäuse des LM317 noch über kürzere Zeit (99 Sekunden wegen zweistelliger Anzeige) abführen.
Als Treiber der LED-Segmente kommen wieder die altbewährten ULN2803A zum Einsatz, wobei hier beachtet werden muss, dass ein ULN2803A insgesamt nur maximal 500mA gleichzeitig treiben kann. Also werden pro Ziffer zwei ULN2803A verwendet, und zudem zwei Kanäle parallelgeschaltet.
Die Treiber wiederum werden, wie schon so oft, von CD4094-Schieberegistern angesteuert.
Die Helligkeit des Countdowns wird mittels PWM eingestellt und lässt sich in zehn Stufen einstellen.
Die Verwendung von PWM und einer Konstantstromquelle kann kritisch werden, wenn die PWM-Frequenz sehr hoch ist, und nahe an der Regelgeschwindigkeit der Konstantstromquelle liegt. Denn eine Konstanstromquelle benötigt als Regelkreis eine gewisse Zeit, bis sich der richtige Strom eingestellt hat.
In diesem Falle hier jedoch ist die PWM nicht sehr schnell (ca. 4 kHz), sodass das kein Problem darstellt.
Alle Parameter lassen sich extern über BCD-Codierschalter einstellen. Das sind sechspolige Bauteile, von denen zwei Pins an die Betriebsspannung angeschlossen werden, und deren restliche vier Pins die mit einem Schraubendreher eingestellte Zahl als Binärwert ausgeben. Ich verwende hier dezimale BCD-Codierschalter mit einem Wertebereich von 0...9, aber es gibt auch hexadezimale Codierschalter, die den Wertebereich von 0...15 besitzen und so die vier Bits voll ausschöpfen.
Mit den ersten beiden BCD-Codierschaltern kann der zweistellige Startwert des Countdowns von 0...99s eingestellt werden. Der dritte BCD-Codierschalter erlaubt es, eine Anfangsverzögerung in 100ms-Schritten zuzuschalten (also von 0 bis 900ms), sodass der Countdown zunächst diese Zeit wartet, und dann erst beginnt, herunterzuzählen. Das ist gerade dann nützlich, wenn der Countdown synchron mit einem externen Event enden soll, dass keine ganzzahlige Sekundenlaufzeit besitzt, aber gleichzeitig mit dem Countdown gestartet wird.
Mit dem vierten Codierschalter kann schließlich die Helligkeit der Anzeige in zehn Schritten von stark gedimmt bis ultrahell eingestellt werden.
Aufgrund der Vielzahl der Eingangspins (4 × 4 = 16) griff ich hier auf einen größeren Controller zurück, den PIC16F722.
Aber Moment, kann mensch nicht bei Eingangssignalen auch eine Art Porterweiterung durchführen? Ja, das geht, aber der Platzaufwand wäre hier einfach zu groß geworden, daher diese ineffizientere Lösung.
In der Software des Microcontrollers gibt es zwei für den Benutzer relevante Stellen direkt zu Beginn.
Zum einen wird in dieser Tabelle kodiert, wie die Zeichen der Siebensegment-Anzeige auszusehen haben:
// __cdegfab_
static unsigned char get7[10] = {0b11101110,
0b10000010,
0b01110110,
0b11010110,
0b10011010,
0b11011100,
0b11111100,
0b10000110,
0b11111110,
0b11011110};
Beim Nachbau muss also nicht wirklich auf die exakte Belegung geachtet werden, es reicht, diese Tabelle abzuändern.
Zudem werden auch noch die zehn einstellbaren Helligkeitsniveaus definiert (Werte von 0...255 sind möglich):
static unsigned char getPWM[10] = {1, 2, 5, 10, 20, 40, 50, 100, 160, 255};
Ein kleiner Fallstrick in der Programmierphase war noch, dass alle Analog-Digital-Converter-Bits manuell abgeschaltet werden mussten, damit alle IOs als Digital-IOs genutzt werden konnten. Das steht so meiner Auffassung nach nicht im Datenblatt. Wer mehr dazu weiß, kann mir gerne eine Email schreiben.
Die Software des Microcontrollers ist ansonsten ziemlich selbsterklärend, für alle Interessierten gibt es hier den C-Quellcode und das fertig kompilierte HEX-File: LEDCountdown2.zip (4KB)
Der Countdown wird mit 24VDC aus einem Schaltnetzteil versorgt. Bei Vollauslastung zieht der Countdown stolze 1.35A, das sind 32W.
Die erforderlichen 5V für den Microcontroller werden mit einem kleinen Schaltnetzteilmodul des Typs 2405SZ erzeugt, da ein Linearregler bei dieser großen Spannungsdifferenz eher ineffizient arbeitet.
Hier ist nun endlich der Schaltplan zu sehen, auf dem eigentlich nichts zu sehen ist, weil er so groß ist:
Daher finden Sie hier den Schaltplan in höherer Auflösung.
Der Schaltplan ist wirklich einfach gehalten, er erscheint aufgrund der Größe nur recht komplex.
Hier nun einige Fotos des fertigen Aufbaus; der Countdown wurde auf Europlaplatinen aufgebaut und dann auf Dachlatten verschraubt:
Die Belegung der Codierschalter ist wiefolgt:
Wie zu erkennen ist, sind alle Platinen mittels Pfostensteckern miteinander verbunden. Die Stiftleiste ganz rechts im oberen Bild ist die ICSP-Programmierschnittstelle:
Hier ist der LED-Countdown II von der Rückseite zu sehen:
Die 24VDC werden über einen 2.5mm-Hohlbuchsenstecker zugeleitet:
Damit der Countdown auch draußen einsetzbar ist, wurden die Abmessungen speziell für ein Gehäuse der Schutzklasse IP66 gewählt. Hier sieht mensch den Countdown im Gehäuse platziert:
Mit Deckel sieht es dann so aus:
Unter der Platine ist noch sehr viel Platz; dort kann das Schaltnetzteil problemlos untergebracht werden.
Das Leuchtbild des Countdowns festzuhalten ist sehr schwer, da die LEDs sehr hell sind, und meine Kamera daher keinen anständigen Weißabgleich durchführen kann. Daher sehen die LEDs auf den folgenden Bildern violett bis bläulich aus, in Wirklichkeit sind sie weiß.
Das folgende Foto trifft die Farbe der LEDs ganz gut, nur sieht es so aus, als ob es dunkel im Raum ist - das ist nicht der Fall, es ist taghell!
Alles in allem stellt der LED-Countdown II eine erhebliche Verbesserung gegenüber dem ersten Countdown dar und sollte auch bei hoher Umgebungshelligkeit noch klar erkennbar sein.
www.jb-electronics.de » Electronics » Digital Technology » LED Countdown II
There is no English translation of this page available yet. It will take some more time for me to translate the whole website.
If you have a particular interest in this page getting translated as fast as possible, please contact me; I will see what I can do. Please click here for the German version.