Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi starten bei kontinuierliche Stromversorgen


von Hannes (Gast)


Lesenswert?

Hallo liebe Community,

ich hoffe das jemand mir helfen kann, ich weiß leider überhaupt nicht 
weiter. Ich habe mein Rpi über ein Modul laufen welches bei Abbruch der 
Stromversorgen auf Akkubetrieb umschaltet. Über ein Interrupt welches 
durch das wegfallen der 5V Spannungsquelle ausgelöst wird, wird der RPI 
heruntergefahren. Jetzt ist mein Problem, durch das wieder hinzu 
schalten der 5V Spannungsquelle startet sich der RPI nicht, da er ja 
kontinuierlich mit Strom über den Alku versorgt wird wenn das Netzteil 
nicht angeschlossen ist. Suche dafür eine möglichst einfache Lösung.

von Hannes (Gast)


Lesenswert?

Nach etwas überlegung denke ich, das ich eine Schaltung benötige über 
der ich die Stromzufuhr zum Rpi schalten kann wenn 5V am Modul anliegen 
dann soll der RPi mit Strom versorgt werden, wenn kein Strom anliegt 
überprüft der RPi mehrmals ob irg. wann wieder Strom vorhanden ist wenn 
ja macht er nix. Wenn nein fährt er sich herunter. Vor dem 
herunterfahren könnte ich von einem GPiO Port ein High senden, dieses 
High sollte nach einer gewissen Zeit sagen wir mal 20 Sekunden, die 
Stromzufuhr komplett kappen, Rpi sollte in der Zeit heruntergefahren 
sein. Aber wenn wieder Strom am 5V Eingang anliegen soll wiefer 
durchgeshaltet werden so das der Rpi wieder hochfahren kann.

von Hp M. (nachtmix)


Lesenswert?

Hannes schrieb:
> ber ein Interrupt welches
> durch das wegfallen der 5V Spannungsquelle ausgelöst wird, wird der RPI
> heruntergefahren.

Ist nicht allzu schwer, aber zeig erst mal, wie die Zusammenschaltung 
von Netzteil und Notstrom derzeit gelöst ist.
Gibt es einen elektronisch betätigbaren Schalter, mit dem du die 
Akkuversorgung abschalten kannst?


P.S.:
Hannes schrieb:
> ach einer gewissen Zeit sagen wir mal 20 Sekunden, die
> Stromzufuhr komplett kappen, Rpi sollte in der Zeit heruntergefahren
> sein.

Eine Zeitsteuerung ist schlecht. Besser der RPi entscheidet selbst, wann 
er sich ausschaltet.

: Bearbeitet durch User
von Frank (Gast)


Lesenswert?

Hp M. schrieb:
> Eine Zeitsteuerung ist schlecht. Besser der RPi entscheidet selbst, wann
> er sich ausschaltet.

Ja, finde ich auch. Könnte man das nicht als letztes Skript im Run Level 
machen?
Hier schreiben sie was zu UPS: 
http://www.techrepublic.com/article/customizing-the-linux-bootup-and-shutdown-processes/

Was ich sauber fände:
Man macht sich ein power good Signal über 2 Schmitt-Trigger ( je eins 
für Vbat und Vcc) und verUNDet sie.
Mit dem Signal wird ein FlipFlop gesetzt der die  Versorgungsspannung am 
Raspi einschaltet.
Wenn der Interrupt von deiner Schaltung kommt macht der Raspi ein 
Shutdown und als letzte Aktion resettet er das FlipFlop, was ihm als 
Folge so lange den Saft abgedreht bis deine power good Signale beide 
wieder true sind.

von Hannes (Gast)


Angehängte Dateien:

Lesenswert?

