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
Hi Fehlender oder zu kleiner Pull-Up-Widerstand? MfG Spess
Welcher Arduino und wie ist die Taste an welchem Port angeschlossen?
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
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.
Oder du frägst den Taster nur in den Dunkelphasen der LEDs ab, falls er nicht sofort reagieren muss.
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
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.
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
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
Hi
>Wäre das mit dem eingesetzten Widerstand in Leitung 3 so richtig:
Nein. Der Widerstand musst von der Leitung nach VCC.
MfG Spess
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
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!
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?
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
Pullup so anschliessen |----------| |Arduino | 10m Zuleitung zum Taster | GND |----------4.--------------------------------------| | | Taster | D I/O 5|-----------+------3.------------------------------| | | | | D I/O 9|-- 2.2K | | | |----------| +5V | |
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
Danke Helmut! Meintest du das so Spess, wie Helmut es skizziert hat?
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
Hi
>Danke Helmut! Meintest du das so Spess, wie Helmut es skizziert hat?
Ja.
MfG Spess
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.