ELO-Flasher erweitert          

von Christian Herden                       
 
                      Elektronik-Labor  Bastelecke  Projekte  Mikrocontoller                         




Ich habe bereits mehrere Platinen frei nach dem ELO-Flasher gebaut. Eine praktische Anwendung fand eine Platine mit grüner LED in einer Funkprojektionsuhr. Die Uhrzeit wird alle 4 Sekunden an die Decke geblinkt, sie ist damit unabhängig vom Netz. Ein anderer blinkt seit fast fünf Jahren in einem Petling fröhlich vor sich hin. Da ich auch mehrere "ewige Binker" von Ihrer Hompage nachgebaut habe, kam mir die Idee, dass beim Blinker mit ATtiny13V noch mehr geht. Nach einer Skizze mit Papier und Bleistift baute ich die Schaltung auf einer Steckplatine auf und programmierte den ersten ATtiny13V für eine blaue LED. Das Ergebnis ist mit einer blauen, weißen oder grünen LED überzeugend.




Ich habe für den Blinker mit ATtiny13V ein Layout in Eagle erstellt, welches man wahlweise für einfachen oder doppelten Boost verwenden kann. Für einfachen Boost bestückt man nur R1 und C1, ansonsten ritzt man die Brücke in R2 durch und bestückt zusätzlich R2 und C2. Bis zum Einbau in einen Petling habe ich anstatt einer LED IC-Fassungen eingelötet. Man sieht es den Platinen an, dass viele Bauelemente aus anderen Schaltungen wiederverwertet wurden und die Lötstpitze hinüber ist. Empfehlen möchte ich die grüne LED von Reichelt "LED 5-22000" mit 15° Winkel und 22000 mcd.








Download: Die Eagle-Dateien

Dabei sind auch Platinen für den Ewigen Blinker mit Transistoren, diehe http://www.b-kainka.de/bastel59.htm


Download: Die Bascom-Quelltexte und Hex-Dateien


Ich habe einen Teil der Software von der Seite "Roboternetz Die Blinker". Meine veränderten Programme haben ein Blinkintervall von 2 Sekunden.
$regfile = "ATtiny13.DAT"
$crystal = 128000 'Reale Frequenz des internen 128kHz-Oszillators
Config Portb = &B00000001 'Pinb.0 auf 'Ausgang', Rest auf 'Eingang' schalten
Portb = &B11111110 'Pullups zuschalten, außer für Pinb.0
Stop Adc 'A/D-Wandler abschalten, um Strom zu sparen
Stop Ac 'Analog-Komparator abschalten, um Strom zu sparen

Enable Interrupts

Do
Portb.0 = 1
Wdtcr = &B11000000 'watchdog auf 16ms setzen
Reset Watchdog
Powerdown
Portb.0 = 0
Wdtcr = &B11000111 'watchdog auf 2s setzen
Reset Watchdog
Powerdown

Loop

End


'Quelle: http://www.roboternetz.de/community/threads/62930-Ewiger-Blinker-ATtiny13?s=cd945cd355634da1279a1e11af345887
' Nutzer "PsychoDreams":



Meine Version Blinker_020.bas:


$regfile = "ATtiny13.DAT"
$crystal = 128000 'Reale Frequenz des internen 128kHz-Oszillators
$hwstack = 2 'aus Kochbuch_V3.pdf Seite 7
$swstack = 8 'aus Kochbuch_V3.pdf Seite 7
$framesize = 24 'aus Kochbuch_V3.pdf Seite 7
Config Portb = &B00000001 'Pinb.0 auf 'Ausgang', Rest auf 'Eingang' schalten
Portb = &B11111110 'Pullups zuschalten, ausser fuer Pinb.0
Stop Adc 'A/D-Wandler abschalten, um Strom zu sparen
Stop Ac 'Analog-Komparator abschalten, um Strom zu sparen

Enable Interrupts

Do
Portb.0 = 1
Wdtcr = &B11000000 'watchdog auf 16ms setzen
Reset Watchdog
Powerdown
Portb.0 = 0
Wdtcr = &B11000111 'watchdog auf 2s setzen
Reset Watchdog
Powerdown
Loop

End



Blinker_020 - doppelt.bas:

$regfile = "ATtiny13.DAT"
$crystal = 128000 'Reale Frequenz des internen 128kHz-Oszillators
$hwstack = 2 'aus Kochbuch_V3.pdf Seite 7
$swstack = 8 'aus Kochbuch_V3.pdf Seite 7
$framesize = 24 'aus Kochbuch_V3.pdf Seite 7
Config Portb = &B00010001 'Pinb.0 und Pinb.4 auf 'Ausgang', Rest auf 'Eingang' schalten
Portb = &B11101110 'Pullups zuschalten, ausser fuer Pinb.0 und Pinb.4
Stop Adc 'A/D-Wandler abschalten, um Strom zu sparen
Stop Ac 'Analog-Komparator abschalten, um Strom zu sparen

Enable Interrupts

Do
Portb.0 = 1
Portb.4 = 0
Wdtcr = &B11000000 'watchdog auf 16ms setzen
Reset Watchdog
Powerdown
Portb.0 = 0
Portb.4 = 1
Wdtcr = &B11000111 'watchdog auf 2s setzen
Reset Watchdog
Powerdown
Loop

End



