Stromversorgung des Mikrocontrollers mit n-Kanal-Mosfet und tpl5111

Ich versuche, eine hausgemachte Batteriesparschaltung zum Einschalten meines Mikrocontrollers (nodemcu v2) zu erstellen.

Ich folge http://www.ti.com/product/TPL5111/datasheet/detailed_description und habe die Verbindung auf dem Steckbrett erstellt.

TPL wird wie folgt angeschlossen

  1. Pin -1 V+ - zur Stromschiene (5 V oder normaler Li-Ion-Akku 4,2 V)
  2. Pin -2 GND - gemeinsamer GND
  3. Pin -3 DELAY - 20 kOhm zu Masse (~20 Sek. Betriebszeit)
  4. Pin -4 EN - GND (Da ich möchte, dass dies ein Schuss und nicht als Timer ist) über Druckknopf und anderen Schenkel des Druckknopfs an V +.
  5. Pin -5 DRV - Gate zu meinem MOSFET (FQP30N06 N-Kanal-Verbesserung)
  6. Pin -6 DONE - Done-Pin zum MicroController D2/2 (abhängig vom esp8266-Typ)

Auf der MOSFET-Seite

  1. GATE ist mit Pin 5 oben verbunden, so dass jedes Mal, wenn ich die Taste drücke, TPL den DRV-Pin hochsetzt, was den Mosfet aktivieren sollte
  2. MC USB-Pin mit V+ verbunden
  3. MC Ground ist mit Drain von Mosfet verbunden
  4. Die Quelle von Mosfet ist mit Common GND verbunden
  5. GATE und DRAIN sind mit einem 5K-Ohm-Widerstand verbunden

Nachfolgend meine Zweifel

  1. Selbst wenn TPL DRV niedrig ist, leuchtet meine externe LED an MC an Pin 13 und die Spannung ist < 0,5 Volt, sollte der Mikrocontroller vollständig ausgeschaltet sein?
  2. Meine Absicht ist es, einen Reed-Schalter anstelle eines Druckknopfs an TPL anzubringen, sodass jedes Mal, wenn ich die Tür öffne, Mosfet über TPL eingeschaltet werden sollte und der Mikrocontroller die Arbeit erledigen und das DONE zum Ausschalten senden sollte
  3. Das Senden von DONE über den Mikrocontroller schaltet die TPL nicht aus, aber das stört mich zu diesem Zeitpunkt nicht, würde aber trotzdem gerne wissen

Ich werde meine Schaltung vom Steckbrett hochladen, aber ich muss Etiketten darauf setzen.

