Archiv der Kategorie: Allgemein

Es hat geklappt! Der Zusammenbau

Die Katzenfütterungsmaschine funktioniert! Man kann über die App Zeiten und Futtermenge einstellen oder sofort eine definierte Futtermenge ausgeben lassen!

Hier kommen die Bilder des finalen Zusammenbaus. Zunächst habe ich ein Loch in das Rohr gebohrt. Die Höhe des Loches habe ich so gewählt, dass die Fallhöhe des Futters groß genug ist, um das Rohr sicher zu verlassen und ich mit meinen Fingern noch gut genug rankomme, um auf der Höhe des Loches das Paddelrad einzusetzen. Ich nahm den größten Bohrer, den ich hatte. Wie bisher immer, passte die Motorwelle leider nicht hindurch. Sodass ich mich noch einmal im Feilen üben konnte.

Motorwelle liegt auf dem zu kleinen Loch des Abwasserohres

Die Rohrschellen und die Motorschelle kommen aus dem 3D Drucker und passten perfekt. 5,3 cm Rohraußendurchmesser beachten und es passt hervorragend. Die Motorschelle ist ein bisschen enger gedruckt, als notwendig. Dies habe ich gemacht, damit der Motor eine erhöhte Festigkeit aufweist. Sonst bestünde die Gefahr, dass sich der Motor dreht und nicht das Paddelrad im Rohr.

Die Schellen sind der zweite Druckversuch. Im Druckversuch vorher hatte ich nur den Radius eingegeben, sodass die Schellen nur um das halbe Rohr passten…. Jetzt passt es aber perfekt!

Im letzten Schritt habe ich die Komponenten ersteinmal lose auf das Holzbrett gelegt und vorsichtig den Motor mit dem Paddelrad im Rohr justiert. Es ist darauf zu achten, dass der Motor möglichst frei drehen kann und nicht im Rohr durch ein schräges Einsetzen blockiert wird. Das klingt leichter als es ist: Ich habe gut zwei Stunden lang justiert und am nächsten Tag bin ich noch einmal sicher gegangen, bevor ich alle Schellen mit Sparksschrauben festgezogen habe. Das von mir verwendete Holz ist sehr weich und verzeiht keine Schraubfehler.

Am Ende hat sich die ganze Arbeit gelohnt. Es funktioniert und macht glücklich!

Fertige und einsatzbereite DIY-Katzenfütterungsmaschine

Auf der Seite “Das Projekt” findet ihr dann bald noch ein Video zur Inbetriebname des Prototypen!

Einige Sachen passen nicht wie gedacht.

Leider bin ich in den letzten Tagen mit meiner Dokumentation etwas in Verzug geraten. Dies möchte ich jetzt nachholen:

Es gibt Schwierigkeiten mit dem Paddelrad. Die bestellten Stahldrähte passen nicht durch die im Paddelrad vorgesehenen Löcher. Ich musste also in den Baumarkt fahren, um Bohrer zu kaufen um diese Löcher zu vergrößern.

Die Paddelradkomponeten mit den zu kleinen Löchern
Mit etwas Nachhilfe passen die Stangen nun in die dafür vorgesehenen Löcher

Zu allem Überfluss passt auch die Motorwelle nicht in das für die vorgesehene Loch. Entweder muss ich es also neu und vergrößert ausdrucken oder die Feile muss ran. Ich entscheide mich für eine Stunde feilen….

Weiterhin habe ich festgestellt, dass die Stahldrähte derart stark sind, dass ich mit mit meinem ganzen Gewicht mehrmals unter drehen des Drahtes stellen muss, damit ich es irgendwann durchkriege… Ich vermute, dass wird die Kneifzange nicht besonders Lange mitmachen.

Das fertige Ergebnis. Ich hätte nicht gedacht, dass ich mit der Lösung dieser Probleme Tage verbringen würde. Immerhin musste ich die Bohrer erst noch besorgen! 😉
Damit das Ganze besser hält, habe ich alles mit Heißkleber verklebt.

Programmierung des Microcontrollers

