Ding:Adventskranz, LED, gelötet: Unterschied zwischen den Versionen

Aus FabLab Region Nürnberg
(→‎Programmierung: Beispielzeilen C-Code hinzugefügt)
(add: Kategorie:Projekte)
 
(3 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 2: Zeile 2:
|Foto = advent_wreath_1.jpg
|Foto = advent_wreath_1.jpg
|Status = gruen
|Status = gruen
|Schöpfer = [[Benutzer:Mac|Mac]] ([[Benutzer Diskussion:Mac|Diskussion]]), Rainer
|Schöpfer = [[Benutzer:Mac|Mac]] ([[Benutzer Diskussion:Mac|Diskussion]]), [[Benutzer:Rkeil|Rkeil]]
}}
}}


Zeile 25: Zeile 25:
* kleiner Seitenschneider
* kleiner Seitenschneider


Die LEDs dienen einerseits als Helligkeitssensoren, um den Adventskranz in der Dämmerung einzuschalten
Die LEDs dienen einerseits als Helligkeitssensoren, um den Adventskranz in der Dämmerung einzuschalten und andererseits als "Kerzen".   
und andererseits als "Kerzen".   


==Programmierung==
==Programmierung==


Unten auf [http://tinkerlog.com/2009/12/12/geeky-advent/ Geeky Advent] findet man die  
Unten auf [http://tinkerlog.com/2009/12/12/geeky-advent/ Geeky Advent] findet man die  
notwendige Software für den ATtiny13: [http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/advent.zip advent.zip]
notwendige Software für den ATtiny13: [http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/advent.zip advent.zip], Lokale Kopie: [[Datei:advent.zip]]


Entpackt man die Archivdatei, dann findet man in dem Unterverzeichnis advent die Datei ''Makefile'' und den Sourcecode ''advent.c'', welche mit dem C-Compiler ''avr-gcc'' übersetzt wird.
Entpackt man die Archivdatei, dann findet man in dem Unterverzeichnis ''advent'' die Datei ''Makefile'' und den Sourcecode ''advent.c'', welche mit dem C-Compiler ''avr-gcc'' übersetzt wird.


In der Datei ''Makefile'' muss man die gegebenenfalls die Variablen ''DEVICE'', ''CLOCK'', ''PROGRAMMER'' und ''FUSES'' anpassen. In meinem Fall hat es genügt, die Zeile für den Programmer in  
In der Datei ''Makefile'' muss man die gegebenenfalls die Variablen ''DEVICE'', ''CLOCK'', ''PROGRAMMER'' und ''FUSES'' anpassen. In meinem Fall hat es genügt, die Zeile für den Programmer in  
Zeile 41: Zeile 40:
zu ändern. Mit dem Befehl ''make install'' kann man den ATtiny nun programmieren. Dabei wird ''advent.c'' übersetzt, auf den Chip geschrieben und die Fuse-Bits gesetzt.
zu ändern. Mit dem Befehl ''make install'' kann man den ATtiny nun programmieren. Dabei wird ''advent.c'' übersetzt, auf den Chip geschrieben und die Fuse-Bits gesetzt.


Der Quellcode stammt aus dem Novermber 2009 und lässt sich mit einem aktuellen ''avr-gcc'' eventuell nicht übersetzen. Tritt der Fehler
Der Quellcode stammt aus dem November 2009 und mit einem aktuellen ''avr-gcc'' tritt folgender Übersetzungsfehler beim compilieren auf:


  advent.c:46:9: error: variable 'randomvals' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
  advent.c:46:9: error: variable 'randomvals' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
Zeile 49: Zeile 48:
  make: *** [advent.o] Error 1
  make: *** [advent.o] Error 1
   
   
auf, dann kann man die Zeile 46 in der Datei ''advent.c'' von
Die Zeile 46 in der Datei ''advent.c'' muß von


  uint8_t randomvals[] PROGMEM = {
  uint8_t randomvals[] PROGMEM = {
Zeile 55: Zeile 54:
in
in


  const int8_t randomvals[] PROGMEM = {
  const uint8_t randomvals[] PROGMEM = {


ändern, d.h. es muß ''const'' hinzuefügt werden.
korrigiert werden, d.h. der Datentyp muß mit ''const'' als Konstante definiert werden.


==Aufbau==
==Aufbau==


Der Chip liegt bei dieser Konstruktion auf dem Rücken. Der Pin '''4''' wird um des Gehäuse auf die Oberseite gebogen und daran  
Der Chip liegt bei dieser Konstruktion auf dem Rücken. Der Pin '''4''' wird um des Gehäuse herum auf die Oberseite gebogen und daran lötet man ein Drahtstück, welches später mit dem LED-Kranz verlötet wird. Aus einer Büroklammer wird eine Batteriehalterung für die Knopfzelle gebogen und Pin '''8''' vom ATtiny13 wird an die Büroklammer gelötet.  
lötet man ein Drahtstück. Aus einer Büroklammer wird eine Batteriehalterung für die Knopfzelle gebogen und Pin '''8'''
wird an die Büroklammer gelötet.  


[[Datei:advent_wreath_2.jpg|400px]]
[[Datei:advent_wreath_2.jpg|300px]]


Da der ATtiny nur mit Pin '''8''' an der Büroklammer befestigt ist, hat es sich als günstig
Da der ATtiny nur mit Pin '''8''' an der Büroklammer befestigt ist und beim Einsetzen der Lithium-Knopfzelle mechanisch belastet wird, hat es sich als stabiler
erwiesen, diesen Pin auf der ganzen Länge mit einem kurzen Drahtstück zu verlöten und den  
erwiesen, diesen Pin auf der ganzen Länge mit einem kurzen Drahtstück zu verlöten, den  
Draht ein paar mal um die Büroklammer zu wickeln und auch daran zu verlöten.
Draht ein paar Mal um die Büroklammer zu wickeln und auch daran zu verlöten.


Die (kürzeren an der abgeflachten Seite des LED Gehäuses angebrachten) Kathodendrähte der LEDs  
Die (kürzeren an der abgeflachten Seite des LED Gehäuses angebrachten) Kathodendrähte der LEDs  
werden zu einem Kreis zsammengelötet. Danach lötete man die vier längeren Anodendrähte an die Pins '''2''','''3''','''6''' und '''7'''
werden zu einem Kreis zusammengelötet. Danach lötete man die vier längeren Anodendrähte an die Pins '''2''','''3''','''6''' und '''7''' des ATtiny Chips. Pin '''1''' und '''5''' werden nach der Programmierung nicht mehr verwendet.
des ATtiny Chips. Pin '''1''' und '''5''' werden nach der Programmierung nicht mehr verwendet.


Das Drahtstück, welches mit dem Pin '''4''' verlötet ist, wird nun noch mit dem Ring verlötet, der die Minuspole der LEDs verbindet.
Das Drahtstück, welches mit dem Pin '''4''' verlötet ist, wird nun noch mit dem Ring verlötet, der die Minuspole der LEDs verbindet.


Mit der Knopfzelle wird der Chip in die Büroklammerkonstruktion - den Batteriehalter - festgeklemmt.
Mit der Knopfzelle wird der Chip in die Büroklammerkonstruktion - den Batteriehalter - festgeklemmt. Die Oberseite des Chipgehäuses weist dabei nach unten und die Pins nach oben.  
Die Oberseite des Chipgehäuses weist dabei nach unten und die Pins nach oben.  


Die Knopfzelle weist mit dem Pluspol nach unten und dem Minuspol nach oben.
Die Knopfzelle weist mit dem Pluspol nach unten und dem Minuspol nach oben.
Dadurch ist der Pluspol mit Pin '''8''' verbunden. Der Minuspol bildet einen Kontakt zu dem Pin '''4''', der auf die Chipgehäuseseite gebogen wurde,  
Dadurch ist der Pluspol mit Pin '''8''' verbunden. Der Minuspol bildet einen Kontakt zu dem Pin '''4''', der auf die obere Chipgehäuseseite gebogen wurde, die nun nach unten zur Batterie weist.
die nun zur Batterie weist.


==Betrieb==
==Betrieb==


Die LEDs sind als Helligkeitssensor geschaltet, der den Adventskranz ausschaltet, wenn eine bestimmte Helligkeit erreicht wird.  
Die LEDs sind als Helligkeitssensor geschaltet, der den Adventskranz ausschaltet, wenn eine bestimmte Helligkeit erreicht wird.  
Die Beleuchtung wird alle zwei Sekunden geprüft und die LEDs werden eigeschlatet, wenn es dunkel genug ist.
Die Beleuchtung wird alle zwei Sekunden geprüft und die LEDs werden eingeschlatet, wenn es dunkel genug ist.


Wenn Strom an die Konstruktion angelegt wird, wird die erste LED eingeschaltet. Entfernt man die Stromquelle - die Lithiumknopfzelle -  
Wenn Strom an die Konstruktion angelegt wird, wird die erste LED eingeschaltet. Entfernt man die Stromquelle - die Lithium-Knopfzelle -  
und verbindet sie danach wieder mit dem Büroklammerbatteriehalter, dann ist der zweite Advent, d.h. nun flackern zwei LEDs. Wiederholt man den Vorgang, dann schaltet sich die dritte LED dazu und schlussendlich die Vierte.
und verbindet sie danach wieder mit dem Büroklammerbatteriehalter, dann ist der zweite Advent, d.h. nun flackern zwei LEDs. Wiederholt man den Vorgang, dann schaltet sich die dritte LED dazu und schlussendlich die Vierte.


Entnimmt man nun die Batterie und schliesst sie erneut an, dann brennt wieder nur eine LED. Der ganz Zyklus ist also
Entnimmt man nun wieder die Batterie und schliesst sie erneut an, dann brennt nur eine LED. Der ganz Zyklus beginnt also von vorn:


  |-> 1 -> 2 -> 3 -> 4 ->|
  |-> 1 -> 2 -> 3 -> 4 ->|
  <----------------------v
  <----------------------v
[[Kategorie:Projekte]]
[[Kategorie:Elektronik]]
[[Kategorie:Mikrocontroller]]

Aktuelle Version vom 10. Mai 2015, 15:20 Uhr

Foto
advent wreath 1.jpg
Basisdaten
Status funktionstüchtig
Schöpfer Mac (Diskussion), Rkeil


Auf der Seite Geeky Advent auf Alex Webers Blog Tinkerlog ist die Anleitung für einen hübschen LED-Adventskranz zu finden.

Material

Benötigt werden

  • 4 x LEDs (gelb oder orange)
  • 1 x Atmel ATtiny13
  • 1 x Batterie Lithium Knopfzelle CR2032 (3V)
  • 1 x Büroklammer
  • ein paar Zentimeter Draht

Als Werkzeug benötigt man

  • Lötkolben
  • Lötzinn
  • kleine Spitzzange
  • kleiner Seitenschneider

Die LEDs dienen einerseits als Helligkeitssensoren, um den Adventskranz in der Dämmerung einzuschalten und andererseits als "Kerzen".

Programmierung

Unten auf Geeky Advent findet man die notwendige Software für den ATtiny13: advent.zip, Lokale Kopie: Datei:advent.zip

Entpackt man die Archivdatei, dann findet man in dem Unterverzeichnis advent die Datei Makefile und den Sourcecode advent.c, welche mit dem C-Compiler avr-gcc übersetzt wird.

In der Datei Makefile muss man die gegebenenfalls die Variablen DEVICE, CLOCK, PROGRAMMER und FUSES anpassen. In meinem Fall hat es genügt, die Zeile für den Programmer in

PROGRAMMER = -c usbasp

zu ändern. Mit dem Befehl make install kann man den ATtiny nun programmieren. Dabei wird advent.c übersetzt, auf den Chip geschrieben und die Fuse-Bits gesetzt.

Der Quellcode stammt aus dem November 2009 und mit einem aktuellen avr-gcc tritt folgender Übersetzungsfehler beim compilieren auf:

advent.c:46:9: error: variable 'randomvals' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
uint8_t randomvals[] PROGMEM = {
        ^
Makefile:37: recipe for target 'advent.o' failed
make: *** [advent.o] Error 1

Die Zeile 46 in der Datei advent.c muß von

uint8_t randomvals[] PROGMEM = {

in

const uint8_t randomvals[] PROGMEM = {

korrigiert werden, d.h. der Datentyp muß mit const als Konstante definiert werden.

Aufbau

Der Chip liegt bei dieser Konstruktion auf dem Rücken. Der Pin 4 wird um des Gehäuse herum auf die Oberseite gebogen und daran lötet man ein Drahtstück, welches später mit dem LED-Kranz verlötet wird. Aus einer Büroklammer wird eine Batteriehalterung für die Knopfzelle gebogen und Pin 8 vom ATtiny13 wird an die Büroklammer gelötet.

advent wreath 2.jpg

Da der ATtiny nur mit Pin 8 an der Büroklammer befestigt ist und beim Einsetzen der Lithium-Knopfzelle mechanisch belastet wird, hat es sich als stabiler erwiesen, diesen Pin auf der ganzen Länge mit einem kurzen Drahtstück zu verlöten, den Draht ein paar Mal um die Büroklammer zu wickeln und auch daran zu verlöten.

Die (kürzeren an der abgeflachten Seite des LED Gehäuses angebrachten) Kathodendrähte der LEDs werden zu einem Kreis zusammengelötet. Danach lötete man die vier längeren Anodendrähte an die Pins 2,3,6 und 7 des ATtiny Chips. Pin 1 und 5 werden nach der Programmierung nicht mehr verwendet.

Das Drahtstück, welches mit dem Pin 4 verlötet ist, wird nun noch mit dem Ring verlötet, der die Minuspole der LEDs verbindet.

Mit der Knopfzelle wird der Chip in die Büroklammerkonstruktion - den Batteriehalter - festgeklemmt. Die Oberseite des Chipgehäuses weist dabei nach unten und die Pins nach oben.

Die Knopfzelle weist mit dem Pluspol nach unten und dem Minuspol nach oben. Dadurch ist der Pluspol mit Pin 8 verbunden. Der Minuspol bildet einen Kontakt zu dem Pin 4, der auf die obere Chipgehäuseseite gebogen wurde, die nun nach unten zur Batterie weist.

Betrieb

Die LEDs sind als Helligkeitssensor geschaltet, der den Adventskranz ausschaltet, wenn eine bestimmte Helligkeit erreicht wird. Die Beleuchtung wird alle zwei Sekunden geprüft und die LEDs werden eingeschlatet, wenn es dunkel genug ist.

Wenn Strom an die Konstruktion angelegt wird, wird die erste LED eingeschaltet. Entfernt man die Stromquelle - die Lithium-Knopfzelle - und verbindet sie danach wieder mit dem Büroklammerbatteriehalter, dann ist der zweite Advent, d.h. nun flackern zwei LEDs. Wiederholt man den Vorgang, dann schaltet sich die dritte LED dazu und schlussendlich die Vierte.

Entnimmt man nun wieder die Batterie und schliesst sie erneut an, dann brennt nur eine LED. Der ganz Zyklus beginnt also von vorn:

|-> 1 -> 2 -> 3 -> 4 ->|
<----------------------v