wie Arduino Eingänge vor Störungen schütze n...

R

Ralf Kleemann

Guest
Hallo,

ich möchte die Eingänge von einem Arduino (ATMEGA2560 und 928P) ein
wenig gegen Störungen schützen.
An die Eingänge möchte ich Fenster Reedkontakte und Lichttaster
anschliessen.
Ein Teil der Lichttaster sind getrennt mit Telefonleitungen verkabelt
und ein Teil ist per Optokoppler entkoppelt.

Bei den Homematic wired Modulen wird die folgende Schaltung verwendet
https://bilderupload.org/bild/524871856-screenshot-20230109-14355

Ist dies so ausreichend oder ist es zu empfehlen anstatt den internen
Pullupwiderständen externe (z.B. 4,kOhm) zunehmen, wie hier:
https://www.mikrocontroller.net/topic/467167#5706057

Gruß Ralf
 
Am 09.01.23 um 15:19 schrieb Ralf Kleemann:
> ...

Für Fragen dieser Art würde ich einen Blick ins Arduinoforum
(https://forum.arduino.cc/c/international/deutsch/47) empfehlen. Meine
letzten Erfahrungen damit liegen zwar ein paar Wochen zurück, aber so
viel wird sich in so kurzer Zeit nicht geändert haben.

Gruß

Gregor


--
Sehrsehr! Vielviel!

Jaja.
 
On 1/10/23 9:34 PM, Gregor Szaktilla wrote:
Am 09.01.23 um 15:19 schrieb Ralf Kleemann:
...

Für Fragen dieser Art würde ich einen Blick ins Arduinoforum
(https://forum.arduino.cc/c/international/deutsch/47) empfehlen. Meine
letzten Erfahrungen damit liegen zwar ein paar Wochen zurück, aber so
viel wird sich in so kurzer Zeit nicht geändert haben.

Kannst Du das Link etwas präzisieren? Ich komme damit nur ins
Verzeichnis. Vielleicht ein Suchwort? Ralf hat dort jetzt eine Kopie
seines hiesigen Beitrags eingestellt, bislang ohne Reaktion.

Generell wollte ich noch anmerken, daß ein Kondensator am Eingang mit
Vorsicht zu genießen ist. Die AVR sind da recht tolerant, mit Hysterese
und Synchronisation, aber andere Controller und speziell einfache
Logikbausteine können bei langsamen Übergängen im undefinierten Bereich
zu Schwingungen (Klingeln) neigen.

DoDi
 
Am 11.01.23 um 12:55 schrieb Hans-Peter Diettrich:
On 1/10/23 9:34 PM, Gregor Szaktilla wrote:
Am 09.01.23 um 15:19 schrieb Ralf Kleemann:
...
Für Fragen dieser Art würde ich einen Blick ins Arduinoforum
(https://forum.arduino.cc/c/international/deutsch/47) empfehlen. Meine
letzten Erfahrungen damit liegen zwar ein paar Wochen zurück, aber so
viel wird sich in so kurzer Zeit nicht geändert haben.
Kannst Du das Link etwas präzisieren? Ich komme damit nur ins
Verzeichnis. Vielleicht ein Suchwort? Ralf hat dort jetzt eine Kopie
seines hiesigen Beitrags eingestellt, bislang ohne Reaktion.

Hm. Ich bekomme dort gleich eine Liste der aktuellen Threads. Ralfs
Beitrag hat inzwischen auch Antworten, allerdings keine hilfreichen.

Gruß

Gregor


--
Sehrsehr! Vielviel!

Jaja.
 
Am 10.01.23 um 18:36 schrieb Michael Schwingen:

Ich würde Variante 1 nehmen, das Risiko, daß ESD über R11 nach VCC gelangt,
schätze ich als relativ gering ein. Aus dem Bauch heraus würde ich mal mit
R11 = R2 = 47k anfangen, wenn es langsam sein darf.

Ich werde dann Variante 1 nehmen und mal die TVS-Dioden P6KE6.8A
bestellen. Unidiektional sollte doch reichen.
Einen P6KE6.8A werde ich direkt an die 5V Versorgung des Arduino
anschliessen
47k erscheint mir recht hoch.
Ich habe noch ein 4,7k Widerstandsarray und werde es mal mit 4,7K Pullup
versuchen.
Für R2 werde ich 1k nehmen wie hier:
https://electronics.stackexchange.com/questions/273614/tvs-diode-before-or-behind-resistor

Gruß Ralf
 
Am 10.01.23 um 18:36 schrieb Michael Schwingen:

Ich würde Variante 1 nehmen, das Risiko, daß ESD über R11 nach VCC gelangt,
schätze ich als relativ gering ein. Aus dem Bauch heraus würde ich mal mit
R11 = R2 = 47k anfangen, wenn es langsam sein darf.

Ich werde dann Variante 1 nehmen und mal die TVS-Dioden P6KE6.8A
bestellen. Unidiektional sollte doch reichen.
Einen P6KE6.8A werde ich direkt an die 5V Versorgung des Arduino
anschliessen
47k erscheint mir recht hoch.
Ich habe noch ein 4,7k Widerstandsarray und werde es mal mit 4,7K Pullup
versuchen.
Für R2 werde ich 1k nehmen wie hier:
https://electronics.stackexchange.com/questions/273614/tvs-diode-before-or-behind-resistor

Gruß Ralf
 
Ralf Kleemann <ralfnospam1@gmx.de> wrote:
Hallo,

ich möchte die Eingänge von einem Arduino (ATMEGA2560 und 928P) ein
wenig gegen Störungen schützen.
An die Eingänge möchte ich Fenster Reedkontakte und Lichttaster
anschliessen.
Ein Teil der Lichttaster sind getrennt mit Telefonleitungen verkabelt
und ein Teil ist per Optokoppler entkoppelt.
Ich würde alles per Optokoppler machen. Für deine Zwecke reicht ein
Universaltyp aus, z.B. PC123 (10 Stück um 35 ct bei Pollin).

--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de
 
Ralf Kleemann <ralfnospam1@gmx.de> wrote:
Hallo,

ich möchte die Eingänge von einem Arduino (ATMEGA2560 und 928P) ein
wenig gegen Störungen schützen.
An die Eingänge möchte ich Fenster Reedkontakte und Lichttaster
anschliessen.
Ein Teil der Lichttaster sind getrennt mit Telefonleitungen verkabelt
und ein Teil ist per Optokoppler entkoppelt.
Ich würde alles per Optokoppler machen. Für deine Zwecke reicht ein
Universaltyp aus, z.B. PC123 (10 Stück um 35 ct bei Pollin).

--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de
 
On 2023-01-12, Ralf Kleemann <ralfnospam1@gmx.de> wrote:
Ich werde dann Variante 1 nehmen und mal die TVS-Dioden P6KE6.8A
bestellen. Unidiektional sollte doch reichen.

Unidirektional ist besser, weil die bei negativen Spannungen ab 0.7V
begrenzen.

47k erscheint mir recht hoch.
Ich habe noch ein 4,7k Widerstandsarray und werde es mal mit 4,7K Pullup
versuchen.
Für R2 werde ich 1k nehmen wie hier:
https://electronics.stackexchange.com/questions/273614/tvs-diode-before-or-behind-resistor

Das wird in weiten Bereichen funktionieren.

cu
Michael
--
Some people have no respect of age unless it is bottled.
 
On 2023-01-12, Ralf Kleemann <ralfnospam1@gmx.de> wrote:
Ich werde dann Variante 1 nehmen und mal die TVS-Dioden P6KE6.8A
bestellen. Unidiektional sollte doch reichen.

Unidirektional ist besser, weil die bei negativen Spannungen ab 0.7V
begrenzen.

47k erscheint mir recht hoch.
Ich habe noch ein 4,7k Widerstandsarray und werde es mal mit 4,7K Pullup
versuchen.
Für R2 werde ich 1k nehmen wie hier:
https://electronics.stackexchange.com/questions/273614/tvs-diode-before-or-behind-resistor

Das wird in weiten Bereichen funktionieren.

cu
Michael
--
Some people have no respect of age unless it is bottled.
 
On 2023-01-09, Peter Heitzer <peter.heitzer@rz.uni-regensburg.de> wrote:
Ein Teil der Lichttaster sind getrennt mit Telefonleitungen verkabelt
und ein Teil ist per Optokoppler entkoppelt.
Ich würde alles per Optokoppler machen. Für deine Zwecke reicht ein
Universaltyp aus, z.B. PC123 (10 Stück um 35 ct bei Pollin).

Und dann? Batterie für die LED-Seite, oder ein DC/DC-Modul, oder wie?

Wenn Du die Versorgung des Optokopplers aus der AVR-Schaltung ziehst, kannst
Du ihn auch gleich weglassen und die Lösung mit dem R-C-Glied nehmen.

cu
Michael
--
Some people have no respect of age unless it is bottled.
 
On 2023-01-09, Peter Heitzer <peter.heitzer@rz.uni-regensburg.de> wrote:
Ein Teil der Lichttaster sind getrennt mit Telefonleitungen verkabelt
und ein Teil ist per Optokoppler entkoppelt.
Ich würde alles per Optokoppler machen. Für deine Zwecke reicht ein
Universaltyp aus, z.B. PC123 (10 Stück um 35 ct bei Pollin).

Und dann? Batterie für die LED-Seite, oder ein DC/DC-Modul, oder wie?

Wenn Du die Versorgung des Optokopplers aus der AVR-Schaltung ziehst, kannst
Du ihn auch gleich weglassen und die Lösung mit dem R-C-Glied nehmen.

cu
Michael
--
Some people have no respect of age unless it is bottled.
 
Am 09.01.2023 um 19:32 schrieb Ralf Kleemann:
Ein Optokoppler ist für einzelne Eingänge ok, wie z.B. der Lichttaster
der Türsprechstelle, den Aufwand möchte ich nicht für alle Eingänge
treiben.

Habt Ihr eine Empfehlung für die Widerstandswerte?
Ist der interne Pullup ok oder soll ich einen externen Pullup von 4,7k
nehmen.
Der Widerstand des R C Glieds ist wahrscheinlich abhängig vom
Pullupwiderstand? 100 oder 330 Ohm oder einen anderen Wert?

Gruß Ralf

Das ist alles nicht so kritisch wie es bei manchen Vorschlägen hier
rüber kommt. Wenn man natürlich nach maximalem Schutz fragt, dann kann
man ziemlich viel Aufwand treiben.

Es kommmt unter anderem an, wie lang das Kabel wird um abschätzen zu
können, wie aufwändig der Schutz werden muss.

Wenn es um Kabellängen von 1-2m geht, und wenn der Schaltkontakt
potentialfrei ist (Reed-Kontakt, Mikroschalter...), dann wird man das in
den meisten Fällen einfach direkt anschließen können.

Wenn wir über 20m oder mehr reden, dann sollte man da was machen.
Problematisch wird es, wenn der Schalter weit entfernt ist und wenn man
Fremdspannungen oder Verbindungen nach Masse nicht ausschließen kann.

Das, was du in deinem Posting vom 10.1.2023 18:36 gezeigt hast und das,
was du danach mit Michael Schwingen diskutiert hast passt schon ganz gut.

Ich würde R12 weglassen und R2 und R11 gleichgroß machen. Irgendwas
zwischen 1k und 100k passt da. Interner Pull-up des AVR deaktiviert.

Dann zieht R11 über R2 den Eingang bei offenem Taster auf High. Das geht
auch noch wenn beide 1MOhm haben. Dann könnte es aber empfindlicher auf
EM-Einstrahlungen oder Kriechströme auf dem Kabel oder dem Taster
reagieren, könnte also auslösen obwohl der Taster offen ist. Kommt drauf
an, wie wichtig es ist, Fehlauslösungen zu verhindern.

Wenn man R11 weglässt und R12 einbaut muss R2 deutlich kleiner sein als
R12. Dann ist ungünstig wenn man den Eingang vor hohen Fremdspannungen
schützen will.

Hohe Widerstandswerte hätten den Vorteil, dass die Eingange
unempfindlich gegen Überspannungen werden. Bei R11=R2=100k würde der
Input des AVR wahrscheinlich sogar 230V AC auf dem Eingang überleben.
Mit der Schutzdiode direkt am AVR-Pin (nicht da wo sie eingezeichnet
ist) ganz sicher. Da brennen dann eher R11 und R2 ab als der Eingang des
AVR.

Kleine Widerstände, z.B. R2=R11=330 Ohm würden Störungen durch
Hochfrequenzquellen besser unterdrücken, würden aber die Eingänge nicht
vor Zerstörung durch Fremdspannung schützen.

Die Schutzdiode würde ich normalerweise weglassen.

Die Stromversorgung des AVR sollte man dann aber nicht vergessen.
Fremdspannungen können sonst über R11 auf VCC des AVR durchschlagen. Das
muss die Stromversorgung verkraften. Ist meist aber kein Problem. Wenn
die Schaltung extrem stromsparend ausgelegt ist kann es aber ein Problem
sein. Wenn der Widerstand von R2 und R11 hoch genug ist, ist das auch
kein Problem.
 
Am 09.01.2023 um 19:32 schrieb Ralf Kleemann:
Ein Optokoppler ist für einzelne Eingänge ok, wie z.B. der Lichttaster
der Türsprechstelle, den Aufwand möchte ich nicht für alle Eingänge
treiben.

Habt Ihr eine Empfehlung für die Widerstandswerte?
Ist der interne Pullup ok oder soll ich einen externen Pullup von 4,7k
nehmen.
Der Widerstand des R C Glieds ist wahrscheinlich abhängig vom
Pullupwiderstand? 100 oder 330 Ohm oder einen anderen Wert?

Gruß Ralf

Das ist alles nicht so kritisch wie es bei manchen Vorschlägen hier
rüber kommt. Wenn man natürlich nach maximalem Schutz fragt, dann kann
man ziemlich viel Aufwand treiben.

Es kommmt unter anderem an, wie lang das Kabel wird um abschätzen zu
können, wie aufwändig der Schutz werden muss.

Wenn es um Kabellängen von 1-2m geht, und wenn der Schaltkontakt
potentialfrei ist (Reed-Kontakt, Mikroschalter...), dann wird man das in
den meisten Fällen einfach direkt anschließen können.

Wenn wir über 20m oder mehr reden, dann sollte man da was machen.
Problematisch wird es, wenn der Schalter weit entfernt ist und wenn man
Fremdspannungen oder Verbindungen nach Masse nicht ausschließen kann.

Das, was du in deinem Posting vom 10.1.2023 18:36 gezeigt hast und das,
was du danach mit Michael Schwingen diskutiert hast passt schon ganz gut.

Ich würde R12 weglassen und R2 und R11 gleichgroß machen. Irgendwas
zwischen 1k und 100k passt da. Interner Pull-up des AVR deaktiviert.

Dann zieht R11 über R2 den Eingang bei offenem Taster auf High. Das geht
auch noch wenn beide 1MOhm haben. Dann könnte es aber empfindlicher auf
EM-Einstrahlungen oder Kriechströme auf dem Kabel oder dem Taster
reagieren, könnte also auslösen obwohl der Taster offen ist. Kommt drauf
an, wie wichtig es ist, Fehlauslösungen zu verhindern.

Wenn man R11 weglässt und R12 einbaut muss R2 deutlich kleiner sein als
R12. Dann ist ungünstig wenn man den Eingang vor hohen Fremdspannungen
schützen will.

Hohe Widerstandswerte hätten den Vorteil, dass die Eingange
unempfindlich gegen Überspannungen werden. Bei R11=R2=100k würde der
Input des AVR wahrscheinlich sogar 230V AC auf dem Eingang überleben.
Mit der Schutzdiode direkt am AVR-Pin (nicht da wo sie eingezeichnet
ist) ganz sicher. Da brennen dann eher R11 und R2 ab als der Eingang des
AVR.

Kleine Widerstände, z.B. R2=R11=330 Ohm würden Störungen durch
Hochfrequenzquellen besser unterdrücken, würden aber die Eingänge nicht
vor Zerstörung durch Fremdspannung schützen.

Die Schutzdiode würde ich normalerweise weglassen.

Die Stromversorgung des AVR sollte man dann aber nicht vergessen.
Fremdspannungen können sonst über R11 auf VCC des AVR durchschlagen. Das
muss die Stromversorgung verkraften. Ist meist aber kein Problem. Wenn
die Schaltung extrem stromsparend ausgelegt ist kann es aber ein Problem
sein. Wenn der Widerstand von R2 und R11 hoch genug ist, ist das auch
kein Problem.
 
On 1/9/23 18:35, Michael Schwingen wrote:

Ich würde alles per Optokoppler machen. Für deine Zwecke reicht ein
Universaltyp aus, z.B. PC123 (10 Stück um 35 ct bei Pollin).

Und dann? Batterie für die LED-Seite, oder ein DC/DC-Modul, oder wie?

Versorgung aus der selben Quelle wie der Arduino, aber *vor* dem
Spannungsregler abgezweigt und mit Überspannungs-Schutzdiode.
Zweckmäßigerweise 12V/24V, um bei langen Strippen keine Probleme mit dem
Spannungsabfall zu bekommen.


Wenn Du die Versorgung des Optokopplers aus der AVR-Schaltung ziehst, kannst
Du ihn auch gleich weglassen und die Lösung mit dem R-C-Glied nehmen.

Nein. Die uC-Eingänge sind extrem empfindlich, zudem macht ihr geringer
Spannungshub es schwer, einen Kompromiss zwischen einwandfreier Funktion
des Eingangs (=möglichst wenig Ableitstrom) und zuverlässigem Abfangen
von Überspannungen (=kurzzeitige Ströme im kA-Bereich) zu finden.

Wenn es keine Optokoppler sein dürfen: Schutzdiode für eine höhere
Spannung (z.B. die 12V) und *dahinter* ein Widerstand, welcher bei
Ansprechspannung der externen Schutzdiode den Strom in die in interne
Schutzdiode des AVR auf einen verträglichen Wert begrenzt. Größenordnung
>10kOhm.
Kondensator optional, wenn man den Eingang langsamer machen will.
Grundsätzlich geht Tiefpass aber auch in Software...
 
On 1/9/23 18:35, Michael Schwingen wrote:

Ich würde alles per Optokoppler machen. Für deine Zwecke reicht ein
Universaltyp aus, z.B. PC123 (10 Stück um 35 ct bei Pollin).

Und dann? Batterie für die LED-Seite, oder ein DC/DC-Modul, oder wie?

Versorgung aus der selben Quelle wie der Arduino, aber *vor* dem
Spannungsregler abgezweigt und mit Überspannungs-Schutzdiode.
Zweckmäßigerweise 12V/24V, um bei langen Strippen keine Probleme mit dem
Spannungsabfall zu bekommen.


Wenn Du die Versorgung des Optokopplers aus der AVR-Schaltung ziehst, kannst
Du ihn auch gleich weglassen und die Lösung mit dem R-C-Glied nehmen.

Nein. Die uC-Eingänge sind extrem empfindlich, zudem macht ihr geringer
Spannungshub es schwer, einen Kompromiss zwischen einwandfreier Funktion
des Eingangs (=möglichst wenig Ableitstrom) und zuverlässigem Abfangen
von Überspannungen (=kurzzeitige Ströme im kA-Bereich) zu finden.

Wenn es keine Optokoppler sein dürfen: Schutzdiode für eine höhere
Spannung (z.B. die 12V) und *dahinter* ein Widerstand, welcher bei
Ansprechspannung der externen Schutzdiode den Strom in die in interne
Schutzdiode des AVR auf einen verträglichen Wert begrenzt. Größenordnung
>10kOhm.
Kondensator optional, wenn man den Eingang langsamer machen will.
Grundsätzlich geht Tiefpass aber auch in Software...
 
Ein Optokoppler ist für einzelne Eingänge ok, wie z.B. der Lichttaster
der Türsprechstelle, den Aufwand möchte ich nicht für alle Eingänge treiben.

Habt Ihr eine Empfehlung für die Widerstandswerte?
Ist der interne Pullup ok oder soll ich einen externen Pullup von 4,7k
nehmen.
Der Widerstand des R C Glieds ist wahrscheinlich abhängig vom
Pullupwiderstand? 100 oder 330 Ohm oder einen anderen Wert?

Gruß Ralf
 
Ein Optokoppler ist für einzelne Eingänge ok, wie z.B. der Lichttaster
der Türsprechstelle, den Aufwand möchte ich nicht für alle Eingänge treiben.

Habt Ihr eine Empfehlung für die Widerstandswerte?
Ist der interne Pullup ok oder soll ich einen externen Pullup von 4,7k
nehmen.
Der Widerstand des R C Glieds ist wahrscheinlich abhängig vom
Pullupwiderstand? 100 oder 330 Ohm oder einen anderen Wert?

Gruß Ralf
 
On 1/9/23 19:25, Hergen Lehmann wrote:
On 1/9/23 18:35, Michael Schwingen wrote:

Ich würde alles per Optokoppler machen. Für deine Zwecke reicht ein
Universaltyp aus, z.B. PC123 (10 Stück um 35 ct bei Pollin).

Und dann? Batterie für die LED-Seite, oder ein DC/DC-Modul, oder wie?

Versorgung aus der selben Quelle wie der Arduino, aber *vor* dem
Spannungsregler abgezweigt und mit Überspannungs-Schutzdiode.
Zweckmäßigerweise 12V/24V, um bei langen Strippen keine Probleme mit dem
Spannungsabfall zu bekommen.


Wenn Du die Versorgung des Optokopplers aus der AVR-Schaltung ziehst,
kannst
Du ihn auch gleich weglassen und die Lösung mit dem R-C-Glied nehmen.

Nein. Die uC-Eingänge sind extrem empfindlich, zudem macht ihr geringer
Spannungshub es schwer, einen Kompromiss zwischen einwandfreier Funktion
des Eingangs (=möglichst wenig Ableitstrom) und zuverlässigem Abfangen
von Überspannungen (=kurzzeitige Ströme im kA-Bereich) zu finden.

Was man auch machen könnte wäre eine P6KE6.8 zwischen +5V und GND nach
dem Regler und dann für jeden Eingang die alte Schaltung aus 2x 1N4148,
einmal mit Kathode am Signal und Anode nach GND und die andere mit
kathode an +5V und Anode am Signal plus einen Serienwiderstand in
Richtung µC.

Gerrit
 
On 1/9/23 19:25, Hergen Lehmann wrote:
On 1/9/23 18:35, Michael Schwingen wrote:

Ich würde alles per Optokoppler machen. Für deine Zwecke reicht ein
Universaltyp aus, z.B. PC123 (10 Stück um 35 ct bei Pollin).

Und dann? Batterie für die LED-Seite, oder ein DC/DC-Modul, oder wie?

Versorgung aus der selben Quelle wie der Arduino, aber *vor* dem
Spannungsregler abgezweigt und mit Überspannungs-Schutzdiode.
Zweckmäßigerweise 12V/24V, um bei langen Strippen keine Probleme mit dem
Spannungsabfall zu bekommen.


Wenn Du die Versorgung des Optokopplers aus der AVR-Schaltung ziehst,
kannst
Du ihn auch gleich weglassen und die Lösung mit dem R-C-Glied nehmen.

Nein. Die uC-Eingänge sind extrem empfindlich, zudem macht ihr geringer
Spannungshub es schwer, einen Kompromiss zwischen einwandfreier Funktion
des Eingangs (=möglichst wenig Ableitstrom) und zuverlässigem Abfangen
von Überspannungen (=kurzzeitige Ströme im kA-Bereich) zu finden.

Was man auch machen könnte wäre eine P6KE6.8 zwischen +5V und GND nach
dem Regler und dann für jeden Eingang die alte Schaltung aus 2x 1N4148,
einmal mit Kathode am Signal und Anode nach GND und die andere mit
kathode an +5V und Anode am Signal plus einen Serienwiderstand in
Richtung µC.

Gerrit
 

Welcome to EDABoard.com

Sponsor

Back
Top