
Tiny13 Funktimer
von Hubert, OE3FHA
Elektronik-Labor Projekte AVR
In
meinem Haushalt gab es zur Advent- und Weihnachtszeit einfach zu viele
Schaltuhren zum jährlichen programmieren, einfach nervig. Da wird es
doch eine Lösung mit einem Atmel geben, am besten mit einem Tiny13, mein
Liebling für solche Aufgaben.
Es
gab oder gibt bei Pollin Funksteckdosen die man (vom Kode her)
programmieren kann. Einfach genügend Steckdosen mit gleichem Kode
einstellen, und wenn man die Fernbedienung drückt, geht die Sonne auf,
ich meine natürlich das Licht überall gleichzeitig an, ideal für diese
Zwecke. Jetzt müsste noch jemand da sein der zur rechten Zeit die
Tasten drückt.
Man
seziere eine Zeitschaltuhr um geringes Geld die fast keine
Stromaufnahme hat, versehe diese mit einer alkalischen AAA Mikro-Zelle
1,5V (~ 10 Jahre Betriebszeit), wurde ja auch für eine LR44 Knopfzelle
konzipiert, und entferne den netzseitigen Anteil mit Relais usw.
Dann haben wir die Zeitbasis. Der Schaltausgang dieser Uhr ist der
Kommandoeingang für den Tiny13 der zur rechten Zeit die Tasten der
Funkfernbedienung drücken soll und, unglaublich, mit dem richtigen
Programm und der Rundum-Beschaltung drückt er auch.

Das
HX2262 ist das Encoder-IC und sitzt in der Fernbedienung. Da zwei Pins
am HX2262-Chip gleichzeitig gegen Masse gezogen werden müssen und
eine Pegelanpassung an die 12 V des HX2262 notwendig ist muss eine
Ansteuerung mittels Transistor-Matrix durchgeführt werden. Bei anderen
Chips muss gleich verfahren werden. Möglicherweise, je nach Typ, muss
dann nur ein Pin gegen GND oder VCC geschaltet werden. Die Eingabe der
Schaltzeiten für Port 0 erfolgt über die Zeitschaltuhr, auch hier ist
eine Pegelanpassung mittels NPN-Transistor der Schaltuhr (1,5V zu
Attiny13) notwendig, in meinem Fall low = ein, high = aus.
Für
die 12 V muss ein Spannungswandler her, natürlich chinesische
Produktion
um ca. 25 Cent, der Inhibit Eingang des Wandler IC muss freigelegt
werden, so dass der Tiny13 zur rechten Zeit die 12 V an die
Fernbedienung
anlegen kann, ein wenig eine Pfriemelei, doch für SMD-Freeks vermutlich
kein sonderliches Problem. Wer das nicht kann, auch kein Problem, der
Wandler und die Fernbedienung braucht jeweils im Ruhezustand nur
geringen Strom, man kann ja das ganze mittels 5V-Steckernetzteil
betreiben. Ich ziehe die mobile Version vor da ich mir den besten
"Sendeplatz" im Haus aussuchen kann (Funkschatten wegen geringer
Sendeleistung), so dass sicher alle Steckdosen erreicht werden. Des
Weiteren ist im Programm die Sequenz enthalten, dass beim Drücken der
Fernbedienungstasten ebenfalls die 12 V anliegen und eine manuelle
Bedienung der Funksteckdosen über die Fernbedienung gewährleistet ist.
Die Schaltuhrbatterie, habe ich schon erwähnt, hält min. 10 Jahre
(errechnet 12 Jahre) und ist bei mir fix verbaut, der Tiny13 mit
Spannungswandler erhält seine Spannung aus 3 Mignon-Zellen extern, die
unter den Betriebsbedingungen (6-8 Wochen im Jahr) auch ca. 10 Jahre
halten und eher das Ablaufdatum erreichen, bevor sie leer sind.
Eine
Anmerkung noch zur Funkfernbedienung: Die Pollin Fernbedienung ist groß
genug und funktioniert ganz gut ohne Handkapazität, bei wesentlich
kleineren Fernbedienungen kann die fehlende Handkapazität und
Körperantenne schon eine Rolle spielen.
Und jetzt lieber Freund, viel Spaß beim Nachbau und Freude im Einsatz.
Download: 1017Tastensimulation.zip

'--------------------------------------------------------------------------
' Tastensimulation fuer Funkfernbedienung ATtiny13.bas
' 2015 ,OE3FHA Hubert
'--------------------------------------------------------------------------
'Diese Tastensimulation mit ATtiny13 ermöglicht es mittels einer Schaltuhr,
' eine Taste einer Pollin Funkfernbedienung ein- und wieder auszuschalten.
' Da zwei Pin am HX2262-Chip der Fernbedienung gleichzeitig gegen Masse
' gezogen werden müssen und eine Pegelanpassung an die 12V des HX2262 notwendig
' ist muss eine Ansteuerung mittels Transistor-Matrix durchgeführt werden.
' Die Eingabe der Schaltzeiten für Port 0 erfolgt über die Zeitschaltuhr,
' auch hier ist eine Pegelanpassung mittels NPN-Transistor der Schaltuhr
' (1,5V zu Attiny13) notwendig, in meinem Fall low=ein high=aus.
'--------------------------------------------------------------------------
' Fuse Bits: Nur SUT0 hat Haken im PonnyProg
$regfile = "attiny13.dat" 'verwendeter Prozessor
$crystal = 128000 'Takt 128000 Hz
$hwstack = 15 'Stack-Reservierung im SRAM
$swstack = 15
$framesize = 15
' Strom reduzieren was geht, häng ja schließlich wochenlang an Mignon-Zellen.
' 1. Disable/Switch off, AD Converter
' 2. Disable/Switch off, Analog Comparator
' Strom ist jetzt bei 128kHz ~180µA, das würde bei standard Mignon ~3000mA/h
' für 2 Jahre Dauerbetrieb reichen
Stop Watchdog
Stop Adc 'Switch off ADC
Stop Ac 'Switch off the power to the Analog Comparator
Reset Acsr. Acbg 'Disable Analog Comparator Bandgap Select
Ddrb = &B0000_1110 'konf Port's B auf 0=Eingabe 1=Ausgabe
Portb = &B0000_0000 'setze Port's B auf 0
Pinb = &B0001_0001 'setze Pullup von Port 0&4 auf high
'Routine zum sicheren Ausschalten der Funksteckdosen nach Inbetriebnahme (Stromausfall)
Portb.3 = 1 'Spannungswandler fuer Sender ist ON am Pin 2
Portb.1 = 0 'Taste ON Kanal A ist OFF
Waitms 100
Portb.2 = 1 'Taste OFF von Kanal A, (ist ON)
Wait 1
Portb.2 = 0 'Taste OFF von Kanal A, (ist OFF)
Portb.3 = 0 'Spannungswandler fuer Sender ist OFF
'*********************************************************************************
Mainon: 'Hauptroutine
Do 'Warteschleife
If Pinb.0 = 0 Then Goto Switchon 'Wenn Eingabe Low dann gehe zu 'Switchon'
If Pinb.4 = 0 Then Gosub Power12v 'Wenn Eingabe Low dann gehe zu 'Power12v'
Loop
'Routine zum Einschalten der Funksteckdosen
Switchon: 'Einschaltroutine
Portb.3 = 1 'Spannungswandler fuer Sender ist ON
Portb.2 = 0 'Taste OFF Kanal A ist OFF
Waitms 100
Portb.1 = 1 'Taste ON von Kanal A, (ist ON)
Wait 1
Portb.1 = 0 'Taste ON von Kanal A, (ist OFF)
Portb.3 = 0 'Spannungswandler 12V fuer Sender ist OFF
Mainoff:
Do 'Warteschleife
If Pinb.0 = 1 Then Goto Switchoff 'Wenn Eingabe High dann gehe zu 'Switchoff'
If Pinb.4 = 0 Then Gosub Power12v 'Wenn Eingabe Low dann gehe zu 'Power12v'
Loop
'Routine zum Ausschalten der Funksteckdosen
Switchoff: 'Ausschaltroutine
Portb.3 = 1 'Spannungswandler 12V fuer Sender ist ON
Portb.1 = 0 'Taste ON Kanal A ist OFF
Waitms 100
Portb.2 = 1 'Taste OFF von Kanal A, (ist ON)
Wait 1
Portb.2 = 0 'Taste OFF von Kanal A, (ist OFF)
Portb.3 = 0 'Spannungswandler 12V fuer Sender ist OFF
Goto Mainon
'Routine um 12V an die Fernbedienung bei Tastendruck anzulegen
Power12v: 'Hilfsroutiner für Tasten der Fernbedienung
Portb.3 = 1 'Spannungswandler 12V fuer Sender ist ON
Do 'Warteschleife
Debounce Pinb.4 , 1 , Retour 'Wenn Eingabe High dann gehe zu 'Retour'
Loop
Retour: 'Hilfsroutine für Programmrückkehr
Portb.3 = 0 'Spannungswandler 12V fuer Sender ist OFF
Return
Elektronik-Labor Projekte AVR