Ausgangssituation |
Meine Lösung |
Elektronik |
Langsamer ist besser |
Display |
Download |
Der Mülleimer in meiner Küche
ist anfangs sehr unpraktisch gewesen. Man musste eine Schranktür öffnen, dann einen
Schlitten mit den Mülleimern rausziehen, den Müll einwerfen und alles wieder
schließen.
Mit Hilfe von Ikea-Gedöns habe ich das vor Jahren umgebaut,
so dass die Tür mit dem Schlitten mechanisch gekoppelt war. Wenn man die Tür
öffnete, kam der Schlitten mit den Abfallbehältern automatisch raus.
Beim Gemüse schnippeln fallen bei mir meist 2 Hände voll Abfall an. Mit beiden Händen voll Kartoffelschalen kann ich aber die Mülleimertür nicht öffnen. Also gehe ich erst zum Mülleimer, mache die Tür auf, gehe zurück zum Gemüse und trage dann den Müll zum Eimer.
Nun habe ich mir seit einiger Zeit jede Menge Know-How in Sachen Schrittmotoren angeeignet. Das muss doch für irgendwas gut sein.
Erstmal wurden die Scharniere abmontiert und die Tür direkt an den Halter der Abfallbehälter gespaxt.
Dann wurden die billigen auf dem Boden montierten Rollauszüge durch leichtgängigere hochwertige Vollauszüge ersetzt, die an der Seitenwand montiert wurden.
Darauf kam eine neue Bodenplatte mit diversen Klötzchen. Man kann nun den Schlitten von den Auszügen nehmen, ohne irgendwas abzuschrauben.
Der Antrieb ist ein fetter Schrittmotor, der den Schlitten über einen Zahnriemen zieht. Den Montagewinkel konnte ich mir in der Firma lasern lassen. Er dient auch gleich als Riemenspanner.
Auf der anderen Seite eine Zahnriemenscheibe, in die ich zwei Kugellager aus alten Inlinern eingebaut habe. Das Lager ist mit einer Schraube in einer dicken Rampa-Muffe im Schrankboden verankert.
Da ich keine passende Unterlegscheibe hatte, steckt in der Rampamuffe nun eine selbstgedrehter Gewindebolzen mit Absatz. Leider habe ich vergessen davon ein Foto zu machen. Da ich die Verschraubungen verklebt habe, wird es auch keins geben.
Der Zahnriemen ist nicht endlos, sondern wird von einer Halterung zusammengehalten, die auch gleich als Mitnehmer fungiert.
Durch die Bodenplatte des Schlittens geht eine lange Schraube, die in den Mitnehmer einhakt.
Die Zahnriemenscheiben und der Mitnehmer kommen aus dem 3D-Drucker und sind aus ABS.
Der Mitnehmer war zu instabil. Geholfen hat, zwei 3mm Schrauben quer durch Mitnehmer und Riemen zu bohren.
Der Metallgriff
der (ehemaligen) Tür dient als Sensor. Einfach berühren, schon fährt die Schublade
auf oder zu.
Hier ein kurzes Video , wie das ganze im Betrieb aussieht:
Video (20MB)
Den Motor direkt auf den Boden zu schrauben ist aus akustischer Sicht Mist. Man hört den Motor schon deutlich. Aber die Familie beurteilte das Geräusch als "futuristisch" und deshalb optimiere ich das nicht weg.
Nach kurzer Eingewöhnungsphase haben wir uns alle dabei ertappt, gelegentlich
auch andere schwere Schubladen (z.B.Topfschrank) einfach anzutippen, um dann enttäuscht
doch kräftig an dem Griff zu ziehen.
Ein Arduino pro-Mini dient als Steuerung. Dazu ein Stepper-Treiber mit TMC2100 (Silent-Step-Stick), der an 24V hängt. Ein Step-Down-Wandler erzeugt die 5V für den Arduino. Der ganze Krempel ist provisorisch auf Lochraster gehäkelt und wird das wahrscheinlich auch bleiben.
Der TMC2100 könnte durch die vom Motor generierte Spannung zerstört werden, wenn man die Schublade ohne Spannungsversorgung herauszieht. Daher habe ich zwei Relais spendiert, welche den Motor im stromlosen Zustand kurzschließen.
Als Bedienelement dient der Metallgriff der Fronttür. Da habe ich einfach einen Draht drangeklemmt und der Arduino misst die Kapazität gegen Erde. Wie das genau geht, steht als Kommentar ausführlich im Quellcode. Hier nur mal kurz das Prinzip erklärt: Ich benutze zwei Portpins, die über einen 560K Widerstand verbunden sind. Erst lege ich den Draht eine Weile auf +5V, dann ziehe ich ihn über den Widerstand auf 0V runter und messe, wie lange das dauert. Packt man den Griff an, dauert es länger.
Anfangs war die Empfindlichkeit so eingestellt, dass der Sensor bei mir problemlos funktionierte. Aber meine Tochter bekam den Mülleimer nur auf, wenn Sie mit der anderen Hand den Wasserhahn berührte. Nun habe ich ihn deutlich empfindlicher eingestellt. Die Folge ist, dass man gelegentlich von der Schublade geschubst wird, wenn man was aus dem Kühlschrank (neben dem Mülleimer) holt und mit der Hose an den Metallgriff kommt. In dem Fall setzt der Stepper einfach über und es passiert nix.
Damit der Schlitten so geschmeidig raus fährt, muss der Motor ein S-förmiges
Beschleunigungsprofil fahren. Ich habe unzählige Versuche unternommen, damit der Arduino
sich diesen Ablauf während der Fahrt errechnet. Die Ergebnisse waren extrem bescheiden.
Implementiert ist das Ganze nun einfach als Tabelle, welche für den halben Weg die
Dauer zwischen zwei Schritten enthält. Diese Kurve wird einmal hin und dann wieder
zurück durchlaufen, schon ist der Schlitten rausgefahren. Erzeugt wurde die Tabelle
mit einem Javascript-Programm (delayTable_codeGen.htm), in das ich gleich eine Anzeige
des Ablaufs eingebaut habe:
An den
Parametern habe ich mit unterschiedlicher Müllbeladung so lange rumgedreht, bis
die Schublade zügig ohne ruckeln fährt und auch mit randvollen Mülleimern
klar kommt.
Merkwürdigerweise fuhr die Schublade gelegentlich in die falsche
Richtung. Der Motor versuchte nach dem Schließen bei der nächsten Berührung
wieder die Schublade reinzuziehen, obwohl sie ja schon drin war.
War ein saublöder
Fehler: Der Prozessor machte nach dem reinfahren einen Neustart. Der Grund war in
der Software einfach nicht zu finden. Irgendwann habe ich dann mal die Versorgungsspannung
aufgezeichnet und eine Überraschung erlebt: beim reinfahren stieg die Spannung auf
über 30V um dann zügig
auf 0 abzufallen und erst nach
ein paar hundert Millisekunden wieder hoch zu kommen. Hm, bei 0V läuft auch der Arduino
nicht.
Hä? Was passiert denn da?
Der Motor muss nach halber Fahrt
den Schlitten bremsen und wirkt als Generator. Die Energie muss irgendwo hin und hebt daher die
Versorgungsspannung an. Der Schaltregler im Netzteil erkennt daraufhin eine zu hohe Ausgangsspannung
und macht dicht. Da die Spannung weit über die 24V ansteigt, schaltet das
Netzteil ganz ab, so dass es eine Weile dauert bis wieder Saft kommt, nachdem
die Spannung wieder unter 24V sinkt.
Lösung: Das Netzteil wurde mit einer Diode entkoppelt. Hinter der Diode ein Elko, der einen Teil der Energie aufnehmen kann. Zusätzlich eine 33V Suppressordiode über dem 35V Elko, damit der geschützt ist. Die Diode dient also als Bremswiderstand. Nicht optimal, da sie das eigentlich nur 1ms lang kann. Ob die Suppressordiode das auf Dauer verkraftet wird die Zeit zeigen. Die Mimik ist zumindest die letzten 2 Monate problemlos gelaufen. Sollte die Diode abrauchen, kommt da doch eine Power-Zenerdiode oder die simplere Variante aus 4 Bauteilen rein.
Momentan sieht der Schaltplan so aus:
(Größere Version im Download)
Nachtrag 2015-11-25
Es hat sich herausgestellt, dass bei vollem Mülleimer der Stepper manchmal übersetzt und es nicht schafft, den Eimer rauszufahren. Also habe ich eine neues Beschleunigungsprofil mit deutlich verminderter Beschleunigung (50000 statt 70000) erstellt. Jetzt dauert die Fahrt zwar 1/10s länger, das Gerät kommt aber viel besser mit der Belastung durch faule Müllrausträger klar.
Ein freundlicher Leser hat mir eine fette Z-Diode zukommen lassen, die ich jetzt zur Unterstützung der Suppressordiode in die Schaltung integriert habe:
Jetzt kann ich so viel
Bremsen wie ich will!
Und weil häufiges betätigen den Schrittmotortreiber
ganz schön erhitzt, bekam der jetzt einen schönen Kühlkörper:
Mir ist aufgefallen, dass der Mülleimer ziemlich oft betätigt wird. Aber wie oft eigentlich?
Das kann man ja messen. Also flugs ein 8-stelliges Display drangehäkelt und mit Heißkleber montiert.
Wenn man den Schlitten rausfahren läßt, wird nun die Anzahl der Öffungen angezeigt und hochgezählt:
Fährt der Schlitten wieder rein, wird die Anzeige abgeschaltet.
Ich messe die 24V Spannung über einen Spannungsteiler. Fällt sie unter 18V, so wird der Zählerstand in das EEPROM des Arduino geschrieben und beim Neustart wieder von da gelesen. So übersteht der Zählerstand auch Spannungsausfälle problemlos.
Nachtrag Silvester 2015: Nach 5 Wochen steht der Zähler jetzt auf 762. Also rund 150 Öffnungen pro Woche oder 22 pro Tag.
Der Schaltplan, die Software, der Tabellengenerator und die Dateien der 3D-Objekte:
154muellstepper.zip
Das alte Arduino-Projekt heisst skurve4.ino.
Das neue Arduino-Projekt
mit Display heisst skurve5_display.ino.
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.