Verzögerung mittels Tiefpass

OP #4370163
Lesenswert?
• ▲
▼
Hallo!

Vorab muss ich sagen, dass ich ein ziemlicher Laie in elektrotechnischen 
Angelegenheiten bin. Ich möchte aber gern mehr darüber lernen. :-)

Ich habe ein kleines Bastelprojekt für mein Raspberry Pi. Ich betreibe 
es mittels eines ATX-Netzteils, welches ich mittels eines solchen 
Schaltfolgeconverters einschalte:
https://www.conrad.de/de/schaltfolgekonverter-35-v-15-a-1-x-ausein-rastend-1-st-701240.html?sc.queryFromSuggest=true

Das funktioniert auch soweit super, allerdings kann sich das Raspi damit 
nicht selbst ausschalten. Ich möchte also die beiden grünen Kabel 
mittels eines der GPIO-Pins und einem Transistor kurzschließen, damit 
das Netzteil ausgeschaltet wird.

Es gibt eine spezielle Datei, welche ausgeführt wird, wenn Linux 
herunterfährt. Hier möchte ich den Code für den GPIO-Pin parken.
Das Problem:
Wenn an dieser Stelle das System vom Strom getrennt wird, kann nach 
Rücksprache mit einem Linuxexperten das Dateisystem beschädigt werden!

Ich benötige also eine Verzögerungsschaltung, die dafür sorgt, dass das 
System tatsächlich erst einige Sekunden später ausgeschaltet wird.


Hierzu habe ich mir eine kleine Schaltung zusammengebastelt, welche 
zumindest in LTSpice fast wie gewünscht funktioniert.
An V1 liegen normalerweise konstant 5V an. Da mir das simulieren eines 
Thyristors nicht so recht gelingen will, habe ich das tatsächliche 
Verhalten der Schaltung mit einem Spannungsverlauf emuliert. Ziel ist 
es, dass V(TPos) um 4 oder mehr Sekunden nach V(IN) auf 5V schaltet. 
Wenn dies geschieht, wird das Netzteil wie gesagt abgeschaltet und auch 
die 5V Spannungsquelle schaltet ab.
Hierdurch soll der P-Kanal-Transistor auf leitend geschaltet werden und 
den Kondensator entladen. Aber aus irgendeinem Grund entlädt sich der 
Kondensator nur während der negativen Spannungsflanke von V1 (und auch 
dann nicht komplett, abhängig vom gewählten Endladungs-Transistor und 
dem Ladewiderstand). Wenn ich den Widerstand so hoch ansetze wie jetzt, 
entlädt sich der Kondensator nicht einmal mehr ausreichend, um den 
Schmitt-Trigger wieder umzuschalten. Ich könnte mir vorstellen, dass bei 
einem zu schnellen wiedereinschalten des Raspi dadurch Probleme 
auftreten könnten.

Kann mir jemand meinen Denkfehler erklären?
Angehängte Dateien:
Gast #4370522
Lesenswert?
• ▲
▼
Bei einem normalen Linux Rechner schaltet der Kernel das Netzteil aus.

Du kannst das auch in einem Script machen, wenn du vorher sicher 
stellst, dass kein anderer Prozess neue Schreibzugriffe macht.

Am Einfachsten geht das, indem du alle verzichtbaren Filesysteme 
unmountest und die übrigen read-only mountest.

mount -o remount,ro /

Dein Ansatz mit dem Timer ist fehlerträchtig. Was ist, wenn der Rechner 
zum runterfahren mal ungewöhnlich lange braucht?
Gast #4370530
Lesenswert?
• ▲
▼
Noch ein Nachtrag dazu: Deine nächste Frage wird vermutlich sein, dass 
der mount Befehl nicht klappt, weil noch irgendwelche Programme Files 
offen haben.

Die findest du mit folgendem Befehl:

fuser -v -m /
OP #4370647
Lesenswert?
• ▲
▼
Stefan U. schrieb:
> Bei einem normalen Linux Rechner schaltet der Kernel das Netzteil aus.
>
> Du kannst das auch in einem Script machen, wenn du vorher sicher
> stellst, dass kein anderer Prozess neue Schreibzugriffe macht.
>
> Am Einfachsten geht das, indem du alle verzichtbaren Filesysteme
> unmountest und die übrigen read-only mountest.
>
> mount -o remount,ro /
>
> Dein Ansatz mit dem Timer ist fehlerträchtig. Was ist, wenn der Rechner
> zum runterfahren mal ungewöhnlich lange braucht?

Leider kann ich das derzeit nicht testen, da ich im Urlaub bin. Das 
Problem ist jedoch, dass ich zu einem späteren Zeitpunkt die GPIO-Pins 
anscheinend nicht mehr ansteuern kann, da diese dann deaktiviert werden 
und nicht mehr zur Verfügung stehen. Etwa 2s vor dem tatsächlichen 
Erlöschen sämtlicher Netzwerk und Schreib/Lese-LEDs auf dem PCB schalten 
sich alle zuvor auf "1" gesetzten GPIO-Pins wieder in den 
Ursprungszustand.
Das heißt, ich benötige eine Lösung, die definitiv (oder mit ziemlicher 
Sicherheit) dann das System abschaltet, wenn der Prozessor das 
HALT-Signal bekommt.
Gast #4371062
Lesenswert?
• ▲
▼
Wenn du den Kondensator wieder entladen willst - warum nicht einfach mit 
dem Digitalsignal vom Ausgang des Komparators? Am besten noch mal 
Tiefpass und Komparator, damit du die Impulslänge für den 
Schaltfolgekonverter getrennt einstellen kannst.

P.S. Abschalten soll das Netzteil 5 Sekunden nachdem der GPIO hochohmig 
wird. Da braucht es wohl 2 Elkos. Der GPIO lädt einen Kondensator, der 
den Strom für den Zeitgeber-Kondensator liefert, nachdem der GPIO 
hochohmig wird.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.