' Blinker doppelt (blaue LED)
'
' Schaltung:
' IC = ATTINY13V
' C LED C C = 100 µF
' ---||---o--|<|--o---||--- R = 10 kOhm
' | | | | U_B = 1.0 ... 1.5 V
' | - - |
' | R | | R | | |
' | - - | Kondensator laden:
' | | | | u_c = u_0 * (1 - e^(-t/tau))
' | ---- ---- |
' | | | | Zeitkonstante:
' | | ---- ---- | | tau = R * C
' | | -| 1 U 8 |---o |
' | | -| 2 7 |- | | Aufladeniveau:
' ---|---| 3 6 |- | | 1 tau = 63 %
' o---| 4 5 |---|--- 2 tau = 86 %
' | --------- | 3 tau = 95 %
' | | 4 tau = 98 %
' (-) (+) 5 tau = 100 %



Blinker_020 - doppelt Doppelblitz.bas:

$regfile = "ATtiny13.DAT"
$crystal = 128000 'Reale Frequenz des internen 128kHz-Oszillators
$hwstack = 2 'aus Kochbuch_V3.pdf Seite 7
$swstack = 8 'aus Kochbuch_V3.pdf Seite 7
$framesize = 24 'aus Kochbuch_V3.pdf Seite 7
' Config Portb = &B00000001 'Pinb.0 auf 'Ausgang', Rest auf 'Eingang' schalten
' Portb = &B11111110 'Pullups zuschalten, ausser fuer Pinb.0
Config Portb = &B00010001 'Pinb.0 und Pinb.4 auf 'Ausgang', Rest auf 'Eingang' schalten
Portb = &B11101110 'Pullups zuschalten, ausser fuer Pinb.0 und Pinb.4

Stop Adc 'A/D-Wandler abschalten, um Strom zu sparen
Stop Ac 'Analog-Komparator abschalten, um Strom zu sparen


Enable Interrupts


Do
Portb.0 = 1
Portb.4 = 0
Wdtcr = &B11000000 'watchdog auf 16ms setzen
Reset Watchdog
Powerdown
Portb.0 = 0
Portb.4 = 1
Wdtcr = &B11000010 'watchdog auf 64ms setzen
Reset Watchdog
Powerdown
Portb.0 = 1
Portb.4 = 0
Wdtcr = &B11000000 'watchdog auf 16ms setzen
Reset Watchdog
Powerdown
Portb.0 = 0
Portb.4 = 1
Wdtcr = &B11000111 'watchdog auf 2s setzen
Reset Watchdog
Powerdown
Loop

End



' Schaltung:
'
' C LED C
' ----||--o--<|---o--||----
' | | | | IC = ATTINY13V
' | - - | C = 100 µF
' | |R| |R| | R = 10 kOhm
' | - - | U_B = 1.2 --- 1.5 V
' | | | |
' | ---- ---- |
' | | | |
' | | ---- ---- | |
' | | -| 1 U 8 |---o |
' | | -| 2 7 |- | |
' ---|---| 3 6 |- | |
' o---| 4 5 |---|---
' | --------- |
' | |
' (-) (+)




Spannung-Verdreifachung (Überlegungen von B. Kainka)



Die Idee mit dem doppelten Boost ist wirklich innovativ! Ich verstehe das so, dass ein Elko an der LED-Seite im Ruhezustand auf GND liegt, der andere auf Vcc. Dementsprechend sollte im Ruhezustand der jeweilige Port die entgegengesetzte Spannung haben, sodass sich beide  Elkos auf die Betriebsspannung aufladen. Wenn dann beide Ports im selben Moment den Pegel wechseln, hat man im Leerlauf die dreifache Spannung. Die Idee habe ich jetzt mal in meinen ursprünglichen ELO-Flasher 2 übernommen und getestet. Zum Test wurde ein gerade vorhandener Tiny85 aus dem neuen Lernpaket Mikrocontroller verwendet, weil ich ihn direkt mit Bascom flashen kann. Leider ist dabei aber der Spannungswächter auf 1,8 V eingestellt. Ich habe es mit 2 V getestet und das Signal am Oszilloskop betrachtet. Und tatsächlich, die Impulse erreichen ohne Belastung fast 6 V. Wenn man eine LED anschließt, werden die Impulse automatisch auf die LED-Spannung begrenzt.


'ELO-Flasher-3, Test mit Tiny85

$regfile = "attiny85.dat"
'$crystal = 600000
$crystal = 8000000
$hwstack = 8
$swstack = 4
$framesize = 4
'Watchdog Reset nach ca. 2 s
'Config Watchdog = 2048
'Start Watchdog

do
Ddrb = &B11111111
Portb = &B00000111
Waitms 5
Portb = &B00011000
Waitms 100
loop
' Powerdown
End
Das Programm läuft hier testweise ohne den Watchdog in einer Do-Loop-Schleife, damit ich es besser am Oszilloskop untersuchen kann.

Hinweise von Rudolf Drabek:

Der Tiny13 oder 13A funktioniert, je nach Exemplar bis zu 1,2 V Betriebsspannung. An sich spart man noch Strom, wenn man den 180 kHz Oszillator per Fuses setzt. Vorsicht ist angebracht. Immer die komplette Fuse also 2 Digits eingeben. Sonst kann es, je nach IDE  zu Aussperrungen kommen kann. Die kann man aber mit Deinem Programm LPmikro.exe wieder auf Fabrikswerte zurücksetzen. Was ich als angenehme Erweiterung Deines Programmes empfinde.




Elektronik-Labor  Bastelecke  Projekte  Mikrocontoller