Benutzer-Werkzeuge

Webseiten-Werkzeuge


iot:vollautomatische_katzenwaage

Dies ist eine alte Version des Dokuments!


Vollautomatische Katzenwaage

Um das Körpergewicht meiner beiden (nun langsam in die Tage kommenden) beiden Katzen Leonie und Leslie automatisch und vor allem regelmäßig zu erfassen, baue ich eine vollautomatische Katzenwaage. Diese wird unter der Katzentoilette platziert und misst während des Toilettengangs das Gewicht der Katze, die ihr Geschäft erledigt. Da Leonie und Leslie unterschiedliche Körpergewichte haben, soll die Waage automatisch erkennen, welche Katze gerade auf der Toilette ist und das gemessene Gewicht entsprechend zuordnen.

Das Ergebnis der Messung soll auf einem LCD-Display angezeigt werden, außerdem sollen die Messwerte über WLAN an meinen Server gesendet und in einer Datenbank gespeichert werden. Die Gewichtsverläufe können dann auf meinem IoT-Dashboard grafisch dargestellt werden. Darstellbar wäre außerdem, wie oft meine Katzen die Toilette aufsuchen, evtl. auch das Gewicht ihrer „Geschäfte“. Auf diese Weise lassen sich problematische Entwicklungen frühzeitig erkennen.

Komponenten:

Achtung!

Die vollautomatische Katzenwaage ist „work in progress“! Alle Angaben sind vorläufig und dokumentieren bestenfalls den aktuellen Stand der Planung, des Aufbaus und der Programmierung. Diese Dokumentation wird laufend aktualisiert.

Mechanischer Aufbau

Das Kernstück der vollautomatischen Katzenwaage ist eine Plattform Wägezelle: Die Entscheidung für eine Wägezelle der Firma Bosche fiel relativ leicht, da diese Wägezellen bei recht vielen der im Internet dokumentierten Waagenprojekten Verwendung finden. Aber welches der vielen Module ist geeignet? Grundsätzlich kommen Wägezellen aus den Baureihen H30A und H40A infrage. Bei der Auswahl ist zunächst die maximal zu erwartende Nennlast zu berücksichtigen. Die Katzentoilette wiegt mit Streu 15 bis 18 Kilogramm, mein Kater gute 5 Kilogramm und die Wägeplattform habe ich mit 2 Kilogramm kalkuliert. Bosche stellt eine Handreichung zur Verfügung, die bei der Auswahl der richtigen Wägezelle helfen soll. Demnach sollte die maximale Nennlast der Wägezelle so gewählt werden, dass auch Lastspitzen, die bspw. beim Aufsetzen der Last entstehen können, die Wägezelle nicht beschädigen können. Außerdem sollte auch ein Eckenlastzuschlag für eine mögliche Ungleichmäßigkeit der Lastverteilung berücksichtigt werden. In der Regel, heißt es in dem Dokument, sollte die Wägezelle so gewählt werden, dass deren maximale Nennlast um den Faktor zwei bis drei über der zu erwartenden Nennlast liegt. Für meine Katzentoilette sollte die maximale Nennlast also zwischen 50 und 75 Kilogramm liegen. Meine Wahl fiel letztendlich auf eine Wägezelle der Baureihe H40A, mit einer maximalen Nennlast von 100 Kilogramm. Diese ist im Unterschied zu den Wägezellen der Baureihe H30A für Plattformgrößen von 500 mal 500 Quadratmillimeter ausgelegt. Da die Grundfläche der Katzentoilette ungefähr 400 mal 500 Quadratmillimeter misst, fiel die Entscheidung nicht schwer.

Der mechanische Aufbau ist denkbar einfach: Die Wägezelle wird mittig zwischen zwei 8 Millimeter starke Aluminiumplatten mit einer Kantenlänge von 342 mal 445 Quadratmillimetern verschraubt. Insgesamt hat die Konstruktion also eine Höhe von 56 Millimetern: Flacher bekommt man es nicht hin. Damit der Sensor sich zwischen den Aluplatten frei bewegen kann, werden Taschen eingebracht. Um zu vermeiden, dass Katzenstreu zwischen den Sensor und die Bodenplatte gerät und die Messungen verfälscht, wird der Sensor von einem gedruckten Gehäuse eingefasst, das gleichzeitig als mechanischer Anschlag dient.

Elektrischer Aufbau

Das Kernstück der automatischen Katzenwaage ist die Plattform Wägezelle H40A von Bosche. Diese wird mit dem SparkFun Load Cell Amplifier verbunden, der wiederum mit einem Lolin D32 verbunden wird. Vor allem für des Debugging bekommt die Kontrolleinheit ein LCD-Display von SparkFun spendiert.

H40A und SparkFun Load Cell Amplifier

  • RED: rotes Kabel
  • BLK: schwarzes Kabel
  • WHT: weißes Kabel
  • GRN: grünes Kabel
  • YLW: violettes Kabel
  • VDD: 3,3 Volt vom ESP32
  • VCC: 5 Volt vom Spannungsregler
  • DAT
  • CLK
  • GND

Die Brücke auf der Rückseite des Boards muss geschlossen bleiben für 10 SPS (samples per second), um das Rauschen zu minimieren.

LCD-Display

Display: HD44780U (kompatibel zu LCD1602); I2C-Adresse des Displays: 0x72

  • SCL: GPIO 22
  • SDA: GPIO 21

Da ich keine Bibliothek gefunden habe, die sich für den Lolin D32 kompilieren lässt und am Ende auch funktioniert, muss das Display direkt angesteuert werden, wie es hier beschrieben ist: https://learn.sparkfun.com/tutorials/avr-based-serial-enabled-lcds-hookup-guide/all#firmware-overview

Beispiele: https://github.com/sparkfun/OpenLCD/tree/master/firmware/Examples/I2C

Spannungsregelung

Genauigkeit

Der Nennkennwert der Wägezelle wird mit 2 mV/V angegeben. Bei einer Betriebsspannung von 5 Volt ist die Spannungsänderung über den gesamten Messbereich also gerade einmal 10 mV. Der HX711 verstärkt dieses Signal um den Faktor 128, also auf 1,28 Volt.

Dazu: http://www.loosweb.de/scale/doc/de/index.html

Empirisch zeichnet sich eine Genauigkeit von +/- 2 Gramm ab, was für die Dokumentation des Gewichts meiner Katzen völlig ausreichend ist.

Datenbank

Struktur: ID, toilet, cat, weight, sd, difference, current_timestamp

Programmierung

Wie bei den meisten meiner Projekte dokumentiere ich in diesem Bereich den Fortschritt der Programmierung der Katzenwaage. Die Links führen zu signifikanten Programmversionen.

Das Programm ist prinzipiell relativ einfach. Die Herausforderung wird sein, alle Toilettengänge automatisch zu erkennen und von Gewichtsveränderungen zu unterscheiden, die keine Toilettengänge sind, wie beispielsweise Toilettenreinigungen und das Nachfüllen Streu. In einem ersten Schritt habe ich alle Toilettengänge meiner beiden Katzen eine Woche lang videografiert und analysiert. Das Ergebnis dieser ersten Analyse ist hier dokumentiert.

Programmversionen:

iot/vollautomatische_katzenwaage.1560201076.txt.gz · Zuletzt geändert: 18.05.2023 09:07 (Externe Bearbeitung)