Encender el microcontrolador utilizando n-channel mosfet y tpl5111

1

Estoy tratando de crear un circuito de ahorro de batería hecho en casa para encender mi microcontrolador (nodemcu v2),

Sigo enlace y creé la conexión en el panel,

TPL está conectado de la siguiente manera

  1. Pin -1 V + - para alimentar el riel (5v o batería normal de Li-Ion 4.2v)
  2. Pin -2 GND - GND común
  3. PIN -3 DELAY - 20Kohm a tierra (~ 20 segundos de tiempo de funcionamiento)
  4. Pin -4 EN - GND (ya que quiero que sea un disparo y no un temporizador) a través del botón y otra pata del botón V +.
  5. Pin -5 DRV: puerta a mi MOSFET (mejora de canal N FQP30N06)
  6. Pin -6 HECHO - Pin hecho a MicroController D2 / 2 (depende del tipo esp8266)

En el lado MOSFET

  1. GATE está conectado al Pin 5 anterior, por lo que cada vez que pulso el botón TPL establece el pin DRV alto que debería habilitar el mosfet
  2. pin USB MC conectado a V +
  3. MC Ground está conectado Drain of Mosfet
  4. La fuente de Mosfet está conectada a GND común
  5. GATE y DRAIN se conectan mediante una resistencia de 5K ohmios

Las siguientes son mis dudas

  1. Incluso cuando el TPL DRV está bajo, mi LED externo a MC en el pin 13 está encendido y el voltaje es < 0.5 voltios, ¿el microcontrolador debe estar APAGADO por completo?
  2. Mi intención es adjuntar Reed Switch en lugar del botón pulsador a TPL, por lo que cada vez que abro la puerta, debería encender Mosfet a través de tpl y el microcontrolador debería hacer el trabajo y enviar el DONE para que se apague
  3. Enviar HECHO a través de un microcontrolador no apaga el TPL, pero eso no es algo que me moleste en esta etapa, pero aún me gustaría saberlo

Subiré mi circuito desde el tablero de pruebas, pero debo ponerle etiquetas.

A continuación se muestra un código simple que enciende el LED en el Pin 13 / D7

    #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();
      }
    }

simular este circuito : esquema creado usando CircuitLab

    
pregunta Gaurav18ca

2 respuestas

2

Además de la sugerencia útil de Jim Fischer , veo otra posible causa de su problema.

Conmutación de lado alto frente a lado bajo

  

Incluso cuando el TPL DRV está bajo, mi LED externo a MC en el pin 13 está encendido y el voltaje es < 0.5 voltios, ¿el microcontrolador debe estar APAGADO por completo?

En la hoja de datos TPL5111, observe que el ejemplo de "Aplicación típica" no controla un interruptor lado bajo , sino que controla un interruptor lado alto . Quizás te preguntes por qué eso importa ...

Observe este diagrama en su hoja de datos HTML :

Figura1:EjemplodelesquemaTPL5111desuhojadedatos

Eneseejemplo,nohayposibilidaddefugasenelpinMCUGPIO,niatravésdelasresistenciasdeextracciónI2Cquesemuestraneneseejemplo,cuandoseapagalaalimentaciónusandointerruptordealimentacióndeladoalto.

Sinembargo,mirandosuesquema,yaqueestácambiandoelladobajo,hayrutasactuales"ocultas" desde el riel eléctrico a través del MCU D2 pin y la resistencia de 1MΩ a tierra, y a través de MCU D3 pin y el LED a tierra:

Figura2:Versiónactualdelesquemadelapregunta

Estostiposderutasactuales"ocultas", a través de pines GPIO, pueden ser suficientes para (parcialmente) encender una MCU. Este es un problema bastante común cuando se usa la conmutación de lado bajo, ya que debe considerar cada posible camino a tierra desde cada dispositivo, cuando su main conexión a tierra (por ejemplo, Vss) está desconectado.

Puedes probar esta hipótesis en tu diseño:

  • Desconecte el pin MCU D2 GPIO, para que no esté conectado a la resistencia desplegable de 1MΩ o al pin TPL5111 DONE ..
  • Cambie la conexión del LED, de modo que esté entre el pin MCU D3 y Vdd (es decir, el riel de alimentación positiva) en lugar de entre el pin D3 y tierra. A continuación, deberá cambiar su código, ya que al conducir ese pin MCU Alto se apagará el LED, y al colocar el pin Bajo se encenderá el LED.
  • Desconecte cualquier otro pin GPIO que se use, pero que no se muestre en el esquema.
  • Además, ¿no debería usar una resistencia para ese LED, sin importar cómo se conecte?

Luego, vuelva a verificar si su MCU aún enciende el LED, cuando su pin GND está desconectado por el TPL5111 & MOSFET.

Algunos puntos más:

  • Ya he mencionado en un comentario que SW1 en su esquema parece incorrecto, ya que cortocircuitaría directamente la fuente de alimentación cuando se presiona el interruptor. Sin embargo, asumo que es un error en el esquema y no muestra las conexiones reales que tienes para SW1 .

  • Su MOSFET FQP30N06 elegido no puede hacer un buen trabajo de encendido su carga Observe que su \ $ \ small R_ {DS (on)} \ $ se especifica en \ $ \ small V_ {GS} = 10 \; \ textrm {V} \ $ pero lo está cambiando usando un voltaje mucho más bajo, por lo que su \ $ \ small R_ {DS (on)} \ $ será más alto que su especificación "titular" de 40 mΩ.

  • El TPL5111 está diseñado para conmutar una señal de potencia de nivel lógico, no una puerta MOSFET. Se especifica a 1 mA de unidad y 50 pF de carga (máximo absoluto de 5 mA). Aunque dudo que esto sea un problema con los MOSFET pequeños (valores pequeños de capacidad de compuerta), personalmente sugeriría revisar la especificación del MOSFET y su idoneidad más de cerca (me he quedado sin tiempo). También use un 'alcance' para ver la señal de la unidad de la puerta, para asegurarse de que tenga tiempos de subida / bajada razonables.

  • Dependiendo de las restricciones de diseño, la disponibilidad de los componentes, etc., podría considerar invertir la señal DRVn TPL5111 utilizando una señal pequeña NPN BJT o MOSFET de canal N, y usar eso (ahora invertido, es decir, activo bajo señal) para conducir la puerta de un MOSFET de canal P adecuado, actuando como un controlador high-side . Todo depende de la (s) razón (es) por las que decidió utilizar un interruptor de lado bajo en primer lugar.

respondido por el SamGibson
1
  

En el lado MOSFET > 5. GATE y DRAIN se conectan mediante una resistencia de 5K ohmios

¿Por qué esta resistencia de 5k está conectada entre la GATE y el DRENAJE? Si entiendo su topología de circuito correctamente (lo cual es difícil sin un diagrama esquemático, BTW), esta resistencia de 5k conecta el pin GND del microcontrolador ("uC") al pin 5 en la TPL5111, y cuando el pin 5 es lógico BAJO tendrá una ruta actual pequeña, continua (~ 1mA) de + 5VDC a TERRENO:

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

Le recomiendo que retire esa resistencia 5k y la reemplace con una resistencia de 10k entre la compuerta del MOSFET y el TERRENO para "programar" el voltaje VGS predeterminado del MOSFET a cero voltios (VGS = 0V). No he leído la hoja de datos de TPL5111, pero es posible que haya un corto período de tiempo durante el reinicio de encendido (POR) cuando el pin DRVn (pin5) del TPL51111 está flotando o es inestable, y la resistencia "pull down" de 10k en la compuerta del MOSFET ayudará a garantizar que el MOSFET se mantenga APAGADO durante ese tiempo.

    
respondido por el Jim Fischer

Lea otras preguntas en las etiquetas