Störsignale (Erdungsproblem?)

Hallo,

Ich habe einen Arduino Mega 2560 und Windows 7 64 bit per USB Kabel! Folgendes Problem taucht bei mir auf:

Wenn ich ein programm für Arduino schreibe, dass z.b anzeigt wie oft ein Taster gedrückt wurde, und die Werte an den PC Sendet (VB.NET), dann geschieht es, dass Arduino denkt, dass der Taster ständtig gedrückt wird. Aber nur dann WENN bloss der draht im Pin steckt, ohne jegliche verbindung zu sonst was anderem.

Ich bekomme überall Störsignale sobald ein Draht auch nur in irgendeinem Pin steckt. Sobald ich ihn aber rausziehe, beruihgt sich alles wieder. Egal wo: Digital IN oder Analog IN PWM... egal!

Sobald ich aber ihn in GND stecke, ist natürlich wieder alles ruihg, oder in 5v... ruihg! Und was ganz seltsam ist: Sobald ich die Erdung and der Steckdose anfasse, hören diese störungen auch auf (Oder ich fasse beim USB-Port das gehäuse an)!

Das ist doch net normal oder? Und mein Analog IN zeigt mir in VB.NET auch totale störungen an wenn im pin nichts drin steckt, müsste ich doch auch den wert 0 haben und nicht etwa ständig zwischen 200 und 300 flackern.

Digital IN/OUTS is das selber, steckt der draht ohne weiteren kontakt drin flackert mein wert zwischen 1 und 0 hin und her. Und ich glaub nicht dass das normal ist?!

Nachtrag: Das alles geschieht auch, egal wo im Haus, wenn ichs nur ans Netzteil anschließe (nicht USB)!

hi,

ich würde mal, und das bestimmt nicht nur des arduinos wegen, ob die erdung in deinem stromnetz auch wirklich mit erde verbunden ist.

gruß stefan

füge ein:

...,prüfen,,..

ein

Das muss sie doch wohl, sonst wäre das unfassbarer Pfusch! Die FI's bei uns Daheim lösen doch auch aus, genauso wie ein Kurzschluss gegen Erde auch die Sicherungen raushaut.

Also ich halte es für ziemlich unwahrscheinlich, dass unser Haus nicht geerdet ist. Vielleicht aber schlecht ?!

Wie hast Du den Taster den an den Arduino angeschlossen ?

Beide Anschlüsse des Tasters an digitale Pins ? Den ersten Pin auf OUTPUT und HIGH gestellt ? Den zweiten auf INPUT ?

Falls ja, dann den Input Pin zusätzlich über einen 1kohm Pulldown-Widerstand mit GND verbinden !

Megaionstorm: Wie hast Du den Taster den an den Arduino angeschlossen ?

Beide Anschlüsse des Tasters an digitale Pins ? Den ersten Pin auf OUTPUT und HIGH gestellt ? Den zweiten auf INPUT ?

Falls ja, dann den Input Pin zusätzlich über einen 1kohm Pulldown-Widerstand mit GND verbinden !

Ist das nicht unwichtig wie? Es geht mir allein um die Tatsache, dass das Arduino Board anscheind durch das bloße einstecken eines 5cm Steckkabels schon falsche Signale sendet obwohl das Kabel frei da liegt ohne eine Verbindung zu irgendwas anderem und wenn ich GND anfasse oder den PE an der Steckdose, diese verschwinden. Das kanns meiner meinung nach nicht sein, dass man eine zusätzliche Masse braucht.

Zitat RN-Wissen:

Ein Pullup- oder Pulldown-Widerstand wird dazu verwendet, einen Eingang auf einen definierten Wert zu "ziehen". Normalerweise befindet sich der Eingang im Zustand "schwebend/hochohmig", welcher sich irgendwo zwischen High und Low befindet. Nun sind Schaltungen leider nicht komplett ohne Störsignale, und durch Einstrahlungen von Signalen kann es nun passieren, dass kurzzeitig mal ein Wert über- oder unterschritten wird und der Eingang plötzlich ein High- oder Lowsignal bekommt. Dies führt dann zu unerklärlichen und unregelmäßig auftretenden Fehlern, die einen Neuling zur Verzweiflung treiben können.

Also ist es was völlig normales? Ich finds nur seltsam, dass das nirgends erwähnt wird und auch nirgends zu sehen ist, dass regelmässig solche Widerstände eingesetzt werden!

Noch einmal das Beispiel mit dem Taster.

