Elektronik / Mikrodenetleyici Projeleri/

LCD Göstergeli pil şarj devresi (16f876)

Sponsorlu Bağlantılar

Daha önce otomatik şarj sistemi olarak yayınlanmış olan projemin gelişmiş versiyonu olarak 16F876 kullanarak yeni bir sistem tasarladım. Sistem derken elektronik kısmında fazlaca değişiklik yapmadan programda değişiklik yaptım. Önceki yapmış olduğum sistem 16C711 (bir kez programlanabilir) pic ile çalışmakta idi. Ayrıca şarj işlemi sonunda akımın kesilmesi yani pilin dolmuş olduğunun anlaşılması için Negatif Delta-V sistemini kullanmış idim.

Bilmeyenler için Negatif Delta-V nin ne anlama geldiğini bir kez daha açıklayayım. NiCd ve NiMH piller şarj oldukça voltajları yükselmektedir. Voltaj yükselişi pilin dolmasını müteakip kesilmekte ve bu aşamadan sonra pil başına 10-20 mv luk bir voltaj düşümü olmaktadır. Örnek vermek gerekir ise 1 adet NiCd pil boşaldığı zaman yaklaşık 0,8V civarında bir voltajı vardır.

Bu pili şarj ederseniz pil voltajı tam dolum anında 1,7V’a kadar çıkar. Bunu mv seviyesinde gösterir isek 1700 mv. dolayına çıkar. Dolum anından itibaren bu voltaj 1680 mv dolayına düşer. Bu aşamadan sonra şarja devam ederseniz pil aşırı ısınmaya başlar. İşte bu geri düşme ölçümler sonucunda yakalanarak pilin dolduğuna karar verilir ve şarj işlemi sona erdirilir.

İlk yaptığım sistemde şarjın kesilmesi yalnızca negatif delta_v ye dayanıyor idi. Ancak bazı (markasız) pillerde bu düşme anının yakalanmadığını veya çok zor yakalandığını fark ettim. Bu yüzden sisteme ayrıca voltaj kontrolünüde ilave ettim. Sonuç olarak yeni program hem Negatif Delta-V yi hemde pilin voltajını kontrol ederek hangisini yakalarsa şarj işlemini sona erdirmektedir.

Diğer bir değişiklik de önceki devre nispeten üniversal çalışıyor idi. Yani en az 2 adet pil bağlamak kaydı ile toplam 8 adet pile kadar paketi hiç bir ayar gerektirmeden şarj edebiliyor idi. Ancak bununda bazı sorunlara yol açtığını fark edince yeni programda şarj edilecek pil adedini girmeye karar verdim. Dolayısıyla yeni programda yine en az 2 adet olmak kaydı ile toplam 8 adet pili şarj edebilirsiniz.

pic16f876-pil-sarj-devresi-mcu-battery-charger-circuit charger-pcb-pil-sarji-baski-devresi

Yukarıdaki devre 2 adet ile yaklaşık 8 adet pile kadar pil paketlerini otomatik olarak şarj edebilmektedir. Programın ilk çalıştırılmasını müteakip SET butonuna basılır. Ayar butonuna basılarak kaç adet pil şarj edileceği programa girilir ve tekrar SET tuşuna basılarak Şarj işlemi başlatılır.

Şar akımı 700 ma dolayında olup . Hesap mantığı aşağıdaki şekildedir;

akim-amper-695ma-700ma-pil-sarj-formul

Ancak LM317 nin verebileceği maksimum akım 1 Amper (1000 ma) olup hesaplamada bu değerin göz önünde tutulması veya yerine 3 amperlik olanının kullanılması gerekir.

Sistem hızlı şarj mantığı ile çalışmaktadır. Bu durumda 1 amperlik (1000 ma) pilleri yaklaşık 1,4 saat , 2000 ma lik pilleri ise 2,8 saat içinde şarj edebilmektedir. Sistemin çalışma mantığı aşağıdaki şekildedir.

1. öncelikle devreye bir pil bağlı olup olmadığı kontrol edilir. 2 Voltun üzerindeki değerler pil varlığını gösterir. Pillerin boş olma durumu düşünülerek kontroldan önce 1 sn süre ile bir şarj akımı verilir. Bu konumda Her iki LED off konumundadır.

2. Şayet devreye bir pil bağlı ise pilin stabilize olması için 30 sn. süre ile beklemeye alınır.
Bu konumda Kırmızı LED ON yeşil led ise OFF konumundadır.

3. Bu süreden sonra yaklaşık 4 dakika süre ile pile %20 şarj akımı uygulanır. Bu konumda Kırmızı led ON yeşil led ise Flaş Konumundadır.

4. Bu süreden sonra pile tam şarj akımı uygulanır. Bu konumda her iki led FLAŞ konumundadır.

5. Pillerin dolmasını müteakip pillere TRIKLE şarj adı verilen %4 oranında standby şarjı tatbik edilir. Bu pillerin bağlı kaldığı sürece boşalmamasını sağlar. Bu konumda Kırmızı led OFF yeşil led ON konumundadır.

Pillerin dolmasını müteakip şarj voltajı ve akımı otomatik olarak kesilir. Kesme noktasının tepiti hem negatif Delta V sistemine hemde şarj sonunda pillerin ulaşması gereken voltaja göre yapılmaktadır. Bu sistemde piller tam doluma ulaştıktan sonra şarj işlemine devam edilmesi halinde belirli bir süre içinde pil başına 10 mv düşme başlar. Bu düşme sağlandıktan sonra pillerin şarjı kesilmelidir. Bu noktadan sonra şarja devam edilmesi halinde piller ısınmaya başlayacak ve bozulma başlayacaktır.

Devre LM317 nin akım takipçi yöntemi ile bağlanması şeklinde gerçekleştirilmiş olup bu sayede şarj voltajı pil adedine göre otomatik olarak ayarlanmaktadır. Devre tamamı ile denenmiş olup başarı ile çalışmaktadır.

flash-trikle-sarj-battery-charger-circuit-led

Şarj devresine ait kaynak picbasic pro ve hex kodları: LCD Göstergeli pil şarj devresi (16f876)

Dosya indirme LINK listesi (TXT formatında) link-12130.zip şifre-pass: 320volt.com

PILSARJ876.bas yazılım içeriği;


'********************************************************
'*  Adı     : PILSARJ878.BAS                                      *
'*  Yazan   : [Erol ERDAL)                                        *
'*  Haklar  : Copyright (c) 2004 [Erolec Electronic 2005]         *
'*          : Ticari amaçla Kullanılamaz                          *
'*  Tarih   : 27.12.2004                                          *
'*  Sürüm   : 1.0                                                 *
'*  Notlar  : 16F876 Kullanılarak yapılmıştır. NiCd ve NiMH       *
'*          : piller için uygun olup -delta_V sistemi ile çalışır *
'*********************************************************
DEFINE LCD_DREG		PORTB	'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT		4		'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_RSREG	PORTB	'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT	1	 'LCD RS bacağı Hangi Bite bağlı ?
DEFINE LCD_EREG		PORTB	'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT		3 'LCD Enable Bacağı Hangi bite bağlı ?
define lcd_RWREG    PORTB
define LCD_RWBIT     2
DEFINE LCD_BITS		4 'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES	2		'LCD Kaç sıra yazabiliyor

DEFINE	ADC_BITS	8	    ' Set number of bits in result
DEFINE	ADC_CLOCK	3	    ' Set clock source (3=rc)
DEFINE	ADC_SAMPLEUS 50	    ' Set sampling time in uS

@ DEVICE pic16F876
@ DEVICE pic16F876, WDT_off
@ DEVICE pic16F876, PWRT_ON
@ DEVICE pic16F876, PROTECT_OFF
@ DEVICE pic16F876, XT_OSC

ADCON1=%00001110
TRISA= %00010011
TRISB= %00000000
TRISC= %00011000

VOLT    VAR  WORD
HAM     VAR  WORD
SN      VAR  WORD
HANE    VAR  WORD
I       VAR  word
OKUNAN  var  byte
ESKIVOLT VAR byte
MODE    VAR  BYTE
POZ     VAR  BYTE
SAYAC   VAR  BYTE
SAAT    VAR  BYTE
DAK     VAR  BYTE
SAN     VAR  BYTE
FARK    VAR  BYTE
KALAN   VAR  BYTE
ADET    VAR  BYTE
PILVOLT VAR  BYTE
PIL     VAR  BIT
SYMBOL SARJ=PORTC.1  'SARJ=1 KAPALI , ŞARJ=0 AÇIK
SYMBOL LEDY=PORTA.2
SYMBOL LEDK=PORTA.3
SYMBOL SET=PORTC.4
SYMBOL AYAR=PORTC.3

PORTB=0
PORTA=0
VOLT=0
PAUSE 100
LCDOUT $FE,1

'-----------PROGRAM BAŞLANGICI--------------
BASLA:
SN=956
PORTA=0
ADET=0
LCDOUT $FE,2,"LUTFEN SET"
LCDOUT $FE,$C0," TUSUNA BASINIZ"

IF SET=0 THEN
LCDOUT $FE,1
GOSUB SEC
ENDIF
IF ADET>0 THEN STANDBY
GOTO BASLA
'--------------------STANDBY------------------------
STANDBY:
HIGH SARJ
PILVOLT=15*ADET 'BU ŞARJ SONUNDA ULAŞILACAK VOLTAJDIR
MODE=1
low SARJ:PAUSE sn:GOSUB EKRAN0:high SARJ
pause 10:GOSUB PILKONTROL
PAUSE sn:gosub ekran:PAUSE SN
IF HAM=>26 THEN HAZIRLA
GOTO STANDBY
'----------------PİL ŞARJ ÖN HAZIRLIK-----------------
HAZIRLA: PORTA=8
MODE=2:LCDOUT $FE,1
FOR I=1 TO 30'30 sn pili stabilize ediyoruz
LCDOUT $FE,$82,"SARJ BASLIYOR"
gosub PILKONTROL
GOSUB EKRAN
PAUSE SN
NEXT
'----------------ÖN-ŞARJ (SOFT)----------------
ONSARJ:
MODE=3:PORTA=12
GOSUB PILKONTROL
FOR I=0 TO 240  '4 Dakika toplam şarj akımının %20 si ile şarj-200 ms
low sarj:pause 200:HIGH SARJ
PAUSE 300
PORTA=PORTA ^ %100  'TOGGLE LEDK daha kısa kod üretiyor
PAUSE 460
GOSUB PILKONTROL
GOSUB EKRAN2:LCDOUT $FE,$87,"-%20 SARJ"
IF HAM<26 THEN STANDBY        IF (KALAN=ADET) OR (okunan>ADET*15) THEN
PIL=1:PORTA=8:goto SON
ENDIF
IF OKUNAN=>ESKIVOLT THEN YURU

YURU:  NEXT
'-------------------TAM-SARJ-------------------------
TAMSARJ:PIL=0:PORTA=4
mode=4:low sarj:SAYAC=0'FARK=3+(PORTA.4)*2'NiCd'LER PORTA.4=1
GOSUB PILKONTROL:GOSUB EKRAN2:LCDOUT $FE,$87,"-TAM SARJ"'NMH ler PORTA.4=0
FOR I=0 TO 10800  '3 saat şarj süresi sarj sonu negatif Delta V ile
GOSUB PILKONTROL
PORTA=PORTA ^ %1100 'toggle ledk ve ledy
pause sn
GOSUB EKRAN2
IF HAM<26 THEN STANDBY        IF (KALAN=ADET) OR (okunan>ADET*15) THEN
PIL=1:PORTA=8
ENDIF
IF OKUNAN=>ESKIVOLT THEN DEVAM
IF PIL=0 THEN DEVAM
SAYAC=SAYAC+1:IF SAYAC=3 THEN SON
DEVAM: NEXT
SON:   HIGH SARJ

'-----------------TRIKLE ŞARJ------------------------
TRIKLE:MODE=5:SAYAC=0:PORTA=4
GOSUB PILKONTROL:GOSUB EKRAN3
IF HAM<26 THEN           lcdout $fe,1:          goto basla        endif          LOW SARJ:PAUSE 40:HIGH SARJ:PAUSE 960 'Şarj akımının %4'ü ile şarj ediliyor        GOTO TRIKLE '------------PİL VOLTAJ KONTROL--------------------

PILKONTROL:            POZ=SARJ            HIGH SARJ:PAUSEus 500            ADCIN 0,HAM BAK:       IF ADCON0.2=1 THEN BAK            VOLT=(60*ham+20)/10:OKUNAN=VOLT/10     '68K - 33K            HANE=(volt//100)/10:Volt=volt/100            IF ESKIVOLT>OKUNAN THEN
KALAN=ESKIVOLT-OKUNAN
ELSE
KALAN=0
ENDIF
IF OKUNAN>ESKIVOLT THEN ESKIVOLT=OKUNAN
SARJ=POZ
RETURN
'-------------------E K R A N L A R-------------------
EKRAN0:
LCDOUT $FE,1,"   CIHAZ ACIK"
LCDOUT $FE,$C3,"PIL TAKINIZ"
RETURN

EKRAN2: GOSUB TIME
LCDOUT $FE,$80,DEC1 SAAT,":",DEC2 DAK,":",DEC2 SAN
GOTO EKRAN
RETURN

