编程技术分享平台

网站首页 > 技术教程 正文

ESP32、ESP8266、Arduino 的锁存电源开关电路(自动关机电路)

xnh888 2025-05-09 22:23:26 技术教程 21 ℃ 0 评论

自动关机电路图

在本文中,我们将向您展示如何构建锁存电源开关电路,也称为自动断电电路。您可以使用此电路自动关闭 ESP32、ESP8266、Arduino 或任何其他微控制器。

该电路允许您在微控制器不执行任何任务时完全切断电源。换句话说,一旦微控制器完成执行任务,它就会通过软件自行关闭。这是使电池在您的电子项目中持续更长时间的好方法。

概述

在继续本教程之前,这里是我们将要做什么的高级概述:

  • 当您按下电路的按钮或使用任何其他组件关闭电路时,微控制器会受到电源驱动。因此,您的 ESP32、ESP8266 或 Arduino 开启。
  • 您将 LATCH 引脚(在代码中设置)设置为 HIGH 以保持电路通电。
  • 微控制器执行其任务。在我们的示例中,它什么也不做——它只是等待 10 秒。您可以修改代码以执行有用的任务。
  • 将 LATCH 引脚设置为低电平,因此微控制器自动关机。
  • 当 LATCH 引脚设置为 LOW 时,电源被切断。

自动关机与深度睡眠

自动断电电路完全切断电源。因此,当微控制器不执行任何任务时,没有功耗。

在深度睡眠模式下,功耗比活动模式低得多。但是,始终存在功耗,因为您的微控制器始终处于开机状态(有关 ESP8266 深度睡眠的介绍,您可以阅读以下文章:ESP8266 Deep Sleep with Arduino IDE)。

所需零件

要遵循本教程,您需要以下部分:

  • 微控制器或开发板,例如:
    • ESP32 开发板(阅读 ESP32 开发板评论)
    • ESP8266 NodeMCU (阅读 ESP8266 板评论)
    • Arduino UNO(阅读最佳 Arduino 入门套件)
  • NDP6020P 晶体管 P 沟道 MOSFET
  • 2N3904 晶体管 BJT NPN
  • 电阻器:220K Ohm、2x 100K Ohm、10K Ohm 和 220 Ohm
  • 2 个二极管(例如:1N5819)
  • 开关/按钮
  • 5V电源

以下电路图显示了锁存电源开关电路(自动断电电路)图。

右侧编号为 1、2 和 3 的端子应连接到您的微控制器板。

  • 引脚 1 连接到 5V。
  • 引脚 2可以连接到微控制器的任何数字引脚。在我们的示例中,我们将该引脚连接到 GPIO 5 / 数字 5。
  • 引脚 3 连接到 GND。

自动关机电路的工作原理

1)当您按下开关或闭合电路时,有电到达2N3904晶体管的基极。因此,2N3904 被拉低,将 MOSFET 的栅极 (G) 拉至 GND。

2) P 沟道 MOSFET 在其栅极相对于源极为负时导通。当您按下按钮时,MOSFET 的栅极被拉至 GND,允许电流流向 VIN 引脚,这将为微控制器供电。只要 MOSFET 的栅极被拉至 GND,就会发生这种情况。

3)为了在释放按钮后保持 MOSFET 的栅极拉至 GND,我们通过微控制器的 GPIO 发送一个 HIGH 信号。当我们发送一个 HIGH 信号时,有功率到达晶体管的基极。

4) 因此,我们确保 MOSFET 的栅极被拉至 GND,电流流向 VIN 端子为我们的微控制器供电。

5)当我们想要关闭电路时,我们只需将GPIO设置为LOW即可。发生这种情况时,没有功率到达晶体管的基极,因此 MOSFET 不会让电流流向 VIN 引脚,因此没有功耗。

自动关机电路 - ESP32

如果您使用的是 ESP32,以下是电路接线方法。

自动关机电路 - ESP8266

这是ESP8266的图表。

自动关机电路 - Arduino

最后,这是将锁存电路连接到 Arduino 的方法。

上传代码

在继续本教程之前,您应该准备好您的 Arduino IDE。如果您尚未安装 ESP32 或 ESP8266,请按照以下教程之一在 Arduino IDE 上安装。如果您使用的是 Arduino,则无需安装其他任何东西。

  • 在 Arduino IDE 中安装 ESP32 开发板:
    • 视窗说明
    • Mac 和 Linux 说明
  • 在 Arduino IDE 中安装 ESP8266 开发板
/*********
  Rui Santos
  Complete project details at https://randomnerdtutorials.com  
*********/

// Define power latch pin for ESP32 (GPIO 5) / ESP8266 (GPIO 5) / Arduino (Digital 5)
const int powerLatch = 5;

void setup() {
  // Define pin as an OUTPUT
  pinMode(powerLatch, OUTPUT); 
  
  // Keeps the circuit on
  digitalWrite(powerLatch, HIGH);
  // Waits for 10 seconds
  delay(10000);
  // Turns the power latch circuit off
  digitalWrite(powerLatch, LOW);
}

void loop() {
  
}

查看原始代码

代码如何运作

让我们仔细看看代码是如何工作的,以及如何在项目中使用它。

我们首先定义电源锁存器引脚。我们正在使用通用输入输出接口 5,但您可以使用任何其他引脚。此 GPIO 连接到锁存电源电路引脚 2 端子。

const int powerLatch = 5;

在里面设置(),我们将电源锁存器引脚定义为输出。

pinMode(powerLatch, OUTPUT);

接下来,我们将电源锁存引脚设置为高的. 当我们将其设置为高时,我们确保有电源为微控制器供电。

digitalWrite(powerLatch, HIGH);

接下来,我们等待 10 秒。

delay(10000);

之后,我们将电源锁存器引脚设置为低的. 当它设置为低时,电源被切断,单片机关闭。

digitalWrite(powerLatch, LOW);

您应该在将电源锁存器引脚设置为之后添加要执行的任务高的并在将其设置为低的.

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表