Die Programierung des Microcontrollers ist neben der eingerosteten handwerklichen Tätigkeiten die größte Herausforderung. Ich möchte keinen schlecht aussehenden Webserver verwenden. Mit würde der Tipp gegeben Blynk für die Erstellung einer schicken App zu verwenden.

Tatsächlich lässt sich durch die gut beschriebene Widgetstruktur relativ schnell eine akzeptable App gestalten.

Oben lassen sich zwei Timer einstellen. Dabei handelt es sich um Tageszeiten, zu welchem eine darunter einstellbare Futtermenge abgegeben werden kann. Die Futtermenge lässt sich von 0 bis 100 einstellen. Wobei 100 in etwa einer Protion entspricht. Im unteren Teil kann nach dem gleichen Prinzip sofort eine definierte Futtermenge abgegeben werden. Diese wird mit dem großen Button rechts unten aktiviert und freigegeben.

Falls ihr nicht selber herumprobieren wollt, oder euch die App einmal selbst ansehen wollt, scannt einfach folgenden QR-Code.

Der QR-Code teilt das Blynk-Projekt. Verändern könnt ihr es dort allerdings nicht.

Die Programmierung des Microcontrollers selbst mache ich mit Hilfte von Arduino. Dazu muss zum einen Blynk mit eingebunden werden und in der Blynk App selbst müssen Pins zur Steuerung festgelegt werden

/*************************************************************
  Download latest Blynk library here:
    https://github.com/blynkkk/blynk-library/releases/latest

  Blynk is a platform with iOS and Android apps to control
  Arduino, Raspberry Pi and the likes over the Internet.
  You can easily build graphic interfaces for all your
  projects by simply dragging and dropping widgets.

    Downloads, docs, tutorials: http://www.blynk.cc
    Sketch generator:           http://examples.blynk.cc
    Blynk community:            http://community.blynk.cc
    Follow us:                  http://www.fb.com/blynkapp
                                

  Blynk library is licensed under MIT license
  This example code is in public domain.

 *************************************************************
  This example runs directly on ESP8266 chip.

  Note: This requires ESP8266 support package:
    https://github.com/esp8266/Arduino

  Please be sure to select the right ESP8266 module
  in the Tools -> Board menu!

  Change WiFi ssid, pass, and Blynk auth token to run :)
  Feel free to apply it to any other example. It's simple!
 *************************************************************/

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial


#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).

 char auth[] = "EuerAuthTokenvonBlynk";

// Your WiFi credentials.
// Set password to "" for open networks.

char ssid[] = "EuerWLAN";
char pass[] = "EuerWLANPW";

//Variablendeklaration
int futtermenge = 0;
int futterbutton = 0;

int futterMengeTimer1 = 0;
int futterMengeButton1 = 0;

int futterMengeTimer2 = 0;
int futterMengeButton2 = 0;

// hier Futtermengenmultiplikator eingeben. Für kleine Katzen eher 30, für große Katzen eher 40
int multiplikator = 30;

BLYNK_WRITE(V1)
{
  int slider = param.asInt(); // assigning incoming value from pin V1 to a variable
  futtermenge = slider;

  // You can also use:
  // String i = param.asStr();
  // double d = param.asDouble();
  Serial.print("V1 Slider value is: ");
  Serial.println(slider);
}
BLYNK_WRITE(V0)
{
  int button = param.asInt();
  futterbutton = button;

  Serial.print("V0 Button value is: ");
  Serial.println(futterbutton);
}

BLYNK_WRITE(V2)
{
  int timer1 = param.asInt();
  futterMengeButton1 = timer1;
}

BLYNK_WRITE(V3)
{
  int timer2 = param.asInt();
  futterMengeButton2 = timer2;
}

BLYNK_WRITE(V4)
{
  int timer1Menge = param.asInt();
  futterMengeTimer1 = timer1Menge;
}

BLYNK_WRITE(V5)
{
  int timer2Menge = param.asInt();
  futterMengeTimer2 = timer2Menge;
}


void setup()
{
  // Debug console
  Serial.begin(9600);

  Blynk.begin(auth, ssid, pass, "iot.informatik.uni-oldenburg.de", 8080); // Blynk.begin(auth, ssid, pass);
  pinMode(14, OUTPUT);

  
}

