27 Kasım 2009

http://www.genelsaglikbilgisi.com/


17 Eylül 2009

Usb uygulamaları ccs c18 pic18f4550 pic18f2550

Usb uygulamaları ccs c18 pic18f4550 pic18f2550

Daha önce Ahmet ATAR`ın hazırladığı “Adım Adım USB ve Uygulamalar” adlı çalışmasını paylaşmıştım USB PIC haberleşme konusunda sanırım en kapsamlı Türkçe kaynak. Elektro tekno forumlarından “tmcone” bu projenin devamı niteliğinde çok güzel, projeler, bilgiler paylaştı faydalı olması dileği ile. Emeği geçen herkese teşekkürler

PIC18F4550 USB Uzaktan Kontrol

Aşağıda vereceğim uygulama internet üzerinden evinizdeki ya da başka bir yerdeki Server makineye bağlanıp USB portlardan birine bağlı Cihaz ile evinizdeki herhangi bir aygıtı kontrol etmenizi sağlıyor. Önceden indirdiğiniz USB Paket içindeki ADIM ADIM USB makalesinde Ana devre şeması verilmişti. Bu devreye aşağıda vermiş olduğum devreyi ilave etmeniz yeterli.
Ana devre
pic18f4550-test-devresi
usb uzaktan kontrol cikis
Yukarıdaki şema sadece birtek cihaz için verilmiştir.Aynı devreyi ek 3 cihaz için daha kurup PIC’in RB1, RB2 ve RB3 portlarına bağlamalısınız.
Server programın görüntüsü
usb remote comtrol server program
Bu program’ı ilk çalıştırdığınızda eğer USB Cihaz PC’nize bağlı değilse, program bağlantı için hiç bir yapılandırma yapmaz ve USB Cihaz’ın bağlanmasını dinlemeye başlar. USB Cihaz PC’ye takıldığı anda Server program bunu algılar ve USB Cihaz ile arasında bağlantı açar.Aynı zamanda program soket bağlantısınıda yapılandırır ve 8090 numaralı portu dinlemeye alır. Bir bağlantı geldiği zaman bunu kabul eder ve bağlantı sağlanan Client programdan komut beklemeye başlar. Normalde Server ve Client arasında 4 byte veri taşınır. Bu dört byte’daki komut yapısı aşağıdaki gibi düşünülmüştür;

  1. unsigned char CmdBuffer[4]; 


  2.  


  3. CmdBuffer[0] = Aygıt İndex'i(Örneğin 0 - 0.Cihaz, 1 - 1.Cihaz gibi) 


  4. CmdBuffer[1] = Aygıt On/Off(Örneğin 1 ise aç, 0 ise kapat gibi) 

Server program Client programdan yukarıdaki yapıda bir komut aldığında bunu önce ekrana yazar ardından PIC’e gönderir.PIC ise bu yapıyı değerlendirerek PORTB’ye bağlı rölelerden seçileni kapar yada açar.
Client Programın görüntüsü
usb remote comtrol server cliend

PIC18F4550 Usb HID Lcd & Led Uygulaması (CCS)

Bu uygulama Usb HID sınıfı kullanmaktadır. Hid sınıfının en önemli özeliklerinden birisi harici sürücü yüklemenize gerek olmamasıdır; sistem tarafından otomatik yükleme gerçekleştirilir. Basit bir LED ya da LCD uygulaması gibi gözükse de gerek pic tarafındaki usb konfigurasyonu gerekse de Pc programı ele alınırsa önceki uygulamalarımdan daha karmaşıktır. Bu sınıf kullanılırken dikkat edilmesi gereken noktalar vardır ; ilgili bilgilere usb spesifikasyonlarından ulaşabilirsiniz.
Sınıf: HID Generic
PC Program: Visual C++ 2005
Derleyici: CCS C



Devre şeması




PIC18F4550 Usb HID Lcd Led Uygulamasi CCS

PIC18F2550 USB Step Motor Uygulaması (C18)

PIC18f2550 Usb Step Motor Uygulamasi, USB uygulamalarında birden fazla komutun nasıl gönderebileceğini step motor kontrol örneğiyle göstermektedir. Uygulamada bipolar step motorlar yalnız ya da birlikte tam adım sürülmektedirler. Aynı zamanda Usb ADC uygulaması da desteklenmektedir. (Bunun için AN0 ve AN1′e pot. bağlayınız).
Uyarı: Bu uygulama sadece ögretici niteliktedir; denenmemiştir.
Not: Simulasyon sırasında aşırı işlemci kullanımından dolayı pic 48 Mhz yerine 1 Mhz de çalıştırılmaktadır.
Sınıf: MCH PUSB Generic Driver
Transfer: USB 2.0 Kesme ( Interrupt )
PC Program: Visual C++ 2005
Derleyici: Microchip C18


Devre şeması
PIC18f2550 Usb Step Motor Uygulamasi


PIC18F2550 USB ADC Uygulaması

Usb bağlantısının karmaşık yapısına rağmen USB uygulamalarının kolayca gerçekleştirilebileceğini göstermek amacıyla bir örnek hazırladım. Microchip USB kütüphanesinden yararlanılmıştır. Ekte pic kodları, simulasyon dosyaları ve pc programı kodları bulunmaktadır. Herkese yararlı olması dileğiyle..
Sınıf: MCH USB Generic Driver
Transfer: USB 2.0 Yığın ( Bulk )
PC Program: Visual C++ 2005′te hazırlandı.
Derleyici: CCS C


Devre şeması
PIC18f2550 Usb ADC uygulamasi

Etiketler:

dSPIC33FJ mmc sd sdhc kart ses kayıt (wav) okuma

dSPIC33F mmc sd sdhc kart ses kaydı (wav) ve okuma 

Devre DSPIC33FJ64GP802-I/SP mikro denetleyicisi üzerine kurulu hex yazılımı var ne yazık ki kaynak kodlar yok fakat dspic serisi ile seviye mikro denetleyiciler için kaynak sıkıntısı olduğu için en azından donanımsal tasarım bölümleri az çok fikir verebilir.
Mmc-Sd-Sdhc hafıza kartları ile dspic`in haberleşmesi, tuş kombinasyonları, mikrofon girişi ve çıkışın işlenmesi, besleme katları, dspic IR haberleşme hepsi bir arada bir projede toplanmış bu tip tasarımlar için çalışmalarınızda örnek olabilir
Özellikler
  • Desteklenen hafıza kartları MMC / SD / SDHC
  • Mono stereo WAV ses kaydı 16kHz
  • Ses kayıtları çalma WAV 44.1kHz
  • Giriş çıkış soketleri
  • FAT/FAT32 dosya sistemi (herhangi bir işletim sistemi)
  • 2×16 LCD Ekran üzerinde kayıt/çalma bilgileri görüntüleme
  • Uzaktan kumanda RC5 ya da akıllı kumanda
  • Sinyal gürültü oranı:-70dB (22Hz için 22kHz) 1.6V RMS ile
  • THD total harmonic distortion + N: 1kHz at 0,7%
