mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Arduino - Eingänge entstören?


Autor: svensson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

für das nächste Projekt soll ein Arduino einen (fertig aufgebauten) 
Frequenzumrichter ansteuern. Beide Schaltungen sind galvanisch getrennt, 
werden jedoch in unmittelbarer Nähe aufgebaut.

Mein Kollege hat mir jedoch berichtet, daß der FU ganz erhebliche 
Störungen im Radio verursacht, weshalb er befürchtet, der Arduino könnte 
ebenfalls beeinträchtigt werden.

Sollten die Eingänge (Taster, Schalter) irgendwie geschützt werden (z.B. 
durch einen RC-Filter), oder sind keine Probleme zu befürchten?

Eigentlich kann ich mir irgendwie nicht vorstellen, daß der FU so starke 
Induktionen hervorrufen könnte, daß der Arduino Fehlfunktionen bekommt, 
da der doch vermutlich interne Schutzschaltungen hat?

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
> Sollten die Eingänge (Taster, Schalter) irgendwie geschützt werden ?

Ja. Zum Beispiel so:
                             Taster
         4,7kΩ        100Ω   ____
+5V o----[===]----+---[===]---  -----| GND
                  |
                  |   100nF
                  +----||------------|
                  |
                  |   47kΩ
                  +---[===]-----o AVR Eingang

Den 47kΩ Widerstand würde ich einsetzen, wenn die Taster/Schalter über 
Kabel angeschlossen sind - zum Schutz gegen Deppen. Bei Tastern auf der 
Platine würde ihn weg lassen.

Autor: svensson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank schon einmal.

Ich will aber die internen Pullup-Widerstände nutzen (weniger Bauteile), 
deshalb dachte ich nur an so etwas wie einen R=10k und einen C=100nF.

Tatsächlich sollen die Schalter/Taster über Kabel - ca. 30cm - 
angeschlossen werden.

Das Ganze wird in ein Gehäuse verbaut, so daß die Deppen eigentlich 
wenig Chancen haben sollten. Trotzdem baue ich immer Dioden gegen 
Verpolung ein...

Sollten eigentlich auch die Ausgänge mit einem C=100nF geschützt werden? 
Die steuern lediglich die Basis eines Transistors an, jedoch praktisch 
nur als Schalter (keine Grenzfrequenz notwendig).

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
svensson schrieb:
> Ich will aber die internen Pullup-Widerstände nutzen

Die sind zu hochohmig.

> Sollten eigentlich auch die Ausgänge mit einem C=100nF geschützt werden?

Sie würden dort nicht schützen, sondern den Ausgang zusätzlich belasten 
und die Funktion als Schalter beeinträchtigen. Also nein.

: Bearbeitet durch User
Autor: svensson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefanus F. schrieb
> Ja. Zum Beispiel so:        Taster
>                       1kΩ    ____
>                   +---[===]---  -----| GND
>                   |
>                   |   100nF
>                   +----||------------|
>                   |
>                   |   
>                   +--------o AVR Eingang

Das wäre also keine Lösung? Abfrage natürlich auf LOW.

Die internen Pullup liegen doch so bei 25k, oder? Da wird dann doch der 
47k nicht mehr benötigt?

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die internen Pullup liegen doch so bei 25k

Eher 50-70kΩ. Wie gesagt ist das für deine Anforderung zu hochohmig. 
Wenn du alles weg sparen willst, dann frage uns nicht, wie man es 
richtig macht.

Wetting Current ist hier auch so ein Thema, dass nach externen Pull-Up 
Widestände verlangt.

Dass du die 47kΩ weglassen kannst, habe ich Dir bereits geschrieben.

