Microcontrolador de alimentación usando mosfet de canal n y tpl5111

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

Estoy siguiendo http://www.ti.com/product/TPL5111/datasheet/detailed_description y creé la conexión en la placa,

TPL está conectado de la siguiente manera

  1. Pin -1 V+ - al riel de alimentación (5v o batería normal de iones de litio de 4,2v)
  2. Pin -2 GND - GND común
  3. Pin -3 DEMORA - 20Kohm a tierra (~20 segundos de tiempo activo)
  4. Pin -4 EN - GND (Ya que quiero que esto sea un disparo y no como un temporizador) a través del botón pulsador y la otra pata del botón pulsador a V +.
  5. Pin -5 DRV - Puerta a mi MOSFET (mejora del 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 presiono el botón, TPL afirma que el pin DRV es alto, lo que debería habilitar el mosfet
  2. Pin USB MC conectado a V+
  3. MC Ground está conectado Drenaje de Mosfet
  4. La fuente de Mosfet está conectada a Common GND
  5. GATE y DRENAJE están conectados usando una resistencia de 5K ohm

Las siguientes son mis dudas.

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

Subiré mi circuito desde la placa de pruebas, pero necesito 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();
      }
    }

esquemático

simular este circuito : esquema creado con CircuitLab

¿Puede usar el editor de esquemas incorporado para convertir su descripción de texto de su circuito en un esquema?
Disculpas, no tenía idea de que hay un editor de esquemas increíble
De acuerdo con su esquema, cuando SW1se cierra, provoca un cortocircuito directo en la fuente de alimentación. Esto no es sensato, así que verifique y corrija el esquema (esto supone que su hardware real está conectado de manera diferente, sin un cortocircuito directo en el suministro SW1, por lo que el error está solo en el esquema).

Respuestas (2)

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

Conmutación de lado alto frente a lado bajo

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

Observe en la hoja de datos de TPL5111 que el ejemplo de "Aplicación típica" no controla un interruptor de lado bajo , sino que controla un interruptor de lado alto . Tal vez te preguntes por qué eso importa...

Mire este diagrama de su hoja de datos HTML :

Aplicación típica TPL5111

Figura 1: Ejemplo de esquema TPL5111 de su hoja de datos

En ese ejemplo, no hay posibilidad de fugas desde el pin GPIO de la MCU, ni a través de las resistencias pull-up I2C que se muestran en ese ejemplo, cuando se apaga la alimentación con el interruptor de alimentación del lado alto .

Sin embargo, mirando su esquema, dado que está cambiando en el lado bajo , hay rutas de corriente "ocultas" desde el riel de alimentación a través del D2pin MCU y la resistencia de 1MΩ a tierra, y a través del D3pin MCU y el LED a tierra:

Versión esquemática actual

Figura 2: versión actual del esquema de la pregunta

Estos tipos de rutas de corriente "ocultas", a través de pines GPIO, pueden ser suficientes para encender (parcialmente) una MCU. Este es un problema bastante común cuando se utiliza la conmutación del lado bajo, ya que debe considerar todas las rutas posibles a tierra desde cada dispositivo, cuando su conexión a tierra principal (por ejemplo, Vss) está desconectada.

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

  • Desconecte el D2pin GPIO de la MCU para que no esté conectado a la resistencia desplegable de 1 MΩ o al DONEpin TPL5111.
  • Cambie la conexión del LED, de modo que esté entre el D3pin MCU y Vdd (es decir, el riel de alimentación positivo) en lugar de entre el D3pin y tierra. Luego, debe cambiar su código, ya que conducir ese pin MCU High apagará el LED, y conducir el pin Low encenderá el LED.
  • Desconecte cualquier otro pin GPIO que se utilice, pero que no se muestra en el esquema.
  • Además, ¿no debería usar una resistencia para ese LED, sin importar cómo lo conecte?

Luego, verifique nuevamente si su MCU aún enciende el LED, cuando su pin GND está desconectado por el TPL5111 y el MOSFET.


