Zeitrelais mit dem ATtiny13


von Hubert Freisinger, OE3FHA  
Elektronik-Labor   Projekte   AVR 

Vor gut 25 Jahren habe ich mit LOGMOS ICs (40er Serie, damals und auch heute super Bausteine) für mich drei Zeitrelaiskreise mit der Funktion 5 Min. Licht und Dauerlicht schaltbar über Flächentaster an der Wand für Garten, Eingangstür und Vorraum, mühselig auf einer Lochrasterplatine aufgebaut und seit dieser Zeit in Betrieb. Die Relaiskontakte sind dementsprechend gezeichnet da auch Neonlampen, also Induktivitäten daran hängen.

Da ich vor gut 30 Jahren unter anderem Assemblerprogramme bei Siemens für 8080/85 µPs geschrieben habe bin ich jetzt, in meiner eigenen Verschrottungsphase, auf die Idee gekommen mir die neue µC-Generation zu Gemüte zu führen. Das ist ja elektrotechnische Völlerei auf kleinstem Raum.

Nach Errichtung einer minimalen Infrastruktur mit Pollin Evaluation Board wurde, durch einige Änderungen an diesem (z.B. Steckbarer Nullkraftsockel für die versch. µC Typen) und einem betagten Laptop mit 9pol. RS232 Schnittstelle, ans Sammeln von Datenblättern gegangen. Atmel hatte durch sein Preis-Leistungsverhältnis die Nase vorne. Da ging es auch schon los: der Tiny13 hat es mir erst einmal angetan.



So entstand ein Redesign meiner 25 Jahre alten Schaltung mit drei Stück Tiny13 gegenüber 7 LOCMOS von früher. Ein winziger Schritt für die Menschheit, ein riesen Schritt für mich.

Kurze Beschreibung: Bei Betätigen der Taste Licht wird der 1,5-µf -Tantal entladen (Flächentaster haben kein besonderes Kontaktmaterial und brauchen eine Mindeststrombelastung zur einwandfreien Funktion), der fallende Impuls verursacht ein Weiterschalten im Programmablauf auf die ca.5 Min. Zeitschleife. Eine weitere Betätigung auf Dauerlicht und nochmals auf Ausgangsstellung. Die freien Beinchen "mussten" einfach mit vorhandenen Leds, die den Schaltzustand darstellen, bestückt werden.

Wichtig ist der Netztrafo. Ich habe nach Durchsuchen meiner Schatztruhe Netztrafos mit 2,9 mA an 230 V Ruhestrom, ist 0,63 W Dauerleistung, gefunden. Das ist erträglich, ist doch das Teil 365 Tage im Einsatz und viele Kleineisentrafos einfach dahingehend Schrott (bis 15 mA!!), zu Tode gespart. Man könnte auch ein Kondensatornetzteil bei kompletter Kapselung ins Auge fassen, macht aber durch den Relaisstrom ein Problem.

Beleuchteter Tastschalter: Wird in meinem kleinen Projekt der 10-k-Widerstand auf 5,6 k verringert und mit 3 od. 4 Dioden 1N4148 in Serie (oder Z-Diode) eine superhelle Led über den Kontakt geschaltet so komme ich auf ca. 0,06 W Verbrauch des Tastenzweiges bei ca. 3 mA, und erhalte mir die Schaltmöglichkeit am PB0. Könnte leicht sein dass ich in Summe bei konventionellen Lösungen lande, denn eine brauchbare kleine Glimmlampe hat in der Regel 47 k Vorwiderstand und nimmt immerhin 0,3 - 0,5 W auf.

Download: ZeitrelaisATtiny13.bas

'--------------------------------------------------------------------------'
' Zeitrelais V2 ATtiny13.bas '
' 2012 ,OE3FHA Hubert '
' Freeware '
'--------------------------------------------------------------------------'
' '
'Dieses Zeitrelais mit ATtiny13 ermöglicht das Treppenlicht nach einmaligem'
'betätigen der Taste T (für die Zeit t=n Anzahl der Schleifendurchlaeufe) '
'einzuschalten oder in dieser Zeit auf Dauerlicht zu schalten, Ein dritter '
'Tastendruck stellt die Ausgangslage "Licht aus" wieder her. '
' '
'Einstellungen am Taster : 3 mögliche '
' '
' Ausganslage : Portb.4 = 0 Licht aus '
' 1. Tastendruck : Portb.4 = 1 (Dauer t= For A = 1 To n) '
' 2. Tastendruck : Portb.4 = 1 (Dauer t= unendlich) '
' 3. Tastendruck : Portb.4 = 0 Ausgangslage, Licht aus '
'--------------------------------------------------------------------------'

$regfile = "attiny13.dat" 'verwendeter Prozessor
$crystal = 1200000 'Definition des Takt
$hwstack = 15 'Reservierung im SRAM
$swstack = 15
$framesize = 15
Ddrb = &B00011110 'konf Port's B auf > 0=Eingabe 1=Ausgabe
Portb = &B00000000 'setze Port's B auf 0
Rem Pinb.0 = 1 'Pin 0 auf 1 setzen

Dim A As Integer '1.Variable für Schleife 'Timeloop
Dim B As Integer '2.Variable für Schleife 'Timeloop
Config Debounce = 30 'Zeit der Kontaktentprellung in ms

'Funktionstest nach Neustart

Portb.1 = 1 'Led Main gn >ON
Portb.2 = 1 'Led Time ge >ON
Portb.3 = 1 'Led Perm rt >ON
Wait 1


Main: 'Warten auf Taste

Portb.1 = 1 'Led Main gn >ON
Portb.2 = 0 'Led time ge >OFF
Portb.3 = 0 'Led Perm rt >OFF
Portb.4 = 0 'Rel+Led ge >OFF

Do 'Warteschleife

Debounce Pinb.0 , 0 , Timeloop 'Wenn Taste gedrueckt 'Timeloop'

Loop


Timeloop: 'warten auf Taste oder Schleifenende

Portb.1 = 0 'Led Main gn >OFF
Portb.2 = 1 'Led Time ge >ON
Portb.3 = 0 'Led Perm rt >OFF
Portb.4 = 1 'Rel+Led ge >ON

For A = 1 To 500 'Zeitschleife Multiplikator
For B = 1 To 15000

If A = 500 Then Goto Main ''Main' wenn A erfüllt
Debounce Pinb.0 , 0 , Perm 'Wenn Taste gedrueckt 'Perm'

Next B
Next A


Perm: 'Unterprogramm warten auf Taste

Portb.1 = 0 'Led Main gn >OFF
Portb.2 = 0 'Led Time ge >OFF
Portb.3 = 1 'Led Perm rt >ON
Portb.4 = 1 'Rel+Led ge >ON

Do 'Beginn der Schleife

Debounce Pinb.0 , 0 , Main 'Wenn Taste gedrueckt 'Main'

Loop



Elektronik-Labor   Projekte   AVR