Der Blechfrosch ist inzwischen weggerostet, aber die Schaltung (und die FW) für die Augen sind fertig...
...naja, jetzt wo ich keine 2 Augen mehr brauche hab ich nur noch eine LED genommen.
Hier erstmal die Schaltung:

Was macht das ganze ?
Wenn die Umgebungshelligkeit ien bestimmtes Level unterschreitet fängt die LED an alle 2 sec zu blitzen.
Sehr einfach und vlt auch effektiv: Der AVR braucht 4µa im Standby und die LED wird auch mit als Lichtsensor benutzt.
hier nun die FW:
; Version 0.0.5a by DH8SZ
; * stomsparversion
; * Helligkeitssteuerung über LED
; zum blinken von 1 LED - zwischen PB0(Anode) & PB1(Katode)
; Helligkeitserkennug über die LED zum ausschalten bei Tag
.include "tn13def.inc"
.def temp = R16
.def w1 = R19
.def w2 = R20
;===============================================================================
; alles leer ...
.dseg
.eseg
; noch ...
;===============================================================================
.cseg
.org 0x000
rjmp start
;Waitloop - angepasst für 128kHz
wait:
;wait for 12 ms
ldi w1, 2
clr w2
wait_loop:
dec w2
brne wait_loop
dec w1
brne wait_loop
ret
start:
; Watchdogtimer setzen: systemreset alle 2 sek.
ldi temp, 0x0f
out WDTCR, temp
; testen hell/dunkel
; DDRB (Datenrichrungsregister) alle auf Eingänge setzen, bis auf pb0
ldi temp, 0b00000001
out ddrb, temp
; LED über int. Pullup "laden" --> pb1
ldi temp, 0b00000010
out portb, temp
rcall wait
; Pullup wieder abschalten und 12 ms warten
clr temp
out portb, temp
rcall wait
; testen ob LED noch "geladen" -->ja=dunkel / nein=hell
sbis pinb,1
rjmp ende
; DDRB (Datenrichtungsregister) auf pb0,pb1 Ausgänge setzen
ldi temp, 0b00000011
out ddrb, temp
; PB0 und PB1 kurz anschalten (pb0=1 und PB1=0)
ldi temp, 0b00000001
out portb, temp
rcall wait
; PB0 und PB1 wieder aus
clr temp
out portb, temp
ende:
; sleepmode klarmachen
ldi temp, 0x30
out mcucr,temp
wdr ; Watchdog zurücksetzen (damit der timer auch 2 sek. braucht...)
sleep ; enter sleepmode
(ich hoffe das kann man auch lesen...)
Mir ist auch nach mehrmaligem überfliegen keine wirkliche Optimierung mehr eingefallen.
Sicher, das eine oder andere ginge bestimt. Aber wozu ? Die meiste Zeit ist der MC im Standby und wartet auf den Watchdog...
Um eine 2. LED anzuschliessen müsste man eine separaten Port einrichten. LED1 wird halt "besonders" angesteuert.
Für das ganze, eigentlich um einen DAuertest mit der Batterie zu fahren, hab ich auf die Schnelle einen PETling als Gehäuse genommen, und ein bisschen verziert.

Das Ganze nochmal in Einzelteilen:

Dinge die man noch verändern könnte: ALLES! XD
Wie gesagt, dieser Aufbau ist in erster Linie zum testen der Batterielebendsdauer. Ich schätze 0,5 bis 1 Jahr, aber genau werde ich das erst in etwa einem Jahr wissen...
Die Hell/Dunkel Erkennung könnte optimiert werden - noch geht das ganze schon bei recht hoher Umgebungshelligkeit an.
Statt eines kurzen Aufblitzens könnte ein Morsezeichen ausgegeben werden - das ginge aber zu Lasten der Batterielebendsdauer.
Die ausgegebene Blinksequenz könnte programmierbar sein - ähnlich wie in Alex's Programmable LED
(aber auch das wieder zu lasten der Haltbarkeit...)
Und wozu ist das ganze gut ?:
Ja eigentlich...
Ursprünglich sollte das die Augensteuerung für den Blechfrosch werden, lässt sich aber bestimmt auch für andere GArtenDecoDInge verwenden. Ist bestimmt auch für Geocaching nützlich, oder für Nachtwanderungen oder für was man auch immer einen LED-Flasher mit Helligkeitssteuerung brauchen kann.
(vlt Alarmanlagendummie oder Klingelknopfbeleuchtung oder ...)
Keine Kommentare:
Kommentar veröffentlichen