Algunos puntos más:

  • Ya mencioné en un comentario que SW1en su esquema parece incorrecto, ya que cortaría directamente la fuente de alimentación cuando se presiona el interruptor. Sin embargo, supongo que es un error en el esquema y no muestra las conexiones reales que debe hacer SW1.

  • Es posible que su MOSFET FQP30N06 elegido no haga un buen trabajo al encender su carga. Note que su R D S ( o norte ) se especifica en V GRAMO S = 10 V pero lo está cambiando usando un voltaje mucho más bajo, por lo que es R D S ( o norte ) será mayor 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 accionamiento y 50 pF de carga (máximo absoluto 5 mA). Aunque dudo que esto sea un problema con MOSFET pequeños (valores pequeños de capacitancia de puerta), personalmente sugeriría revisar la especificación MOSFET y su idoneidad más de cerca (se me acabó el tiempo). También use un 'alcance para ver la señal de activación de la puerta, para asegurarse de que tenga tiempos de subida/bajada razonables.

  • Dependiendo de las limitaciones de su diseño, la disponibilidad de los componentes, etc., podría considerar invertir la señal TPL5111 DRVn usando un BJT NPN de señal pequeña o un MOSFET de canal N, y usarlo (ahora invertido, es decir, señal baja activa) para conducir la puerta de una señal adecuada . MOSFET de canal P, que actúa como controlador de lado alto . Todo depende de las razones por las que decidiste usar un interruptor de lado bajo en primer lugar.

Gracias por los detalles elaborados sobre los problemas de mi circuito, soy un poco novato pero tomé este tipo de proyecto complejo en busca de una solución de ahorro de batería. No tenía esos tipos de LDO en mi inventario que tiene el pin ENable para encenderlo. Además, según su recomendación para el interruptor lateral bajo, los implementaré y veré cómo se comporta y actualizaré aquí. Gracias por su ayuda Sam y Jim.
@ Gaurav18ca: solo para su información (ya que no creo que se le notifique automáticamente mi edición), agregué otro punto a mi respuesta, que podría usar un MOSFET de canal P como controlador de lado alto, si invierte el Salida TPL5111 DRVn. Es posible que esto no sea posible para usted (por ejemplo, si no tiene los componentes necesarios y no tiene el tiempo/dinero para comprar ninguno), pero puede valer la pena considerar el cambio de lado alto, ya que elimina algunos de los problemas con su diseño existente.
Veo su punto y volveré a él, antes de eso, hice algunas sugerencias anoche, especialmente eliminando la señal de finalización de mc a TPL / y el LED ahora está en el riel +ve y la pierna más pequeña a mc, y cambié el código.
También boceto modificado, por supuesto, no está encendido, pero el voltaje a través de mc usb / gnd está en algún lugar a 300 mV. Sin embargo, mediré la corriente. Sobre el uso de mosfet de canal p - (tengo algunas mejoras, veré si puedo hacer que funcione). Adafruit diseñó especialmente sus tableros tpl5110 impulsados ​​por mosfet de canal p, pero ambos de adafruit se usan para intervalos de tiempo (perno de habilitación cableado a +ve). Estoy empezando a ver problemas con mi cambio de lado bajo (¡nunca escuché eso antes de ayer!) y lo entiendo mejor. Muchas gracias por las ideas.

En el lado MOSFET > 5. La PUERTA y el DRENAJE están conectados usando una resistencia de 5K ohm

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

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

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

Gracias, intentaré con una resistencia de 10K entre Gate y Drain, también adjunto mi esquema ahora
No. Coloque la resistencia de 10k de la puerta a la fuente (tierra), no de la puerta al drenaje. Retire la puerta para drenar la resistencia.
Se agregaron 10 K entre la puerta y la fuente (tierra) pero todavía veo una pequeña corriente en mi mc
@ Gaurav18ca: dice que ha agregado una resistencia de 10k entre la puerta y la fuente MOSFET. Pero, ¿ha seguido la recomendación de Jim de quitar también la resistencia de 5k entre su compuerta y el drenaje?
Sí, lo eliminé.
¿Qué valor numérico es "pequeña corriente"?