İçindekiler:

Bir Başka Pil Kapasitesi Test Cihazı: 6 Adım
Bir Başka Pil Kapasitesi Test Cihazı: 6 Adım

Video: Bir Başka Pil Kapasitesi Test Cihazı: 6 Adım

Video: Bir Başka Pil Kapasitesi Test Cihazı: 6 Adım
Video: 18650 Lityum, lipo ve akü Kapasite ölçüm cihazı - zb2l3 - Batarya kapasite TEST cihazı 2024, Temmuz
Anonim
Bir Başka Pil Kapasitesi Test Cihazı
Bir Başka Pil Kapasitesi Test Cihazı
Bir Başka Pil Kapasitesi Test Cihazı
Bir Başka Pil Kapasitesi Test Cihazı

Neden bir kapasite test cihazı daha

Pek çok farklı test cihazı oluşturma talimatı okudum ama hiçbiri ihtiyaçlarıma uymuyor. NiCd/NiMH veya Lion hücrelerini tek tek söylemekten daha fazlasını da test edebilmek istedim. Bir elektrikli aletin aküsünü, parçaya ayırmadan test edebilmek istedim. Bu yüzden konuyu daha yakından incelemeye ve kendimden bir tane tasarlamaya karar verdim. Bir şey diğerine yol açar ve sonunda kendim bir talimat yazmaya karar verdim. Ayrıca, test cihazının gerçekte nasıl oluşturulacağına dair tüm ayrıntılara girmemeye karar verdim, çünkü herkes hangi boyutta rezistörün kullanılacağı veya bir PCB'nin gerekli olup olmadığı veya Veroboard'un yeterli olup olmadığı gibi belirli seçeneklere karar verebilir ve ayrıca nasıl yapılacağı konusunda bir ton talimat var. kartal yükleyin veya bir PCB nasıl yapılır. Başka bir deyişle, şemalara ve koda ve test cihazının nasıl kalibre edileceğine odaklanacağım.

1. Adım: Geçmiş - Sürüm 1

Geçmiş - Sürüm 1
Geçmiş - Sürüm 1

Yukarıda, aşağıda belirtilen 10V üzerinde giriş desteği eklenmiş ilk sürüm (R12&R17&Q11&Q12) verilmiştir.

İlk versiyon aşağı yukarı deba168 tarafından verilen bir talimattan alınmıştır (maalesef bir bağlantı sağlamak için onun talimatını bulamıyorum). Sadece bazı küçük değişiklikler yapıldı. Bu versiyonda bir mosfet tarafından kontrol edilen 10 ohm'luk bir yük direncim vardı. Bu da bazı sorunları beraberinde getirdi. Bir NiCd veya NiMH hücresini test ederken, gereken süre günler değilse de saatlerle kolayca ölçülmüştür. 1500mAh pil 12 saatten fazla sürdü (akım sadece 120mA idi). Öte yandan, ilk versiyon sadece 10V altındaki pilleri test edebiliyordu. Ve tam olarak şarj edilmiş bir 9.6V pil, aslında 10V sınırı nedeniyle test edilemeyen 11.2V'a kadar çıkabilir. Bir şeyler yapılması gerekiyordu. İlk olarak, voltaj bölücülerin 10V'den fazlasına izin verebilmesi için birkaç mosfet ve direnç ekledim. Ancak bu durum başka bir sorunu da beraberinde getirdi. Tam yüklü bir 14.4V pil, 10 ohm'luk dirençle 1.68A akım ve tabii ki yük direncinden neredeyse 30W'lık bir güç kaybı anlamına gelen 16.8V'a kadar tp'ye sahip olabilir. Bu nedenle, düşük voltaj ile çok uzun test süresi ve yüksek voltaj ile çok yüksek akım. Açıkça yeterli bir çözüm değildi ve daha fazla gelişmeye ihtiyaç vardı.

2. Adım: Sürüm 2

Akü voltajından bağımsız olarak akımın belirli sınırlarda kalacağı bir çözüm istedim. Bir çözüm, PWM ve sadece bir direnç kullanmak olurdu, ancak darbeli akım olmadan bir çözüme sahip olmayı veya mosfet ısısını dağıtma ihtiyacını tercih ettim. Böylece 10 adet 3.3ohm direnç ve her direnç için bir mosfet kullanarak her biri 2V genişliğinde 10 voltaj yuvası olan bir çözüm oluşturdum.

Adım 3: Bu Nasıl Sonuçlandı

İşte Böyle Çıktı
İşte Böyle Çıktı

Devre ile ilgili yorumlar Mosfetin direnci çok düşük olduğu için mosfet üzerindeki voltaj kaybının ihmal edilebilir olduğunu söyleyebiliriz fakat mosfet seçimini okuyucuya bıraktım ve böylece direnç başladığı yerde 1 ohm'un üzerine bile çıkabiliyor. Önemli olmak. Birinci versiyonda doğru mosfet'i seçmek, daha düşük nokta ölçümü ihtiyacını ortadan kaldıracaktı, ancak versiyon 2'de voltajı sadece bir direnç üzerinden ölçmeye karar verdim, bu da aslında iki ölçüm noktasına sahip olmayı önemli kılıyor. Ve seçimin arkasındaki sebep, Veroboard'u kablolamanın basitliğiydi. Bu, bir direnç boyunca ölçülen voltaj, tüm dirençler üzerinde ölçüm yapmaktan önemli ölçüde daha küçük olduğundan, bazı doğruluk hataları ekler. Bileşen seçiminde elimdekileri ya da kolayca elde edebildiklerimi kullanmaya karar verdim. Bu, aşağıdaki ürün reçetesine yol açtı:

  • Arduino Pro Mini 5V !ÖNEMLİ! 5V versiyonunu kullandım ve hepsi buna dayanıyor
  • 128x64 I2C OLED ekran
  • 10 x 5W 3,3 Ohm dirençler
  • 3 x 2n7000 mosfet
  • 10 x IRFZ34N mosfet
  • 6 x 10 kOhm direnç
  • 2 x 5 kOhm direnç
  • 16V 680uF kapasitör
  • 1 eski CPU fanı

Aşağıdakileri şemalara eklemedim

  • I2C hatlarında, ekranı daha kararlı hale getirdiğini fark ettiğim çekme dirençleri
  • Güç hatları
  • ekranı da stabilize eden 5V hattındaki kapasitör

