Forum: Mikrocontroller und Digitale Elektronik Verzögerung mittels Tiefpass


von Guido R. (gr-thunderstorm)


Angehängte Dateien:

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?

von Stefan F. (Gast)


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?

von Stefan F. (Gast)


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 /

von Guido R. (gr-thunderstorm)


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.

von Noch einer (Gast)


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.

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.