Geocaching Reaktivlicht

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.

ReaktivlichtSchaltplan

 

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:

Reaktivlicht

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.

platine_unten

IMG_0891

 

reaktivlicht eingegossen

Viel Spaß damit!

16 thoughts on “Geocaching Reaktivlicht

  1. Kai Müller

    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

    Reply
  2. admin Post author

    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;

    }

    Reply
  3. Manuel Jaeger

    Ich habe eine Frage. Und zwar steht in der Anleitung, dass es keine Tag/Nacht Erkennung gibt. Blinkt es dann den ganzen Tag?

    Reply
    1. admin Post author

      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

      Reply
  4. Manuel Jaeger

    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

    Reply
  5. admin Post author

    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

    Reply
  6. Manuel Jaeger

    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

    Reply
  7. admin Post author

    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

    Reply
  8. Manuel Jaeger

    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. [;)]

    Reply
  9. admin Post author

    DER Attiny13 hat ein normales DIP-8 Gehäuse…
    Länge ca 9mm
    Breite 7,62mm
    Pinabstand: 2,56mm (normales Raster)

    Reply
  10. admin Post author

    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

    Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert


7 × sieben =