Intelligenter 3D-gedruckter Futternapf mit Arduino Nano
Komponenten und Materialien
| Arduino Nano R3 | × | 1 |
| DS1307 Echtzeituhr-Modul (RTC) | × | 1 |
| LM317 Spannungsregler-Modul | × | 1 |
| Drehzahlservo (Continuous Rotation) | × | 1 |
| Cerealien-Spender (z. B. Honey Can Do) | × | 1 |
| 8-mm-Magnete | × | 6 |
| Hallsensor (unipolar) | × | 1 |
| Adafruit RGB-Backlight LCD 16×2 | × | 1 |
| I2C-LCD-Backpack | × | 1 |
| 5-mm-LED rot | × | 1 |
| 5-mm-LED grün | × | 1 |
| Taster (Momentan) | × | 5 |
| DC-Buchse (weiblich) | × | 1 |
| 9–12-V-Netzteil | × | 1 |
| Widerstand 10 kΩ (für Hallsensor) | × | 1 |
| Widerstand 330 Ω (für LEDs) | × | 2 |
Benötigte Werkzeuge
- 3D-Drucker (z. B. Ender 3 Pro, PLA+)
- Akkuschrauber
- Kreissäge
Projektbeschreibung
Hintergrund
Unregelmäßige Arbeitszeiten und stürmische Wetterlagen führten dazu, dass der Hund nicht pünktlich gefüttert werden konnte. Statt eines kommerziellen Geräts wurde eine eigene Lösung entwickelt – mit Fokus auf Stromausfall-Sicherheit und Verhinderung von Futterverstopfungen.
Hauptfunktionen
- Zwei Fütterungszeiten pro Tag
- Präzise Zeitmessung per DS1307 RTC
- Manuelle Zeiteinstellung der RTC
- Manuelle Fütterung per Taster
- LED-Anzeige für Hallsensor- und RTC-Fehler
- Übersichtlicher Hauptbildschirm (Zeit, Fütterungszeiten, Portionen, Status)
- Intuitive Menünavigation
- Stromausfall-Wiederaufnahme: Nach Stromwiederkehr wird versäumte Fütterung nachgeholt
- Fütterungszeiten und -status im EEPROM gespeichert
- Servo-„Wackeln“ bei Verstopfung (Jiggle-Funktion)
3D-gedruckte Teile
Alle Teile in PLA+ gedruckt (Ender 3 Pro, Cura). STL-Dateien auf GitHub. Enthält:
- Gehäuse mit Steckverbindungen (keine Schrauben nötig)
- Encoder-Rad mit Magnethaltern (6 Magnete = 60° pro Portion)
- Servohalter mit integriertem Hallsensor-Mount
- Trichter, Futterrutsche und Führungsschiene
Mechanischer Aufbau (Rahmen)
- Cerealien-Spender: Knopf am Rührstab absägen, Stützstreben entfernen, Welle schleifen.
- Basisrahmen aus Holz (12,7 × 152,4 mm) zu L-Profil verleimen, Winkelstützen ergänzen.
- Spenderständer auf ca. 114 mm kürzen, 50-mm-Loch in Bodenplatte bohren (zentrisch zum Auslauf).
- Standfuß mit M8-Schrauben an Rückwand befestigen.
- Servo-Holzständer positionieren (Höhe durch Probemontage ermitteln).
- Beine an Bodenplatte schrauben (Höhe nach Futternapf), Querstreben für Stabilität.
- Trichter in Bodenloch einsetzen, Servo an Halter montieren, Halter auf Ständer schrauben.
- Rutsche und Führungsschiene montieren.
Elektronik
- Arduino über ungeeigneten Vin-Pin (Pin 30) mit 7–20 V versorgen (Onboard-Regler).
- 10-kΩ-Pullup am Hallsensor (VCC–Signal) nicht vergessen.
- Alle Masse-Verbindungen prüfen (fehlende Masse führte zu Hallsensor-Ausfällen).
- Individuelle Steckverbinder für Hallsensor und Servo empfohlen.
- Stromschiene aus Lochrasterplatine für VCC/GND.
Code
Der Sketch nutzt folgende Bibliotheken: JC_Button, Wire, LiquidCrystal_I2C, LiquidMenu, RTClib, Servo, EEPROM.
Kernfunktionen:
- Zustandsmaschine (State Machine) für Menünavigation (MAIN, EDIT_FEED1, EDIT_FEED2, EDIT_TIME, EDIT_PORTION)
- Interrupt-gesteuerter Hallsensor (FALLING-Flanke) für Portionszählung
- Prüfung der Fütterungszeiten jede Sekunde (Sekunde == 0)
- Mitternachts-Reset der Fütterungsflags
- Stromausfall-Erkennung: Wenn Fütterungszeit verstrichen, aber Flag nicht gesetzt → nachholen
- Servo-Jiggle bei Hallsensor-Timeout (
rotationTime= 400 ms) - EEPROM-Speicherung: Feed1/2 Zeit, Portion, Completion-Flags
- Blink-Funktionen für LED-Fehleranzeige (RTC vs. Hallsensor unterschiedliche Frequenz)
// Wichtige Konstanten & Pins
#define ENTER_BUTTON_PIN 11
#define UP_BUTTON_PIN 10
#define DOWN_BUTTON_PIN 9
#define BACK_BUTTON_PIN 8
#define POWER_LED_PIN 5
#define MANUAL_BUTTON_PIN A1
#define hallPin 2
#define HALL_LED_PIN 7
#define SERVO_PIN 6
// State Machine
enum STATES { MAIN, MENU_EDIT_FEED1, MENU_EDIT_FEED2, MENU_EDIT_TIME,
MENU_EDIT_PORTION, EDIT_FEED1_HOUR, EDIT_FEED1_MIN,
EDIT_FEED2_HOUR, EDIT_FEED2_MIN, EDIT_HOUR, EDIT_MIN, EDIT_PORTION };
// Interrupt Service Routine für Hallsensor
volatile boolean hallSensorActivated = false;
volatile int isr_count = 1;
void hallActiveISR() {
hallSensorActivated = true;
digitalWrite(HALL_LED_PIN, HIGH);
isr_count++;
}
// Hauptloop ruft: changing_states(), check_buttons(), check_feedtime(),
// check_rtc(), manual_feed_check()
// ... (vollständiger Code im Original)
CAD-Dateien
Fusion 360 und STL-Dateien auf GitHub: github.com/russo08/Pet-feeder
Schaltplan
Herstellungsprozess
- 3D-gedruckte Teile mit Wachsmalstiften färben: Neuartige Nachbearbeitungstechnik
- Line-Tracking-Sensor mit Raspberry Pi – Einfacher KY-033 Tür/Line Detektor
- Robuste Temperatur- & Sensor-API auf Raspberry Pi mit GY-91 Modul bauen
- Thermofühler (Thermocouple) mit Arduino Portenta H7 über MAX6675 IC integrieren
- Qualitätskontrolle verbessern: 3D-gedruckte Werkzeuge erhöhen die Fertigungspräzision
- Funktionale 3D-gedruckte Fahrradtaschen-Adapter mit Kevlar CFF designen
- Go-Kart neu gedacht: 3D-gedruckte Carbonfaser-Teile für Höchstleistung
- Webinar: Stärkere 3D-Teile mit Eiger-Software bauen
- 3D-gedruckte Drohne ermöglicht schnelles, kosteneffizientes Datensammeln in der Antarktis
- Wie 3D-Druck dem MIT Motorsports Team Wettbewerbsvorteil in Formula SAE verschaffte