Dez
29
2009

Ein Weihnachtsgeschenk 2009

Ich hatte mir dieses Jahr eigentlich vorgenommen, zu Weihnachten als Geschenk eine selbstgebaute “Pulsanzeige” zu bauen, deren Schaltung dann noch in einem dekorativen Gehäuse verbaut werden sollte.  Das “Praktikum Elektrotechnik 2″, an dem ich dieses Semester  teilnehme, befasst sich im vierten Versuch mit Funktionsgeneratoren auf Basis von Operationsverstärkern und Grundschaltungen derselbigen. Jedenfalls brachte mich die letzte Aufgabenstellung der Versuchsdurchführung, nämlich das Verstärken des Pulssignals aus einer Fingerklammer, auf die Idee so etwas mal zuhause nachzubauen und es dann noch “Benutzerkompatibel” für die erwähnte Geschenkidee zu machen. Der Benutzer sollte dann einen Finger in eine Klammer stecken, die seinen Puls über das optische Verfahren abnimmt und die Operationsverstärkerschaltung betreibt dann eine dekorative Lampe die so synchron mit seinem Puls aufleuchtet.

Leider hat es mit der Zeit nicht mehr hingehauen, die Schaltung verschenkfertig zu machen. Es gab ein paar batteriespezifische Probleme und so weiter, von daher habe ich mich nach einem Alternativgeschenk umgesehen.

Bei der Suche bin ich auf eine Reihe Klein-Bastelprojekte gestoßen, die aufeinander aufbauen und sich auf interessantem Wege jeweils verbessern:

Phototransistorschaltung von www.evilmadscientist.com (Bild stammt von dort)

Zunächst ist auf www.evilmadscientist.com eine Bastelei aufgetaucht, die auf sehr minimalistischem Wege LEDs nur in dunkler Umgebung leuchten lässt (Link zum Artikel). Ein anderer Bastler hat auf www.instructables.com veröffentlicht, wie er eine kleine LED-Schaltung insofern mit einem Mikrocontroller erweitert hat, dass sie danach flackert wie eine Kerze (Link zur Anleitung).

Ein weiterer Hobbybastler hat dann auf www.hackaday.com veröffentlicht, wie er diese beiden Ideen kombiniert hat, um LEDs nur im Dunklen flackern zu lassen (Link zum Artikel). Die Schaltung bietet auf diesem Stand einen Mikrocontroller, der sich um das Flackern kümmert und einen Fototransistor, der den kompletten Mikrocontroller abschaltet, wenn das Umgebungslicht zu hell ist.

Fototransistor mit Mikrocontroller verschaltet auf www.spritesmod.com (Bild stammt von dort)

Diese Schaltung wiederum hat der Webmaster von www.spritesmods.com aufgegriffen (Link zum Artikel), weil ihm aufgefallen ist, dass die Schaltung auch mit viel weniger Bauteilen funktioniert, wenn man ein interessantes Detail von LEDs ausnutzt:

Wenn man Licht auf eine LED scheinen lässt, dann produziert sie eine Spannung an ihrer Sperrschicht, die in Sperrichtung abfällt. In diesem Moment kann man die LED wie eine kleine Stromquelle, parallel zu einem Kondensator geschaltet, betrachten.
Der Mikrocontroller nutzt diese Tatsache folgendermaßen aus: Er schaltet in gewissen Zeitintervallen die Beleuchtung ab, beschaltet eine LED hochohmig, damit sich eine Spannung anlegen kann, misst sie und entscheidet dann, ob die Lichter danach weiter leuchten sollen oder nicht. Ferner wird der Mikrocontroller nun nicht mehr ausgeschaltet, sondern legt sich einfach “schlafen” und wacht später für die nächste Messung wieder auf. Das ist immer noch extrem sparsam.

Schaltung, die ohne Phototransistor auskommt

Vereinfachte Schaltung von www.spritesmod.com (Bild stammt von dort)

Alex von www.tinkerlog.com hat diese Idee wiederum aufgegriffen und ihr mit einer künstlerisch anmutenden Freiform-Verlötung der Bauteile einen wundervollen Hauch von Eleganz und Ästhetik verpasst. (Link zum Artikel).

