Taster funktioniert nicht? Fehler in Schaltung?

Hallo zusammen,
ich verzweifle etwas! Meine Schaltung lief lange tadellos.
Vermutlich aber nur durch Glück, denn anscheinend ist was falsch verschaltet.

Und zwar geht es um einen Taster. Habe ein Bild meiner Schaltung angehangen aus der hervorgeht wie ich ihn verschaltet habe.

Schaltung.jpg

Den Pin an der grünen Leitung frage ich wie folgt ab:

 if (digitalRead(buttonPin) == HIGH) {
    count = true;
 } else {

    if (count == true) {
      Serial.println("Taster wurde betaetigt");
    }

}

Leider steht der PIN dauerhaft auf HIGH (1). Was mache ich falsch? Ich komme nicht weiter!

Noch verstehe ich dein Problem nicht.
Liegt wohl daran, das kein Bild zu sehen ist.

HotSystems:
Liegt wohl daran, das kein Bild zu sehen ist.

Das Bild war größer als 1MB und wurde nicht hochgeladen. Leider muss zum zum editieren eines Posts aber immer 5min warten. Nun ist das Bild da :slight_smile:

magie004:
Und zwar geht es um einen Taster. Habe ein Bild meiner Schaltung angehangen aus der hervorgeht wie ich ihn verschaltet habe.

Nein, ein Bild hast Du an Deinen Beitrag irgendwie NICHT drangehängt.

Im übrigen kannst Du mit einem digitalRead() nur feststellen, ob ein Button gerade in dem Moment der Abfrage gedrückt oder nicht gedrückt ist. Du kannst damit nicht as Ereignis feststellen, wann der Button vom nicht-gedrückten zum gedrückten Zustand übergeht.

Dafür gäbe es ein Beispiel in der IDE:StateChangeDetection
Hast Du das Beispiel schon mal ausprobiert?

Und wie ist Dein Button genau beschaltet?

Mit einem externen Pull-Down-Widerstand?
So wie im Button-Tutorial?

Oder mit einem externen Pull-Up-Widerstand?
Oder so, dass Du inDeinem Programm den internen Pull-Up-Widerstand des Mikrocontrollers aktivierst und den PinMode auf INPUT_PULLUP setzt?

In dem Fall wäre es so:

  • Der nicht gedrückte Button liefert HIGH, der gedrückte Button liefert LOW.

Das wäre dann genau umgekehrt wie im Button-Tutorial mit dem externen Pull-Down-Widerstand.

P.S.: Das ist ja jetzt wirklich Magie, plötzlich ist doch ein Bild da.
Allerdings kann ich auf dem Bild nicht erkennen, wo da ein Button-Pin am Arduino angeschlossen ist.

Es sieht mir eher so aus, als wenn Du die oben links angeschlossenen Drähte in blau (GND) und rot (3.3V) irgendwo Mitte/Rechts im Bild zu einem Kurzschluss zusammenschaltest.

jurs:
P.S.: Das ist ja jetzt wirklich Magie, plötzlich ist doch ein Bild da.
Allerdings kann ich auf dem Bild nicht erkennen, wo da ein Button-Pin am Arduino angeschlossen ist.

Siehe ein Post drüber :slight_smile:
Auf dem Bild siehst du eine rote Leitung (5V) in den Taster gehen und auf der anderen Seite ziehe ich die Spannung mit dem 100kOhm auf GND runter. Ebenfalls geht von dieser Taster-Seite die grüne Leitung zum PIN 4.

An meinem Code siehst du wie ich feststelle, ob der Taster wirklich gedrückt (rein und raus) wurde. Kleiner Trick mit einem Boolean :slight_smile:

Leider ist auf dem Bild sehr schlecht etwas zu erkennen.
Man sieht auch nicht, wo die Leitung (grün) landet.

Ich würde es so, wie jurs es schon geschrieben hat, mit internem Pullup lösen und gegen GND schalten.
Die Abfrage auch auf LOW ändern.

HotSystems:
Man sieht auch nicht, wo die Leitung (grün) landet.

Ich würde es so, wie jurs es schon geschrieben hat, mit internem Pullup lösen und gegen GND schalten.

-Die Gründe Leitung endet in einer Lötstelle die mit PIN4 des Arduinos verbunden ist

-Die Verschaltung ist exakt wie im Arduino Button Tutorial nur mit einem 100k Widerstand (https://www.arduino.cc/en/Tutorial/Button)

magie004:
-Die Gründe Leitung endet in einer Lötstelle die mit PIN4 des Arduinos verbunden ist

-Die Verschaltung ist exakt wie im Arduino Button Tutorial nur mit einem 100k Widerstand (https://www.arduino.cc/en/Tutorial/Button)

Ok, das will ich dann mal glauben, sehen kann man es nicht.

Dann poste mal den kompletten Sketch, evtl. liegt der Fehler ja auch an der "geheim" gehaltenen Stelle.

magie004:
-Die Verschaltung ist exakt wie im Arduino Button Tutorial nur mit einem 100k Widerstand

Kann ich so nicht erkennen. Für mich sieht es auf Deinem Bild so aus, als wenn Du die Leitungen "3.3V" und "GND", die an Deiner Platine links oben angeschlossen saind, mitte-rechts im Bild zu einem Kurzschluss verbunden hast.

Was Pull-Up und Pull-Down Widerstände sind und wie sie im Zusammenhang mit einem Tastschalter an einen Mikrocontroller (MCU) Pin angeschlossen werden, siehst Du hier, mit Erklärungen und Schaltbildern:

Das Prinzip ist einfach und die Anschlußleitung vom MCU splittet sich auf:

Breim Anschluß mit Pull-Down:

  1. MCU-Pin an Pull-Down Widerstand, der mit seiner anderen Seite an GND angeschlossen ist

  2. MCU-Pin an Schalter, der mit seiner anderen Seite an 5V angeschlossen ist

Beim Anschluß mit Pull-Up:

  1. MCU-Pin an Pull-Up Widerstand, der mit seiner anderen Seite an 5V angeschlossen ist

  2. MCU-Pin an Schalter, der mit seiner anderen Seite an GND angeschlossen ist

Hinweis auf eingebaute Pull-Up Widerstände im Controller:
Beim Anschluß mit Pull-Up kannst Du den eWiderstand in der Schaltung auch weglassen und stattdessen den "internen Pull-Up" im Mikrocontroller aktivieren, indem Du den PinMode des Controller-Pins auf INPUT_PULLUP initialisierst. Dann stellt der Controller intern eine Verbindung über einen eingebauten Widerstand zu 5V her.

Die Größe eines extern verbauten Pull-Up Widerstands liegt typischerweise bei 4K7 (4700 Ohm), ist aber relativ unkritisch, trotzdem: 100K ist ein wenig viel, das könnte in manchen Schaltungen störanfällig werden, wenn Du in der Nähe Elektromotoren betreibst oder Relais mit großen Strömen und/oder induktiven Lasten schaltest.
Die internen PullUp Widerstände an Atmega-Controllern liegen bei ca. 20K bis 50K.

Also zunächst einmal vielen Dank euch beiden. Das hat mir sehr geholfen.
Den vermeintlichen Kurzschluss kann ich ausschließen. Aber ich gebe zu, dass es auf dem Bild ganz so aussieht :slight_smile:

Auf eure Kommentare hin, habe ich die Schaltung nun wie auf dem Bild zu sehen umgebaut. Falls jemand anderes noch ein ähnliches Problem hat, kann ich dieses Video empfehlen (Link).

Bildschirmfoto 2016-12-04 um 12.43.29.png

Nun funktioniert auch wieder alles. Mit den internen Pull-Ups werde ich mich mal in der Zukunft beschäftigen :slight_smile:

Vielleicht noch eine simple Frage für das Hintergrundwissen. Thema Kurzschluss. Wie auf dem Bild zu sehen habe ich einen 10kOhm Widerstand verbaut. Würde ich diesen weglassen erhalte ich einen Kurzschluss und vermutlich brennt mir mein Controller durch. Wie hoch sollte in so einem Fall der Widerstand sein?

Warum sollte ein weg gelassener Widerstand einen Kurzschluss machen?

und vermutlich brennt mir mein Controller durch.

Ja?
Rechne es durch!
Und du formst dir deine Antwort selber.

Wie hoch sollte in so einem Fall der Widerstand sein?

Ist eine Frage der Randbedingungen.
Was gefällt dir an den 10k nicht?

magie004:
Würde ich diesen weglassen erhalte ich einen Kurzschluss und vermutlich brennt mir mein Controller durch.

Würdest Du den Widerstand weglassen, dann hättest Du keinen Kurzschluss, sondern keinen Pull-Up Widerstand.

Der Anschluss-Pin am Microcontroller wäre dann bei nicht-gedrücktem Schalter nicht ständig und zuverkössig HIGH sondern 'floatend" und würde beim Auslesen statistisch im Zeitverlauf schwankend mal HIGH und mal LOW als Status liefern, ohne dass sich am Schaltzustand des Schalters irgendwas ändert.

Also ich zähle mich echt als absoluten Anfänger, deswegen will ich euch nicht Wiedersprechen, aber als ich die Schaltung ohne Widerstand an mein Netzteil gehangen habe, hatte ich einen Kurzschluss, was ja auch logisch ist, da + und - durch drücken des Schalters verbunden werden. Ich bezweifle das dass den restlichen Bauteilen gut tut, die auch noch an der Leitung hängen, oder?

magie004:
Also ich zähle mich echt als absoluten Anfänger, deswegen will ich euch nicht Wiedersprechen, aber als ich die Schaltung ohne Widerstand an mein Netzteil gehangen habe, hatte ich einen Kurzschluss, was ja auch logisch ist, da + und - durch drücken des Schalters verbunden werden. Ich bezweifle das dass den restlichen Bauteilen gut tut, die auch noch an der Leitung hängen, oder?

Wenn du einen Widerstand weglässt, kannst du keinen Kurzschluss bekommen.
Das wurde dir von jurs und combie doch schon so geschrieben.
Das kannst du auch so glauben, da in dem Fall kein Strom mehr fließen kann.
Es sei denn, du nimmst statt des Widerstandes eine Drahtbrücke, dann könnte es ein Kurzschluss sein.

magie004:
Also ich zähle mich echt als absoluten Anfänger, deswegen will ich euch nicht Wiedersprechen, aber als ich die Schaltung ohne Widerstand an mein Netzteil gehangen habe, hatte ich einen Kurzschluss, was ja auch logisch ist, da + und - durch drücken des Schalters verbunden werden.

Logisch ist daran GAR NICHTS!

Ein Schalter darf niemals so angeschlossen werden, dass er beim Schließen den Pluspol und den Minuspol einer Spannungsquelle kurzschließt.

Wenn der Schalter doch so angeschlossen ist, dann ist er KOMPLETT FALSCH angeschlossen.

Tastschalter, von denen wir hier reden, die an einem Mikrocontroller-Pin angeschlossen sein sollen, werden so angeschlossen, dass das Trennen/Verbinden

  • entweder zwischen einem Mikrocontroller-Eingangspin und 5V
  • oder zwischen einem Mikrocontroller-Eingangspin und GND
    erfolgt, aber NIE eine direkte Kurzschlussverbindung zwischen VCC und GND hergestellt werden kann.

Schau Dir auch nochmal diese Seite an:
http://www.resistorguide.com/pull-up-resistor_pull-down-resistor/
LIES UND VERSTEHE!

Und zwar sowohl den englischsprachigen Text.

Als auch die beiden Schaltbilder"Pull-up resistor circuit" und “Pull-down resistor”

Bei offenem Schalter fließt in der Schaltung praktisch überhaupt kein nennenswerter Strom, denn ein Mikrocontroller-Eingang ist extrem hochohmig.

Und bei geschlossenem Schalter fließt der Strom über den Pull-Widerstand gemäß dem Ohmschen Gesetz:

U=R*I bzw. I=U/R

Im Falle von 5V Betriebsspannung und einem 10K Widerstand also:
I=5V/10000 Ohm= 0.0005A = 0.5,mA, das ist ein halbes Milliampere.
So what?

magie004:
Also ich zähle mich echt als absoluten Anfänger, deswegen will ich euch nicht Wiedersprechen, aber als ich die Schaltung ohne Widerstand an mein Netzteil gehangen habe, hatte ich einen Kurzschluss, was ja auch logisch ist, da + und - durch drücken des Schalters verbunden werden. Ich bezweifle das dass den restlichen Bauteilen gut tut, die auch noch an der Leitung hängen, oder?

Bildschirmfoto 2016-12-04 um 12.43.29.png

Wenn du den R entfernst, ist + mit nix mehr verbunden.
Ergo: Kein Kurzschluss möglich.

jurs:
Wenn der Schalter doch so angeschlossen ist, dann ist er KOMPLETT FALSCH angeschlossen.

Vielen Dank für deine ausführliche Nachricht. Ich werde mir bei Zeiten alles in Ruhe anschauen.
Würdest du mir nur kurz sagen ob der Aufbau so in Ordnung geht?

Bildschirmfoto 2016-12-04 um 12.43.29.png

combie:
Wenn du den R entfernst, ist + mit nix mehr verbunden.
Ergo: Kein Kurzschluss möglich.

Wenn ich den Widerstand entferne und den Taster drücke werden + und - auf direktem Weg verbunden und es liegt definitiv ein Kurzschluss vor!

magie004:
Vielen Dank für deine ausführliche Nachricht. Ich werde mir bei Zeiten alles in Ruhe anschauen.
Würdest du mir nur kurz sagen ob der Aufbau so in Ordnung geht?

Der Taster ist so richtig angeschlossen.
Du musst aber auch den GND (-) und + 5 Volt mit dem Arduino verbinden.
Aber warum verwendst du nicht den internen Pullup, wie wir schon vorgeschlagen haben ?
Dann sparst du den externen Widerstand.

Auch ohne Widerstand ist es ganz sicher kein Kurzschluss, wie du bisher behauptet hast.
Ausser du ersetzt den Widerstanddurch eine Brücke. Das hatte ich auch schon geschrieben.

Du solltest unsere Posts auch komplett lesen.

magie004:
Wenn ich den Widerstand entferne und den Taster drücke werden + und - auf direktem Weg verbunden und es liegt definitiv ein Kurzschluss vor!

Dein 10K Widerstand ist an Arduino Pin4 angeschlosse, ja?

Wenn Du den Widerstand entfernst, dann ist der Schalter überhaupt nicht mehr an Plus 5V angeschlossen, nicht einmal mehr über den Pull-Up Widerstand. Und wenn der Schalter gar nicht an Plus 5V angeschlossen ist, kann er auch keine Kurzschlusverbindung zwischen Plus 5V und Minus GND herstellen.

Der Schalter stellt eine Verbindung zwischen Minus und Arduino Pin4 her!

Jedenfalls dann, wenn Du die von Dir in #16 gepostete Schaltgung verwendest.

Wenn Du allerdings in #16 eine Schaltung postest und dann eine ganz andere Schaltung tatsächlich verwendest, kann man natürlich schlecht sagen, was Du machst. Eventuell ja tatsächlich einen Kurzschluss.
Aber das dann nicht mit der Schaltung aus #16.