Zuverlässigen automatischen Katzenfütterer bauen – DIY-Projekt für stressfreie Katzenbetreuung
Komponenten und Materialien
| Komponente | Menge |
|---|---|
| Mechanischer Steckdosen-Timer | 1 |
| Schrittmotor | 1 |
| Schrittmotortreiber L9110S | 1 |
| Linearwellenlager SHF8 | 1 |
| USB-Netzteil | 1 |
| SparkFun Arduino Pro Mini 328 - 5V/16MHz | 1 |
| USB-Stecker auf DIP-Adapter | 1 |
| USB-Verlängerungskabel | 1 |
| Winkelverbinder | 1 |
Über das Projekt
Wenn ich für einige Tage das Haus verlasse, ist die Fütterung meiner Katze immer eine große Herausforderung. Ich muss Freunde oder Verwandte bitten, sich um mein Tier zu kümmern. Ich habe im Internet nach Lösungen gesucht und viele Futterautomaten für Haustiere gefunden, aber keine hat mir gefallen. Erstens sind sie sehr teuer. Zweitens eignen sie sich nur für Trockenfutter (meine Katze frisst meist Nassfutter). Drittens sind sie zu groß für meine kleine Wohnung.
Also beschloss ich, einen kompakten, automatischen, für Nassfutter optimierten Fütterer zu bauen. Das Problem bei Nassfutter: Es verdirbt sehr schnell. Nach dem Öffnen einer Dose habe ich maximal einen Tag Zeit, sie zu verbrauchen. Um Platz zu sparen, die Futterqualität zu erhalten und das Projekt so günstig und einfach wie möglich zu gestalten, entwarf ich eine Maschine, die nur eine Mahlzeit ausgibt. Das verschafft mir zwei Tage Freiheit von der Fütterungspflicht.
Funktionsweise
Der Fütterer arbeitet denkbar einfach: Ich fülle den Futternapf (ein leerer Joghurtbecher) mit Futter, schließe den Deckel und stecke das Kabel mit dem Steckdosen-Timer in das 230-V-Netz. Ich stelle den Timer so ein, dass er nach einem Tag den Fütterer mit Strom versorgt. Beim Einschalten öffnet der Schrittmotor den Behälterdeckel. Nach einem Tag kann die Katze ihre Mahlzeit genießen. Wenn ich nach Hause komme, nehme ich den Behälter heraus, reinige ihn, fülle frisches Futter ein, setze ihn wieder ein, schließe den Deckel – und der Zyklus beginnt von vorn.
Alle wichtigen Schritte sind in diesem Video zu sehen:
Code
Arduino-Code für den automatischen Katzenfütterer
Der Code wurde mit der Arduino IDE auf den Arduino Pro Mini hochgeladen (FTDI-Adapter und Mini-B-USB-Kabel erforderlich). Hier ist ein Video zum Upload-Prozess: YouTube-Link
Der Code ist simpel: Im Setup dreht sich der Schrittmotor einmal, in der Hauptschleife wartet er auf einen Tastendruck und dreht dann erneut.
// Automatischer Katzenfütterer von J. Rundhall
// Originalcode für Schrittmotor von R. Jordan Kreindler, Oktober 2016
float RPM;
boolean isButtonpressed = false;
unsigned long timee;
// Pin-Belegung
int buttonPIN = 6;
int aPin = 4; // IN1: Spule A ein Ende
int bPin = 3; // IN2: Spule B ein Ende
int aPrimePin = 5; // IN3: Spule A' anderes Ende von Spule A
int bPrimePin = 2; // IN4: Spule B' anderes Ende von Spule B
int one = aPin;
int two = bPin;
int three = aPrimePin;
int four = bPrimePin;
int degrees = 0;
int delay1 = 5; // Verzögerung zwischen Schritten (ms)
int delay2 = 200; // Verzögerung nach voller Umdrehung (ms)
int count = 0;
int numberOfRotations = 1;
void setup() {
Serial.begin(9600);
pinMode(6, INPUT_PULLUP); // Taster
pinMode(aPin, OUTPUT);
pinMode(bPin, OUTPUT);
pinMode(aPrimePin, OUTPUT);
pinMode(bPrimePin, OUTPUT);
Serial.println("Clockwise");
// Alle Spulen aus
digitalWrite(aPin, LOW);
digitalWrite(bPin, LOW);
digitalWrite(aPrimePin, LOW);
digitalWrite(bPrimePin, LOW);
// Initial 20 Schritte
for(int ii=0; ii<20; ii++) doTurn();
}
void loop() {
int sensorVal = digitalRead(6);
// Pull-up: HIGH = offen, LOW = gedrückt
if (sensorVal == LOW) {
isButtonpressed = true;
} else {
if(isButtonpressed) {
isButtonpressed = false;
doTurn();
// Alle Spulen aus
digitalWrite(aPin, LOW);
digitalWrite(bPin, LOW);
digitalWrite(aPrimePin, LOW);
digitalWrite(bPrimePin, LOW);
}
}
}
void doTurn() {
// Halbschritt-Methode: 8 Schritte pro Zyklus
// 1. aPin HIGH
digitalWrite(aPin, HIGH); digitalWrite(bPin, LOW);
digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW);
delay(delay1);
// 2. aPin & bPin HIGH
digitalWrite(aPin, HIGH); digitalWrite(bPin, HIGH);
digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW);
delay(delay1);
// 3. bPin HIGH
digitalWrite(aPin, LOW); digitalWrite(bPin, HIGH);
digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW);
delay(delay1);
// 4. bPin & aPrimePin HIGH
digitalWrite(aPin, LOW); digitalWrite(bPin, HIGH);
digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, LOW);
delay(delay1);
// 5. aPrimePin HIGH
digitalWrite(aPin, LOW); digitalWrite(bPin, LOW);
digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, LOW);
delay(delay1);
// 6. aPrimePin & bPrimePin HIGH
digitalWrite(aPin, LOW); digitalWrite(bPin, LOW);
digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, HIGH);
delay(delay1);
// 7. bPrimePin HIGH
digitalWrite(aPin, LOW); digitalWrite(bPin, LOW);
digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, HIGH);
delay(delay1);
// 8. bPrimePin & aPin HIGH
digitalWrite(aPin, HIGH); digitalWrite(bPin, LOW);
digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, HIGH);
delay(delay1);
count += 8;
degrees = (360.0 * (count / 400.0));
if ((numberOfRotations % 2) == 1) {
Serial.println("Clockwise");
Serial.println(degrees);
} else {
Serial.println("Anti-Clockwise");
degrees = 360 - degrees;
Serial.print("-");
Serial.println(degrees);
}
if (count == 160) { // Volle Umdrehung
numberOfRotations++;
timee = millis();
RPM = timee / numberOfRotations;
RPM = (60000.00 / RPM);
if (numberOfRotations >= 10) {
Serial.print("RPM:");
Serial.println(round(RPM));
}
delay(delay2);
count = 0;
// Richtung nach jeder Umdrehung umkehren
if ((numberOfRotations) % 2 == 0) {
aPin = four; bPin = three; aPrimePin = two; bPrimePin = one;
} else {
aPin = one; bPin = two; aPrimePin = three; bPrimePin = four;
}
digitalWrite(aPin, LOW);
digitalWrite(bPin, LOW);
digitalWrite(aPrimePin, LOW);
digitalWrite(bPrimePin, LOW);
}
}
Schaltplan
Zuerst wurde die Elektronik verkabelt. Der Lötkolben kam nur zweimal zum Einsatz, um die Stromkabel mit dem USB-Adapter-PCB zu verbinden. Vor dem Anschluss an das 230-V-Netz empfehle ich, ein Labornetzteil mit Strombegrenzung und Strommessung zu verwenden. Falls etwas falsch verkabelt ist, verhindert dieser Test Schäden am Adapter oder anderen Komponenten. Der Gesamtstromverbrauch sollte unter 1 Ampere bei 5 Volt liegen.
Anschließend wurden die Winkelverbinder montiert, der Behälter modifiziert und an der Maschinenstruktur befestigt.
Herstellungsprozess
- DIY Thermocam: Vom Klassenraum-Idee zum globalen Produkt
- Umfassender Leitfaden zu automatischen Stangenzuführungen: Funktionen, Vorteile & Best Practices
- Automatische Pressen verstehen: Funktion, Vorteile und Anwendungen
- Pressenzuführungen: Funktionsweise, Typen & Industrielle Anwendung
- Automatische Exzenterpressen: Eigenschaften, Vorteile und Anwendungen
- Pneumatische Stangenlader: Kosteneffiziente CNC-Drehautomation
- Automatische Rohrbiegemaschinen: Funktionen, Vorteile und Anwendungen verstehen
- Automatische Rundtische verstehen: Präzision & Effizienz in der Metallbearbeitung
- Automatikgetriebe: Umfassender Leitfaden zu Aufbau, Typen & Funktion
- Automatische Zentralschmieranlagen: Funktionsweise, Typen & Nutzen