
Интернет-магазин «Неглупый Дом»
В каталоге есть батарейные отсеки под 1, 2, 3 и 4 аккумулятора 18650, соединённых последовательно — но модуль зарядки TP4056 рассчитан ровно на ОДНУ Li-ion ячейку (до 4.2В). Этот проект явно показывает правильное сочетание: отсек именно под 1×18650, а не под несколько последовательно соединённых банок.
TP4056 — микросхема заряда для ОДНОЙ литий-ионной ячейки, заряжающая её до 4.2В по профилю CC/CV (постоянный ток, затем постоянное напряжение). Если подключить её к отсеку с 2, 3 или 4 банками, соединёнными ПОСЛЕДОВАТЕЛЬНО (именно так устроены многобаночные отсеки в каталоге — "с проводами послед. подключение"), TP4056 увидит суммарное напряжение всей сборки и либо не зарядит её правильно, либо недозарядит, либо, в худшем реальном случае, банки зарядятся неравномерно без какой-либо балансировки между ними — это настоящее и важное для безопасности несоответствие, а не просто нюанс производительности.
Честная граница применимости: для реального проекта с бóльшей ёмкостью/напряжением, чем одна банка 18650, нужен полноценный многоячеечный BMS-модуль с балансировкой — это отдельный тип устройства, не рассматриваемый в этом простом однобаночном комплекте.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
const int SENSE_PIN = A0;
const float DIVIDER_RATIO = 1.0; // 4.2В ниже предела 5В — делитель здесь не обязателен
const float ARDUINO_VREF = 5.0;
const float LOW_BATTERY = 3.3; // типичный порог разряда одной Li-ion ячейки
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
int raw = analogRead(SENSE_PIN);
float voltage = (raw / 1023.0) * ARDUINO_VREF * DIVIDER_RATIO;
Serial.print("Напряжение батареи: ");
Serial.print(voltage);
Serial.println(" В");
digitalWrite(13, voltage < LOW_BATTERY ? HIGH : LOW);
delay(1000);
}
Дополнительных библиотек не требуется — только `analogRead()`.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 94 ₽ 85 ₽ (экономия 9 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.