Forum: Mikrocontroller und Digitale Elektronik Stromführende Leitung löst Taster aus - was tun?


von Kai N. (kai087)


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

von spess53 (Gast)


Lesenswert?

Hi

Fehlender oder zu kleiner Pull-Up-Widerstand?

MfG Spess

von Hubert G. (hubertg)


Lesenswert?

Welcher Arduino und wie ist die Taste an welchem Port angeschlossen?

von Andreas B. (andreasb)


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

von Karl H. (kbuchegg)


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.

von Urmel aus dem Eis (Gast)


Lesenswert?

Oder du frägst den Taster nur in den Dunkelphasen der LEDs ab, falls er 
nicht sofort reagieren muss.

von Andreas B. (andreasb)


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

von Helmut L. (helmi1)


Lesenswert?

Mach wie oben schon mal erwaehnt wurde einen niederohmigen Pullup dran 
in der naehe vom AVR Pin.
So rund 2K .. 5K sollten reichen. Dann ist die Leitung niederohmig genug 
das sie keine Stoerungen mehr einfaengt.

von Kai N. (kai087)


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

von Kai N. (kai087)


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

von spess53 (Gast)


Lesenswert?

Hi

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

Nein. Der Widerstand musst von der Leitung nach VCC.

MfG Spess

von Ingo (Gast)


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

von Karl H. (kbuchegg)


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!

von Karl H. (kbuchegg)


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?

von Abend (Gast)


Lesenswert?

Nein. Als PullUp nicht in Reihe zum Schalter

von Peter D. (peda)


Lesenswert?

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?

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


Peter

von Helmut L. (helmi1)


Lesenswert?

Pullup so anschliessen

|----------|
|Arduino   |                   10m Zuleitung zum Taster
|      GND |----------4.--------------------------------------|
|          |                                               Taster
| D I/O   5|-----------+------3.------------------------------|
|          |           |
| D I/O   9|--        2.2K
|          |           |
|----------|          +5V                                             | 
|

von Kai N. (kai087)


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

von Kai N. (kai087)


Lesenswert?

Danke Helmut! Meintest du das so Spess, wie Helmut es skizziert hat?

von Andreas B. (andreasb)


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

von spess53 (Gast)


Lesenswert?

Hi

>Danke Helmut! Meintest du das so Spess, wie Helmut es skizziert hat?

Ja.

MfG Spess

von Peter D. (peda)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.