{"id":29,"date":"2014-12-21T20:37:24","date_gmt":"2014-12-21T20:37:24","guid":{"rendered":"http:\/\/techblog.auchmonoabspielbar.de\/?p=29"},"modified":"2014-12-21T20:37:24","modified_gmt":"2014-12-21T20:37:24","slug":"eine-4-stellige-siebensegment-anzeige","status":"publish","type":"post","link":"http:\/\/techblog.auchmonoabspielbar.de\/?p=29","title":{"rendered":"Eine 4-stellige Siebensegment Anzeige"},"content":{"rendered":"<p>Von einem anderen Bastelprojekt hatte ich noch 4 Siebensegment Displays \u00fcbrig. Daraus wollte ich einen 4-stelligen Z\u00e4hler machen. Da die einzelnen Elemente 25 mm hoch sind, bestehen sie intern aus zwei LEDs pro Balken. Das macht eine Ansteuerung mit \u00fcblichen TTL Pegeln etwas unhandlich (Durchlass Spannung laut Datenblatt ca. 4,4 Volt). Zudem sollte die Anzeige in der Helligkeit regulierbar sein, ein einfacher 7447 reicht also nicht aus.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Nach-5342-Sekunden.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-32\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Nach-5342-Sekunden.jpg\" alt=\"Nach 5342 Sekunden\" width=\"640\" height=\"384\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Nach-5342-Sekunden.jpg 640w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Nach-5342-Sekunden-300x180.jpg 300w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Nach-5342-Sekunden-624x374.jpg 624w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>Zuerst hatte ich gedacht, die Segmente \u00fcber eine Schieberegisteransteuerung mittels Open Collector bzw. Open Drain anzusprechen. Dazu hatte ich in meiner Bastelkiste aber nichts brauchbares und Schieberegister mit Open Collector sind auch nicht leicht zu bekommen.<\/p>\n<p>Der n\u00e4chste Gedanke war HCT statt TTL Typen zu verwenden. Die vertragen mehr als 5 Volt Betriebsspannung. Der 74HCT595 ist bis zu 7 Volt zugelassen. Das w\u00fcrde zur Ansteuerung reichen. Die Inputs w\u00fcrden auch bei 7V sicherlich noch zuverl\u00e4ssig mit normalen TTL Pegeln zu schalten sein. Allerdings ist die zus\u00e4tzliche Versorgungspannung etwas unhandlich.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Direkte-Ansteuerung.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-30\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Direkte-Ansteuerung.jpg\" alt=\"Direkte Ansteuerung\" width=\"340\" height=\"340\" \/><\/a>Deshalb habe ich mich dazu entschlossen, die Ansteuerung bei 5 Volt, daf\u00fcr aber ohne Vorwiderstand auszuf\u00fchren. F\u00fcr eine kommerzielle Schaltung sicherlich eine unzul\u00e4ssige Vorgehensweise, da sie so sehr stark auf Bauteil- und Versorgungsspannungs-schwankungen reagiert.<\/p>\n<p>Mein Microcontroller liefert auf der 5 Volt Schiene nur 4,8 Volt. Die LEDs ben\u00f6tigen 4,4 Volt und der Mosfet aus dem Treiber ben\u00f6tigt laut Datenblatt zwischen 0,15 und 0,4 Volt. Alles zusammen gibt einen Strom, der zwar noch unterhalb der zul\u00e4ssigen 20 Milliampere liegt (das Display erreicht nicht die volle Helligkeit) aber doch eine gute Anzeige erzeugt. Und es spart noch den Platz f\u00fcr 32 Widerst\u00e4nde. Die Schaltung wird dadurch deutlich kompakter.<\/p>\n<p>Der 74HTC595 bringt noch einen weiteren Vorteil mit: er hat einen Enabled Eingang, den ich mit einem Pulsweitenmodulationsausgang des Controllers verbinden kann. Dar\u00fcber kann ich ohne weiteren Hardwareaufwand eine Helligkeitssteuerung aufbauen. Im Testprojekt habe ich\u00a0 die Steuerung daf\u00fcr verwendet, bei einem Wechsel der Anzeige nicht einfach hart umzuschalten. Statt dessen wird die alte Anzeige kurz ausgeblendet, der Wert gewechselt und die neue Anzeige eingeblendet (ca. 200 Millisekunden). Es ergibt sich daraus eine altmodische Gl\u00fchlampen-Anmutung.<\/p>\n<p>Damit das Gesamtmodul m\u00f6glichst klein bleibt, habe ich die Siebensegmentanzeige auf die eine Seite der Platine gesetzt und die Schieberegister auf die andere Seite. Das war ein wenig fummelig, hat aber doch ganz gut funktioniert.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/R\u00fcckseite.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-31\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/R\u00fcckseite.jpg\" alt=\"R\u00fcckseite\" width=\"800\" height=\"463\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/R\u00fcckseite.jpg 800w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/R\u00fcckseite-300x174.jpg 300w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/R\u00fcckseite-624x361.jpg 624w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Jetzt fehlt nur noch die Ansteuerung. Ich habe hierf\u00fcr ein mbed Modul LPC 1768 verwendet. Dieses setze ich gerne f\u00fcr tempor\u00e4re Aufbauten zum experimentieren ein. Der Vorteil der mbed Umgebung ist, dass es eine sehr komfortable Software zur Ansteuerung der verschiedenen Ein- und Ausg\u00e4nge gibt.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Main.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-34\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Main.png\" alt=\"Main\" width=\"347\" height=\"241\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Main.png 347w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Main-300x208.png 300w\" sizes=\"auto, (max-width: 347px) 100vw, 347px\" \/><\/a>Das Hauptmodul ist trivial. Es wird pro Anzeigestelle eine Struktur initialisiert, welche die Daten f\u00fcr einen endlichen Automaten enth\u00e4lt. Zudem wird eine Interruptroutine aufgesetzt, die alle 5 Millisekunden l\u00e4uft und den Automaten weiter schaltet.<\/p>\n<p>Jedes Display &#8222;kennt&#8220; die Ziffer der aktuellen Anzeige sowie die Ziffer, welche beim Wechsel nach Aus- und Einblenden angezeigt werden soll.<\/p>\n<p>Damit nur die Stellen dunkler werden, die sich ver\u00e4ndern, hat jede Stelle seine eigene Pulsweitenmodulation.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Change.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-35\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Change.png\" alt=\"Change\" width=\"324\" height=\"242\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Change.png 324w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Change-300x224.png 300w\" sizes=\"auto, (max-width: 324px) 100vw, 324px\" \/><\/a>Nach der Initialisierung geht das Hauptprogramm in eine Endlosschleife, die einen Z\u00e4hler weiter schaltet (setInt) und danach jeweils eine Sekunde lang wartet.<\/p>\n<p>Beim Hochz\u00e4hlen muss f\u00fcr jede Anzeigestelle der neue Wert berechnet werden. Wenn er vom aktuellen Anzeigewert abweicht, wird der neue Wert im Feld nextView gespeichert und der endliche Automat gestart, der die Anzeige langsam Aus- und wieder Einblendet. Diese Funktion ist also nach wenigen Mikrosekunden wieder beendet.<\/p>\n<p>Die Aktualisierung der Anzeige sowie das Aus- und Einblenden findet in der Interruptfunktion statt. Diese wird \u00fcber eine Timer-Variable alle 5 Millisekunden aufgerufen und pr\u00fcft f\u00fcr alle vier Anzeigestellen den aktuellen Status.<\/p>\n<ul>\n<li>0: normale Anzeige, keine \u00c4nderung des Status-Werts.<\/li>\n<li>56 &#8211; 105: Anzeige ausblenden. Die Helligkeit ist bei 105 maximal, bei 55 minimal. Bei jedem Schritt den Status um eins herunter z\u00e4hlen.<\/li>\n<li>55: den Wert &#8222;n\u00e4chste Anzeige&#8220; in die aktuelle Anzeige \u00fcbernehmen und den Inhalt des Schieberegisters aktualisieren.<\/li>\n<li>50 &#8211; 1: Anzeige wieder einblenden. Die Helligkeit ist bei 50 minimal, bei 1 maximal. Bei jedem Schritt den Status weiter um eins herunter z\u00e4hlen.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/StateMachine.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-36\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/StateMachine.png\" alt=\"StateMachine\" width=\"419\" height=\"602\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/StateMachine.png 419w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/StateMachine-209x300.png 209w\" sizes=\"auto, (max-width: 419px) 100vw, 419px\" \/><\/a>Im normalen Betrieb ist der Status 0, es findet keine weitere Aktion statt. Sobald der Ein-Sekunden Timer den Anzeigewert hochschaltet, wird f\u00fcr jede Displaystelle der neue Wert berechnet und im Feld nextView eingetragen. Der aktuelle Anzeigewert darf noch nicht \u00fcberschrieben werden, da die Anzeige mit dem alten Wert ja langsam ausgeblendet werden soll.<\/p>\n<p>Jede Stelle, die sich ver\u00e4ndert hat, bekommt einen Statuswert 105. Daraufhin z\u00e4hlt der Automat bis 55 herunter und verringert dabei die Helligkeit auf Null.<\/p>\n<p>Bei 55 wird das Schieberegister mit dem neuen Wert geladen und der Automat z\u00e4hlt weiter runter. Ab 50 beginnt er damit, die Helligkeit wieder herauf zu setzen. Bei 0 ist dann wieder die maximale Helligkeit erreicht und der Status bleibt bei 0 stehen.<\/p>\n<p>Leider kommt meine kleine Digitalkamera nicht gut mit den stark schwankenden Helligkeitswerten klar und der Autofocus macht sich selbstst\u00e4ndig. Ich richtigen Leben ist das Aus- und Einblenden glatter. Das wird wohl teilweise durch die automatische Helligkeitskorrektur der Kamera weggeb\u00fcgelt. Aber man kann den gew\u00fcnschten Effekt trotzdem noch erkennen.<\/p>\n<p><iframe loading=\"lazy\" src=\"\/\/www.youtube.com\/embed\/TRV5qBpA8BM\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Von einem anderen Bastelprojekt hatte ich noch 4 Siebensegment Displays \u00fcbrig. Daraus wollte ich einen 4-stelligen Z\u00e4hler machen. Da die einzelnen Elemente 25 mm hoch sind, bestehen sie intern aus zwei LEDs pro Balken. Das macht eine Ansteuerung mit \u00fcblichen TTL Pegeln etwas unhandlich (Durchlass Spannung laut Datenblatt ca. 4,4 Volt). Zudem sollte die Anzeige [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-29","post","type-post","status-publish","format-standard","hentry","category-embedded"],"_links":{"self":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts\/29","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=29"}],"version-history":[{"count":4,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts\/29\/revisions"}],"predecessor-version":[{"id":39,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts\/29\/revisions\/39"}],"wp:attachment":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=29"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}