Weil mir die Idee so gut gefallen hat, habe ich mich schnell dazu entschieden, sie nachzubauen, zumal man sowas schön verschenken kann.

Allerdings bot die spritesmod.com-Version der Schaltung und Mikrocontroller-Software eine Möglichkeit, die Schwellhelligkeit, bei der die LEDs noch flackern sollen, einzustellen/zu kalibrieren. Die tinkerlog-Version hat darauf verzichtet, um Platz für ein anderes nettes Feature zu bieten: Wenn man den Mikrocontroller resettet, dann leuchtet jeweils eine andere Anzahl an LEDs, was wiederum sehr passend für die verschiedenen Adventswochen ist.

Die Version die ich nachgebaut habe, bot letzteres Feature nicht, zumal die Adventwochen sowieso schon vorbei waren und ich diese Kalibrierung nicht auslassen wollte, zumal der Benutzer meiner Ansicht nach entscheiden sollte, bei welcher Helligkeit er den Kranz schimmern sehen will.

Jedenfalls habe ich mich heute noch einmal hinter den Sourcecode geklemmt, um Helligkeitskalibrierung und Adventskerzenfunktion zu haben.

Das Flackern der Lichter wird  realisiert, indem einfach verschiedene LED-Helligkeiten die in einem Array gespeichert sind, schnell nacheinander auf den LEDs dargestellt werden. Die Werte sind allesamt möglichst zufällig gewählt, um sich dem praktisch zufälligen Flackern einer Kerzenflamme in den ebenso praktisch zufälligen Luftzügen, die man zuhause so hat, anzunähern.

Im Endeffekt lief es darauf hinaus, dass ich so viele Zufallszahlen aus dem Zufallszahlen-Array herausgelöscht habe, dass beide Features auf den Chip passen. Außerdem habe ich die im EEPROM gespeicherten Werte (Kerzen-Anzahl und gespeicherte Schwell-Helligkeit) in eine .eep Datei ausgelagert, die getrennt auf den Chip geflasht werden kann.

Ein Video zeigt ganz gut, dass es keinen deutlichen Unterschied macht, ob es ~150 oder ~250 Zufallswerte sind, die das Flackern erzeugen. Zwei Abschnitte des folgenden Videos sind mit zwei verschieden großen Zufallszahlen-Arrays gemacht. Um ehrlich zu sein, weiß ich selbst nicht mehr, welcher Abschnitt mit welcher Einstellung arbeitet:

Nun ja, besonders verwunderlich ist das nicht, zumal das Kerzenflackern ja schon mit zwei NE556-Bausteinen gut klappt.

Den Sourcecode inklusive dem angepassen Makefile gibt es hier: Download

Video vom fertigen Aufbau:

0 Kommentare
Written by Jacek in: Elektronik | Schlagwörter:, , , , , , , ,
Jan
22
2009

Dekorative Laufschrift

Dekoratives LauflichtSpätestens einen Monat vor Weihnachten war klar: Ich brauche ein Geschenk für meine Freundin.

Es lag sofort nahe, dass ich eins basteln könnte. Basteln ist günstig und macht Spaß. Abgesehen davon ist das Produkt dann ein sehr individuelles Geschenk.

Die eigentliche Idee habe ich zwar irgendwann in der Vergangenheit schon einmal im Internet gesehen, aber ich habe das alles trotzdem einfach mal ohne Pläne von anderen aufgebaut, weil es dann auch lehrreicher für mich war.

Nun, zur Idee: Ich plante, ihr eine Laufschrift, die von LED-Punktmatrix-Elementen dargestellt wird, zu schenken, die in ein leicht milchiges Gefäß von der Größe eines Teelichts eingebaut ist. Oben sollten dann dekorativ kleine Pflänzchen herausstehen.

Also bestellte ich mal los: Die Schaltung selbst würde eigentlich nur aus folgenden Teilen bestehen:

  • Europlatine
  • Mikrocontroller (AVR ATMEGA8 ist hier völlig ausreichen)
  • Zwei 5*7 Pixel LED-Matrizen
  • Verbindungsdraht zum Verlöten, da ich darauf verzichtete, die Platine zu ätzen
  • Entsprechende Vorwiderstände für die LED-Matrizen

