Bei den diversen Quellcodes werden immer Schwellen für Tag-/Nachtunterscheidung und Hub (Betrag, um den sich der Messwert vom vorherigen unterscheiden muss, damit ausgelöst wird) angegeben.
Diese sind extrem von der verwendeten LED und von der Einbauart abhängig. In den schnasemann-Codes sind die Schwellen für Einbau im PETling und die LED LS5436 von Osram definiert.
Bei Verwendung einer anderen LED oder einer anderen Einbausituation empfiehlt sich, folgendermaßen vorzugehen. Wer sich mit Programmieren auskennt, lässt die LED einmal pro Tageszyklus blitzen, dann erkennt man, wann das RL die Nacht erkennt. Der Wert muss zunächst stimmen.
Wer sich mit Programmieren schwerer tut, spielt nur am Dunkelwert, bis sich das RL mit einer sehr hellen Lampe auf kurze Entfernung nur bei gewünschter Dunkelheit auslösen lässt.
Danach muss nur noch mit dem Hub experimentiert werden, der einen Kompromiss zwischen Auslöseempfindlichkeit (mit evtl. Fehlauslösungen oder evtl. Unempfindlichkeit) und Reichweite darstellt.
Mit dem folgenden Programm lassen sich die Werte für die Empfindlichkeit der LEDs auslesen. Auslösung erfolgt durch eine Verdopplung der Lichtstärke. Es werden 4 Werte Durch Blinken ausgegeben:
1. Wert - langes Blinken - konstanter Wert 10er Stelle vor Auslösung mit TaLa
1,5 Sekunden Pause
2. Wert - kurzes Blinken - konstanter Wert 1er Stelle vor Auslösung mit TaLa
3,5 Sekunden Pause
3. Wert - langes Blinken - Lichtwert den die TaLa erzeugt, 10er Stelle
1,5 Sekunden Pause
4. Wert - kurzes Blinken - Lichtwert den die TaLa erzeugt, 1er Stelle
Beispiel (fiktiv): Im Dämmerlich erzeugt die LED einen Spannungspegel von 16, die Taschenlampe erzeugt dann bei der LED einen Spannungspegel von 64. Das RL blinkt:
1*lang
1,5 Sekunden Pause
6*kurz
3,5 Sekunden Pause
6*lang
1,5 Sekunden Pause
4*kurz
' Version 1.1 5.10.2010
' (c) geoclub & schnasemann & nhedgehog
'geändert nhedgehog 5.10.2010
$regfile = "ATtiny13.DAT"
$crystal = 128000 'Reale Frequenz des internen 128kHz-Oszillators
$hwstack = 10 'default use 32 for the hardware stack
$swstack = 20 'default use 10 for the SW stack
$framesize = 20 'default use 40 for the frame
Stop Ac
Config Portb = &B11101110 'Portb.4 und Portb.0 auf 'Eingang' schalten
Portb = &B00000001 'keine Pullups zuschalten, nur PB0
Wdtcr = &B11010100 'Watchdog auf 250ms einstellen
Enable Interrupts
Config Adc = Single , Prescaler = Auto , Reference = Internal 'Referenzspannung des Adc Auf "Internal" = 1,1 V
Dim Wert1 As Word
Dim Wert2 As Word
Dim Wert3 As Word
Dim Diode As Byte
Dim Temp As Byte
Dim Anzahl As Byte
Dim Runde As Byte
Dim Tagzaehler As Byte
Runde = 0
Portb.1 = 0 'Masse für portb.0
Diode = 3
Wert3 = 0
Do
Gosub Warte250ms
Gosub Einlesen
If Wert2 = Wert1 Then 'bei konstanten Lichtverhältnissen Wert auslesen, um TaLaStreuung zu mindern
Wert3 = Wert1
End If
Temp = 2 * Wert1
If Wert2 >= Temp Then
Gosub Blinken
End If
Wert1 = Wert2 'Wert2 nach Wert1 verschieben
Loop
Einlesen:
Start Adc
Config Portb.4 = Output 'LED "entladen"
Portb.4 = 0
Gosub Warte16ms
Config Portb.4 = Input
Portb.4 = 0
cbi adcsra,7 'ADEN = 0
Gosub Warte16ms
sbi adcsra,7 'ADEN = 1
Wert2 = Getadc(2) 'Spannung der LED messen
Stop Adc
Return
Blinken:
Diode = Wert3
Diode = Diode / 10
Gosub Blitz_lang
If Diode >= 1 Then
Temp = Diode * 10
Else
Temp = 0
End If
Diode = Wert3 - Temp
Gosub Blitz
Gosub Warte8s
Diode = Wert2
Diode = Diode / 10
Gosub Blitz_lang
If Diode >= 1 Then
Temp = Diode * 10
Else
Temp = 0
End If
Diode = Wert2 - Temp
Gosub Blitz
Return
Blitz: 'LED getaktet blinken lassen
Config Portb.4 = Output
Portb.4 = 0
For Anzahl = 1 To Diode 'Anzahl des vorprogrammierten Blinkens (10)
Portb.4 = 1
Gosub Warte16ms
Portb.4 = 0
Gosub Warte250ms
Gosub Warte250ms
Next Anzahl
Gosub Warte250ms
Gosub Warte250ms
Gosub Warte250ms
Gosub Warte250ms
Gosub Warte250ms
Gosub Warte250ms
Gosub Warte250ms
Gosub Warte250ms
Gosub Warte250ms
Gosub Warte250ms
Gosub Warte250ms
Gosub Warte250ms
Return
Blitz_lang: 'LED getaktet blinken lassen
Config Portb.4 = Output
Portb.4 = 0
For Anzahl = 1 To Diode 'Anzahl des vorprogrammierten Blinkens (10)
Portb.4 = 1
Gosub Warte64ms
Portb.4 = 0
Gosub Warte250ms
Gosub Warte250ms
Next Anzahl
Gosub Warte250ms
Gosub Warte250ms
Gosub Warte250ms
Gosub Warte250ms
Return
Warte8s:
Wdtcr = &B11110001 'Watchdog auf 8s einstellen
Reset Watchdog
Powerdown
Return
Warte16ms:
Wdtcr = &B11010000 'Watchdog auf 16ms einstellen
Reset Watchdog
Powerdown
Return
Warte64ms:
Wdtcr = &B11010010 'Watchdog auf 64ms einstellen
Reset Watchdog
Powerdown
Return
Warte250ms:
Wdtcr = &B11010100 'Watchdog auf 250ms einstellen
Reset Watchdog
Powerdown
Return
End
Hier noch einmal die Files zum Download:
reaktivlicht_wdt_teachin_LED_Test.bas
reaktivlicht_wdt_teachin_LED_Test.hex
Comments (0)
You don't have permission to comment on this page.