Devre her yönüyle dspic ile uğraşanlar için iyi bir kaynak özellikle IR haberleşme RC5 kumanda olması çok iyi bu konu hakkında önceki yazılarda bilgi verilmişti bakınız
İnferruj Data Transferleri Protokoller Devre Mantığı

Giriş Çıkış Birimleri

Line in bölümünden herhangi bir ses kaynağını bağlayıp kart üzerine kayıt edebilir ve dinlenebilir. Mic in bölümüne mikrofon bağlayıp ortamdaki sesleri kayıt edip dinleyebilirsiniz hafıza kart soketi pcb kart üzerinde ayrıca ses açıp kısma için ayar potu var

LCD üzerinde görüntülenen bilgiler:

Ses çalma bilgisikayıt süresikaydın ismi frekansımono- stero bilgisises seviyesi, ve kartın hafiza durumunu görebilirsiniz. Devre 12volt DC besleme ile çalışıyor regüle işlemleri lm317 ve 78xx serisi regülatörler ile sağlanmış 2×16-lcd 74hc595 ile sürülmüş ses çıkışı ise lm833 ile yükseltilmiş
Dosyalara ulaşacağiniz adres : http://www.siliconchip.com.au/cms/A_111521/article.html Açılan sayfada devre özellikleri listesinin altındaki resime tıkladığınızda yeni sayfada resim galerisi açılacak “Next” butonu ile projenin şematik ve diğer çizimlerine ulaşıyorsunuz hepsini kayıt ettikten sonra sol menüde “Download” yazısına tıklıyorsunuz projenin yayım tarihine göre 2009 yılı dosyaları içinde yazılım ve pcb dosyalarını indiriyorsunuz uzun iş vaktim yok derseniz alternatif link: dSPIC33FJ-mmc-sd-sdhc-wav.rar
dSPIC33FJ wav kayit mmc sd sdhc kart

Etiketler:

PIC16F877 IRFZ44 Lcd göstergeli solar şarj regülatörü

PIC16F877 IRFZ44 Lcd göstergeli solar şarj regülatörü

Hazırlayan: Sabahattin KARABAKIR – Güneş enerjisini ile ilgili çalışmalarınızda çok faydalı olacak bir proje detaylı bilgiler bulunuyor. Ayrıca PIC C dili (HI-TECH PIC C) ile hazırlanmış kaynak yazılımda bulunuyor. Emeği geçen hazırlayan kişilere teşekkürler. Aşağıda özetler verildi projenin tamamı: solar-sarj-regulatoru.rar

