İçindekiler:

Sıcaklık ve Pil Seçimi ile Pil Kontrolü: 23 Adım (Resimlerle)
Sıcaklık ve Pil Seçimi ile Pil Kontrolü: 23 Adım (Resimlerle)

Video: Sıcaklık ve Pil Seçimi ile Pil Kontrolü: 23 Adım (Resimlerle)

Video: Sıcaklık ve Pil Seçimi ile Pil Kontrolü: 23 Adım (Resimlerle)
Video: Ünal turan Azad yılmaz Karşıma çıkın dedi 2024, Kasım
Anonim
Image
Image
Temel Projeden Değişim
Temel Projeden Değişim

Pil kapasitesi test cihazı.

Bu cihaz ile 18650 pil, asit ve diğer (test ettiğim en büyük pil 6v Asit pil 4, 2A) kapasitesini kontrol edebilirsiniz. Testin sonucu miliamper/saat cinsindendir.

Bu cihazı, sahte çin pilinin kapasitesini kontrol etmesi gerektiği için yarattım.

Güvenlik için, bir termistör kullanarak, güç direncinin sıcaklığını ve çok ısınmayı önlemek için pili ekledim, bu numara ile 6v Asit Bataryayı kartı ateşlemeden kontrol edebilirim (boşaltma döngüsünde bir süre sıcak güç direncine gidin) ve cihaz sıcaklığı düşürmek için 20 saniye bekleyin).

Küçük mikro denetleyici atmega328 uyumlu nano (eBay) seçiyorum.

Tüm kod burada.

Adım 1: Temel Projeden Değiştir

Fikri OpenGreenEnergy projesinden çaldım ve özellikler eklemek için tahtayı yeniden yaptım, bu yüzden şimdi daha genel olun.

v0.1

  • Arduino'nun VCC'si artık otomatik olarak hesaplanır;
  • Ayarı daha rahat bir şekilde değiştirmek için değişken eklendi.
  • Eklenen boşaltma yüzdesi
  • Pil sıcaklığı ve güç direnci eklendi

v0.2

  • Pil seçimi imkanı eklendi
  • Prototip pano (şemaya bakın) oluşturuldu, ekran, düğme ve hoparlör panonun dışında çünkü gelecekte bir paket oluşturmak istiyorum.
  • Güç direncine sıcaklık sınırı yönetimi eklendi, böylece sıcaklık 70°'nin üzerine çıktığında (bu sıcaklık güç direnci değer kaybının üzerinde) işlemi engelleyebiliyorum.

v0.3

Yakında bu hizmetten bir pano geliyor https://www.pcbgogo.com?code=y

Adım 2: Kurulun V0.2'si

Yönetim Kurulu V0.2
Yönetim Kurulu V0.2

v0.2'de çeşitli pil türlerini desteklemek için pil adı, minimum voltaj ve maksimum voltaj ile doldurulması gereken bir yapı oluşturdum (doldurmak için yardıma ihtiyacım var:P).

// Pilin yapısı typestruct BatteryType { karakter adı[10]; şamandıra maxVolt; şamandıra minVolt; }; #define BATTERY_TYPE_NUMBER 4 BatteryType pilTypes[BATTERY_TYPE_NUMBER] = { { "18650", 4.3, 2.9 }, { "17550", 4.3, 2.9 }, { "14500", 4.3, 2.75 }, { "6v Asit", 6.50, 5.91 } };

Şimdi voltaj bölücünün analog girişin çift sıcaklığını okuması için bir dizi 10k direnç kullanıyorum. Voltaj desteğini değiştirmek istiyorsanız, bu değeri değiştirmelisiniz (daha sonra daha iyi açıklayın):

// Akü voltaj direnci

#define BAT_RES_VALUE_GND 10.0 #define BAT_RES_VALUE_VCC 10.0 // Güç direnci voltaj direnci #define RES_RES_VALUE_GND 10.0 #define RES_RES_VALUE_VCC 10.0

Termistör kullanmıyorsanız, bunu false olarak ayarlayın:

#define USING_BATTERY_TERMISTOR doğru

#define USING_RESISTO_TERMISTOR doğru

Farklı bir i2c ekranı kullanıyorsanız, bu yöntemi yeniden yazmanız gerekir:

geçersiz beraberlik (void)

Projede fritzing şemaları, fotoğraflar ve daha fazlasını bulabilirsiniz.

Adım 3: Breadboard: I2c Karakter Görüntüleme Denetleyicisi Genişletildi

Breadboard: I2c Karakter Görüntüleme Denetleyicisi Genişletildi
Breadboard: I2c Karakter Görüntüleme Denetleyicisi Genişletildi

Genel bir karakter ekranı kullandım ve i2c denetleyicisini oluşturdum ve onu özel kitaplığımla kullandım.

Ama isterseniz standart bir kütüphaneye sahip normal bir i2c controller (1€'dan az) alabilirsiniz, kod aynı kalır. Tüm ekran kodu çizim işlevindedir, böylece başka şeyleri değiştirmeden bunu değiştirebilirsiniz.

Burada daha iyi açıklanmıştır.

Adım 4: Breadboard: I2c Entegreli Karakter Görüntüleme

Breadboard: I2c Entegreli Karakter Ekranı
Breadboard: I2c Entegreli Karakter Ekranı

Aynı şema i2c kontrollü olmadan genişletildi.

Adım 5: Gerçekleştirme

Voltajı ölçmek için Voltaj bölücü ilkesini kullanıyoruz (Wikipedia'da daha fazla bilgi).

Basit bir deyişle, bu kod akü voltajını ölçmek için çarpan faktördür.

batResValueGnd / (batResValueVolt + batResValueGnd)

BatResValueVolt ve batResValueGnd değerinin 2 direncini analog okuma kablosundan sonra ve önce yerleştirdim.

batVolt = (örnek1 / (1023.0 - ((BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)) * 1023.0)) * vcc;

örnek1 ortalama analog okumalardır;

vcc referans Arduino voltajı;

1023.0, analog okumanın maksimum referans değeridir (Arduino analog okuma 0'dan 1023'e gider).

Amper elde etmek için güç direncinden önce ve sonra voltaja ihtiyacınız vardır.

Güç direncinden önceki ve sonraki voltajı ölçtüğünüzde, pili tüketen miliamper hesaplayabilirsiniz.

MOSFET, güç direncinden pil boşalmasını başlatmak ve durdurmak için kullanılır.

Güvenlik için pil ve güç direnci sıcaklığını izlemek için 2 termistör yerleştirdim.

6. Adım: Genişletilebilirlik

genişletilebilirlik
genişletilebilirlik
genişletilebilirlik
genişletilebilirlik

Genişletilebilir bir prototip panosu oluşturmaya çalışıyorum, ancak şimdilik yalnızca minimum sayıda pin kullanıyorum (ileride led'ler ve diğer düğmeler ekleyeceğim).

10v'dan büyük destek voltajı istiyorsanız, pilin direnç değerini ve direncini formüle göre değiştirmelisiniz.

(BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)

şemada Direnç güç voltajı

Direnç güç gerilimi GND 1/2 / (Direnç güç gerilimi 2/2 + Direnç güç gerilimi GND 1/2)

Pembe aşağı lehimleme

7. Adım: Parça Listesi

Tutar Parça Tipi Özellikler

  • 2 5mm Vidalı Terminal PCB Montaj Vidalı Terminal Bloğu 8A 250V LW SZUS (eBay)
  • 1 Arduino Pro Mini klonu (uyumlu Nano) (eBay)
  • 1 Temel FET P-Kanalı IRF744N veya IRLZ44N (eBay)
  • 11 10kΩ Direnç direnci 10kΩ (eBay)
  • 2 Sıcaklık Sensörü (Termistör) 10kΩ; (eBay)
  • * Genel erkek başlık formu ♂ (erkek); (eBay)
  • * Genel dişi başlık formu ♀ (dişi); (eBay)
  • 1 PerfBoard panosu Prototip panosu 24x18 (eBay)
  • 10R, 10W

    güç direnci (eBay) Eski bir crt TV'de benimkini buldum.

Adım 8: Anakart: Sıfırlama, Pili Seçmek için Gnd E Düğmesi

Kart: Sıfırlama, Pil Seçmek için Gnd E Düğmesi
Kart: Sıfırlama, Pil Seçmek için Gnd E Düğmesi

Pimlerin sol tarafında buton ve buzzer bulabilirsiniz.

3 düğme kullanıyorum:

  1. biri pil tipini değiştirmek için;
  2. biri seçilen pilin boşalmasını başlatmak için;
  3. sonra hepsini yeniden başlatmak ve yeni işlemi etkinleştirmek için sıfırlama pimini kullanıyorum.

Tüm pinler zaten aşağı çekildi, bu yüzden VCC ile etkinleştirmelisiniz

GND ile reset aktif edilir

Pembe aşağı lehimleme

Adım 9: Kart: I2c ve Güç Kaynağı Pinleri

Kart: I2c ve Güç Kaynağı Pinleri
Kart: I2c ve Güç Kaynağı Pinleri

Tabanda VCC, GND ve SDA, SCL'yi (ve gelecekte diğerlerini) görebilirsiniz.

Pembe aşağı lehimleme

Adım 10: Kart: Termistör ve Voltaj Ölçümü

Kart: Termistör ve Ölçme Gerilimi
Kart: Termistör ve Ölçme Gerilimi

Sağda, termistör değerini okumak için pinler vardır, biri güç rezistör termistörü için, diğeri ise (bağlanacak erkek/dişi pinler) pil termistörü için.

Ardından, güç direncinden önce ve sonra diferansiyel voltajı ölçen analog pinler vardır.

Pembe aşağı lehimleme

Adım 11: Kart: Ölçme Gerilimine Direnç

Kart: Ölçme Gerilimine Direnç
Kart: Ölçme Gerilimine Direnç
Kart: Ölçme Gerilimine Direnç
Kart: Ölçme Gerilimine Direnç

Burada arduino pininden (10v) iki katı voltajı desteklemeye izin veren direnci görebilirsiniz, daha fazla voltajı desteklemek için bunu değiştirmelisiniz.

Pembe aşağı lehimleme

Adım 12: Lehimleme Adımı: Tüm Pimler

Lehimleme Adımı: Tüm Pimler
Lehimleme Adımı: Tüm Pimler
Lehimleme Adımı: Tüm Pimler
Lehimleme Adımı: Tüm Pimler

İlk önce tüm pinleri ekleyip lehimliyorum.

Adım 13: Lehimleme Adımları: Çekme Direnci ve Termistör

Lehimleme Adımları: Çekme Direnci ve Termistör
Lehimleme Adımları: Çekme Direnci ve Termistör
Lehimleme Adımları: Çekme Direnci ve Termistör
Lehimleme Adımları: Çekme Direnci ve Termistör

Sonra tüm açılan direnci (düğmeler için) ve i2c konektörünü (ekran) ekliyorum.

Sonra güç direnci termistörü Asit pili çok ısındığında çok önemlidir.

Adım 14: Lehimleme Adımları: MOSFET, Gerilimi Kontrol Etme Direnci

Lehimleme Adımları: MOSFET, Kontrol Voltajına Direnç
Lehimleme Adımları: MOSFET, Kontrol Voltajına Direnç
Lehimleme Adımları: MOSFET, Kontrol Voltajına Direnç
Lehimleme Adımları: MOSFET, Kontrol Voltajına Direnç

Şimdi deşarjı etkinleştirmek için mosfet ve voltajı kontrol etmek için direnç eklemeliyiz.

Güç direncinden önceki voltaj için 2 direnç Güç direncinden sonraki voltaj için 2 direnç, bu voltaja sahip olduğunuzda miliamper tüketimini hesaplayabilirsiniz.

Adım 15: Kod

Mikrodenetleyici nano ile uyumludur, bu nedenle IDE'nizi bir Arduino Nano yükleyecek şekilde ayarlamanız gerekir.

Çalışmak için github depomdan kod indirmelisiniz.

Daha sonra 3 kitaplık eklemelisiniz:

  1. Tel: i2c protokolü için standart arduino kitaplığı;
  2. Termistör Kütüphanesi buradan arduino IDE'de bulabileceğiniz kütüphane değil, benim versiyonum;
  3. LiquidCrystal_i2c: i2c adaptörünün genişletilmiş/özel sürümünü (benim versiyonum) kullanıyorsanız kütüphaneyi buradan indirmelisiniz, standart bileşeni kullanıyorsanız kütüphaneyi arduino IDE'den alabilirsiniz, ancak her şey burada daha iyi açıklanmıştır.

LCD'yi standart kütüphane ile test etmiyorum, Bana öyle geliyor ki bunlar birbirinin yerine geçebilir, ancak bir sorun varsa benimle iletişime geçmekten çekinmeyin.

Adım 16: Montajdan Sonra Sonuç

Image
Image
Montajdan Sonra Sonuç
Montajdan Sonra Sonuç
Montajdan Sonra Sonuç
Montajdan Sonra Sonuç

Taban tahtası fotoğrafta, sonra test edebiliriz.

Adım 17: Önce Pil Türünü Seçin

İlk Pil Tipini Seçin
İlk Pil Tipini Seçin

Açıklandığı gibi, pil konfigürasyonu ile bir değer haritamız var.

// Battery typestruct yapısı BatteryType { karakter adı[10]; şamandıra maxVolt; şamandıra minVolt; }; #define BATTERY_TYPE_NUMBER 4 BatteryType pilTypes[BATTERY_TYPE_NUMBER] = { { "18650", 4.3, 2.9 }, { "17550", 4.3, 2.9 }, { "14500", 4.3, 2.75 }, { "6v Asit", 6.50, 5.91 } };

Adım 18: Boşaltmaya Başlayın

Boşaltmaya Başlayın
Boşaltmaya Başlayın
Boşaltmaya Başlayın
Boşaltmaya Başlayın

İkinci butona tıklamak boşaltma işlemini başlatır.

Ekranda mevcut miliamper, miliamper/saat, boşalma yüzdesi, akü voltajı ve güç direnci ve akünün sıcaklığını görebilirsiniz.

Adım 19: İstisnalar: Pil Çıkartıldı

Image
Image
İstisnalar: Sıcaklık Uyarısı
İstisnalar: Sıcaklık Uyarısı

Pili çıkarırsanız deşarj işlemi duraklar, tekrar taktığınızda son değerde yeniden başlar.

Adım 20: İstisnalar: Sıcaklık Uyarısı

İstisnalar: Sıcaklık Uyarısı
İstisnalar: Sıcaklık Uyarısı
İstisnalar: Sıcaklık Uyarısı
İstisnalar: Sıcaklık Uyarısı
İstisnalar: Sıcaklık Uyarısı
İstisnalar: Sıcaklık Uyarısı

Sıcaklık (akü veya güç direnci) ısınırsa, boşaltma işlemi duraklar.

#define BATTERY_MAX_TEMP 50

#define RESISTANCE_MAX_TEMP 69 // 70° veri sayfasında (Düşürme dirençleri) #define TEMP_TO_REMOVE_ON_MAX_TEMP 20

Maksimum sıcaklık için varsayılan değer pil için 50° ve güç direnci için 69'dur.

Yorumda görebileceğiniz gibi güç direnci 70°'nin üzerine çıkarken değer kaybından etkilenir.

Uyarı verilirse, düşük sıcaklık koymak için TEMP_TO_REMOVE_ON_MAX_TEMP saniyelik duraklama başlatın.

Adım 21: Amperajı Test Edin

Test Amperajı
Test Amperajı

Amper testinin sonucu iyidir.

Adım 22: Paket

Ayrılmış bileşenle paket sonucunun gerçekleştirilmesi kolaydır.

Bir kutuda LCD için bir dikdörtgen, basma düğmeleri için delikler ve güç kaynağından voltaj sağlamak için harici bir dişi namlu yapılmalıdır.

Basma düğmesinin aşağı çekme direncine ihtiyacı yok çünkü zaten gemide ekliyorum.

Vakit buldukça hazırlayıp yayınlıyorum.

Önerilen: