Hallo zusammen,
ich möchte einen Raspberry Pi an einer Powerbank (5V) betreiben. Da der
R.Pi jedoch recht viel Leistung verbraucht, würde dieser die Powerbank
schnell leer saugen.
Daher möchte ich den R.Pi nach einer Weile Inaktivität herunterfahren
(z.B. nach 10 Minuten).
Das Problem ist, dass der R.Pi 3B mit Raspbian auch im ausgeschalteten
Zustand ca. 0,6 bis 0,9 W verbraucht. Das würde die Powerbank trotzdem
über einen gewissen Zeitraum leer saugen.
####################################
Daher habe ich mir eine Schaltung überlegt, welche den R.Pi per Taster
mit Strom versorgt, der R.Pi dann direkt die Stromversorgung selbst
aktiv hält und bei Bedarf seinen eigenen Strom 'kappt' (siehe
Schaltplan).
5V > Taster > Diode > NPN > PNP > Masse schalten
5V > Raspberry > Diode > NPN > PNP > Masse schalten (bis zum
runterfahren)
Siehe Schaltplan.
Als R.Pi Signal (um den eigenen Stromkreis aktiv zu halten) habe ich an
folgendes gedacht:
1.: 5V / 3.3V PowerPins. Diese bleiben jedoch auch nach dem R.Pi
ausschalten aktiv und kappen nicht die eigentliche Stromversorgung.
2.: normalen GPIO, welche jedoch erst nach einer gewissen Weile durch
die Software auf HIGH gehen können. Somit müsste man den Taster z.B. 7
Sekunden gedrückt halten. Auch nicht praktikabel.
3.: 5V von USB. Das würde klappen...aber 5V per USB bekomme ich auch
erst nach 7 Sekunden. Gleiches Problem wie mit den normalen GPIO's.
4.: speziellen Funktionen der GPIO's, welche z.B. mittels internen
PullUp direkt nach dem Starten erst mal auf 3.3V gehen (siehe
https://web.stanford.edu/class/cs140e/docs/BCM2837-ARM-Peripherals.pdf
Seite 102). Die Pins bleiben aber ebenfalls nach dem R.Pi ausschalten
auf HIGH. Somit müsste ich diese mittels Software auf LOW ziehen.
*Das wäre die bislang beste Lösung...* allerdings würde ich mit dem GPIO
= LOW den R.Pi im laufenden Betrieb hart ausgeschaltet! Was auf Dauer
die SD Karte (Dateisystem) zerstört. Daher habe ich einen 100uF-500uF
Transistor eingesetzt um die Versorgung noch einige Sekunden aufrecht zu
halten. Allerdings ist das auch nur ein "in der Zeit müsste der R.Pi
eigentlich runtergefahren sein"!
Kennt jemand noch eine bessere Lösung für das Problem?
Eine higs-side switch wie den BTS432 ist eine elegante Losung. Mit eine
GPIO kannst du diese Switch einschalten, bei nach Masse schalten geht
sofort der Power off. Mit eine RC können sie noch eine art von Timer
machen, sodas das Abschalten verzogert wird. Einschalten ist naturlich
eine externe Switch, nach anfahren uebernimmt den GPIO das Signal.
Hallo,
unabhängig von Sinn und Zweck: man schaltet nie GND einer Komponente
wenn man die kompletten Verhältnisse der Spannungen nicht 100%
sicherstellen kann.
Einfacher ist es immer, die Spannungsseite zu schalten.
Deine Schaltung trennt - der Powerbank vom - des Raspi. Alle Potenziale
des RasPi incl. der I/O bezeihen sich auf GND des Raspi.
Welches Potenzial sieht im ungünstigsten Fall der I/O des Raspi gegen
die anderen Leitungen wenn - aufgetrennt ist?
PS: ich war zu langsam...
Gruß aus Berlin
Michael
Bogdan schrieb:> Der PNP ist nicht korrekt verschaltet.
Oh ja danke. Habs eben nur schnell zusammengebastelt und bin da nicht so
bewandert. Bzw. der NPN war falsch. Korrigiert.
Michael U. schrieb:> Deine Schaltung trennt - der Powerbank vom - des Raspi. Alle Potenziale> des RasPi incl. der I/O bezeihen sich auf GND des Raspi.> Welches Potenzial sieht im ungünstigsten Fall der I/O des Raspi gegen> die anderen Leitungen wenn - aufgetrennt ist?
Ah ok. Ja das macht Sinn. Kann ich mir das als Laie so vorstellen, dass
Spannungen "im Kreislauf" vorhanden sind und keinen Ausweg mehr finden?
;o)
Ich habe die Schaltung so aufgebaut da ich 5V zur Verfügung habe und mit
einem NPN (+5V Schalten) ja einen Spannungsabfall über den Transistor
habe und somit keine +5V mehr am R.Pi ankommen.
Hallo,
vielleicht benötigst du das alles nicht. Denn fast alle Powerbanks
schalten beim unterschreiten eines Mindeststromes eh selbst ab. Der
Schwellwert liegt höher als man denkt. Manchmal steht es im Datenblatt.
Veit D. schrieb:> Der Schwellwert liegt höher als man denkt. Manchmal steht es im> Datenblatt.
Hilft nicht bei dem Problem das die sdkarte beim harten abschalten
beschädigt werden kann.
Je nach Distro kann man eine "/etc/rc.local.shutdown" oder
"/etc/rc6.K00scriptname" anlegen und dort ein Script verknüpfen was den
GPIO ansteuert wenn der Pi runterfährt/runtergefahren ist.
Dann wäre im Normalfall nach Einschalten und im Betrieb der GPIO High-Z
und wenn der PI runtergefahren ist auf dem per Script gewählten
Potential.
Als Anregung zu deinen 4 Varianten
Baum schrieb:> Veit D. schrieb:>> Der Schwellwert liegt höher als man denkt. Manchmal steht es im>> Datenblatt.>> Hilft nicht bei dem Problem das die sdkarte beim harten abschalten> beschädigt werden kann.
Das wäre ein anderes Problem. Wenn das im laufenden Betrieb passieren
sollte, also im Leerlauf, dann passt die Powerbank nicht dazu. Das muss
der TO sowieso testen. Ich meinte meine Aussage so, dass er den Raspi
per Software herunterfahren kann und sich dann die Powerbank automatisch
abschaltet, weil der Mindestlaststrom unterschritten wurde. Er also
diese extra Schaltung zum Poerbank abschalten nicht benötigt.
Wenn die SD Karte nach dem Herunterfahren des OS Stromlos geschaltet
wird, sehe ich da kein Problem.
Ich würde aber dringend dazu raten, die +5V Leitung zu schalten, nicht
GND. Zu viele Leute haben sich damit schon ins eigene Knie geschossen.
Thomas G. schrieb:> Je nach Distro kann man eine "/etc/rc.local.shutdown" oder> "/etc/rc6.K00scriptname" anlegen und dort ein Script verknüpfen was den> GPIO ansteuert wenn der Pi runterfährt/runtergefahren ist.
Danke für den Hinweis. Das behalte ich im hinterkopf. Allerdings wird
der R.Pi nur ein größeres C++ Prog. auf der Konsole ausführen und da
kann ich in den eigenen Prog. Shutdown bereits den entsprechenden Pin
schalten.
Info schrieb:> Zum Abgucken: https://shop.pimoroni.de/products/onoff-shim
Danke, da scheint ein Entwickler das gleiche Problem zu haben. Wirklich
interessant. Mich würde interessieren, wie sie das abgeschlossene
Herunterfahren erkannen. In einem Video ist der R.Pi wirklich direkt
nach dem letzten SD Karten Blink aus.
Klaus R. schrieb:> UART TX Pin, RC Glied, Darlington, Relais...fertig. Hatte die gleiche> Frage hier gestellt, läuft gut.
Das soll für alle R.Pi bis auf die R.Pi 3 und neuer funktionieren. auf
den R.Pi 3 soll man den TX Pin nicht mehr so benutzen können.
Stefanus F. schrieb:> Ich würde aber dringend dazu raten, die +5V Leitung zu schalten, nicht> GND.
Ja das habe ich mir bereits zu Herzen genommen. Danke nochmal. Ich werde
auf jeden Fall eine Schaltung für die 5V Leitung aufbauen.
Ich habe mir auch schon eine Lösung überlegt. Ich muss noch die
Schaltung erstellen und poste diese dann hier.
Die Playstation 3 hat einen Timer. Wenn sie nach n Sekunden nicht
herunter gefahren ist, wird hart die Stromversorgung gekappt. Wenn damit
mit klar kommt (z.B. der interne Flash Speicher beim 12GB Modell) hat
halt Pech gehabt.
Och nö. Gerade einen Beitrag geschrieben und abgeschickt und... nichts
wird veröffentlicht. Daher nochmal...
Also, ich habe mich dazu entschieden ein 2 Wechsler 5V Bi-Stabiles
Printrelais RE3 zu verwenden. Dieses soll über Taster S1 auf
"durchschalten" gezogen werden.
Das Relais Schaltet durch und versorgt den Raspberry und einen Arduino
Pro Mini (16Mhz, 5V) mit Strom.
Der Arduino misst die Zeit bis der R.Pi auf Leitung "R.Pi
Start/Shutdown" (Pin 1) mittels HIGH einen Interrupt auslöst.
Der Arduino empfängt RGB Daten auf Leitung "R.Pi Data" und "R.Pi Clock"
(Pin 3/4) und steuert einen NeoPixel Strip (Pin 5).
Der Arduino erhält auf Leitung "R.Pi Start/Shutdown" (Pin 1) einen LOW
Interrupt vom R.Pi und wartet noch Startzeit+z.B. 2 Sekunden bis er über
"PowerOff" (Pin 1) mittels NPN Darlington Transistor T1 das Relais auf
"getrennt zieht".
Ich könnte den Arduino auch in den PowerOff Modus versetzen und mittels
LOW Interrupt wieder aufwecken, allerdings ist das Ansteuern von
NeoPixel (5V Data) über ein RTOS erheblich einfacher als über z.B. einen
R.Pi. Daher nutze ich den Arduino dafür.
Ein weiterer Vorteil mit dem Arduino ist, dass ich die Startzeit messen
kann und so etwas dynamischer auf schnelle/langsamere Speichermedien wie
USB Sticks reagieren kann.
Anregungen?
Ja, woher kommt plötzlich der Arduino. Hast du nicht ausdrücklich nach
einer Lösung nur mit Raspberry-Pi gefragt?
Oder ist das wieder so ein Brösmel-Thread wo man sich die
Problemstellung aus den einzelnen Beiträgen zusammenklauben muss?
Und was hat es mit dem NeoPixel Strip auf sich? Schreib doch mal was du
überhaupt machen willst und was für HW du sowieso schon hast (Arduino,
Raspberry-Pi, ev. noch mehr?)
Arduino schrieb:> Hast du nicht ausdrücklich nach> einer Lösung nur mit Raspberry-Pi gefragt?
nö
Des weiteren macht es keinen Sinn das ges. Projekt zu erklären da
etliche Sensoren, Ein- und Ausgabegeräte, Controller, etc verwendung
finden. Alle 40 Pins des R.Pi sind belegt und daher sollte eigentlich
nur eine RGB Led verwendet werden. Da ich (bis auf den OnOffShim) keine
andere gute Lösung zum Ausschalten gefunden habe, verwende ich nun einen
Arduino und kann somit von RGB Led auf NeoPixel umstellen.
Hast du wohl noch nicht gehabt, dass ein Projekt wächst? Arbeite mal
mehr an Projekten. Selbst mit Pflichtenheft gibt es dynamische
Anpassungen.
Nachtrag:
Die Relais Spulen müssen natürlich gegen Masse mit PNP geschaltet werden
um 5V an den Spulen anzulegen. Ich denke mal, dass es hier kein Problem
ist die Masse zu schalten?
Doch. Macht es. Du gibt's ein Teil deines Lastenheftes an beteiligte
Entwickler und sagst: RasPi only!
Die suchen eifrig nach einer Lösung und einige Tage später kommst du mit
anderen Details um die Ecke, die du vorher schon hattest. Das machst
du einmal, ab dem zweiten Mal nimmt dich keiner mehr ernst. Ich nehme
dich aufgrund deiner Art schon jetzt nicht mehr ernst.
Klaus.
Klaus R. schrieb:> RasPi only!
Bitte zitiere mich. Ich habe weder gesagt es soll R.Pi only sein noch
dass es sich bei meinen Angaben um ein Pflichtenheft handelt. Das war
ein Denkanstoss für "Arduino" der meinte:
> Hast du nicht ausdrücklich nach einer Lösung nur mit Raspberry-Pi gefragt?
was nicht stimmt. Des weiteren ist es kein Kundenprojekt sondern mein
eigenes und es kommen natürlich neue Ideen zur Umsetzung hinzu. Wenn man
also 2 Lösungen hat und eine erledigt ein weiteres Problem (auch wenn es
hier kein Thema ist) dann nutzt man selbstverständlich die bessere
Lösung.
Ein Kommentar war z.B. bzgl. eines PS3 Controllers der ähnlich arbeitet
wie das war ich plane. Wo ist das Problem auch solche Ideen zu
schreiben? Ich habe nichts ausgeschlossen.
Meine ursprüngliche Frage war schlicht weg:
> Kennt jemand noch eine bessere Lösung für das Problem?
Und da waren die hilfreichsten Beiträge von Info und Stefanus F.