Forum: Mikrocontroller und Digitale Elektronik Schaltung f. PWM an GPIO 0/2 eines ESP8266-12e


von Svensche (sven_s895)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin neu im Forum und brauche mal Hilfe zu folgendem Problem:

Ich möchte mit einem ESP8266-12e eine unabhängige PWM-Ansteuerung für 5 
POWER-LEDs bauen. Getriggert durch PIRs, Zeitplan, oder Helligkeit. Ich 
habe das bereits mit einem Arduino Pro Mini realisiert, möchte es aber 
auf den ESP migrieren, weil ich dann die WLAN-Fähigkeit gewinnen. Die 
Steuerung und LEDs sind in UP-Dosen montiert und da ist eine 
Fernsteuerung per WLAN Gold wert!

Ich benötige alle GPIOs des ESP8266-12e. Für die LEDs habe ich 
GPIO016,15,14,0,2 vorgesehen. Die übrigen sind für I2C und PIR-Input 
vorbehalten. Ich teste zunächst mit einem Wemos D1 mini und Breadbord, 
später solls mal ne eigene Platine werden.

Dank des klasse Beitrags 
Beitrag "GPIO 2 mit PWM nutzen und trotzdem flashen können" habe ich das 
"Pulled_High beim Starten des ESP Problem" von GPIO0 & 2 in den Griff 
bekommen: Denn ich wollte zuerst für alle GPIO016,15,14,0,2 die 
einfachere der beiden Schaltungen aus dem Anhang nutzen. Was aber für 
GPIO0 & 2 nicht geht, weil diese scheinbar über die beiden Widerstände 
am Gate des FETs den GPIO auf GND ziehen. Mit der Folge, dass der ESP 
nicht mehr durchstartet.

Ich möchte Euch trotzdem einmal um Feedback zu meinen beiden Schaltungen 
bitten (ich bin blutiger Laie, was E-Technik angeht und bevor ich ne 
Platine in China bestelle, möchte ich sicher sein, dass die Schaltungen 
zuverlässig 24/7 funktionieren).

FYI: PWM Settings ist nix besonders Anspruchsvolles. Ich nutze die 
Default-Einstellungen. Der MOSFET ist ein IRLM2502. SMD Package, weil 
wie gesagt später alles auf eine möglichst kleine Platine soll.

Im Anhang sind die Schaltung für GPIO0,2 und die für GPIO14,15,16

Freue mich auf Euer Feedback.

PS: Sorry für die doppelte Datei. Keine Ahnung, wie ich die hier im 
Forum wieder löschen kann.

: Bearbeitet durch User
von Michael M. (Firma: Autotronic) (michael_metzer)


Angehängte Dateien:

Lesenswert?

Da du bei nur 3,3V sowieso schon einen Logik Level Mosfet einsetzen 
musst, solltest du den 1k Widerstand vor die 100R gegen GND schalten, 
sonst wirken die beiden Widerstände wie ein Spannungsteiler. 10k genügen 
aber auch.

von Svensche (sven_s895)


Lesenswert?

