Temeller · 13 dk okuma

mAh Ne Demek? Pil Kapasitesi, Wh ve Çalışma Süresi Hesabı

mAh ne demek, Wh ile farkı ne? Arduino projesinin akımını ölçme, pil ömrü hesabı, AA, 9V, 18650 ve LiPo karşılaştırması, seri-paralel bağlama ve C oranı.

mAh ne demek sorusunun kısa cevabı şu: mAh (miliamper-saat), bir pilin ya da bataryanın ne kadar elektrik yükü depoladığını gösteren kapasite birimidir. 1 mAh, 1 miliamperlik akımın 1 saat boyunca akması demektir; yani 2000 mAh yazan bir pil, kuramsal olarak 20 mA çeken bir devreyi 100 saat, 200 mA çeken bir devreyi 10 saat besler. Ancak bu değer tek başına yeterli değildir: pilin gerilimi, çekilen akım, sıcaklık ve pil ile devre arasındaki regülatör, gerçek çalışma süresini büyük ölçüde değiştirir.

Arduino, ESP32 ya da Raspberry Pi Pico ile pilli bir proje yaptığında ilk soru hep aynıdır: Bu pil kaç saat, kaç gün dayanır? Bu rehberde mAh ve Wh kavramlarını, AA, 9V, 18650 ve LiPo pillerin gerçek kapasitelerini, projenin akım tüketimini multimetre ve INA219 ile ölçmeyi, çalışma süresini formülle hesaplamayı, pilleri seri ve paralel bağlamayı, C oranını ve 9V pilin neden kötü bir seçim olduğunu gerçek sayılarla öğreneceksin.

18650 Li-ion şarj edilebilir pil
18650 Li-ion hücre: 3,6–3,7 V nominal gerilim ve 2000–3500 mAh gerçek kapasite, yani yaklaşık 7–13 Wh enerji.

mAh ne demek? Pil kapasitesinin anlamı

Akım amper (A) ile, kapasite ise amper-saat (Ah) ile ölçülür. Küçük piller için bunun binde biri olan miliamper-saat kullanılır: 1 Ah = 1000 mAh. Fizikteki karşılığı elektrik yüküdür; 1 mAh, 3,6 coulomb yüke eşittir. Üreticiler kapasiteyi belirli bir deşarj akımında ve belirli bir bitiş geriliminde ölçer. Akım büyüdükçe pilin iç direncinde daha fazla gerilim düşer, kimyasal tepkime yetişemez ve bitiş gerilimine daha erken ulaşılır; bu yüzden aynı pil yüksek akımda daha az mAh verir. Soğuk hava da kapasiteyi düşürür; alkalin piller özellikle 0 °C'nin altında belirgin şekilde zayıflar. Aşağıdaki tablo, Energizer'ın AA alkalin pil verilerine göre çekilen akımın kapasiteyi nasıl değiştirdiğini gösteriyor (0,8 V'a kadar, 21 °C).

Sürekli akımYaklaşık kapasiteYaklaşık süre
25 mA3000 mAh120 saat
100 mA2500 mAh25 saat
250 mA2000 mAh8 saat
500 mA1500 mAh3 saat

Tablodaki fark çarpıcıdır: akımı 20 katına çıkardığında süre 20 kat değil, 40 kat kısalır. Bu nedenle etiketteki mAh değerini en iyi durum olarak düşün. Gerçek projelerde buna bir de devrenin pil tamamen boşalmadan durması eklenir: Arduino Uno'nun regülatörü girişte 7 V'un altına inildiğinde 5 V'u koruyamaz, tek hücreli bir lityum pil ise ömrü kısalmasın diye 3,0–3,3 V civarında kesilmelidir. Pilin içinde kalan bu enerji hiç kullanılmaz.

Wh ne demek? mAh ile farkı

mAh yalnızca yük miktarını söyler; pilin enerjisini bulmak için gerilimle çarpman gerekir. Enerji birimi watt-saattir (Wh) ve formülü şudur: Wh = mAh × V / 1000. Örneğin 3,7 V'luk 3000 mAh bir 18650 hücre 3,7 × 3 = 11,1 Wh enerji taşır. 2500 mAh'lik bir AA kalem pil kâğıt üzerinde 1,5 × 2,5 = 3,75 Wh eder, ama alkalin pilin ortalama gerilimi deşarj boyunca 1,2–1,3 V'a indiği için gerçek değer 3 Wh civarındadır. Farklı gerilimdeki pilleri yalnızca mAh ile karşılaştırmak bu yüzden yanıltıcıdır: 550 mAh'lik bir 9V pil, 2500 mAh'lik AA'dan çok küçük görünse de yaklaşık 4 Wh ile ondan biraz daha fazla enerji taşır. Hangisinin projende daha uzun dayanacağı ise aradaki regülatörün türüne bağlıdır; bunu süre hesabı bölümünde göreceksin. Güç ve akım arasındaki ilişkiyi (P = V × I) hızlıca hesaplamak için Ohm kanunu hesaplayıcısını kullanabilirsin.

Powerbank'lerin üzerindeki mAh değeri, içlerindeki 3,6–3,7 V'luk lityum hücrelere göre yazılır. 10000 mAh'lik bir powerbank yaklaşık 37 Wh enerji taşır; bu enerji USB çıkışında 5 V'a yükseltilirken yaklaşık %15 kaybolduğu için 5 V'ta ancak 6000–6500 mAh kullanabilirsin. Havayolu şirketlerinin el bagajındaki powerbank sınırını mAh ile değil 100 Wh ile belirlemesinin sebebi de budur.

AA, 9V, 18650 ve LiPo pil karşılaştırma tablosu

PilNominal gerilimTipik kapasiteEnerjiRahat çekilebilen akımŞarj edilebilir mi?
AAA alkalin1,5 V1000–1200 mAh≈1,3 WhDüşük (≈100 mA)Hayır
AA alkalin1,5 V2000–3000 mAh (akıma bağlı)≈3 WhOrta (≈250 mA'e kadar verimli)Hayır
AA NiMH1,2 V1900–2500 mAh≈2,5 WhYüksek (birkaç A)Evet
9V alkalin9 V400–600 mAh≈4 WhDüşük (≈50 mA)Hayır
CR2032 düğme pil3 V≈235 mAh≈0,7 WhÇok düşük (µA ile birkaç mA)Hayır
18650 Li-ion3,6–3,7 V2000–3500 mAh7–13 WhYüksek (hücreye göre 5–30 A)Evet
1S LiPo (ör. 1000 mAh)3,7 V100–5000 mAh arası modeller≈3,7 WhEtiketteki C oranına göreEvet
10000 mAh powerbank5 V (USB)≈6000 mAh (5 V'ta)≈37 Wh1–3 AEvet

Tabloyu okurken şunu hatırla: ağırlığına göre en fazla enerjiyi 18650 ve LiPo gibi lityum hücreler taşır; tek bir 18650, dört AA alkalin pilin toplam enerjisine yakın bir enerjiyi yaklaşık yarı ağırlıkta taşır. Alkalin piller düşük akımlı ve uzun süre rafta bekleyecek cihazlar için iyidir, çünkü yılda yalnızca yüzde birkaç kapasite kaybederler; motor ya da servo gibi yüksek akım isteyen yüklerde ise gerilimleri hızla çöker. NiMH şarjlı piller 1,2 V'luk düşük gerilimlerine rağmen yüksek akımı rahat verir; düşük deşarjlı (LSD) türleri aylarca dolu kalır. CR2032 düğme pil ise yalnızca mikroamper seviyesinde çalışan saat modülleri ve uyuyan sensörler içindir; Wi-Fi'ye bağlanan bir ESP32'yi asla besleyemez.

AA kalem pil
AA kalem pil: alkalin türü 1,5 V ve 2000–3000 mAh, şarjlı NiMH türü 1,2 V ve 1900–2500 mAh; kapasitesi çekilen akıma göre büyük ölçüde değişir.

9V pil neden kötü bir seçim?

Kare 9V pil, klipsli kablosu Arduino'nun DC jakına kolayca takıldığı için başlangıç setlerinde sık görülür, ama pille çalışan bir Arduino projesi için en kötü seçeneklerden biridir. İçinde seri bağlı altı küçük hücre bulunduğundan kapasitesi yalnızca 400–600 mAh'tir. Energizer'ın verilerine göre 9V alkalin pil 4,8 V'a kadar boşaltıldığında 10 mA'de yaklaşık 600, 25 mA'de 570, 50 mA'de ise yalnızca 450 mAh verir. Arduino Uno'nun regülatörü ise DC jaktan en az 7 V ister; pilin gerilimi yük altında birkaç saat içinde bu sınırın altına iner ve geri kalan enerji kullanılamaz. Bu yüzden yaklaşık 50 mA çeken bir Uno, 9V pille genellikle yalnızca birkaç saat, çoğu zaman 4–8 saat çalışır.

  • Düşük kapasite: 6×AA paketin 2000–2500 mAh'ine karşılık yalnızca 400–600 mAh; aynı 9 V gerilimde dört kattan fazla kısa süre.
  • Yüksek iç direnç: Bir servo dönmeye başladığında ya da röle çektiğinde gerilim bir anda çöker ve Arduino resetlenir.
  • Regülatör kaybı: Uno'nun lineer regülatörü 9 V'u 5 V'a düşürürken aradaki 4 V'u ısıya çevirir; 50 mA'de pilden çekilen 0,45 W'ın yaklaşık 0,2 W'ı boşa gider.
  • Pahalı enerji: Wh başına maliyeti AA kalem pillerden belirgin şekilde yüksektir; şarjlı NiMH 9V pillerin kapasitesi ise 170–300 mAh'e kadar düşer.
  • Nerede iyi? Duman dedektörü, multimetre ya da birkaç mA çekip uzun süre bekleyen cihazlarda 9V pil gayet uygundur. Arduino için 6×AA, 2S 18650 paketi ya da powerbank tercih et; ayrıntılar Arduino pil ile çalıştırma yazısında.

Arduino projesinin akım tüketimini ölçmek

Pil ömrünü hesaplamak için önce projenin ne kadar akım çektiğini bilmen gerekir. Tahmin etmek yerine ölçmek en doğrusudur, çünkü kartın kendi tüketimi, güç LED'leri ve regülatörler çoğu zaman sensörlerden daha fazla akım çeker. En kolay yol, multimetreyi pil ile devre arasına seri bağlamaktır. Uyku ve uyanma döngüsü olan projelerde ise kısa akım tepelerini ve gerçek ortalamayı yakalamak için INA219 gibi bir akım sensörü daha iyi sonuç verir. Multimetrenin kademeleri ve soketleri hakkında ayrıntılı bilgi için multimetre nasıl kullanılır yazısına bakabilirsin.

  1. Devrenin enerjisini kes; kırmızı probu multimetrenin mA soketine, siyah probu COM soketine tak. Akımın 200 mA'i geçebileceğini düşünüyorsan önce 10A soketiyle başla.
  2. Kademe anahtarını DC akım (A⎓) konumuna, otomatik kademeli değilse 200 mA kademesine getir.
  3. Pilin artı kablosunu devreden ayır; kırmızı probu pilin artısına, siyah probu devrenin artı girişine bağla. Böylece tüm akım multimetrenin içinden geçer.
  4. Devreyi çalıştır ve değeri oku. Servo dönerken, Wi-Fi bağlanırken ya da röle çekerken de ayrı ayrı ölç ve her durumun akımını not et.
  5. Uyku akımı mikroamper seviyesindeyse µA kademesine geç. Kart açılırken bu kademede yeterli akım alamayabilir; açılışta probları bir jumper kabloyla köprüle, kart uykuya geçince kabloyu çıkar.
  6. Ölçtüğün akımları, her durumda geçen sürelerle birlikte aşağıdaki ortalama akım formülüne yerleştir.
Akım ölçerken multimetreyi asla pilin iki ucuna doğrudan (paralel) dokundurma: mA soketindeki multimetre neredeyse bir kısa devredir, sigortası atar ve lityum pillerde tehlikeli büyüklükte akım akar. Ayrıca multimetrenin içindeki ölçüm direnci mA kademesinde birkaç yüz milivoltluk gerilim düşümüne yol açabilir; Wi-Fi'ye bağlanırken akımı aniden 250 mA'e çıkan bir ESP32 bu yüzden resetlenebilir. Böyle durumlarda 10A soketini kullan.
Kart ya da modülTipik akımNot
Arduino Uno R345–50 mAUyku modunda bile 30 mA civarı (USB yongası, regülatör, LED)
Arduino Nano (CH340)≈20 mAGüç LED'i birkaç mA harcar
Arduino Pro Mini 3,3 V / 8 MHzBirkaç mALED ve regülatör sökülünce uykuda µA seviyesi
ESP32 DevKit, Wi-Fi kapalı40–70 mAİşlemci hızına göre değişir
ESP32 DevKit, Wi-Fi bağlı80–130 mA ortalamaGönderim sırasında 240 mA ve üzeri tepeler
ESP32 derin uyku (çıplak modül)≈10 µAGeliştirme kartında çoğu zaman birkaç mA
Raspberry Pi Pico (MicroPython)20–25 mAPico W'de Wi-Fi açıkken belirgin şekilde artar
LED (220 Ω, 5 V)10–15 mAParlaklığa göre
16x2 I2C LCD20–30 mAÇoğu arka ışıktan
0,96" OLED (SSD1306)10–25 mAYanan piksel sayısına göre
SG90 servoBoşta 5–10 mA, hareket ederken 100–250 mAKilitlenince 0,5 A ve üzeri
HC-SR04 mesafe sensörü≈15 mAÖlçüm sırasında
5 V röle modülü (çekili)70–80 mABobin çekili kaldığı sürece
NEO-6M GPS40–50 mAUydu ararken

INA219 ile akım ve harcanan mAh ölçmek

INA219, I2C ile çalışan küçük bir akım ve gerilim ölçüm modülüdür. Kart üzerindeki 0,1 Ω'luk şönt direnç üzerinde düşen gerilimi 12 bit çözünürlükle ölçer; 26 V'a kadar gerilimdeki devrelerde yaklaşık ±3,2 A'e kadar akımı yaklaşık 0,1 mA hassasiyetle okur. Varsayılan I2C adresi 0x40'tır. Modülü ölçülen devrenin artı hattına seri bağlarsın: pilin artısı Vin+ ucuna, Vin− ucu ise devrenin artı girişine gider. Ölçümü yapan Arduino USB'den beslenir ve GND'si ölçülen devrenin GND'sine bağlanır. Arduino IDE'de Kütüphane Yöneticisi'nden Adafruit INA219 kütüphanesini kurman yeterli. INA219 mikroamper seviyesindeki uyku akımlarını çözemez; onları multimetrenin µA kademesiyle ölç.

INA219 piniArduino UnoESP32Raspberry Pi Pico
VCC5V3V33V3(OUT)
GNDGNDGNDGND
SDAA4GPIO 21GP4
SCLA5GPIO 22GP5
Vin+Pilin artısı (+)Pilin artısı (+)Pilin artısı (+)
Vin−Ölçülen devrenin artı girişiÖlçülen devrenin artı girişiÖlçülen devrenin artı girişi
Pilin eksisi (−)GND (ortak)GND (ortak)GND (ortak)
C++ (Arduino IDE)
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}

Kod her 10 milisaniyede bir akımı okur ve akım × süre çarpımlarını toplayarak harcanan mAh değerini bulur; bu yöntem Wi-Fi gönderimi ya da servo hareketi gibi kısa akım darbelerini de ortalamaya katar. Saniyede bir pil gerilimini, o ana kadarki ortalama akımı, harcanan kapasiteyi ve etiket kapasitesinin %85'ine göre tahmini çalışma süresini Seri Monitör'e yazar. Ölçümü en az bir tam çalışma döngüsü boyunca, örneğin bir uyku ve uyanma döngüsünü kapsayacak kadar açık bırak. 1 A'i aşan yüklerde setCalibration_32V_2A() kullan. Aynı kod ESP32'de GPIO 21 ve 22 pinleriyle değiştirilmeden çalışır; Seri Monitör'ün kullanımı için Arduino Serial Monitor yazısına göz atabilirsin.

Çalışma süresi hesabı: kapasite / akım × verim

Ortalama akımı bildiğinde temel formül basittir: Çalışma süresi (saat) = Kapasite (mAh) / Ortalama akım (mA) × Verim. Verim katsayısı için 0,85 iyi bir başlangıçtır; bu katsayı yüksek akımda ve soğukta kaybolan kapasiteyi, devrenin pil tamamen bitmeden durmasını ve pilin yaşlanmasını hesaba katar. Bu formül, pil ile devre arasında hiç regülatör yoksa ya da lineer bir regülatör (Uno'nun 5 V regülatörü, AMS1117, 7805) varsa geçerlidir, çünkü lineer regülatörde giriş akımı çıkış akımına eşittir ve gerilim farkı ısıya dönüşür. Boost ya da buck gibi anahtarlamalı bir dönüştürücü kullanıyorsan hesabı enerjiyle yap: Süre (saat) = Pil enerjisi (Wh) × Verim / Yükün gücü (W). Burada verim, dönüştürücünün %85–90'lık verimiyle pilin kullanılabilir payının çarpımıdır; 0,75–0,8 almak gerçekçidir.

SenaryoOrtalama akım ya da güçPilHesapYaklaşık süre
Uno + sensör, 6×AA paket DC jakında55 mAAA alkalin, 2500 mAh2500 / 55 × 0,85≈39 saat
Aynı Uno, 9V alkalin pille55 mA9V, ≈450 mAh450 / 55 × 0,85≈7 saat (pratikte daha az)
Nano + DHT11 + OLED, 3×AA ile 5V pininden35 mAAA alkalin, 2500 mAh2500 / 35 × 0,85≈61 saat
ESP32 DevKit sürekli Wi-Fi'de, 18650 + 5 V boost5 V × 110 mA = 0,55 W18650, 3000 mAh (11,1 Wh)11,1 × 0,8 / 0,55≈16 saat
Pico, VSYS'ten 3×AA NiMH ile≈0,1 W3 × 1,2 V × 2000 mAh = 7,2 Wh7,2 × 0,8 / 0,1≈58 saat

Uyuyup uyanan projelerde önce ortalama akımı bulman gerekir: Ortalama akım = (Uyanık akım × Uyanık süre + Uyku akımı × Uyku süresi) / Toplam süre. Örneğin 10 dakikada bir 5 saniye uyanıp 120 mA çeken, kalan 595 saniyede 10 µA (0,01 mA) ile uyuyan çıplak bir ESP32 modülünün ortalaması (120 × 5 + 0,01 × 595) / 600 ≈ 1,01 mA'dir. 3000 mAh'lik bir 18650 ile bu, 3000 / 1,01 × 0,85 ≈ 2520 saat, yani yaklaşık 3,5 ay eder. Aynı kod uykuda 5 mA çeken bir geliştirme kartında çalışırsa ortalama 5,96 mA'e çıkar ve süre yaklaşık 18 güne düşer. Bu hesabı elle yapmak yerine pil ömrü hesaplayıcısını kullanabilirsin; kapasiteyi, uyanık ve uyku akımını, uyanma aralığını girmen yeterli. Ortalama akım 0,1 mA'in altına indiğinde artık pilin kendi kendine boşalması da belirleyici olur: bir Li-ion hücre ayda yaklaşık %2–3 kapasite kaybeder.

ESP32: uyanık süreyi ölçüp pil ömrünü tahmin etmek

ESP32'nin tüketimi çalışma moduna göre binlerce kat değişir. Espressif'in veri sayfasına göre yonga Wi-Fi ile veri gönderirken 240 mA'e varan, alırken yaklaşık 100 mA, Wi-Fi kapalıyken (modem uykusu) 20–68 mA, hafif uykuda yaklaşık 0,8 mA, derin uykuda ise yalnızca 10 µA çeker. Bu yüzden pil ömrünü belirleyen asıl şey uyanık kalınan süredir: Wi-Fi'ye bağlanmak çoğu zaman 1–3 saniye sürer ve bu kısa sürede harcanan enerji, saatlerce süren uykuda harcanandan fazladır. Aşağıdaki kod her uyanışta ne kadar uyanık kaldığını RTC belleğinde saklar ve ölçtüğün akım değerleriyle ortalama akımı ve tahmini pil ömrünü hesaplar.

C++ (Arduino IDE)
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}

İlk uyanışta yalnızca süre kaydedilir; sonraki her uyanışta bir önceki uyanık süreyle ortalama akım ve gün cinsinden pil ömrü hesaplanıp yazdırılır. ACTIVE_MA ve SLEEP_MA değerlerini kendi kartında multimetreyle ölçüp yaz. millis() açılıştaki önyükleyici (bootloader) süresini saymaz; uyanık süreye 0,1–0,3 saniyelik bir pay eklemek daha gerçekçi sonuç verir. Uyku modlarının ve uyandırma kaynaklarının ayrıntıları için ESP32 deep sleep yazısına, pille beslerken karşılaşabileceğin yeniden başlama sorunları için ESP32 brownout hatası yazısına bakabilirsin.

Seri ve paralel pil bağlama

Pilleri seri bağladığında (birinin artısı diğerinin eksisine) gerilimler toplanır, kapasite (mAh) aynı kalır: 1,5 V'luk 2500 mAh dört AA pil seri bağlanınca 6 V, 2500 mAh olur. Paralel bağladığında (artılar kendi arasında, eksiler kendi arasında) gerilim aynı kalır, kapasiteler toplanır: 3000 mAh'lik iki 18650 paralel bağlanınca 3,7 V, 6000 mAh olur. Her iki durumda da toplam enerji (Wh) hücre sayısıyla birlikte artar. Lityum paketlerde bu düzen kısaca S (seri) ve P (paralel) harfleriyle yazılır; örneğin 2S2P, iki paralel çiftin seri bağlanmasıyla oluşan dört hücreli bir paket demektir.

Düzen (3000 mAh 18650)Gerilim (nominal / tam dolu)KapasiteEnerjiTipik kullanım
1S1P3,7 V / 4,2 V3000 mAh11,1 WhESP32, Pico, boost ile Arduino
1S2P3,7 V / 4,2 V6000 mAh22,2 WhUzun süreli ESP32 sensör istasyonu
2S1P7,4 V / 8,4 V3000 mAh22,2 WhArduino DC jakı, robot araba
2S2P7,4 V / 8,4 V6000 mAh44,4 WhMotorlu robotlar
3S1P11,1 V / 12,6 V3000 mAh33,3 Wh12 V LED şerit, buck ile 5 V
  • Aynı hücreleri kullan: Seri ya da paralel pakette aynı marka, aynı kapasite, aynı yaş ve aynı doluluktaki pilleri kullan; zayıf hücre ötekilerden önce biter ve zorlanır.
  • Paralelden önce gerilimleri eşitle: Li-ion hücreleri paralel bağlamadan önce aralarındaki gerilim farkı 0,1 V'u geçmemeli; aksi halde dolu hücre boş olana kontrolsüz büyük bir akım basar.
  • Seri lityum paket koruma ister: 2S ve üzeri paketlerde her hücreyi ayrı izleyen, dengeleme özellikli bir BMS kartı kullan. Tek hücre şarj eden TP4056 modülü ile seri paket şarj edilmez.
  • Şarjlı ve şarjsız pili karıştırma: Alkalin ve NiMH pilleri aynı pakete koyma; gerilimleri ve iç dirençleri farklıdır.
  • Paralel bağlantı yükü paylaştırır: 1S2P pakette her hücre akımın yarısını taşır; bu yüzden paralel paket hem daha uzun dayanır hem de yüksek akımda daha az ısınır.

C oranı nedir?

C oranı, bir pilin kapasitesine göre ne kadar hızlı boşaltıldığını ya da şarj edildiğini gösterir. 1C, pili 1 saatte tamamen boşaltacak akımdır ve sayısal olarak kapasiteye eşittir: 2000 mAh'lik bir pil için 1C = 2 A, 0,5C = 1 A, 20C = 40 A'dir. Süreyi bulmak da kolaydır: 2C'de pil yaklaşık 30 dakikada, 0,2C'de 5 saatte biter. Drone ve RC model LiPo'larının üzerinde yazan 25C, 50C gibi değerler en yüksek sürekli deşarj akımını gösterir; 1000 mAh 25C bir LiPo 25 A verebilir. 18650 hücrelerde bu değer genellikle doğrudan amper olarak yazılır: 3500 mAh'lik yüksek kapasiteli hücreler 8–10 A, 2500–3000 mAh'lik yüksek akımlı hücreler 15–30 A sürekli akım verir. Şarjda kural daha sıkıdır: lityum hücreler için standart şarj akımı 0,5C civarıdır, en fazla 1C'dir. 1 A ile şarj eden bir TP4056 modülü 2000 mAh'lik bir 18650 için uygundur, ama 300 mAh'lik küçük bir LiPo'yu yaklaşık 3C ile zorlar; bu durumda modülün Rprog direncini değiştirip şarj akımını düşürmen gerekir.

C oranı1000 mAh LiPo3000 mAh 18650Yaklaşık süre
0,2C200 mA600 mA5 saat
0,5C500 mA1,5 A2 saat
1C1 A3 A1 saat
2C2 A6 A30 dakika
10C10 A30 A (yalnız yüksek akımlı hücreler)6 dakika

Raspberry Pi Pico ile pil kapasitesi ölçmek (MicroPython)

Üzerinde 9900 mAh yazan 18650 hücreler neredeyse her zaman sahtedir; piyasadaki en yüksek kapasiteli gerçek 18650'ler 3500–3600 mAh civarındadır. Bir pilin gerçek kapasitesini öğrenmenin tek yolu, onu bilinen bir yük üzerinden boşaltıp akımı zamanla toplamaktır. Raspberry Pi Pico, bir yük direnci ve bir MOSFET ile bunu yapan basit bir kapasite test cihazı kurabilirsin: Pico, MOSFET ile yükü devreye alır, pil gerilimini bir gerilim bölücü üzerinden ölçer, akımı I = V / R ile hesaplar ve gerilim bitiş değerine inince yükü ayırır. Bölücü değerlerini gerilim bölücü hesaplayıcısı ile kontrol edebilir, MOSFET bağlantısının ayrıntıları için MOSFET kullanımı yazısına bakabilirsin.

ParçaBağlantıGörevi
Pilin artısı (+)Yük direncinin bir ucuna ve bölücünün üst direncineTest edilen pil
10 Ω, 5 W yük direnciDiğer ucu MOSFET'in drain bacağına4,2 V'ta yaklaşık 420 mA çeker
N kanal lojik seviye MOSFET (ör. IRLZ44N)Source → GND, gate → 220 Ω → GP15, gate ile GND arasına 100 kΩYükü açar ve kapatır
100 kΩ + 100 kΩ gerilim bölücüPilin artısı → 100 kΩ → GP26 → 100 kΩ → GND4,2 V'u ADC için 2,1 V'a indirir
Pilin eksisi (−)Pico GNDOrtak toprak
Raspberry Pi PicoBilgisayara USB ileÖlçüm, kayıt ve Thonny çıktısı
MicroPython
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        break

Kod her 30 saniyede bir pil gerilimini yük altında ölçer, akımı hesaplar, harcanan mAh ve Wh değerlerini toplar; sonuçları hem Thonny konsoluna yazar hem de Pico'nun belleğindeki desarj.csv dosyasına kaydeder. Bu dosyayı sonra Excel'de açıp deşarj eğrisini çizebilirsin (Arduino'dan Excel'e veri aktarma). 10 Ω'luk yükle 3000 mAh'lik bir 18650'nin testi yaklaşık 8–9 saat sürer. Doğru sonuç için yük direncini multimetreyle ölçüp R_LOAD değerine yaz ve pil gerilimini multimetreyle karşılaştırarak DIV katsayısını düzelt. AA NiMH test edeceksen CUTOFF değerini 1,0 V'a, yük direncini 4,7 Ω'a indir. Yük direnci 4,2 V'ta yaklaşık 1,8 W ısı üretir; en az 5 W'lık bir direnç seç, yanıcı yüzeylerden uzak tut ve testi gözetimsiz bırakma. Pico'ya MicroPython yüklemeyi bilmiyorsan Raspberry Pi Pico nedir? yazısından başlayabilirsin.

Pil hesabıyla proje fikirleri

  • Aylarca çalışan bahçe sensörü: ESP32'yi derin uykuda tutup saatte bir toprak nemini ölç ve ortalama akımı 1 mA'in altına indir.
  • Pil göstergeli voltmetre: Pil gerilimini ölçüp LCD ekranda yüzde olarak göster (Arduino voltmetre yapımı).
  • Robot araba için doğru paket: Motorların akımını ölçüp 2S 18650 paketin kaç dakika dayanacağını hesapla (Arduino robot araba yapımı).
  • Güç tüketimi kaydedici: INA219 ölçümlerini SD karta yazarak bir cihazın günlük enerji profilini çıkar (SD kart modülü).
  • 18650 kapasite test istasyonu: Pico'lu test devresine bir OLED ekran ekleyip mAh değerini canlı göster.
  • Pilli hava istasyonu: DHT11 verisini 10 dakikada bir gönderen bir ESP32'yi tek bir 18650 ile aylarca çalıştır.

Sık yapılan hatalar ve çözümleri

HataSonuçÇözüm
Farklı gerilimdeki pilleri yalnızca mAh ile karşılaştırmakYanlış pil seçimiWh'e çevir: mAh × V / 1000
Etiketteki kapasitenin tamamını hesaba katmakSüre beklenenden %15–40 kısa çıkar0,85 katsayısını kullan, yüksek akımda daha da düşür
Kartın kendi tüketimini unutmakUno uykuda bile 30 mA civarı çeker, pil günler yerine saatler dayanırPro Mini ya da çıplak modül kullan, güç LED'ini sök
Akım tepelerini ölçmemekWi-Fi bağlantısında ya da servo hareketinde reset (brownout)INA219 ile ölç, beslemeye 470 µF kondansatör ekle
Anahtarlamalı dönüştürücüde mAh formülünü kullanmakHesap %30–50 şaşarEnerji (Wh) ve güç (W) ile hesapla
Arduino'yu 9V pille beslemekBirkaç saatte biten pil ve resetler6×AA, 2S 18650 ya da powerbank kullan
Li-ion hücreyi 3,0 V'un altına boşaltmakKalıcı kapasite kaybı ve şişme riskiKorumalı hücre ya da BMS, yazılımda kesme gerilimi
Gerçek dışı mAh yazan 18650 almakEtiketin üçte biri kadar kapasiteKapasite testi yap, bilinen markaları seç
Pil ömrünü uzatmanın en etkili yolları şunlardır: uyanık süreyi kısalt, işlemciyi uykuya al, güç LED'i ve USB yongası olmayan bir kart seç, lineer regülatör yerine boşta akımı birkaç mikroamper olan bir regülatör ya da verimli bir dönüştürücü kullan ve sensörleri yalnızca ölçüm sırasında bir pin ya da MOSFET üzerinden besle. Çoğu projede bu adımlar, daha büyük bir pil almaktan çok daha fazla kazanç sağlar.

Artık mAh ile Wh'in farkını, projenin akımını nasıl ölçeceğini ve pilin kaç saat ya da kaç gün dayanacağını hesaplamayı biliyorsun. Bir sonraki adım olarak Arduino'yu pille çalıştırma ve TP4056 ile 18650 şarjı yazılarına göz atabilirsin. BlueGrays uygulamasında ESP32 deep sleep ile pil tasarrufu, LCD ekranlı dijital voltmetre, Bluetooth kontrollü robot araba ve engelden kaçan robot gibi pille çalışan projeleri adım adım devre şemaları ve kodlarıyla bulabilirsin.

Sıkça sorulan sorular

mAh ne demek?

mAh (miliamper-saat), bir pilin depoladığı elektrik yükünü gösteren kapasite birimidir. 1000 mAh'lik bir pil kuramsal olarak 1000 mA'i 1 saat ya da 100 mA'i 10 saat verebilir. Gerçek süre çekilen akıma, sıcaklığa ve devrenin pili hangi gerilimde bıraktığına göre değişir.

mAh ile Wh arasındaki fark nedir?

mAh yük miktarını, Wh ise enerjiyi gösterir. Wh = mAh × V / 1000 formülüyle hesaplanır; 3,7 V'luk 3000 mAh bir pil 11,1 Wh eder. Farklı gerilimdeki pilleri karşılaştırırken Wh çok daha doğru sonuç verir.

mAh değeri yüksek olan pil daha mı iyi?

Aynı gerilim ve aynı türdeki piller arasında yüksek mAh daha uzun çalışma süresi demektir. Ancak yüksek akım isteyen cihazlarda pilin iç direnci ve C oranı da önemlidir. 9900 mAh gibi gerçek dışı değerler yazan 18650 hücreler ise neredeyse her zaman sahtedir.

Pilin kaç saat dayanacağı nasıl hesaplanır?

Çalışma süresi (saat) = Kapasite (mAh) / Ortalama akım (mA) × 0,85 formülünü kullan. Örneğin 2500 mAh'lik bir pil, 50 mA çeken bir devreyi yaklaşık 42 saat besler. Arada boost ya da buck dönüştürücü varsa hesabı Wh ve W ile yap.

9V pil Arduino için uygun mu?

Kısa denemeler için çalışır, ama kalıcı projeler için önerilmez. 9V alkalin pilin kapasitesi yalnızca 400–600 mAh'tir ve Arduino Uno'yu genellikle birkaç saat besler; servo gibi yüklerde gerilim düşüp kart resetlenir. 6×AA paketi, 2S 18650 ya da powerbank çok daha uzun süre verir.

C oranı ne anlama gelir?

C oranı, pilin kapasitesine göre deşarj ya da şarj akımını gösterir; 1C pili 1 saatte boşaltan akımdır. 2000 mAh'lik bir pilde 1C = 2 A, 0,5C = 1 A'dir. LiPo pillerin üzerindeki 25C gibi değerler en yüksek sürekli deşarj akımını belirtir.

Tüm projeleri gör
DHT11 İle Sıcaklık Ve Nem
#55Orta

DHT11 İle Sıcaklık Ve Nem

Odan kaç derece, hava nemli mi, kuru mu? DHT11 sensörü sıcaklığı ve nemi ölçer, Arduino da bu değerleri iki satırlık LCD ekrana yazar ve birkaç saniyede bir yeniler. Sensöre bir şey olursa ekranda hat

4.7(47)
73
ESP32 ile LED Yakma
#103Başlangıç

ESP32 ile LED Yakma

ESP32 ile temel GPIO çıkışı kullanımını öğretir. Bir LED'i dijital pinden açıp kapatarak yanıp sönme efekti elde ederiz. Arduino UNO'daki klasik blink projesinin ESP32 versiyonu; Arduino ortamındaki temel blink komutları aynıdır, ancak ESP32'nin pin yerleşimi ve 3,3 V GPIO seviyeleri Arduino UNO'dan farklıdır.

4.7(37)
99
ESP32 Deep Sleep — Pil Tasarrufu (OLED + RTC RAM Sayaç)
#135İleri
Premium

ESP32 Deep Sleep — Pil Tasarrufu (OLED + RTC RAM Sayaç)

ESP32'nin Deep Sleep modu, CPU ve çoğu çevre birimini kapatarak akım tüketimini ~10µA seviyesine düşürür ve pille çalışan IoT cihazları için kritik öneme sahiptir. Bu projede üç farklı uyandırma kaynağını kullanıyoruz: zamanlayıcı (timer, 15sn), harici pin (EXT0 — buton GPIO 33) ve touch (T0/GPIO 4). RTC_DATA_ATTR ile işaretlenen değişkenler deep sleep boyunca korunur — boot sayacı, timer wake sayacı ve buton wake sayacı kalıcı olarak izlenir. SSD1306 OLED ekranda her uyanışta wake reason, say

4.3(10)
16
LCD Ekran ile Dijital Voltmetre
#56Orta
Premium

LCD Ekran ile Dijital Voltmetre

Pilin ya da adaptörün ne kadar gerilim verdiğini kendi yaptığın ölçü aletiyle öğren. İki dirençten oluşan bir bölücü yüksek gerilimi kartın okuyabileceği seviyeye indirir, Arduino da gerçek değeri hes

4.5(27)
36
L298N ile Bluetooth Kontrollü Araba
#80İleri
Premium

L298N ile Bluetooth Kontrollü Araba

Telefonunu kumandaya çevirip kendi robot arabanı sür. Arduino, Bluetooth modülü üzerinden telefondaki bir kumanda uygulamasından gelen komutları alır ve motor sürücüyle tekerlekleri döndürür; araba il

5.0(38)
65
Engelden Kaçan Robot
#81İleri
Premium

Engelden Kaçan Robot

Kendi yolunu bulan akıllı bir araç yapmaya ne dersin? Engelden Kaçan Robot, önündeki ultrasonik sensör sayesinde çevresini sürekli tarar. Bir engelle karşılaştığında durur, servo motoruyla sağına ve s

5.0(38)
49
ESP32 Sıcaklık Loglayıcı (DHT22 + DS1307 RTC + microSD + OLED)
#144İleri
Premium

ESP32 Sıcaklık Loglayıcı (DHT22 + DS1307 RTC + microSD + OLED)

ESP32 ile zamanlı sıcaklık ve nem kayıt sistemi kur! Bu projede DHT22 sensörü ile dakikada bir sıcaklık/nem okuyup DS1307 RTC modülünden aldığın gerçek zaman etiketiyle microSD karta CSV formatında kaydediyoruz. OLED ekranda büyük font ile son sıcaklık değeri, nem yüzdesi, timestamp ve toplam kayıt sayısı canlı gösterilir. SD kart üzerindeki /temp_log.csv dosyası Excel/Google Sheets/Python pandas ile açılıp analiz edilebilir — sera monitörü, ev/oda sıcaklık takibi, laboratuvar veri toplama,

4.7(7)
12