Stromführende Leitung löst Taster aus - was tun?

OP #2739305
Lesenswert?

Hallo zusammen,
ich komme eigentlich aus der Informatik und habe von Elektrotechnik 
nicht so ein großes Verständnis. Ich habe folgendes Problem:

An der digitalen Schnittstelle eines Arduino-Microcontrollers sind 
folgende Komponenten angeschlossen:

1. LED Lichterkette (digital-Out des Arduinos wird via 
Transistorschaltung auf 5v für die Lichterkette verstärkt).
2. Taster

Was die Schaltung eigentlich leisten soll:
Die Lichterkette blinkt munter vor sich hin. Wird der Taster gedrückt, 
soll das Blinken stoppen und die Lichterkette dauerhaft ausbleiben. Das 
funktioniert auch soweit, wenn die Lichterkette unmittelbar am 
Transistorverstärker hängt.

Jetzt ist es aber so, dass Arduino und Transistorverstärker eine Einheit 
bilden und per Kabel (ca. 10m) von der anderen Einheit, in der sich 
Lichterkette und Taster befinden, getrennt sind. Hierfür habe ich ein 
5-poliges DIN-Kabel + Stecker genutzt, von denen ich 4 Adern nutze:
1. Led Lichterkette +5v
2. Led Minus-Pol
3. Taster
4. Taster Ground

Funktioniert nicht. bzw. funktioniert fehlerhaft: Das Tasterereignis 
wird gelegentlich ausgelöst, obwohl der Taster nicht gedrückt wurde. 
D.h.: die Lichterkette blinkt eine weile und hört dann auf, als wenn der 
Taster gedrückt wurde.

Wenn ich das ganze mit 2 Kabeln zu je 2 Adern versuche und 
Stromversorgung für die Lichterketten und Taster-Signal getrennt führe, 
funktioniert es wieder.

Woran liegt das? Hat das was mit Induktion zu tun, in dem Sinne, dass 
das Stromführende Kabel der LED-Lichterkette auf die Tasterleitung 
störend einwirkt?

Wie kann ich das mit einfachen Mitteln unterbinden? Ich würde gerne nach 
Möglichkeit ein ganz normales 5pol-DIN-Kabel benutzen (habe die Gehäuse 
bereits Buchsen eingebaut und verlötet).

  Viele Dank für eure Hilfe!

       Grüße,
          Kai
#2739312
Lesenswert?

Also Informatiker habe ich volles Verständnis für dein Problem;-)

Ich würde auf das 5. Kabel VCC (5V) legen und direkt am Taster einen 
Pullup, so 1k oder 4.7k, einfach mal testen.

Dann am Inputpin des AVRs einen Kondensator, 100nF oder so. (bzw. 
Entprellschaltung aus dem Wiki hier)

Dies könnte dein Problem bereits lösen. Ansonsten warte auf die 
Antworten der Elektroniker;-)


mfg Andreas
#2739314
Lesenswert?

Andreas B. schrieb:
> Also Informatiker habe ich volles Verständnis für dein Problem;-)
>
> Ich würde auf das 5. Kabel VCC (5V) legen und direkt am Taster einen
> Pullup, so 1k oder 4.7k, einfach mal testen.
>
> Dann am Inputpin des AVRs einen Kondensator, 100nF oder so. (bzw.
> Entprellschaltung aus dem Wiki hier)

Genau das willst du nicht tun.

interner Pullup reicht völlig. Den Rest macht eine ordentliche 
Softwareentprellung.

Die Sache mit dem Kondensator hatten wir schon so oft und auch in 
kommerziellen Produkten (Pollin-Board). Beim Pollin Board sieht jeder 
zu, dass er den Kondi los wird. Rate mal warum? Weil es eben nicht 
vernünftig funktioniert.
#2739336
Lesenswert?

Karl Heinz Buchegger schrieb:
> Andreas B. schrieb:
>> Also Informatiker habe ich volles Verständnis für dein Problem;-)
>>
>> Ich würde auf das 5. Kabel VCC (5V) legen und direkt am Taster einen
>> Pullup, so 1k oder 4.7k, einfach mal testen.
>>
>> Dann am Inputpin des AVRs einen Kondensator, 100nF oder so. (bzw.
>> Entprellschaltung aus dem Wiki hier)
>
> Genau das willst du nicht tun.
>
> interner Pullup reicht völlig. Den Rest macht eine ordentliche
> Softwareentprellung.
>
> Die Sache mit dem Kondensator hatten wir schon so oft und auch in
> kommerziellen Produkten (Pollin-Board). Beim Pollin Board sieht jeder
> zu, dass er den Kondi los wird. Rate mal warum? Weil es eben nicht
> vernünftig funktioniert.

Ich bin natürlich davon ausgegangen das er bereits eine 
Softwarentprellung hat, aber wenn der Taster nur gedrückt werden muss, 
und nicht gezählt wird etc. könnte man diese auch weglassen.

Daher ist Softwareentprellung sicher ein gutes Stichwort.

ps. ich Entprelle alle meine Taster Softwaremässig;-)


mfg Andreas
OP #2739582
Lesenswert?

Hilfe, soviele Antworten in so kurzer Zeit, vielen Dank!

Also, Taster bereits ist softwareseitig entprellt:
digitalWrite(inputpin, HIGH);

bzgl. der Hardware habe ich kein Pull-Up-Widerstand oder ähnliches 
eingebaut.

Meine Schaltung sieht im Groben so aus