Danke für Dein Feedback. Ich habe mich da an dem Vorschlag von 
GreatScott orientiert (s. https://youtu.be/8swJ_Bnsgl4?t=514) Der hat 
die beiden Wiederstände so platziert?!

Mit dem 1K hast Du Recht: Ich nutze auch ein 10K Widerstand. Ist nur in 
der Zeichnung falsch :-(

von Svensche (sven_s895)


Angehängte Dateien:

Lesenswert?

So ich habe die Skizzen nochmal aktualisiert (vergesst alle Anhänge aus 
dem 1. Post). Ich hoffe, ich habe alle Fehler in Skizzen gekillt.

Mir ist beim Testen der Schaltung (pulled_high_gpio0_2.jpg) für GPIO 0 & 
2 aufgefallen, dass diese die Logik invertiert: Aus high wird low und 
umgekehrt. Hat jemand einen Vorschlag, was ich ändern muss, so dass die 
Logik nicht invertiert wird, ich sie aber trotzdem an GPIO 0&2 nutzen 
kann? Möglichst einfach und mit möglichst wenigen Bauteilen. Wäre super 
das auf Schaltungsebene zu lösen, dann muss ich nicht

Dankeschön

von Brain 2.0 (Gast)


Lesenswert?

Du verwendest einen N-Channel Mosfet statt des P-Channel Mosfet.
Die Led hängst du zwischen GND und Mosfet.

von Brain 2.0 (Gast)


Lesenswert?

Brain 2.0 schrieb:
> Du verwendest einen N-Channel Mosfet statt des P-Channel Mosfet.
> Die Led hängst du zwischen GND und Mosfet.

Sorry, das mit deiner "rechten" Schaltung. Also mit dem NPN als Treiber.

von Helmut -. (dc3yc)


Lesenswert?

Mache halt noch einen Inverter mit einem NPN und zwei Widerständen in 
den Signalzweig!

von Michael M. (Firma: Autotronic) (michael_metzer)


Lesenswert?

Helmut -. schrieb:
> Mache halt noch einen Inverter mit einem NPN und zwei Widerständen in
> den Signalzweig!

So würde ich es auch machen, aber es soll ja auch möglichst einfach 
sein. Deshalb genügt ein Logik Level Mosfet direkt am GPIO.

von Svensche (sven_s895)


Lesenswert?

Michael M. schrieb:
> Helmut -. schrieb:
>> Mache halt noch einen Inverter mit einem NPN und zwei Widerständen in
>> den Signalzweig!
>
> So würde ich es auch machen, aber es soll ja auch möglichst einfach
> sein. Deshalb genügt ein Logik Level Mosfet direkt am GPIO.

Hi Michael,
danke für Deine Antwort.

Wie sieht diese einfache Schaltung mit MOSFET denn aus? (Und ja genau, 
ich möchte mit so wenig Bauteilen, wie möglich, zum Ziel kommen)

Ich habe ja bereits eine Schaltung, die sehr gut mit nur einem IRLM2502 
als aktiven Bauteil funktioniert (s. general_led_driver_mosfet.jpg). 
Aber die funktioniert eben gerade nicht für die Problem-GPIOs 0 & 2, 
weil diese beim Start des ESP8266 auf HIGH gepulled sein müssen - 
ansonsten geht der in den Flashmodus.

Ich kenne nur die FET-Schaltung, wie ich sie nutze, bei der das FET-Gate 
über 10K zu GND verbunden wird, um einen definierten OFF-Zustand zu 
haben und das widerspricht Anforderung für die GPIOs müssen beim Starten 
auf HIGH gepulled sein...

Für mich sind diese unterschiedlichen Potentiale zu verschieden Zeiten 
echt böhmische Dörfer. Ich habe auch schon überlegt, ob man dass 
positive Potential für die Einschaltphase irgendwie über das Aufladen 
eines Elkos realisieren könnte. Aber das geht über meine E-Fähigkeiten 
hinaus. Ich würde mich daher sehr über eine kleine Skizze Deiner Idee 
freuen :-)

: Bearbeitet durch User
von Brain 2.0 (Gast)


Lesenswert?

Michael M. schrieb:
> Helmut -. schrieb:
>> Mache halt noch einen Inverter mit einem NPN und zwei Widerständen in
>> den Signalzweig!
>
> So würde ich es auch machen, aber es soll ja auch möglichst einfach
> sein. Deshalb genügt ein Logik Level Mosfet direkt am GPIO.

Das funktioniert eben nicht.
Bitte immer alles lesen.

@Sven
Hiermit noch mal der Hinweis.
Nimm einen N-Channel und den NPN als Treiber. Das ist für dich am 
einfachsten.

von Svensche (sven_s895)


Angehängte Dateien:

Lesenswert?

Hm, der verwendete IRLML2502 ist ja bereits ein N-Channel MOSFET.

Ich verstehe dich so, dass ich die Schaltung mit einem p-Channel MOSFET 
so umbauen soll, wie ich sie jetzt im Anhang (inverse_logik.jpg) 
skizziert habe. Richtig?

Ich weiß aber nicht, wie ich die Vgs(th) in der neuen Schaltung 
berechne, um den passenden p-Channel FET auszuwählen. 3.3V - 12V = 
-8.7V?

von Brain 2.0 (Gast)


Lesenswert?

Ja, sorry. Du hast recht. Da bin ich ein wenig daneben gewesen.
So passt es und du kannst den IRLML6402 verwenden.

von Brain 2.0 (Gast)


Lesenswert?

In deiner Schaltung legst du nur den 10k Widerstand der auf das Gate 
geht an der anderen Seite auf die 12 Volt.

von Svensche (sven_s895)


Angehängte Dateien:

Lesenswert?

Brain 2.0 schrieb:
> In deiner Schaltung legst du nur den 10k Widerstand der auf das Gate
> geht an der anderen Seite auf die 12 Volt.

Cool Danke.

Ich habe das jetzt nochmal gezeichnet (s. Anhang 
ESP8266-GPIO_0_p-Channel-FET.jpg). Habe ich alles richtig verstanden?

von Brain 2.0 (Gast)


Lesenswert?

Sven S. schrieb:
> Brain 2.0 schrieb:
>> In deiner Schaltung legst du nur den 10k Widerstand der auf das Gate
>> geht an der anderen Seite auf die 12 Volt.
>
> Cool Danke.
>
> Ich habe das jetzt nochmal gezeichnet (s. Anhang
> ESP8266-GPIO_0_p-Channel-FET.jpg). Habe ich alles richtig verstanden?

Ja, so war es von mir auch "gedacht".
Wenn HIGH an Pin des ESP liegt, schaltet der NPN durch und damit auch 
der P-Channel Mosfet.

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
Noch kein Account? Hier anmelden.