Bu proje güneş enerjisinden daha iyi faydalanabilmek için geliştirilmiştir. Güneş enerjisi kesikli bir enerji çeşididir ve bu nedenle depolanması gerekmektedir. “Solar Şarj Regülatörü” bu noktada ihtiyaç duyulan bir cihazdır ve PV panellerden gelen DC akımın bir bataryada depolanması esnasında iş görür.
Regülatör, standart 12V’luk kurşun-asit bataryalar için tasarlanmıştır ve iki ayrı işlevi vardır, bunlar sırasıyla şöyledir. İlki, bataryayı over-cahrge(aşırı yüklenme) ve over-discharge (aşırı boşalma)’dan korumaktır. İkincisi, yükü aşırı akımdan korumaktır. Bunlara ek olarak bazı monitoring özelliklerine sahip olan regülatör, bir LCD vasıtası ile anlık olarak batarya voltajı, yük akımı, yük gücü ve SOC (State Of Charge-Şarj Durumu )’u göstermektedir. Bu regülatörün en büyük üstünlüğü, piyasadaki benzerlerine göre çok daha ucuz olmasıdır (en az 1/5 fiyatına mal edildi).
Projenin tasarım, geliştirme, test ve ölçüm aşamaları, Ege Üniversitesi, Elektrik-Elektronik Mühendisliği Bölümü, Fotovoltaik Sistemler Laboratuarında gerçekleştirildi. Her laboratuarda var olan temel cihazların yanı sıra, sadece bu laboratuarda bulunan PV (Photo Voltaik) Paneller’den azami derecede faydalanılmıştır, bu yeterlilik ve imkanlar projeye çok büyük bir katkı sağladı.
Bu projede bana zaman ayıran, pratik ve teorik aşamalarda destek olan ve her zaman hoşgörülü davranan sayın okutmanım Dr.Mutlu BOZTEPE’ye teşekkürü borç bilirim.
Bu raporda, PV sistemlerde kurşun asit bataryaların şarj edilmesinde kullanılan regülatörlerin en düşük maliyetli ve en yüksek verimlisi olan On-Off Şarj Regülatörü anlatılacaktır. Regülatör, 12V’ luk bir batarya için tasarlanmıştır ve sabit akım/sabit gerilim yöntemi ile şarj kontrolü yapmaktadır. Bunu PIC16F877 kontrolörlü bir ölçme, kontrol devresi ve IRFZ44 MOS-FET’li bir anahtarlama devresi yapmaktadır. PIC için C dilinde yazılmış bir program kullanılmıştır.
Üzerinde yük(akım, gerilim, güç) ve batarya (SOC-State Of Charge,Şarj Durumu) ile ilgili bilgi veren bir LCD barındırır. Sadece şarj kontrolü değil aynı zamanda yük kontrolü yapar .
solar regulator blok diagram
Altı adet paralel güneş pili panelinden (OST-80 PV modül) alınan 18V’luk maksimum DC gerilim ile 12V’luk bir batarya şarj edilmektedir. On-off regülatör olarak bir güç MOSFET’i ve yük kontrolü için bir güç MOSFET’i kullanılmıştır. PIC (www.microchip.com)8 mikro denetleyicinin analog girişlerinden okunan gerilim ve akım(akım gerilim çevirici vasıtası ile) değerlerine bağlı olarak MOSFET’ler sürülmüştür. Böylece gerekli olduğu durumlarda batarya, yük ve PV panel-lerden ayrılarak yük ve batarya korunmuş ve şarj kontrolü yapılmıştır. Sistem, üzerinde bilgi verici olarak bir adet 2×16 karakter LCD bulunup, metal bir kutu içine yerleştirilmiştir.

Şema ve Çalışma Prensibi

Takip eden sayfada Proteus adlı simülasyon programında kurulup simüle edilen devre şeması görülmektedir. PV paneller yerine 20V’luk bir DC gerilim kaynağı bağlanmıştır. PV paneller, batarya ve yükün pozitif kutupları ortak bağlanmış olup, negatif kutupları seri birer MOSFET ile birleştirilmiştir. Negatif (yada toprak) tarafta ayırma yapılmasının en temel nedeni N-kanallı MOSFET kullanılmasıdır.
MOSFET’in iletime geçebilmesi için gate-source arası 12V civarında olmalı, fakat batarya-panel arası bağlı MOSFET’in source ucu en az 12V olacağı için ve panel gerilim maksimum 20V olacağı için iletime geçme koşulu sağlanamamaktadır. Bu nedenle source ucu toprak veya 0V seviyesinde olmalıdır. Böylece maliyet olarak da büyük bir kar sağlanmıştır, çünkü P-kanallı MOSFET’ler üretim zorluğu bakımından 50A gibi büyük akımlarda üretilememektedir, ayrıca yüksek akımlı olanları da çok pahalıdır.
MOSFET’ler PIC portları vasıtası ile birer opto coupler ile sürülmektedir, böylece kontrol ile güç katı birbirinden izole edilmiştir. Gate’lere paralel birer 12V’luk zener bağlanmıştır bundaki amaç yüksek gerilimde gate’lerin zarar görmesini engellemektir.
MOSFET’lere seri bağlı diyotlar ters akımları engellemek için kullanılmıştır. Yani güneş olmadığında bataryadan panellere akım akmaması için. Gerilim ölçme işi 0. analog girişten yapılmıştır. Bataryaya paralel bağlı bir gerilim bölücü ile batarya gerilimi ¼’e indirilmiş ve 5V maksimum kabul edilerek yaklaşık 5mV’luk bir çözünürlükte ölçüm yapılmıştır.
Akım ölçme ise 1. analog girişten yapılmıştır. Yüke seri bağlı bir 0,013ohm/ 15W’lık direnç üzerine düşen gerilim OPAMP ile kuvvetlendirilerek 50A’de maksimum 5V olacak şekilde PIC’e girilmiştir. Yaklaşık 5mV’luk bir çözünürlükte ölçüm yapılmıştır.
LCD, standart bir parça olduğu için şekildeki gibi bağlanmış ve çalıştırılmıştır. Dikkat edilmesi gereken en önemli nokta, kontrast ayarının yapılmış olmasıdır. Sümülasyonda kontrast potansiyometrsine ihtiyaç duymadan çalışmaktadır.
solar sarj regulator devresi

Deney ve Ölçüm Sonuçları

