Hallo, Ich möchte einen RaspberryPi Zero mit einem LiPo akku betreiben. Für diesen Zweck verwende ich das PowerBoost 1000C Board von Adafruit. Dies bietet einen Enable Pin mit dem es möglich ist mit einem Schalter die Spannungsversorgung zu Aktivieren und zu Deaktivieren. Ich würde nun gern einen Button realiesieren der bei einmaliger betätigung die Spannungsversorgung aktiviert. Die Versorgung soll solange aktiv bleiben bis via Software am Raspberry die Versorgung deaktiviert wird. Desweiteren möchte ich noch gerne die Funktion einbauen das bei längerem drücken des Tasters die Spannungsversorgung unterbrochen wird um ein manuellen reseten zu ermöglichen falls die Software steccken bleibt. Gibt es hierfür Schaltungen oder IC's die meinen Anforderungen entsprechen würde? Markus
Hallo, > Markus W. schrieb: > Ich möchte einen RaspberryPi Zero mit einem LiPo akku betreiben. Für > diesen Zweck verwende ich das PowerBoost 1000C Board von Adafruit. Dies > bietet einen Enable Pin mit dem es möglich ist mit einem Schalter die > Spannungsversorgung zu Aktivieren und zu Deaktivieren. > Ich würde nun gern einen Button realiesieren der bei einmaliger > betätigung die Spannungsversorgung aktiviert. Das nennt man eine "Selbsthalteschatung". So was kann man z.B. mit einem Relais leicht machen. Gib den Begriff einfach bei Google ein (Bildersucher). In Verbindung mit einem Controller kann man auch auf das Relais verzichten. Da würde ich an das Enable-Pin eine Oder-Verknüpfung mit Dioden setzen. Ein Oder-Eingang wird manuel mit Taster geschaltet, das andere dann von einem Port des Controllers (selbst-)gehalten. Den Taster muß man dann also nur solange drücken, bis der Controller gebootet hat und das Enable-Pin auf dem Aktiv-Pegel hält. > Die Versorgung soll solange aktiv bleiben bis via Software > am Raspberry die Versorgung deaktiviert wird. Das deaktivieren kannst du dann auch einfach machen, indem das Aktiv-Signal am Enable-Pin wieder deaktiviert wird (reine Software) > Desweiteren möchte ich noch gerne die Funktion > einbauen das bei längerem drücken des Tasters die Spannungsversorgung > unterbrochen wird um ein manuellen reseten zu ermöglichen falls die > Software steccken bleibt. Und warum nutzt du dafür nicht einfach einen separaten Taster? Dieser könnte auch das Selbsthaltesignal vom Controller unterbrechen. Wenn du einen Taster mit 2 Kontaktsätzen hast, der auch an ein DigIn-Port des Controllers geht, kannst du diesen so programmieren, dass nach einem längerem Drücken des Tasters der Kontroller die Selbsthalteschaltung nach kurzer Zeit weg nimmt (reine Softwarelösung). Evtl. Kann man dazu auch das Tastersignal von nur einem Schaltkontakt verwenden. Alternativ könnte man auch einen Kippschalter tastend nehmen, der eine Mittelstellung hat mit 2 Endlagen. https://www.conrad.de/de/kippschalter-250-vac-3-a-1-x-einausein-apem-5237a-52370003-tastend0tastend-1-st-700165.html > Gibt es hierfür Schaltungen oder IC's die meinen Anforderungen > entsprechen würde? Fertige Schaltungen kenne ich nicht. Lösungen gibt es sicher viele. Gruß Öletronika
Die Fertig-ICs dazu heissen analog switch. Es gibt aber auch Taster die das machen (1x drücken an, nochmal drücken aus..) mir ist nicht recht klar wo der Unterschied in deiner Anforderung zu einem gewöhnlichen Schalter ist.
Dirk D. schrieb: > Die Fertig-ICs dazu heissen analog switch. Es gibt aber auch Taster > die das machen (1x drücken an, nochmal drücken aus..) mir ist nicht > recht klar wo der Unterschied in deiner Anforderung zu einem > gewöhnlichen Schalter ist. Ich möchte zwar beim ersten drücken das die Versorgung aktiv wird jedoch nicht das beim zweiten drücken die Versorgung wieder deaktiviert wird, dies soll nur deaktiviert werden wenn vom Raspberry Pi in meinem Fall ein Signal kommt oder der Taster eine bestimmte Zeit lang gedrückt wird, um ein Reset zu ermöglichen Falls die Software des Raspberry Probleme hat!
U. M. schrieb: > Das nennt man eine "Selbsthalteschatung". > So was kann man z.B. mit einem Relais leicht machen. > Gib den Begriff einfach bei Google ein (Bildersucher). > > In Verbindung mit einem Controller kann man auch auf das Relais > verzichten. > Da würde ich an das Enable-Pin eine Oder-Verknüpfung mit Dioden setzen. > Ein Oder-Eingang wird manuel mit Taster geschaltet, das andere dann von > einem Port des Controllers (selbst-)gehalten. > Den Taster muß man dann also nur solange drücken, bis der Controller > gebootet hat und das Enable-Pin auf dem Aktiv-Pegel hält. Danke das werde ich mir genauer anschauen, dies könnte für meinen Zweck funktionieren. Ich werde versuchen diese Selbsthalteschaltung so zu realisieren, dass das Ausgangssignal zum Halten verwendet wird welche dann über ein externes Signal wieder getrennt werden kann (eventuell mit einem integrator und einem Schmidttrigger für das längere betätigen). Hierbei würde mich noch interessieren wass passiert, wenn das Einschalt und das Ausschalt Signal zugleich anliegt und auch zugleich wieder verschwindet, welchen Zustand hat die Schaltung dann?
Dafür gibt es sehr schöne IC's: http://www.linear.com/parametric/Pushbutton_Controllers Ich habe neulich auch so eine Schaltung aufgebaut. Bei mir war es der LTC2954. Ich habe ihn einfach auf eine SOT32-8 Adapterplatine aufgelötet ein paar Kabel dran und fertig. Läuft ganz prima.
Sven K. schrieb: > Dafür gibt es sehr schöne IC's: > > http://www.linear.com/parametric/Pushbutton_Controllers > > Ich habe neulich auch so eine Schaltung aufgebaut. Bei mir war es der > LTC2954. Ich habe ihn einfach auf eine SOT32-8 Adapterplatine aufgelötet > ein paar Kabel dran und fertig. Läuft ganz prima. Hallo Sven, das ist genau was ich gesucht habe, im Anhang wäre meine Beschaltung laut Datenblatt. Ist dies Richtig dass ich mit dem Raspberry Pi die Spannungsversorgung über den Kill Pin deaktivieren Kann indem ich diesen auf GND ziehe. Laut meinen Berechnungen würde ich eine Drückzeit von 33.67ms zum Einschalten erhalten und eine Zeit von 4.589s zum Ausschalten ist dies ebenfalls korrekt?
Hallo Markus, INT und KILL würde ich nicht zusammenschalten. Du brauchst 2 GPIOs am Raspi. Mit dem INT (GPIO input) bekommst du ein Signal, mit dem du den Raspi herunterfahren kannst und mit dem KILL kannst der Raspi sich praktisch selber abschalten. (Pull-Up an die 3.3V nicht vergessen) Die 680µF sind viel zu viel. Schau mal im Datenblatt unter dem Abschnitt: "Adjustable Power-Down Timer". Mit einem 1.56µF bekommst du ein Timeout von 10s. Ich habe einen 1µF angelötet. Das sind ungefähr 6s. Das ist nur der "Notaus". Der Normalfall sieht so aus: Taster kurz drücken, Raspi startet. Taster nochmal kurz drücken -> Raspi bekommt ein Interrupt, fährt alles runter und zieht den KILL auf GND. Raspi geht aus. Die Software hier kannst du übrigens 1:1 dafür verwenden: https://github.com/pimoroni/clean-shutdown Wenn du nur die 5V schalten musst kannst du übrigens auch das hier nehmen: https://shop.pimoroni.com/products/onoff-shim Das ging bei mir nicht, da ich 12V schalten muss.
Danke für die Antwort, ich habe mir den LTC2950 angeschaut, in dessen Datenblatt (http://cds.linear.com/docs/en/datasheet/295012fd.pdf) gibt es dieses Kapitel nicht. Wenn ich mir auf der Seite 4 das Diagramm anschaue, bekomme ich einen wert um 700nf-800nF für 5s abschaltzeit was ungefähr dem entspricht was du sagst. Auf der Seite 12 hingegen wird für die Formel
angegeben. Mein Problem ist mit dieser Formel komme ich auf den oben verwendeten Wert, jedoch kann die Formel rein von den Einheiten irgendwie nicht stimmen, die konstante scheint einheitslos zu sein (alle anderen Konstanten im Datenblatt haben expliziet eine Einheit angegeben) und ms + ms + F ist keine Zeit. Was ich in diesem Datenblatt ebenfalls nicht finde, ist wie ich den Kondensator am KILL ausgang dimensionieren muss um die Delay Zeit für das Kill Signal einzustellen oder geht dies mit der 2950 version nicht (habe dies in der 2951 gesehen)?
Schau dir den LTC2954 an. Dieser hat das Feature Force-Off, wenn der Taster lange gedrückt gehalten wird: "The LTC2954 provides a failsafe feature that allows the user to turn off system power (via PB) under system fault conditions. For cases when the μP fails to respond to the interrupt signal, the user can force an immediate powerdown by pressing and holding down the pushbutton. The length of time that PB must be held low is given by a fixed internal 64ms delay (tPD,MIN) plus an adjustable powerdown timer delay (tPDT, see Timing Diagrams on page 8). The adjustable delay is set by placing an optional external capacitor on the PDT pin. Use the following equation to calculate the capacitance for the desired delay. CPDT is the PDT external capacitor (μF): CPDT = 1.56 × 10-4 [μF/ms] • (tPDT – 1ms)" (10000ms-1ms)*0.000156µF/ms = 1.56µF für 10s.
Das Force Off kann ich beim LTC2950 auch erzwingen (ist im Anhang für eine Schaltung die den Kill ausgang nicht schalten kann mit einem Kondensator realisiert) da dies nur für den Fall verwendet werden wenn die Software des Raspberry nicht reagiert, und in diesem Fall kann ich auch über die Software keinen geregelten shutdown einleiten! Ich habe mir die benötigten Teile bestellt und werde diese Testen, habe auch alternativ eine analoge schaltung ausgedacht die den anforderungen genügen sollte und werde diese auch testen. Danke fürs erste für die super Hilfe
Hallo, > Markus W. schrieb: > Das Force Off kann ich beim LTC2950 auch erzwingen (ist im Anhang für > eine Schaltung die den Kill ausgang nicht schalten kann mit einem > Kondensator realisiert) da dies nur für den Fall verwendet werden wenn > die Software des Raspberry nicht reagiert, und in diesem Fall kann ich > auch über die Software keinen geregelten shutdown einleiten! Solche Probleme werden in der Regel mit einem Watchdog behoben. Hat der Raspi so was nicht? Ich habe vielfach auch ein separates Monoflop (MF) mit extra langem Timing (z.B. 10s) für solchen Zweck eingesetzt. Das MF wird über ein Differenzierglied mit einem WDI-Impuls getriggert. Wenn dieses ausbleibt, wird automatisch ein Reset ausgelöst. Alternativ kannst du auch die Stromversorgung ausschalten. Gruß Öletronika
Hi Öletronika, die Idee mit dem Watchdog Timer ist nict schlecht in meinem Fall jedoch nicht die beste Möglichkeit da ich Usb Peripherie umd Bluetooh verwende und dann bei Fehlern immer neu gestartet wird ohne das eine Fehlermeldung angezeigt werden kann (gesteuert wird über eine bluetooth app die nicht immer verbunden sein muss)
Markus W. schrieb: > dies soll nur deaktiviert werden wenn vom Raspberry Pi in meinem Fall > ein Signal kommt oder der Taster eine bestimmte Zeit lang gedrückt wird, > um ein Reset zu ermöglichen Falls die Software des Raspberry Probleme > hat! Lässt du auf dem Raspi ein Echtzeit-OS laufen? Unter Linux ist es eher unwahrscheinlich dass sich das System gänzlich aufhängt, selbst wenn deinem Hauptsoftware in Problem kriegt. Gibt einer separaten Software, die nur den Resetauslöst, einfach maximale Priorität (mehr als die deiner Hauptsoftware).
Hallo, > Markus W. schrieb: > und dann bei Fehlern immer neu gestartet wird ohne das eine > Fehlermeldung angezeigt werden kann verstehe ich nicht ganz. Wenn noch Fehlermeldungen kommen, kann die Software nicht komplett abgestützt sein. Dann muß auch der Watchdog noch nicht ansprechen und man kann noch softwaremäßig was machen. Siehe auch vorhergehendes Posting. Gruß Öletronika
:
Bearbeitet durch User
Auf dem Raspberry läuft ein modifiziertes raspian auf dem alles entfernt wurde was nicht gebraucht wird und eine leicht veränderte Startreihenfolge der verwendeten Dienste. Der power off über den Taster ist nur eine Notfalllösung und soll vom Benutzer nur verwendet werden, wenn die Software nicht alle Fehler abfängt oder dort noch Fehler enthalten sind. Der Benutzer selbst hat keinen Zugriff auf das System um Pobleme selbst zu lösen und hin und wieder kann es vorkommen dass zb die Bluetoothverbindung Probleme hat. zb wenn die Verbindung getrennt wurde und neu aufgebaut wird dort sind im Treiber Fehler die dem Adapter hin und wieder die Verbindung nicht richtig beendet und eine neu verbindung verhindert (die ble treiber sind nicht so ausgereift habe ich manchmal das gefühl) und dann muss der Benutzer die Möglichkeit haben einen Hardreset zu machen. Dann funktioniert der WD nicht da es ja auch legitim ist wenn kein Gerät verbunden ist und der Adapter keine Fehlermeldung bringt da das Bluetooth Gerät nicht angezeigt wird und somit nicht nocheinmal verbunden werden kann bei einer fehlerhaften noch gültigen verbindung.
Sven K. schrieb: > INT und KILL würde ich nicht zusammenschalten. Du brauchst 2 GPIOs am > Raspi. Mit dem INT (GPIO input) bekommst du ein Signal, mit dem du den > Raspi herunterfahren kannst und mit dem KILL kannst der Raspi sich > praktisch selber abschalten. (Pull-Up an die 3.3V nicht vergessen) Danke Sven für den tollen Hinweis auf den LTC2954, der ideal zu sein scheint. Verstehe ich Dich richtig, dass der Pull-Up von KILL nach 3,3V dazu dient, das folgende Problem zu umgehen (s. Seite 9 unten rechts des Datenblatts): "The KILL pin must be pulled high within 512ms of the EN pin going high. Failure to do so results in the EN pin going low 512ms after it went high." Man schafft es ja wohl kaum, Raspbian innerhalb 512ms soweit gestartet zu haben, dass man per GPIO den KILL pin hochziehen kann. Einen Nachteil sehe ich daran, dass dann eben nicht der Raspberry Pi den KILL pin hochzieht, sondern eben die externe Spannungsversorgung. Funktioniert die Abschaltung der Versorgungsspannung dann überhaupt noch? Laut Datenblatt (S. 9 untern "Turn Off"): "The uP would then perform power-down and housekeeping tasks and assert KILL low when done. This in turn releases the enable output, thus shutting off system power." gehe ich davon aus, dass bei KILL=low sofort der Spannungsregler über den EN pin ausgeschaltet wird. Bekomme ich das überhaupt hin, dies vom Betriebssystem "spät genug" zu steuern? Mit anderen Worten müsste man es schaffen, eine Art Verzögerung auf den KILL pin zu geben. Einerseits um beim Einschalten dem Raspberry Pi genug Zeit (und nicht nur 512 ms) zu geben, um den KILL pin selbst hochzuziehen, andererseits dazu, dem Raspberry Pi noch eine "Gnadenfrist" mit Strom zu gewähren, nachdem dieser den KILL pin im Rahmen des Herunterfahrens herunterzieht. Hier fehlt es mir an Ansatzpunkten. > Die Software hier kannst du übrigens 1:1 dafür verwenden: > https://github.com/pimoroni/clean-shutdown Danke auch für den Hinweis auf diese Software. Schließlich noch eine ganz andere Frage. Wieso hat der P-Kanal-MOSFET der in "Figure 7" auf S. 13 des Datenblatts am EN pin des LTC2954-2 hängt bitteschön einen Gatewiderstand von immerhin 100k? Ist das nicht für sämtlich erdenkliche P-Kanal-MOSFETS deutlich zu hoch? Geplant hatte ich, meinen Standard P-Kanal-MOSFET, den IRF7416 einzusetzen (hat ab -4,5V einen RDSon von 0,035R bei ID von 2,8A, sollte also an 5V sicher ungefähr 2A durchschalten können). Normalerweise nimmt man ja eher so 10R-30R als Gatewiderstand.
Alex G. schrieb: > Unter Linux ist es eher unwahrscheinlich dass sich das System gänzlich > aufhängt, selbst wenn deinem Hauptsoftware in Problem kriegt. Muhaha! In der Theorie vielleicht. Ich hab erstmal einen Resettaster auf den Pin gesteckt, nachdem mir mehrmals bei einem update+upgrade das System eingefroren ist. Also so richtig eingefroren, mit stehender Maus und nix geht mehr. Letztens hab ich ein paar der Spiele aus dem Repo probiert, ok manche scheinen die Grafik zu überfordern - aber warum sind die dann im Repo, prüft das keiner? Einige haben es auch geschafft, das System komplett einzufrieren, z.B. dieser Flugsimulator.
Jens Fischer schrieb: > Einen Nachteil sehe ich daran, dass dann eben nicht der Raspberry Pi den > KILL pin hochzieht, sondern eben die externe Spannungsversorgung. > Funktioniert die Abschaltung der Versorgungsspannung dann überhaupt > noch? Das ist keine externe Versorgung. Man muss die 3.3V des Raspberry Pi verwenden. Das ist ja nichts anderes als der interne Pull-Up des Raspberry Pi nur das er eben dauerhaft angeschaltet ist. Jens Fischer schrieb: > Bekomme ich das überhaupt hin, dies > vom Betriebssystem "spät genug" zu steuern? Das ist kein Problem. Das ist in dem clean-shutdown script drinne. Da wird ein systemd shutdown script verwendet. Das wird erst aufgerufen, wenn alles heruntergefahren ist. Darum kümmert sich der systemd. Jens Fischer schrieb: > einen Gatewiderstand von immerhin 100k? Ist das nicht > für sämtlich erdenkliche P-Kanal-MOSFETS deutlich zu hoch? Nein ist es nicht. FETs sind Spannungsgesteuert. Beim Einschalten muss die parasitäre Gate-Kapazität aufgeladen werden. Mit einem hohen Serienwiderstand geht das entsprechend langsamer. Die Flanken werden nicht so steil. Das ist es was man beim einschalten einer Power-Line auch möchten. Zweitens reagieren manche FETs empfindlich auf eine zu hohe Vgs. Dann sind Z-Dioden eingebaut, die die Vgs begrenzen. Einen Gate-Widerstand von 10 Ohm braucht man nur, wenn sehr schnell geschaltet werden muss.
Vielen Dank für die weiteren Hinweise, habe da mal folgendes "gemalt":
Du kannst (musst aber nicht) den Regler U1 auch hinter Q1 platzieren. Dann läuft der LTC2954 mit 12V und der Q1 könnte kleiner ausfallen. Und es spart nochmal ein wenig Strom, da U1 im ausgeschalteten Zustand auch mit abgeschaltet wird.
Ich hätte aber gerne eine Anzeige, die mir signalisiert, dass der Raspberry Pi heruntergefahren ist (also KILL und deshalb EN low ist) und ich auch das Netzteil, das die 12V liefert ausschalten kann (der Stromverbrauch der Schaltung ist eigentlich irrelevant, da sitzt sowieso ein fettes 12V-Netzteil davor und Strom wird noch ganz woander verbraten). IRF7416 nehme ich in der Regel, weil ich die immer hier habe (mein Standard-P-Kanal-MOSFET mit ein bisschen Bumms). Wenn man einen Regler mit Shutdown Eingang und nicht einen 7805-Ersatz wie hier U1 nehmen würde, dann könnte man den LTC2954-1 nehmen und sich Q1 ganz sparen). Zu dieser Anzeige dient die etwas krude Schaltung mit dem LM393 (U3), der D2 leuchten lässt, wenn die Spannung Richtung Raspberry Pi (Q2, Q3, R6 und R7 sind im Übrigen die vom Hersteller empfohlene Schutzschaltung bei Speisung über den GPIO-Header) kleiner ist als 5V. Bei näherem Nachdenken, bin ich mir aber sowieso nicht mehr sicher ob das so funktionieren kann (es fällt sicher ein wenig Spannung über Q1 und Q3 ab). Wahrscheinlich nehme ich aber anstatt D1 und D2 zur Anzeige eine Zweifarb-LED, deren Farbe sich durch umpolen ändert (eine Polarität wenn 12V aber kein 5V anliegt, andere Polarität wenn 12V und 5V anliegt). Dann muss ich die Schaltung sowieso ändern und kann U1 wie vorgeschlagen verschieben.
Ich habe die Schaltung wie im Anhang ersichtlich aufgebaut! Mein Problem ist nun, wenn ich das Wire KILL mit dem Raspberry verbinde startet die Versorgung kurz, der Raspberry beginnt zu booten und nach 10 - 11 Sekunden wird die Stromversorgung wieder getrennt, wenn ich den KILL nicht zum raspberry wire und ihn offen lasse funktioniert die Schaltung mit dem Taster ohne Probleme! Kann mir jemand weiterhelfen ich habe auch mit dem Multimeter gemessen der Raspberry hat den PIN von start an auf HIGH. Wenn ich die offene Leitung messe, sind immer 3,26V zu messen jedoch scheint die Spannung einmal kurz einzubrechen könnte dies das Problem erklären? Dann sollte ein Kondensator eigentlich abhilfe schaffen können oder?
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.