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