Önceki sayfalarda anlatılan devre şeması gerçekleştirilirken aşağıdaki sorunlar ile karşılaşıldı:
-LCD sürme büyük bir zaman kaybına neden oldu çünkü, var olan standart LCD şemalarında kontrast ucu açıkta bırakılmıştır. Bu uca +Vcc veya GND verilmesine rağmen görüntü alınamamıştır, 10K’lık bir potnsiyometre ile kontrast ayarı yapıldıktan sonra görüntü elde edilmiştir.
-Akım ölçme devresi, yük akımının 0.013ohm’luk direnç üzerinde neden olduğu gerilimi filtreleyip kuvvetlendirerek PIC’in ölçebileceği bir seviyeye getirmektedir. Bu esnada tasarımda öngörülen tek kaynaktan beslemeli OPAMP sorunlar çıkardığı için ek bir gerilim evirici devresi ile çift beslemeli bir amplifikasyon yapıldı. Ayrıca iyi bir hassasiyete sahip olmasına rağmen OPAMP offset nulling’e ihtiyaç duydu.
-PIC ve diğer devreleri beslemek için kullanılan 7805 entegresi, bataryadan beslenmektedir. Fakat saf bir DC gerilim elde edilemediği için devre kararasızlaşmaktaydı. Bunu engellemek için 7805’in çıkışına filtre kapasitesi ilave edildi
-LCD backlight özelliği kullanılmadı, çünkü yüksek akım çekmekte ve 7805’in aşırı ısınmasına neden olmaktaydı.
Devre sorunsuz olarak çalıştırıldıktan sonra kutulandı ve aşağıdaki ölçümler gerçekleştirildi. Tüm ölçümler öğlen saatlerinde (maksimum gün ışığında) ve 39ohm’luk yük bağlı iken yapılmıştır. PV paneller, OST-80 olarak bilinen, 12V(nominal) ve 19V(open circuit) gerilim değerlerine sahip panellerdir, benzer özellikteki BP 380 panelleri altyapı kısmında verilmiştir.
sarj durumu batarya akim

PIC Yazılımı

