Arduino mit Näherungsschalter - Unterschied USB und Netzteilbetrieb

Hallo zusammen,
ich habe mir an einem Arduino R4 einen E18-D50NK Sensor angeschlossen. Dieser setzt die Variable State auf 1 sobald etwas in der Nähe ist. Über einen Taster setze ich die Variable wieder auf 0. Den Zustand zeige ich mir über die serielle Schnittstelle an. Das funktioniert auch einwandfrei - solange die Schaltung mit dem USB Kabel am Rechner hängt. Sobald ich das USB Kabel abklemme und auf ein Netzteil wechsle, geht der Arduino zwar an, aber die LED auf dem Arduino bleibt dauerhaft an und lässt sich durch den Taster nicht auf 0 setzen.
Ich habe den Widerstand zwischen Außenkontakt Klinkenstecker und GND gemessen; dieser ist kleiner 1 Ohm. Zusätzlich habe ich den Arduino GND mit der Heizung verbunden um zusätzliche Erdung zu schaffen; leider ohne Erfolg.
Sobald ich das Netzgerät einstecke - egal ob mit oder ohne USB Anschluss zum Rechner - bleibt die LED auf dem R4 an und lässt sich nicht quittieren.

Mein Scetch sieht folgendermaßen aus:

const int sensorPin = 2;   // Pin des Näherungsschalters
const int buttonPin = 3;   // Pin des Tasters
int state = 0;             // Zustand, 0 oder 1
bool buttonPrevState = HIGH;  // vorheriger Zustand des Tasters (entprellt)

void setup() {
  pinMode(sensorPin, INPUT);
  pinMode(buttonPin, INPUT_PULLUP);  // Taster mit internem Pullup
  pinMode(13, OUTPUT);    
  Serial.begin(9600);

}

void loop() {
  int sensorState = digitalRead(sensorPin);
  int buttonState = digitalRead(buttonPin);

  // Wenn Sensor auslöst, setze state auf 1 (bleibt so)
  if (sensorState ==  HIGH) {
    state = 1;
  }

  // Erkennung eines kurzen Tastendrucks (Flanke von HIGH nach LOW)
  if (buttonPrevState == HIGH && buttonState == LOW) {
    state = 0;  // Zurücksetzen der Variable bei Tastendruck
  }
  buttonPrevState = buttonState; // Zustand merken

  Serial.println(state); // Ausgabe aktueller Zustand

if (state == 1)
{
  digitalWrite(13, HIGH);
}
  else
{
  digitalWrite(13, LOW);
}
 
  delay(1); // Verzögerung für bessere Lesbarkeit
}

An was kann es denn liegen?
Vielen Dank für Eure Tipps!

Liefert das Netzteil mehr als bzw. min. 6V? Wenn nicht, dann ist die Spannung zu gering.

https://docs.arduino.cc/tutorials/uno-r4-wifi/cheat-sheet/

Ausnahme, das Netzteil wird am USB-Port angeschlossen. Da darf es nur max. 5V sein..

Netzteil liefert 12 V.
Zwischen 5 V und GND sind 5.01 V auf dem R4 vorhanden.

Du kannst schhnell lesen :wink:

Bei Problemen, die vermutlich mit der Spannungsversorgung zusammenhängen, ist ein Schaltplan sinnvoll.

Warum willst Du nur die Flanke erkennen?

Was benutzt Du für einen Sensor?

const int sensorPin = 2;   // Pin des Näherungsschalters
const int buttonPin = 3;   // Pin des Tasters
bool state = 0;             // Zustand, 0 oder 1

const uint8_t ledPin = 13;
void setup()
{
  pinMode(sensorPin, INPUT);
  pinMode(buttonPin, INPUT_PULLUP);  // Taster mit internem Pullup
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

bool btnIsPress()
{
  static bool ret = false;
  static uint32_t pressTime = 0;
  const uint32_t debounceTime = 50;

  if (digitalRead(buttonPin) == LOW)
  {
    if (ret == false)
    {
      ret = true;
      pressTime = millis();
    }
  }
  else if (millis() - pressTime > debounceTime)
  {
    ret = false;
  }

  return ret;
}

void loop()
{
  bool sensorState = digitalRead(sensorPin);

  if (btnIsPress() == true)            // Erkennung auf gedrückte Taste
  { state = LOW; }
  else if (sensorState == HIGH)        // Wenn Sensor auslöst, setze state auf 1 (bleibt so)
  { state = HIGH; }

  Serial.println(state); // Ausgabe aktueller Zustand
  digitalWrite(ledPin, state);
}

Der soll die LED mit dem Tastendruck aus machen und aus lassen, solange die Taste gedrückt ist, egal ob der Sensor die dann wieder einschalten will.
Sobald die Taste losgelassen ist, wird der Sensor ausgewertet.

// Edit:
Der Sensor arbeitet bei 6V Mindestspannung und braucht 300mA.
Mich würde nicht wundern, wenn der im Netzteilmodus einfach dauerhaft HIGH liefert.

Das steht doch im Eingangsposting...

:man_facepalming: Danke.

Anbei der Schaltplan für den Aufbau.

@my_xy_projekt Ich habe gerade die Spannung zwischen 5V und GND in den verschiedenen Konfigurationen gemessen. Mit nur USB Kabel 4,72 V mit nur Netzteil 5,01 V und mit beidem 5,01 V.
Du schreibst, der Sensor benötigt 6 V. Die bekommt er ja nie über den Arduino, da der nur 5 V ausgibt, oder?

Das hat niemand geschrieben!

Doch, @my_xy_projekt hat es im Posting #5 nachträglich verkündet. Allerdings weiß ich nicht wie er auf die Werte kommt. Bei den Datenangaben zu dem Sensor, die ich gefunden habe, stand etwas von 5V / 100mA (max.).

Man sollte ja davon ausgehen, dass ein 12V Netzteil so um die 500mA stabil liefern kann. Ich würde ja fast vermuten, wenn es mit dem Netzteil Probleme gibt, dann ist es defekt. Oder der Wandler auf dem R4 Board hat einen Schlag.

Das ist die Schaltleistung, so wie ich die Angaben interpretiere.

Angaben bei Amazon sind oft wie eine halluzinierende KI. Blödsinn.


Spezifikation des einstellbaren digitalen Abstandssensors

Versorgungsspannung: 5V
Stromverbrauch: weniger als 100 mA
Einstellbarer Messbereich: von 5 bis 80 cm
Bereichseinstellknopf - Multiturn-Potentiometer
Ausgangssignal: digital (low wenn ein Objekt erkannt wird, sonst high)
LED-Diode, die die Erkennung des Objekts signalisiert
Reaktionszeit: weniger als 2 ms
Verpolungsschutz
Arbeitstemperatur: -25 °C bis +55 °C
Durchmesser: 18 mm
Sensorlänge: 45 mm

Wenn Du meinen Code aufspielst, sollte während der gedrückten Taste die LED aus gehen.
Lässt Du die Taste los und ie geht sofort wieder an, dann zieht der Sensor den Eingang hoch.

Hab ein Amperemeter in die 5V Leitung gehängt. Der Sensor hat 3,6 mA und sobald ein Gegenstand in die Nähe kommt, sprich, er löst aus, geht er auf 2,94 mA runter.
Wenn ich mit Netzteil arbeite, bleibt der Wert stets auf 3,15 mA.

@my_xy_projekt: ich probiere als nächstes deinen Code und melde mich.

Was hast Du gegen das originale Datenblatt?
Wenn dann sollte es wenigstens der selbe Sensor sein.... :wink:

Habe ich gar nichts gegen.

The output current DC / SCR / Relay Control output: 100mA/5V
powered.

Das ist aus dem von Dir verlinkten Datenblatt herauskopiert. Also nix mit 6V / 300 mA.

Ob das jetzt 50 oder 80 cm sind ist erst mal wurscht.

Oh, das ist mir durch die Lappen gegangen.

Dann wäre nochmal wichtig, was das genau für ein Netzteil ist.
Poste mal ein lesbares Foto des Typenschildes.

Anbei derweil das Datenschild vom


Netzteil