Apa Arti mAh? Penjelasan Kapasitas Baterai, Wh, dan Waktu Pakai
Apa arti mAh dan apa bedanya dengan Wh? Ukur arus proyek Arduino-mu, hitung umur baterai, dan bandingkan baterai AA, 9V, 18650, dan LiPo.
Apa arti mAh? Singkatnya, mAh (miliampere-jam) adalah satuan kapasitas yang menunjukkan berapa banyak muatan listrik yang disimpan sebuah baterai. 1 mAh berarti arus 1 miliampere yang mengalir selama 1 jam, jadi baterai berkapasitas 2000 mAh secara teori bisa memberi daya rangkaian yang menarik 20 mA selama 100 jam, atau rangkaian yang menarik 200 mA selama 10 jam. Tapi angka itu saja belum cukup: tegangan baterai, arus yang kamu tarik, suhu, dan regulator di antara baterai dan rangkaianmu semuanya bisa mengubah waktu pakai sebenarnya secara drastis.
Ketika kamu membuat proyek bertenaga baterai dengan Arduino, ESP32, atau Raspberry Pi Pico, pertanyaan pertamanya selalu sama: baterai ini akan bertahan berapa jam atau berapa hari? Di panduan ini kamu akan belajar arti mAh dan Wh, kapasitas nyata baterai AA, 9V, 18650, dan LiPo, cara mengukur arus yang ditarik proyekmu dengan multimeter dan INA219, cara menghitung waktu pakai dengan rumus, cara menghubungkan baterai secara seri dan paralel, apa itu rating C, dan kenapa baterai 9V adalah pilihan yang buruk, semuanya dengan angka nyata.

Apa arti mAh? Penjelasan kapasitas baterai
Arus diukur dalam ampere (A), dan kapasitas dalam ampere-jam (Ah). Untuk baterai kecil kita memakai miliampere-jam, yaitu seperseribunya: 1 Ah = 1000 mAh. Dalam istilah fisika, ini adalah muatan listrik; 1 mAh sama dengan 3,6 coulomb. Produsen mengukur kapasitas pada arus pengosongan tertentu sampai tegangan cut-off tertentu. Makin besar arusnya, makin banyak tegangan yang hilang di hambatan dalam baterai, reaksi kimianya tidak bisa mengejar, dan tegangan cut-off tercapai lebih cepat, sehingga baterai yang sama memberikan mAh lebih sedikit pada arus tinggi. Cuaca dingin juga menurunkan kapasitas; baterai alkaline melemah dengan jelas di bawah 0 °C. Tabel di bawah menunjukkan bagaimana arus yang kamu tarik mengubah kapasitas baterai alkaline AA, berdasarkan data Energizer (sampai 0,8 V, pada 21 °C).
| Arus kontinu | Perkiraan kapasitas | Perkiraan waktu pakai |
|---|---|---|
| 25 mA | 3000 mAh | 120 jam |
| 100 mA | 2500 mAh | 25 jam |
| 250 mA | 2000 mAh | 8 jam |
| 500 mA | 1500 mAh | 3 jam |
Bedanya mencolok: ketika arus dinaikkan 20 kali lipat, waktu pakai tidak turun 20 kali lipat, tetapi 40 kali lipat. Jadi anggap angka mAh di label sebagai kondisi terbaik. Di proyek nyata ada satu kerugian lagi: rangkaian berhenti sebelum baterai benar-benar habis. Regulator Arduino Uno tidak bisa lagi mempertahankan 5 V begitu inputnya turun di bawah 7 V, dan satu sel lithium sebaiknya diputus di sekitar 3,0–3,3 V supaya umurnya tidak berkurang. Energi yang masih tersisa di baterai pada titik itu tidak pernah terpakai.
Apa arti Wh? mAh vs Wh
mAh hanya memberi tahu jumlah muatan; untuk mengetahui energi baterai, kamu harus mengalikannya dengan tegangan. Satuan energi adalah watt-jam (Wh), dan rumusnya: Wh = mAh × V / 1000. Misalnya, sel 18650 3,7 V 3000 mAh menyimpan 3,7 × 3 = 11,1 Wh. Baterai AA 2500 mAh di atas kertas menghasilkan 1,5 × 2,5 = 3,75 Wh, tetapi karena tegangan rata-rata sel alkaline turun ke 1,2–1,3 V selama pengosongan, angka sebenarnya sekitar 3 Wh. Itulah sebabnya membandingkan baterai dengan tegangan berbeda hanya dari mAh-nya itu menyesatkan: baterai 9V 550 mAh terlihat jauh lebih kecil daripada AA 2500 mAh, padahal dengan sekitar 4 Wh energinya sedikit lebih banyak. Mana yang lebih awet di proyekmu bergantung pada jenis regulator di antaranya; kamu akan melihatnya di bagian waktu pakai. Untuk cepat menghitung hubungan antara daya dan arus (P = V × I), kamu bisa memakai kalkulator hukum Ohm.
Tabel perbandingan baterai AA, 9V, 18650, dan LiPo
| Baterai | Tegangan nominal | Kapasitas umum | Energi | Arus yang nyaman | Bisa diisi ulang? |
|---|---|---|---|---|---|
| AAA alkaline | 1,5 V | 1000–1200 mAh | ≈1,3 Wh | Rendah (≈100 mA) | Tidak |
| AA alkaline | 1,5 V | 2000–3000 mAh (bergantung pada arus) | ≈3 Wh | Sedang (efisien sampai ≈250 mA) | Tidak |
| AA NiMH | 1,2 V | 1900–2500 mAh | ≈2,5 Wh | Tinggi (beberapa A) | Ya |
| 9V alkaline | 9 V | 400–600 mAh | ≈4 Wh | Rendah (≈50 mA) | Tidak |
| Baterai koin CR2032 | 3 V | ≈235 mAh | ≈0,7 Wh | Sangat rendah (µA sampai beberapa mA) | Tidak |
| 18650 Li-ion | 3,6–3,7 V | 2000–3500 mAh | 7–13 Wh | Tinggi (5–30 A tergantung selnya) | Ya |
| LiPo 1S (mis. 1000 mAh) | 3,7 V | Ada model dari 100 sampai 5000 mAh | ≈3,7 Wh | Sesuai rating C di label | Ya |
| Power bank 10.000 mAh | 5 V (USB) | ≈6000 mAh (pada 5 V) | ≈37 Wh | 1–3 A | Ya |
Ketika membaca tabel, ingat: sel lithium seperti 18650 dan LiPo menyimpan energi paling banyak untuk bobotnya; satu 18650 menyimpan energi yang hampir sama dengan total empat baterai alkaline AA, dengan bobot sekitar separuhnya. Baterai alkaline bagus untuk perangkat berarus rendah yang lama disimpan di rak, karena kapasitasnya hanya berkurang beberapa persen per tahun; tetapi di bawah beban berarus tinggi seperti motor atau servo, tegangannya cepat anjlok. Sel isi ulang NiMH mudah memberikan arus tinggi meskipun tegangannya hanya 1,2 V, dan jenis self-discharge rendah (LSD) tetap terisi selama berbulan-bulan. Baterai koin CR2032 hanya untuk modul jam dan sensor yang tidur di level mikroampere; baterai ini sama sekali tidak bisa memberi daya ESP32 yang sedang terhubung ke Wi-Fi.

