Vor ein paar Jahren bin auf die außergewöhnliche Freizeitbeschäftigung Geocaching gestoßen. Für Nicht-Cacher werden diese Lichter relativ nutzlos sein. Die ersten Begegungen mit technischen Spielereien in Geocaches hatte ich beim hitec1@night, bei dem Morse-Reaktivlichter verbaut sind. Kurz darauf war ich natürlich ganz scharf darauf, meine eigenen Lichter zu bauen.
Das Reaktivlicht reagiert auf einfache Lichtsignale/Lichtblitze. Bei jedem Wechsel von Dunkel auf Hell leuchtet die LED kurz auf. Es gibt keine Tag/Nacht Erkennung, wie bei anderen Reaktivlichtern.
Schaltung
Hauptbestandteil der Schaltung ist ein Attiny13. An ihm ist der Fotowiderstand mit einem Pulldown Widerstand angeschlossen und die Power-LED. Die ganze Schaltung läuft mit 3V und kann deshalb ohne Probleme mit 2 AA oder AAA Batterien versorgt werden.
Je nachdem was für eine LED hier verwendet wird, muss noch ein Vorwiderstand dazwischen- geschalten werden. Als LDR verwende ich den günstigsten vom Conrad (Art.Nr. 145475). Bei der Verwendung von anderen LDR’s muss entsprechend der Pulldown-Widerstand angepasst werden.
Programm
Hier kann das Programm heruntergeladen werden:
Die Programmierung ist für sehr niedrigen Stromverbrauch optimiert. Der LDR bildet mit dem 1MOhm Widerstand einen Spannungsteiler der an PB1 gemessen wird. Fällt mehr Licht auf den LDR so sinkt der Widerstand und die Spannung an PB1 steigt. Der Attiny befindet sich fast immer im Tiefschlaf und wird bei jedem Wechsel an Pin PB1 aufgeweckt. Anschließend wird abgefragt, ob er auf High oder Low steht. Steht er nun auf High, so dimmt er die LED per PWM kurz hoch und anschließend wieder runter. Steht der Pin auf Low, so geht er wieder unmittelbar in den Sleep Mode. Das PWM Signal wird durch den Output Compare Match OCRA realisiert.
Der durchschnittliche Stromverbrauch beträgt 3µA, somit sollte das Licht selbst mit normalen AA Batterien mehrere Jahre halten.
Fertigung
Ich empfehle jede Elektronik für Außeneinsatz bei Geocaches einzugießen. Am besten hat sich einfaches Neutralvernetzendes Silikon aus dem Baumarkt bewährt. Vorher die komplette Schaltung darin eintauchen, damit es keine Luftlöcher gibt. Dann zusammen mit den Batterien in ein Gehäuse packen und es von beiden Seiten mit Silikon auffüllen.
WICHTIG: ES DARF AUF KEINEN FALL ESSIGSÄURE-/ACETATVERNETZENDES SILIKON VERWENDET WERDEN, DA DIESES DAS KUPFER WEGFRISST! AM BESTEN FUNKTIONIERT ES MIT NEUTRALVERNETZENDEM SILIKON (N-SILIKON).
Hier ein Beispiel für eine kompakte Bauform mit 2 AAA-Batterien, eingegossen in ein 25mm Aufputzrohr für Elektroinstallationen.
Viel Spaß damit!
Danke für den interessanten Beitrag, ich habe dazu eine Frage. Wie muß der Programmcode geändert werden wenn die LED zum Bsp 6 mal blinken soll.
Danke und viele Grüße Kai
Servus Kai!
vielen Dank für dein Interesse!
Hier der Programmcode für beliebiges Blinken…
Die komplette PWM-Dimmung fällt jetzt weg, deswegen kannst du dir die ganzen Timer-Register sparen (TCCR0A und TCCR0B). Die Variable
blink
gibt an wie oft er blinken soll. Außerdem kannst du mit den 2 delay-Warteschleifen die An- und Auszeit festlegen.Viel Spaß damit!
#define F_CPU 1200000
#include <avr/io.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
uint8_t blink;
ISR(PCINT0_vect) {
}
int main(void) {
GIMSK |= (1<<PCIE);
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sei();
while(1) {
blink=6; // Hier wird die Blink-Anzahl festgelegt
PCMSK |= (1<<PCINT1);
sleep_mode();
PCMSK &= ~(1<<PCINT1);
_delay_ms(1);
if (PINB & 0x02) {
DDRB = 0x01;
while(blink>0) {
PORTB = (1<<PB0);
_delay_ms(500); // Das ist die An-Zeit in Millisekunden
PORTB &= ~(1<<PB0);
_delay_ms(500); // Das ist die Aus-Zeit in Millisekunden
blink--;
}
DDRB = 0x00;
}
}
return 0;
}
Danke für die schnelle Antwort, werde es gleich mal ausprobieren.
VG Kai
Ich habe eine Frage. Und zwar steht in der Anleitung, dass es keine Tag/Nacht Erkennung gibt. Blinkt es dann den ganzen Tag?
Hallo Manuel,
nein natürlich nicht. Andere Reaktivlichter haben eine Tag/Nacht Erkennung zur minimalisierung des Stromverbrauchs. Da mein Reaktivlicht von Grund auf anders funktioniert, braucht es das nicht.
Der µC befindet sich praktisch immer im Tiefschlaf und er wird durch einen „Zustandswechsel“ an einem bestimmten Pin geweckt (Pin-Change-Interrupt). Dieser Wechsel passiert, wenn der Lichtwiderstand eine bestimmte Helligkeit überschreitet oder unterschreitet. Und nur in diesen kurzen Moment beim Wechseln des Zustands wird der µC geweckt. Dann wird gecheckt ob es jetzt hell oder dunkel ist. Wenn es ein Wechsel von dunkel zu hell war fängt die LED an zu leuchten.
Er reagiert sozusagen bei jedem Wechsel von dunkel auf hell. Der einzige minimale Nachteil dieser Version ist, dass das Reaktivlicht einmal am Tag (wenn die Sonne aufgeht) kurz aufleuchtet…
Sollte aber zu verschmerzen sein 😉
Aber anders bekommt man keinen Durchschnittsverbrauch von 3µA hin.
Andere Reaktivlichter funktionieren übrigens so:
Der Mikrocontroller wird alle 2 Sekunden geweckt und misst ob es bestimmte Helligkeitsänderungen gibt.
Am Tag wird diese Zeit heraufgesetzt auf ca 10-20 sek und immer wieder getestet ob schon Nacht ist…
Dieses Ganze nennt man dann Tag/Nacht Unterscheidung.
Ich hoffe ich konnte dir helfen!
LG Martin
Vielen Dank für die Antwort! Ich muss mir nur noch die Materialien besorgen und dann geht’s los!
Woher hast du denn das Ganze?
Gruß
Manuel
Das kriegt man bei jedem Elektronik-Distributor um die Ecke 😉
Conrad-Artikelnummer für den LDR steht ja im Text.
Attiny13 kriegt man auch beim Conrad oder Reichelt.
Wegen den LED’s musst dir halt noch den passenden Vorwiderstand dazu kaufen (wobei 3V läuft bei blauen und grünen LED’s auch ohne Vorwiderstand – Nur bei UV Rot und Orange brauchst du glaub ich welche – aber schau sicherheitshalber nochmal ins Datenblatt)
Gehäuse:
25mm oder 30mm Aufputzverlegerohr gibts in jedem Baumarkt
N-Silikon gibts auch in jedem Baumarkt
Ich würde dir allerdings noch empfehlen eine 3V Lithium Batterie zu verwenden.
Die hat ein bisschen mehr Ladung und ist temperaturbeständiger!
LG Martin
Ok, ich denke, dass ich mal bei einem solchen Shop vorbeischaue. In Sachen Putzrohr muss ich allerdings noch etwas loswerden… Kann man auch einen Petling verwenden? Passt das da rein oder nicht?
Gruß
Manuel
Uff.. Petling müsste es auch reinpassen…
Ich empfehle dir aber falls du es in einen Petling baust, diesen mit Silikon aufzugießen.
Einfach nur Deckel zu erleichtert zwar Batteriewechseln.
Aber da die Schaltung eh so sparsam ist und sie mit Batterien ca. 1,5 – 2 Jahre hält hast du vorher Wasser im Petling, wo das Ding dann natürlich komplett kaputt geht.
Am besten den PETling halb mit Silikon auffüllen, dann die Elektronik reindrücken und von oben nochmal auffüllen 😉
Falls du Fragen hast, gerne nochma schreiben.
LG Martin
Ich denke, dass ich das schon selber schaffe. Doch es bleit immer noch in Rätsel, welches Attiny 13 es genau ist! Was ist es?
Die Petling Sache:
Wenn ich den Petling halb mit diesem fettig Kleber fülle passt das da niemals rein! So geht’s leider nicht. [;)]
Ein ganz normaler Attiny13 in DIP-Version:
http://www.reichelt.de/?ACTION=3&GROUPID=2958&ARTICLE=58321&SHOW=1&
Einfach mein Programm draufladen und sollte funktionieren…
Ich meinte, dass du Elektronik in den Kleber reinsteckst damits komplett vergossen ist…
LG Martin
Wie lang und breit ist das?
DER Attiny13 hat ein normales DIP-8 Gehäuse…
Länge ca 9mm
Breite 7,62mm
Pinabstand: 2,56mm (normales Raster)
Ich meine die Platine. Kann man auch diese Batterie verwenden oder hat die zu viel Volt?
http://www.ebay.de/itm/350896254080?_trksid=p2055119.m1438.l2649&ssPageName=STRK%3AMEBIDX%3AIT
Die Platine hat ca 18x18mm.
Deinen Akku kannst du verwenden. Die Schaltung läuft von 2,7 – 5,5 V.
In deinem Fall braucht die LED aber einen Vorwiderstand…
Viele Grüße
Hallo – wie übersetze ich das Programm? Gruß, Robert