Benutzer-Werkzeuge

Webseiten-Werkzeuge


iot:vollautomatische_katzenwaage:programmversion_0.1

Dies ist eine alte Version des Dokuments!


Vollautomatische Katzenwaage - Programmversion 0.1

Angestrebte Funktionsweise: Die Waage soll das Gewicht einer Katze bestimmen, während sie auf der Katzentoilette sitzt. Da mich nicht das Gewicht der Katzentoilette interessiert, kann die Waage immer dann auf Null gestellt werden, wenn keine Katze auf der Toilette ist. Dazu sollen die Messwerte kontinuierlich in ein Array geschrieben werden, wobei die neuesten Messungen die ältesten ersetzen. Nach dem Hinzufügen eines neuen Messwertes werden das Minimum und das Maximum im Array bestimmt. Liegen diese unterhalb des Rauschens, wird die Waage genullt. (Alternativ könnte die Waage genullt werden, wenn die Standardabweichung unter einem geeigneten Schwellwert liegt.)

Sobald eine Katze die Toilette betritt, wird das automatische Nullen deaktiviert. Das Betreten der Toilette wird durch einen Gewichtsanstieg über einen Schwellwert detektiert. Nun wird kontinuierlich das Gewicht gemessen und die Messwerte in ein Array geschrieben, wobei die neuesten Messwerte die ältesten ersetzen. Nachdem die Katze die Toilette verlassen hat, wird die Waage genullt und innerhalb des Array nach den zehn aufeinanderfolgenden Messwerten mit der geringsten Standardabweichung vom Mittelwert gesucht. Da die geringsten Standardabweichungen vom Mittelwert erwartet werden werden können, wenn die Katze ruhig sitzt, ist der Mittelwert dieser zehn Messungen die bestmögliche Annäherung an das tatsächliche Gewicht der Katze. Das Ergebnis der Messung wird aber noch nicht an den Server gesendet.

Welche Katze auf der Toilette ist soll zunächst mithilfe von Schwellwerten bestimmt werden: Liegt das Gewicht zwischen 3 und 4 Kilogramm, muss es sich um Leonie handeln, liegt das Gewicht zwischen 4 und 5 Kilogramm, ist Leslie auf der Toilette. In einer zukünftigen Programmversion könnte eine automatische Anpassung an langfristige Gewichtsveränderungen programmiert werden.

Bevor das Ergebnis der Messung an den Server gesendet wird, muss jedoch noch detektiert werden, ob die Gewichtszunahme von einer Katze verursacht wurde oder ob nur frisches Katzenstreu nachgefüllt wurde. Dafür kommen zwei Ansätze infrage:

  1. Wenn die Gewichtszunahme von einer Katze verursacht wurde, verlässt sie die Toilette nach einer Weile. Wenn jedoch Katzenstreu aufgefüllt wurde, bleibt es in der Toilette. Es müsste also bestimmt werden, ob das Gewicht nach einer (geeigneten) Zeitspanne wieder abnimmt oder erhalten bleibt. Man müsste hierbei mit einem Timer arbeiten, was den Nachteil hat, dass ein Toilettengang unmittelbar nach dem Auffüllen von Streu nicht erkannt wird, wenn der Timer zu lang eingestellt ist, oder eine korrekte Messung verworfen wird, wenn der Timer zu kurz eingestellt ist.
  2. Alternativ könnte die Geschwindigkeit der Gewichtszunahme detektiert werden: Nimmt das Gewicht relativ plötzlich zu, ist eine Katze in die Toilette gesprungen, nimmt es hingegen kontinuierlich zu, wurde Katzenstreu hineingeschüttet.
  3. Eine dritte Alternative wäre die Verwendung einer Lichtschranke ö.ä., aber das möchte ich eigentlich vermeiden.

Schließlich wird das automatische Nullen der Waage wieder aktiviert, nachdem detektiert wurde, dass die Katze die Toilette verlassen hat.

Auslösegewicht: 500 Gramm (so viel wiegen Kätzchen ungefähr in der vierten Woche, und vorher benutzen sie ohnehin nicht die Katzentoilette.)

Ereigniserkennung:

  • Tarierung: Wenn keine Katze auf dem Klo ist und die Abweichung größer als +/- 5 Gramm ist, wird die Waage tariert
  • Katze auf dem Klo: Wenn das Gewicht 100 Gramm überschreitet, könnte eine Katze auf dem Klo sein. Eine Berechnung des Gewichts erfolgt, wenn das Gewicht nach mehr als 30 Sekunden und innerhalb von 120 Sekunden wieder unter 100 Gramm fällt.
    • Nach Überschreiten der Frist von 120 Sekunden wird die Annahme, dass eine Katze auf dem Klo ist verworfen. (Denn in diesem Fall wurde evtl. nur Streu nachgefüllt.)
    • Nach Unterschreiten der Frist von 30 Sekunden wird die Annahme, dass eine Katze auf dem Klo war, ebenfalls verworfen. (Weil ein Toilettengang in der Regel länger dauert, eine gute Messung aber voraussetzt, dass die Katze ihr Geschäft erledigt, weil sie nur dann ruhig sitzt.)
    • Die Messung wird verworfen, wenn die Standardabweichung vom errechneten Mittelwert einen Grenzwert überschreitet. (Denn dann hat die Katze nicht ruhig genug gesessen.)
    • Die Annahme kann außerdem verworfen werden, wenn innerhalb von 30 Sekunden die niedrigsten Messwerte unter null Gramm liegen. (Denn in diesem Fall wird wahrscheinlich das Klo gereinigt.)
  • Toilettenreinigung: Wenn das Gewicht um mehr als -100 Gramm abweicht und niedrigsten Messwerte innerhalb der ersten 30 Sekunden unter null liegen, wird offensichtlich das Klo gereinigt. (Es wurde Streu entnommen, der Deckel abgenommen etc.) In diesem Fall ist keine Katze auf dem Klo, das heißt es muss nicht darauf gewartet werden, dass die Katze das Klo verlässt.
  • Badezimmerreinigung: Wenn das Gewicht um mehr als 8000 Gramm abweicht, ist ebenfalls keine Katze auf dem Klo. Wahrscheinlich wurde die gesamte Toilette versetzt, z.B. um darunter sauber zu machen.

Tags: #Arduino #ESP32 #Katzen #Katzentoilette #Katzenwaage

iot/vollautomatische_katzenwaage/programmversion_0.1.1560495735.txt.gz · Zuletzt geändert: 18.05.2023 12:16 (Externe Bearbeitung)