
Интернет-магазин «Неглупый Дом»
TP4056 сам управляет зарядкой аккумулятора 18650, а ACS712, включённый в разрыв цепи заряда, показывает реальный ток в реальном времени — по его падению видно, что зарядка почти завершена.
TP4056 — готовая микросхема линейного заряда Li-ion/Li-po аккумуляторов по схеме CC/CV (постоянный ток, затем постоянное напряжение): сначала она заряжает аккумулятор максимальным безопасным током, а когда напряжение приближается к 4.2В — переключается на поддержание постоянного напряжения, при этом ток заряда плавно снижается. Именно по этому снижению тока удобно отслеживать, насколько близка зарядка к завершению, не дожидаясь, пока сработает встроенный светодиодный индикатор модуля.
ACS712 — датчик тока на эффекте Холла, он измеряет магнитное поле вокруг проводника с током и выдаёт пропорциональное аналоговое напряжение, не разрывая цепь физически (кроме как для включения самого датчика в разрыв). В состоянии нулевого тока выход датчика показывает примерно середину питающего напряжения, а отклонение от этой середины пропорционально силе тока.
Отслеживание тока заряда полезно не только из любопытства — резко упавший ток заряда сразу после подключения разряженного аккумулятора может говорить о его неисправности (внутреннем обрыве или сильной деградации), а слишком долго не падающий ток — о проблеме с самим TP4056 или питанием.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
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: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 161 ₽ 145 ₽ (экономия 16 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.