Autor: svensson (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
>Wenn du alles weg sparen willst, dann frage uns nicht, wie man es
>richtig macht.

Sorry, weniger Bauteile machen halt weniger Arbeit, deshalb dachte ich. 
(Bei anderen Sachen habe ich das nämlich einfach so gemacht: Taster 
gegen GND.)

>Wetting Current
Was ist denn das? Tatsächlich wird die Schaltung in rauher Umgebung 
benutzt werden, aber "nasser Strom" ist wohl nicht wörtlich gemeint?

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
svensson schrieb:
>>Wetting Current
> Was ist denn das?

Google danach. Hat was mit der Lebensdauer von Schaltkontakten zu tun. 
Mit Feuchtigkeit hat es tatsächlich nichts zu tun.

: Bearbeitet durch User
Autor: kenny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
svensson schrieb:
> Sorry, weniger Bauteile machen halt weniger Arbeit, deshalb dachte ich.
> (Bei anderen Sachen habe ich das nämlich einfach so gemacht: Taster
> gegen GND.)
>
>>Wetting Current
> Was ist denn das? Tatsächlich wird die Schaltung in rauher Umgebung
> benutzt werden, aber "nasser Strom" ist wohl nicht wörtlich gemeint?

Ebenfalls sorry, aber entweder man macht es richtig, oder man macht es 
nochmal.

Ich kenne da auch so ein Spezi, der meinte Pulldown an Latches (Tri 
State) zu sparen; die Schaltung funktioniert ja fehlerfrei bei Ihm. 
Sobald aber Störungen auftraten, blinkten die angeschlossenen LEDs 
undefiniert herum.

Er wollte einfach nicht wahr haben, das es einen riesen Unterschied gibt 
zwischen einer scheinbar funktionierenden Schaltung und einer stabilen 
funktionierenden Schaltung.

Autor: svensson (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Habe ich gemacht. Da ich Taster nach IP68 verwende, dürfte die 
Frittspannung wohl kein Problem darstellen.

Und ich verwende den "Nano", den ich in eine Rasterplatine einlöte, so 
daß nahezu alle Verbindungen gelötet werden.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Wasser-Dichtigkeit hat mit dem Wetting Current gar nichts zu tun.

Wenn du dich auf den internen Pull-Up Widerstand verlässt, gehen viele 
Taster schnell kaputt - ausser welche mit reibenden Kontakten. Die 
brauchen keinen Wetting Current.

Autor: svensson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar, Ihr habt mich überzeugt: ich werde der Schaltung die paar 
Widerstände spendieren. Platz ist glücklicherweise kein Problem.

Genau deshalb habe ich doch gefragt und (hoffentlich) etwas dazugelernt.

Autor: svensson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du meinst also, der Strom ist durch die internen Pullups so klein, daß 
die Kontakte oxidieren?

So habe ich das noch gar nicht gesehen, zumal in meinem Buch diese 
Schaltung so beschrieben ist (praktisch, weil ohne externe Bauteile).

Da ich auf der Platine noch ein paar einfache Schalter zur Konfiguration 
unterbringen will, sollte/muß ich das wohl auch da beachten.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Wie gesagt: google danach. Es gibt zu dem Thema einige Erklärungen, die 
mehr bringen als diese Raterunde.

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
anstatt zig einzelne Widerstände zu verwenden kann man 
Widerstandsnetzwerke verwenden. Womit man also gleich mehreren Pins 
einen Pullup oder Pulldown verpasst.

https://www.reichelt.de/artimage/resize_150x150/168533

: Bearbeitet durch User
Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tasten und Schalter kann man in Software enstören (entprellen). Meine 
Standardfunktion macht das immer für einen ganzen Port.


svensson schrieb:
> Sollten eigentlich auch die Ausgänge mit einem C=100nF geschützt werden?
> Die steuern lediglich die Basis eines Transistors an

Kondensatoren gehören da auf keinen Fall hin, der Umladestrom kann Dir 
GND verschieben und der MC spielt verrückt.
Du brauchst ja eh Basisvorwiderstände für die Transistoren, das reicht 
als Schutz.

Autor: svensson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

mit der "Entstörung" meinte ich nicht das Tastenprellen, das fange ich 
per Software ab, sondern tatsächlich Störungen, die irgendwie 
induktiv(?) vom Frequenzumrichter oder dem gesteuerten Drehstrommotor 
eingekoppelt werden.

Steuerung und FU werden halt unmittelbar nebeneinander angeordnet.

Der Hersteller des FU empfiehlt denn auch geschirmte Leitungen, 
zumindest zwischen FU und Motor.

Ich kann mir auch gar nicht vorstellen, daß es wirklich zu Problemen 
kommt, weil der FU ein Standardbauteil für die Industrie mit jeder Menge 
Prüfzeichen ist. Allerdings möchte ich hier kein Risiko eingehen, schon 
gar nicht für ein paar Widerstände und Kondensatoren für wenige Cent.

Bei den Ausgängen dachte ich halt, wenn der Eingang per Induktion(?) 
gestört werden kann, dann vielleicht auch der Ausgang. Die liegen beim 
µC ja sogar auf dem selben PIN, aber wahrscheinlich wird da intern eine 
komplett andere Beschaltung "verbunden".

Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
svensson schrieb:
> mit der "Entstörung" meinte ich nicht das Tastenprellen, das fange ich
> per Software ab, sondern tatsächlich Störungen, die irgendwie
> induktiv(?) vom Frequenzumrichter oder dem gesteuerten Drehstrommotor
> eingekoppelt werden.

Entprellen ist ein Tiefpaß in Software, daher fängt es auch Störungen 
ab.
Es ist egal, ob kurze Pegeländerungen durch Prellen oder durch 
Einkopplung entstehen.

Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
svensson schrieb:
> wenn der Eingang per Induktion(?)
> gestört werden kann

Kann er (fast) nicht, dazu bräuchtest Du parallele Leiterbahnen mit 
kleinen Abständen, quasi Trafos mit je einer Windung.

Störungen erfolgen in der Regel kapazitiv oder über Erdschleifen.
Relais und Optokoppler haben eine Kapazität zwischen beiden Seiten.

Autor: svensson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Kann er (fast) nicht

Dann bin ich beruhigt und kann dem Aufbau gelassen entgegensehen.

Herzlichen Dank für die Hilfestellung.

Autor: svensson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muß doch noch einmal zum Verständnis nachfragen:

> kurze Pegeländerungen durch Prellen oder durch Einkopplung entstehen

Bei der Softwareentprellung könnte es doch aber sein, daß eine 
hochfrequente Störung auch bei der zweiten Abfrage noch/wieder anliegt?

> Relais und Optokoppler haben eine Kapazität zwischen beiden Seiten

Beim Relais leuchtet das noch ein, weil die Kontakte eine Art 
Plattenkondensator bilden, aber beim Optokoppler? Wo kommt denn da die 
Kapazität her?

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
svensson schrieb:
> Bei der Softwareentprellung könnte es doch aber sein, daß eine
> hochfrequente Störung auch bei der zweiten Abfrage noch/wieder anliegt?

Ja. Dagegen kann man noch häufiger abfragen. Um einzelne Cent in 
Massenproduktion zu sparen, kann es sich lohnen, den Softwareaufwand in 
die Höhe zu treiben.

Ich löte da lieber einfach einen Kondensator ein.

> beim Optokoppler? Wo kommt denn da die Kapazität her?

Zwischen der Eingangsseite und der Ausgangsseite besteht eine Kapazitive 
Verbindung. Wir beide haben auch eine - die ist bloß aufgrund der großen 
Distanz sehr gering.

Bei dem Relais meinte er auch nicht die Kapazität zwischen den 
Kontakten, sondern zwischen Kontakte und Spule. Da liegen ja auch nur 
wenige Millimeter Luft zwischen.

Autor: svensson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil ich Stückzahl 1 benötige, werde ich auch lieber Kondensatoren 
nehmen.

Und ich hatte gedacht, daß man mit Relais und Optokopplern auf der 
sicheren Seite wäre.

> Verbindung. Wir beide haben auch eine

Stimmt, und wir ziehen uns sogar gegenseitig an.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
svensson schrieb:
> Und ich hatte gedacht, daß man mit Relais und Optokopplern auf der
> sicheren Seite wäre.

Das dachten sich auch die Asiaten mit ihren doppelt gemoppelt isolierten 
Relais-Platinen, die am Ende trotzdem nicht für 230V geeignet sind und 
schon so manchen zur Verzweiflung gebracht haben, deren µC genau beim 
Umschalten von Relais abschmierten.

Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
svensson schrieb:
> Bei der Softwareentprellung könnte es doch aber sein, daß eine
> hochfrequente Störung auch bei der zweiten Abfrage noch/wieder anliegt?

Ich habe gute Erfahrungen mit einer 4-fach Abtastung gemacht, d.h. ein 
Pegel muß 4* hintereinander anliegen, damit er übernommen wird.

svensson schrieb:
> Beim Relais leuchtet das noch ein, weil die Kontakte eine Art
> Plattenkondensator bilden, aber beim Optokoppler? Wo kommt denn da die
> Kapazität her?

Jedes Bauteil hat zwischen den Pins eine Kapazität.
Z.B.: HCPL-181: Floating Capacitance 0,6pF typ.

Autor: svensson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 4-fach Abtastung

Da wird der Code aber unnötig lang und etwas Rechenzeit benötige ich 
dann vielleicht doch auch noch.

> 0,6pF

Klar haben alle Bauteile eine (geringe) Kapazität. Die Eingänge vom 
ATmega328 aber sicherlich auch (und sei es durch die Z-Dioden).
Mir geht es eher darum, ob ich das berücksichtigen muß oder eher nicht.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
svensson schrieb:
> Mir geht es eher darum, ob ich das berücksichtigen muß oder eher nicht.

So 100% sicher weis das niemand vorher. Deswegen sind Geräte, die 
zuverlässig funktionieren müssen, oft doppelt und dreifach abgesichert. 
Da gibt man lieber etwas mehr Geld aus, als einen Ausfall zu reduzieren.

Ich erinnere mich Alarmanlagen und Telefonanlagen aus den 90er Jahren, 
wo jede einzelne Schraubklemme mit Gasableiter, Varistor und Tiefpass 
gesichert war.

Wenn man aber eher auf die Kosten achten muss oder bei Bedarf leicht und 
schnell nachbessern kann, dann würde ich mehr Mut zur Lücke haben.

: Bearbeitet durch User
Autor: Keine Ahnung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
svensson schrieb:
> Da wird der Code aber unnötig lang und etwas Rechenzeit benötige ich
> dann vielleicht doch auch noch.

Der Code von peda ist erfreulich kurz geraten.
Unbedingt danach suchen.

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
svensson schrieb:
> Beim Relais leuchtet das noch ein, weil die Kontakte eine Art
> Plattenkondensator bilden, aber beim Optokoppler? Wo kommt denn da die
> Kapazität her?

Bei manchen hochwertigen Messgeräten werden zwecks Reduktion der 
Koppelkapazitäten keine integrierten Optokoppler eingesetzt, sondern 
separate LED und Fototransistoren/-dioden, die dann entweder per 
Luftstrecke oder Lichtwellenleiter gekoppelt sind.

https://xdevs.com/doc/Fluke/8846A/img/opto.jpg
https://xdevs.com/fix/f8846a/

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Keine Ahnung schrieb:
> Der Code von peda ist erfreulich kurz geraten. Unbedingt danach suchen.

Ich finde die Erklärungen dazu interessanter, von denen kann man etwas 
lernen.

Autor: svensson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Code sieht schon gut aus, besonders, wenn man mehrere Tasten 
abfragen möchte.

Ich arbeite derzeit aber einfach so:
int rote_Taste() {
  int rt=digitalRead(3);
  if (rt==LOW) { 
    delay(50);
    rt=digitalRead(3);
      if (rt==LOW) { return 1; }
    }  
  return 0;
}
Dann reicht im Programm
if (rote_Taste() ) subroutine();

Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
svensson schrieb:
> Der Code sieht schon gut aus, besonders, wenn man mehrere Tasten
> abfragen möchte.

Besonders bei mehreren Tasten ist der Code bedenklich. Jede gedrückte 
Taste verzögert die Mainloop permanent um 50ms.
Auch sehe ich da keine Flankenerkennung. Man möchte aber oft, daß eine 
Aktion nur je Tastendruck ausgeführt wird und nicht ständig.
Es hat schon seinen Sinn, daß in der Regel für Entprellen und 
Flankenerkennung ein Timerinterrupt benutzt wird. Damit erzeugt ein 
Drücken keine Delays und es geht keine Flanke verloren.

Autor: svensson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eigentlich meinte ich, Dein Code sieht gut aus.

> Besonders bei mehreren Tasten ist der Code bedenklich. Jede gedrückte
> Taste verzögert die Mainloop permanent um 50ms.

Das ist kein Problem, weil ich mit dem Tastendruck in einen anderen 
State wechsele. Das sorgt dann dafür, daß der Code nur ein einziges Mal 
ausgeführt wird. Das funktioniert natürlich nur, wenn die Ausführung der 
Hauptschleife unterbrochen werden darf.

Ich kaufe noch zwei Klammern für meine obige Codezeile
if (rote_Taste() )  { subroutine(); }
(Weil ich keinen Button zum Editieren entdecken konnte.)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.