Phi - Ein Roboter als Haustier und Gartenbewohner
http://parinor.pureplayaz.de/

OBEN RUNTER Zusammenfassung


OBEN RUNTER HOCH Idee

Ende November wollte ich etwas vorbereiten, um mit meinen Kindern im Advent etwas weihnachtliches zu basteln. Vor den üblichen Transparentpapiersternen, Wallnussmännchen und Strohengelchen wollte ich mich dabei tunlichst drücken. Ein μC musste dabei auch irgendwie integriert werden. ;-) Da kam mir die Idee eines Drahtweihnachtsbaums mit LED-Kerzen und abspielbaren Farbmustern. Damit könnte man den μC auch gleich platinenfrei zentral in Szene setzen. Flux ins Internet und nach Designanregungen gesucht: Dieses Bild bewies, daß es gut aussehen könnte, worauf ich eine erste Skizze der Drahtkonstruktion entwarf:

BAUMSKIZZE

OBEN RUNTER HOCH Technischer Überblick

Die Drahtkonstruktion besteht aus Silberdraht und führt gleichzeitig das Nullpotential der Elektronik. Auf halber Höhe im Baumstamm ist der ATmega8 über seine GND-Pins mit der Drahtkonstruktion verlötet und hängt frei. Der ATmega ist minimal beschaltet, nur die klassischen 100 nF zwischen VCC und GND sowie 10 kΩ zwischen RESET und VCC sind vorhanden. Außerdem ist eine Schutzdiode eingelötet, da der Stecker am Batteriehalter nicht verpolungssicher ist. Die LEDs sind mit ihren Vorwiderständen über Kupferlackdraht mit je einem Portpin des μC verbunden.

GEEX-MAS-TREE_1

Um den Baum nachträglich noch flashen zu können (den Satz finde ich irgendwie witzig), habe ich mir noch einen Kabeladapter für mein AVRispMK2 zusammengebastelt.
Oben rechts sieht man den 6-poligen Stecker für das Programmiergerät, Pin1 ist mit einem Kabelbinder markiert. Die drei Krokoklemmen sind klar, die 3-polige Buchse für PinB3(MOSI) / PinB4(MISO) / PinB5(SCK) ist bewußt mit Ampelfarben belegt, rot muss nach oben, grün nach unten. ;-)

GEEX-MAS-ADAPTER

OBEN RUNTER HOCH Der Schaltplan

DRAHTBAUMSCHALTPLAN
Der Schaltplan des Drahtweihnachtsbaums V1.2

Für dieses kleine Projekt habe ich OpenOffice Draw verwendet, um den Schaltplan zu entwerfen. Viel dazu sagen muss ich nicht, an dem Ding ist ja fast nichts dran. Der ISP im Schaltplan ist der o.g. Kabeladapter. Er wird direkt auf PinB3/PinB4/PinB5 aufgesteckt und an die Drähte geklemmt.


OBEN RUNTER HOCH Die Berechnungen zum GeeX-Mas-Tree

Die Stromversorgung:
Das Akkupack kommt in der Summe auf 5,3 V. ich habe einen Spannungsabfall von 0,26 V an der Diode D1 gemessen, und erhalte somit für VCC ziemlich genau 5 V. Der maximale Durchlaßstrom der Diode beträgt 1 A, was mehr als genug ist.

Die Betrachtung der LEDs:
Der Drahtbaum hat vier Zweigebenen, die je vier LEDs tragen. Dabei ist jede Farbe in jeder Ebene einmal vertreten und in gleicher Reihenfolge, jedoch um 45° versetzt, angeordnet. Für die LEDs sind für mich die Flußspannungen UF und die Nennströme INenn relevant.

Name Farbe Flußspannung UF Nennstrom INenn
SLH 36 RT rot 2 V 25 mA
SLH 36 GN grün 2,2 V 25 mA
SLH 36 GE gelb 2,1 V 30 mA
SLH 36 BL blau 3,8 V 30 mA

Nach den klassischen Formeln für den Vorwiderstand RV = (UVCC - UF) / INenn und die Verlustleistung PV = INenn² ⋅RV können nun die Vorwiderstände ausgewählt werden:

Name RV berechnet PV berechnet Passender Widerstand
SLH 36 RT 121,6 Ω 76 mW 130 Ω 1/4 W
SLH 36 GN 113,6 Ω 71 mW 120 Ω 1/4 W
SLH 36 GE 98 Ω 88 mW 100 Ω 1/4 W
SLH 36 BL 41,3 Ω 37 mW 50 Ω 1/4 W

Da die LEDs über die Pins am μC versorgt werden, müssen die maximalen Ströme der Pins und der Ports auch berücksichtigt werden. Laut Datenblatt macht es auch einen Unterschied, ob der Pin auf HIGH geschaltet ist, und die LED versorgt, oder auf GND liegt und den Strom rückführt. Zweiteres erlaubt höhere Ströme. In meinem Fall gibt die Konstruktion des Weihnachtsbaums die Stromrichtung vor, da das Drahtgestell Nullpotential hat.
Mit folgenden Vorwiderständen können die Maximalströme eingehalten werden.

LED Vorwiderstand Strom
SLH 36 RT 180 Ω 17 mA
SLH 36 GN 150 Ω 19 mA
SLH 36 GE 130 Ω 23 mA
SLH 36 BL 110 Ω 11 mA

Ich musste mit der Verteilung der LEDs an dem Mega8 etwas herumprobieren, bevor die Ströme an den Ports passten, komme aber jetzt auf 89 mA an PortB, 98 mA an PortC und 92 mA an PortD, was die maximal erlaubten 100 mA pro Port gerade unterschreitet.
So viel zu den elektronischen Berechnungen, passt ja alles. Zumindest, solange Akkus im Batteriefach liegen. Was ich nicht berücksichtigt habe, ist, daß Batterien eine höhere Spannung haben, wodurch die Rechnungen mangels Spannungsregelung dann hinfällig wären und die Maximalströme am ATmega8 überschritten werden würden.

Fading und Timer-Zeiten
Timer/Counter 1A generiert alle 3,9 Sekunden einen Interrupt, der ausschließlich ein Flag setzt. In der Hauptschleife wird das Flag abgefragt und abhängig vom Blinkmuster werden die zu ändernden LEDs maskiert. Anschließend wird der Timer/Counter 2 im FastPWM-Mode gestartet. Dessen Vorteiler reduziert die Taktfrequenz des T/C2 auf 31 kHz. OCR2 beginnt bei BOTTOM und wird bei MAX inkrementiert. Hat OCR2 255 erreicht, wird der Timer/Counter 2 abgeschaltet.
Während der Timer/Counter 2 läuft, werden die maskierten LEDs einmal beim überlaufen von TOP und einmal bei erreichen von MAX mittels Interrupttoutine getoggelt. Mit fortlaufendem Inkrementieren von OCR2 wird die erste Pulsweite länger, die zweite kürzer. Dank der Trägheit des menschlichen Auges entsteht so der visuelle Eindruck des Ansteigens bzw. Abklingens der Lichtintensität. Der Zeitraum des Fadings tFading berechnet sich wie folgt:
T_FADING = 2
Dabei ist zu beachten, daß tFading kleiner ist, als das Intervall zwischen zwei Interrupts des T/C 1A, da es sonst zu ungewünschten Wechselwirkungen zwischen dem Fading und der Musteränderung kommt.
Dank eines kleinen Tricks funktioniert die PWM-Rampe sowohl fürs An-, als auch fürs Abschwellen der Helligkeit. Wird der Timer/Counter 2 gestartet, werden in beiden Interruptroutinen die LEDs einmal zusätzlich getoggelt. Diese zwei Schaltvorgänge können nicht wahrgenommen werden, sorgen aber dafür, daß die gewünschte Änderung mit der anfangs wesentlich kürzeren Pulsweite beginnt. D.h. Ist die LED aus und soll eingeschaltet werden, ist sie zu Beginn der Rampe während der ersten Pulsweite eingeschaltet, bei der zweiten ausgeschaltet. Die Leuchtzeit während des Zählerdurchlaufs steigt an. Ist die LED an und soll ausgeschaltet werden, ist sie zu Beginn der PWM-Rampe während der langen zweiten Pulsweite eingeschaltet, bei der ersten ausgeschaltet. Die Leuchtzeit während des Zählerdurchlaufs sinkt.

Umfänge der Drahtringe
Die Maße des Drahtgerüstes können aus der oben gezeigten Skizze entnommen werden. Lediglich die Umfänge der umlaufenden Drahtringe mussten berechnet werden:

Ebene Farbe in Skizze Radius Umfang
0 grün 1 cm 6,3 cm
1 pink 3 cm 18,9 cm
2 blau 5 cm 31,4 cm
3 rot 7 cm 44 cm

OBEN RUNTER HOCH Fazit

Alles in Allem ein kleines aber feines Projekt. Ich konnte die Entwicklungszeit und den Arbeitsumfang gut einschätzen und es passte in die Weihnachtszeit. Die Kinder konnten auch gut mithelfen, da viele Arbeitsschritte einfach umzusetzen waren. Am dritten Advent flimmerten die Blinkmuster dann durch den Drahtbaum und er stand oft während der Mahlzeiten auf dem Tisch.
Der Baum wurde ursprünglich mit Silberdraht der Stärke 0,8 mm gelötet. Ich merkte aber, daß die Wärme des Lötkolbens schnell abgeführt wurde, was das Löten erschwerte. Insbesondere die Spitze, an der 12 Drähte zusammenlaufen, ließ sich dann nicht mehr komplett aufschmelzen. Ich habe ihn zum Verschenken ein zweites Mal mit 0,6 mm Silberdraht gebastelt, was wesentlich einfacher ging.
Würde ich ihn nochmal bauen, würde ich die Vorwiderstände auch so anpassen, daß er problemlos mit normalen Batterien betrieben werden kann. Im Nachhinein muss ich sagen, ich habe diese zu knapp bemessen. Die Leuchtkraft der LEDs sollte dadurch kaum merklich sinken. Mal schauen, so ein großer Aufwand ist es auch nicht, die 16 Widerstände zu tauschen.
Witzig war noch, daß Groß-T (4 Jahre) darauf brannte, daß Klein-T (1,5 Jahre) endlich im Bett verschwand, weil sie dann ja Löten durfte. Abends, als es dann endlich losging, knipste sie mit Freude die Drahtlängen mit dem Saitenschneider passend oder unpassend auf Maß, um dann nach 15 bis 30 Minuten zufrieden und müde ins Bett zu gehen und sich aufs nächste Löten zu freuen.


OBEN HOCH Anhang

Der Quellcode
Der Quellcode ist eine quick-and-dirty-Lösung, um schnell ein paar Effekte auf den Tisch zu bekommen. Das Fading ist simpel und die Blinkmuster könnten mit Zeigern sicher eleganter gelöst werden. Wie auch immer, es erfüllt seinen Zweck und bei der Größenordnung des Projekts ist es tolerierbar.

Version 1.0 Finale Version geex-mas-tree_1.0.c 14.12.2012 9,2 kByte
geex-mas-tree_1.0.hex 14.12.2012 3,9 kByte


Liste der verwendeten Bauteile

Bauteil Name Anzahl Wert
ATmega8 1 Datenblatt
Kondensator C1 1 100 nF
Widerstand R1 1 10 kΩ
Vorwiderstand rot 4 180 Ω
Vorwiderstand grün 4 150 Ω
Vorwiderstand gelb 4 130 Ω
Vorwiderstand blau 4 110 Ω
Diode 1N4007 D1 1 Datenblatt
Schalter S1 1
LED SLH 36 RT rot 4 Datenblatt
LED SLH 36 GN grün 4 siehe SLH 36 RT
LED SLH 36 GE gelb 4 siehe SLH 36 RT
LED SLH 36 BL blau 4 Datenblatt
Silberdraht 0,6 mm
Kupferlackdraht 0,4 mm
Eine Pappbox
OBEN Letzte Änderung: 21. Januar 2013 - © Per Petersen