Kapazitiver Näherungsschalter

Guten Tag!
Ich habe folgenden Sketch gefunden und würde ihne gerne benutzen ein Relais zu schalten. Funktioniert auch soweit perfekt. Jetzt möchte ich das Relais anstatt "Aus durch Zeit (aktMillis)" mit einem Kapazitivem Näherungsschalter ausschalten. (Ich würde damit einen Flaschenabfüller bauen). Ich kriege es aber leider nicht hin. Kann mir da jemand aus der Patsche helfen?

const byte pinEingang = 3;
const byte pinAusgang = 13;
const uint32_t prellIntervall = 30, ausgangIntervall = 1000;
uint32_t aktMillis, prellMillis, ausgangMillis;
bool aktTaster, altTaster, ausgangStatus;

void setup() {
 pinMode(pinEingang, INPUT_PULLUP);
 pinMode(pinAusgang, OUTPUT);
}

void loop() {
 aktMillis = millis();
 // Tastenaktualisierung mit Entprellen
 altTaster = aktTaster;
 if (aktMillis - prellMillis >= prellIntervall)
 {
   prellMillis = aktMillis;
   aktTaster = digitalRead(pinEingang);
 }
 // Tasteraktion
 if (altTaster && !aktTaster)  // Flankenerkennung Taster gedrückt, LOW aktiv
 {
   if (ausgangStatus)
   {
     ausgangStatus = LOW;
     digitalWrite(pinAusgang, LOW);      // Ausgang AUS durch Tastendruck
   } else {
     ausgangMillis = aktMillis;
     ausgangStatus = HIGH;
     digitalWrite(pinAusgang, HIGH);      // Ausgang EIN durch Tastendruck
   }
 }
 // Ausgang schalten
 if (ausgangStatus && (aktMillis - ausgangMillis >= ausgangIntervall))
 {
   digitalWrite(pinAusgang, LOW);       // Ausgang AUS durch Zeit
   ausgangStatus = LOW;
 }
}

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Das kannst Du auch noch nachträglich ändern.

Beschreibe mal genauer, wie Du das Relais schalten willst und gib uns einen Link zum Näherungsschalter.

Gruß Tommy