Aşağıdaki program PIC C ile yazılmış bir programdır ve Hi-Tech PIC C Compiler ile derlenmiştir. Programda geçen alt programlar standart olarak kullanılan ve ulaşılabilir programlar olduğu için burada verilmeyecektir.

  1. ********************************* 

  2. // solar şarj regülatörü 

  3.  

  4. #include  

  5. #include  

  6. #include  

  7. #include "lcd.h" 

  8. #include "delay.h" 

  9. #include "serial.h" 

  10.  

  11. // Prototypes 

  12. float ReadAdc(unsigned char channel); 

  13. void lcd_intro (void); 

  14.  

  15. void giris_olc(void); 

  16.  

  17. // Useful defines 

  18. #define LSB(x)  (unsigned char)(*(((unsigned char *)&x)+0)) 

  19. #define MSB(x)  (unsigned char)(*(((unsigned char *)&x)+1)) 

  20. #define LWORD(x)    (unsigned int)(*(((unsigned int *)&x)+0)) 

  21. #define HWORD(x)    (unsigned int)(*(((unsigned int *)&x)+1)) 

  22. #define clrwdt() asm("clrwdt") 

  23. #define PORTBIT(adr, bit)   ((unsigned)(&adr)*8+(bit)) 

  24. #define DelayUs(x)  { unsigned char _dcnt; _dcnt = x; while(--_dcnt != 0){asm("NOP");asm("NOP");} } 

  25. #define DelayMS(x)  { unsigned char _dcnt; _dcnt = x; while(--_dcnt !=0) {DelayUs(250);DelayUs(250);DelayUs(250);DelayUs(250);}} 

  26.  

  27. #define SampNum 40 

  28. static bit  CO  @ PORTBIT(PORTE, 0); 

  29. static bit  CI    @ PORTBIT(PORTE, 1); 

  30.  

  31. float giris0, giris1, giris2, giris3; 

  32. float LRV, HVD, RCV, LVD; 

  33. unsigned char buff[15]; 

  34.  

  35. main (){ 

  36. // Interrupt settings 

  37. GIE = 0;            // Disable all interrupts 

  38.  

  39. // ADC settings 

  40. ADCON1=0b10000010;  // right justified, PORTA for A/D , PORTE digital 

  41. ADCON0=0x81;        // Fosc/32, CH0, ADON 

  42.  

  43. // PORT settings 

  44. PORTA=255; 

  45. PORTB=0; 

  46. PORTC=0; 

  47. PORTD=0; 

  48. PORTE=3; 

  49. TRISA=0b11111111; 

  50. TRISB=0b00000000; 

  51. TRISC=0b00000000; 

  52. TRISD=0b00000000; 

  53. TRISE=0b00000000; 

  54. LRV=13;Load Reconnect Voltage(yük bağlama) 

  55. HVD=143/10;High Voltage Disconnect(PV ayırma) 

  56. RCV=135/10;PV Reconnect(PV bağlama) 

  57. LVD=115/10;Low Voltage Disconnect(yük ayırma) 

  58. ;Yukarıdaki değerler batarya çeşidine göre deyişen ayar noktalarıdır. 

  59.  

  60. lcd_init(); 

  61. lcd_intro(); 

  62. lcd_dispmode(4+0+0); // 4:Display on  2:cursor off  1:blink off 

  63. DelayUs(220); 

  64.  

  65. while(1) 


  66. giris0=(ReadAdc(0)*20/1024); 

  67. ftoa(giris0,buff); 

  68. lcd_clear(); 

  69. lcd_goto(0);  //1.satır 

  70. lcd_dispmode(4+0+0); // 4:Display  2:cursor  1:blink 

  71. lcd_puts("E="); 

  72. lcd_goto(0x02); 

  73. lcd_puts(buff); 

  74. lcd_goto(0x06); 

  75. lcd_puts("V"); 

  76. if (giris0<=RCV) {CO=1;} 

  77. if (giris0>=HVD) {CO=0;} 

  78. if (giris0<=LVD) {CI=0;} 

  79. if (giris0>=LRV) {CI=1;} 

  80.  

  81. giris1=(ReadAdc(1)*75/10240); 

  82. ftoa(giris1,buff); 

  83. lcd_goto(0x08); 

  84. lcd_puts("I="); 

  85. lcd_goto(0x0A); 

  86. lcd_puts(buff); 

  87. if (giris1>=30) {CI=0;} 

  88. lcd_goto(0x0E); 

  89. lcd_puts("A"); 

  90. lcd_goto(0x40); 

  91. lcd_puts("P="); 

  92. lcd_goto(0x42); 

  93. giris2=giris1*giris0; 

  94. ftoa(giris2,buff); 

  95. lcd_puts(buff); 

  96. lcd_goto(0x47); 

  97. lcd_puts("W"); 

  98. lcd_goto(0x49); 

  99. lcd_puts("SOC=%"); 

  100. lcd_goto(0x4E); 

  101. giris3=100*(giris0-LVD)/(HVD-LVD); 

  102. ftoa(giris3,buff); 

  103. lcd_puts(buff); 

  104. DelayMs(250); 

  105. DelayMs(250); 

  106. DelayMs(250); 

  107. DelayMs(250); 

  108. lcd_clear(); 



  109.  

  110. float ReadAdc(unsigned char channel){ 

  111.     unsigned int adcvalue; 

  112.     ADCON0 = (channel << 3) + 0x81;   // select channel 

  113.     DelayUs(20);                    // wait for acquasition time 

  114.     ADGO = 1; 

  115.     while(ADGO);                    // wait for conversion complete 

  116.     MSB(adcvalue)=ADRESH; 

  117.     LSB(adcvalue)=ADRESL; 

  118.     return(adcvalue); 

  119. //****************************************** 


  120.  

  121. void lcd_intro (void) 


  122.     lcd_clear(); 

  123.     lcd_goto(0); 

  124.     lcd_dispmode(4+0+0); // 4:Display  2:cursor  1:blink 

  125.     lcd_putsd("      SOLAR"); 

  126.     lcd_goto(0x40); 

  127.     lcd_putsd(" SARJ REGULATORU"); 

  128.     DelayMs(250); 

  129.     DelayMs(250); 

  130.     DelayMs(250); 

  131.     DelayMs(250); 

  132.     lcd_clear(); 


  133. ********************************* 
Yazılımın yaptığı işi aşağıdaki basamaklarda özetleyebiliriz:
• Ayar noktalarına bağlı olarak MOSFET’leri kontrol eder ve yük ile PV panelleri devreden ayırıp devreye alır.
• Batarya gerilimi ve yük akımını ölçer/okur.
• Yükün çektiği gücü hesaplar.
• Gerilim temelli SOC tahmini yöntemi ile SOC hesaplar.
• Ölçüm ve hesap sonuçlarını anlık olarak LCD’ye yazdırır.

Etiketler:

PIC16F877 IRFZ44 Lcd göstergeli solar şarj regülatörü

PIC16F877 IRFZ44 Lcd göstergeli solar şarj regülatörü

Hazırlayan: Sabahattin KARABAKIR – Güneş enerjisini ile ilgili çalışmalarınızda çok faydalı olacak bir proje detaylı bilgiler bulunuyor. Ayrıca PIC C dili (HI-TECH PIC C) ile hazırlanmış kaynak yazılımda bulunuyor. Emeği geçen hazırlayan kişilere teşekkürler. Aşağıda özetler verildi projenin tamamı: solar-sarj-regulatoru.rar

Bu proje güneş enerjisinden daha iyi faydalanabilmek için geliştirilmiştir. Güneş enerjisi kesikli bir enerji çeşididir ve bu nedenle depolanması gerekmektedir. “Solar Şarj Regülatörü” bu noktada ihtiyaç duyulan bir cihazdır ve PV panellerden gelen DC akımın bir bataryada depolanması esnasında iş görür.
Regülatör, standart 12V’luk kurşun-asit bataryalar için tasarlanmıştır ve iki ayrı işlevi vardır, bunlar sırasıyla şöyledir. İlki, bataryayı over-cahrge(aşırı yüklenme) ve over-discharge (aşırı boşalma)’dan korumaktır. İkincisi, yükü aşırı akımdan korumaktır. Bunlara ek olarak bazı monitoring özelliklerine sahip olan regülatör, bir LCD vasıtası ile anlık olarak batarya voltajı, yük akımı, yük gücü ve SOC (State Of Charge-Şarj Durumu )’u göstermektedir. Bu regülatörün en büyük üstünlüğü, piyasadaki benzerlerine göre çok daha ucuz olmasıdır (en az 1/5 fiyatına mal edildi).
Projenin tasarım, geliştirme, test ve ölçüm aşamaları, Ege Üniversitesi, Elektrik-Elektronik Mühendisliği Bölümü, Fotovoltaik Sistemler Laboratuarında gerçekleştirildi. Her laboratuarda var olan temel cihazların yanı sıra, sadece bu laboratuarda bulunan PV (Photo Voltaik) Paneller’den azami derecede faydalanılmıştır, bu yeterlilik ve imkanlar projeye çok büyük bir katkı sağladı.
Bu projede bana zaman ayıran, pratik ve teorik aşamalarda destek olan ve her zaman hoşgörülü davranan sayın okutmanım Dr.Mutlu BOZTEPE’ye teşekkürü borç bilirim.
Bu raporda, PV sistemlerde kurşun asit bataryaların şarj edilmesinde kullanılan regülatörlerin en düşük maliyetli ve en yüksek verimlisi olan On-Off Şarj Regülatörü anlatılacaktır. Regülatör, 12V’ luk bir batarya için tasarlanmıştır ve sabit akım/sabit gerilim yöntemi ile şarj kontrolü yapmaktadır. Bunu PIC16F877 kontrolörlü bir ölçme, kontrol devresi ve IRFZ44 MOS-FET’li bir anahtarlama devresi yapmaktadır. PIC için C dilinde yazılmış bir program kullanılmıştır.
Üzerinde yük(akım, gerilim, güç) ve batarya (SOC-State Of Charge,Şarj Durumu) ile ilgili bilgi veren bir LCD barındırır. Sadece şarj kontrolü değil aynı zamanda yük kontrolü yapar .
solar regulator blok diagram
Altı adet paralel güneş pili panelinden (OST-80 PV modül) alınan 18V’luk maksimum DC gerilim ile 12V’luk bir batarya şarj edilmektedir. On-off regülatör olarak bir güç MOSFET’i ve yük kontrolü için bir güç MOSFET’i kullanılmıştır. PIC (www.microchip.com)8 mikro denetleyicinin analog girişlerinden okunan gerilim ve akım(akım gerilim çevirici vasıtası ile) değerlerine bağlı olarak MOSFET’ler sürülmüştür. Böylece gerekli olduğu durumlarda batarya, yük ve PV panel-lerden ayrılarak yük ve batarya korunmuş ve şarj kontrolü yapılmıştır. Sistem, üzerinde bilgi verici olarak bir adet 2×16 karakter LCD bulunup, metal bir kutu içine yerleştirilmiştir.

Şema ve Çalışma Prensibi

Takip eden sayfada Proteus adlı simülasyon programında kurulup simüle edilen devre şeması görülmektedir. PV paneller yerine 20V’luk bir DC gerilim kaynağı bağlanmıştır. PV paneller, batarya ve yükün pozitif kutupları ortak bağlanmış olup, negatif kutupları seri birer MOSFET ile birleştirilmiştir. Negatif (yada toprak) tarafta ayırma yapılmasının en temel nedeni N-kanallı MOSFET kullanılmasıdır.
MOSFET’in iletime geçebilmesi için gate-source arası 12V civarında olmalı, fakat batarya-panel arası bağlı MOSFET’in source ucu en az 12V olacağı için ve panel gerilim maksimum 20V olacağı için iletime geçme koşulu sağlanamamaktadır. Bu nedenle source ucu toprak veya 0V seviyesinde olmalıdır. Böylece maliyet olarak da büyük bir kar sağlanmıştır, çünkü P-kanallı MOSFET’ler üretim zorluğu bakımından 50A gibi büyük akımlarda üretilememektedir, ayrıca yüksek akımlı olanları da çok pahalıdır.
MOSFET’ler PIC portları vasıtası ile birer opto coupler ile sürülmektedir, böylece kontrol ile güç katı birbirinden izole edilmiştir. Gate’lere paralel birer 12V’luk zener bağlanmıştır bundaki amaç yüksek gerilimde gate’lerin zarar görmesini engellemektir.
MOSFET’lere seri bağlı diyotlar ters akımları engellemek için kullanılmıştır. Yani güneş olmadığında bataryadan panellere akım akmaması için. Gerilim ölçme işi 0. analog girişten yapılmıştır. Bataryaya paralel bağlı bir gerilim bölücü ile batarya gerilimi ¼’e indirilmiş ve 5V maksimum kabul edilerek yaklaşık 5mV’luk bir çözünürlükte ölçüm yapılmıştır.
Akım ölçme ise 1. analog girişten yapılmıştır. Yüke seri bağlı bir 0,013ohm/ 15W’lık direnç üzerine düşen gerilim OPAMP ile kuvvetlendirilerek 50A’de maksimum 5V olacak şekilde PIC’e girilmiştir. Yaklaşık 5mV’luk bir çözünürlükte ölçüm yapılmıştır.
LCD, standart bir parça olduğu için şekildeki gibi bağlanmış ve çalıştırılmıştır. Dikkat edilmesi gereken en önemli nokta, kontrast ayarının yapılmış olmasıdır. Sümülasyonda kontrast potansiyometrsine ihtiyaç duymadan çalışmaktadır.
solar sarj regulator devresi

Deney ve Ölçüm Sonuçları

Önceki sayfalarda anlatılan devre şeması gerçekleştirilirken aşağıdaki sorunlar ile karşılaşıldı:
-LCD sürme büyük bir zaman kaybına neden oldu çünkü, var olan standart LCD şemalarında kontrast ucu açıkta bırakılmıştır. Bu uca +Vcc veya GND verilmesine rağmen görüntü alınamamıştır, 10K’lık bir potnsiyometre ile kontrast ayarı yapıldıktan sonra görüntü elde edilmiştir.
-Akım ölçme devresi, yük akımının 0.013ohm’luk direnç üzerinde neden olduğu gerilimi filtreleyip kuvvetlendirerek PIC’in ölçebileceği bir seviyeye getirmektedir. Bu esnada tasarımda öngörülen tek kaynaktan beslemeli OPAMP sorunlar çıkardığı için ek bir gerilim evirici devresi ile çift beslemeli bir amplifikasyon yapıldı. Ayrıca iyi bir hassasiyete sahip olmasına rağmen OPAMP offset nulling’e ihtiyaç duydu.
-PIC ve diğer devreleri beslemek için kullanılan 7805 entegresi, bataryadan beslenmektedir. Fakat saf bir DC gerilim elde edilemediği için devre kararasızlaşmaktaydı. Bunu engellemek için 7805’in çıkışına filtre kapasitesi ilave edildi
-LCD backlight özelliği kullanılmadı, çünkü yüksek akım çekmekte ve 7805’in aşırı ısınmasına neden olmaktaydı.
Devre sorunsuz olarak çalıştırıldıktan sonra kutulandı ve aşağıdaki ölçümler gerçekleştirildi. Tüm ölçümler öğlen saatlerinde (maksimum gün ışığında) ve 39ohm’luk yük bağlı iken yapılmıştır. PV paneller, OST-80 olarak bilinen, 12V(nominal) ve 19V(open circuit) gerilim değerlerine sahip panellerdir, benzer özellikteki BP 380 panelleri altyapı kısmında verilmiştir.
sarj durumu batarya akim

PIC Yazılımı

Aşağıdaki program PIC C ile yazılmış bir programdır ve Hi-Tech PIC C Compiler ile derlenmiştir. Programda geçen alt programlar standart olarak kullanılan ve ulaşılabilir programlar olduğu için burada verilmeyecektir.
  1. ********************************* 
  2. // solar şarj regülatörü 
  3.  
  4. #include  
  5. #include  
  6. #include  
  7. #include "lcd.h" 
  8. #include "delay.h" 
  9. #include "serial.h" 
  10.  
  11. // Prototypes 
  12. float ReadAdc(unsigned char channel); 
  13. void lcd_intro (void); 
  14.  
  15. void giris_olc(void); 
  16.  
  17. // Useful defines 
  18. #define LSB(x)  (unsigned char)(*(((unsigned char *)&x)+0)) 
  19. #define MSB(x)  (unsigned char)(*(((unsigned char *)&x)+1)) 
  20. #define LWORD(x)    (unsigned int)(*(((unsigned int *)&x)+0)) 
  21. #define HWORD(x)    (unsigned int)(*(((unsigned int *)&x)+1)) 
  22. #define clrwdt() asm("clrwdt") 
  23. #define PORTBIT(adr, bit)   ((unsigned)(&adr)*8+(bit)) 
  24. #define DelayUs(x)  { unsigned char _dcnt; _dcnt = x; while(--_dcnt != 0){asm("NOP");asm("NOP");} } 
  25. #define DelayMS(x)  { unsigned char _dcnt; _dcnt = x; while(--_dcnt !=0) {DelayUs(250);DelayUs(250);DelayUs(250);DelayUs(250);}} 
  26.  
  27. #define SampNum 40 
  28. static bit  CO  @ PORTBIT(PORTE, 0); 
  29. static bit  CI    @ PORTBIT(PORTE, 1); 
  30.  
  31. float giris0, giris1, giris2, giris3; 
  32. float LRV, HVD, RCV, LVD; 
  33. unsigned char buff[15]; 
  34.  
  35. main (){ 
  36. // Interrupt settings 
  37. GIE = 0;            // Disable all interrupts 
  38.  
  39. // ADC settings 
  40. ADCON1=0b10000010;  // right justified, PORTA for A/D , PORTE digital 
  41. ADCON0=0x81;        // Fosc/32, CH0, ADON 
  42.  
  43. // PORT settings 
  44. PORTA=255; 
  45. PORTB=0; 
  46. PORTC=0; 
  47. PORTD=0; 
  48. PORTE=3; 
  49. TRISA=0b11111111; 
  50. TRISB=0b00000000; 
  51. TRISC=0b00000000; 
  52. TRISD=0b00000000; 
  53. TRISE=0b00000000; 
  54. LRV=13;Load Reconnect Voltage(yük bağlama) 
  55. HVD=143/10;High Voltage Disconnect(PV ayırma) 
  56. RCV=135/10;PV Reconnect(PV bağlama) 
  57. LVD=115/10;Low Voltage Disconnect(yük ayırma) 
  58. ;Yukarıdaki değerler batarya çeşidine göre deyişen ayar noktalarıdır. 
  59.  
  60. lcd_init(); 
  61. lcd_intro(); 
  62. lcd_dispmode(4+0+0); // 4:Display on  2:cursor off  1:blink off 
  63. DelayUs(220); 
  64.  
  65. while(1) 
  66. giris0=(ReadAdc(0)*20/1024); 
  67. ftoa(giris0,buff); 
  68. lcd_clear(); 
  69. lcd_goto(0);  //1.satır 
  70. lcd_dispmode(4+0+0); // 4:Display  2:cursor  1:blink 
  71. lcd_puts("E="); 
  72. lcd_goto(0x02); 
  73. lcd_puts(buff); 
  74. lcd_goto(0x06); 
  75. lcd_puts("V"); 
  76. if (giris0<=RCV) {CO=1;} 
  77. if (giris0>=HVD) {CO=0;} 
  78. if (giris0<=LVD) {CI=0;} 
  79. if (giris0>=LRV) {CI=1;} 
  80.  
  81. giris1=(ReadAdc(1)*75/10240); 
  82. ftoa(giris1,buff); 
  83. lcd_goto(0x08); 
  84. lcd_puts("I="); 
  85. lcd_goto(0x0A); 
  86. lcd_puts(buff); 
  87. if (giris1>=30) {CI=0;} 
  88. lcd_goto(0x0E); 
  89. lcd_puts("A"); 
  90. lcd_goto(0x40); 
  91. lcd_puts("P="); 
  92. lcd_goto(0x42); 
  93. giris2=giris1*giris0; 
  94. ftoa(giris2,buff); 
  95. lcd_puts(buff); 
  96. lcd_goto(0x47); 
  97. lcd_puts("W"); 
  98. lcd_goto(0x49); 
  99. lcd_puts("SOC=%"); 
  100. lcd_goto(0x4E); 
  101. giris3=100*(giris0-LVD)/(HVD-LVD); 
  102. ftoa(giris3,buff); 
  103. lcd_puts(buff); 
  104. DelayMs(250); 
  105. DelayMs(250); 
  106. DelayMs(250); 
  107. DelayMs(250); 
  108. lcd_clear(); 
  109.  
  110. float ReadAdc(unsigned char channel){ 
  111.     unsigned int adcvalue; 
  112.     ADCON0 = (channel << 3) + 0x81;   // select channel 
  113.     DelayUs(20);                    // wait for acquasition time 
  114.     ADGO = 1; 
  115.     while(ADGO);                    // wait for conversion complete 
  116.     MSB(adcvalue)=ADRESH; 
  117.     LSB(adcvalue)=ADRESL; 
  118.     return(adcvalue); 
  119. //****************************************** 
  120.  
  121. void lcd_intro (void
  122.     lcd_clear(); 
  123.     lcd_goto(0); 
  124.     lcd_dispmode(4+0+0); // 4:Display  2:cursor  1:blink 
  125.     lcd_putsd("      SOLAR"); 
  126.     lcd_goto(0x40); 
  127.     lcd_putsd(" SARJ REGULATORU"); 
  128.     DelayMs(250); 
  129.     DelayMs(250); 
  130.     DelayMs(250); 
  131.     DelayMs(250); 
  132.     lcd_clear(); 
  133. ********************************* 
Yazılımın yaptığı işi aşağıdaki basamaklarda özetleyebiliriz:
• Ayar noktalarına bağlı olarak MOSFET’leri kontrol eder ve yük ile PV panelleri devreden ayırıp devreye alır.
• Batarya gerilimi ve yük akımını ölçer/okur.
• Yükün çektiği gücü hesaplar.
• Gerilim temelli SOC tahmini yöntemi ile SOC hesaplar.
• Ölçüm ve hesap sonuçlarını anlık olarak LCD’ye yazdırır.

Etiketler:

PIC18F4550 Deneme kartı ve devreler (pic18f2552-50)

PIC18F4550 Deneme kartı ve devreler pic18f2552 pic18f2550

PIC-18F4550 İçin basit kullanışlı bir deneme geliştirme kartı ve çeşitli uygulama devreleri bulunuyor ayrıca devrelerin Eagle ile hazırlanmış pcb şema çizimleri ve PIC C dili ile hazırlanmış yazılım (mplab, .c, .hex, .mcw, .mcp vb.) dosyalarıda verilmiş
Dosya ve detaylar: USB Project Development Using PIC18F4550 & PIC18F2550
Uygulama listesi
PIC18F4550 USB Deneme kartı
SPI Bağlantılı servo kontrol devresi (6 servo çıkış PIC18F252)
USB Kapı kontrol devresi (PIC18F4550 PIC18F252)
İzole ara birim kartı 4n25 opto kuplör mosfet röle kontrol
Step motor kontrol kartı (pic çıkış için mosfetli sürücü IRF630)
USB Bağlantılı “Rotary Encoder” (PIC18F250 fokus kontrol)
USB Bağlantılı “Windows Media Player” kontrol (ileri,geri,ses,oynat,dur)
pic usb gelistirme deneme kart 20X4 LCD Display
usb ana kontrol karti pic devre ,
usb pic Windows Media Player kontrol

Etiketler:

PIC 16F874-877 ile led göstergeli takometre devresi

PIC 16F874-877 ile led göstergeli takometre devresi

El yapımı oldukca şık led göstergeli dijital hız göstergesi tako metre. Devre pic16f877 ya da pic16f874 ile yapılabilir kaynak assembly kodları ve devre şeması verilmiş 33 adet led kullanılmış pcb hazırlanmadın direkt delikli pertinaks üzerine yerleşim yapılmış
Dosta ve detaylar: PIC-LED Takometre

led takometre pic16f874
dijital hiz gostergesi takometre










PIC-LED Takometre

Etiketler: