Langzeittimer für Ladegeräte          

von Hubert Freisinger, OE3FHA                       
 
                      Elektronik-Labor  Bastelecke  Projekte  Mikrocontoller                         



Siehe auch: Netzsynchroner Lanzeittimer

Seit langer Zeit bin ich im Besitz von sogenannten PMR-Funkmäusen. Diese haben sich über Jahre für Arbeiten im und ums Haus bewährt, zumal diese auch von nicht lizenzierten Personen benutzt werden dürfen und man im Prinzip quatschen kann wie einem der Schnabel gewachsen ist. Ob Elektro- oder sonstige Arbeiten auf Distanz, diese Dinger sind hin und wieder recht hilfreich.

Doch diese sind allesamt richtige Akkumörder, aber warum? Die meisten Geräte leiden heute unter der Tatsache dass es keinen wirklichen Aus-Schalter gibt, somit zieht das Teil weiterhin, wenn auch sehr gering Strom, die PMR immerhin 300µA an 800mAh, AAA. Das führt dazu dass nach 2-3 Monaten der Akku am Ende ist, bei NiMh-Akkus absolut tödlich. Bei diesen Dingern sind allesamt schon die Akkus getauscht, einfach sinnlos, gestorben wegen ewiger Entladung. Ich habe für diese kleinen Dinger extra eine -delta peak Ladeschaltung in die sonst mit einfallslosem Vorwiderstand betriebene Ladeschale eingebaut. Doch ewig nach Ladeende trickeln zu lassen ist auch keine Lösung. Meine Amateur Handsprechgeräte mit LiIo-Akku leiden ebenfalls unter diesem Entladesyndrom.



Wieder einmal hat BASCOM mit ATMEL die Lösung. Gleich vorweg, das Progrämmchen ist für meine Anwendung zugeschnitten, jeder soll das für seine Zwecke ändern so wie er will. Könnte mir vorstellen, das Ganze in einem Tiny2313 oder Mega8 mit LCD-Display zu versenken wo auch die EIN-AUS Zeit einstellbar ist. Ich für meinen Teil brauche nur den Timer ohne Schnick-Schnack, kann man ja umprogrammieren wenn es wirklich nicht passt, doch was soll daran nicht passen.



Die Anforderung ist ganz einfach, ich will nicht mehr alle 2-3 Monate als Manipulationsroboter für die diversen Kleinstgeräte fungieren, zumal bei der Anzahl dieser Dinger im Prinzip 2 Tage kaputt sind, denn etliche hand held Messgeräte mit NiMh Akku kommen noch dazu. Also muss dies wer Anderer machen. Wer Anderer? Richtig, ein Tiny13 kommt wieder zum Einsatz. Was soll der machen, in meinem Fall nach 10 Stunden Netz an den diversen Ladegeräten und für 45 Tage Pause, um danach wieder für 10 Stunden alle Ladegeräte ans Netz zu bringen, usw. usw. usw. Dazu wird eine Vielfachsteckleiste von mir mittels Relais aktiviert und wieder vom Netz genommen, die daran angeschlossenen Laderegler, in meinem Fall schlappe 8, können somit von Zeit zu Zeit ihrer Aufgabe nachkommen und die Akkus dahinter nachladen. Durch diese Vorgangsweise hält sich auch der Stromverbrauch übers Jahr in Grenzen.

Selbst ein namhafter Autohersteller schreibt vor man solle mindestens ein mal in der Woche mit der Karre für 1 Stunde fahren, kann sein dass dies bei arbeitenden Menschen kein Thema ist, ist bei mir in der Verschrottungsphase aber auch nicht mehr so selbstverständlich, oftmals nur 1 oder 2 Mal 10kM in der Woche zum Einkauf, der Rest zu Fuß oder mit dem Rad. Auch da verrichtet ein Tiny13 ganze Arbeit, ich "fahre" jeden Tag eine halbe Stunde in der Garage mit dem Ladegerät, der Akku ist 7 Jahre alt und putzmunter, den bekommt jetzt ein Freund aus dem Nachbarort.



Jetzt viel Spaß beim Nachbau, ich habe den Timer in eine Gehäuse eines zuvor für andere Zwecke geschlachteten Funkschalter mit Durchgangsdose eingebaut.

Download (Korrektur 16.4.19, s.u.):  ExtremLangzeittimer.zip


'Extrem Langzeittimer für periodisches Laden mit externem Ladegerät
'
'Angedacht für Ladegeräte die eine eigenständige Ladekontrolle haben, oder
'für wiederkehrende Erhaltungsladung mit Dauerstrom auf Zeit
'
'Ein Quarz-Takt ist nicht erforderlich da
'bei 10 Stunden einige Minuten keine Rolle spielen und
'bei langer Wartezeit ggf. 1 Stunde auch nicht ins Gewicht fällt
'
'Wenn man sich spielen möchte kann man mit der internen Taktkorrektur
'eine gute Näherung erreichen


'Angaben für den Kompiler
'------------------------

'Prozessor
$regfile = "attiny13.dat"

'intern Takt 1,2 MHz
$crystal = 1200000

'STACK, WICHTIG FÜR DIE WAIT-ROUTINE!
$hwstack = 10
$swstack = 15
$framesize = 10

'conf Port's B auf Eingabe=0, Ausgabe=1
Ddrb = &B0001_1111

Stop Ac 'Switch off the power to the Analog Comparator
Reset Acsr. Acbg 'Disable Analog Comparator Bandgap Select

'Programmschleife
'----------------
Do

Portb.4 = 0 'Grüne LED aus
Portb.3 = 1 'SSR und rote Led ein

'Warte ca. 10 Stunden, Ladegerät ein
Wait 36000

Portb.3 = 0 'SSR und rote Led aus
Portb.4 = 1 'Grüne LED ein

'Warte ca. 45 Tage, Ladegerät aus
Wait 3888000

Loop

WAIT ist eine Routine des Bascom-Kompilers, der Kompiler bindet diese ein als geschlossene Schleife mit den eben vorgegebenen Parametern und eröffnet im SW-Stack dafür ein BYTE, ein WORD (2Byte), oder ein DWORD (4Byte) + einige Byte für sich selbst, daher wichtig die Reservierung. Ob er noch mehr kann weiß ich nicht, doch ein DWORD reicht bis über 100 Jahre, ich denke weiter braucht der "normal Sterbliche" das nicht (Atmel garantiert bei 25 Grad 100 Jahre für das Flash). WAIT kann auch nur durch einen HW Interrupt unterbrochen werden (eben geschlossene Unterroutine) oder eben mit RESET beendet werden. Bei einem Interruptus verlängert sich das WAIT um die Dauer des Interrupt. WAIT verwendet auch bei mehrmaliger Anwendung immer den gleichen RAM-Speicherplatz daher ist eine mehrmalige Anwendung innerhalb eines Programm kein Problem. 

Korrektur:  Leider ist es nicht möglich 3888000 Sekunden ein Wait zu etablieren. Die Doku von Bascom gibt für Waitµs und für Waitms den max.Wert 65535 an, für Wait in Sekunden schweigt sie sich aus. Ich hatte seltsame Schalteffekte und nehme daher an, dass für Sekunden ebenfalls der Wert 65535 gilt. Daher Asche auf mein Haupt er macht es nicht. Als einfache Lösung habe ich vielfache Zeitschleifen mit dem genäherten Wert von 1 Stunde gemacht. Die Streuungen der Chips sind erheblich und so mache ich für jeden Chip eine genäherte Stunde, daher sind es keine 3600sek. Da haben Assembler Programmierer mit einer gefüllten Bibliothek einen riesen Vorteil so der Ass. Kompiler halbwegs Fehlerfrei funktioniert.


'Angedacht für Ladegeräte die eine eigenständige Ladekontrolle haben, oder
'für wiederkehrende Erhaltungsladung mit Dauerstrom auf Zeit
'
'Wichtig ist der Abgleich des Wait auf 1 Stunde da der interne Takt als Zeitbasis
'sehr ungenau ist und um etliche Minuten schwanken kann!
'Ein Quarz-Takt ist trotzdem nicht erforderlich da bei 1 Stunde einige Sekunden
'keine Rolle spielen.



'Angaben für den Kompiler
'------------------------

'Prozessor
$regfile = "attiny13.dat"

'intern Takt 1,2 MHz
$crystal = 1200000

'STACK, WICHTIG FÜR DIE WAIT-ROUTINE!
$hwstack = 10
$swstack = 15
$framesize = 10

Dim Z As Word

'conf Port's B auf Eingabe=0, Ausgabe=1
Ddrb = &B0001_1000

'Strom sparen
Stop Adc 'Switch off ADC
Stop Ac 'Switch off the power to the Analog Comparator
Reset Acsr. Acbg 'Disable Analog Comparator Bandgap Select

'Programmschleife
'----------------
Do

Portb.4 = 0 'Grüne LED aus
Portb.3 = 1 'SSR und rote Led ein


'Warte ca. 1 Stunde, Ladegerät ein

For Z = 1 To 10
Wait 3840 'Warte ca. 10x1 Stunde
Next Z


Portb.3 = 0 'SSR und rote Led aus
Portb.4 = 1 'Grüne LED ein


'Warte ca. 45 Tage, Ladegerät aus

For Z = 1 To 1080
Wait 3840 'Warte ca. 1080x1 Stunde = ca. 45 Tage
Next Z

Loop











Siehe auch: Netzsynchroner Lanzeittimer


Elektronik-Labor  Bastelecke  Projekte  Mikrocontoller