Danke Tommy für die Antwort. Wenn ichs mit deiner Hilfe hinkriege, dann schicke ich dir die erste damit abgefüllte Flasche Gin (BlueJean: https://seppila.com) als Lohn sozusagen. Außer der Sketch wird zu kompliziert, dann werde ich wohl jemanden beauftragen müssen...

Den Näherungsschalter habe ich bei amazon gekauft:

Hier noch einmal der bisherige Code:

const byte pinEingang = 3;
const byte pinAusgang = 13;
const uint32_t prellIntervall = 30, ausgangIntervall = 1000;
uint32_t aktMillis, prellMillis, ausgangMillis;
bool aktTaster, altTaster, ausgangStatus;

void setup() {
  pinMode(pinEingang, INPUT_PULLUP);
  pinMode(pinAusgang, OUTPUT);
}

void loop() {
  aktMillis = millis();
  // Tastenaktualisierung mit Entprellen
  altTaster = aktTaster;
  if (aktMillis - prellMillis >= prellIntervall)
  {
    prellMillis = aktMillis;
    aktTaster = digitalRead(pinEingang);
  }
  // Tasteraktion
  if (altTaster && !aktTaster)  // Flankenerkennung Taster gedrückt, LOW aktiv
  {
    if (ausgangStatus)
    {
      ausgangStatus = LOW;
      digitalWrite(pinAusgang, LOW);      // Ausgang AUS durch Tastendruck
    } else {
      ausgangMillis = aktMillis;
      ausgangStatus = HIGH;
      digitalWrite(pinAusgang, HIGH);      // Ausgang EIN durch Tastendruck
    }
  }
  // Ausgang schalten
  if (ausgangStatus && (aktMillis - ausgangMillis >= ausgangIntervall))
  {
    digitalWrite(pinAusgang, LOW);       // Ausgang AUS durch Zeit
    ausgangStatus = LOW;
  }
}

Du solltest dringend nach einem Sensor mit NPN Ausgang suchen, sonst mußt Du noch einen Pegelwandler dazwischenschalten. Für einen NPN Ausgang brauchst Du nur einen Pullup-Widerstand, wie bei jedem anderen Schalter auch.

Dass der mit 6V betrieben werden muss, hast Du gelesen?

PNP-Ausgang ist ungünstig, NPN nach GND wäre besser gewesen.

Da der Ausgang im Ruhezustand nach 6V geschaltet ist, brauchst Du einen Spannungsteiler.

Schwarz --> 220 Ohm --> Arduino-Pin --> 1kOhm --> GND

Den Eingang nicht auf INPUT, nicht auf INPUT_PULLUP. Entprellen brauchst Du nicht, die Elektronik des Schalters prellt nicht.

Schalter auf LOW = Da ist was dran.

Gruß Tommy

Mit welcher Spannung betreibst Du denn den Näherungsschalter überhaupt? Dass man ihn nicht direkt anschließen kann, wurde dir ja schon gesagt.

Du hättest mir den Link im anderen Forum aber auch einstellen können. Bei der Lösung, die ich dir dort vorgeschlagen habe, musst Du nun aber die Logik umdrehen:

if (ausgangStatus && ((aktMillis - ausgangMillis) >= ausgangIntervall || !digitalread( kapPin ))

Du hast auch noch nicht gesagt, ob die Zeitbedingung auch noch eingehalten werden soll.

Habe diesen Post schon auf "Funduino.de" gepostet. Hier noch einmal der Vollständigkeit halber...
Ok. (der Sketch kommt vom stummiforum). Die Zeit ist zufällig dabei und völlig überflüssig. Und - natürlich muß der Taster die Oberhand behalten. Noch etwas: Entschuldigt bitte mein ungeschicktes Verhalten im Forum. Wir sind ein kleines Startup und stellen hochwertige Schnäpse und Liköre her. Keiner von uns hat weder die Zeit noch die technische Voraussetzung um uns mit komplexen Arduino-Techniken oder Forum-Gepflogenheiten herum zu schlagen. Ehrlich gesagt dachte ich, das Ganze sind einfach im Prinzip zwei Schalter, die man geschickt kombiniern muß um das Problem zu lösen. Dass das Ganze (anscheinend) zu einem technischen Großproblem führt, hätten wir nicht für möglich gehalten. Ich schildere noch einmal mein (unser) Anliegen. Um uns die Arbeit des (händischen) Abfüllens etwas zu erleichtern (Abfüllanlage liegt -finanziell- noch in weiter Ferne) schwebte uns folgende Lösung vor: Das Destillat fließt, der Schwerkraft folgend, durch einen Schlauch in eine Flasche. Bis jetzt war ein einfacher händisch betriebener Quetschhahn unsere ganze technische Vorrichtung. Folgendes wäre jetzt schön: Ein Taster öffnet über ein Relais ein Magnetventil - der Schnaps fließt in die Flasche - und wenn diese voll ist, schließt sich das Ventil von alleine wieder. Sollte dabei irgendetwas schiefgehen gibt es dann immer noch den Taster, mit dem man abschalten könnte. Ich bin Pragmatiker und dachte das Ganze ließe sich mittels Arduino und ein paar billigen Elektroteilen (Ventil - Näherungsschalter - Relais) sehr einfach in den Griff kriegen.

Nocheinmal: Die erste abgefüllte Gin-Flasche, oder besser noch eine schöne Auswahl unserer Schnäpse und Liköre geht an denjenigen, der uns Detailliste, Schaltplan und Arduino Sketch liefern kann. Wenn das aus irgend einem Grund nicht geht, oder zuwenig (Lohn) ist, dann soll jemand das sagen oder aber eine Lohnforderung stellen.

Gruß Jimmy

Arduino ist 5V Technologie, was du benutzt sind 24V Technologien. Damit musst du dauernd zwischen diesen zwei Spannungsebenen rumbasteln.

Dein Sensor ist mit PNP auch nicht wirklich passend, wenn man keinen Plan davon hat. Wobei jemand mit Erfahrung weis wie man ihn trotzdem betreibt, aber es erfordert etwas zusätzliche Verdrahtung. Die Frage ist, welches finanziellen Budget du für die Abfüllung zur Verfügung hast.

Hast Du schon mal recherchiert, wie andere Firmen das Portionieren automatisieren?

Bei einer Massenabfüllung würde ich vermuten, daß die Zufuhr mit konstantem Druck erfolgt, so daß das Ventil eine feste Zeit geöffnet bleiben kann, ohne irgendwelche Kontrolle des Füllstands. Ob dieser Aufwand bei "Kleinserien" bezahlbar ist, wage ich zu bezweifeln. Auf jeden Fall ist die Mechanik der teurste Teil des Projekts, die Steuerung können die meisten Hobby-Programmierer hinkriegen.

Wenn ihr wirklich so eine Abfüllmaschine haben möchtet, dann wendet euch am besten an einen kompetenten Ausrüster.

@TO: Wenn Du unsere Fragen und Hinweise ignorierst, wird das wohl nichts werden.

Gruß Tommy

Als Ventil würde ich auf jeden Fall eines das einen Silikonschlauch zusammenquetscht nehmen; das ist am einfachsten Lebensmittelecht.
Für die automatische Erkennung ob die Flasche voll ist würde ich eine Waage nehmen. Entweder eine selbst bauen (Wäägezelle und Verstärker) oder eine mit serieller Schnittstelle kaufen.

Vieleicht ist ein User im gegenzug von Produktverkostungen bereit Euch beim Technischen zu helfen.

Grüße Uwe

Wiegen ist im Prinzip richtig, doch wie lange muß man warten, bis sich der Meßwert stabilisiert hat? Während des Einfüllens geht garnichts, man müßte also eine Pause machen, messen und dann ggf. nachfüllen. Wenn man so viel Zeit hat...

Bei einer Massenabfüllung würde ich vermuten, daß die Zufuhr mit konstantem Druck erfolgt, ..

Das wäre nicht ausreichend.
So sind die Anforderungen an die "Eichung" nicht zu erfüllen.

Waagen sind gut, für Schüttgut.

Bei Flüssigkeiten werden gerne Kolbenpumpen verwendet.
Diese sind über den Hub eichfähig.

Auch Peristaltik Pumpen könnte man verwenden.
Gerade auch wenn gemischt werden muss.

Wenn der Zielbehälter geeicht ist (Eichmarkierung/Eichstrich), könnte man evtl den Brechungsindex der Flüssigkeit ausnutzen.

Ich nehme mal an der Distillationsapparat ist relativ klein und da kommt mehr getröpfle heraus als ein kontinuierlicher Schnapsstrahl. Das Füllen einer Flasche dauert so etwas zwischen 15 und 30 Minuten.

Aber da muß uns mal der TO aufklähren.

Grüße Uwe

Interessant wie die Theoretiker das Problem lösen

Der Praktiker würde messen, was das MINIMUM ist, welche Überfüllung stattfindet in der durch die Messeinrichtung gewählten Toleranz und das durchkalkulieren. Am Flaschenhals kann wohl kaum mehr als 2% Überfüllung auftreten. Bei einem Literpreis von sagen wir 15 Euro für den Hersteller, würde man 30ct pro Liter verlieren. Eine gute Abfüllanlage mit Eichung kostet 1000Euro aufwärts. Ohne Eichung billiger, aber wohl nicht wirklich genauer. Eichen kostet extra, weils regelmässig gemacht werden muss.

Alles in allem muss man also 3333 Liter verkaufen, was einem Umsatz von fast 50.000 Euro entspricht. Mit diesem Umsatz, sollte man ihn realisieren können, kauft man sich eine Abfüllanlage. Zwar hat man bis dann 66l verschenkt, aber ohne Startkapital für die Abfüllanlage hätte man garkeinen Schnaps verkauft sonst.

PS: wiegen geht problemlos. Wers nicht glaubt, nimmt eine Haushaltswaage und füllt mit einem Schlauch mal selbst Flaschen ab. Sie schwankt, aber man kann einen Mittelwert rausfinden und mit dem arbeiten. Der Nachlauf ist ebenfalls relativ konstant. So schaltet man entsprechend vorher ab und bekommt ziemlich genaue Abfüllungen. Alles eine Frage von try und error. Lässt sich sehr einfach mit Wasser austesten und dann auf den Schnaps umlegen. Und ich glaube nicht das man Schnaps direkt vom Destillierapperat in Flaschen füllt. Es wird von dort in einen Behälter abgelassen, dann aus diesem in die Flaschen. Teilweise reift der Schnaps auch noch nach in Fässern bevor er abgefüllt wird.