Ausgangslage ist folgende: Ich habe, auf Basis des ESP32, einen mp3-Player, den man über RFID-Karten steuern kann. Versorgt wird der ESP32 (und die ganze Peripherie) über USB und/oder LiPo bzw. FePo-Akku. D.h. es gibt auch einen Laderegler (TP5000), aber das soll hier nicht der Diskussionspunkt sein. Wenn ich unterstelle, dass ich die Akkus bis höchstens 3 V entladen will und USB 5 V hat, dann liegt meine Eingangsspannung also, je nach Betriebsmodus, zwischen 3 und 5 V (Vin). Da der ESP32 3.3 V braucht ist angedacht, dass ein Boost/Buck-Converter verwendet wird (z.B. TPS6302x von TI). Vielleicht wird's auch nur ein LDO, aber das schränkt die Flexibilität etwas ein. Auch ein CH340C ist vorhanden, um den ESP32 via USB zu programmieren. Es gibt auch einen Port-Expander, der die verschiedenen Buttons ausliest und Interrupts an den ESP32 wirft. Für alle Fälle gibt es auch einen Reset-Button für den Fall, dass der ESP32 nicht mehr reagiert. Ok. Nun hätte ich gerne einen Push-Button-Controller, so dass man das Ganze über einen Button aus- und anschalten kann. Ich weiß, dass es sowas beispielsweise mit dem LTC2954 auch in fertig gibt, aber das ist vergleichsweise teuer und zudem bei JLCPCB ein Extended Part + nicht immer verfügbar. Einen zweiten Mikrocontroller ist mir zu aufwändig, so dass ich mir überlegt habe, das diskret aufzubauen. Ein paar Widerstände und Mosfets kosten ja quasi nix. Ich habe dann ein bisschen gesucht und bin bei einem Video von Eevblog gelandet; es geht genau um diese Schaltung hier: https://youtu.be/Foc9R0dC2iI?t=192. Das habe ich mir dann "etwas" angepasst. Das Ganze soll so funktionieren, dass ich mit einem Push-Button (SW1) die Stromversorgung aktiviere. Das Ausschalten soll vom ESP32 aus getriggert werden. Folgendes habe ich mir dabei überlegt: - Q1 bis Q3 sind erstmal gesperrt wenn die Spannungsversorgung "startet". - Durch das Drücken von SW1 wird das Gate von Q1 via R1 auf GND gezogen. Q1 steuert durch. - Da Q1 durchsteuert wird das Gate von Q2 via R4 angesteuert. Q2 steuert durch, zieht das Gate von Q1 auf GND und es kommt zu einer Selbsthaltung von Q1 und Q2. - Vout liefert nun dauerhaft Versorgungsspannung für einen DC/DC-Converter bzw. einen LDO. Darüber werden ESP32 und die ganze Peripherie versorgt. - Der ESP32 steuert im Normalbetrieb das Gate von Q3 mit HIGH an, so dass dieses sperrt. Es ist jedoch eh schon gesperrt, weil der Spannungsteiler von R5/R6 dafür sorgt. Hat also keinen Effekt. - R5/R6 habe ich so dimensioniert, dass es für 3 bis 5 V passen sollte und dennoch keine zu hohe Spannung am GPIO des ESP32 ankommt. Vielleicht kann man für R5/R6 auch mit größeren Widerständen operieren, weil darüber fließt im Akkubetrieb ja dauerhaft Strom (wenn auch nur 28 uA). - Will ich das Ganze ausschalten, dann drücke ich wieder SW1. Auf die Schaltung hat das keine Auswirkung, jedoch registriert der ESP32 über den Port-Expander, dass ausgeschaltet werden soll. - Der GPIO es ESP32 geht auf LOW und zieht damit das Gate von Q3 auf etwa 0,1 V. Q3 steuert durch. - Da Q3 durchsteuert, wird das Gate von Q2 auf GND gezogen, so dass Q2 sperrt. - Da Q2 sperrt, wird das Gate von Q1 via R2 auf Vin gezogen. Q1 sperrt, die Spannungsversorgung des DC/DC-converters bzw. LDO wird unterbrochen. Passt das aus eurer Sicht so oder habe ich da was übersehen?
:
Bearbeitet durch User
Torsten S. schrieb: > Vielleicht kann man für R5/R6 auch mit größeren Widerständen operieren, > weil darüber fließt im Akkubetrieb ja dauerhaft Strom (wenn auch nur 28 > uA). R6 kann entfallen und R5 könnte man evtl. sogar im Extremfall auf 1M erhöhen.
Michael M. schrieb: > R6 kann entfallen und R5 könnte man evtl. sogar im Extremfall auf 1M > erhöhen. Ich bin mir da immer unsicher, ob das "good practice" ist, 5 V in Richtung eines GPIOs zu schicken, der zu einem 3.3 V-uC gehört. (Wohlwissend, dass ja ein großer Widerstand (R5+R7) dazwischen ist und daher eigentlich nix passieren kann.)
:
Bearbeitet durch User
Mir ist gerade noch was aufgefallen: Zwischen R1 und den Abzweig zu "to_portExpander" muss noch eine Diode, damit das Durchsteuern von Q2 nicht als "Taste gedrückt" vom Port-Expander interpretiert wird. Müsste zwar keine Schottky sein, aber die brauche ich woanders in der Schaltung eh.
Torsten S. schrieb: > Nun hätte ich gerne einen Push-Button-Controller > aber das ist vergleichsweise teuer und nicht immer verfügbar. Schau dich mal im Online Shop von Pololu um. https://www.pololu.com/category/121/pololu-power-switches Bist du sicher, dass Q3 seinen Zweck erfüllt? Das ist ja ein P-kanal MOSFET. Wenn du dessen Gate auf Low legst, zieht er die Spannung vom Gate des Q2 herunter, aber er zieht auch seinen eigenen Source Anschluss herunter. Dann leitet er nicht mehr. Darüber hinaus gehst du fälschlicherweise davon aus, dass I/O Pins inaktiv (hochohmig) sind, solange das IC keine Stromversorgung hat. Das ist aber nur in ganz wenigen Ausnahmefällen so. Deine Schaltung legt an den GPIO Pin des ESP ständig eine Spannung an, während der ESP keine Stromversorgung hat. In diesem Zustand sind aber nur 0,3V erlaubt. Damit riskierst du Fehlfunktionen im ESP. Weil dabei ständig Strom durch die ESD Schutzdioden im ESP fließt, wird es dir den Akku tief entladen.
> Schau dich mal im Online Shop von Pololu um. > https://www.pololu.com/category/121/pololu-power-switches Ja Pololu kenne ich, aber ich wollte halt keine Breadboard-Lösung sondern das soll alles auf eine Platine kommen. Hintergrund ist, dass das auch andere Leute verwenden werden und da möchte ich nicht jedes Mal mit Breadboards hantieren. > Bist du sicher, dass Q3 seinen Zweck erfüllt? Das ist ja ein P-kanal > MOSFET. Wenn du dessen Gate auf Low legst, zieht er die Spannung vom > Gate des Q2 herunter, aber er zieht auch seinen eigenen Source Anschluss > herunter. Dann leitet er nicht mehr. Nein, ich bin mir nicht sicher. Aber genau deswegen ist es gut, dass ich hier vorher gefragt habe :-D > > Darüber hinaus gehst du fälschlicherweise davon aus, dass I/O Pins > inaktiv (hochohmig) sind, solange das IC keine Stromversorgung hat. Das > ist aber nur in ganz wenigen Ausnahmefällen so. Ok stimmt. > > Deine Schaltung legt an den GPIO Pin des ESP ständig eine Spannung an, > während der ESP keine Stromversorgung hat. In diesem Zustand sind aber > nur 0,3V erlaubt. Damit riskierst du Fehlfunktionen im ESP. Weil dabei > ständig Strom durch die ESD Schutzdioden im ESP fließt, wird es dir den > Akku tief entladen. Vielen vielen Dank für die Hinweise - was gelernt! Ich habe das Ganze mal auf einen N-Mosfet umgezeichnet und hoffe, dass das jetzt besser ist :-)
Jetzt hast du aber noch das gleiche Problem bei deinem Portexpander. Solange der keine Stromversorgung hat, darf keine Spannung an seinen Pins anliegen. Sonst wird der Akku wird tief entladen, und der Portexpander könnte Fehlfunktionen bekommen.
> Passt das aus eurer Sicht so oder habe ich da was übersehen?
Was machst du wenn der Nutzer den Button kuerzer drueckt als dein
Controller braucht um das zu uebernehmen? Da muss noch ein Kondensator
ran.
Olaf
olaf schrieb: > Da muss noch ein Kondensator ran. Die beiden linken Transistoren halten sich gegenseitig von alleine eingeschaltet.
Torsten S. schrieb: > Das stimmt natürlich. Danke! Hätte vielleicht erwähnen sollen, dass sich das auf > Jetzt hast du aber noch das gleiche Problem bei deinem Portexpander. bezog.
Torsten S. schrieb: > Das stimmt natürlich. Danke! Jetzt brauchst du am Port-Expander einen Pull-Up Widerstand.
Stefan F. schrieb: > Jetzt brauchst du am Port-Expander einen Pull-Up Widerstand. Den ("weak pullup") hat der PCA9555 ohnehin. Also das benutze ich schon jetzt ohne externen PullUp und habe da keine Probleme.
Müsste man eine solche Schaltung eigentlich mit ltspice simulieren können? Weil ich habe das gestern versucht (Mosfets: AO6407 und 6408) und bin auf das Problem gestoßen, dass der Mosfet oben (in meinem Bild Q1) durchsteuert, wenn er von Q2 angesteuert wird. Also auch, wenn ich den Rest abtrenne (habe einfach die Verbindung entfernt), gab es dieses Problem. Was auch ein Problem war: Den Port-Expander habe ich mit einer zweiten Spannungsquelle (3.3 V) über einen Widerstand von 100k simuliert (er wird mit 3.3 V versorgt und als "weak internal pullup resistor" habe ich einfach mal 100k angenommen). Der hat zwar beim Einschalten keine Spannung, aber ich wollte mal sehen, ob mir das beim Ausschalten vielleicht irgendwelche Probleme macht (auch wenn ich so weit dann doch gar nicht gekommen sind). Aber da scheint Q1 halt schon aufgrund der Spannungsdifferenz von 3.3 und 5 V durchzusteuern. Möglich, dass mir das in echt dann doch auch Probleme macht. Muss dazusagen, dass ich ltspice zum ersten Mal benutzt habe. Vielleicht habe ich ja auch einen Fehler gemacht.
Torsten S. schrieb: > Müsste man eine solche Schaltung eigentlich mit ltspice simulieren > können? Ich denke schon. Wenn es bei dir nicht geht ist vielleicht noch irgendwo der Wurm drin. Mann kann so etwas auch in einem provisorischen Aufbau testen, bevor man Platinen herstellen lässt. Ich mache das immer so.
Torsten S. schrieb: > habe ich da was übersehen? Zu aufwändig und es fliesst Strom über R1/R2 und R4/R5 in den ausgeschalteten Controller. Warum versuchst du das Rad neu zu erfinden ? https://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29.1
Stefan F. schrieb: > Mann kann so etwas auch in einem provisorischen Aufbau > testen, bevor man Platinen herstellen lässt. Ich mache das immer so. Ich gebe zu, dass ich das bisher aufgrund von Faulheit nicht getan habe :-) Ich habe IRL3103 und NDP6020P auch. Widerstände und Dioden eh, PCA9555 als Breadboard auch. Ja ok, ich gehe es mal an. Logikgatter wären vielleicht auch noch eine Idee, sowas umzusetzen. Da habe ich allerdings noch nie mit gearbeitet.
Torsten S. schrieb: > Logikgatter wären vielleicht auch noch eine Idee, sowas umzusetzen. Da > habe ich allerdings noch nie mit gearbeitet. Oder ein ATTtiny25 + NDP6020P. Damit könntest du auch gleich den Tiefentladeschutz realisieren.
Michael B. schrieb: > Warum versuchst du das Rad neu zu erfinden ? > > https://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29.1 Ja ich dachte mir schon irgendwie, dass ich das tatsächlich tue, aber habe halt nach einem Weg gesucht, das irgendwie mit einfachen Mitteln abzubilden. Das Nutzen von Logikgattern hatte ich in meinem Post nach deinem ja auch noch erwähnt. Stefan F. schrieb: > Oder ein ATTtiny25 + NDP6020P. Damit könntest du auch gleich den > Tiefentladeschutz realisieren. Wie gesagt: Das werden weitere User nutzen und es ist halt unpraktisch, wenn dann jedes Mal der uC programmiert werden muss. Als Tiefentladeschutz wollte ich einen SGM809 verwenden (wobei die Akkus selbst auch einen Schutz besitzen). Also Anforderung ist halt, dass der Taster in meiner Schaltung das Ganze zwar einschalten, nicht jedoch wieder ausschalten darf (da er im Betrieb anderweitig verwendet wird). Ausschalten soll es der uC. Muss ich mal drüber nachdenken, wie ich das in Logikgattern hinkriege. Puh, vielleicht muss ich doch nen fertigen IC nehmen. Das artet ja doch mehr in Arbeit aus, als ich dachte.
Wilhelm M. schrieb: > Mach es so. Diode D105 kann weg. Die Schaltung tut nicht einmal Ansatzweise, was der TO braucht.
Torsten S. schrieb: > Ausschalten soll es der uC. Muss ich mal > drüber nachdenken, wie ich das in Logikgattern hinkriege. Ich dachte eben, dass es vielleicht mit einem RS-FF ginge. FF-S: Taster mit Inverter, damit "Taste gedrückt" eine 1 wird. FF-R: ESP32, welcher ein HIGH-Signal gibt zum Ausschalten. Problem, und damit muss ich meine Aussage von eben nochmal ergänzen: a) Der Taster schaltet ein. b) Der Taster wird im laufenden Betrieb für andere Sachen verwendet. c) Drückt man den Taster lange (im Betrieb), dann schaltet der ESP32 ab (weil vor dem Shutdown noch ein paar Dinge gemacht werden sollen). D.h. der Taster schaltet schon auch ab, aber nur indirekt. Das würde aber beim Abschalten, da man den Taster dann ja auch drückt, zum Schaltzustand 1/1 führen zum Zeitpunkt, wenn der ESP32 abschalten möchte. 1/1 ist aber meines Wissens beim RS nicht erlaubt. Oje, das artet echt aus...
Torsten S. schrieb: > Ich dachte eben, dass es vielleicht mit einem RS-FF ginge. Warum, wenn Du einen µC hast. Siehe die Schaltung in meinem Beitrag.
Torsten S. schrieb: > 1/1 ist aber meines Wissens beim RS nicht erlaubt Normalerweise ist klar spezifiziert, wie das konkrete Flipflop auf diese Kombination reagiert.
Mit FF aus Logik-ICs hat man wieder das Problem, daß die empfindlich auf Störungen und Preller reagieren können. Eh das alles zuverlässig und wie gewünscht funktioniert, kann das schnell eine Materialschlacht werden. Z.B. ein ATtiny13 oder 85 kann bis 5,5V immer an der Batterie hängen und umfangreiche Abläufe realisieren, die in HW viele Bauteile bedeuten würden. Der Hardwareaufwand bleibt minimal, nur der MC und ein P-FET zum Einschalten der Haupt-CPU.
Peter D. schrieb: > Z.B. ein ATtiny13 oder 85 kann bis 5,5V immer an der Batterie hängen und > umfangreiche Abläufe realisieren, die in HW viele Bauteile bedeuten > würden. Der Hardwareaufwand bleibt minimal, nur der MC und ein P-FET zum > Einschalten der Haupt-CPU. Ein User der o.g. Projekts hat mich diesbzgl. mal auf eine Idee von dir gebracht: Beitrag "Power Switch". Er meinte, dass das auch anfänglich gut funktioniert habe, es nach ein paar Monaten aber wohl Probleme gab, so dass man das Ganze vom Strom trennen musste. Das kann halt bisschen doof sein, weil das Ganze wird in ein Gehäuse eingebaut und mit Akkupufferung kommt man da ggf. nur schwer dran. Also die Lösung ist natürlich maximal flexibel und daher finde ich sie irgendwie auch cool. Aber ich muss halt dann immer noch einen uC extra flashen (es geht wie gesagt nicht nur um mich sondern eine tiefe dreistellige Anzahl von Leuten pro Jahr). Da habe ich so ein bisschen Bammel, wenn es da irgendwann Probleme gibt und es stellt sich aus, dass das ein Software-Fehler ist. Weil das kann man dann nur mit viel Aufwand fixen. Torsten S. schrieb: > Müsste man eine solche Schaltung eigentlich mit ltspice simulieren > können? Weil ich habe das gestern versucht (Mosfets: AO6407 und 6408) > und bin auf das Problem gestoßen, dass der Mosfet oben (in meinem Bild > Q1) durchsteuert, wenn er von Q2 angesteuert wird. Also auch, wenn ich > den Rest abtrenne (habe einfach die Verbindung entfernt), gab es dieses > Problem. Das habe ich heute nochmal versucht. Weiß nicht, was da gestern schiefgelaufen ist, aber die Schaltung verhält sich jetzt so, wie ich es gewünscht hatte. Also ich werde es mal auf dem Steckbrett aufbauen.
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.