Kenapa baterai 9V pilihan yang buruk?
Baterai 9V berbentuk kotak sering ada di starter kit karena konektor jepretnya langsung masuk ke jack DC Arduino, tetapi baterai ini termasuk pilihan terburuk untuk proyek Arduino bertenaga baterai. Di dalamnya ada enam sel kecil yang disusun seri, jadi kapasitasnya hanya 400–600 mAh. Menurut data Energizer, baterai alkaline 9V yang dikosongkan sampai 4,8 V memberikan sekitar 600 mAh pada 10 mA, 570 mAh pada 25 mA, dan hanya 450 mAh pada 50 mA. Di sisi lain, regulator Arduino Uno butuh minimal 7 V di jack DC; di bawah beban, tegangan baterai turun di bawah angka itu dalam beberapa jam dan sisa energinya tidak bisa dipakai. Itulah sebabnya Uno yang menarik sekitar 50 mA biasanya hanya berjalan beberapa jam dengan baterai 9V, sering kali 4–8 jam.
- Kapasitas rendah: hanya 400–600 mAh dibandingkan 2000–2500 mAh untuk pack 6×AA, artinya waktu pakai lebih dari empat kali lebih singkat pada tegangan 9 V yang sama.
- Hambatan dalam tinggi: ketika servo mulai bergerak atau relay berpindah, tegangannya langsung anjlok dan Arduino reset.
- Kerugian di regulator: regulator linear Uno mengubah selisih 4 V antara 9 V dan 5 V menjadi panas; pada 50 mA, sekitar 0,2 W dari 0,45 W yang ditarik dari baterai terbuang.
- Energi yang mahal: biaya per Wh-nya jelas lebih tinggi daripada baterai AA, dan baterai 9V NiMH isi ulang hanya punya 170–300 mAh.
- Di mana baterai ini cocok: baterai 9V sangat pas untuk detektor asap, multimeter, atau perangkat yang menarik beberapa mA dan lama menganggur. Untuk Arduino, pilih pack 6×AA, pack 18650 2S, atau power bank; detailnya ada di Cara memberi daya ke Arduino dengan baterai.
Mengukur arus yang ditarik proyek Arduino-mu
Untuk menghitung umur baterai, kamu harus tahu dulu berapa arus yang ditarik proyekmu. Mengukur lebih baik daripada menebak, karena konsumsi board itu sendiri, LED power, dan regulator sering menarik arus lebih besar daripada sensornya. Cara paling mudah adalah memasang multimeter secara seri di antara baterai dan rangkaian. Untuk proyek dengan siklus sleep/bangun, sensor arus seperti INA219 memberi hasil lebih baik, karena bisa menangkap puncak arus yang singkat dan rata-rata sebenarnya. Untuk detail rentang dan soket multimeter, lihat Cara Memakai Multimeter.
- Matikan rangkaian; colokkan probe merah ke soket mA multimeter dan probe hitam ke COM. Kalau menurutmu arusnya bisa melebihi 200 mA, mulai dari soket 10A.
- Putar sakelar ke arus DC (A⎓), dan ke rentang 200 mA kalau multimeternya bukan auto-range.
- Lepaskan kabel positif baterai dari rangkaian; tempelkan probe merah ke kutub positif baterai dan probe hitam ke input positif rangkaian. Dengan cara ini seluruh arus mengalir lewat multimeter.
- Jalankan rangkaian dan baca nilainya. Ukur terpisah ketika servo bergerak, ketika Wi-Fi sedang menyambung, atau ketika relay aktif, lalu catat arus untuk setiap kondisi.
- Kalau arus sleep-nya di kisaran mikroampere, pindah ke rentang µA. Di rentang ini board mungkin tidak mendapat arus yang cukup untuk boot; jembatani kedua probe dengan kabel jumper selama start-up dan lepaskan begitu board masuk sleep.
- Masukkan arus yang kamu ukur, bersama lama waktu di setiap kondisi, ke rumus arus rata-rata di bawah.
| Board atau modul | Arus umum | Catatan |
|---|---|---|
| Arduino Uno R3 | 45–50 mA | Sekitar 30 mA bahkan dalam mode sleep (chip USB, regulator, LED) |
| Arduino Nano (CH340) | ≈20 mA | LED power memakai beberapa mA |
| Arduino Pro Mini 3,3 V / 8 MHz | Beberapa mA | Level µA dalam sleep setelah LED dan regulatornya dilepas |
| ESP32 DevKit, Wi-Fi mati | 40–70 mA | Bergantung pada frekuensi CPU |
| ESP32 DevKit, Wi-Fi tersambung | Rata-rata 80–130 mA | Puncak 240 mA atau lebih ketika mengirim |
| ESP32 deep sleep (modul polos) | ≈10 µA | Sering beberapa mA di board pengembangan |
| Raspberry Pi Pico (MicroPython) | 20–25 mA | Jelas lebih tinggi di Pico W dengan Wi-Fi menyala |
| LED (220 Ω, 5 V) | 10–15 mA | Bergantung pada kecerahan |
| LCD I2C 16x2 | 20–30 mA | Sebagian besar untuk lampu latar |
| OLED 0,96 inci (SSD1306) | 10–25 mA | Bergantung pada jumlah piksel yang menyala |
| Servo SG90 | 5–10 mA diam, 100–250 mA ketika bergerak | 0,5 A atau lebih ketika tertahan (stall) |
| Sensor jarak HC-SR04 | ≈15 mA | Selama mengukur |
| Modul relay 5 V (aktif) | 70–80 mA | Selama kumparannya dialiri arus |
| GPS NEO-6M | 40–50 mA | Selama mencari satelit |
Mengukur arus dan mAh terpakai dengan INA219
INA219 adalah modul sensor arus dan tegangan I2C yang kecil. Modul ini mengukur tegangan di resistor shunt 0,1 Ω pada board-nya dengan resolusi 12-bit, dan membaca arus sampai sekitar ±3,2 A di rangkaian hingga 26 V dengan resolusi kira-kira 0,1 mA. Alamat I2C bawaannya 0x40. Modul ini dipasang seri di jalur positif rangkaian yang diukur: positif baterai ke Vin+, dan Vin− ke input positif rangkaian. Arduino yang melakukan pengukuran diberi daya dari USB, dan GND-nya dihubungkan ke GND rangkaian yang diuji. Yang kamu butuhkan hanya library Adafruit INA219 dari Library Manager di Arduino IDE. INA219 tidak bisa membaca arus sleep di level mikroampere; ukur yang itu dengan rentang µA di multimeter.
| Pin INA219 | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| VCC | 5V | 3V3 | 3V3(OUT) |
| GND | GND | GND | GND |
| SDA | A4 | GPIO 21 | GP4 |
| SCL | A5 | GPIO 22 | GP5 |
| Vin+ | Positif baterai (+) | Positif baterai (+) | Positif baterai (+) |
| Vin− | Input positif rangkaian yang diuji | Input positif rangkaian yang diuji | Input positif rangkaian yang diuji |
| Negatif baterai (−) | GND (bersama) | GND (bersama) | GND (bersama) |
1// INA219 ile akım, harcanan mAh ve pil ömrü / current, used mAh and battery life with INA219
2#include <Wire.h>
3#include <Adafruit_INA219.h>
4
5Adafruit_INA219 ina219; // varsayılan adres 0x40 / default address 0x40
6
7const float CAPACITY_MAH = 2500.0; // pilin etiket kapasitesi / rated battery capacity
8const float USABLE = 0.85; // kullanılabilir oran / usable share
9
10float usedMah = 0; // toplam harcanan yük / total charge used
11float secMaMs = 0; // son saniyenin mA x ms toplamı / mA x ms of the last second
12unsigned long startMs, lastSample, lastPrint;
13
14void setup() {
15 Serial.begin(9600);
16 if (!ina219.begin()) {
17 Serial.println(F("INA219 bulunamadi / INA219 not found"));
18 while (true) {}
19 }
20 ina219.setCalibration_32V_1A(); // 1 A'e kadar ince ölçüm / finer steps up to 1 A
21 startMs = lastSample = lastPrint = millis();
22}
23
24void loop() {
25 unsigned long now = millis();
26
27 if (now - lastSample >= 10) { // 10 ms'de bir örnek / one sample every 10 ms
28 float mA = ina219.getCurrent_mA();
29 secMaMs += mA * (now - lastSample); // akım x süre / current x time
30 lastSample = now;
31 }
32
33 if (now - lastPrint >= 1000) { // saniyede bir rapor / report once a second
34 lastPrint = now;
35 usedMah += secMaMs / 3600000.0; // mA x ms -> mAh
36 secMaMs = 0;
37 float avgMa = usedMah / ((now - startMs) / 3600000.0); // ortalama akım / average current
38 float volts = ina219.getBusVoltage_V() + ina219.getShuntVoltage_mV() / 1000.0; // pil gerilimi / battery voltage
39
40 Serial.print(F("Pil / Battery: "));
41 Serial.print(volts, 2);
42 Serial.print(F(" V | Ort / Avg: "));
43 Serial.print(avgMa, 1);
44 Serial.print(F(" mA | Harcanan / Used: "));
45 Serial.print(usedMah, 2);
46 Serial.print(F(" mAh"));
47 if (avgMa > 0.5) {
48 Serial.print(F(" | Sure / Runtime: "));
49 Serial.print(CAPACITY_MAH * USABLE / avgMa, 1); // saat / hours
50 Serial.print(F(" h"));
51 }
52 Serial.println();
53 }
54}Kode ini membaca arus setiap 10 milidetik dan menjumlahkan hasil kali arus × waktu untuk mendapatkan mAh yang terpakai; dengan cara ini pulsa arus singkat seperti pengiriman Wi-Fi atau gerakan servo ikut masuk ke rata-rata. Sekali per detik, kode mencetak tegangan baterai, arus rata-rata sejauh ini, kapasitas yang terpakai, dan perkiraan waktu pakai berdasarkan 85% kapasitas tertulis ke Serial Monitor. Biarkan berjalan minimal satu siklus kerja penuh, misalnya cukup lama untuk mencakup satu siklus sleep dan bangun yang lengkap. Untuk beban di atas 1 A, pakai setCalibration_32V_2A(). Kode yang sama berjalan tanpa perubahan di ESP32 dengan GPIO 21 dan 22; untuk bantuan soal Serial Monitor, lihat Serial Monitor Arduino.
Menghitung waktu pakai: kapasitas / arus × efisiensi
Begitu arus rata-rata diketahui, rumus dasarnya sederhana: Waktu pakai (jam) = Kapasitas (mAh) / Arus rata-rata (mA) × Efisiensi. Faktor efisiensi 0,85 adalah titik awal yang bagus; faktor ini memperhitungkan kapasitas yang hilang pada arus tinggi dan di cuaca dingin, rangkaian yang berhenti sebelum baterai benar-benar kosong, dan penuaan baterai. Rumus ini berlaku kalau tidak ada regulator di antara baterai dan rangkaian, atau kalau regulatornya linear (regulator 5 V di Uno, AMS1117, 7805), karena di regulator linear arus input sama dengan arus output dan selisih tegangannya menjadi panas. Kalau kamu memakai konverter switching seperti modul boost atau buck, hitung dengan energi: Waktu pakai (jam) = Energi baterai (Wh) × Efisiensi / Daya beban (W). Di sini efisiensinya adalah efisiensi konverter 85–90% dikalikan porsi baterai yang bisa dipakai; 0,75–0,8 adalah angka yang realistis.
| Skenario | Arus atau daya rata-rata | Baterai | Perhitungan | Perkiraan waktu pakai |
|---|---|---|---|---|
| Uno + sensor, pack 6×AA di jack DC | 55 mA | AA alkaline, 2500 mAh | 2500 / 55 × 0,85 | ≈39 jam |
| Uno yang sama dengan baterai alkaline 9V | 55 mA | 9V, ≈450 mAh | 450 / 55 × 0,85 | ≈7 jam (praktiknya lebih singkat) |
| Nano + DHT11 + OLED, 3×AA ke pin 5V | 35 mA | AA alkaline, 2500 mAh | 2500 / 35 × 0,85 | ≈61 jam |
| ESP32 DevKit dengan Wi-Fi selalu menyala, 18650 + boost 5 V | 5 V × 110 mA = 0,55 W | 18650, 3000 mAh (11,1 Wh) | 11,1 × 0,8 / 0,55 | ≈16 jam |
| Pico di VSYS dengan 3×AA NiMH | ≈0,1 W | 3 × 1,2 V × 2000 mAh = 7,2 Wh | 7,2 × 0,8 / 0,1 | ≈58 jam |
Untuk proyek yang tidur dan bangun, kamu perlu arus rata-ratanya dulu: Arus rata-rata = (Arus bangun × Waktu bangun + Arus sleep × Waktu sleep) / Waktu total. Misalnya, modul ESP32 polos yang bangun selama 5 detik setiap 10 menit dengan arus 120 mA, lalu tidur di 10 µA (0,01 mA) selama 595 detik sisanya, punya rata-rata (120 × 5 + 0,01 × 595) / 600 ≈ 1,01 mA. Dengan 18650 3000 mAh, hasilnya 3000 / 1,01 × 0,85 ≈ 2520 jam, atau sekitar 3,5 bulan. Kalau kode yang sama berjalan di board pengembangan yang menarik 5 mA ketika sleep, rata-ratanya naik menjadi 5,96 mA dan waktu pakainya turun menjadi sekitar 18 hari. Daripada menghitung manual, kamu bisa memakai kalkulator umur baterai; cukup masukkan kapasitas, arus bangun dan sleep, serta interval bangunnya. Begitu arus rata-rata turun di bawah 0,1 mA, self-discharge (pengosongan sendiri) baterai juga menjadi faktor penentu: sel Li-ion kehilangan sekitar 2–3% kapasitasnya per bulan.
ESP32: mengukur waktu bangun untuk memperkirakan umur baterai
Konsumsi ESP32 bisa berbeda ribuan kali lipat tergantung mode kerjanya. Menurut datasheet Espressif, chip ini menarik hingga 240 mA ketika mengirim lewat Wi-Fi, sekitar 100 mA ketika menerima, 20–68 mA dengan Wi-Fi mati (modem sleep), sekitar 0,8 mA dalam light sleep, dan hanya 10 µA dalam deep sleep. Itulah sebabnya yang benar-benar menentukan umur baterai adalah lama waktu bangun: menyambung ke Wi-Fi sering butuh 1–3 detik, dan energi yang terpakai dalam beberapa detik itu lebih besar daripada berjam-jam sleep. Kode di bawah menyimpan lama board terjaga di memori RTC setiap kali bangun dan, dengan arus yang kamu ukur, menghitung arus rata-rata dan perkiraan umur baterai.
1// ESP32 derin uyku ve pil ömrü tahmini / ESP32 deep sleep and battery life estimate
2RTC_DATA_ATTR int bootCount = 0; // derin uykuda silinmez / survives deep sleep
3RTC_DATA_ATTR unsigned long lastAwakeMs = 0; // önceki uyanık süre / previous awake time
4
5const float ACTIVE_MA = 120.0; // ölçtüğün uyanık akım / measured awake current
6const float SLEEP_MA = 0.01; // ölçtüğün uyku akımı (10 µA) / measured sleep current (10 µA)
7const int SLEEP_S = 600; // 10 dakika uyku / 10 minutes of sleep
8const float CAPACITY_MAH = 3000.0; // 18650 kapasitesi / 18650 capacity
9const float USABLE = 0.85; // kullanılabilir oran / usable share
10
11void setup() {
12 Serial.begin(115200);
13 bootCount++;
14
15 // Burada sensörü oku ve veriyi gönder / read the sensor and send the data here
16 delay(500); // örnek iş yükü / sample workload
17
18 if (lastAwakeMs > 0) {
19 float awakeS = lastAwakeMs / 1000.0;
20 float avgMa = (ACTIVE_MA * awakeS + SLEEP_MA * SLEEP_S) / (awakeS + SLEEP_S);
21 float days = CAPACITY_MAH * USABLE / avgMa / 24.0;
22 Serial.printf("Uyanis / Wake #%d, uyanik / awake: %.2f s\n", bootCount, awakeS);
23 Serial.printf("Ortalama / Average: %.3f mA, pil omru / battery life: %.0f gun / days\n", avgMa, days);
24 }
25
26 lastAwakeMs = millis(); // bu uyanışın süresi / duration of this wake
27 Serial.flush();
28 esp_sleep_enable_timer_wakeup((uint64_t)SLEEP_S * 1000000ULL); // mikrosaniye / microseconds
29 esp_deep_sleep_start(); // loop() hiç çalışmaz / loop() never runs
30}
31
32void loop() {
33}Pada bangun pertama, kode hanya menyimpan waktunya; di setiap bangun berikutnya, kode menghitung dan mencetak arus rata-rata dan umur baterai dalam hari berdasarkan waktu bangun sebelumnya. Ukur ACTIVE_MA dan SLEEP_MA di board-mu sendiri dengan multimeter lalu masukkan nilainya. millis() tidak menghitung waktu bootloader ketika start-up, jadi menambahkan margin 0,1–0,3 detik ke waktu bangun memberi hasil yang lebih realistis. Untuk detail mode sleep dan sumber bangun (wake-up), lihat deep sleep ESP32, dan untuk masalah restart yang mungkin muncul ketika memakai baterai, lihat error brownout ESP32.
Menghubungkan baterai secara seri dan paralel
Ketika kamu menghubungkan baterai secara seri (positif satu ke negatif berikutnya), tegangannya dijumlahkan dan kapasitasnya (mAh) tetap sama: empat baterai AA 1,5 V 2500 mAh yang diseri menghasilkan 6 V, 2500 mAh. Ketika kamu menghubungkannya secara paralel (positif dengan positif, negatif dengan negatif), tegangannya tetap sama dan kapasitasnya dijumlahkan: dua 18650 3000 mAh yang diparalel menghasilkan 3,7 V, 6000 mAh. Di kedua kasus, total energinya (Wh) bertambah sesuai jumlah sel. Untuk pack lithium, susunan ini ditulis dengan huruf S (seri) dan P (paralel); misalnya, 2S2P berarti pack empat sel yang terdiri dari dua pasangan paralel yang dihubungkan seri.
| Konfigurasi (18650 3000 mAh) | Tegangan (nominal / penuh) | Kapasitas | Energi | Pemakaian umum |
|---|---|---|---|---|
| 1S1P | 3,7 V / 4,2 V | 3000 mAh | 11,1 Wh | ESP32, Pico, Arduino lewat boost |
| 1S2P | 3,7 V / 4,2 V | 6000 mAh | 22,2 Wh | Stasiun sensor ESP32 yang berjalan lama |
| 2S1P | 7,4 V / 8,4 V | 3000 mAh | 22,2 Wh | Jack DC Arduino, mobil robot |
| 2S2P | 7,4 V / 8,4 V | 6000 mAh | 44,4 Wh | Robot bermotor |
| 3S1P | 11,1 V / 12,6 V | 3000 mAh | 33,3 Wh | LED strip 12 V, 5 V lewat buck |
- Pakai sel yang identik: di pack seri atau paralel, pakai baterai dengan merek, kapasitas, umur, dan tingkat isi yang sama; sel yang lebih lemah akan habis lebih dulu daripada yang lain dan menjadi terbebani.
- Samakan tegangan sebelum memparalel: sebelum menghubungkan sel Li-ion secara paralel, selisih tegangan di antaranya tidak boleh lebih dari 0,1 V; kalau tidak, sel yang penuh akan mendorong arus besar yang tidak terkendali ke sel yang kosong.
- Pack lithium seri butuh proteksi: untuk pack 2S ke atas, pakai board BMS dengan balancing yang memantau setiap sel. Pack seri tidak bisa diisi dengan modul TP4056 yang dibuat untuk satu sel.
- Jangan campur sel isi ulang dan sekali pakai: jangan masukkan baterai alkaline dan NiMH ke pack yang sama; tegangan dan hambatan dalamnya berbeda.
- Sambungan paralel membagi beban: di pack 1S2P, setiap sel menanggung separuh arus, jadi pack paralel lebih awet sekaligus lebih dingin pada arus tinggi.
Apa itu rating C?
Rating C menunjukkan seberapa cepat baterai dikosongkan atau diisi dibandingkan kapasitasnya. 1C adalah arus yang mengosongkan baterai dalam 1 jam dan secara angka sama dengan kapasitasnya: untuk baterai 2000 mAh, 1C = 2 A, 0,5C = 1 A, dan 20C = 40 A. Menghitung waktunya juga mudah: pada 2C baterai kosong dalam sekitar 30 menit, pada 0,2C dalam 5 jam. Nilai seperti 25C atau 50C yang tercetak di LiPo drone dan RC menunjukkan arus pengosongan kontinu maksimum; LiPo 1000 mAh 25C bisa memberikan 25 A. Di sel 18650, nilai ini biasanya langsung ditulis dalam ampere: sel berkapasitas tinggi 3500 mAh memberikan 8–10 A, sedangkan sel high-drain 2500–3000 mAh memberikan 15–30 A secara kontinu. Aturan untuk pengisian lebih ketat: arus pengisian standar untuk sel lithium sekitar 0,5C, dan paling tinggi 1C. Modul TP4056 yang mengisi dengan 1 A cocok untuk 18650 2000 mAh, tetapi untuk LiPo kecil 300 mAh itu berarti sekitar 3C; dalam kasus itu kamu perlu mengganti resistor Rprog di modul untuk menurunkan arus pengisian.
| Rating C | LiPo 1000 mAh | 18650 3000 mAh | Perkiraan waktu |
|---|---|---|---|
| 0,2C | 200 mA | 600 mA | 5 jam |
| 0,5C | 500 mA | 1,5 A | 2 jam |
| 1C | 1 A | 3 A | 1 jam |
| 2C | 2 A | 6 A | 30 menit |
| 10C | 10 A | 30 A (hanya sel high-drain) | 6 menit |
Mengukur kapasitas baterai dengan Raspberry Pi Pico (MicroPython)
Sel 18650 berlabel 9900 mAh hampir selalu palsu; 18650 asli dengan kapasitas tertinggi di pasaran sekitar 3500–3600 mAh. Satu-satunya cara mengetahui kapasitas nyata baterai adalah mengosongkannya lewat beban yang nilainya diketahui dan menjumlahkan arusnya dari waktu ke waktu. Dengan Raspberry Pi Pico, satu resistor beban, dan satu MOSFET, kamu bisa membuat penguji kapasitas sederhana yang melakukan persis hal itu: Pico menyambungkan beban lewat MOSFET, mengukur tegangan baterai lewat pembagi tegangan, menghitung arus dengan I = V / R, dan memutus beban begitu tegangannya mencapai nilai cut-off. Nilai pembagi tegangannya bisa kamu cek dengan kalkulator pembagi tegangan, dan untuk detail pengkabelan MOSFET lihat Memakai MOSFET.
| Komponen | Sambungan | Fungsi |
|---|---|---|
| Positif baterai (+) | Ke salah satu ujung resistor beban dan ke resistor atas pembagi tegangan | Baterai yang diuji |
| Resistor beban 10 Ω, 5 W | Ujung lainnya ke drain MOSFET | Menarik sekitar 420 mA pada 4,2 V |
| MOSFET kanal-N logic-level (mis. IRLZ44N) | Source → GND, gate → 220 Ω → GP15, 100 kΩ di antara gate dan GND | Menyalakan dan mematikan beban |
| Pembagi tegangan 100 kΩ + 100 kΩ | Positif baterai → 100 kΩ → GP26 → 100 kΩ → GND | Menurunkan 4,2 V menjadi 2,1 V untuk ADC |
| Negatif baterai (−) | GND Pico | Ground bersama |
| Raspberry Pi Pico | Ke komputer lewat USB | Pengukuran, pencatatan, dan output Thonny |
1from machine import ADC, Pin
2import time
3
4adc = ADC(26) # GP26: bölücünün orta noktası / divider midpoint
5load = Pin(15, Pin.OUT, value=0) # GP15: MOSFET kapısı / MOSFET gate
6R_LOAD = 10.0 # yük direnci, ohm (ölçüp yaz) / load resistor in ohms (measure it)
7DIV = 2.0 # 100k + 100k bölücü / 100k + 100k divider
8CUTOFF = 3.0 # Li-ion bitiş gerilimi / Li-ion end voltage
9CONV = 3.3 / 65535 # ham değeri volta çevir / raw value to volts
10
11def battery_v():
12 total = 0
13 for _ in range(32): # 32 ölçümün ortalaması / average of 32 readings
14 total += adc.read_u16()
15 return total / 32 * CONV * DIV
16
17mah = 0.0
18mwh = 0.0
19log = open("desarj.csv", "w") # Pico'nun belleğine kaydedilir / saved to the Pico's flash
20log.write("dakika,volt,mA,mAh\n")
21load.value(1) # deşarjı başlat / start the discharge
22start = last = time.ticks_ms()
23
24while True:
25 time.sleep(30)
26 now = time.ticks_ms()
27 hours = time.ticks_diff(now, last) / 3600000
28 last = now
29 v = battery_v() # yük altındaki gerilim / voltage under load
30 ma = v / R_LOAD * 1000 # I = V / R
31 mah += ma * hours
32 mwh += v * ma * hours
33 minutes = time.ticks_diff(now, start) / 60000
34 print("{:.0f} dk/min {:.3f} V {:.0f} mA {:.0f} mAh {:.2f} Wh".format(minutes, v, ma, mah, mwh / 1000))
35 log.write("{:.1f},{:.3f},{:.0f},{:.1f}\n".format(minutes, v, ma, mah))
36 log.flush()
37 if v <= CUTOFF:
38 load.value(0) # yükü ayır, pili koru / disconnect the load, protect the cell
39 log.close()
40 print("Kapasite / Capacity: {:.0f} mAh, {:.2f} Wh".format(mah, mwh / 1000))
41 breakSetiap 30 detik, kode mengukur tegangan baterai di bawah beban, menghitung arusnya, dan menjumlahkan mAh dan Wh yang terpakai; hasilnya dicetak ke konsol Thonny sekaligus disimpan ke file desarj.csv di flash Pico (nama file bahasa Turki untuk “pengosongan”). Nanti file itu bisa kamu buka di Excel untuk menggambar kurva pengosongan (Mengirim data Arduino ke Excel). Dengan beban 10 Ω, menguji 18650 3000 mAh butuh sekitar 8–9 jam. Supaya hasilnya akurat, ukur resistor beban dengan multimeter dan masukkan sebagai R_LOAD, lalu bandingkan tegangan baterai dengan pembacaan multimeter dan sesuaikan faktor DIV. Untuk menguji AA NiMH, turunkan CUTOFF ke 1.0 V dan resistor beban ke 4,7 Ω. Pada 4,2 V, resistor beban membuang sekitar 1,8 W; pilih resistor dengan rating minimal 5 W, jauhkan dari permukaan yang mudah terbakar, dan jangan tinggalkan pengujian tanpa pengawasan. Kalau kamu belum tahu cara menginstal MicroPython di Pico, mulai dari Apa Itu Raspberry Pi Pico?.
Ide proyek yang memakai perhitungan baterai
- Sensor kebun yang bertahan berbulan-bulan: biarkan ESP32 dalam deep sleep, ukur kelembapan tanah sekali setiap jam, dan turunkan arus rata-rata ke bawah 1 mA.
- Voltmeter dengan indikator baterai: ukur tegangan baterai dan tampilkan sebagai persentase di LCD (Membuat Voltmeter Arduino).
- Pack yang pas untuk mobil robot: ukur arus motornya dan hitung berapa menit pack 18650 2S akan bertahan (Membuat mobil robot Arduino).
- Pencatat konsumsi daya: tulis pembacaan INA219 ke kartu SD untuk membuat profil energi harian sebuah perangkat (modul kartu SD).
- Stasiun uji kapasitas 18650: tambahkan layar OLED ke penguji Pico dan tampilkan mAh secara langsung.
- Stasiun cuaca bertenaga baterai: jalankan ESP32 yang mengirim data DHT11 setiap 10 menit selama berbulan-bulan dengan satu 18650.
Kesalahan umum dan cara memperbaikinya
| Kesalahan | Akibat | Solusi |
|---|---|---|
| Membandingkan baterai dengan tegangan berbeda hanya dari mAh | Salah memilih baterai | Ubah ke Wh: mAh × V / 1000 |
| Mengandalkan kapasitas tertulis secara penuh | Waktu pakai 15–40% lebih singkat dari perkiraan | Pakai faktor 0,85, turunkan lagi pada arus tinggi |
| Lupa konsumsi board itu sendiri | Uno menarik sekitar 30 mA bahkan ketika sleep; baterai bertahan hitungan jam, bukan hari | Pakai Pro Mini atau modul polos, lepaskan LED power |
| Tidak mengukur puncak arus | Reset (brownout) ketika menyambung Wi-Fi atau servo bergerak | Ukur dengan INA219, tambahkan kapasitor 470 µF di catu daya |
| Memakai rumus mAh dengan konverter switching | Perkiraannya meleset 30–50% | Hitung dengan energi (Wh) dan daya (W) |
| Memberi daya Arduino dari baterai 9V | Baterai habis dalam beberapa jam, ditambah reset | Pakai 6×AA, pack 18650 2S, atau power bank |
| Mengosongkan sel Li-ion di bawah 3,0 V | Kapasitas hilang permanen dan risiko menggembung | Sel berproteksi atau BMS, tegangan cut-off di software |
| Membeli 18650 dengan rating mAh yang tidak masuk akal | Sekitar sepertiga dari kapasitas di label | Lakukan uji kapasitas, pilih merek yang dikenal |
Sekarang kamu sudah tahu beda mAh dan Wh, cara mengukur arus proyekmu, dan cara menghitung berapa jam atau hari sebuah baterai akan bertahan. Sebagai langkah berikutnya, lihat Memberi daya Arduino dengan baterai dan Mengisi 18650 dengan TP4056. Di aplikasi BlueGrays kamu akan menemukan proyek bertenaga baterai seperti deep sleep ESP32 untuk hemat baterai, voltmeter digital dengan layar LCD, mobil kendali Bluetooth, dan robot penghindar rintangan, masing-masing dengan skema rangkaian dan kode langkah demi langkah.
Pertanyaan umum
Apa arti mAh pada baterai?
mAh (miliampere-jam) adalah satuan kapasitas yang menunjukkan berapa banyak muatan listrik yang disimpan sebuah baterai. Baterai 1000 mAh secara teori bisa memberikan 1000 mA selama 1 jam atau 100 mA selama 10 jam. Waktu pakai sebenarnya bergantung pada arus yang ditarik, suhu, dan tegangan di mana rangkaianmu berhenti bekerja.
Apa beda mAh dan Wh?
mAh mengukur muatan, sedangkan Wh mengukur energi. Wh dihitung dengan mAh × V / 1000, jadi baterai 3,7 V 3000 mAh menyimpan 11,1 Wh. Ketika membandingkan baterai dengan tegangan berbeda, Wh memberi gambaran yang jauh lebih akurat.
Apakah baterai dengan mAh lebih tinggi lebih bagus?
Di antara baterai dengan tegangan dan jenis yang sama, mAh yang lebih tinggi berarti waktu pakai lebih lama. Tetapi untuk perangkat berarus tinggi, hambatan dalam dan rating C juga penting. Sel 18650 dengan rating yang tidak masuk akal seperti 9900 mAh hampir selalu palsu.
Bagaimana cara menghitung berapa lama baterai akan bertahan?
Pakai Waktu pakai (jam) = Kapasitas (mAh) / Arus rata-rata (mA) × 0,85. Misalnya, baterai 2500 mAh bisa memberi daya rangkaian yang menarik 50 mA selama sekitar 42 jam. Kalau ada konverter boost atau buck di antaranya, hitung dengan Wh dan W.
Bisakah Arduino diberi daya dengan baterai 9V?
Bisa untuk pengujian singkat, tetapi tidak disarankan untuk proyek permanen. Baterai alkaline 9V hanya menyimpan 400–600 mAh dan biasanya memberi daya Arduino Uno hanya beberapa jam; dengan beban seperti servo, tegangannya turun dan board-nya reset. Pack 6×AA, pack 18650 2S, atau power bank jauh lebih awet.
Apa arti rating C pada baterai?
Rating C menyatakan arus pengosongan atau pengisian relatif terhadap kapasitas baterai; 1C adalah arus yang mengosongkan baterai dalam 1 jam. Untuk baterai 2000 mAh, 1C = 2 A dan 0,5C = 1 A. Nilai seperti 25C pada baterai LiPo menunjukkan arus pengosongan kontinu maksimum.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
Suhu dan Kelembapan dengan DHT11
Seberapa hangat kamarmu, dan apakah udaranya lembap atau kering? Sensor DHT11 mengukur suhu dan kelembapan, dan Arduino menulis nilainya di layar LCD dua baris, diperbarui setiap beberapa detik. Jika

LED Berkedip dengan ESP32
Mengajarkan penggunaan output GPIO dasar dengan ESP32. Kita membuat efek berkedip dengan menyalakan dan mematikan LED dari pin digital. Versi ESP32 dari proyek blink klasik di Arduino UNO; perintah blink dasar di lingkungan Arduino sama, tetapi susunan pin ESP32 dan level GPIO 3,3 V-nya berbeda dengan Arduino UNO.

Deep Sleep ESP32: Hemat Baterai (OLED + Penghitung RTC RAM)
Mode Deep Sleep ESP32 menurunkan konsumsi arus hingga ~10 µA dengan mematikan CPU dan sebagian besar periferal, sehingga sangat penting untuk perangkat IoT bertenaga baterai. Di proyek ini, kita memakai tiga sumber bangun yang berbeda: timer (15 detik), pin eksternal (EXT0, tombol GPIO 33), dan sentuhan (T0/GPIO 4). Variabel yang ditandai RTC_DATA_ATTR dipertahankan selama deep sleep; penghitung boot, penghitung bangun karena timer, dan penghitung bangun karena tombol terus dilacak.

Voltmeter Digital dengan Layar LCD
Cari tahu berapa tegangan yang diberikan baterai atau adaptor daya dengan alat ukur buatanmu sendiri. Pembagi dari dua resistor menurunkan tegangan tinggi ke tingkat yang bisa dibaca board, dan Arduin

Mobil Kendali Bluetooth dengan L298N
Jadikan ponselmu remote dan kendarai mobil robotmu sendiri. Arduino menerima perintah dari aplikasi remote control di ponselmu lewat modul Bluetooth dan memutar roda dengan driver motor; mobil maju, m

Robot Penghindar Rintangan
Bagaimana kalau membuat kendaraan pintar yang mencari jalannya sendiri? Robot Penghindar Rintangan terus memindai sekelilingnya berkat sensor ultrasonik di depannya. Ketika menemui rintangan, robot be

Pencatat Data Suhu ESP32 (DHT22 + RTC DS1307 + microSD + OLED)
Buat pencatat suhu bercap waktu dengan ESP32! Baca suhu/kelembapan DHT22 setiap menit, ambil waktu sebenarnya dari RTC DS1307, dan catat ke kartu microSD sebagai CSV. OLED menampilkan suhu langsung (font besar), kelembapan, cap waktu, dan penghitung catatan. File /temp_log.csv bisa dibuka di Excel, Google Sheets, atau Python pandas; cocok untuk rumah kaca, suhu kamar, data laboratorium, penyimpanan makanan, atau sarang lebah.
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

