• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

esp-01 deepSleep и ток потребления 0.7мА

zix07

New member
Здравствуйте. Прошу помощи или куда копать. Есть собственно плата esp-01, есть собранная на стенде схема:
Esp8266_voltage_regulator_scheme_1.png
К этой схеме повешена кнопка обычная между GPIO2 и GND - по логике, если я вывожу из глубокого сна контроллер путем нажатия на кнопку (показана на схеме выше), и если нажата кнопка GPIO2 - то отослать GET-запрос. Контроллер помещаю в бесконечный глубокий сон (0 в параметре deepSleep).
С2 - видимо ошибка на схеме, я взял на 100мкФ. 16 нога припаяна к Reset, дежурный светодиод выпаян:
20240503_070028542_iOS.jpg
Подаю от качественного лабораторника 5В на MCP1700, на выходе порядка 3.27-3.3В. С дежурным LED потребление 1мА, без него 0.7мА. Есть скетч:
Код:
#include <ESP8266WiFi.h>
#include <Bounce2.h>

const char* ssid = "WiFi_SSID";
const char* password = "WiFi_pass";

const char* server = "IP_address";
const char* resource = "URL_PATH";

#define PIN_BUTTON 2
bool buttonPressed = false;

Bounce debouncer = Bounce();

//byte butState = LOW;
//unsigned long msecLst;

void setup() {
  Serial.begin(9600);

  buttonPressed = false;

  // debouncer
  pinMode(2, INPUT_PULLUP);
  debouncer.attach(PIN_BUTTON);
  debouncer.interval(5);  // Интервал, в течение которого мы не будем получать значения с пина

#define Timeout 3000

  Serial.println("awakening...");

  unsigned long start = millis();
  while (millis() - start <= Timeout) {
    //int  buttonstate = digitalRead(buttonPin);
    debouncer.update();
    int buttonstate = debouncer.read();

    if (buttonstate == LOW && !buttonPressed) {
      Serial.println("Button pressed");
      buttonPressed = true;
      initWifi();
      makeIFTTTRequest();
    }
  }

  // ESP8266 будет оставаться в режиме глубокого сна,
  // пока на контакт RESET не будет подан сигнал «LOW»
  // (например, с помощью нажатия на кнопку):
  ESP.deepSleep(0);
}

void loop() {
}

void initWifi() {
  Serial.print("Connecting to: ");  //  "Подключаемся к: "
  Serial.print(ssid);
  WiFi.begin(ssid, password);

  int timeout = 10 * 4;  // 10 секунд
  while (WiFi.status() != WL_CONNECTED && (timeout-- > 0)) {
    delay(250);
    Serial.print(".");
  }
  Serial.println("");

  if (WiFi.status() != WL_CONNECTED) {
    Serial.println("Failed to connect, going back to sleep");
    //  "Подключиться не удалось,
    //   переходим обратно в режим сна"
  }

  Serial.print("WiFi connected in: ");
  //  "Время подключения к WiFi: "
  Serial.print(millis());
  Serial.print(", IP address: ");  //  ", IP-адрес: "
  Serial.println(WiFi.localIP());
}

void makeIFTTTRequest() {
  Serial.print("Connecting to ");  //  "Подключаемся к "
  Serial.print(server);

  WiFiClient client;
  int retries = 5;
  while (!!!client.connect(server, 8001) && (retries-- > 0)) {
    Serial.print(".");
  }
  Serial.println();
  if (!!!client.connected()) {
    Serial.println("Failed to connect, going back to sleep");
    //  "Подключиться не удалось,
    //   возвращаемся ко сну"
  }

  Serial.print("Request resource: ");  //  "Ресурс запроса: "
  Serial.println(resource);
  client.print(String("GET ") + resource + " HTTP/1.1\r\n" + "Host: " + server + "\r\n" + "Connection: close\r\n\r\n");

  int timeout = 5 * 10;  // 5 секунд
  while (!!!client.available() && (timeout-- > 0)) {
    delay(100);
  }
  if (!!!client.available()) {
    Serial.println("No response, going back to sleep");
    //  "Нет ответа, возвращаемся ко сну"
  }
  while (client.available()) {
    Serial.write(client.read());
  }

  Serial.println("\nclosing connection");
  //  "отключаем соединение"
  client.stop();
}
Если схему подключать через AMS1117, то потребление 4мА. Если подключить напрямую от лабораторника, то потребление порядка 0.4мА. Ток старта (загрузки) микроконтроллера порядка 70ма. Тут писали потребление несколько-десятков микроампер. Не могу добиться этого. Батарейку высадит очень быстро при таком потреблении. Буду благодарен за любые наводки в правильную сторону.
 

pvvx

Активный участник сообщества
1. Чем и где делалось измерение?
2. Сколько в реальности потребляет "MCP1700" без нагрузки? (может это поделка или уже зажарили большим током)

MCP1700 (5->3.3В) в SOT23 при правильной распайке имеет 230.0°C/Watt. ESP8266 в режиме AP имеет средний ток ~110..120 мА, что даст нагрев на 43..47 °C (при +25С -> +72 °C), а в моменты передачи (240 мА) нагреет кристалл до 120°C

"С2 - видимо ошибка на схеме, я взял на 100мкФ" - если электролит, то будет доп. утечка от нескольких мкА до сотен мкА в зависимости от качества и типа этого кондера.
Дешевый керамический на 100 мкФ (или их набор) тоже будет иметь утечку, но до пары мкА.
 

pvvx

Активный участник сообщества
Непромытая (на фото) плата может дать ещё несколько мкА...
 

zix07

New member
1. Чем и где делалось измерение?
Делал тестром своим штатным, 3 знака после запятой. Подключал в разрыв между источником питания и МК. Он может не очень точный, но "порядок" потребления показывает.
если электролит, то будет доп. утечка от нескольких мкА до сотен мкА в зависимости от качества и типа этого кондера.
Да, там электролитический кондер и керамический. Убрал, потребление упало на 0.01мА, т.е. вместо 0.7мА, стало 0.69мА.
2. Сколько в реальности потребляет "MCP1700" без нагрузки?
0.45мА - это на втором экземпляре. На первом был порядка 2мА - видимо брак какой-то. Включил его в схему, общее потребление стало 0.47мА, значит, сам МК стал потребляет 0.02мА и мне нужно что-то делать с MCP1700, верный ход мыслей?
Непромытая (на фото) плата может дать ещё несколько мкА...
Изопропиловым спиртом могу промыть?
 

pvvx

Активный участник сообщества
ничего не понимаю, смотрю на 3ем экземпляре, холостой ток потребления порядка 7мА..
Если отключить ESP-01 (но емкость на входе 5B и выходе 3.3В оставить), то ток по 5В на MCP1700 должен быть:
MCP1700 Low Quiescent Current LDO -> 1.6 µA Typical Quiescent Current

Без конденсаторов на входе и выходе возможна генерация и замеры будут недостоверны...
Типовое подключение в PDF подразумевает емкости по 1 мкФ на входе и выходе:
1714751185066.png
 

pvvx

Активный участник сообщества
На али в 90% случаев продают подделку, а не MCP1700.
Отзывы в али:
1. Спасибо, заказ получен. Но , картинка опять не похожа на достав ленный товар.
2. Товар не соответствует заказанному. Другая маркировка и характеристики. Спорю.
(маркировка 7830 :)
3. пришли с маркировкой CSY1 (на 5B вместо 3.3 :)
...

Такой хлам в единичных экземплярах стоит покупать только в оф. магазинах.
Типа https://www.chipdip.ru/product/mcp1700-3302e-to-microchip
 
Сверху Снизу