Unten ist ein einfacher Code, der die LED an Pin 13/D7 einschaltet

    #include "AdafruitIO_WiFi.h"
    #define HUZZAH
    #ifdef HUZZAH
      #define DONEPIN   2 // TPL5100 Done signal
      #define LEDPIN    13
    #else
      #define DONEPIN   D2 // TPL5100 Done signal
      #define LEDPIN    D7
    #endif
    #define DEBUG true
    #define BAUD_RATE    115200

    const char* ssid = "wifi";
    const char* password = "password";
    #define AIO_KEY  "mykey"

    AdafruitIO_WiFi io("userId", AIO_KEY, ssid, password);

    void logMessage(String message, boolean noCRLF=false){
      #ifdef DEBUG
      if (Serial){
        if (noCRLF){
          Serial.print(message);
        }else{
          Serial.println(message);
        }
      }
      #endif
    }

    void connectAdaIo(){
      bool sendData = false;
      logMessage("Connecting to Adafruit.io");
      // connect to io.adafruit.com
      io.connect();
      int retry = 0;
      // wait for a connection
      while(io.status() < AIO_CONNECTED || retry < 10) {
        logMessage(".");
        retry++;
        delay(500);
      }
      if (io.status() < AIO_CONNECTED){
        sendData = false;
      }
      // we are connected
      logMessage("Adafruit connected:" + sendData ? "true" : "false");
      logMessage(io.statusText());
    }


    /*
     * send DONE signla to TPL5100 to shut the power off
     */
    void sendDone(){
      digitalWrite(DONEPIN, HIGH);
      delay(1);
      digitalWrite(DONEPIN, LOW);
      delay(1);  
    }

    void setup() {
      delay(10);
      Serial.begin(BAUD_RATE);
      Serial.println("Measuring Temp on DS18B20 \n");
      delay(10);
      pinMode(DONEPIN, OUTPUT);
      pinMode(LEDPIN, OUTPUT);
      digitalWrite(DONEPIN, LOW);
      connectAdaIo();
    }

    void loop() {
      io.run();
      digitalWrite(LEDPIN, HIGH);
      logMessage("I was here", true);
      delay(3000);
      digitalWrite(LEDPIN, LOW);
      while(true){
        sendDone();
      }
    }

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Können Sie den integrierten Schaltplan-Editor verwenden, um Ihre Textbeschreibung Ihrer Schaltung in einen Schaltplan umzuwandeln?
Entschuldigung, hatte keine Ahnung, dass es einen tollen Schaltplaneditor gibt
Gemäß Ihrem Schaltplan SW1wird beim Schließen ein direkter Kurzschluss über die Stromversorgung verursacht. Dies ist nicht sinnvoll, überprüfen und reparieren Sie daher bitte den Schaltplan (dies setzt voraus, dass Ihre reale Hardware anders angeschlossen ist, ohne einen direkten Kurzschluss über die Versorgung durch SW1, und der Fehler liegt daher nur im Schaltplan).

Antworten (2)

Neben dem hilfreichen Vorschlag von Jim Fischer sehe ich noch eine weitere mögliche Ursache für Ihr Problem.

High-Side- vs. Low-Side-Schaltung

Selbst wenn TPL DRV niedrig ist, leuchtet meine externe LED an MC an Pin 13 und die Spannung ist < 0,5 Volt, sollte der Mikrocontroller vollständig ausgeschaltet sein?

Beachten Sie aus dem TPL5111-Datenblatt, dass das Beispiel „Typische Anwendung“ keinen Low-Side- Schalter steuert, sondern einen High-Side- Schalter. Sie fragen sich vielleicht, warum das wichtig ist ...

Sehen Sie sich dieses Diagramm aus seinem HTML-Datenblatt an :

TPL5111 typische Anwendung

Abbildung 1: Beispielschaltbild des TPL5111 aus seinem Datenblatt

In diesem Beispiel besteht weder die Möglichkeit eines Lecks am MCU-GPIO-Pin noch über die in diesem Beispiel gezeigten I2C-Pull-up-Widerstände, wenn die Stromversorgung mit dem High-Side- Leistungsschalter ausgeschaltet wird.

Wenn Sie sich jedoch Ihren Schaltplan ansehen, gibt es "versteckte" Strompfade von der Stromschiene über den MCU- D2Pin und den 1-MΩ-Widerstand zur Masse und über den MCU- D3Pin und die LED zur Masse, da Sie die Low-Side einschalten:

Aktuelle schematische Version

Abbildung 2: Aktuelle Version des Schaltplans aus der Frage

Diese Arten von "versteckten" Strompfaden über GPIO-Pins können ausreichen, um eine MCU (teilweise) einzuschalten. Dies ist ein recht häufiges Problem bei der Verwendung von Low-Side-Switching, da Sie jeden möglichen Erdungspfad von jedem Gerät berücksichtigen müssen , wenn seine Haupterdungsverbindung (z. B. Vss) getrennt wird.

Sie können diese Hypothese an Ihrem Design testen:

  • Trennen Sie den MCU- D2GPIO-Pin, sodass er nicht mit dem 1-MΩ-Pulldown-Widerstand oder dem TPL5111- DONEPin verbunden ist.
  • Ändern Sie die LED-Verbindung so, dass sie zwischen dem MCU- D3Pin und Vdd (dh der positiven Stromschiene) statt zwischen dem D3Pin und Masse liegt. Sie müssen dann Ihren Code ändern, da das Fahren dieses MCU-Pins High die LED ausschaltet und das Fahren des Pins Low die LED einschaltet.
  • Trennen Sie alle anderen GPIO-Pins, die verwendet werden, aber nicht im Schaltplan angezeigt werden.
  • Sollten Sie für diese LED keinen Widerstand verwenden, egal wie Sie ihn anschließen?

Überprüfen Sie dann erneut, ob Ihre MCU die LED immer noch leuchtet, wenn ihr GND-Pin vom TPL5111 & MOSFET getrennt wird.


Noch ein paar Punkte:

  • Ich habe bereits in einem Kommentar erwähnt, dass SW1in Ihrem Schaltplan falsch erscheint, da die Stromversorgung beim Drücken des Schalters direkt kurzgeschlossen würde. Ich gehe jedoch davon aus, dass dies ein Fehler im Schaltplan ist und nicht die tatsächlichen Verbindungen zeigt, die Sie haben müssen SW1.

  • Der von Ihnen gewählte FQP30N06-MOSFET leistet möglicherweise keine gute Arbeit beim Einschalten Ihrer Last. Beachten Sie, dass es R D S ( Ö N ) ist angegeben bei v G S = 10 v aber Sie schalten es mit einer viel niedrigeren Spannung, also ist es so R D S ( Ö N ) wird höher sein als die "Schlagzeilen"-Spezifikation von 40 mΩ.

  • Der TPL5111 ist für das Schalten eines Leistungssignals mit Logikpegel ausgelegt, nicht für ein MOSFET-Gate. Er ist bei 1 mA Antrieb und 50 pF Last (absolutes Maximum 5 mA) spezifiziert. Obwohl ich bezweifle, dass dies bei kleinen MOSFETs (kleine Werte der Gate-Kapazität) ein Problem sein wird, würde ich persönlich vorschlagen, die MOSFET-Spezifikation und ihre Eignung genauer zu überprüfen (ich habe keine Zeit mehr). Verwenden Sie auch ein Oszilloskop, um dieses Gate-Treibersignal anzuzeigen, um sicherzustellen, dass es vernünftige Anstiegs- / Abfallzeiten hat.

  • Abhängig von Ihren Designbeschränkungen, der Verfügbarkeit von Komponenten usw. könnten Sie in Betracht ziehen, das DRVn-Signal des TPL5111 mit einem NPN-BJT oder einem N-Kanal-MOSFET mit kleinem Signal zu invertieren und dieses (jetzt invertiertes, dh aktiv niedriges Signal) zum Ansteuern des Gates eines geeigneten zu verwenden P-Kanal-MOSFET, der als High-Side- Treiber fungiert. Es hängt alles von den Gründen ab, warum Sie sich überhaupt für die Verwendung eines Low-Side-Schalters entschieden haben.

