Der Müll-Stepper

 Juli 2015


-----

Ausgangssituation
Meine Lösung
Elektronik
Langsamer ist besser
Display
Download


-----
 

   

Ausgangssituation

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.  

 
-----
 

   

Meine Lösung

Erstmal wurden die Scharniere abmontiert und die Tür direkt an den Halter der Abfallbehälter gespaxt.  

[Bild(63.9k)]

Dann wurden die billigen auf dem Boden montierten Rollauszüge durch leichtgängigere hochwertige Vollauszüge ersetzt, die an der Seitenwand montiert wurden.  

[Bild(37.9k)]

Darauf kam eine neue Bodenplatte mit diversen Klötzchen. Man kann nun den Schlitten von den Auszügen nehmen, ohne irgendwas abzuschrauben.  

[Bild(122.0k)]

 

  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.  

[Bild(93.1k)]

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.  

[Bild(47.3k)]

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.  

[Bild(72.7k)]

Durch die Bodenplatte des Schlittens geht eine lange Schraube, die in den Mitnehmer einhakt.  

[Bild(50.5k)]

Die Zahnriemenscheiben und der Mitnehmer kommen aus dem 3D-Drucker und sind aus ABS.  

[Bild(28.7k)] [Bild(28.3k)] [Bild(27.7k)] [Bild(20.7k)]

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.
-----

[Bild WAF-Gruen]

-----
 

   

Elektronik

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.  

[Bild(150.7k)]

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:  

[Bild(18.5k)]

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:  

[Bild(54.8k)]

(Größere Version im Download)  

   

 
-----
 

Langsamer ist besser

 November 2015

 

  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:  

[Bild(30.5k)]

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:  

[Bild(35.9k)]

 

   

Display

 

  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.  

[Bild(149.1k)]

Wenn man den Schlitten rausfahren läßt, wird nun die Anzahl der Öffungen angezeigt und hochgezählt:  

[Bild(50.3k)] [Bild(60.5k)]

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.  

   

Download


-----
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.

Valid HTML 4.01! CSS ist valide!