
Arduino Nano ile Pil ve Akü Kapasite ve İç Direnç Test Cihazı. Bir okurumuzun isteği üzerine başladığım bir proje. Li- ion piller ile benimde işlerim oluyor ilgili projeleri de seviyorum. Pilin iç direnç ölçümünden bu projeye kadar ilerledim.
Uygulalan Arduino projesi, 18650 Li-ion pillerden küçük kurşun asit akülere kadar farklı batarya türlerinde kapasite, Wh, iç direnç ve sabit akım yük testi yapabilen bir pil analizör cihazıdır.
Devrenin temel fikri ATmega328P tabanlı eski bir akü analizör projesinden alındı, kaynak kodlar Arduino Nano ile kullanılabilecek hale getirildi ve atölye testlerinde karşılaşılan hatalara göre bazı iyileştirmeler yapıldı.
Projede amaç sadece bir pili boşaltıp mAh değerini görmek değil. Aynı zamanda pilin yük altında ne kadar çöktüğünü, iç direncinin yaklaşık olarak hangi seviyede olduğunu, sabit akım yük modunda pilin, akünün veya güç kaynağının nasıl davrandığını ve test sonunda pil için Wh değerinin nasıl oluştuğunu da görebilmekdir.
Ben bu uygulamayı özellikle tek hücre 18650 Li-ion piller için hazırladım. Ancak devrenin orijinal çalışma aralığı yaklaşık 0.8 V ile 20 V arasındadır. Kodu ihtiyacınıza göre düzenleyebilirsiniz nasıl yapılacağı açıklamaya eklendi
Bu nedenle uygun sonlandırma voltajı ve akım değeri seçilirse farklı pil ve akü türlerinde de kullanılabilir.
18650 piller hakkında temel bilgi için daha önce yayınlanan 18650 pil nedir yazısına da bakılabilir.
Projenin Temel Özellikleri
İçerik
- 1 Projenin Temel Özellikleri
- 2 Arduino Nano ile pil ve akü kapasite test cihazı blok şeması
- 3 Projenin Çıkış Noktası ve Arduino Nano’ya Uyarlama
- 4 Devrenin Genel Çalışma Mantığı
- 5 Kullanılan Ana Bölümler
- 5.1 Arduino Nano ve Kontrol Bölümü
- 5.2 LCD 20×4 Ekran (LCD2004)
- 5.3 MOSFET ve Elektronik Yük Bölümü
- 5.4 MOSFET Seçimi: 18650 Pil Testi ve Yüksek Güç Kullanımı
- 5.5 IRFP260N Yerine Kullanılabilecek Güçlü MOSFET Önerileri
- 5.6 18650 Pil ve 1A – 1.5A Test İçin TO-220 MOSFET Önerileri
- 5.7 Hangi MOSFET Hangi Kullanım İçin Daha Mantıklı?
- 5.8 Şönt Dirençler
- 6 LM358 ve Op-Amp Seçimi
- 7 LM35 Sıcaklık Sensörü ve Fan Kontrolü
- 8 Arduino Nano Pin Bağlantıları
- 9 Yazılımın Arduino Nano’ya Uyarlanması
- 10 Çalışma Modları
- 11 İç Direnç Ölçümünde Dikkat Edilmesi Gerekenler
- 12 İç Direnç Değeri Nasıl Yorumlanmalı?
- 13 Settings Menüsü Ne İşe Yarar?
- 14 Measure Capacity Modunda Yapılan Yazılım Düzeltmeleri
- 15 Kalibrasyon
- 16 Kodda Yapılabilecek Kişiselleştirme Ayarları
- 16.1 1. Kapasite Testi Sonlandırma Voltajını Değiştirme
- 16.2 Orijinal 0.8V – 20V Aralığına Geri Dönmek
- 16.3 Daha Mantıklı Genel Kullanım Ayarı
- 16.4 2. Varsayılan Deşarj Akımını Değiştirme
- 16.5 3. İç Direnç Ölçümünde Varsayılan I1 / I2 Akımını Değiştirme
- 16.6 4. İç Direnç Akım Seçeneklerini Değiştirme
- 16.7 5. LM35 Sıcaklık Sensörünü Açma veya Kapatma
- 16.8 6. Fan Açma / Kapama Sıcaklıklarını Değiştirme
- 16.9 7. ADC Ortalama Alma Sayısını Değiştirme
- 16.10 8. ADC Offset Varsayılan Değerini Değiştirme
- 16.11 9. Ses Ayarlarının Varsayılan Durumunu Değiştirme
- 16.12 10. Buzzer Sürelerini Değiştirme
- 16.13 11. Tuş Tepkisini Değiştirme
- 16.14 12. Ekran Yazılarını Değiştirme
- 16.15 13. Pinleri Değiştirme
- 16.16 14. Zamanlayıcı Ayarlarını Değiştirmeyin
- 16.17 15. PWM Frekansı ve Timer Ayarları
- 16.18 Özet
- 17 Güvenli Test Sırası
- 18 Soğutma ve Güç Dayanımı
- 19 18650 Testi İçin Önerilen Başlangıç Ayarları
- 20 Arduino Akü Pil Test Cihazı Test Videosu
- 21 Arduino Pil Analizör PCB Tasarımı
- 22 Sonuç
| Özellik | Değer / Açıklama |
|---|---|
| Mikrodenetleyici | Arduino Nano üzerindeki ATmega328P |
| Çalışma modları | Measure capacity, Constant current, Measure internal R |
| Batarya voltaj aralığı | Yaklaşık 0.8 V * – 20 V |
| Voltaj ölçüm adımı | Yaklaşık 0.01 V |
| Deşarj akımı | 0.01 A – 2.50 A aralığında yazılımsal seçim |
| Ölçülen değerler | V, A, mAh, mWh, süre, iç direnç |
| Ekran | 20×4 karakter LCD, HD44780 uyumlu |
| Yük elemanı | Lineer bölgede çalışan güçlü N kanal MOSFET |
| Akım algılama | Paralel bağlı 3×0.33 ohm şönt dirençler |
| Op-amp beslemesi | 9 V |
| Logic besleme | 5 V |
Arduino Nano ile pil ve akü kapasite test cihazı blok şeması