void futter() {
  if (futterbutton == 1) {
    digitalWrite(14, HIGH);
    delay(futtermenge * multiplikator);
    digitalWrite(14, LOW);
    delay(1000);
  }
  else if (futterMengeButton1 == 1) {
    digitalWrite(14, HIGH);
    delay(futterMengeTimer1 * multiplikator);
    digitalWrite(14, LOW);
    delay(1000);
  }
  else if (futterMengeButton2 == 1) {
    digitalWrite(14, HIGH);
    delay(futterMengeTimer2 * multiplikator);
    digitalWrite(14, LOW);
    delay(1000);
  }
}

void loop()
{
  Blynk.run();
  futter();
 
}

3D Druck und Laserfräse

Für meine Katzenfuttermaschine benötige ich einige Teile aus dem 3D Drucker. Dazu gehören die Schellen zum Befestigen des Rohres. Auch für den Motor benötige ich eine Befestigungsschelle. Eine schematische Darstellung der Schelle findest du hier.

Die Kunststoffräder für das Paddelrad. In die sichtbaren Aussparungen kommen die aus Moosgummi gefertigten Paddel. Eine schematische Darstellung der Paddel findest du hier.

Das Gestell für die Maschine. Das Gestellt besteht aus 6 mm Holzplatten. Es kann auch anders gestaltet werden. Im Prinzip reicht ein Brett, welches selbstständig stehen kann. Eine schematische Darstellung des Holzgestells findest du hier.

Die Paddel werden in das zusammengesetzte Kunststoffrad gesteckt.

Das Innenleben des Futterrohres kann auch von anderen DiY-Projekten übernommen werden. Die Zahnräder für das Paddelrad und Paddelräder in unterschiedlicher Größe findest du beispielsweise hier.

Platinendesign

Das Steckbrett in einer schicken Platine. Mit fachkundiger und tatkräftiger Hilfe hatte ich die Möglichkeit das klobige Steckbrettdesign aus dem vorherigen Beitrag in einer kleinen und schicken Platine unterzubringen. Der Lolin D32 aus dem Steckbrettdesign wurde hier durch einen kleineren und günstigeren ESP-12F ersetzt. Dieser ist völlig ausreichend, da für das Projekt lediglich ein WLan Modul und ein Steuerungspin für das Ralais zum Schalten der 12 Volt Leitung notwendig ist.

Im nächsten Schritt habe ich die einzelnen Komponenten auf die Platine gelötet.

Der Microcontroller und alle weiteren Komponenten sind erfolgreich verlötet

Links oben ist der Anschluss für die Programmierung des ESP8266. Beim Lolin D32 erfolgt dies über die angebrachte USB-Buchse. Je nachdem welchen Mircocontroller man verwendet, ist dies also nicht nötig. Die beiden Knöpfe rechts daneben sind der Reset-Knopf und der Uart-Knopf, welche man benötigt, um den Microcontroller für die Programmierung bereit zu machen. Dazu hält man den UART gedrückt und drückt dann die RESET.

Links die Anschlussklemmen führen zum Netzteil, welche die gesamte Platine mit Strom versorgt. Rechts davon befindet sich liegend ein LF 33 CV Spannungswandler welcher die 12 Volt Eingangsspannung auf 3,3 Volt für den Microcontoller herunterregelt. Für einen gleichmäßgigen Stromfluss ist davor noch ein 2,2 µF Kondensator.

Rechts die Anschlussklemmen gehen zum Gleichstrommotor. Die Diode ganz rechts verhindert, dass die im Motor entstehenden Induktionsströme zurückfließen und Schäden verursachen. Links von der Diode befindet sich ein MOSFET vom Typ IRLZ34N, welcher durch eine Ansteuerung des Microcontrollers die 12 Volt Netzspannung zum Motor durchschaltet, sodass dieser sich drehen kann. Die angebrachten Widerstände sorgen für eindeutige Pegel und verhindern ungewollte Schwingungen.

Sollte jemand tatsächlich diese Platine nachbauen wollen, schreibt mich einfach an. Unter “Über mich” findet ihr eine E-Mail-Adresse. Ich lasse euch dann gerne den Schaltplan zukommen.

Elektronische Steuerung

Die Idee ist es in dem Rohr ein Paddelrad (ähnlich dem eines Raddampfers) von einem Motor drehen zu lassen. Es muss sich um einen langsamdrehenden “high-torque” (zu deutsch: hohes Drehmoment) Motor handeln, damit dieser in der Lage ist, zuverlässig das Futter in die Freiheit zu entlassen.

Testlauf einer Motorsteuerung mit einem Lolin D32 mit 9 Volt Batterie

Im obigen Bild ist ein Versuchsaufbau zu sehen, mit welchem ich teste, wie eine Steuerung einer Stromversorung funktionieren kann, wenn ein Bauteil mehr als die vom Microcontroller zur Vefügung gestellenten 3,3 Volt benötigt.

Hier verwende ich noch eine 9 Volt Batterie. Der Gleichstrommotor ist jedoch auf 12 Volt ausgelegt. Mit 0,45 Nm sollte er dann auch kräftig genug für mein Vorhaben sein. Da ich jedoch keine 12 Volt Batterie habe und die Katzenfuttermanschine zuverlässig funktionieren soll, wird ein 12 Volt Trafo zukünftig zum Einsatz kommen.

Die Wahl des Rohres

Die Wahl des Rohres ist gar nicht so einfach. In den heimischen Baumärkten gibt es entweder Rohre mit einem Durchmesser zwischen 2 cm und 5 cm oder 7,5 cm bis 12 cm. Ich hätte liebend gerne etwas im Bereich von 6 cm gehabt, weil das in meiner Vorstellung am ehesten zu dem Futterbedarf einer Katze passen würde. Ich entschied mich dann nach langen hin und her letztendlich doch für ein 5 cm Rohr, anstatt der nächstgrößeren Variante. Die Entscheidung dazu, lässt sich hier jetzt schnell zusammenfassen, allerdings war ich in jedem Baumarkt in Oldenburg, bevor ich mich zu einer Entscheidung durchringen konnte. Letztendlich ist die Wahl wohl die Richtige. Schließlich fressen Katzen, wenn man wirklich mal darauf achtet, öfter am Tag verteilt kleinere Mengen Futter. Das Rohr ist ein Meter lang und hat einen Innendurchmesser von 5 cm.

Regenrinnenablaufrohr. Länge: 100 cm. Innendruchmesser 5 cm.

Ideensammlung

Teller mit Futterkammern

Zunächst hatte ich die Idee, eine Art drehbaren Teller für die Lösung meines Katzenfütterungsproblems anzuwenden. Dabei liegen zwei tellerartige Strukturen übereinander. Der obere hat eine Aussparung, so dass an dieser Stelle die Katzen in der Lage sind an das Futter zu gelangen. Allerdings müsste ich eine solche Vorrichtung fast jeden Tag neu befüllen. Außerdem ist es schwierig den unteren Teller sauber zu halten wenn dort dann auch die Motoren zur Bewegung des Tellers untergebracht sind.

Ein Spaziergang auf dem Hof meines Bruders brachte dann die zündende Idee: Einige verwilderte Katzen gelangten über ein Regenwasserrohr in das Dachgeschoss des Hauses…. Ich könnte ein solches Rohr mit Futter befüllen und mit einer geeigneten Vorrichtung beliebig viel oder wenig Futter entnehmen.

DiY Futterspender für Katzen

Das Problem: Wenn ich nach Hause komme, werde ich meistens von zwei Katzen begrüßt. Nach dieser Begrüßung gehe ich ein Stockwerk höher. Oben angekommen miauen dann die Katzen. Meistens wollen sie dann “frisches” Futter. Der Versuch neues Futter direkt vor dem Gang in ein anderes Stockwerk wird mit Mißachtung des Futters bestraft, sodass ich dann dennoch nochmal nach unten gehen muss um Futter nachzulegen.

Die Idee: Ich brauche ein Vorrichtung mit welcher ich automatisiert auf Knopfdruck frisches Futter in den Napf für die zwei Katzen füllen kann.