|----------|
|Arduino   |                   10m Zuleitung zum Taster
|      GND |----------4.--------------------------------------|
|          |                                               Taster
| D I/O   5|----------3.--------------------------------------|
|          |
| D I/O   9|------|
|          |    Transistor-Verstärker------2.-----LED-Lichterkette--|
|----------|      |                                                 |
                  |                                                 |
                  |                                                 |
                 GND                                                |
                             10m Zuleitung zur Lichterkette         |
                 +5v------------------------1.-----------------------



Für die Leitungen 1,2,3 und 4 nutze ich wie gesagt ein DIN-Kabel. Sobald 
die Lichterkette ein paar mal geblinkt hat, schaltet der Taster von 
alleine, obwohl er das nicht soll.

Nutze ich kein DIN-Kabel und führe Leitungen 1 und 2, sowie 3 und 4 
getrennt funktioniert alles wunderbar.

Würde hardwareseitig ein Pull-Up-Widerstand das Problem beheben? Wie 
müsste er mit welcher Dimensionierung konkret in meine Schaltung 
eingebaut werden?

Achso, der benutze Arduino ist übrigens ein Duemilanove mit einem 
AtMega328.

Ich versuche mich gerade in diese Hardware Pull-Up-Sache einzuarbeiten, 
bin aber für eine direkte und konkrete Lösung dankbar!

  Viele Grüße,
         Kai
OP #2739587
Lesenswert?

Wäre das mit dem eingesetzten Widerstand in Leitung 3 so richtig:


|----------|
|Arduino   |                   10m Zuleitung zum Taster
|      GND |--------------4.----------------------------------|
|          |                                               Taster
| D I/O   5|---4,7KOhm----3.----------------------------------|
|          |
| D I/O   9|------|
|          |    Transistor-Verstärker------2.-----LED-Lichterkette--|
|----------|      |                                                 |
                  |                                                 |
                  |                                                 |
                 GND                                                |
                             10m Zuleitung zur Lichterkette         |
                 +5v------------------------1.-----------------------


  Grüße,
    Kai
Gast #2739602
Lesenswert?

Ich weiß aus eigener Erfahrung das sich gern bei langen Leitungen mal 
was einkoppelt. Da hilft ein C, im 100nF Bereich. Lass dich von den 
Leuten hier nicht verwirren, dass hat nichts mit Entprellen, sondern mit 
EMV zu tun. Stumpfes entprellen natürlich per Software, aber Entstören 
nur mit nem C.


Ingo
#2739604
Lesenswert?

Kai N. schrieb:
> Hilfe, soviele Antworten in so kurzer Zeit, vielen Dank!
>
> Also, Taster bereits ist softwareseitig entprellt:
> digitalWrite(inputpin, HIGH);
>
> bzgl. der Hardware habe ich kein Pull-Up-Widerstand oder ähnliches
> eingebaut.

Ist der interne aktiviert?

Wenn nicht, brauchst du dich nicht wundern, wenn sich deine Antenne 
jedes dahergelaufenen elektromagnetische Feld einfängt, welches sich da 
so in seiner Umgebung rumtrollt.

Wenn der Taster nicht gedrückt ist, dann wird die Leitung auf keinen 
bestimmten Pegel gezogen! Sie wirkt wie eine Antenne!
#2739606
Lesenswert?

Ingo schrieb:
> Ich weiß aus eigener Erfahrung das sich gern bei langen Leitungen mal
> was einkoppelt. Da hilft ein C, im 100nF Bereich. Lass dich von den
> Leuten hier nicht verwirren, dass hat nichts mit Entprellen, sondern mit
> EMV zu tun. Stumpfes entprellen natürlich per Software, aber Entstören
> nur mit nem C.

Wetten, dass er den internen Pullup NICHT aktiviert hat?
OP #2739665
Lesenswert?

Den internen Pullup aktiviere ich doch so, indem ich den entsprechenden 
Pin an dem der Taster angeschlossen ist auf HIGH setze, oder nicht?:

digitalWrite(<Inputpin für den Taster>, HIGH);


@Spess: ich bin zu dumm. Kannst du mir das bitte kurz skizzieren?

@Ingo: könntest auch du mir bitte als Schaltplan kurz skizzieren was du 
meinst? Habe keine Vorstellung wo der Kondensator mit welcher 
Einbaurichtung hin muss...


  Danke Euch alles!


   Grüße,
      Kai
#2739675
Lesenswert?

Peter Dannegger schrieb:
> Kai N. schrieb:
>> Also, Taster bereits ist softwareseitig entprellt:
>> digitalWrite(inputpin, HIGH);
>
> "digitalWrite" klingt aber garnicht nach Entprellen.
> Ist diese Funktion irgendwo dokumentiert bzw. gibts den Quelltext zu
> lesen?

Ja, Arduino Quellcode runterladen / Doku anschauen.

>
> Es sind leider auch viele schlechte Entprellungen unterwegs, die den
> Namen nicht verdienen.

Soweit ich das sehe nennt es sich nicht entprellen und entprellt auch 
nicht...

=> Entprellen, warscheinlich gibt es die entsprechenden Methoden in 
Arduino bereits...

>
> Peter

mfg Andreas
#2739700
Lesenswert?

Ingo schrieb:
> Stumpfes entprellen natürlich per Software, aber Entstören
> nur mit nem C.

Störungen und Preller sind beides stochastisch auftretende kurzzeitige 
Pegeländerungen und lassen sich daher auch mit der gleichen Methode 
wirksam unterdrücken.
Eine Mehrfachabtastung (>= 4) mit einem passenden Zeitintervall (~10ms) 
unterdrückt beides zuverlässig.



Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren