An/Aus Taster für mehrere Pis

  • Hallo


    Ich möchte einen Taster in mein Projekt integrieren, mit dem alle Pis gleichzeitig ausgeschalten werden können. Dazu habe ich die Möglichkeit gefunden GPIO3 mit GND über einen Taster zu verbinden und die config.txt um

    Code
    dtoverlay=gpio-shutdown,gpio_pin=3, active_low=1,gpio_pull=up

    zu erweitern. Mit einem einzelnen Pi funktioniert dies einwandfrei. Um so alle Pis über einen Taster ausschalten zu können müsste ich jedoch alle GPIO3 Pins miteinander verbinden, wie hier zu sehen ist:

    Meine Frage ist dabei, ob die Pis so beschädigt werden oder ob dies möglich ist, da alle Pins als Input mit Pull-Up Widerstand geschalten sind?


    Vielen Dank für eure Hilfe!


    Mit freundlichen Grüßen

    Simon

  • Die GPIOs direkt untereinander zu verbinden, halte ich für keine gute Idee. Ich würde jeden GPIO über eine (Schottky-)Diode mit dem Schalter verbinden. Wenn der Schalter nach GND geschlossen wird, zieht er alle GPIOs nach GND. In der Gegenrichtung verhindern die Dioden Störungen zwischen den Modulen.

  • Die Dioden können zwar nicht schaden, aber einen besonderen Grund für den Einsatz sehe ich eigentlich nicht. Welche "Störungen zwischen den Modulen" da auftreten sollten, wüsste ich nicht. Geht ein Pin versehentlich auf output-low, werden alle anderen Pis ausgeschaltet - aber das ändert sich durch die Dioden auch nicht. Wenn einer der Pins 3,3 Volt liefert, passiert gar nichts. Der Sinn der Dioden erschließt sich mir nicht.

    Wenn du vier Taster einzeln anschließt und alle gleichzeitig drückst, hast du den gleichen Effekt wie mit einem einzelnen Taster. Und keiner käme auf die Idee, eine Diode da rein zu schalten.

    Viel Wichtiger wäre es, vor jeden GPIO einen 1000-Ohm-Widerstand zu schalten, sonst hast du einen herrlichen Kurzschluss, wenn du den Taster drückst und deine GPIOs mal versehentlich auf output-high programmiert sind. Auch gegen Überspannung von außen (falsche Verkabelung, versehentlicher Fehlkontakt) schützt der Widerstand recht gut. Und auch wenn jetzt gleich wieder ein Shitstorm losgeht: Die Aussage, dass der Pi nicht 5-Volt-resistent ist, trifft zu, wenn die Spannung ohne irgendeinen Schutz angeschlossen wird. Bis zu einem gewissen Punkt geht es dabei aber eigentlich nicht um die Spannung, sondern um den Strom. Das Stichwort heißt Current Injection. Mit einem hinreichend großen Widerstand kann man auch höhere Spannungen abfangen. Der Pi verfügt über Schutzdioden, die Spannungen über 3,3 V ableiten. Ohne Widerstand wird dann aber der Strom so groß, dass diese Dioden durchbrennen. Begrenzt man den Strom, kann das ausreichen, um einen µC zu schützen. Da die dioden direkt auf dem Die sind, halten sie nur relativ geringe Verlustleistungen aus. Leider gibt es zum SoC des Pi in dieser Hinsicht keine Angaben des Herstellers. Angaben anderer SoCs und µC legen aber nahe, dass hinreichend hohe Widerstände ausreichen, um bei 5 V die Dioden vor Überlastung schützen. Angenommen, der Pi toleriert einen Injection Current von 5 mA (was ich nicht behaupte, aber diesen Wert findet man z. B. hier, wobei dieser Chip deutlich größere Strukturen haben dürfte und somit möglicherweise auch höher belastbar ist als der SoC des Pi), dann würden 1000 Ohm leicht reichen, um 5 Volt abzufangen, denn der Strom wäre nur (5-3,3)/1000 = 1,7 mA. Die internen Schutzdioden müssten dann ca. 3,3 V x 1,7 mA = 5,6 mW Leistung abführen.

    Mit einem höheren Widerstand, z. B. 10000 Ohm, ist Chance, Schäden durch Überspannung abzuwenden, noch größer. (Wie gesagt, mangels Angaben des Herstellers kann man über die genauen Größen hier nur mutmaßen.) Ob du bei 10.000 Ohm noch sicher schalten kannst, hängt allerdings vom Pullup-Widerstand ab. Wenn der 50.000 Ohm ist (verschiedene Quellen nennen 50-65 KOhm), hast du bei gedrücktem Taster noch 0,55 Volt anliegen (weil die beiden einen Spannungsteiler bilden). Das sollte noch sicher als low erkannt werden. Bei einem Pullup von 30K sind es 0,825 V - da liegt es schon nicht mehr sicher in der Spezifikation (wenn ich mich recht entsinne 0,7 Volt).


    Aber das alles nur am Rande. Ich empfehle dir, vor jeden GPIO 1000 Ohm als Schutzwiderstand zu schalten.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!