EKRAN3: lcdout $fe,$80,dec1 saat,":",dec2 dak,"  PIL DOLDU "
'        lcdout $fe,$c0,"OKU=",#okunan," ESK=",#ESKIvolt
'        return
EKRAN:
LCDOUT $FE,$C0,"   PIL: ",#VOLT,",",DEC1 HANE," V  "
'        LCDOUT $FE,$C0,"PIL:",#ham," ",#volt,",",DEC1 HANE," V  "
RETURN

TIME: SAAT=I/3600:DAK=(I-(SAAT*3600))/60:SAN=I-(SAAT*3600)-(DAK*60)
RETURN

SEC:
WHILE SET=0:WEND
SETA:
LCDOUT $FE,2,"PIL ADEDI :",#ADET
LCDOUT $FE,$8B
IF AYAR=0 THEN
ADET=ADET+1:PAUSE 200
IF ADET>8 THEN ADET=1
WHILE AYAR=0:WEND
ENDIF
IF SET=0 THEN RETURN
GOTO SETA
END

Kolay Gelsin
ETE (Erol Erdal)

Yararlanılan Kaynaklar:

LM3647.pdf ‘Şarj Kontrol sistemi
http://www.batteryuniversity.com/partone.htm
http://www.angelfire.com/electronic/hayles/charge1.html

  • akbulut

    Güzel bir çalışma olmuş.Şemada set tuşu yok.Yardımcı olur musunuz?

  • ete

    Set tuşu yerleşim planında gösterilmiş durumda. PortC.2 de bağlıdır.

    Ete

  • Mert

    Çok güzel bir çalışma teşekkürler ama açık şema ekleyebilirseniz Set tuşu daha iyi anlaşılacak galiba ben sitedeki yerleşimde göremedim.

  • emre

    eline sağlık çok güzel bir çalışma olmuş

  • jeck

    hocam ben pwm ile lithium pil şarj etmek istiyorum bu konuda yardımcı olabilirmisiniz ??

  • ete

    Lithium pil şarjı tamamen farklı bir iştir.
    Lityum pil şarj voltajına hassas bir yapıdadır. 4,1- 4,2 Volt ile şarj edilir. Bu voltaj aşılırsa Pil hemen bozulur. Yanlış anlaşılmasın boşalmış bir pile 20V da verseniz voltaj 4,1V tu aşamaz. Ama doldukça voltaj yükselir. Bu nedenle Lithium piiler ilk 1 saat boyunca voltaj serbest ama akım sabit bir sistemle şarj edilirler. Sonradan ise tam tersi olacak şekilde Voltaj 4,2V ile sabit akım serbest modda şarj edilmeleri gerekir. Bu modda volat seviyesi 4,2V ta yükselir yükselmez şarj kesilmelidir.
    Bu karmaşık şarj düzeni nedeni ile henüz bir Lithium şarj aleti yapamadım. Aslında vaktim olmadı . Bu nedenle yardımcı olamayacağım için üzgünüm.

    Ete

  • jeck

    ilginiz için teşekkür ederim işallah ben yapabilirsem payaşırım.
    kolay gelsin.

  • jeck

    Hocam bir şey daha soracağım. Devreyi aynen kurdum fakat akımı kontrol atına almıyorum transistörü yönetemiyorum her halde. 7805 den gelen yolu 1k direnc ile pwm çıkışına bağmadım sonra bunuda 3k direnc ile bc548 e bağladım. Collectörü 317 nin adj pinide va emitteride toprağa yolladım fakat akımı değiştiremiyorum. Transistörü burda nasıl kullancağımı söylermisiniz ??

    Teşekkürler.

  • ete

    Jeck,

    Benim devre akım takipçisi metoduna göre yapılmış bir devredir.
    Devrede bağlantıları dkeğiştirirsen hiç bir şey çalışmaz. Bu konuda yardımcı olamammaalesef. Akım kontrolü devredeki seri dirençle yapılır.
    Bunun dışında bir sistem bu devreye uygulanmaz (en azından ben öyle biliyorum) bu nedenle yardımcı olamayacağım.

    Ete

  • emre

    Merhaba açıklama kısmında kaç adet pil konulacaksa ona göre ayar butonuna basılır ve daha sonra set tuşuna basılır yazmışsınız.Ama ben atar butonunu göremedim.

  • ete

    Eski şema burada yayınlanmış olabilir. Yeni dosyalar yazıya eklendi

    Malzeme yerleşimini gösteren resim dosyasını yüklersen butonların nereye bağlı olduğunu göreceksin. Ledlerin hemen yanında yer alıyor soket.

    Ete

  • Emre

    merhaba zip dosyasındaki devre şeması ile sayfadaki devre farklı bu devre çalışıyor mu? ben bu devreyi yapacağım ödevim var bana yardımcı olur musunuz?

  • ete

    Çalışıyor elbette. Kendimde kullanıyorum zaten.
    Ayrıca yapan bir sürü insan var.

    Ete

  • tayfun

    merhaba. Devre tasarımı çok güzel, öncelikle tebrik ederim. Ben devreyi yaptım, devrenin pillerin şarj oluşundan ve ledlerin yazıda belirtildiği gibi sinyal vermesinden çalıştığını anlıyorum. Ama LCD çalışmıyor. Devreye ilk enerji verdiğimde LCD de 16 tane içi dolu kare görünüyor. Ve ayar butonuna bassam da birşey değişmiyor. Set butonuna bastığımda kırmızı led yanıyor ve şarja başlıyor ama LCD yine aynı şekilde kalıyor. Bu sorun hakkında bir fikriniz var mı? Şimdiden teşekkür ederim.

  • ete

    BU sorunu iyi bilirim. Muhtemel sebepleri şunlar;

    – Kullandığınız LCD bu devreye uyumlu değil. Bacak bağlantılarını iyice kontrol edin. 1 Nolu bacak GND, 2 nolu bacak +5V, 3 Nolu bacak kontrast bacağı şeklinde gidiyor sıralama. Bazı LCD lerde en başta arka plan ışığı için iki adet pin yer alıyor ve genelde ilk pini her kes 1 nolu pin olarak kabul edip bağlantı yapıyorlar. Buda benzeri sorunları yaratıyor.

    – LCD nin bacak bağlantılarını ters bağlamış yada pin bağlantıları yanlış.

    – 3 Nolu bacakta yer alan kontrast trimpotu maksimum ayarda onu biraz kısarsanız belkide karekterleri görebilirsiniz.

    – Kullandığınız LCD bozuk yada yanık. LCD ler voltaja ve statik elektiriğe çok duyarlılar. En ufak bir voltaj fazlalığı anında LCD nin bozulmasına sebep olmaktadır. Mümkünse bir başka LCD ile deneme yapın.

    Hepsi bu kadar.
    Ete

  • emre

    Merhaba. devrenizi yapmak istiyorum fakat pcb de aklıma takılan bir konu oldu. 4 amper köprü diyotun yanındaki iki adet diyotun değeri yazılmamış. bu konuda yardımcı olursanız sevinirim. teşekkürler…

  • ete

    Diyotları nerde görüyorsun pek anlamadım. Amma muhtemelen köprü kullanılmaz ise kullanılacak olan 2 adet diyotlar.
    0-12v trafo çıkışı kullanırsan köprü, 12-0-12 çıkış kullanırsan 2 diyot kullanacaksın demektir. Hem köprü hem diyot lar bir arada kullanılmıyor. Diyot kullanırsan en az 2 amperlik (1a bile olur) doğrultma diyotu olmalı.
    Ete

  • ozan

    Ete Bey merhaba,
    Bundan önceki şarj devrenizi yapmaya çalıştım fakat programı Pic16C711’e bir türlü yükleyemedim. Bunun için Pic programlayıcı yaptım fakat o da çalışmadı :)

    Neyse, şimdi bu devrenizi yapmak istiyorum fakat LCD ekrana ihtiyacım yok, bunu devreye koymak istemiyorum. Yapacağım devre hep 7.2 Volt 2600Mah değerindeki altılı pilleri şarj etmede kullanılacak. Sizin devrenizde nasıl bir değişiklik yaparsak ekrana ve pil adedini pic’e göstermeye gerek kalmaz? Yani ben hep bu pilleri şarj edeceğim ve pili bağladıktan sonra sadece birtek tuşa basarak şarjı başlatmak istiyorum (olmadı ekran kalabilir fakat tuşla pil adedini girmek istemiyorum). Bu mümkün müdür?
    Saygılar.

  • Ziyaretçi

    hocam öncelikle devre için teşekkürler. Benim devremde LM7805 ve LM338 aşırı derecede ısınıyor neredeyse 10dk içinde yanacak seviyeye geliyor (12 0 12 trafo kullanıyorum.) Bunun nedeni ne olabilir, LCD’nin arka ışığını dirençsiz doğrudan besliyorum, bundan kaynaklanabilir mi? Bir de buradaki kodun pic c versiyonu da var mı? Selamlar.

  • abddurahman

    merabalar kolay gelsin kullandığınız program dilini hangisi ?

  • Cenry Julie

    Merhaba,şarj devresini yaptıktan ve pilleri şarj ettikten sonra devreye usb bağlantısı da yapıldığında telefon şarj edilebilir mi?Teşekkür ederim.