Der erste Kontakt ist mit einem digitalen Pin des Arduinos verbunden, dieser wurde auf OUTPUT und HIGH gesetzt. Der zweite Kontakt wurde ebenfalls mit einem digitalen oder analogen Pin des Arduinos verbunden, dieser wurde auf INPUT gesetzt.

Wenn man den Taster drückt fliesst 5V durch den Taster und kommt am Input Pin an, bei einem digitalen Pin habe ich dann ein HIGH und bei einem analogen 1023.

Wenn der Taster jedoch nicht gedrückt wird hat der Input Pin keine Verbindung zu 5V oder zur Masse, er hat im diesem Moment fast die Funktion einer Antenne. Störstrahlung kann dann dazu führen das am Input Pin ein HIGH oder LOW angezeigt wird, dies auch wild wechselnd. Durch den Pulldown-Widerstand verhindert man dies !

Megaionstorm: Noch einmal das Beispiel mit dem Taster.

Der erste Kontakt ist mit einem digitalen Pin des Arduinos verbunden, dieser wurde auf OUTPUT und HIGH gesetzt. Der zweite Kontakt wurde ebenfalls mit einem digitalen oder analogen Pin des Arduinos verbunden, dieser wurde auf INPUT gesetzt.

Wenn man den Taster drückt fliesst 5V durch den Taster und kommt am Input Pin an, bei einem digitalen Pin habe ich dann ein HIGH und bei einem analogen 1023.

Wenn der Taster jedoch nicht gedrückt wird hat der Input Pin keine Verbindung zu 5V oder zur Masse, er hat im diesem Moment fast die Funktion einer Antenne. Störstrahlung kann dann dazu führen das am Input Pin ein HIGH oder LOW angezeigt wird, dies auch wild wechselnd. Durch den Pulldown-Widerstand verhindert man dies !

Danke, dadurch hast du mir schonmal sehr geholfen :-)

Das könnte für dich auch noch interessant sein, dient dem entprellen von Tastern.

Die Bounce Library: http://arduino.cc/playground/Code/Bounce

MindCode: Also ist es was völlig normales? Ich finds nur seltsam, dass das nirgends erwähnt wird und auch nirgends zu sehen ist, dass regelmässig solche Widerstände eingesetzt werden!

Weil Standartmäßig in den Beispielen die interne Pullup-Widerstand aktiviert werden. Den aktiviert man indem man bei einem Pin, das man mit pinMode(pin, INPUT); als Eingang definiert hat H schreibt digitalWrite(pin, HIGH); Viele Grüße Uwe

Megaionstorm: Noch einmal das Beispiel mit dem Taster.

Der erste Kontakt ist mit einem digitalen Pin des Arduinos verbunden, dieser wurde auf OUTPUT und HIGH gesetzt. Der zweite Kontakt wurde ebenfalls mit einem digitalen oder analogen Pin des Arduinos verbunden, dieser wurde auf INPUT gesetzt.

Wenn man den Taster drückt fliesst 5V durch den Taster und kommt am Input Pin an, bei einem digitalen Pin habe ich dann ein HIGH und bei einem analogen 1023.

Wenn der Taster jedoch nicht gedrückt wird hat der Input Pin keine Verbindung zu 5V oder zur Masse, er hat im diesem Moment fast die Funktion einer Antenne. Störstrahlung kann dann dazu führen das am Input Pin ein HIGH oder LOW angezeigt wird, dies auch wild wechselnd. Durch den Pulldown-Widerstand verhindert man dies !

Jetzt verstehe ich aber nicht, wieso der Taster zwischen einem Ausgang und einem Eingang geschaltet werden soll. Grüße Uwe

uwefed: Weil Standartmäßig in den Beispielen die interne Pullup-Widerstand aktiviert werden. Den aktiviert man indem man bei einem Pin, das man mit pinMode(pin, INPUT); als Eingang definiert hat H schreibt digitalWrite(pin, HIGH);

Mal als kleiner Hinweis: Diese Vorgehensweise ist ja nicht gerade intuitiv, einen Eingang zu definieren und dann dorthin ein HIGH zu schreiben. Neuerdings (ab Arduino IDE 1.0?) geht auch einfach pinMode(pin, INPUT_PULLUP), Quelle: http://arduino.cc/en/Reference/PinMode

Jetzt verstehe ich aber nicht, wieso der Taster zwischen einem Ausgang und einem Eingang geschaltet werden soll.

Natürlich kann man den Taster auch zwischen 5V und einem als INPUT definierten Pin schalten !