| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

Tipps zum Ändern des Quellcodes, Anpassen an andere LED

Page history last edited by nhedgehog 13 years, 5 months ago

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.