Hier mal mein Schema, sobald VS1 (Netzteil) getrennt wird, erfolgt die 
Spannungsversorgung über den Akku. Dieser Interrupt bekommt der RPi mit 
und überprüft nach ca 5 Sekunden ob die Spannung wieder da ist, ist dem 
nicht so dann fährt der Rpi herunter. Genau hier soll jetzt die 
Schaltung xy einsetzen. Denn der Rpi soll ein kurzes High an Schaltung 
xy senden, und diese soll dann nach einer bestimmten Zeitspanne als 
Beispiel 20 Sekunden, die Stromversorgung zum RPi komplett trennen. So 
lange ich hier auf Rat warte, lese ich mal wie man ein Schmitt-Trigger 
und ein FlipFlop genau aufbaut, gelesen habe ich davon schon. Aber 
getestet leider noch nicht. Bin da noch ein Anfänger und hoffe ihr steht 
mir mit Rat und Tat zur Seite. Danke euch!

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

Batterie und Netzteil parallel? Ladetechnisch eher ungünstig.
Bei meinem Bananapi habe ich folgende Varinate gewählt:
Netzteil über Diode an Ub, Batterie über Mosfet an Ub. Der Mosfet wird 
über die 3.3V vom Ba-Pi gesteuert. Spannung vom Netzteil wird über einen 
Portpin überwacht. Fällt der Strom aus fährt der Ba-Pi runter und 
schaltet sich ab, wodurch auch die 3.3V für den Mosfet wegfallen und 
damit die Spannungsversorung komplett getrennt ist.

Sascha

von Hannes (Gast)


Lesenswert?

Macht euch bitte deswegen keine Sorgen dies wird über ein Modul zum 
Laden von Li-ion Akkus geregelt.

von Hannes (Gast)


Lesenswert?

Ist es möglich das über ein Schmitt-Trigger zu lösen? 5V dauerhaft 
durchschalten dieses aber unterbrechen wenn ein kurzes High vom RPi GPIo 
Port kommt, diese Unterbrechung über ein Elko um 20 Sekunden 
Zeitverzögert.

von Sascha W. (sascha-w)


Lesenswert?

Hannes schrieb:
> Ist es möglich das über ein Schmitt-Trigger zu lösen? 5V dauerhaft
> durchschalten dieses aber unterbrechen wenn ein kurzes High vom RPi GPIo
> Port kommt, diese Unterbrechung über ein Elko um 20 Sekunden
> Zeitverzögert.

machen kann mann alles, was du suchst währe hier eher ein Monoflop für 
die Zeitverzögerung. Aber warum willst du das so kompliziert machen?
Man kann allein für die Stromversorung natürlich mehr Bauteile 
verarbeiten als auf dem Raspi drauf sind - wenn man will.

Sascha

von Hannes (Gast)


Lesenswert?

Könntest du evtl. deine Lösung mal als Schaltung Posten? Bin mir irg. 
wie sehr unsicher wie ich da jetzt weiter vorgehen sollte.

von Hannes (Gast)


Lesenswert?

Aber wenn ich das richtig verstehe wird bei dir der Strom sofort 
unterbrochen sobald der GPIO auf Low ist oder? Da bin ich mir halt nicht 
sicher ist der GPIO nicht schon vor dem kompletten "Shutdown" auf Low? 
Und es wird dadurch das Herunterfahren unterbrochen? Und habe leider ken 
Mosfet hier, geht denn dafür auch ein Transistor?

von Hannes (Gast)


Lesenswert?

Sorry für die 3 Posts hintereinander, bin noch auf eine Idee gekommen. 
Könnte man nicht beim einschalten aus den Dauerstrom des Netzteils einen 
kurzen Impuls machen, und diesen auf den Reset des RPi schalten das es 
sich hochfährt?

von Jobst Q. (joquis)


Lesenswert?

Wenn du den Akku nur zum Runterfahren brauchst, wäre ein Gold-CAP Elko 
vielleicht die bessere Wahl. Er wäre danach einfach leer und wenn die 
Netzspannung wiederkommt, startet der Raspi normal.

von Sascha W. (sascha-w)


Angehängte Dateien:

Lesenswert?

