ESP8266 – Reset Probleme lösen und Relais stabil schalten

Mit dem ESP8266 Mikrocontroller kann man sehr günstig und einfach Anwendungen im WLAN realisieren und steuern oder messen. Bei einigen Aufbauten hatte ich Stabilitätsprobleme und das Netz steht voll von Problemschilderungen um neustartende oder crashende ESPs. Mit den folgenden drei Methoden habe ich bisher alle Schaltungen stabil bekommen, so dass die ESPs auch monatelang ohne Reboot laufen.

Problem 1 – die Reset-Leitung ist ein Sensibelchen
Die Reset Leitung des ESP ist ungewöhnlich sensibel. Man sollte die Reset Leitung des ESP auf jeden Fall über einen Widerstand (z.B. 10kOhm) auf 3.3V ziehen. Das langt aber nicht immer. Es hängt von der konkreten Boardversion ab, wie der ESP sich verhält. Insbesondere die etwas älteren Module sind sehr empfindlich, weil hier offenbar keine Stützkondensatoren für die Resetleitung auf den Boards eingebaut sind. Der Test ist einfach: Mit einem Schraubenzieher oder Stück Draht einfach mal an die Reset Leitung gehen, während der ESP läuft. Wenn ein instabiles Board vorliegt, kann man so einen Neustart auslösen – auch wenn man die Reset Leitung mit 10k an 3.3V gelegt hat. Klingt ungewöhnlich, liegt aber daran, dass der ESP sehr hochohmige Eingänge hat und auf sehr kurze Pulse mit geringer Amplitude reagiert.
Die Lösung ist ein 100nF Stützkondensator, der möglichst nahe am Reset-Eingang angelötet wird in Kombination mit 10k auf 3.3 Volt. Minimale Kabellängen zum Kondensator sind Pflicht, weil der ESP „nervig“ sensibel ist. Das folgende Bild zeigt als Beispiel zwei 100nF Kondensatoren, die direkt an einem ESP8266-12 angelötet sind. Die Metallabschirmung liegt auf Masse. Der linke Kondensator stützt die Reset Leitung. Der rechte die 3.3V Versorgungsspannung.

ESP12_stabilized
Mit den Stützkondensatoren sollte die Sensitivität der Reset-Leitung auf Berühungen behoben sein.

Problem 2 – instabile Versorgungsspannung
Der ESP8266 hat recht hohe Anforderungen an die Versorgungsspannung. Im Mittel werden 80mA benötigt, kurzfristig zieht der ESP aber bis zu 250mA. Deshalb sollte die 3.3V Versorgungsspannung mit einem großen Elko gestützt werden. Ich nehme mindestens 470 Mikrofarad, meistens aber 3300 Mikrofarad. Ich habe mit einen Satz Elkos mit 3300Mikrofarad für maximal 6.3V besorgt. Diese sind noch relativ klein und günstig zu bekommen.
Mit einem solchen Elko und einen zusätzlichen 100nF Stützkondensator direkt am 3.3V Eingang des ESP, ist ein Spannung bei einem typischen Handynetzteil (5V) und einem LM1117-3.3 als Spannungsregler stabil genug.

Problem 3 – Relaisboard stabil schalten
Genau wie oft im Netz beschrieben hatte auch ich das Problem, dass das Schalten von 230V über ein Relaisboard den ESP ziemlich zuverlässig gecrasht oder neu gestartet hat. Dabei habe ich über ein übliches Relaisboard mit Optokoppler einen Klingeltrafo geschaltet.

Markise_Relaisboard

Das Problem läßt sich lösen, wenn man einen Entstörkondensator parallel zum Verbraucher schaltet. Wichtig: Der Kondensator muss mit dem Verbraucher verbunden bleiben, auch wenn das Relais abschaltet. Sonst wirkt der Kondensator nicht.
relais_supp
Ohne Kondensator entstehen beim Abschalten von induktiven Lasten leicht einige tausend Volt. Diese hohe Spannung sorgt in Kombination mit den sehr hochohmigen Eingängen des ESP für die Probleme. In der Praxis scheinen schon sehr kleine Induktivitäten auszureichen, um den ESP zu „ärgern“.
Bitte keinen einfachen Kondensator von der Stange nehmen, sondern einen sogenannten X2 oder FX2 Kondensator (EN132400). Diese sind zur Entstörung geeignet und bis zu einigen kV durchschlagsfest. Ein geeigneter 0.47 Mikrofarad FX2 Kondensator ist im folgenden Foto abgebildet. Mit einem solchen Kondensator konnte ich bisher alle Probleme lösen.

