ESP32 Sensor mit Mosfet abschalten

Hallo zusammen,

als blutiger Anfänger habe ich jetzt ein paar Projekte hinter mir und arbeite gerade an einem Barcode Scanner.
Dazu habe ich dieses Modul gekauft und das funktioniert auch alles wunderbar.

Nun möchte ich den ESP in den deep sleep versetzen und den Barcode Scanner abschalten, wenn ich es nicht brauche. Mein Problem dabei ist das Abschalten des Barcode Scanners.

Ich habe noch nie mit Transistoren oder Mosfets gearbeitet und bin gerade etwas überfordert.
Könnt ihr mir sagen wie ich (quasi wie mit einem Relais) den Barcode Scanner (5v) über einen ESP32 Pin abschalten kann?

Danke für eure Hilfe!

Du kannst den Senso mit einem P-Channel-Mosfet schalten, wenn du die 3,3V-Version nimmst.
Bei der 5V-Version musst du noch einen Treiber davor setzen.

p-Channel-Schalter.jpg

P_N-Channel-Treiber.png

p-Channel-Schalter.jpg

P_N-Channel-Treiber.png

Du hast die 5V Version des Barcodeleser. Wie hast Du diesen an den ESP angeschlossen damit dieser nicht durchbrennt?
Grüße Uwe

Super vielen Dank für eure Antworten!
Das hilft mir auf jeden Fall schon mal sehr, aber ich werde mich da noch ziemlich einlesen müssen.

Genau ich benutze das TTGO Board und das hat einen 5V out Pin.

Wenn ich die Variante mit dem Treiber nehme, muss ich dann den GND der externen 5V Stromquelle auch mit dem GDN des Microcontrollers verbinden?

Liebe Grüße Leo

leo2525:
Wenn ich die Variante mit dem Treiber nehme, muss ich dann den GND der externen 5V Stromquelle auch mit dem GDN des Microcontrollers verbinden?

Ja, GND musst du innerhalb des Systems verbinden.
Und den Treiber brauchst du ganz sicher, sonst machst du den Pin vom ESP kaputt.

Okay danke dir! Ich versuche die Tage mal mein Glück :slight_smile:

leo2525:
Okay danke dir! Ich versuche die Tage mal mein Glück :slight_smile:

Ok, viel Erfolg.
Wird schon klappen.

So ich habe mich mittlerweile ein bisschen eingelesen und möchte euch nochmal nach eurer Meinung fragen :slight_smile:
Ziel ist es ja, mit dem 3.3V logic level des ESP32 eine 5V Quelle zu schalten.

Ich würde jetzt einen einfachen N-Kanal Mosfet benutzen und ihn wie im Bild anschließen. Zusätzlich brauche ich an der Gate Seite noch einen 10 kOhm PullDown Widerstand oder?

Ich glaube es müsste z.B. mit dem IRLML 6244 funktionieren. Der schaltet bei 3V schon komplett durch und schafft auch die 180mA Last. Oder habt ihr einen besseren Tipp?

Danke euch & liebe Grüße Leo

Hmmm....

Deine ESP Daten Pins dürfen keine 5V abbekommen.
Das hast du vorher schon (scheinbar) ignoriert, und das ignorierst du noch immer.

Aber die 5V liegen hier doch nur zwischen drain und source an? Das Gate ist davon doch unabhängig oder hab ich das falsch verstanden?

leo2525:
Aber die 5V liegen hier doch nur zwischen drain und source an? Das Gate ist davon doch unabhängig oder hab ich das falsch verstanden?

Die Datenleitungen des Barcodescanners sind also nicht mit dem ESP verbunden?

Ah okay verstehe. Und deswegen muss ich die Variante oben mit dem Treiber verwenden?
Der Eingang ist da der ESP und der Ausgang der Barcode Scanner und dann kann ich die beiden Datenleitungen problemlos verbinden?

und dann kann ich die beiden Datenleitungen problemlos verbinden?

Das ist nur die halbe Miete.

Und immer noch arbeiten die Datenleitungen des Scanners mit 5V und der ESP mit 3,3V, oder?
Das Zauberwort dürfte "Levelshifter" sein.

  1. Nie dürfen die 5V auf den ESP durchschlagen, weder bei der Versorgung, noch auf den Datenleitungen
  2. Auch muss der ESP die Datenleitungen "los lassen", damit er den Scanner nicht darüber versorgt.

Dann schalte ich den Barcode Scanner mit einem mosfet ein und aus und Wandel das Datensignal mit einem 2 Kanal Levelshifter?
Ist es denn kein Problem dass der Versorgungsstrom für den Barcode Scanner nicht über den Levelshifter läuft?

leo2525:
So ich habe mich mittlerweile ein bisschen eingelesen und möchte euch nochmal nach eurer Meinung fragen :slight_smile:
Ziel ist es ja, mit dem 3.3V logic level des ESP32 eine 5V Quelle zu schalten.

Ich würde jetzt einen einfachen N-Kanal Mosfet benutzen und ihn wie im Bild anschließen. Zusätzlich brauche ich an der Gate Seite noch einen 10 kOhm PullDown Widerstand oder?

Dann hast du nicht alles gelesen oder dir falsche Informationen angeeignet.

Du darfst von elekronischen Modulen nicht einfach den GND wegschalten.
So bekommst du Probleme mit den Datenleitungen, da über die das Modul weiter versorgt werden kann.

Schalte die Plus.Leitung, wie ich es dir schon gezeigt habe. Oder lerne, wie du evtl. Module kaputt machst.

Edit:
Und je nach dem welche Übertragungsgeschwindigkeit du auf der UART einstellen musst, reichen bei 9600 Bd in jeder Leitung 1k-Ohm Widerstand anstatt eines Levelshifters.

Okay dann bleibe ich bei deiner Schaltung vom Anfang.
Ich habe nur Probleme dabei, die zweite Version mit Treiber zu verstehen und möchte nichts benutzen was ich nicht nachvollziehen kann.
Du benutzt ja den N-Kanal Mosfet um den P-Kanal zu schalten. Wieso machst du das? Kann man nicht direkt den 6402 mit einem GPIO schalten? Die Spannung zwischen Drain und Source kommt doch nicht mit mit dem Gate in Berührung.

Genau die Baudrate ist 9600.

Vielen Dank für eure Hilfe!

reichen bei 9600 Bd in jeder Leitung 1k-Ohm Widerstand anstatt eines Levelshifters.

Nicht unbedingt!

Das würde Clampdioden im ESP voraussetzen.
Solche haben sie aber nicht(?)
Zudem würde die Ableitung über Clampdioden die Versorgung des ESP hochsetzen.
Das mag im Normalbetrieb mit Clampdioden funktionieren, ist aber im Deepsleep tödlich.

Wieso machst du das? Kann man nicht direkt den 6402 mit einem GPIO schalten?

Nein!
Weil der Ausgang des ESP nie 5V erreicht bzw erreichen darf, schaltet der FET auch nie ab.

combie:
Nicht unbedingt!

Das würde Clampdioden im ESP voraussetzen.
Solche haben sie aber nicht(?)
Zudem würde die Ableitung über Clampdioden die Versorgung des ESP hochsetzen.
Das mag im Normalbetrieb mit Clampdioden funktionieren, ist aber im Deepsleep tödlich.

Ok, kein Deepsleep und statt des einen Widerstandes einen Spannungsteiler.

Hmm Ziel ist es aber den Sensor auszuschalten und dann den ESP in den Deep Sleep zu schalten.
Was muss ich denn dafür ändern?

Weil der Ausgang des ESP nie 5V erreicht bzw erreichen darf, schaltet der FET auch nie ab.

Aber es gibt doch auch Logic-Level-Fets, die schon bei 3.3V schalten? Damit kann ich dann doch 5V schalten oder nicht?

Aber es gibt doch auch Logic-Level-Fets, die schon bei 3.3V schalten? Damit kann ich dann doch 5V schalten oder nicht?

Da der PKanal FET an 5V hängt, du das Gate aber nur auf max 3,3V auf ziehen kannst, bleibt der FET ca. halb offen.