Hannes schrieb:
> Könntest du evtl. deine Lösung mal als Schaltung Posten? Bin mir irg.
> wie sehr unsicher wie ich da jetzt weiter vorgehen sollte.

Also in meiner Schaltung schalte ich auf der 12V Seite um, da meine 
Batterie 12V hat. Danach kommt noch ein Schaltregler (im Bild nicht mit 
dargestellt). Deine Batterie dürfte aber ja auch nicht 5V haben.
Die 3.3V vom PI sorgen dafür das Q2 und Q1 während des Betriebs die 
Batteriespannung freigeben, Strom fließt aber keiner da die Spannung vom 
Netzteil etwas höher ist (muss den Akku ja ebenfalls laden). Fällt die 
Netzversorgung aus (wird mit Q3 an einen GPIO gemeldet) fließt der Strom 
aus dem Akku. Die PI wird nun nach ein paar Minuten (wenn der Strom bis 
dahin nicht wieder da ist) heruntergefahren. Da er sich dann abschaltet 
kommen auch keine 3.3V mehr raus und die Batteriespannung wird mit Q1 
abgetrennt und der PI ist somit stromlos. Liegt wieder Netzspannung an 
startet er ganz normal.

> Sorry für die 3 Posts hintereinander, bin noch auf eine Idee gekommen.
> Könnte man nicht beim einschalten aus den Dauerstrom des Netzteils einen
> kurzen Impuls machen, und diesen auf den Reset des RPi schalten das es
> sich hochfährt?
das würde bedeuten das er auch einen Reset bekommt wenn er zuvor noch 
nicht runtergefahren ist - sinnvoll?


@Jobst Quis
Der PI mag ja nicht viel verbrauchen - für eine Pufferung (10s für'n 
Shutdown?) mit Goldcap aber auf jeden Fall zuviel.


Sascha

von Hannes (Gast)


Lesenswert?

Wäre es dir möglich mir vielleicht bitte eine einfache Schaltung zu 
entwerfen wenn die Vcc vom Netzteil max 5,36 V sind.

Ich komm einfach nicht weiter als Anfänger.

von Jobst Q. (joquis)


Lesenswert?

Sascha W. schrieb:
> Der PI mag ja nicht viel verbrauchen - für eine Pufferung (10s für'n
> Shutdown?) mit Goldcap aber auf jeden Fall zuviel.

Die richtige Größe muss man eben berechnen oder ausprobieren. Bezahlbar 
ist es allemal (1F 5,5V = 1.60 bei Reichelt). Der Raspi A+ braucht für 
sich zwischen 85 und 150mA. Mit Nano-WLAN-Stick nochmal 100mA mehr, aber 
nur kurz, da er bald abgeschaltet wird.

1 Farad sind 1000 mAs/V. Mit 2 Farädern könnte man schon etwa 10 Sek 
lang 200 mA entnehmen, bevor die Spannung um 1 Volt gesunken ist. Wer 
sicher gehen will, kann noch ein paar Faräder mehr nehmen.

von Sebastian (Gast)


Lesenswert?

Hallo,

kann man nicht den Prozessor nicht mit WakeOnLan starten?

Alternativ, Watchdog mit langer Zeit, so dass er automatisch wieder hoch 
fährt wenn er crashed ?

Grüße

Sebastian

von Hannes (Gast)


Lesenswert?

Sascha W. schrieb:
> Hannes schrieb:
> Könntest du evtl. deine Lösung mal als Schaltung Posten? Bin mir irg.
> wie sehr unsicher wie ich da jetzt weiter vorgehen sollte.
>
> Also in meiner Schaltung schalte ich auf der 12V Seite um, da meine
> Batterie 12V hat. Danach kommt noch ein Schaltregler (im Bild nicht mit
> dargestellt). Deine Batterie dürfte aber ja auch nicht 5V haben.
> Die 3.3V vom PI sorgen dafür das Q2 und Q1 während des Betriebs die
> Batteriespannung freigeben, Strom fließt aber keiner da die Spannung vom
> Netzteil etwas höher ist (muss den Akku ja ebenfalls laden). Fällt die
> Netzversorgung aus (wird mit Q3 an einen GPIO gemeldet) fließt der Strom
> aus dem Akku. Die PI wird nun nach ein paar Minuten (wenn der Strom bis
> dahin nicht wieder da ist) heruntergefahren. Da er sich dann abschaltet
> kommen auch keine 3.3V mehr raus und die Batteriespannung wird mit Q1
> abgetrennt und der PI ist somit stromlos. Liegt wieder Netzspannung an
> startet er ganz normal.
>
> Sorry für die 3 Posts hintereinander, bin noch auf eine Idee gekommen.
> Könnte man nicht beim einschalten aus den Dauerstrom des Netzteils einen
> kurzen Impuls machen, und diesen auf den Reset des RPi schalten das es
> sich hochfährt?
>
> das würde bedeuten das er auch einen Reset bekommt wenn er zuvor noch
> nicht runtergefahren ist - sinnvoll?
>
> @Jobst Quis
> Der PI mag ja nicht viel verbrauchen - für eine Pufferung (10s für'n
> Shutdown?) mit Goldcap aber auf jeden Fall zuviel.
>
> Sascha


Hey Sascha,

also ich habe mal den GPIO über die exports auf High geschaltet und den 
Rpi heruntergefahren. Die Act Led ist noch am blinken bevor diese 
komplett erlischt ist die Spannung vom GPIO 22 schon abgefallen, also 
auch keine Lösung über Transistor möglich oder?

Hatte mir nämlich noch gedacht die Spannungsquelle über ein Transistor 
zu schalten es muss entweder Spannung vom Netzteil an der Basis anliegen 
oder Spannung vom GPIO wenn beides weg ist kein Strom für den Rpi.

von Hannes (Gast)


Lesenswert?

Sebastian schrieb:
> Hallo,
>
> kann man nicht den Prozessor nicht mit WakeOnLan starten?
>
> Alternativ, Watchdog mit langer Zeit, so dass er automatisch wieder hoch
> fährt wenn er crashed ?
>
> Grüße
>
> Sebastian

Er soll nur wieder hochfahren wenn er auch wieder Strom über das 
Netzteil erhält und nicht über den Akku.

von Sascha W. (sascha-w)


Lesenswert?

Hannes schrieb:
> Hey Sascha,
>
> also ich habe mal den GPIO über die exports auf High geschaltet und den
> Rpi heruntergefahren. Die Act Led ist noch am blinken bevor diese
> komplett erlischt ist die Spannung vom GPIO 22 schon abgefallen, also
> auch keine Lösung über Transistor möglich oder?
du brauchst für das schalten der Batterie auch einen GPIO nimm einfach 
die 3.3V von der Stiftleiste, die gehen erst weg der er sich 
ausschaltet.

Sascha

von Hannes (Gast)


Lesenswert?

Sascha W. schrieb:
> Hannes schrieb:
> Hey Sascha,
> also ich habe mal den GPIO über die exports auf High geschaltet und den
> Rpi heruntergefahren. Die Act Led ist noch am blinken bevor diese
> komplett erlischt ist die Spannung vom GPIO 22 schon abgefallen, also
> auch keine Lösung über Transistor möglich oder?
>
> du brauchst für das schalten der Batterie auch einen GPIO nimm einfach
> die 3.3V von der Stiftleiste, die gehen erst weg der er sich
> ausschaltet.
>
> Sascha

Die gehen garnicht weg da er ja noch mit Strom von der Batterie bekommt, 
habs gerade gemessen.

von Sascha W. (sascha-w)


Lesenswert?

Ok, dann schaltet der Raspi offenbar nicht alle Spannungen ab :-(  Mein 
BananaPi an dem ich die Schaltung einsetze tut das hingegen schon.
Wie sieht es da mit den 5V an den USB-Anschlüssen aus?

Sascha

von Hannes (Gast)


Lesenswert?

Sascha W. schrieb:
> Ok, dann schaltet der Raspi offenbar nicht alle Spannungen ab :-(
> Mein BananaPi an dem ich die Schaltung einsetze tut das hingegen schon.
> Wie sieht es da mit den 5V an den USB-Anschlüssen aus?
>
> Sascha

Auch Spannung drauf nach dem ausschalten.

von Sascha W. (sascha-w)


Lesenswert?

Hab mit jetzt mal die Schaltpläne gezogen da wundert mich nix.

Kannst mal noch am UART-TX testen an sonsten bleit doch nur irgendeine 
Zeitverzögerung. Ist halt Mist das Einschalten und Reset eine Leitung 
zusammen sind so das es auch schwierig ist das zum automatischen Starten 
zu verwenden ohne Gefahr zu laufen mal ein Reset auszulösen.

Es gibt ja Raspi-USV's vielleicht kannst du da einen Schaltplan finden.

Sascha

von Hannes (Gast)


Lesenswert?

Leider gleiches Ergebnis bei den von dir benannten Pin. Komm leider mit 
dem Problem überhaupt nicht zurecht, gerade mich noch mit Transistoren 
beschäftigt aber ich hab dae gefühl das ich sie noch nicht richtig 
verstanden habe.

von Frank (Gast)


Angehängte Dateien:

Lesenswert?

Ich hätte es vom Prinzip ungefähr so wie im Anhang gemacht (wenn es 
diskret aufgebaut sein soll und davon ausgehend das die Batterie 12V 
hat).

Startbedingung: Batterie ist angeschlossen, aber Netzteil ist noch aus.
Dann ist VBatOK true, aber VccOK false.
Dadurch ist PowerGood und Give_Power_To_Raspi false.
Sobald Vcc eingeschaltet wird und einen gültigen Wert erreicht wird 
VccOK true und dadurch auch PowerGood und Give_Power_To_Raspi.
An Give_Power_To_Raspi müsste ein Logic Level Mosfet der dann den Raspi 
einschaltet.
Sobald der hochgefahren ist, liest er zyklisch PowerFailure ein.
Das ist noch gesetzt da Vcc am Anfang nicht anlag.
Das Resettet der Raspi jetz einmal über Quit_Error.
Im Normalfall würde jetzt kein Fehler mehr anstehen und der Raspi 
arbeitet normal.
Sollte eine erneute Unterschreitung einer der Spannungen auftreten, wird 
PowerGood wieder false und PowerFailure true.
Dies liest der Raspi ja wie gesagt zyklisch ein und fährt sich bei 
PowerFailure true herunter. Nachdem er wirklich down ist (letztes 
Script), setzt er Raspi_Is_Down true und schaltet somit seinen eigenen 
Logic Level Mosfet ab --> Raspi ist aus und bleibt es auch so lange bis 
Power_Good wieder true wird. (Das ganze Startet von vorne)

A4 und somit Power_Failure kann man sich theoretisch sparen wenn man 
Power_Good schnell genug einliest und somit jeden Fehler detektiert.

Die deutlich einfachere und wahrscheinlich kleiner Version wäre, wenn 
man beide Spannungen zyklisch über einen kleinen Tiny oder einen ADC 
einliest und dann entweder über Portpin oder UART die Spannugen pollt 
oder halt per Interrupt eine gefeuert bekommt.

von Jobst Q. (joquis)


Lesenswert?

Über den UART-TX (4. Pin von oben rechts) kann ich beim Raspi A+ gut 
erkennen, ob das Runterfahren beendet ist. Die Spannung fällt dann von 
3,27V auf ca 0,3V ab.

Eine andere Möglichkeit wäre der Strombedarf als Indikator. Der A+ 
braucht im Ruhezustand zusammen mit einem Nano-WLAN-Stick 28 mA, ohne 
den Stick 25mA. Während des Herunterfahrens sind es 150-250mA.

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
Noch kein Account? Hier anmelden.