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
Auf der MOSFET-Seite
Nachfolgend meine Zweifel
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();
}
}
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Neben dem hilfreichen Vorschlag von Jim Fischer sehe ich noch eine weitere mögliche Ursache für Ihr Problem.
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 :
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- D2
Pin und den 1-MΩ-Widerstand zur Masse und über den MCU- D3
Pin und die LED zur Masse, da Sie die Low-Side einschalten:
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:
D2
GPIO-Pin, sodass er nicht mit dem 1-MΩ-Pulldown-Widerstand oder dem TPL5111- DONE
Pin verbunden ist.D3
Pin und Vdd (dh der positiven Stromschiene) statt zwischen dem D3
Pin 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.Ü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 SW1
in 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 ist angegeben bei aber Sie schalten es mit einer viel niedrigeren Spannung, also ist es so 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.
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.
DreiPhasenEel
Gaurav18ca
SamGibson
SW1
wird 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 durchSW1
, und der Fehler liegt daher nur im Schaltplan).