Projenin Çıkış Noktası ve Arduino Nano’ya Uyarlama
Orijinal yazılım @F. Stefanec tarafından AVR C diliyle yazılmış. Kaynak sayfa: tefatronix.g6.cz/display.php?page=batmeter
Geliştirme ortamı olarak Code::Blocks, derleyici olarak AVR-GCC ve yükleme tarafında avrdude ile USBasp kullanılmış.
Orijinal devrede de ATmega328P kullanıldığı için Arduino Nano’ya uyarlama daha iyi oldu. Çünkü Arduino Nano da aynı mikrodenetleyici ailesini kullanıyor.
Kod tarafında yapılan işlem, projeyi sıfırdan Arduino kütüphaneleriyle yeniden yazmak değil, orijinal AVR C kodunun mantığını koruyarak Arduino IDE altında derlenebilir ve Arduino Nano bootloader üzerinden yüklenebilir hale getirmektir.
Bu nedenle kodun birçok yerinde doğrudan port register kullanımı korundu.
| Orijinal Proje | Arduino Nano Uyarlaması |
|---|---|
| ATmega328P | Arduino Nano üzerindeki ATmega328P |
| Code::Blocks | Arduino IDE |
| AVR-GCC | Arduino IDE’nin AVR-GCC altyapısı |
| USBasp ile yükleme | USB bootloader üzerinden yükleme |
| main() döngüsü | setup() ve loop() yapısı |
| AVR register kullanımı | Büyük oranda korunmuştur |
Devrenin Genel Çalışma Mantığı
Arduino Nano ile pil ve akü kapasite test cihazı devre şeması
Devre iki ana bölümden oluşur: kontrol bölümü ve yük bölümü. Kontrol bölümü Arduino Nano, LCD, tuşlar, buzzer, fan çıkışı, LM35, voltaj ölçüm girişi ve ayar elemanlarını içerir. Yük bölümü ise PWM filtresi, LM358 op-amp, IRFP260 MOSFET, şönt dirençler ve batarya bağlantısından oluşur.
Arduino Nano, PWM çıkışından bir sinyal üretir. Bu PWM sinyali RC filtre ile analog seviyeye yakın bir gerilime dönüştürülür.
Op-amp bu referans gerilim ile şönt dirençler üzerindeki gerilimi karşılaştırır.
Şönt direnç üzerindeki gerilim hedef seviyeye ulaşana kadar MOSFET gate sürülür. Böylece bataryadan sabit akım çekilmeye çalışılır.
Bu yapı klasik bir lineer elektronik yük mantığıdır. MOSFET anahtarlamalı çalışmaz; lineer bölgede çalışarak fazla enerjiyi ısıya çevirir.
Bu nedenle uzun süreli ve yüksek akımlı testlerde MOSFET için büyük soğutucu ve fan kullanmak zorunludur.
Kullanılan Ana Bölümler
Arduino Nano ve Kontrol Bölümü
Arduino Nano, cihazın tüm menü yapısını, LCD yazılarını, tuş okumalarını, ADC ölçümlerini, EEPROM kayıtlarını, PWM kontrolünü ve test sürelerini yönetir.
Orijinal devrede doğrudan ATmega328P kullanılırken bu uyarlamada aynı işlemci Arduino Nano kartı üzerinde kullanılmıştır.
- LCD veri ve kontrol pinleri Arduino Nano dijital pinlerine bağlanır.
- Butonlar GND’ye çekecek şekilde bağlanır.
- Batarya voltajı dirençler üzerinden ADC girişine uygulanır.
- PWM çıkışı yük kartındaki RC filtreye gider.
- Fan ve buzzer çıkışları transistör üzerinden sürülür.
- EEPROM içinde ses ve ADC offset ayarı saklanır.
LCD 20×4 Ekran (LCD2004)
Projede 20×4 karakter LCD kullanılmıştır. LCD Ekranda ana menü, kapasite testi, sabit akım yük modu, iç direnç ölçümü ve ayarlar gösterilir.
20×4 ekran kullanılması büyük avantaj sağlar; çünkü aynı anda voltaj, akım, süre, mAh, mWh ve test durumu görülebilir.
Arduino Nano pil test cihazı LCD menü ekranı

MOSFET ve Elektronik Yük Bölümü
Yük bölümünde güçlü bir N kanal IRFP260 MOSFET lineer bölgede çalıştırılır. Burada dikkat edilmesi gereken konu MOSFET’in sadece akımı açıp kapatan bir anahtar gibi çalışmamasıdır. MOSFET üzerinde ciddi güç harcanır.
Örneğin 4.2V dolu bir 18650 pil 1A ile test edildiğinde yük tarafında yaklaşık 4W civarında güç harcanır.
Fakat 20V seviyesinde 2.5A gibi yüksek bir testte bu güç 50W seviyesine yaklaşabilir. Bu nedenle ısı tasarımı bu devrede yazılım kadar önemlidir.
| Test Koşulu | Yaklaşık Güç | Tavsiye |
|---|---|---|
| 4.2V, 1A | 4.2W | 18650 testleri için makul |
| 12V, 1A | 12W | İyi soğutma gerekir |
| 12V, 2A | 24W | Fan zorunlu |
| 20V, 2.5A | 50W | MOSFET, soğutucu ve dirençler dikkatle seçilmeli |
MOSFET Seçimi: 18650 Pil Testi ve Yüksek Güç Kullanımı
Bu devrede MOSFET, sabit akım elektronik yük elemanı olarak çalışır. Yani MOSFET anahtarlama elemanı gibi tamamen açık veya tamamen kapalı çalışmaz; lineer bölgede çalışarak pil üzerinden istenen akımın çekilmesini sağlar.
Bu nedenle MOSFET seçerken sadece akım değerine değil, aynı zamanda soğutma, gövde tipi ve üzerinde harcanacak güce de dikkat edilmelidir.
Tek hücre 18650 pil testlerinde 1A veya 1.5A gibi akımlar kullanılıyorsa MOSFET üzerindeki güç genellikle birkaç watt seviyesindedir.
Örneğin tam dolu bir 18650 pilde 4.2V ve 1.5A test akımı için MOSFET üzerinde yaklaşık 6W civarında güç oluşabilir. Bu durumda iyi soğutulan bir TO-220 MOSFET çoğu uygulama için yeterli olur.
Ancak cihaz 12V akü, daha yüksek voltajlı pil grupları veya 2A üzeri uzun süreli yük testleri için kullanılacaksa IRFP260N gibi daha büyük gövdeli ve daha güçlü MOSFET tercih edilmelidir.
IRFP260N Yerine Kullanılabilecek Güçlü MOSFET Önerileri
| MOSFET | Gövde | Yaklaşık Sınıf | Önerilen Kullanım | Yorum |
|---|---|---|---|---|
| IRFP260N | TO-247 | 200V / 50A / 300W | Genel amaçlı güçlü seçenek | Orijinal devreye yakın, yüksek güç ve uzun süreli testler için uygun |
| IRFP250N | TO-247 | 200V / 30A / 214W | IRFP260N alternatifi | IRFP260N kadar güçlü değildir ama birçok batarya test uygulaması için yeterlidir |
| IRFP264 / IRFP264N | TO-247 | 250V / 38A / 280W | Daha yüksek voltaj ve güçlü yük testleri | 12V akü ve daha yüksek güç uygulamalarında tercih edilebilir |
18650 Pil ve 1A – 1.5A Test İçin TO-220 MOSFET Önerileri
| MOSFET | Gövde | Yaklaşık Sınıf | Önerilen Kullanım | Yorum |
|---|---|---|---|---|
| IRFZ44N | TO-220 | 55V / 49A | 18650 pil, 1A – 1.5A test | Kolay bulunur, düşük voltajlı pil testleri için iyi seçimdir. |
| IRF540N | TO-220 | 100V / 33A | 18650 pil ve orta seviye yük testleri | 55V MOSFET’e göre daha yüksek voltaj dayanımı vardır. |
| IRF3205 | TO-220 | 55V / 110A / 200W | Düşük voltaj, yüksek akım uygulamaları | 18650 için fazlasıyla yeterlidir; düşük voltajlı güçlü yüklerde kullanılabilir. |
Hangi MOSFET Hangi Kullanım İçin Daha Mantıklı?
| Kullanım Senaryosu | Önerilen MOSFET | Açıklama |
|---|---|---|
| Sadece tek hücre 18650, 1A test | IRFZ44N | Küçük soğutucu ile yeterli olur |
| Tek hücre 18650, 1.5A test | IRFZ44N veya IRF540N | Mutlaka küçük/orta boy soğutucu kullanılmalıdır. |
| 18650 dışında farklı piller de test edilecekse | IRF540N | 100V dayanımı sayesinde daha esnek bir seçimdir. |
| 12V akü veya yüksek güç testi | IRFP260N | Daha büyük gövde ve daha iyi ısı dağıtımı sağlar. |
| Uzun süreli yüksek akım testi | IRFP260N veya IRFP264 | Büyük soğutucu ve fan ile kullanılmalıdır |
Sadece 18650 pil testi yapılacaksa IRFP260N kullanmak şart değildir. IRFZ44N, IRF540N veya IRF3205 gibi TO-220 gövdeli MOSFET’ler 1A – 1.5A seviyelerinde yeterli olabilir.
Fakat MOSFET mutlaka soğutucuya bağlanmalıdır. Devre lineer elektronik yük olarak çalıştığı için MOSFET üzerinde oluşan ısı doğrudan test akımı ve pil voltajı ile ilişkilidir.
IRFP260N gibi büyük gövdeli MOSFET’ler daha çok cihazın genel amaçlı kalması, 12V akü testleri yapılması veya daha yüksek akımlarda uzun süreli çalışması istenen durumlarda tercih edilmelidir.
Şönt Dirençler
Akım ölçümü ve regülasyonu için MOSFET source tarafında şönt dirençler kullanılır.
Üç adet 0.33 ohm direnç paralel bağlanmıştır. Bu durumda eşdeğer direnç yaklaşık 0.11 ohm olur.
Orjinal uygulamada şönt dirençlerin gücü 1W ben daha güvenilir olması için 2W kullandım. Yüksek voltaj ve akımlar da çalışacaksanız 2W uygun hatta 3W kullanılabilir
| Akım | Şönt Üzerindeki Beklenen Gerilim |
|---|---|
| 0.25 A | Yaklaşık 27.5 mV |
| 0.50 A | Yaklaşık 55 mV |
| 1.00 A | Yaklaşık 110 mV |
| 2.00 A | Yaklaşık 220 mV |
| 2.50 A | Yaklaşık 275 mV |
Bu tablo aynı zamanda kalibrasyon için de kullanılabilir. Sabit akım modunda 1 A seçildiğinde şönt uçlarında yaklaşık 110 mV görülmelidir.
Bu değer çok farklıysa akım ayarı, şönt direnç değeri, op-amp bölümü veya PWM filtre tarafı kontrol edilmelidir.
LM358 ve Op-Amp Seçimi
Orijinal devrede LM358 kullanılmıştır. LM358 tek beslemeyle çalışabilen, kolay bulunan ve ucuz bir op-amp olduğu için bu tip devrelerde sık kullanılır.
Fakat bu projede op-amp, küçük şönt gerilimlerini karşılaştırdığı için offset hatası doğrudan akım hatasına dönüşür.
Yazar bunu sayfasında belirtmiş, daha iyi ölçüm için kaliteli opamp önermiş.
Amacınız iyi kötü pil ayrımı yapmak çok hassas ölçümler gerekmiyorsa LM358 işinizi görecektir.
Özellikle düşük akımlarda LM358’in offset değeri önemli hale gelir. Şönt eşdeğeri yaklaşık 0.11 ohm olduğunda sadece 3 mV offset bile yaklaşık 27 mA akım hatası oluşturabilir.
250 mA gibi düşük bir test akımında bu hata göz ardı edilemeyecek seviyeye gelir.
Bu nedenle daha kaliteli op-amp kullanmak cihazın düşük akım performansını iyileştirebilir. Fakat burada çok önemli bir ayrıntı var: Devrede op-amp beslemesi 9 V seviyesindedir. Bu yüzden maksimum besleme gerilimi 5.5 V olan MCP6022, MCP6V02 veya OPA2333 gibi op-amplar doğrudan kullanılamaz.

LM358 Yerine Kullanılabilecek Op-Amp Seçenekleri
| Op-Amp | 9 V Beslemeye Uygunluk | Avantaj | Not |
|---|---|---|---|
| OPA2188 | Uygun | Çok düşük offset, zero-drift yapı | SMD paket yaygın, DIP için adaptör gerekebilir. |
| OPA2197 | Uygun | Düşük offset, geniş besleme aralığı, iyi genel performans | Kaliteli yükseltme seçeneği |
| OPA2991 | Uygun | Geniş besleme aralığı, fiyat/performans dengesi iyi | LM358’e göre belirgin iyileşme sağlar. |
| TLV9152 | Uygun | 9 V ile çalışabilir, RRIO yapıda | Ekonomik ve modern alternatif |
| LT1013 | Uygun | DIP-8 bulunma ihtimali daha yüksek | Düşük offsetli klasik alternatif |
| TLC2272 | Uygun | DIP-8 bulunabilir, tek beslemeye uygun | LM358’e göre iyileşme sağlar fakat en hassas seçenek değildir |
Op-amp değiştirilecekse pin dizilimi mutlaka kontrol edilmelidir. LM358 çift op-amp standart 8 pin yapısını kullanır.
Seçilecek op-amp da aynı pin dizilimine sahip olmalı, tek beslemede 9 V ile çalışabilmeli ve giriş common-mode aralığı GND seviyesine kadar inebilmelidir.
LM35, LM358 ve fan kontrol devreleriyle ilgilenenler için sitedeki LM35 LM358 sıcaklığa göre fan kontrol devresi yazısı da bu bölümle ilişkili bir örnektir.
LM35 Sıcaklık Sensörü ve Fan Kontrolü
Orijinal projede LM35 sıcaklık sensörü desteği vardır. Sensör kullanıldığında sıcaklığa göre fan kontrolü yapılabilir.
Örneğin belirli sıcaklık üzerinde fan açılır, daha düşük sıcaklıkta kapanır ve aşırı sıcaklıkta cihaz testi durdurabilir.
Ben fanı sürekli açık kullanacağım için LM35 eklemedim ayrıca config.h dosyasında bu özelliği kapattım (satır 47: //#define LM35_INSTALLED) .
Özellikle MOSFET lineer bölgede çalıştığı için yük testi sırasında ısınma kaçınılmazdır.
Bu nedenle Arduino Nano kodunda LM35 desteği varsayılan olarak kapatıldı ve fan yük altında sürekli çalışacak şekilde daha basit hale getirildi.
| Seçenek | Avantaj | Dezavantaj |
|---|---|---|
| LM35 ile otomatik fan kontrolü | Daha sessiz çalışma, sıcaklığa göre kontrol | Sensör bağlantısı ve yazılım ayarı gerekir |
| Fanı sürekli çalıştırmak | Daha basit, daha güvenli, daha az yazılım riski | Fan sürekli ses yapar |
Arduino Nano Pin Bağlantıları
Arduino Nano portunda orijinal ATmega328P pin yapısı mümkün olduğunca korunmuştur.
Bu sayede orijinal yazılımın port, timer ve ADC mantığı fazla bozulmadan çalıştırılabildi.
| Fonksiyon | Arduino Nano Pini | Açıklama |
|---|---|---|
| LCD RS | D2 | LCD kontrol pini |
| LCD E | D3 | LCD enable pini |
| LCD D4-D7 | D4-D7 | 4 bit LCD veri hattı |
| OK butonu | D8 | Menü onay / sol |
| DOWN butonu | D9 | Değer azaltma |
| UP butonu | D10 | Değer artırma |
| PWM | D11 | Yük akımı kontrol PWM çıkışı |
| ESC butonu | D12 | Çıkış / sağ |
| Buzzer | D13 | Sesli uyarı çıkışı |
| VFB | A0 | Batarya voltaj geri bildirimi |
| VPWR | A1 | Besleme voltajı ölçümü |
| INH | A2 | Yük kapatma / inhibit hattı |
| TFB | A3 | LM35 sıcaklık girişi, kullanılmayabilir |
| FAN | A4 | Fan kontrol çıkışı |
| PWLED | A5 | Power LED kontrolü |
Yazılımın Arduino Nano’ya Uyarlanması
Orijinal yazılım C dilinde yazılmıştı. Arduino Nano sürümünde temel ölçüm mantığı korunarak proje Arduino IDE altında derlenebilir hale getirildi.
Bu işlemde Arduino’nun klasik digitalWrite, analogRead ve analogWrite yapısına tamamen geçilmedi.
Çünkü bu proje zamanlama, PWM ve ADC açısından doğrudan register kontrolüne daha uygundur.
Yapılan Başlıca Yazılım Değişiklikleri
- Orijinal main yapısı Arduino setup ve loop yapısına taşındı.
- AVR register kullanımı büyük ölçüde korundu.
- Timer0, Timer1 ve Timer2 ayarları Arduino Nano 16 MHz çalışma yapısına göre düzenlendi.
- Arduino delay ve millis kullanımı kritik bölümlerde tercih edilmedi.
- ADC oversampling ve ortalama alma mantığı korundu.
- EEPROM ile ses ve ADC offset ayarlarının saklanması korundu.
- LM35 desteği varsayılan olarak kapatıldı.
- Kapasite testi sonlandırma voltajı Li-ion için daha güvenli hale getirildi.
- İç direnç sonucu ohm yerine mΩ formatında gösterilecek şekilde güncellendi.
Çalışma Modları
Measure Capacity

Bu modda cihaz pili seçilen sabit akımla boşaltır. Test, batarya voltajı ayarlanan sonlandırma voltajına (Term. V) düşünce işlem biter.
Yazılım geçen süre ve akım değerinden mAh hesabı yapar. Ayrıca voltaj ve akım bilgisinden mWh değeri de hesaplanabilir.
18650 Li-ion hücrelerde kapasite testi için 1 A akım ve 3.00 V sonlandırma voltajı iyi bir başlangıç değeridir.
Eğer test edilen pil hücresinin datasheet bilgisi biliniyorsa sonlandırma voltajı datasheet değerine göre seçilmelidir.
Korumasız, eski veya durumu bilinmeyen Li-ion hücrelerde 2.50 V altına inilmemelidir. Bunun için yazılım min. 2.50V olarak ayarlandı.
| Pil Türü | Önerilen Test Akımı | Önerilen Sonlandırma Voltajı |
|---|---|---|
| Tek hücre 18650 Li-ion | 0.5 A – 1 A | 3.00 V |
| Yüksek akım 18650 | 1 A – 2 A | 2.80 V – 3.00 V |
| Küçük Li-ion hücreler | 0.1 A – 0.5 A | 3.00 V |
| Kurşun asit akü | Akü kapasitesine göre seçilmeli | Hücre sayısına göre belirlenmeli |
Bu proje ile benzer mantıkta çalışan farklı uygulamalara örnek olarak Li-ion ve Li-pol pil kapasite ölçer STM32 projesi de incelenebilir.
Constant Current

Constant current modu, cihazı ayarlanabilir elektronik yük gibi kullanmayı sağlar. Bu modda bir güç kaynağı, adaptör, pil veya akü seçilen sabit akımla yüklenir. Ekranda voltaj, akım ve güç değeri görülebilir.
Bu mod özellikle akım kalibrasyonu için çok kullanışlıdır. Örneğin 1 A seçildiğinde şönt üzerinde yaklaşık 110 mV görülmelidir.
Aynı anda harici bir multimetre ile batarya voltajı ve şönt gerilimi kontrol edilirse cihazın doğru çalışıp çalışmadığı hızlıca anlaşılır.
Measure Internal R

Measure internal R modu, pilin veya akünün iç direncini yaklaşık olarak ölçmek için kullanılır. Yazılım iki farklı akım noktası seçer.
Önce düşük akımda veya yüksüz durumda batarya voltajı ölçülür. Sonra daha yüksek akımda ikinci voltaj ölçülür.
İki voltaj arasındaki fark, iki akım arasındaki farka bölünerek iç direnç hesaplanır.
| Seçim | I1 | I2 | Yorum |
|---|---|---|---|
| Varsayılan | 0.00 A | 0.25 A | Hafif test, düşük gerilim farkı nedeniyle daha oynak olabilir |
| 18650 için pratik | 0.00 A | 1.00 A | Daha anlaşılır sonuç verir |
| Daha güçlü hücreler | 0.00 A | 2.00 A | Soğutma ve pil güvenliği kontrol edilmelidir |
İç direnç sonucu artık mΩ olarak gösterilecek şekilde düzenlendi. Örneğin eski ekranda görülen 00.17 ohm değeri yeni gösterimde 170 mΩ olarak okunur. Bu ifade pil için daha anlaşılırdır.
İç Direnç Ölçümünde Seçilebilir I1 / I2 Akım Değerleri
| Seçim | I1 İlk Ölçüm Akımı | I2 İkinci Ölçüm Akımı | Yorum |
|---|---|---|---|
| 0 | 0.00A | 0.25A | Düşük akım testi, varsayılan başlangıç seçimi |
| 1 | 0.25A | 0.50A | Düşük akım aralığında karşılaştırma |
| 2 | 0.00A | 0.50A | Yüksüz ölçümden 0.50A yüke geçiş |
| 3 | 0.50A | 1.00A | Orta akım aralığında karşılaştırma |
| 4 | 0.00A | 1.00A | 18650 pil için pratik ve anlaşılır seçim |
| 5 | 1.00A | 2.00A | Daha yüksek akım aralığında karşılaştırma |
| 6 | 1.50A | 2.50A | Yüksek akım testi, pil ve soğutma dikkatle izlenmeli |
| 7 | 0.00A | 2.00A | Yüksüz ölçümden 2A yüke geçiş |
| 8 | 0.50A | 2.50A | Yüksek akım farkı ile karşılaştırma |
| 9 | 0.00A | 2.50A | En yüksek yüksüz-yüklü ölçüm farkı |
I1 ve I2 Akımlarının İç Direnç Hesabına Etkisi
- İç direnç ölçümünde cihaz önce I1 akımında V1 voltajını, ardından I2 akımında V2 voltajını ölçer.
- Hesaplama temel olarak R = (V1 – V2) / (I2 – I1) mantığıyla yapılır.
- 18650 pil ölçümünde en anlaşılır yöntem genellikle I1 = 0.00A ve I2 = 1.00A seçimidir.
- İlk ölçümün 0A olması, pilin yaklaşık yüksüz voltajını referans almayı sağlar. İkinci ölçümde 1A yük uygulanınca oluşan voltaj düşümü doğrudan iç direnç hesabında kullanılır.
- Örneğin V1 = 4.05V, V2 = 3.88V, I1 = 0.00A ve I2 = 1.00A ise sonuç yaklaşık 0.17Ω = 170mΩ olur.
- I1 akımının da seçilebilir bırakılması, farklı test senaryoları için faydalıdır. Örneğin bazı akülerde veya güç kaynaklarında 0A yerine iki farklı yüklü çalışma noktası arasında karşılaştırma yapılabilir.
- Ancak tek hücre 18650 piller için pratik kullanımda ideal olan genellikle ilk ölçümü yüksüz veya 0A’da almak, ikinci ölçümü ise 1A gibi yeterli voltaj düşümü oluşturacak bir akımda yapmaktır.
- Bu özellik özellikle farklı pil, akü veya güç kaynağı ölçüm çalışmaları için korunmuştur; sadece 18650 piller düşünülerek sabitlenmemiştir.
İç Direnç Ölçümünde Dikkat Edilmesi Gerekenler
Bu devrede iç direnç ölçümü hızlı karşılaştırma için yeterlidir, fakat profesyonel dört telli Kelvin ölçüm cihazı gibi düşünülmemelidir.
Çünkü bağlantı kabloları, pil tutucu, kontak direnci, sigorta, PCB yolları iç dirençleri ölçüme dahil olabilir.
Örneğin ticari bir pil test cihazı aynı pili 90 mΩ gösterebilirken bu Arduino Nano devresi 160 mΩ – 170 mΩ civarında gösterebilir.
Bu farkın tamamı pilin gerçek iç direnci olmayabilir. İki telli ölçüm yapıldığı için bağlantı dirençleri de sonuç üzerinde etkili olur.
| Fark Oluşturabilecek Nokta | Etkisi |
|---|---|
| Pil tutucu / yaylı kontak | mΩ seviyesinde ek direnç oluşturabilir |
| Krokodil veya klemens | Temas kalitesine göre sonucu yükseltebilir |
| Kablo direnci | Kısa ve kalın kabloda düşük, ince kabloda yüksek olur |
| PCB yolları | Akım yoluna göre ölçüme karışabilir |
| Ölçüm süresi | Uzun yük süresi pilde kimyasal voltaj çökmesini artırabilir |
| Test akımı | Düşük akımda voltaj farkı az olduğu için hata artar |
İç Direnç Değeri Nasıl Yorumlanmalı?
İç direnç düşükse pil yük altında daha az voltaj düşürür, daha az ısınır ve yüksek akımı daha rahat verir.
Yani genel kural olarak iç direnç ne kadar düşükse pil o kadar iyidir. Ancak kapasite değeri de mutlaka birlikte değerlendirilmelidir.
| Yaklaşık İç Direnç | Yorum |
|---|---|
| 100 mΩ altı | İyi veya yüksek akıma daha uygun pil |
| 100 mΩ – 180 mΩ | Bu cihazda normal / kullanılabilir aralık |
| 180 mΩ – 250 mΩ | Yaşlanmış veya orta kalite pil |
| 250 mΩ üstü | Yük altında zayıf davranabilir |
Bu nedenle bu cihazı mutlak laboratuvar referansı gibi değil, aynı yöntemle iyi ve kötü pilleri ayıran pratik bir analizör gibi kullanmak daha doğrudur.
Aynı cihaz, aynı kablo, aynı pil yatağı ve aynı test akımı kullanılırsa karşılaştırma sonuçları oldukça işe yarar.
Settings Menüsü Ne İşe Yarar?

Settings bölümünde ses ayarı, ADC offset compensation ve EEPROM’a kaydetme seçenekleri bulunur.
Bu menü doğrudan test modlarından biri değildir, fakat ölçüm doğruluğunu ve kullanım konforunu etkiler.
| Ayar | Görevi |
|---|---|
| Sound | Buzzer sesini açar veya kapatır |
| AD offset comp. | ADC ölçümüne küçük sabit düzeltme ekler veya çıkarır |
| Save to EEPROM | Ses ve offset ayarlarını kalıcı hafızaya kaydeder |
| Back to menu | Ana menüye geri döner |
AD offset compensation rastgele değiştirilmemelidir. Önce VFB trimpotu ile voltaj doğru hale getirilmelidir.
Offset ayarı yalnızca küçük sabit sapmaları düzeltmek için kullanılmalıdır.
Measure Capacity Modunda Yapılan Yazılım Düzeltmeleri
Arduino Nano portu sırasında en önemli sorunlardan biri kapasite ölçümünde geçen sürenin hızlı ilerlemesiydi.
Bu hata Timer1 ayarından kaynaklanıyordu. Timer1 yeniden düzenlenerek Arduino Nano’nun 16 MHz saat frekansına göre 1 saniyelik zaman tabanı doğru hale getirildi.
Bu düzeltmeden sonra gerçek 60 saniyelik testte cihaz ekranında da yaklaşık 1 dakika ilerleme görülmelidir.
1 A akımla 60 saniye süren testte yaklaşık 16.7 mAh civarında kapasite artışı beklenir.
Bir diğer düzeltme sonlandırma voltajı tarafında yapıldı. İlk sürümde terminated voltajı 0.80 V gibi Li-ion hücreler için tehlikeli bir değerden başlıyordu.
Yeni yazılımda 18650 testleri için varsayılan sonlandırma voltajı 3.00 V olarak ayarlandı ve kullanıcı hatasını azaltmak için daha güvenli sınırlar tercih edildi.
0.8V – 20V Aralığı ve Yazılımdaki Güvenli Sonlandırma Sınırı
Orijinal projede cihazın batarya ölçüm aralığı yaklaşık 0.8V – 20V olarak verilmiştir.
Bu değer, devrenin donanımsal ölçüm aralığını ifade eder. Yani VFB ölçüm hattı ve ADC kalibrasyonu doğru yapıldığında cihaz farklı gerilim seviyelerindeki pil ve aküleri ölçebilecek yapıdadır.
Ancak bu Arduino Nano uyarlamasında Measure capacity bölümündeki sonlandırma voltajı özellikle Li-ion piller için daha güvenli hale getirildi.
İlk denemelerde sonlandırma voltajı 0.80V gibi çok düşük bir değerden başlayabiliyordu. Bu değer Li-ion ve 18650 hücreler için uygun değildir; hücreyi aşırı deşarja götürebilir.
Bu nedenle yazılımda kapasite testi için sonlandırma voltajı varsayılan olarak 3.00V yapıldı ve ayarlanabilir alt sınır 2.50V seviyesinde tutuldu.
Böylece kullanıcı hatasıyla 18650 gibi Li-ion pillerin çok düşük voltaja kadar boşaltılması engellenmiş oldu.
| Bölüm | Değer | Açıklama |
|---|---|---|
| Orijinal donanım ölçüm aralığı | 0.8V – 20V | Devrenin genel voltaj ölçüm kapasitesini ifade eder |
| Arduino Nano yazılımında varsayılan sonlandırma | 3.00V | 18650 Li-ion kapasite testi için güvenli başlangıç değeri |
| Arduino Nano yazılımında minimum sonlandırma | 2.50V | Li-ion pillerde aşırı deşarj riskini azaltmak için alt sınır |
Bu sınırlama donanımın 0.8V seviyesini ölçemeyeceği anlamına gelmez. Sadece Measure capacity modunda testin otomatik bitiş voltajı, Li-ion piller düşünülerek daha güvenli sınırlara çekilmiştir.
Farklı kimyadaki piller veya özel testler için daha düşük sonlandırma voltajı gerekiyorsa, yazılımdaki minimum sınır bilinçli olarak değiştirilmelidir.
Kalibrasyon
Devrenin doğru sonuç vermesi için iki temel kalibrasyon gerekir: voltaj kalibrasyonu ve akım kalibrasyonu.
Voltaj kalibrasyonu yapılmadan kapasite testi ve sonlandırma voltajı güvenilir olmaz. Akım kalibrasyonu yapılmadan mAh ve Wh sonucu doğru beklenmemelidir.
Voltaj Kalibrasyonu
Batarya voltajı VFB hattından Arduino ADC girişine gelir. Bu hatta direnç bölücü ve trimpot bulunur.
Harici multimetre ile pil uçlarındaki gerçek voltaj ölçülür, LCD’deki değerle karşılaştırılır. Gerekirse VFB trimpotu ayarlanır.
- Pil uçlarındaki voltaj multimetre ile ölçülür.
- LCD’deki voltaj değeri okunur.
- Aradaki fark VFB trimpotu ayarlanır.
- Küçük sabit farklar için settings menüsündeki AD offset compensation kullanılabilir.
- Kalibrasyon sonrası ayarlar EEPROM’a kaydedilir.
Ölçüm tarafında kullanılan multimetrenin doğruluğu da önemlidir. Multimetre kullanımı konusunda temel hataları azaltmak için multimetre nasıl doğru kullanılır yazısı faydalı olabilir.
İlk testlerde VFB ayarı yapmam gerekti ama büyük farklar yoktu mV seviyesinde hata vardı trimptu ayarlayarak ölçü aletine göre sabitledim.
Akım Kalibrasyonu
Akım kalibrasyonu için en pratik yöntem şönt gerilimini ölçmektir. Üç adet 0.33 ohm direnç paralel olduğunda eşdeğer direnç yaklaşık 0.11 ohm olur. 1 A akımda şönt üzerinde yaklaşık 110 mV görülmelidir.
| Seçilen Akım | Beklenen Şönt Gerilimi | Kontrol |
|---|---|---|
| 0.10 A | 11 mV | Düşük akımda op-amp offset etkisi görülebilir |
| 0.50 A | 55 mV | Orta seviye kontrol |
| 1.00 A | 110 mV | 18650 testleri için ana kontrol noktası |
| 2.00 A | 220 mV | Soğutma dikkatle izlenmeli |
Constant Current moduna girin akımı belirleyin ve amper metre ile pilden çekilen akımı ölçün LCD ekranda farklı değer görürseniz PWM traimpotu ile ayarlama yapın
Kodda Yapılabilecek Kişiselleştirme Ayarları
Arduino Nano sürümünde bazı değerler güvenli kullanım için bilinçli olarak sınırlandırılmıştır.
Özellikle 18650 Li-ion pil testlerinde aşırı deşarjı önlemek amacıyla kapasite testi sonlandırma voltajı 2.50V altına düşmeyecek şekilde ayarlanmıştır.
Ancak farklı pil türleri, aküler veya özel testler için bu sınırlar kaynak koddan değiştirilebilir.
1. Kapasite Testi Sonlandırma Voltajını Değiştirme
Bu ayarlar global_defines.h dosyasında bulunur.
Mevcut güvenli Li-ion ayarı şu şekildedir:
#define DEFAULT_TERM_VOLTAGE 300
#define MIN_TERM_VOLTAGE 250
#define MAX_TERM_VOLTAGE 420Buradaki değerler 0.01V birimindedir. Yani:
- 300 = 3.00V
- 250 = 2.50V
- 420 = 4.20V
18650 Li-ion pil için bu ayar güvenlidir. Cihaz açıldığında kapasite testi sonlandırma voltajı 3.00V olur ve kullanıcı 2.50V altına inemez.
Orijinal 0.8V – 20V Aralığına Geri Dönmek
Orijinal donanım aralığına benzer şekilde kapasite testi sonlandırma voltajını 0.80V – 20.00V arasına açmak isteyen kullanıcılar aynı bölümü şu şekilde değiştirebilir:
#define DEFAULT_TERM_VOLTAGE 80
#define MIN_TERM_VOLTAGE 80
#define MAX_TERM_VOLTAGE 2000Bu durumda:
- 80 = 0.80V
- 2000 = 20.00V
Ancak bu ayar Li-ion ve 18650 piller için dikkatli kullanılmalıdır. Çünkü kullanıcı yanlışlıkla 0.80V gibi çok düşük bir sonlandırma voltajı seçerse Li-ion hücre aşırı deşarj olabilir ve zarar görebilir.
Daha Mantıklı Genel Kullanım Ayarı
Cihazı hem 18650 hem de daha yüksek voltajlı aküler için kullanmak isteyenler için daha dengeli bir ayar şu olabilir:
#define DEFAULT_TERM_VOLTAGE 300
#define MIN_TERM_VOLTAGE 250
#define MAX_TERM_VOLTAGE 2000Bu ayarda cihaz 3.00V ile başlar, 2.50V altına inmez; fakat kullanıcı isterse 20.00V seviyesine kadar daha yüksek sonlandırma voltajı seçebilir. Bu, 12V akü gibi uygulamalar için daha esnek bir seçenektir.
2. Varsayılan Deşarj Akımını Değiştirme
Varsayılan deşarj akımı batmeter_nano.ino dosyasında şu satırla belirlenir:
uint8_t pwm_current = 1;Buradaki değer de 0.01A birimindedir.
- 1 = 0.01A
- 25 = 0.25A
- 50 = 0.50A
- 100 = 1.00A
- 200 = 2.00A
Örneğin cihazın kapasite testi veya sabit akım yük menüsünde başlangıç akımının 1.00A olmasını isteyen kullanıcı şu şekilde değiştirebilir:
uint8_t pwm_current = 100;Güvenlik açısından ilk denemelerde düşük değerle başlamak daha iyidir. Bu nedenle yeni kurulumlarda 0.01A veya 0.10A gibi düşük başlangıç akımı tercih edilebilir.
3. İç Direnç Ölçümünde Varsayılan I1 / I2 Akımını Değiştirme
İç direnç ölçümünde kullanılan akım seçenekleri batmeter_nano.ino dosyasında şu satırlardadır:
uint8_t rin_current_choice = 0;
const uint8_t rin_current1[10] PROGMEM = {0, 25, 0, 50, 0, 100, 150, 0, 50, 0};
const uint8_t rin_current2[10] PROGMEM = {25, 50, 50, 100, 100, 200, 250, 200, 250, 250};Buradaki değerler de 0.01A birimindedir.
- 25 = 0.25A
- 50 = 0.50A
- 100 = 1.00A
- 250 = 2.50A
Varsayılan seçim şu satırla belirlenir:
uint8_t rin_current_choice = 0;Bu durumda ilk açılışta iç direnç ölçümü 0.00A – 0.25A aralığıyla başlar.
18650 piller için daha pratik bir başlangıç istenirse varsayılan seçim 4 yapılabilir:
uint8_t rin_current_choice = 4;Bu durumda iç direnç ölçümü varsayılan olarak şu şekilde başlar:
- I1 = 0.00A
- I2 = 1.00A
Bu seçim, tek hücre 18650 pillerde daha belirgin voltaj düşümü oluşturduğu için pratik karşılaştırma açısından daha anlaşılır sonuç verir.
4. İç Direnç Akım Seçeneklerini Değiştirme
Kullanıcı isterse iç direnç ölçüm seçeneklerini tamamen değiştirebilir. Örneğin sadece 18650 için daha sade bir liste istenirse akım dizileri şu şekilde düzenlenebilir:
const uint8_t rin_current1[10] PROGMEM = {0, 0, 0, 0, 0, 25, 50, 50, 100, 100};
const uint8_t rin_current2[10] PROGMEM = {25, 50, 75, 100, 150, 100, 100, 150, 150, 200};Bu örnek listede daha çok 0A’dan başlayan ve 0.25A – 2.00A aralığına çıkan ölçüm seçenekleri vardır. Ancak bu değerler değiştirilirken MOSFET, şönt dirençler, pil güvenliği ve soğutma mutlaka dikkate alınmalıdır.
5. LM35 Sıcaklık Sensörünü Açma veya Kapatma
LM35 sıcaklık sensörü ayarı config.h dosyasında bulunur.
Mevcut durumda LM35 kapalıysa satır şu şekildedir:
//#define LM35_INSTALLEDLM35 sensörü kullanılacaksa satırın başındaki // kaldırılır:
#define LM35_INSTALLEDLM35 açık olduğunda fan sıcaklığa göre kontrol edilir ve aşırı sıcaklıkta cihaz testi durdurabilir. Sensör takılı değilken bu satır aktif edilmemelidir. Aksi halde ADC girişi boştan okuma yapabilir ve hatalı sıcaklık davranışı oluşabilir.
6. Fan Açma / Kapama Sıcaklıklarını Değiştirme
LM35 aktif kullanılıyorsa fan eşikleri config.h dosyasında şu satırlardan değiştirilir:
#define TEMP_AD_FAN_START 512
#define TEMP_AD_FAN_STOP 446
#define TEMP_AD_FAULT 725Yaklaşık karşılıkları şöyledir:
- TEMP_AD_FAN_START 512 ≈ 55°C civarında fan açma
- TEMP_AD_FAN_STOP 446 ≈ 48°C civarında fan kapama
- TEMP_AD_FAULT 725 ≈ 78°C civarında acil durdurma
Fan daha erken açılsın istenirse TEMP_AD_FAN_START değeri düşürülebilir. Aşırı sıcaklık koruması daha hassas olsun istenirse TEMP_AD_FAULT değeri düşürülebilir.
7. ADC Ortalama Alma Sayısını Değiştirme
Ölçümlerin daha kararlı veya daha hızlı tepki vermesi için ADC ortalama alma değerleri config.h dosyasında değiştirilebilir:
#define RIN_PREAVG_COUNT 8
#define CAP_PREAVG_COUNT 32- RIN_PREAVG_COUNT iç direnç ölçümünde kullanılan ortalama sayısını etkiler.
- CAP_PREAVG_COUNT kapasite testi sırasında voltaj ölçüm ortalamasını etkiler.
Bu değerler artırılırsa ölçüm daha kararlı olabilir fakat tepki biraz yavaşlar. Değerler azaltılırsa tepki hızlanır fakat ekrandaki voltaj daha oynak görünebilir.
8. ADC Offset Varsayılan Değerini Değiştirme
ADC offset düzeltmesi config.h dosyasında şu satırla belirlenir:
#define DEFAULT_OFFSET_COMP 110Bu değer cihaz ilk kez çalıştırıldığında veya EEPROM ayarları geçersiz olduğunda kullanılır. Voltaj ölçümü multimetreye göre sürekli düşük veya yüksek görünüyorsa önce donanımdaki VFB trimpotu ayarlanmalı, küçük sabit sapmalar için bu offset değeri kullanılmalıdır.
Rastgele değiştirilmemelidir. Yanlış offset değeri kapasite testi sonlandırma voltajını ve iç direnç ölçümündeki V1 / V2 değerlerini etkiler.
9. Ses Ayarlarının Varsayılan Durumunu Değiştirme
Ses ayarının varsayılan durumu config.h dosyasındaki şu satırla ilgilidir:
#define DEFAULT_SETTINGS 0Sesin varsayılan olarak açık gelmesi istenirse bu ayar, yazılımdaki settings_sound_on bitiyle birlikte düzenlenebilir. Ancak cihazda Settings menüsünden Sound ayarı değiştirilip EEPROM’a kaydedilebildiği için genellikle bu satırı değiştirmek gerekmez.
10. Buzzer Sürelerini Değiştirme
Tuş sesi ve bitiş sesi süreleri config.h dosyasında bulunur:
#define BEEP_LEN_BUTTON 10
#define BEEP_LEN_FINISHED 250
#define BEEP_LEN_REPEAT 5
#define BEEP_LEN_START 5- BEEP_LEN_BUTTON tuşa basma sesi
- BEEP_LEN_FINISHED test bitiş sesi
- BEEP_LEN_REPEAT tuş basılı tutulduğunda tekrar sesi
- BEEP_LEN_START başlangıç sesi
Sesler uzun gelirse bu değerler düşürülebilir. Daha belirgin uyarı istenirse özellikle BEEP_LEN_FINISHED artırılabilir.
11. Tuş Tepkisini Değiştirme
Tuş gecikmesi ve tekrar hızı config.h dosyasında ayarlanır:
#define DEBOUNCE_VAL 6
#define REPEAT_PERIOD 30
#define REPEAT_DELAY 250- DEBOUNCE_VAL tuş titreşimini filtreler.
- REPEAT_DELAY tuş basılı tutulduğunda tekrarın başlamasını belirler.
- REPEAT_PERIOD tekrar hızını belirler.
Tuşlar fazla hassas davranıyorsa debounce değeri artırılabilir. Değer artırılırsa tuş tepkisi biraz yavaşlar.
12. Ekran Yazılarını Değiştirme
LCD menü yazıları string_table.h dosyasında bulunur. Örneğin iç direnç ölçüm menüsü, kapasite testi başlığı veya ayar menüsü yazıları buradan değiştirilebilir.
Örneğin:
const char str_rin_subm1[] PROGMEM = " R(in) measurement ";Bu satır değiştirilerek ekrandaki başlık kişiselleştirilebilir. Ancak 20×4 LCD kullanıldığı için satır uzunluğu 20 karakteri aşmamalıdır. Aksi halde yazılar taşabilir veya görünüm bozulabilir.
13. Pinleri Değiştirme
Pin tanımları config.h dosyasındadır. Örneğin fan, LED, buzzer ve buton pinleri buradan değiştirilebilir.
Ancak bu projede pinler doğrudan AVR port register’larıyla kullanıldığı için pin değiştirmek Arduino’daki digitalWrite mantığı kadar kolay değildir. Sadece pin numarası değil, ilgili PORT, DDR ve PIN tanımları da doğru ayarlanmalıdır.
Bu nedenle PCB aynı kalacaksa pin ayarlarına dokunulmaması önerilir.
14. Zamanlayıcı Ayarlarını Değiştirmeyin
global_defines.h dosyasında Timer1 zamanlama değerleri bulunur:
#define HW_CPU_HZ 16000000UL
#define TIME_PRESCALER_1000ms ((uint16_t)(HW_CPU_HZ/256UL - 1UL))
#define TIME_PRESCALER_250ms ((uint16_t)(HW_CPU_HZ/256UL/4UL - 1UL))Bu değerler Arduino Nano’nun 16 MHz çalışma frekansına göre ayarlanmıştır. Measure capacity modunda sürenin doğru ilerlemesi bu ayarlara bağlıdır. Bu nedenle farklı clock kullanılmadığı sürece bu satırlar değiştirilmemelidir.
15. PWM Frekansı ve Timer Ayarları
Akım kontrol PWM sinyali Timer2 üzerinden üretilir. Bu bölüm doğrudan akım kontrol katını etkilediği için normal kullanıcı tarafından değiştirilmemelidir. PWM frekansı değiştirilirse RC filtre davranışı, LM358 kontrol kararlılığı ve MOSFET gate sürüşü değişebilir.
Bu nedenle sadece RC filtre, op-amp ve MOSFET davranışını bilen kullanıcıların Timer2 / PWM ayarlarıyla oynaması önerilir.
Özet
| Değişiklik | Dosya | Önerilen Kullanım |
|---|---|---|
| Sonlandırma voltajı | global_defines.h | Li-ion güvenliği veya akü testleri için değiştirilebilir |
| Varsayılan test akımı | batmeter_nano.ino | 1A gibi pratik başlangıç değeri seçilebilir |
| İç direnç I1 / I2 seçenekleri | batmeter_nano.ino | 18650 veya akü testlerine göre düzenlenebilir |
| LM35 kullanımı | config.h | Sensör takılıysa aktif edilmelidir |
| Fan sıcaklık eşikleri | config.h | LM35 kullanılıyorsa değiştirilebilir |
| ADC ortalama sayısı | config.h | Kararlılık / hız tercihi için ayarlanabilir |
| LCD yazıları | string_table.h | Menüleri Türkçeleştirmek veya sadeleştirmek için değiştirilebilir |
| Timer ve PWM ayarları | batmeter_nano.ino / global_defines.h | Genellikle değiştirilmemelidir |
Güvenli Test Sırası
Bu devre hem yazılım hem de güç elektroniği içerdiği için ilk çalıştırmada acele edilmemelidir.
Özellikle MOSFET, op-amp ve şönt dirençler doğru çalışmadan batarya bağlamak risklidir.
- Önce enerjisiz kısa devre kontrolü yapılmalıdır.
- Arduino Nano takılmadan 5 V ve 9 V regülatör çıkışları ölçülmelidir.
- LCD, tuşlar ve buzzer ayrı ayrı kontrol edilmelidir.
- Batarya yerine ayarlı güç kaynağı ile VFB kalibrasyonu yapılmalıdır.
- Constant current modunda düşük akımla başlanmalıdır.
- 0.1 A, 0.2 A, 0.5 A ve 1 A kademeleri test edilmelidir.
- Şönt gerilimi multimetre ile doğrulanmalıdır.
- Fan çalışması ve MOSFET sıcaklığı izlenmelidir.
- Sonlandırma voltajı küçük bir testle kontrol edilmelidir.
- Gerçek 18650 kapasite testine en son geçilmelidir.
Soğutma ve Güç Dayanımı
Bu cihazın yük kısmı lineer çalıştığı için ısı üretir. Soğutma zayıfsa MOSFET kısa sürede aşırı ısınabilir.
Bu nedenle MOSFET büyük bir soğutucuya bağlanmalı, fan sürekli çalışmalı ve termal temas kaliteli olmalıdır.
Şönt dirençlerin güç değeri de ihmal edilmemelidir. 0.33 ohm dirençler paralel kullanıldığı için toplam güç paylaşılır.
Ancak dirençlerin toleransı ve lehim bağlantıları eşit değilse akım paylaşımı da tam eşit olmayabilir.
Daha yüksek güçlü elektronik yük projeleriyle ilgileniyorsanız sitedeki LM324 elektronik yük 8 MOSFET 600W projesi de farklı bir yaklaşım olarak incelenebilir.
18650 Testi İçin Önerilen Başlangıç Ayarları
| Ayar | Önerilen Değer | Açıklama |
|---|---|---|
| Measure capacity current | 1.00 A | Tek 18650 için pratik test akımı |
| Terminated voltage | 3.00 V | Genel ve güvenli Li-ion kesme seviyesi |
| Internal R test | 0.00 A – 1.00 A | 250 mA seçeneğine göre daha anlaşılır sonuç verir |
| Fan | Sürekli açık | MOSFET sıcaklığını kontrol altında tutar |
| Bağlantı kablosu | Kısa ve kalın | İç direnç ölçüm hatasını azaltır |
Arduino Akü Pil Test Cihazı Test Videosu
Arduino Pil Analizör PCB Tasarımı

PCB Sprint Layout 6 programı ile hazırlandı boyutları 100x62mm. Pil bağlantısı, MOSFET yolları çok kalın ve kısa tutuldu.
Özellikle iç direnç ölçümünde sigortanın etkisi büyük ama güvenlik için gerekli. Bu yüzden direkt bağlantı yapılmadı.
Fav ve LM35 için direkt Arduino pin çkışı verildi bu bölümleri kullanacaksanız pasif elemanlarıda bağlamanız gerekli.
Buzer, LED gösterge için direnç, transistör malzemeleri PCB üzerinde mevcut. Butanlar direkt pilere bağlanıyor.
Devre çalışırken kalibrasyon yapmak için trimpotlar PCB arka bölüme lehimlenmeli.
İlk denemede devreyi çalıştırdım. PCB hatası yok ama başlangıç için Arduino ve op-amp sokete yerleştirildi.
MOSFET gate bacağına şaseye karşı 100K direnç ekledim ama uygulamada bu direnci kullanmadım.
Açılış anında op-amp çıkışı oturana kadar MOSFET gate kısa süre boşta kalabilir. Ek güvenlik için gerekebilir.
Arduinoyu farklı işlerde kullanmayacaksanız kendinizden eminseniz 🙂 soket kullanmadan direkt lehimleyin.
Ne kadar az soket o kadar iyi iletim….




Sonuç
Arduino Nano ile hazırlanan bu pil ve akü analizör cihazı, atölyede pil ayırma, kapasite ölçme, yaklaşık iç direnç karşılaştırması yapma ve küçük güç kaynaklarını sabit akımla test etme işleri için kullanışlıdır.
Profesyonel batarya analizörlerinin yerini tamamen tutmaz; ancak doğru kalibrasyon, iyi bağlantı ve güvenli test akımıyla hobi ve servis ortamı için oldukça faydalı sonuçlar verir.
Özellikle 18650 pillerle çalışanlar için cihazın en önemli faydası, pilleri sadece voltajına bakarak değil; kapasite, yük altında voltaj düşümü ve iç direnç davranışıyla birlikte değerlendirebilmesidir.
Aynı test düzeniyle ölçülen piller arasında iyi, orta ve zayıf olanları ayırmak bu cihazla oldukça kolaylaşır.
Yazılım tarafındaki dönüştürme, hata ayıklama ve güncelleme işlemlerinde ChatGPT’den yoğun şekilde destek alındı.
Orijinal kodun Arduino Nano’ya taşınması sırasında main yapısının setup ve loop düzenine uyarlanması, timer ayarlarının gözden geçirilmesi, ADC ve PWM yapısının korunması, EEPROM ayarlarının çalışır durumda bırakılması ve LCD menü yapısının bozulmadan kullanılması gibi birçok yazılım düzenlemesi yapıldı.
Şu anki sürüm atölye testlerinde düzgün çalışıyor. Yine de proje geliştirilmeye açık bir yapıdadır.
Farklı op-amp denemeleri, daha hassas iç direnç ölçümü için Kelvin bağlantı düzeni, farklı pil türleri için özel test profilleri veya daha gelişmiş ekran seçenekleri ileride eklenebilir.
Projeyi ayrıca GitHub sayfamda paylaştım. https://github.com/gevv/arduino-battery-analyzer/ Kodları inceleyebilir, kendi devrenizde deneyebilir, hata bildirimi yapabilir veya geliştirmelere katkıda bulunabilirsiniz.
Özellikle farklı pil türleriyle yapılan test sonuçları ve iyileştirme önerileri projenin daha kullanışlı hale gelmesine yardımcı olacaktır.
DİKKAT: Programlama yaparken yüksek akım yük / pil bağlı olmasın. Test sırasında USB kablosunu çıkartın. Li-ion pillerle çalışırken kısa devre, aşırı akım ve aşırı ısınmaya karşı dikkatli olunmalıdır. Li-ion piller yanlış kullanım, hatalı işllemler sonu çok tehlikeli olabilir.
