Power Switch via Push-Button

Ähm, fehlt hier was oder hab ich was übersehen? Wie genau ist denn jetzt diese sensationelle Lösung?

Wie in @Anton-V s Foto oben.
Im Gegensatz zu meinem aktuellen Setup, bei dem ich den Play-/Pause-Button auf Pull-Down umstellen musste mit zwei 10k Widerständen.
Wenn ich morgen dazu komme, aktualisiere ich nochmal den Schaltplan.

Hallo @DasMoeh, ich habe auch einen leuchtenden Taster im Einsatz.
Könntest Du irgendwie eine Skizze machen, wie das mit dem Polulu umgesetzt hast?

Ich weiß nicht womit man die schönen Schaltpläne bastelt, aber es ist eigentlich sehr simpel. Vllt. reicht eine Beschreibung:

  • Stromquelle zu Polulu an VIN und GND
  • Polulu zu Arduino: VOUT -> +5V, GND -> GND, OFF -> D7
  • LED vom Taster zu Arduino: + an D6 (oder gewünschten Pin), - an GND
  • Taster zu Polulu: an A und B anschließen (Leider sind die 3 Pins bei mir nicht beschriftet, aber durch ausprobieren finden sich die 2 passenden. Müsste eigentlich NO und C sein.)

Als Taster habe ich


. Nicht zu verwechseln mit so einem Schalter, der einrastet.

Da weiß ich nicht, was der Polulu genau macht, wenn der Schalter gedrückt bleibt.

1 „Gefällt mir“

Meistens sind die mit fritzing entstanden.

So, hier nun quick and dirty der Schaltplan für die 3-Button-Lösung mit Polulu-LV OHNE Pull-Down-Widerstand.
Vielleicht kann nochmal jemand mit Elektrotechnik-Kenntnissen drüberschauen, ob wir da auch nichts kaputt machen. In der Polulu-Doku stand ja, man könne A auf GND ziehen, aber machen wir so eigentlich nicht, oder?

Interessant, wenn die Zeichnung korrekt ist. Warum funktioniert der Play Button weiterhin als Play Button? Welches Potential hat denn A?

Das wüsste ich auch gerne :wink:
Die Polulu Specs sind an der Stelle wenig aussagekräftig:

PIN Description
A Connect through momentary switch to pin “B” for standard push-on/push-off operation. Connect through momentary switch to ground for on-only operation.

Naja laut Anton-V: A ist über Taster mit GND verbunden:
Bei meinem Set-up habe ich eine Momentary Switch verwendet**, der den A-Pin mit einem der GND-Pins des Pololu verbindet.**

Ah und noch der Hinweis: das gleiche Setup hatte ich auch schon geteset.
Ging bei mir aber nicht mit der 10.000er Powerbank (Name gerade vergessen) die hier im “Umlauf” ist.
Die Powerbank wacht einfach nicht auf. Sie hat eben keine dauerhafte und dauerhaft hohe Spannung am Ausgang anliegen.

Das war ja nicht @papa s Frage. Wir haben ja A eben nicht mit GND verbunden sondern über den Play- /Pause-Button mit A0 des Arduino.

Und ja, die Powerbank schaltet sich damit nicht ein.
Wie oben geschrieben wäre dies eine Lösung für einen Akku oder Powerbank OHNE automatische Abschaltung.

nein klar, aber die Antwort ist: GND. nicht als Potential, aber als Ergebnis. Laut Anton-V hat er jja nicht A0 verbunden, sondern GND.

Er hat doch auf dem Bild eindeutig A0 verbunden. Und Dennis auch?

Mehr kann ich dazu nicht sagen :wink:
Und laut Spezifikation ist das auch genau das, was der Pololu möchte. A mit GND verbinden… würde also Sinn ergeben.

Das ist doch der Stand von vor drei Tagen. Wir reden hier über das aktuelle Setup, für das @Dennis den Schaltplan gepostet hat.

Ah, ich überlas. Ist aber auch kein Wunder dass das funktioniert, A0 ist dann halt zufällig GND mäßig (bzw. ausreichend für den pololu) unterwegs. Ist aber nicht sicher so. Deswegen sollte man ja pullup/-down Widerstände verwenden. Damit genau das reproduzierbar sicher passiert…

Der Arduino hat ja mit unserer Software den internen Pull-Up Widerstand (meine auch 20k).
Und reproduzierbar ist es auf jeden Fall. Es funktionierte bisher in 100% der Fälle.
Auch Long-Press(Titel-Nr-Ansage) funktioniert zuverlässig.

mit reproduzierbar meinte ich auch grundsätzlich immer überall für jeden, in jeder Konstellation.
Dass das im Einzelfall bei jedem Versuch ok ist, ist ja möglich, aber siehe nachfolgende Erläuterung:

Warum braucht ein GPIO-Eingang einen Pullup- oder Pulldown-Widerstand?

Wenn man einen GPIO als Eingang konfiguriert, dann hat der noch unbeschaltete GPIO-Eingang noch keinen festgelegten Zustand. Das heißt, er liegt nicht zwangsläufig auf “High” oder “Low”. GPIO-Eingänge sind CMOS-Eingänge. Die tendieren dazu, im unbeschalteten Zustand “High” (1) anzunehmen. Darauf darf man sich aber nicht verlassen. GPIO-Eingänge neigen dazu zufällig in die eine oder andere Richtung zu schalten. Das heißt, sie haben mal den Zustand “Low” (0) und mal den Zustand “High” (1). Und zwar abhängig davon, was sich der jeweilige Pin oder Anschlusspunkt gerade einfängt. Das einflussnehmende Spektrum reicht von hochfrequenten Einstreuungen umliegender Bauteile und Pins, bis hin zu Überspannung. In der Regel sind das unerwünschte Effekte, die dazu führen, dass der Zustand eines GPIO-Eingangs völlig undefiniert zwischen “High” und “Low” hin- und herspringt. Das hat den Nachteil, dass wenn man einen GPIO-Eingang auswertet, nie sicher sein kann, welchen Zustand er wirklich hat.

Um dem entgegenzuwirken, verhilft man einem GPIO-Eingang zu einem definierten Grundzustand. In der Praxis versieht man den jeweiligen Pin mit einem Pullup- oder Pulldown-Widerstand. Abhängig davon, ob man als Grundzustand “High” oder “Low” erwartet.

1 „Gefällt mir“

Ja, stimmt alles, aber der Arduino hat ja einen integrierten Pull-Up-Widerstand, den wir ja in der Software auch explizit definieren.

https://playground.arduino.cc/Deutsch/Eingang

Da dies ein recht häufiger Einsatzfall ist, wurden im Microkontroller hierfür passende interne Pull-up Widerstände (ca. 20 bis 50 Kiloohm) integriert, die sich bei Bedarf aktivieren lassen.

Danach ist nur noch diese Aussenbeschaltung notwendig

Das klingt für mich (als Fachfremden) nach einer nachvollziehbaren Erklärung, warum der Pololu einschaltet. Umgekehrt müsste es auch noch eine Erklärung für das Schalten von Play/Pause beim TonUNIO geben. Aber wahrscheinlich gibt es da auch eine ganz banale Erklärung für, und der Zauber ist weg, wenn man sie erst einmal gehört hat…