x2_capacitor

20 Gedanken zu „ESP8266 – Reset Probleme lösen und Relais stabil schalten

  1. Jem

    Hi, danke schön für die Infos. Ich lese sehr gerne deinen Blog. Kannst du für den letzten Punkt nochmal eine Schaltplanskizze angeben, damit man auch wirklich keinen Fehler macht? Danke, Gruß Jem

    Antworten
    1. ST Beitragsautor

      Hallo Thomas,

      sieht ok aus. Ich habe noch nie welche mit 250V gesehen, immer nur 275V. X2 Kondensatoren mit dieser Spannungsfestigkeit sind in den meisten kommerziellen Schaltungen verbaut. Der 440V Kondensator lag rum und ist so auf das Foto gekommen 🙂

      Gruss Stefan

      Antworten
    1. ST Beitragsautor

      Hallo Thomas,

      der C1 ist ein Elko. Dieser bleibt drin. ggf kannst Du den Wert erhöhen. Es macht Sinn, sehr nahe am Esp8226 noch einen 100nF Keramikkondensator einzubauen.
      Grund: Elkos haben eine nicht zu vernachlässigende Induktivität und sind deshalb nicht sehr „schnell“. Diese Störungen erwischst Du am besten mit dem zusätzlichen Keramikkondensator. Der Kondensator soll nahe am Esp sitzen, damit auf der Strecke zwischen Kondensator und Esp nichts einkoppeln kann.

      Gruss Stefan

      Antworten
  2. Kevin

    Hallo Stefan,

    ich hätte mal noch eine Frage zu deinen Hinweisen bezüglich des RESET-Pins.
    Auf dem Bild kann ich es leider nicht genau erkennen.
    Ich habe bis jetzt immer nur den 10k Pullup zwischen dem RESET-Pin und 3,3V liegen.
    Muss jetzt der Stützkondensator in Reihe dazu? oder parallel? Oder muss der zwischen RESET und GND?
    Könntest du dazu eventuell eine kleine Schaltungsskizze anfertigen, um mich zu erleuchten?

    Außerdem verwendest du da ja ein Breakout-Board (wie man es auf ebay kriegen kann).
    Dort sind schon einige Widerstände integriert. Leider finde ich nirgends eine Angabe, welche Größe diese haben und an welcher Stelle genau diese sind. Sind das nur Pull-Ups? Für welche Pins denn? Könntest du dazu vielleicht noch etwas sagen?

    Vielen Dank schon einmal.
    MfG Kevin

    Antworten
    1. ST Beitragsautor

      Hallo Kevin,

      Stützkondensatoren kommen eigentlich immer zwischen den fraglichen Pin und Masse. Den Pullup verbindest Du dann vom Pin nach 3.3v.
      Bzgl des Breakout Boards handelt es sich typischerweise um Widerstände, die die Bootmode definieren. Kannst Du eigentlich ignorieren. Falls es Dich interessiert, schau im Datenblatt mal bzgl der Festlegung des Bootmodus.

      Gruss Stefan

      Antworten
  3. Marcus

    Das ist ein sehr schöner Beitrag. Damit habe ich heute meine Schaltung ertüchtigt, die alle paar Wochen einen Neustart durchführt. Mal sehen, ob es jetzt stabiler ist.

    Antworten
  4. Roider Tom

    Interessanter Beitrag! Ich habe einen anderen Fall, den ich bis jetzt nicht gelöst bekomme:
    Wenn ich einen Stromausfall simuliere (d.h. mein Steckernetzteil ziehe, kurz warte und wieder einstecke), dann wird das Programm im esp8266 nicht geladen. (Kann ich recht einfach testen, indem ich versuche, ihn anzupingen). Drücke ich einmal auf Reset, ist der ping gleich im Anschluss wieder da, d.h. dann wird das Programm auch geladen.
    Entferne ich nur die Stromleitung (lasse also das Netzteil eingesteckt) vom Chip, warte kurz und stecke wieder an, funktioniert es wie gewünscht, dass das Programm geladen wird.
    Nur…in der Praxis (bei einem richtigen Stromausfall) habe ich das Problem, dass ich dann auf Reset drücken müsste…das ist natürlich nicht im Sinne des Erfinders. Hättest Du hier einen anderen Vorschlag? Evtl. eine kleine Schaltung o.ä., die z.B. gezielt beim Start diesen Reset auslöst?

    Vielen Dank für jeden Ratschlag…hab schon gegoogelt, aber nicht wirklich was sinnvolles dazu gefunden…

    Antworten
    1. Roider Tom

      Ursache gefunden:

      Der esp8266 startet OHNE jegliche Beschaltung sauber – die Ursache ist nicht die Stromversorgung o.ä., sondern dass ich D0, D1, D2 und D3 zum Schalten von Relais verwendet hatte (mit Widerstand und Transistor). Nun ist es aber so, dass D3 (GPIO 0) beim ersten Boot kurz „zuckt“ und dadurch scheinbar auslöst, dass das Programm nicht gestartet wird. Wie gesagt, wenn danach Reset gedrückt wird, klappts – ich habe jetzt statt D3 -> D5 verwendet und alles ist gut!

      Antworten
      1. ST Beitragsautor

        Hallo Tom,

        Die Bezeichnungen der Pins sins ungewöhnlich. D1-D.. stammt vermutlich von einem Esp Board, das versucht sie Sache Arduino-artiger aussehen zu lassen.
        Das kurze Umschalten beim Start/Boot kommt von den Boot Pins, mit denen der Bootmode des Esp8266 festgelegt wird.
        https://github.com/espressif/esptool/wiki/ESP8266-Boot-Mode-Selection
        Durch die Beschaltung wählst Du vermutlich einen unerwünschten Mode, da die Pins hier auf Eingang stehen. Man kann die Bootmode Gpios auch für Relaisboards nutzen. Dann musst Du mit passenden Widerständen die Pegel so auslegen, dass es paßt.
        Gruss Stefan

        Antworten
  5. Rogim

    Hallo,
    ein Frage zum Anlöten der Stützkondensatoren.
    Es will mir einfach nicht bzw. nach nur langem Brutzeln gelingen ein Beinchen an die Metallabschirmung anzulöten.
    Ich verwende 0,5 mm Lötzinn mit integriertem Flußmittel.
    Gibt es irgendeinen Trick, der die Sache vereinfacht.

    Vielen Dank

    Antworten
  6. Frank

    Hallo Stefan,
    danke für die Infos um die Stabilität des ESP8266 zu erhöhen.
    Bei meinen beiden NodeMCU ESP8266 habe ich das Problem, dass die WLAN Verbindung regelmäßig abbricht.
    Hast du einen Tip, wie man das WLAN stabiler bekommt? Der Access-Point ist nur 2m entfernt, den schliesse ich eigentlich aus.
    Bisher hatte ich vermutet, dass durch sporadische Resets das WLAN getrennt würde, dem ist aber nicht so.
    Ich habe eine Reconnect-Funktion eingebaut und einen Merker, der mir sagt ob ein Neustart vorgelegen hat oder nicht. Die Verbindungsinformationen schreibe ich bei jedem Connect in eine MySQL Datenbank und kann so sehr gut verfolgen, wenn sich mit dem WLAN neu verbunden wird und ob ein Neustart vorher erfolgt war.
    Ich hatte seit gestern 4 Reconnects im Abstand von ca. 6 Stunden. Zufall?

    Vielen Dank im Voraus
    Frank

    Antworten
  7. Alex

    Hallo,

    ich habe D3 als Input belegt. Extern mit 4,7 K Pullup. Als OS läuft ESPEasy. Das Merkwürdige ist, dass nach einem Reset des ESP oder nach disable/enable der Eingang funktioniert, jedoch nur für einige Mituten, danach schäft dieser Pin ein.
    Ich habe alle Pins irgendwie im Einsatz und habe keinen Ersatz Pin mehr, den ich dufür verwenden könnte.
    Hat jemand schon so ein Verhalten festgestellt?

    Gruß

    Alex

    Antworten
    1. ST Beitragsautor

      Die Sache klingt nach der Beschreibung weniger nach einem elektrischen Problem. Das klingt eher nach Powersaving Mechanismen in ESPEasy. Nun habe ich von ESPEasy kaum Ahnung und kann hier nicht konkret helfen. In die Richtung würde ich suchen.

      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert