Inzwischen werden bei uns fünf Typen Müll entsorgt. Und für jedes dieser Ereignisse gibt es einen Termin der im Abfallkalender vermerkt ist. Am Vorabend muss also jemand die entsprechende Tonne rausstellen oder im Fall vom Schadstoffmobil organisieren, dass jemand die Kiste mit angesammeltem Sondermüll hinträgt.
Nun habe ich aber keine Lust jeden Abend auf den Abfallkalender
zu sehen. Und wenn es auch sonst in der Familie keiner tut, bleibt die Tonne schon mal
ungeleert.
Oder meine Frau erinnert sich früh morgends an den Müllwagen
und scheucht mich notdürftig bekleidet in den Garten um hektisch eine Tonne durch die
(meist durch Fahrräder zugestellte) Garage auf die Straße zu rumpeln. Wer schon
mal mit 'ner gelben Tonne im Arm in Badelatschen durch den Schnee gerannt ist weiß
warum ich das hasse!
Also kam mir die Idee, eine aktive Erinnerung an die
bevorstehende Leerung zu basteln. Eine App für's Handy wäre schön einfach
zu realisieren, bedeutet aber, dass ich allein für die Tonnen verantwortlich
wäre.
Besser wäre eine Anzeige irgendwo gut sichtbar im Haus. Ein 3,5Zoll
Monitor und ein Raspberry-Pi liegen bei mir noch irgendwo rum. Fehlt nur die Stromversorgung
und ein wenig Software.
Hm, eigentlich
geht mir das gegen den Strich, dass die Anzeige dann dauernd Strom braucht. Das muss auch anders
gehen!
Ein Pico-Power-Mikroprozessor der mit einer Batterie 10 Jahre laufen würde kriegt den
Kalender eingepflanzt und feuert am Abend vor einer Tonnenleerung einen ordentlichen Stromimpuls
auf eine Spule.
Am Eisenkern der
Spule hängt ein kleiner Magnet
mit einem farbigen Röhrchen dran. Kommt der Stromimpuls wird der Magnet
abgestoßen und das Röhrchen fällt runter. Das dient dann als Anzeige.
Hier habe ich das mal mit 5 Alu-Röhrchen aufgebaut die in PVC-Führungsröhrchen
stecken:
Wie man sieht, muss morgen die schwarze Tonne raus.
Meine Neodymmagnete waren viel zu stark. Also wurden sie mit Eisendraht künstlich schwächer gemacht und mit Heißkleber im Röhrchen fixiert.
Hier kann man sehen, wie der Eisendraht am Spulenkern klebt:
Die Spulen waren mal kleine vergossene Relais die ich mit einer Wasserpumpenzange als Nussknacker aufgebrochen habe.
Was mit einer Spule hervorragend funktioniert hat war mit den 5 Röhrchen eine Katastrophe: Wurde ein Röhrchen gefeuert riß es alle anderen mit sich sobald es unten an den Anschlag knallte. Diverse Versuche das zu dämpfen waren enttäuschend - einfach nicht zuverlässig genug.
Ein Fall für die Tonne. Nur die Relais wurden recycled.
Erstmal habe ich die Elektronik aufgebaut. Der Prozessor sieht mit 40Pins total überdimensioniert aus. Jepp, aber das ist nun mal der stromsparenste momentan lieferbare Atmel-Prozessor (0,6 Microampere). Außerdem hatte ich noch einen.
Die anderen Bauteile bilden einen Hochsetzsteller
um die 3V der Batterien auf 24V für die Spulen hochzujubeln. Die Spulen haben zwar nur 12V
man kann aber problemlos kurzzeitig das doppelte reinballern. Dann wird das abstoßende
Magnetfeld halt stärker!
Das
kleine IC enthält 8 Transistoren
um die Spulen anzusteuern. Da ich keine 18polige Fassung hatte tat es auch eine
eine 16polige, denn ich nutze ja nur 5 der Transistoren.
Auf der Rückseite noch ein paar SMD-Bauteile und Fädeldraht:
Statt runterfallender Röhrchen klappen nun kleine U-Profile aus Plastik herunter und pendeln sanft aus.
Die Neodymmagnete sind nur noch 2x3mm klein aber auch für 24V in der Spule zu stark und müssen durch Eisen geschwächt werden. Hier mit aufgeklebten Unterlegscheiben:
Da die Unterlegscheibchen manchmal beim Strompuls kleben blieben habe ich die Ladung verdoppelt (zweiten 47µ Elko eingelötet) und später auch noch kleine Gewichte aus PVC in einige U-Profile geklebt.
So sah das Gesamtgebilde aus:
Mit Kinderhilfe hübsch angemalt sieht das eingeklappt so aus:
Der Apparillo bekam noch eine Trägerplatte, Abstandsscheiben
zwischen den U-Profilen und eine Spulenabdeckung.
An der Trägerplatte hängt
er nun unter dem Küchenoberschrank in unmittelbarer Nähe zum
Kühlschrank:
Hier mal mit Erinnerung an die blaue Tonne:
Und jetzt die schwarze Restmülltonne:
Wenn jemand an den Kühlschrank oder die Obstschale geht kann er/sie das unmöglich übersehen. Und die Kühlschranktür öffnet sich am Abend häufig genug!
Damit ich mitbekomme ob die Uhr aus dem Ruder läuft habe ich eine Piezo-Piepser spendiert. Jeden Abend um 18Uhr piepst das Ding einmal kurz. Und für jedes rausklappende Fingerchen nochmal mit höherem Ton.
Den Hochsetzsteller der aus 3V die 24V machen soll habe ich erstmal in LTSpice simuliert um mich an die erforderlichen Pulszeiten ranzutasten.
Der letztlich daraus entwickelte Schaltplan:
Wenn ein Finger ausgeklappt werden soll, werden an PD4 Pulse mit steigender Frequenz ausgegeben wodurch die Spannung in den 47uF Elkos steigt. Steigt sie über 24V wird irgendwann der Eingang PD0 high und der Prozessor hört mit den Pulsen auf. Dann schaltet er einen der Ausgänge PA0..PA4 auf High um die 24V durch eine der Spulen zu jagen. Anschließend legt er sich wieder schlafen - nur der 32KHz Uhrenquarz läuft weiter.
Der Abfallkalender ist einfach direkt im Quellcode untergebracht:
Damit ich den schnell eingeben kann wird diese Tabelle mittels eines Perl-Scriptes aus einer simpleren Tabelle erzeugt. Eingeben muss man nur die Tage an denen etwas abgeholt wird. Die Monate bestimmt der Script aus dem Zusammenhang.
So läßt sich der Jahreskalender in wenigen Minuten eingeben.
Natürlich war die Softwareentwicklung wieder mal eine kleine Katastrophe. Der Prozessor
wacht alle 8 Sekunden aus einem stromsparenden Tiefschlaf auf und schaut, ob
der Tag rum ist. Aus sportlichem Ehrgeiz wollte ich die Zeit in der er
das testet möglichst kurz halten und habe daher den Teil handoptimiert. Dazu wurden alle
Variablen fest bestimmten Registern zugeordnet und ein paar Befehle in Assembler
geschrieben.
Der Compiler hat aber trotzdem unnötig komplizierten
Code daraus gemacht. Also wurden weitere Befehle in Assembler umgebaut. Die Uhr
lief dann aber viel zu langsam. Ich habe ziemlich lange gebraucht bis ich
durch Analyse um wieviel die Uhr falsch geht rausgefunden habe dass der
Compiler (WinAVR) einen meiner Befehle einfach wegoptimiert hat.
Ein 20 Minuten
Abschnitt (meine interne Zeiteinheit statt Stunden) war dann 256*8=34,13Min
statt der geplanten 150*8s=20Min Sekunden lang.
Daraufhin habe ich nun
die gesamte Routine in Assembler umgesetzt. Grmbl.
Zum Testen
der Uhr hatte ich einen Stundengong eingebaut der alle 20 Minuten piepst und
zur vollen Stunde wie eine Kirchenuhr so oft piepst wie der kleine Zeiger
der Uhr zeigt. Das war ganz hilfreich.
In der momentan laufenden Version
ist der Gong noch drin weil ich vergessen hatte ihn auszukommentieren.
Blöd.
Manchmal haben Compilerfehler auch was gutes: der Gong wird einfach nicht
aufgerufen. Prima!
Und ich will eigentlich auch gar nicht wissen warum.
Das Flashen des Prozessors ist dann auch noch so ein Abenteuer: Ich benutze den internen 128KHz Oszillator als Prozessortakt weil der so schön stromsparend ist. Aber mit dem Takt kann man kein Programm auf den Prozessor laden sondern nur die Fuses umprogrammieren. Also muss man erst den Takt des Programmers auf 30KHz runterdrehen , dann den des Prozessors auf 8MHz umstellen, dann den Takt des Programmers wieder auf 125KHz hochschrauben, das Programm flashen und den Prozessor wieder auf 128KHz umstellen. Was ein Eiertanz!
Ich habe mir jetzt einen PCF8563T Uhrenchip bestellt. Sollte ich nochmal eine Uhr bauen bastel ich da auf jedenfall der Chip rein. Der braucht noch weniger Strom und könnte den Prozessor pünktlich zu irgendwas wieder aufwecken. Das wird hoffentlich problemloser!
Schaltplan, Quellcode, Perlscript und
LTSpice-Simulationsdateien des Apparillos: 135muellerinnerung.zip
Kommentieren | Startseite |
Diese Seiten sind darauf optimiert mit möglichst jedem Browser zu funktionieren.
Aber der Seitenquelltext (strg-U) sieht auch interessant aus, zumindest wenn man ihn mit einem Monospace Font in sehr kleiner Schriftgröße betrachtet.