Zum Inhalt springen
Arduino berührungsloser Seifenspender

Berührungsloser Seifenspender mit Arduino

    Es sind verrückte Zeiten, in denen wir leben und ich hab eine Weile darüber nachgedacht, ob ich dieses Projekt veröffentliche. Allerdings hat man nicht so viel Möglichkeiten, aktiv etwas gegen die Ausbreitung von Viren wie dem Corona-Virus zu unternehmen. Zu Hause bleiben und Hände waschen. Tja, fürs Händewaschen hätte ich eine Idee und so zeige ich dir hier, wie du einen berührungslosen Seifenspender mit Arduino bauen kannst. 

    Bauteile

    Schaltung

    Arduino berührungsloser Seifenspender

    Die Schaltung besteht aus zwei Teilschaltungen. Der Infrarot-Entfernungssensor ist mit 5V+, GND und dem Analog Input 0 verbunden. Der Servomotor ist ebenfalls mit 5V+ und GND verbunden. Gesteuert wird er über den Digitalen Pin 7.

    Funktionsweise des Seifenspenders

    Der Sensor kann über dem Seifenspender nach unten schauend oder neben dem Seifenspender nach oben schauend installiert werden. Er reagiert in einem Bereich von 10 – 30 cm und aktiviert über das Arduino den Servomotor. Dieser zieht an einer Schnur, die über der Pumpe des Seifenspenders verläuft und auf der anderen Seite fixiert ist. Dadurch wird die Pumpe heruntergedrückt und Seife abgegeben. Danach fährt der Servo wieder in seine Ausgangsposition, die Pumpe fährt wieder nach oben. 


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    Um die Funktion zu gewährleisten, musst du drei Werte im Code anpassen. Baue dazu die Schaltung auf und mache einen Trockentest ohne Seifenspender. Lade den Code auf das Arduino-Board und starte den seriellen Monitor der Arduino-Software (Werkzeuge>Serieller Monitor). Stelle die Baud-Rate (unten im Fenster) auf 115200. Nun solltest du die Werte vom Sensor sehen. Halte die Hand über den Sensor und merke dir den Wert, ab dem der Sensor auslösen soll. Schreib den Wert in die Variable irThreshold.

    Nun probiere Werte für den Servo aus: Wo soll er starten und bis wohin soll er sich drehen. Das machst du über die Variablen servoPositionPumpen und servoPositionNichtPumpen. Wenn alles passt, baue den Seifenspender ein. Ein bisschen Bastelarbeit ist natürlich dabei.

    Mehr Infos zu den IR-Sensoren findest du hier: Infrarot Entfernungsmessung mit Sharp Abstandssensor, mehr Infos zur Funktion eines Servomotors gibt es hier: Servo

    Code

    #include <Servo.h>
    
    int servoPin = 7;
    int irPin = 0;
    
    Servo myServo;                        // erstellt Servo-Objekt
    
    int servoPositionPumpen = 30;         // anpassen je nach Servo
    int servoPositionNichtPumpen = 120;   // anpassen je nach Servo
    int irThreshold = 300;                // wert, ab dem der Sensor reagieren soll
    
    int lastState = -1;                   // -1 = Pumpe nicht gedrückt
    int state = -1;
    
    void setup() {
      Serial.begin(115200);               // starte seriellen Monitor
      myServo.attach(servoPin);           // initiiere den Servo
    
      
      myServo.write(servoPositionNichtPumpen);  // Servo auf Anfangsposition stellen
      delay(1000);                              // warte eine Sekunde 
    }
    
    
    void loop() {
      Serial.println(analogRead(irPin));                // gib Sensorwert an seriellen Monitor
                                                        // überprüfe den Threshold Wert für das Auslösen
    
      if (analogRead(irPin)>irThreshold) state = 1;     // Auslöser erkannt
      else state = -1;                                  // Auslöser nicht erkannt
      
      if ((state==1)&&(lastState!=1)){                  // verhindert dauerndes Auslösen
        myServo.write(servoPositionPumpen);             // pumpen
        delay(1000);                                    // warte eine Sekunde
        myServo.write(servoPositionNichtPumpen);        // Pumpe entspannen
        delay(1000);                                    // warte eine Sekunde
      }
      lastState=state;                                  
      delay(20);
    }

    Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

    • Die beliebtesten Arduino-Projekte von StartHardware
    • Inklusive Schaltplan, Beschreibung und Code
    • Arduino-Schnellstart-Kapitel
    • Kompakter Programmierkurs


    3 Gedanken zu „Berührungsloser Seifenspender mit Arduino“

    1. Hallo,
      die Verlinkung des Bauteils “Servomotor” existiert nicht mehr. Haben Sie eine andere Bezugsquelle bzw. welchen Servomotor benötige ich dafür? Der IR-Entfernungssensor ist unter dem Link derzeit nicht lieferbar, hätten Sie da vielleicht noch einen andern Link bzw. Bezugsquelle?

      1. Damit kann man sich den aktuellen Zustand des IR-Sensors für den nächsten Durchlauf merken. Die Variable state wird ja direkt wieder überschrieben, lastState ist dann aber der Wert des letzten Durchlaufs.

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

     

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.