Test ederken, özellikle hepsi kullanımdaysa, yük dirençlerinin oldukça ısınacağını fark ettim. Sıcaklık 100 santigrat derecenin üzerine çıktı (ki bu 212 derece Fahrenheit'in üzerindedir) ve tüm sistem bir kutuya kapatılacaksa bir çeşit soğutma sağlanmalıdır. Kullandığım dirençler 3.3 ohm / 5W ve maksimum akım, direnç başına yaklaşık 2V ile 2V / 3.3 = 0.61A vererek 1.21W ile sonuçlanmalıdır. Kutuya basit bir fan ekledim. Çoğunlukla etrafta eski bir CPU fanım olduğu için.

şematik işlevsellik

Oldukça yalındır ve kendini açıklayıcıdır. Test edilecek akü, direnç ve toprak serilerine bağlanır. Voltaj ölçüm noktaları akü bağlantısı ve ilk dirençtir. Voltaj bölücüler daha sonra voltajı Arduino'ya daha uygun bir seviyeye düşürmek için kullanılır. Bölücülerin 10V veya 20V aralığını seçmek için bir dijital çıkış kullanılır. Yükteki her direnç, doğrudan Arduino tarafından sürülen mosfetler kullanılarak ayrı ayrı topraklanabilir. Ve son olarak ekran Arduino I2C pinlerine bağlanır. Şematik J hakkında söylenecek fazla bir şey yok

Adım 4: Kod

kod
kod

Yukarıda kodun kaba işlevselliği görülebilir. O zaman koda daha yakından bakalım (arduino ino dosyaları ektedir). Bir dizi fonksiyon ve ardından ana döngü vardır.

Ana döngü

Ölçüm hazır olduğunda sonuçlar gösterilir ve uygulama burada sona erer. Henüz ölçüm yapılmamışsa, önce hangi pil tipinin seçildiği ve ardından girişteki voltaj kontrol edilir. Voltaj 0.1V'u aşarsa, en azından bir çeşit pil bağlı olmalıdır. Bu durumda, nasıl test edileceğine karar vermek için pilde kaç hücre olduğunu bulmaya çalışmak için bir alt program çağrılır. Hücre sayısı, daha iyi kullanılabilecek az veya çok bilgidir, ancak bu sürümde, yalnızca seri arabirim aracılığıyla bildirilir. Her şey yolundaysa deşarj işlemi başlatılır ve ana döngünün her turunda pil kapasitesi hesaplanır. Ana döngünün sonunda, ekran bilinen değerlerle doldurulur.

Sonuçları gösterme prosedürü

showResults işlevi, ekranda gösterilecek satırları ve ayrıca seri arabirime gönderilecek diziyi ayarlar.

Gerilimleri ölçmek için prosedür

Fonksiyonun başında Arduino'nun Vcc'si ölçülür. Analog girişler kullanılarak ölçülen gerilimlerin hesaplanabilmesi için gereklidir. Daha sonra hangi aralığın kullanılacağına karar verebilmek için akü voltajı 20V aralığı kullanılarak ölçülür. Daha sonra hem akü voltajı hem de direnç voltajı hesaplanır. Pil voltajı ölçümleri, söz konusu analog girişin ham okumasını veya hesaplanan voltajını vermek için okuma ve voltaj yöntemlerine sahip DividerInput sınıfından yararlanır.

Kullanılan değerleri seçme prosedürü

SelectUsedValues işlevinde hücre sayısı tahmin edilir ve deşarj prosedürü ile kullanılmak üzere pil için üst ve alt limitler ayarlanır. Ayrıca ölçüm başlatıldı olarak işaretlenir, Bu prosedürün sınırları global değişkenlerin başında belirlenir. Sabit olmalarına rağmen, global olarak kullanılmadıkları için prosedür içinde de tanımlanabilirler. Ama hey, her zaman geliştirilecek bir şeyler vardır:)

Pil kapasitesini hesaplama prosedürü

Deşarj işlevi, pilin kapasitesini fiilen saymakla ilgilenir. Test edilen akü için voltajların alt ve üst limitlerini parametre olarak alır. Bu sürümde yüksek değer kullanılmaz, ancak testin ne zaman durdurulacağına karar vermek için düşük değer kullanılır. Fonksiyonun başında bu amaçla oluşturulmuş bir fonksiyon kullanılarak kullanılacak direnç sayısı bulunur. Fonksiyon direnç sayısını döndürür ve aynı zamanda deşarjı başlatır ve sayacı sıfırlar. Daha sonra gerilimler ölçülür ve bilinen direnç değeri ile birlikte akımı hesaplamak için kullanılır. Artık voltajı ve akımı ve son ölçümden bu yana geçen süreyi bildiğimize göre, kapasiteyi hesaplayabiliriz. Deşarj işlemi sonunda akü voltajı alt limit ile karşılaştırılır ve limitin altına inerse deşarj fazı durur, mosfetler kapatılır ve ölçüm hazır olarak işaretlenir.

Kullanılacak direnç sayısını bulma prosedürü

SelectNumOfResistors işlevinde, voltajın önceden ayarlanmış değerlerle basit bir karşılaştırması yapılır ve sonuç olarak kullanılacak direnç sayısına karar verilir. Bazı dirençleri atlamak için uygun mosfet açılır. Voltaj yuvaları, deşarj sırasında herhangi bir zamanda maksimum akımın 600mA'nın (2V/3,3Ohm=606mA) biraz üzerinde kalacağı şekilde seçilir. İşlev, kullanılan direnç sayısını döndürür. Fan, ilk mosfet ile aynı hattan sürüldüğü için, deşarj olurken mutlaka açılması gerekir.

Adım 5: Metreyi Kalibre Etme

Metreyi Kalibre Etme
Metreyi Kalibre Etme

Sayacın kalibre edilmesini sağlamak için başka bir uygulama oluşturdum (ekli). Aynı donanımı kullanır. Başlangıçta düzeltme bölücü değerlerinin tümü 1000'e ayarlanmıştır.

const int divDüzeltmeB10V = 1000; // 10V aralığında bölücü düzeltme çarpanı const int divCorrectionR10V = 1000; // 10V aralığında bölücü düzeltme çarpanı const int divCorrectionB20V = 1000; // 20V aralığında bölücü düzeltme çarpanı const int divCorrectionR20V = 1000; // 20V aralığında bölücü düzeltme çarpanı

readVcc() işlevinde ortaya çıkan Vcc voltajı, işlevin geri dönmeden önceki son satırındaki değerin ayarlanmasına bağlıdır. Genellikle internette hesaplamada kullanılacak 1126400L değerini bulabilirsiniz. Sonucun doğru olmadığını fark ettim.

Kalibrasyon süreci:

  1. Ölçüm uygulamasını Arduino'ya yükleyin.
  2. Arduino'da (ve seri çıkışta ve fan dönüyorsa) yükün açık olup olmadığını görebilirsiniz. ise, pil tipi seçim anahtarını çevirin.
  3. Doğru sonucu elde etmek için readuVCC() içindeki değeri ayarlayın. Fonksiyonun verdiği değeri (milivolt cinsinden) alın ve uzun değeri buna bölün. Dahili referansın ham değerini alacaksınız. Şimdi gerçek besleme voltajını milivolt cinsinden bir multimetre ile ölçün ve daha önce hesaplanan değerle çarpın ve yeni düzeltilmiş uzun değeri elde edin. Benim durumumda, gerçek Vcc 5.14V olduğunda işlev 5288mV döndürdü. Deneme ile ince ayar yaptığım 1126400/5288*5140=1094874 hesaplanıyor. Yeni değeri koda koyun ve tekrar Arduino'ya yükleyin.
  4. Analog giriş direnci bölücü düzeltme değerlerinin ayarlanması, sayacın girişini beslemek için kullanılan ayarlanabilir bir güç kaynağı kullanılarak yapılır. En basiti, 1V'luk adımlarla 1V'den 20V'a kadar olan voltajları kullanmak ve sonuçları bir elektronik tabloya kaydetmektir. Hesap tablosunda ortalama alınır. Düzeltilen değerler şu formülle hesaplanır: “ham_değer*aralık*Vcc/Vin” burada ham_değer, hangi düzeltmenin hesaplanacağına bağlı olarak 10VdivB, 10VdivR, 20VdivB veya 20VdivR'deki değerdir.

Elektronik tabloya bakın, benim için nasıl görünüyordu. Ortalamalar, yalnızca aralıkta olacak değerlerden hesaplanır ve bu değerler daha sonra gerçek sayaç uygulamasında ayarlanır.

Bunun gibi

const int divDüzeltmeB10V = 998; // 10V aralığında bölücü düzeltme bölücü const int divCorrectionR10V = 1022; // 10V aralığında bölücü düzeltme bölücü const int divCorrectionB20V = 1044; // 20V aralığında bölücü düzeltme bölücü const int divCorrectionR20V = 1045; // 20V aralığında bölücü düzeltme bölücü

Direnç değerinin ayarlanması, girişe bir miktar voltaj (yani 2V) sağlayarak, yarasa tipi anahtarı değiştirerek (yük almak için) ve giren akımı ve ilk direnç boyunca voltajı ölçerek ve voltajı akıma bölerek yapılabilir.. Benim için 2V, 3.295 ohm'a yuvarladığım 2/0.607=3.2948 ohm veren 607mA verdi. Yani şimdi kalibrasyon yapıldı.

Adım 6: Son NOT

Burada önemli bir not. Aküden dirençlere kadar tüm bağlantıların en iyi durumda olması zorunludur. Kötü bir bağlantım vardı ve direnç ızgarasında neden aküden 0,3V daha az volt aldığımı merak ediyordum. Bu, 0.95V'lik alt sınıra hızlı bir şekilde ulaşıldığından, ölçüm işleminin 1.2V NiCd hücrelerle neredeyse anında sona erdiği anlamına geliyordu.

Önerilen: