Elektronik / Mikrodenetleyici Projeleri/

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

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

  1. akbulut 2010/10/21
  2. ete 2010/10/21
  3. Mert 2011/04/04
  4. emre 2011/05/23
  5. jeck 2011/09/05
  6. ete 2011/09/05
  7. jeck 2011/09/05
  8. jeck 2011/09/07
  9. ete 2011/09/08
  10. emre 2011/11/18
  11. ete 2011/11/18
  12. Emre 2011/11/20
  13. ete 2011/11/20
  14. tayfun 2011/11/27
  15. ete 2011/11/27
  16. emre 2012/03/24
  17. ete 2012/03/24
  18. ozan 2012/09/27
  19. Ziyaretçi 2014/07/06
  20. abddurahman 2016/04/24
  21. Cenry Julie 2017/10/30

Yorum

Soru: