Hallo zusammen, ich stehe vor einer Herausforderung und benötige eure Hilfe. Ich möchte den Stromverbrauch meines Projektes verringern und bin auf MOSFETS gestoßen. Mein Projekt besteht aus einem ESP32, einem Sensor und einem Lora Modul. Das ganze wird mit einer Batterie betrieben und ich stehe vor dem Problem, dass Sensor und LoRa-Modul Strom verbrauchen, wenn der ESP im Deep-Sleep Modus ist. Da kam mir die Idee, die Stromversorgung der Module mit Mosfets zu steuern. Ist es möglich die Stromversorgung mit Mosfets und den GPIO pins des ESP zu steuern? Welche Mosfets sind dafür geeignet? Daten: Beide Module werden mit 3,3Volt versorgt. Sensor: ca. 5 mA LoRa-Modul: ca. 120 mA Vielen Dank im Voraus
Alex schrieb: > Ist es möglich die Stromversorgung mit Mosfets und den GPIO pins des ESP > zu steuern? Ja. > Welche Mosfets sind dafür geeignet? Wenn man die PLus-Leitung abtrennen will: P-MOSFETs die bei 2.5V schon sicher durchschalten, also bessere LogicLevel. Also so was wie AO3423 oder NDS332.
Alex schrieb: > Ist es möglich die Stromversorgung mit Mosfets und den GPIO pins des > ESP zu steuern? Ja, sogar üblich. > Welche Mosfets sind dafür geeignet? Solche, die die "High-Side", also die Versorgungsspannung schalten können. Im Prinzip also nur P-Kanal Logic-Level FETs mit einer Threshold-Spannung im 1V Bereich. Wobei du den Sensor mit seinen 5mA sogar aus einem IO-Pin des µC versorgen könntest: High = Versorgung an / Low = Versorgung aus
p-Fets, die mit 3,3V Gatespannung zufrieden sind, den erforderlichen Strom abkönnen und dabei ausreichend niederohmig sind. Für was vergleichbares habe ich den IRLML6401 genommen.
Ich habe mich erneut informiert und nochmal eine Frage. Ist ein N-Channel-MOSFET nicht die bessere Wahl? Dann könnte ich den mit dem GPIO-Pin besser schalten. Setze ich den PIN auf High schaltet der N-Ch-Mosfet durch...setze ich den GPIO auf LOW schaltet der Mosfet nicht durch. Hab ich das richtig verstanden. Gate = GPIO PIN Source = GND Drain = Sensor -> 3,3V Welcher N-Channel-Mosfet würde sich dafür eignen? Wie wähle ich den richtigen aus?
Hallo Alex, wenn ich dich jetzt richtig verstehe würdest du damit einen sauberen Kurzschluss zwischen 3,3V und GND erzeugen. Wenn du den Sensor direkt an 3,3V anschließt und dann auch die Drain des NMOS, dann verbindet der NMOS im geschlossenen Zustand deine 3,3V mit GND. Das ist nicht zu empfehlen. Der MOSFET sollte zwischen 3,3V und den Versorgungsanschlüssen deines Sensors liegen. Ich würde also, wie oben schon geschrieben, einen PMOS nutzen. Du kannst aber auch einen NMOS und einen PMOS zusammen schalten. Dabei wird die Drain des NMOS an das Gate des PMOS geschaltet. Dann kannst du das Gate des NMOS mit dem Controller ansteuern und dieser steuert dann den PMOS. Dabei bitte nicht vergessen einen Widerstand zwischen dem Gate und der Source Source jeweils bei PMOS und NMOS zu schalten (Stichwort: definierter Zustand beim Einschalten). Hier noch einmal zusammengefasst: Drain NMOS: Gate PMOS Gate NMOS: GPIO Pin Source NMOS: GND Drain PMOS: Versorgung Sensor Gate PMOS: Drain NMOS Source PMOS: 3,3V Gruß Olli
Alex schrieb: > Gate = GPIO PIN > Source = GND > Drain = Sensor -> 3,3V Kannst du das mal als Schaltplan (**) malen. Sieht für mich derzeit wie ein geschalteter Kurzschluss aus, wenn 3,3V irgendwie mit GND verbunden werden... > Welcher N-Channel-Mosfet würde sich dafür eignen? Logic Level Mosfet > Wie wähle ich den richtigen aus? Anhand des Stromes, der Spannung, der Bauform usw... > Hab ich das richtig verstanden. Es ist übrigens eine ausgesprochen ungeschickte Idee, bei externen Komponenten die Masse "abzuschalten", solange irgendein anderer Anschluss dieser externen Komponente z.B. über einen IO-Pin oder einen Schnittstellenpin noch GND-Pegel bekommt. Stichwort dazu "parasitäre Versorgung". Das kann auch im Fall einer abgeschalteten Vcc passieren, aber dort kann man es wesentlich leichter erkennen. > Hab ich das richtig verstanden. Das mit "schließ den Sensor mit sienen 5mA an einen IO-Pin des µC an" hast du schon gesehen? (**) Schaltpläne sind das weltweit anerkannte Kommunikationsmittel (aka Sprache) zwischen Elektronikern. Über so einen Schaltplan kann ich sogar mit Leuten kommunizieren, von deren Muttersprache ich nicht mal wusste, dass es sie gibt.
:
Bearbeitet durch Moderator
Ich habe mal einen Schaltplan gemalt. Ich hoffe ihr versteht was ich meine. Möchte ungern 5 mA über den GPIO schalten. Wollte es wenn dann richtig machen und für das andere Modul muss ich 120 mA schalten.
Hallo Wo ist denn da ein KS?
1 | VCC |
2 | | |
3 | Sensor |
4 | | |
5 | Drain |
6 | |
7 | Source |
8 | | |
9 | GND |
Er schaltet der Sensor halt nach GND und nicht nach VCC. Ob das jezt förderlich im Zusammenspiel von Sensor und ESP ist, dazu müßte man den Rest kennen.
Angenommen ich liege richtig mit meinem Schaltkreis und habe keinen Kurzschluss. Wäre der IRF3708 ein N-Kanal-Mosfet den ich verwenden könnte?
Alex schrieb: > Wollte es wenn dann richtig > machen Problem, welches du beachten solltest: Es gibt ganz bestimmt noch mehr Verbindungen zwischen Sensor/Funkmodul und ESP. Wenn du einem die Stromversorgung klaust, kann es sein, dass trotzdem noch Strom über die ESD-Schutzdioden fließt. Also: Wenn du GND vom Sensor wegschaltest, solltest du alle Datenleitungen zum Sensor auf HIGH oder HIGH-Z stellen... Und wenn du VCC vom Sensor wegschaltest, die Datenleitungen auf LOW... Zeichne einfach mal die Datenleitungen und die internen Schutzdioden in den Schaltplan ein, dann siehst du die möglichen Stromkreise eher.
Alex schrieb: > Ich hoffe ihr versteht was ich meine. Darum kam es, dass ich schrieb: >> Es ist übrigens eine ausgesprochen ungeschickte Idee, bei externen >> Komponenten die Masse "abzuschalten" Εrnst B. schrieb: > Also: Wenn du GND vom Sensor wegschaltest, solltest du alle > Datenleitungen zum Sensor auf HIGH oder HIGH-Z stellen... Weil sich quasi jedes Signal und die meisten Werte aus dem Datenblatt auf den GND-Pin beziehen, ist es prinzipiell keine gute Idee, den GND wegzuschalten und irgendwie floaten zu lassen. Und ganz lustig wird es dann, wenn diese "weggeschaltete Masse" z.B. über einen nur zeitweise Steckverbinder und das E-Werk doch wieder "so halb" auf Massepegel gezogen wird....
:
Bearbeitet durch Moderator
Das LoRa Modul kannst du übrigens auch per Kommando in standby oder deep sleep versetzen. Den Sensor wahrscheinlich auch, da wäre es vl. ratsam mal zu erfahren welcher Sensor es denn ist.
Wie kann ich denn das RFM95W mit Arduino Code in den Schlafmodus setzen? Ist mir nicht bekannt...
Wenn die Funkion nicht da ist, dann kannst du sie einfach selbst implementieren, Datenblatt raus, RFM95 Library Quellcode raus und los: Registerdefinition für LoRa mode: https://cdn.sparkfun.com/assets/learn_tutorials/8/0/4/RFM95_96_97_98W.pdf#page=102 Das Datenblatt sagt also dass es einen SLEEP (0b000) und einen STANDBY (0b001) Modus gibt. Den kannst du aktivieren indem du in Register 0x01 die Bits 0, 1 und 2 auf den entsprechenden Wert (siehe oben) setzt. Du musst natürlich vorher das Register auslesen und von diesem Wert nur die ersten 3 Bits modifizieren, sonst verlierst du die restlichen Einstellungen des Registers:
1 | // Auslesen |
2 | uint32_t regOpMode = readRegisterSpi(0x01); |
3 | |
4 | // Die ersten 3 Bits zurücksetzen und mit 0b001 beschreiben |
5 | regOpMode = (regOpMode & ~0b111) | 0b001; |
6 | |
7 | // Zurückschreiben |
8 | writeRegisterSpi(0x01, regOpMode) |
Die read/writeRegisterSpi funktionen wirst du mit Sicherheit in irgendeiner Form im Quellcode der RFM95 Lib finden. Man muss noch ein paar mehr Sachen beachten, z.B. ob die Konfiguration beim aufwecken aus dem deep sleep verloren geht oder nicht usw. aber im Grunde ist das alles sehr einfach!
@Alex: Das, was du machen willst, habe ich bereits mehrfach mit folgenden Transistoren gemacht: BC337-40 [NPN] und IRF9250 [P-Channel-Mosfet); ein High Side-Switch also. Wie man so eine Schaltung aufbaut kann man hier zB in Abb4 sehen: https://dl6gl.de/schalten-mit-transistoren Die Schaltungen werden dort zwar entweder mit "normalen" Transistoren oder Mosfets gemacht, aber kann man ja auch mischen. Gibt vermutlich passendere Transistoren, aber mit denen, die ich genannt habe, geht es auf jeden Fall und die hatte ich noch daheim rumliegen. Werte der Widerstände: R1: 10k, R2: habe ich weggelassen, R4: 10k, R5: 4,7k Ein GPIO steuert den BC337 an, R4 sorgt als Pulldown-Widerstand für ein definiertes Signal. Wie schon von Vorpostern gesagt wurde muss man bissl aufpassen, wenn man die Versorgungsspannung der Peripherie abschaltet, auf dem Bus jedoch Spannung ist. Ich habe direkt am Anfang des Codes den GPIO, der die Transistorschaltung ansteuert, auf High gesetzt und beim Ausschalten ergibt sich ja kein Problem, da der GPIO im Deepsleep beim ESP32 eh auf low geht.
Ups, ich sehe eben erst, dass du 3.3 V schalten willst. Dann passt der von mir genannte IRF9520 nicht. Sorry.
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.