Die Verdrahtung sollte dann recht simpel sein. Zwei nebeneinander gesetzte 5*7-Pixel-Matrizen ergeben eine 10*7-Pixel-Matrix. Wenn man sie “multiplext”, dann braucht man 10 +7 Pins am Mikrocontroller, um sie anzusteuern. Das sind dann also 10 Pins jeweils pro Spalte und 7 Pins jeweils pro Zeile. Laut Datenblatt brauchen die Matrizen (Bezeichnung: Kingbright TA07-11HWA) 2Volt Spannung und 25mA Strom pro LED-Einheit.

testschaltungDie Betriebsspannung des Mikrocontrollers war dann so ein Problem: Einerseits sollte alles schön klein sein, andererseits bräuchte ich alleine drei Mignon-Zellen für nur 4,5Volt. Das wäre nicht mehr so optimal dimensioniert für ein Teelicht-großes Geschenk. Tests mit einem kleinen Prototypen der Schaltung ergaben, dass der Mikrocontroller bei 3V Spannung noch problemlos arbeitet! Also habe ich mich dazu entschlossen, einfach mit zwei Mignonzellen zu arbeiten und fertig. Bei höheren Arbeitstakten des Mikroprozessors wäre das wohl problematisch, aber bei 1MHz ist das in Ordnung.

Da die Schaltung nicht wirklich kompliziert ist, habe ich sie direkt auf Platine gebannt, um die Software direkt los schreiben zu können, ohne das später noch Hardware-Änderungen aufgrund von Umständen, die ich vorher eventuell nicht bedacht habe, auftauchen. Software-Entwicklung macht viel mehr Spaß, wenn sich nicht ständig etwas ändert…

Der fertige Aufbau:

Fertige Platine von oben

Kein Inbegriff von Ordnung

Kein Inbegriff von Ordnung

Für die nächste Schaltung werde ich ganz sicher bunte Drähte benutzen.

ZeichensatzAls nächstes sollte die Software folgen. Da das Display 7 Pixel hoch ist, erdachte ich mir einen Zeichensatz (mit Alphabet und ein paar Sonderzeichen), in dem alle Buchstaben 7 Pixel hoch und vier Pixel breit sind, so dass man einfach ein C-Character-Array (8 Bit sind eins zu viel – egal, also verschenkt!) anlegt, das 4*Anzahl_der_Zeichen Felder lang ist.

In einem anderen Array sollten dann später die Buchstabenfolgen stehen, die auf dem Display tatsächlich angezeigt werden. {1, 2, 3} wäre demnach “ABC”.

 

Benutzt für Spalten und Zeilen die Notation von der Abbildung der Matrix-Verdrahtung

Notation folgt der Abbildung der Matrix-Verdrahtung

Die Anschlüsse des Displays auf der Platine sind fast wirr über die Ports auf dem Mikrocontroller verteilt, obwohl ich mich bemüht habe, sie an möglichst wenige Ports zu verbinden, um möglichst wenig Bitshifterei zu haben.

 

 

Verdrahtung der Matrix-Elemente

Die Spalten sollen HIGH-Pegel bekommen, die Zeilen LOW-Pegel. Das Programm schaltet zunächst alle Spalten auf LOW, steuert die Spalten bitmustergerecht an und gibt der entsprechenden Spalte dann HIGH-Pegel.

In festen Zeitintervallen wird die ganz rechte Spalte in die Spalte links daneben kopiert und aus dem Zeichensatz-Array das passende nächste Bitmuster wieder in die Spalte ganz rechts gesetzt, was prinzipiell wie ein Schieberegister funktioniert. Die Prozesse der Anzeige und der Zusammensetzung der darzustellenden Pixel finden getrennt statt, wodurch man Bildaufbaurate und die Geschwindigkeit der Laufschrift problemlos unabhängig voneinander einstellen kann.

Ab dem Punkt, ab dem alles funktionierte, konnte ja mit dem Einbau in den dekorativeren Teil des Geschenks begonnen werden, was eigentlich auch einfach nur mittels Heißkleber und Origami-Anleitungen geschah ;) :


Den C-Sourcecode gibt es hier zum Download.

0 Kommentare
Written by Jacek in: Elektronik | Schlagwörter:, , , , , , ,

Powered by WordPress. Theme: TheBuckmaker. Darlehen, Geld verdienen

3.14159