Hallo, ich würde gerne einen ESP8266 mit Selbsthaltung bauen. D.h ich drücke einen Taster, der ESP8266 bootet, führt einen Task aus und trennt dann die Versorgungsspannung (Batterie) wieder. Dazu hab ich die Schaltung im Anhang aufgebaut. Nach meinem Verständnis sollte die Schaltung so funktionieren: Der SW Taster wird gedrückt und versorgt den uC mit Strom. Der uC zieht dann als erstes GPIO5 auf low und sorgt dafür, dass der uC auch weiterläuft wenn der Taster losgelassen wird. Sobald der uC mit der Ausführung des Tasks fertig ist, wird GPIO5 wieder auf high gezogen und trennt damit die Versorgung. Allerdings funktioniert die Schaltung leider nicht so gewünscht. Wenn ich den Taster drücke sehe ich, dass GPIO5 auf low gezogen wird. Doch sobald ich den Taster wieder loslasse, ist die Versorgungsspannung unmittelbar weg - d.h keine Selbsthaltung. Ist der p-FET den ich verwende nicht geeignet oder hab ich da irgendwo nen Denkfehler? Ich hab hier im Forum bereits ein paar Schaltungsvorschläge mit Relais gefunden. Allerdings hab ich bereits eine kleine Test-Platine fertigen lassen, die ich gerne (wenn möglich) mit Fädeldraht retten möchte. Vielen Dank für eure Zeit!
Warum so aufwändig? Nimm eine CR123A-Zelle mit 1.5Ah und einen ESP-12. Wenn du den zwischen den Aktionen in den DeepSleep schickst, hält der ewig. Ausser du drückst ihn alle 3 Sekunden. Meine Schaltung ist im Anhang.
Schon wieder einer, der es mit einem Transistor versucht. Ich habe keine Lust, erneut zu erklären, warum das nicht geht. Benutze einfach mal die Suchfunktion, falls es dich interessiert. Du musst es mit zwei Transistoren machen, egal ob MOSFET oder Bipolar. Siehe http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%202.pdf Kapitel 3.4.3.1 oder 3.4.4.1
Stefan ⛄ F. schrieb: > Schon wieder einer, der es mit einem Transistor versucht. Ich habe > keine Lust, erneut zu erklären, warum das nicht geht. Benutze einfach > mal die Suchfunktion, falls es dich interessiert. > > Du musst es mit zwei Transistoren machen, egal ob MOSFET oder Bipolar. > Siehe > http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%202.pdf > Kapitel 3.4.3.1 oder 3.4.4.1 Danke für den Link! Ich nehme an du willst auf das hier hinaus, oder? > Wenn die zu schaltende Spannung höher ist, als die des Mikrocontrollers, brauchst du zwei Transistoren. Allerdings hat in meinem Fall die Batterie auch nur 3V. D.h das dürfte in meinem Fall keine Rolle spielen, oder versteh ich da was falsch? > Warum so aufwändig? Nimm eine CR123A-Zelle mit 1.5Ah und einen ESP-12. Wenn du den zwischen den Aktionen in den DeepSleep schickst, hält der ewig. Ausser du drückst ihn alle 3 Sekunden. Meine Schaltung ist im Anhang. Danke, aber mich hat irgendwie das Prinzip der Selbsthaltung interessiert. Wollte das schon immer mal ausprobieren. Werd deinen Schaltungsvorschlag aber im Hinterkopf behalten!
Übrigens, der S1 ist der Aufwachknopf! Meine Schaltung verbindet sich dann mit dem MQTT-Server per WLAN, sendet eine Nachricht und legt sich wieder schlafen.
Die Höhe der Spannung ist hier nicht dein Problem. Oder doch - irgendwie. Na gut, ich erkläre es doch: Bei CMOS ICs dürfen allgemein an allen Pins maximal 0,5V über VCC und maximal 0,5V unter GND anliegen. Wenn du diese Grenzen überschreitest, leiten die internen ESD Schutzdioden. In ausgeschaltetem Zustand (also VCC = 0V) darf an keinem Pin mehr als 0,5V anliegen. Beim ESP8266 steht das komischerweise nicht im Datenblatt (oder ich bin blind). Preisfrage: Welche Spannung liegt im aus geschalteten Zustand an GPIO5 durch R2 an? Es ist die volle Batteriespannung. Und weil das mehr ist, als erlaubt, wird ein gewisser durch R2 begrenzter Strom fließen. An R2 fällt Spannung ab, so dass der Transistor einschaltet obwohl du das nicht willst. Du hast aber auch noch ein anderes Problem: > Doch sobald ich den Taster wieder loslasse, ist die > Versorgungsspannung unmittelbar weg - d.h keine Selbsthaltung. Womöglich ist dein Transistor kaputt oder der I/O Pin.
Aaah, jetzt hab ich's verstanden. Herzlichen Dank für die ausführliche Erklärung! Ich werd mich morgen mal daran versuchen die Schaltung entsprechend umzuzeichnen und werd dann einen neuen Schaltungsentwurf hier posten. Vielen Dank nochmal!
Ich habe mir nochmal das Datenblatt des ESP8266 angetan, um da nach weiter nach zu forschen. Da steht: VIL = -0.3 V bis 0.25 · VIO VIH = 0.75 · VIO bis 3.6 V In ausgeschaltetem Zusstand ist VIO = 0V, die Spannung an den I/O Pins muss demnach zwischen -0,3 V und 3,6 V liegen. Scheinbar erlaubt dieser Chip tatsächlich ausnahmsweise signifikant Spannung an seinen Pins auch wenn er keine Versorgungsspannung hat. Dann müsste deine Schaltung mit dem einen Transistor aber funktionieren. Irgendwo ist da noch der Wurm drin. Messe mal nach, welche Spannung in ausgeschaltetem Zustand an deinem GPIO Pin anliegt und wie hoch die Batteriespannung zu diesem Zeitpunkt genau ist.
Stefan ⛄ F. schrieb: > Ich habe mir nochmal das Datenblatt des ESP8266 angetan, um da > nach > weiter nach zu forschen. Da steht: > > VIL = -0.3 V bis 0.25 · VIO > VIH = 0.75 · VIO bis 3.6 V > > In ausgeschaltetem Zusstand ist VIO = 0V, die Spannung an den I/O Pins > muss demnach zwischen -0,3 V und 3,6 V liegen. Scheinbar erlaubt dieser > Chip tatsächlich ausnahmsweise signifikant Spannung an seinen Pins auch > wenn er keine Versorgungsspannung hat. > > Dann müsste deine Schaltung mit dem einen Transistor aber > funktionieren. > > Irgendwo ist da noch der Wurm drin. Messe mal nach, welche Spannung in > ausgeschaltetem Zustand an deinem GPIO Pin anliegt und wie hoch die > Batteriespannung zu diesem Zeitpunkt genau ist. Vielen Dank für deine Hilfestellung und die Zeit die du dafür investierst - ich weiß das sehr zu schätzen! Wenn der Schalter nicht gedrückt ist, dann messe ich am GPIO: 3.08V Die Batteriespannung ist: 3.10V Sieht soweit gut aus, oder? Machts Sinn den FET vielleicht mal zu tauschen? (ist von einer größeren aliexpress Bestellung)
Neuling schrieb: > Wenn der Schalter nicht gedrückt ist, dann messe ich am GPIO: 3.08V > Die Batteriespannung ist: 3.10V > Sieht soweit gut aus, oder? Ja sieht gut aus, dann kann man der Angabe im Datenblatt wohl vertrauen (was bei Espressif nicht selbstverständlich ist, aber lassen wir das). > Machts Sinn den FET vielleicht mal zu tauschen? Würde ich mal versuchen. Und kontrolliere mal, ob die Software den GPIO Pin wirklich auf LOW setzt. Du wartest aber schon lange genug, bevor du den Taster wieder los lässt, oder?
Stefan ⛄ F. schrieb: > Du wartest aber schon lange genug, bevor du > den Taster wieder los lässt, oder? wann geift denn die Selbsthaltung, vor oder nach dem Connect Versuch, vielleicht nur eine unglückliche Programmierung, -> setup(); -> Port init, setzen und dann erst WiFi!
Stefan ⛄ F. schrieb: > Würde ich mal versuchen. Und kontrolliere mal, ob die Software den GPIO > Pin wirklich auf LOW setzt. Du wartest aber schon lange genug, bevor du > den Taster wieder los lässt, oder? Ich werds zur Sicherheit nochmal durchmessen, aber ich bin mir ziemlich sicher dass das gestern gepasst hat. Jep, der Taster sollte lange genug gedrückt sein (ich schau am UART mit und printe mir ne Message raus sobald der GPIO Pin in den Output Mode versetzt und auf low gezogen wird. Danach lass ich den Taster los. Joachim B. schrieb: > wann geift denn die Selbsthaltung, vor oder nach dem Connect Versuch, > vielleicht nur eine unglückliche Programmierung, -> setup(); -> Port > init, setzen und dann erst WiFi! Das passiert direkt als erstes in der setup() Funktion - dort wird der GPIO Pin in den Output Mode versetzt und auf low gezogen. (Ich verwende der Bequemlichkeit halber das Arduino Framework, weil ich mir für das simple Programm den Aufwand mit esp-idf nicht antuen will). Danach verbindet sich der uC mit WiFi, schickt eine Message per MQTT und zieht den GPIO Pin wieder auf high. In der loop() Funktion von Arduino hab ich einfach nur ein yield(), für den Fall das mal jemand den Taster länger hält als ein paar Sekunden. Danke für eure Hilfe, ich werd jetzt mal als nächstes den Mosfet tauschen.
Hallo, Stefan ⛄ F. schrieb: > Ich habe mir nochmal das Datenblatt des ESP8266 angetan, um da nach > weiter nach zu forschen. aus dem Datenblatt vom 12.10.2013 Seite 15 unten: All digital IO pins are protected from over-voltage with a snap-back circuit connected between the pad and ground. The snap back voltage is typically about 6V, and the holding voltage is 5.8V. This provides protection from over-voltages and ESD. The output devices are also protected from reversed voltages with diodes. Hat sich bei auch bisher so verhalten bei versehentlicher Mißhandlung. Daher kam vermutlich auch die Mär mit der 5V Toleranz, die richtige Funktion garantiert Espressif aber nur bis 3,6V am Pin. Zum TO: ich hätte auch gesagt, daß es eigentlich so gehen müßte. Mir hat aber eigentlich gereicht, den ESP8266 in deepSleep zu schicken und per Taster am Reset aufzuwecken. Gruß aus Berlin Michael
:
Bearbeitet durch User
Michael U. schrieb: > Mir hat aber eigentlich gereicht, den ESP8266 in deepSleep zu schicken > und per Taster am Reset aufzuwecken. Jep, rückblickend hätte das wahrscheinlich eh gereicht. Aber irgendwie wollte ich mal was mit Mosfets machen und da bisschen Erfahrung sammeln und da hat sich das kleine Projekt hier angeboten. Ich hab jetzt den Mosfet getauscht und jetzt funktioniert es - der Mosfet war anscheinend wirklich defekt. Vielen Dank an alle Helfer hier - insbesondere an Stefan für seine Geduld & die ausführlichen Erklärungen. Hab einiges gelernt! Ein Frage hätte ich noch: Wie überbrücke ich am besten die Zeit nach dem Tasterdruck bevor der uC übernimmt? Wenn ich den Taster drücke und sofort wieder loslasse, dann passierts manchmal, dass der Impuls so schnell ist, dass die Versorungsspannung schon wieder weg ist bevor der ESP den Pin auf low gezogen hat. Soweit ich gelesen hab, braucht der ESP relativ lang zum Booten (bis zu 300ms, wegen der RF calibration), d.h die Zeit müsste ich irgendwie überbrücken. Wie macht man sowas am besten? Monoflop? Oder ein kleiner uC, der schnell bootet (Attiny?) für die Selbsthaltung sorgt und dann den ESP einschaltet?
Neuling schrieb: > Wie überbrücke ich am besten die Zeit nach dem > Tasterdruck bevor der uC übernimmt? Dafür bräuchtest du ein Monoflop, das den Impuls verändert. Der Aufwand lohnt aber wohl kaum. Vor allem würde es nebenbei die Ruhestromaufnahme erhöhen. In diesem Zusammenhang könntest du dir mal bistabile Relais anschauen. Die behalten ihren ein/aus Zustand auch ohne Strom bei, sie brauchen nur kurze Impulse. Obwohl auch das in deinem Fall keine besonders elegante Lösung wäre, finde ich. Deep-Sleep ist besser.
Ich hab gelesen, dass manche den ATtiny als günstiges Monoflip missbrauchen. Könnnte da sowas wie im Anhang funktionieren? Die Idee wäre folgende: Der Schalter wird gedrückt und startet sowohl den ATtiny als auch den ESP. Wenn ich das hier[1] richtig verstanden habe, dann sollte der ATtiny mit dem internem RC Oszillator schnell genug starten, um dann rechtzeitig die Selbsthaltung zu aktivieren. Sobald der ESP mit dem Task fertig ist, zieht er den GPIO5 auf high. Das signalisiert dem ATtiny, dass er nun die Batterie wieder trennen kann. Kann das so funktionieren? Oder ist das kompletter Schwachsinn? Ich hab vorhin mal den Stromverbrauch von meiner Schaltung gemessen, der derzeit bei 1.5uA liegt. Soweit ich das gelesen hab liegt verbraucht der ESP im deep sleep Modus ca 15uA. Da ich aufs Jahr gesehen nicht so viele Tasterbetätigungen hab, könnte ich so glaub ich etwas Batteriekapazität sparen. [1] https://microchipsupport.force.com/s/article/Calculating-the-device-startup-time-SUT-from-reset-for-ATmega-and-ATtiny-devices
Ich denke schon, dass das klappen könnte, aber da fehlt noch was mit Bluetooth und Blockchain.
Stefan ⛄ F. schrieb: > Ich denke schon, dass das klappen könnte, aber da fehlt noch was > mit > Bluetooth und Blockchain. Bluetooth? Du meinst sicher AI oder? ;-) Nur zum Verständnis: Ist die Schaltung kompletter Murcks oder "mit Kanonen auf Spatzen schießen"? Letzteres wär vom Lerneffekt betrachtet jetzt weniger schlimm für mich als ersteres.
Neuling schrieb: > Nur zum Verständnis: Ist die Schaltung kompletter Murcks oder "mit > Kanonen auf Spatzen schießen"? Letzteres wär vom Lerneffekt betrachtet > jetzt weniger schlimm für mich als ersteres Also dann ist es nicht so schlimm :-) es sieht Funktionell aus und müsste gehen. Aber ein Kondensator an der Steuergate würde die Auschaltzeit etwas raus ziehen, das die Schaltung etwas unempfindlicher gegen Spikes ist.
Neuling schrieb: > a) Ist die Schaltung kompletter Murcks oder > b) "mit Kanonen auf Spatzen schießen"? Ich nehme b. Wenn du Spaß an der Sache hast, warum probierst du es nicht einfach, anstatt lange zu fragen?
Hi. Ich habe mit Interesse euren Beitrag verfolgt. Kannst Du mir vielleicht mal den finalen Schaltplan zukommen lassen? LG Stephan
Hinweis: Ich hab erst zu spät gesehen, dass der Thread schon relativ alt ist. Im Anhang wäre eine schnelle Schaltungsidee von mir für die Selbsthaltung während der Controller startet. Direkt nach dem Einschalten wird Q10 dank R1 leitend und hält damit das Gate von Q9 auf GND. Q9 ist damit ebenfalls aktiv. GPIO5 ist noch als Eingang konfiguriert. Schaltet man GPIO5 jetzt auf Ausgang und Low um sperrt Q10 und damit auch Q9. Der Controller geht aus. Ein Problem könnte es sein, dass der Reset vom Controller zu schnell zu schlägt und GPIO wieder auf High-Z schaltet bevor die Spannung sauber weg ist. Das müsste man mal ausprobieren. Hängt ein bisschen von den Schaltschwellen der Transistoren und der Resetschaltung im Controller ab. Aus diesem Grund ist R2 relativ niederohmig, da sollte das Abschalten schnell gehen. Ggf. kann man auch einen kleinen Kondensator am Gate von Q10 gegen GND ergänzen. Der sollte dann vom GPIO-Treiber schnell entladen werden aber eine Weile brauchen bis er über R1 wieder geladen wäre.
Hermann K. schrieb: > Schaltet man GPIO5 jetzt auf Ausgang und Low um > sperrt Q10 und damit auch Q9. Der Controller geht aus. Und dann hast du wieder den gleichen Zustand wie beim Einschalten der Stromversorgung: Ergo geht er wieder an.
Hermann K. schrieb: > Im Anhang wäre eine schnelle Schaltungsidee taugt selten was Stefan ⛄ F. schrieb: > Und dann hast du wieder den gleichen Zustand wie beim Einschalten der > Stromversorgung: Ergo geht er wieder an. ohne das zu prüfen glaube ich das auch! Eine funktionierende Schaltung gibts doch hier seit Jahren: Transistortester! https://www.mikrocontroller.net/articles/Datei:Schaltplan_transistortester.png Taster zum Einschalten, Rückkopplung vom µC
Stefan ⛄ F. schrieb: > Hermann K. schrieb: >> Schaltet man GPIO5 jetzt auf Ausgang und Low um >> sperrt Q10 und damit auch Q9. Der Controller geht aus. > > Und dann hast du wieder den gleichen Zustand wie beim Einschalten der > Stromversorgung: Ergo geht er wieder an. Nein, hat man nicht. Beim Einschalten wurde ja VCC über den Taster eingespeist. Sobald Vcc auf 0V gefallen ist sperren sowohl Q9 als auch Q10.
Joachim B. schrieb: > ohne das zu prüfen glaube ich das auch! Dann prüf das lieber mal. Wenn du glauben willst bist du bei der Religion besser aufgehoben. > Eine funktionierende Schaltung gibts doch hier seit Jahren: > > Transistortester! > https://www.mikrocontroller.net/articles/Datei:Schaltplan_transistortester.png > > Taster zum Einschalten, Rückkopplung vom µC Das funktioniert aber hier nicht zuverlässig, weil der ESP ~300ms zum booten braucht. Drückt man nur kurz auf den Taster geht er an und gleich wieder aus. Wie der OP weiter oben geschrieben hat. Deshalb hat er einen ATtiny verwendet für das aktivhalten, was natürlich totaler Overkill ist.
Ich hab die Schaltung jetzt noch simuliert. Ergebnis: Funktioniert, aber der Kondensator (C1) am Gate schadet wirklich nicht für eine zuverlässige Funktion. Schaltung ist wie oben gezeigt, mit ein paar zusätzlichen Komponenten für die Simulation: - Q1: Ausgangstreiber des ESP8266. - D1: Statt dem Schalter - R3: Modell für die zu schaltende Last (ESP8266 + sonstiges Zeug). Bei t=100ms gebe ich einen 1ms langen Puls auf die Leitung SWITCH => Vcc schaltet ein und bleibt an. Bei t=1s dann ein 1us langer Puls auf GPIO5 => Vcc schaltet aus und bleibt aus.
Hermann K. schrieb: > Nein, hat man nicht. Beim Einschalten wurde ja VCC über den Taster > eingespeist. Ach ja, R1 hängt nicht direkt der Batterie. Hermann K. schrieb: > Deshalb hat er einen > ATtiny verwendet für das aktivhalten, was natürlich totaler Overkill > ist. Andererseits kann der ATtiny gleich die Tiefentladung des Akkus verhindern und einen auto-off Timer enthalten.
Hallo. ich wollte nun mal, nach 11 Wochen Dauerbetrieb eine Rückmeldung geben. ca. am 20.12.2021 ging also mein Briefkaastenmelder mit 4 AA Akkus in Betrieb und schickt mir immer wenn neue Post kommt auf Telegram eine Message.. wenn ich dem Analogeingang des WEMOS trauen kann, dann sieht die Batterie noch gut aus. Also in dem Sinne, bleibt gesund! Lieben Gruß Stephan
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.