Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

wie Arduino Eingänge vor Störungen schützen

164 views
Skip to first unread message

Ralf Kleemann

unread,
Jan 9, 2023, 9:19:41 AM1/9/23
to
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

Peter Heitzer

unread,
Jan 9, 2023, 11:18:38 AM1/9/23
to
Ralf Kleemann <ralfn...@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....@rz.uni-regensburg.de

Michael Schwingen

unread,
Jan 9, 2023, 12:35:20 PM1/9/23
to
On 2023-01-09, Peter Heitzer <peter....@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.

Hergen Lehmann

unread,
Jan 9, 2023, 1:30:06 PM1/9/23
to
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...

Ralf Kleemann

unread,
Jan 9, 2023, 1:32:49 PM1/9/23
to
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

Gerrit Heitsch

unread,
Jan 9, 2023, 1:35:21 PM1/9/23
to
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


Michael Schwingen

unread,
Jan 9, 2023, 1:52:56 PM1/9/23
to
On 2023-01-09, Hergen Lehmann <hlehmann.ex...@snafu.de> wrote:
>> 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.

Ich sehe jetzt nicht, welche Vorteile der Optokoppler dann noch bietet.
Serienwiderstand, Schutzdiode (TVS oder Zener), Kondensator und fertig. Oder
ein einfacher NPN-Transistor samt Vorwiderstand und in Software invertieren.

Optokoppler klingt erstmal toll, bringt aber wenig, wenn Du die Masse doch
wieder durchverbindest.

> 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.

Hohe Empfindlichkeit ermöglicht hohe Serienwiderstände, zusammen mit einer
TVS/Z-Diode und etwas Kapazität gibt das eine gute Schutzwirkung.

> Kondensator optional, wenn man den Eingang langsamer machen will.
> Grundsätzlich geht Tiefpass aber auch in Software...

Der Kondensator soll kurze, schnelle Impulse schlucken, bevor die Diode
wirken kann. Ja, Entprellen kann man in Software, dafür braucht man den
nicht.

Hergen Lehmann

unread,
Jan 9, 2023, 2:30:05 PM1/9/23
to
On 1/9/23 19:52, Michael Schwingen wrote:

> On 2023-01-09, Hergen Lehmann <hlehmann.ex...@snafu.de> wrote:
>>> 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.
>
> Ich sehe jetzt nicht, welche Vorteile der Optokoppler dann noch bietet.

Alles in einem IC statt diskreter Aufbau mit Diode, Widerstand und
Kondensator.


stefan

unread,
Jan 9, 2023, 2:43:23 PM1/9/23
to
Der Vorschlag mit dem NPN Transistor ist aber um einiges einfacher.


Michael Schwingen

unread,
Jan 9, 2023, 2:52:14 PM1/9/23
to
Diskrete Bauteile 'drumherum braucht der auch - und ob Du mit der
Minimalbeschaltung bei ESD oder sonstigen Störungen auf der Leitung
glücklich wirst, möchte ich bezweifeln. Auch der Optokoppler möchte z.B.
vor hohen negativen Spannungen geschützt werden (CNY17: Vr,max = 6V).

cu
Michael

stefan

unread,
Jan 10, 2023, 1:21:09 AM1/10/23
to
Und er möchte einige mA am Eingang sehen.

Der NPN Transistor kommt da mit wenigen uA aus, was den Schutz des
Eingangs vor Überspannung, wenn das denn gewünscht ist, deutlich
einfacher macht.

Peter Heitzer

unread,
Jan 10, 2023, 3:10:30 AM1/10/23
to
Bei längeren Leitungen ist ein Optokoppler auch zuverlässiger ggü. Einstreuungen.
Nicht ohne Grund arbeitet MIDI mit einer Stromschleife.

Ralf Kleemann

unread,
Jan 10, 2023, 7:28:12 AM1/10/23
to
Am 09.01.23 um 19:25 schrieb Hergen Lehmann:

> 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...

Ich habe es mal aufgezeichnet:
https://i.postimg.cc/7ZtMnjzL/AVR-Portschutz.jpg

Ich möchte den ATMEGA direkt mit 5V versorgen.
Ich habe dafür bereits ein 5V Meanwell Hutschienen Netzteil.
Als TVS für den Schutz der 5V Versorgungsspannung und der Eingänge
verwende ich dann die P6KE6.8

Mir ist noch nicht klar wo der Pullup Widerstand hinkommt?
Direkt am AVR-Eingang (R12) oder weiter vorne (R11)
Welchen Wert nehme ich am Besten für den Pullup Widerstand und für R2?

Gruß Ralf

Markus Schaaf

unread,
Jan 10, 2023, 10:33:53 AM1/10/23
to
Am 09.01.23 um 15:19 schrieb Ralf Kleemann:

> 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.

Ich würde einen RC-Tiefpass aus 4k7 und 1µ davorschalten und den
internen Pull-Up benutzen (ca. 50k). Schalter gegen Masse.
Entprellen musst Du softwareseitig.

MfG

Michael Schwingen

unread,
Jan 10, 2023, 12:30:21 PM1/10/23
to
On 2023-01-10, Peter Heitzer <peter....@rz.uni-regensburg.de> wrote:
>>Alles in einem IC statt diskreter Aufbau mit Diode, Widerstand und
>>Kondensator.
> Bei längeren Leitungen ist ein Optokoppler auch zuverlässiger ggü. Einstreuungen.
> Nicht ohne Grund arbeitet MIDI mit einer Stromschleife.

MIDI hat eine *isolierte* Stromschleife, die Speisung erfolgt von der
Sendeseite.

Der Vorschlag hier war ja gerade, die Sendeseite des Optokopplers mit aus
dem empfangenden Gerät zu versorgen, da ist die Isolation hin, und der
Optokoppler kann seine Vorteile nicht mehr ausspielen.

Michael Schwingen

unread,
Jan 10, 2023, 12:36:33 PM1/10/23
to
On 2023-01-10, Ralf Kleemann <ralfn...@gmx.de> wrote:
> Ich habe es mal aufgezeichnet:
> https://i.postimg.cc/7ZtMnjzL/AVR-Portschutz.jpg
>
> Mir ist noch nicht klar wo der Pullup Widerstand hinkommt?
> Direkt am AVR-Eingang (R12) oder weiter vorne (R11)
> Welchen Wert nehme ich am Besten für den Pullup Widerstand und für R2?

Prinzipiell geht beides.

Bei R11 kann R2 ziemlich hochohmig werden und damit den Strom in den
AVR-Eingang effektiv begrenzen.

Bei R12 muss R2 deutlich niederohmiger als R12 sein (so 1:10 oder so), damit
der Low-Pegel noch passt. Mit 1k/10k sollte das gehen.

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.

Gregor Szaktilla

unread,
Jan 10, 2023, 3:34:48 PM1/10/23
to
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.

Hans-Peter Diettrich

unread,
Jan 11, 2023, 7:49:49 AM1/11/23
to
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

Gregor Szaktilla

unread,
Jan 11, 2023, 11:31:38 AM1/11/23
to
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.

Ralf Kleemann

unread,
Jan 12, 2023, 6:02:33 AM1/12/23
to
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


Michael Schwingen

unread,
Jan 12, 2023, 10:04:06 AM1/12/23
to
On 2023-01-12, Ralf Kleemann <ralfn...@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.

stefan

unread,
Jan 12, 2023, 12:36:18 PM1/12/23
to
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.




Ralf Kleemann

unread,
Jan 23, 2023, 5:42:00 PM1/23/23
to
Am 12.01.23 um 18:36 schrieb stefan:

Danke für die recht ausführliche Antwort.

> 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.

Ja, so habe ich das vor, ich werde nicht alle Eingänge absichern.

> 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.

Ja, deshalb nehme ich mit R11=4,7k und R2=1k etwas kleinere, aber nicht
zu kleine Widerstände.
Ich habs inzwischen mal getestet, damit ist das RC Glied nicht zu langsam.

> Die Schutzdiode würde ich normalerweise weglassen.

Ich werde die TVS-Diode als Schutzdiode mit einbauen.


Im Datenblatt vom Arduino steht bei absolute ratings bei den Eingängen
max Vcc + 0,5V
Ich vermute, daß dies wegen den internen Schutzdioden ist.
Eine sehr niederohmige Spannung einige Volt über 5V wird vermutlich den
internen Schutzdioden nicht gut tun.
Mit einer Spannung von ca 10V und einem 1K Vorwiderstand müsste es dann
besser aussehen.

Gruß Ralf

stefan

unread,
Jan 28, 2023, 10:59:20 AM1/28/23
to
Richtig. Es ist aber der Strom, der den Eingang zerschießt, nicht die
Spannung. Wenn man eine Überspannung niederohmig einspeist, wird der
maximal zulässige Strom durch die Diode überschritten. Gleichzeitig wird
die Spannung auf die Betriebsspannung durchgeleitet. Das hat
gelegentlich mal den Effekt, dass Schaltungen funktionieren, obwohl sie
ausgeschalter wurden, einfach weil ein Strom vom Port Pin nach VCC fließt.

Verbindet man den Portpin mit einer hochohmigen Spannungsquelle begrenzt
die Diode die maximal am Portpin anliegende Spannung.

> Mit einer Spannung von ca 10V und einem 1K Vorwiderstand müsste es dann
> besser aussehen.

Das wären dann bis zu 10mA. Das kann schon zuviel sein.


>
> Gruß Ralf

0 new messages