🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🔌 Проект: монитор тока зарядки Li-ion аккумулятора на TP4056 и ACS712

Модуль TP4056 и датчик ACS712

TP4056 сам управляет зарядкой аккумулятора 18650, а ACS712, включённый в разрыв цепи заряда, показывает реальный ток в реальном времени — по его падению видно, что зарядка почти завершена.

Как это работает

TP4056 — готовая микросхема линейного заряда Li-ion/Li-po аккумуляторов по схеме CC/CV (постоянный ток, затем постоянное напряжение): сначала она заряжает аккумулятор максимальным безопасным током, а когда напряжение приближается к 4.2В — переключается на поддержание постоянного напряжения, при этом ток заряда плавно снижается. Именно по этому снижению тока удобно отслеживать, насколько близка зарядка к завершению, не дожидаясь, пока сработает встроенный светодиодный индикатор модуля.

ACS712 — датчик тока на эффекте Холла, он измеряет магнитное поле вокруг проводника с током и выдаёт пропорциональное аналоговое напряжение, не разрывая цепь физически (кроме как для включения самого датчика в разрыв). В состоянии нулевого тока выход датчика показывает примерно середину питающего напряжения, а отклонение от этой середины пропорционально силе тока.

Отслеживание тока заряда полезно не только из любопытства — резко упавший ток заряда сразу после подключения разряженного аккумулятора может говорить о его неисправности (внутреннем обрыве или сильной деградации), а слишком долго не падающий ток — о проблеме с самим TP4056 или питанием.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. Разорвите цепь между выходом TP4056 (контакты B+/B-) и аккумулятором и включите в этот разрыв датчик ACS712 — через него должен проходить весь ток заряда.
  2. Аналоговый выход ACS712 (OUT) подключите к A0 на Arduino, VCC и GND датчика — к соответствующим пинам питания.
  3. Сам TP4056 запитывается от USB или внешнего источника 5В как обычно, независимо от Arduino — Arduino здесь только измеряет, не управляет зарядкой.
  4. Перед подключением реального аккумулятора проверьте показания датчика без нагрузки — ток должен быть близок к нулю, иначе придётся скорректировать опорное напряжение в коде под конкретный экземпляр ACS712.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

const int sensorPin = A0; // аналоговый выход датчика ACS712

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

void loop() {
  int raw = analogRead(sensorPin);
  float voltage = (raw / 1023.0) * 5.0;
  // 0.066 В/А — чувствительность варианта ACS712-05A; у плат на 20А это 0.100,
  // у плат на 30А — 0.185 (смотрите маркировку на своей плате)
  float current = (voltage - 2.5) / 0.066;

  Serial.print("Charge current: ");
  Serial.print(current);
  Serial.println(" A");

  if (current < 0.05) {
    Serial.println("Зарядка почти завершена (ток близок к нулю)");
  }
  delay(2000); // опрос раз в 2 секунды достаточен — ток заряда меняется плавно
}

У TP4056 зарядка считается завершённой, когда ток падает примерно до 1/10 от максимального — падение тока ниже 0.05А в этой схеме обычно означает, что аккумулятор почти полностью заряжен.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🔋 индикатор согласованного напряжения PD-три…🌡️ температура на веб-странице и звуковая тре… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 161 ₽ 145 ₽ (экономия 16 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA