Benutzer-Werkzeuge

Webseiten-Werkzeuge


geraetschaften:elektronik:winkekatze

Dies ist eine alte Version des Dokuments!


winkekatze

Inventarnummerg????
OrtElektrowerkstatt
EigentümerMarco

Ansprechpartner

  • Daniel Stingl

Entstehung

Hierbei handelt es sich um eine modifizierte Winkekatze. Die Idee hierzu hatte ich, als sich der Begriff China-shop bezüglich Marcos doch beträchtliche Auswahl an China Elektronik eingebürgert hat.

Ursprünglich hatte ich geplant einen Sensor an die Schublade wo Marco die teile lagert anzubringen. Nachdem ich aber dann bemerkt hatte, dass mit dieser Lösung die Katze nur einige Minuten/Jahr winken würde, habe ich die Katze mit einem PIR Bewegungssensor ausgestattet.

Seither winkt die Katze wenn Marco (oder jemand anderes) auf ,,seinen*„ Platz sitzt.

* Im Hackerspace gibt es natürlich keine feste Sitzordnung, es handelt sich lediglich um seinen Lieblingsplatz!

Technische Umsetzung: Die Steuerung des Winkens hat wurde ursprünglich mit AA Zellen betrieben.

Ich habe die Stromversorgung (um Wartungsfreien/armen) Betrieb zu gewährleisten mit einer 18615 Li-Ion zelle und China Charging modul ausgestattet.

Das Winken steuert ein Ardoino pro mini 3,3 V 8 MHZ. Bei Bewegungsmeldung des PIR's schaltet nach eine kurzen Verzögerung ein Mosfet den Elektromagnet (original Winkekatzen Elektronog) ein und die Katze winkt.

Wenn eine gewisse zeit keine Bewegung gemeldet wurde, stellt die Katze das Winken wieder ein,

Die Winkstärke kann am Poti (Boden) eingestellt werden, leider ist die Poti wahl nicht so gut meinerseits ausgefallen, so kann man nicht sehr fein zwischen stark und schwach Winken einstellen.

Eine Verbesserunf wäre, das Poti gegen ein geeigneteres zu ersetzten,

Wer das oder Softwareänderungen vornehmen möchte, kann den nachfolgenden Quellcode benutzten/anpassen:

Programmiert werden, kann die Katze wie folgt:

Mittels USB-Serial Wandler (TLL), den Anschluss (am Boden) verbinden.

Source Code

#include "LowPower.h"

<note>
// Winkekatze
// promini Nano 3,3 V
 
const int WinkePin = 3;
const int Sensor = 2;          // Der Taster wurde an Pin 2 angeschlossen
volatile int PIRStatus = 0;         // Variable die den Status des Taster ausliest, wird der sog. "Vektor" 0 zugewiesen
volatile int WinkePinStatus = 0;
int winkOnDelay = 5;
int winktimeout = 30;
int winken = 0;

int winkOnDelaycounter = 0;
int winktimeoutcounter = 0;

// Taster Anschluss an Pin 2 entspricht dem Vektor 0   (hier der Fall)
// Taster Anschluss an Pin 3 entspricht dem Vektor 1

void setup() {
  pinMode(Sensor, INPUT);       // Hier wird der Sensor als INPUT definiert
  pinMode(WinkePin, OUTPUT);
  Serial.begin(9600);
  Serial.println("Winken aus");
  digitalWrite(WinkePin, LOW);
}

void loop() {

  PIRStatus = digitalRead(Sensor);      // ... wird der PIRStatus neu definiert ("volatile"). Die neue Definition geschieht durch das Auslesen des Sensors an Pin 2. ...
  WinkePinStatus = digitalRead(WinkePin);

  if (PIRStatus == HIGH) {
    winktimeoutcounter = 0;
    if (winkOnDelaycounter >= winkOnDelay && winken == 0) {
      Serial.println("Winken an");
      winkOnDelay = 0;
      digitalWrite(WinkePin, HIGH);
      winken = 1;
    } else {
      if (winkOnDelaycounter < winkOnDelay) {
        winkOnDelaycounter++;
      }
    }
  } else {
    if (winktimeoutcounter < winktimeout) {
      winktimeoutcounter++;
      if (winkOnDelaycounter > 0) {
        winkOnDelaycounter--;
      }
    }
  }

  if (winktimeoutcounter >= winktimeout && winken == 1) {
    Serial.println("Winken aus");
    digitalWrite(WinkePin, LOW);
    winken = 0;
  }

  Serial.print("WinkePinStatus:");
  Serial.println(WinkePinStatus);
  Serial.print("winken:");
  Serial.println(winken);
  Serial.print("PIRStatus:");
  Serial.println(PIRStatus);
  Serial.print("winkOnDelaycounter:");
  Serial.println(winkOnDelaycounter);
  Serial.print("winktimeoutcounter:");
  Serial.println(winktimeoutcounter);

  delay(100);
  Serial.println("deepsleep");
  delay(100);
  LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
  delay(100);

}


geraetschaften/elektronik/winkekatze.1600533029.txt.gz · Zuletzt geändert: 2022-11-17 22:34 (Externe Bearbeitung)