Vielen Dank für die ausführlichen Details zu meinen Schaltungsproblemen. Ich bin eine Art Neuling, habe aber diese Art von komplexem Projekt auf der Suche nach einer Batteriesparlösung durchgeführt. Ich hatte diese LDO-Typen nicht in meinem Inventar, die einen ENable-Pin zum Einschalten haben. Auch auf Ihre Empfehlung für Low-Side-Schalter werde ich diese implementieren und sehen, wie es sich verhält und hier aktualisieren. Vielen Dank für Ihre Hilfe, Sam und Jim.
@ Gaurav18ca - Nur zu Ihrer Information (da ich nicht glaube, dass Sie automatisch über meine Bearbeitung benachrichtigt werden) habe ich meiner Antwort einen weiteren Punkt hinzugefügt, dass Sie einen P-Kanal-MOSFET als High-Side-Treiber verwenden könnten, wenn Sie den invertieren TPL5111 DRVn-Ausgang. Dies ist für Sie möglicherweise nicht möglich (z. B. wenn Sie nicht über die erforderlichen Komponenten verfügen und nicht die Zeit / das Geld haben, welche zu kaufen), aber High-Side-Switching kann eine Überlegung wert sein, da es einige der Probleme mit Ihrem beseitigt bestehendes Design.
Ich verstehe Ihren Standpunkt und werde darauf zurückkommen, bevor ich letzte Nacht einige Vorschläge gemacht habe, insbesondere das Entfernen des fertigen Signals von MC zu TPL / und LED ist jetzt auf + ve-Schiene und kleinerem Bein zu MC, und habe den Code geändert.
Auch modifizierte Skizze, natürlich leuchtet sie nicht, aber die Spannung über MC USB / GND liegt irgendwo bei 300 mV. Ich werde aber den Strom messen. Bei der Verwendung von p-Kanal-Mosfet - (ich habe einige Verbesserungen, die werden sehen, ob ich das zum Laufen bringen kann). Adafruit hat speziell ihre tpl5110-Boards entwickelt, die von p-Kanal-Mosfets angetrieben werden, aber beide von adafruit werden für Zeitintervalle verwendet (fest verdrahteter Aktivierungsstift auf + ve). Ich fange an, Probleme mit meinem Low-Side-Switching zu sehen (das habe ich vor gestern noch nie gehört!) und verstehe es besser. Vielen Dank für Einblicke.

Auf der MOSFET-Seite > 5. GATE und DRAIN sind mit einem 5K-Ohm-Widerstand verbunden

Warum ist dieser 5k-Widerstand zwischen GATE und DRAIN geschaltet? Wenn ich Ihre Schaltungstopologie richtig verstehe (was ohne schematisches Diagramm schwierig ist, BTW), verbindet dieser 5k-Widerstand den GND-Pin des Mikrocontrollers ("uC") mit Pin 5 des TPL5111, und wenn Pin 5 logisch LOW ist, haben Sie ein kleiner, kontinuierlicher (~1mA) Strompfad von +5VDC zu GROUND:

+5 VDC
-> uC VDD (POWER)
   uC GND ->
-> 5k resistor ->
-> TPL5111 pin5 (LOW)
   TPL5111 GND ->
-> GND

Ich empfehle Ihnen, diesen 5k-Widerstand zu entfernen und durch einen 10k-Widerstand zwischen dem Gate des MOSFET und GROUND zu ersetzen, um die Standard-VGS-Spannung des MOSFET auf Null Volt (VGS = 0 V) ​​zu "programmieren". Ich habe das Datenblatt des TPL5111 nicht gelesen, aber während des Power-On-Resets (POR) kann es eine kurze Zeit geben, in der der DRVn-Pin (Pin 5) des TPL51111 schwebend oder instabil ist und der 10k-"Pulldown" -Widerstand am Gate des MOSFET hilft sicherzustellen, dass der MOSFET während dieser Zeit ausgeschaltet bleibt.

Danke, werde es mit einem 10K-Widerstand zwischen Gate und Drain versuchen, habe jetzt auch meinen Schaltplan angehängt
Nein. Setzen Sie den 10k-Widerstand von Gate zu Source (Masse), nicht von Gate zu Drain. Entfernen Sie den Gate-zu-Drain-Widerstand.
10 K zwischen Gate und Source (Masse) hinzugefügt, aber ich sehe immer noch einen kleinen Strom zu meinem MC
@ Gaurav18ca - Sie sagen, dass Sie einen 10k-Widerstand zwischen MOSFET-Gate und -Source hinzugefügt haben. Aber sind Sie der Empfehlung von Jim gefolgt , auch den 5k-Widerstand zwischen Gate und Drain zu entfernen ?
Ja, ich habe es entfernt
Welcher Zahlenwert ist „kleiner Strom“?