Eingangs-Pins (intern. PullUP) plötzlich defekt

Ich habe zur Zeit bei einem Projekt folgendes Problem:

Nach 1-2 Wochen problemlosen Einsatzes sind plötzlich Eingangs-Pins defekt. Ich habe mit sie mit pinMode(A1 „bzw. A2“, INPUT_PULLUP) deklariert und schalte sie extern über zwei Relais gegen GND.
Dass sie defekt sind, äußerst sich derart, daß die betroffenen PINS nun nicht mehr HIGH sind und sich verhalten als wäre das Relais immer geschlossen.

Das Setup ist wie folgt:

2 Lichtschranken (OMROM E3JK-R4M1), die mit 12VDC versorgt werden (in denen befindet sich das Relais, das bei Reflexion (oder ausgeschalteter Lichtschranke) den Kontakt schließt und bei Unterbrechung der Reflexion öffnet).

Der Arduino (um genau zu sein, kein Original. Aber keine Sorge, ich mache regelmässig meine Donations :wink: ) befindet sich in 3m Entfernung und ist über ein 4adriges Kabel (je 0.35mm2) sowohl mit der Versorgungsspannung (12V an Vin und GND, parallel zu den Lichtschranken) als auch den 2 Signalleitungen (Schließkontakte der Relais) verbunden.

Desweiteren kommuniziert der Arduino noch mit einem MCP23017 über I2C und schaltet dort 12V-LEDs (auch hier die gleiche Stromversorgung), aber der Teil funktioniert weiterhin problemlos.
Nun weiß ich ja, daß Überspannung einen Eingangspin zerstören kann, aber woher sollte die kommen, da das Relais ja nur gegen GND schaltet?

Ist evtl. die Kabellänge dafür verantwortlich und sorgt wegen meiner Missachtung von EMV für zerstörerische Einflüsse? Ihr merkt, da bin ich kein Experte, aber lerne immer wieder neu dazu, wenn vieles, was auf dem Steckbrett funktioniert in der fertigen Anwendung sich ganz anders verhält..

Sollte ich von internen PullUps auf externe wechseln?

Kann ich die Eingangs-Pins gegen unerwünschte Spannungen absichern? Und wenn ja, wie?
Sollten noch weitere Informationen gewünscht sein (Schaltplan, Sketch), kann ich die gerne noch nachreichen.

Hast du auch mal andere Pins probiert ?
Und du kannst es auch mit kleineren, externen Pullup-Widerständen versuchen.
Evtl. sind neuerdings Störungen vorhanden, die deine Schaltung beeinflussen.

Wie werden die Relais gesteuert? Ohne Klemmdioden oder Snubber können sie hohe Spannungsspitzen auf anderen Leitungen induzieren. Dieses Problem war am Scheitern meines allerersten Computers schuld, dessen Register verwürfelt wurden, sobald ein Relais geschaltet hat.

Hallo,
spielt doch keine Rolle, wie- was- angeschlossen ist.
Er hat den Verdacht, das einige Pin´s nicht in Ordnung sind.

Also, vom MöchteGerneArduino alle Verdrahtungen entfernen.
Dann Sketch für TasterAbfrage schreiben, Pin´s wie für Relais deklarieren.
Taster richtig verdrahten.
Taster mit o.g. Sketch abfragen.
Im seriellen Monitor prüfen, ob alle Pin´s richtig funktionieren.

Wenn ja, dann ist es die Schaltung, wenn nein- der MöchteGerneArduino.
Alles andere ist Rätselraten.
Gruß und Spaß
Andreas

Ich bin ja noch nicht lange beim Arduino, aber haben die Analogeingänge überhaupt Pullups?

Und, warum benutzt du Analogeingänge, wenn du digitale Infos auswerten möchtest?

Egal wie, ich bin eh kein Fan von den internen Pullups, bei mir werden immer nur externe verbaut.

Des weiteren würde ich noch eine Diode (1N4148 ist völlig ausreichend) in Richtung Relais einbauen. Also am Eingangspin einen 100k R nach 5V und die Diode (Anode an den Eingang, Kathode an das Relais). Jetzt hat man zwar kein 100% Masse mehr, aber der Digitaleingang erkennt dies trotzdem als LOW.

Nur mal so ein Vorschlag zum Nachdenken/Diskutieren.

Gruß

MiReu

Ich bin ja noch nicht lange beim Arduino, aber haben die Analogeingänge überhaupt Pullups?

Haben sie!
Bis auf A6 und A7, die haben beim ATMega328P keine Digitalstufe.

Und, warum benutzt du Analogeingänge, wenn du digitale Infos auswerten möchtest?

Was gibt es dagegen zu sagen, die A Pins digital zu nutzen?

MiReu:
Ich bin ja noch nicht lange beim Arduino, aber haben die Analogeingänge überhaupt Pullups?

Und, warum benutzt du Analogeingänge, wenn du digitale Infos auswerten möchtest?

Egal wie, ich bin eh kein Fan von den internen Pullups, bei mir werden immer nur externe verbaut.

Des weiteren würde ich noch eine Diode (1N4148 ist völlig ausreichend) in Richtung Relais einbauen. Also am Eingangspin einen 100k R nach 5V und die Diode (Anode an den Eingang, Kathode an das Relais). Jetzt hat man zwar kein 100% Masse mehr, aber der Digitaleingang erkennt dies trotzdem als LOW.

Nur mal so ein Vorschlag zum Nachdenken/Diskutieren.

Gruß MiReu

Die Analogeingänge A0 bis A5 des ATmega328 können wie die Digitalpins als digitale Ein/Ausgänge verwendet werden (D14 bis D19) Sie haben auch sinsn internen Pullupwiderstand.
Die Kontakte des Relaisausgangs der Lichschranke können wie ein Taster an Arduino angeschlossen werden. Es braucht keine zusätzlichen Dioden oder ähnliches.
Grüße Uwe

Die Dioden waren als Schutzeinrichtung gedacht, wegen der räumlichen Trennung zwischen Relais und Arduino. Auf dem Leitungsweg könnte ein Kurzschluss nach 12 V entstehen, je nach Aufbau der Verdrahtung und den Möglichkeiten von Tierfrass usw..

Wenn alles in einem Gehäuse ist, dann kann man auf sowas verzichten, aber sobald Leitungen abgehen sollte man die Ein-/Ausgänge schützen.

Gruß und Danke für die Analog Aufklärung

MiReu