9 Şubat 2011 Çarşamba

Max232 Kullanarak basit seri iletisim

Ozet:
Bu yazida PIC16F877A'nin Max232 entegresi kullanilarak bir PC ile iletisime gecirebilen donanim ve yazilim orneklenecektir.Kurulan iletisimde PC, PIC'e A karakteri gonderdiginde PORTB:7'ye bagli bulunan LED yakilacaktir. Bunun disinda bir karakter gonderildiginde PORTB:2'ye bagli bulunan LED yakilacaktir.

On Gereksinim:
Basit bir LED devresi icin buraya bakiniz.
L78XX serisi kullanimi icin buraya bakiniz.
MPLAB IDE: Programin yazilmasi/hata ayiklanmasi icin gerekli ortamdir.
PIC16F877A programlayicisi: Yazilan programin islemciye aktarilmasi icin gereklidir.

Kabuller:
  • PIC16F877A programlamaya ve kullanima hazirdir.
  • 4Mhz titresimli saat kullanilmistir
  • PortB:7 ve PortB:2 bacaklarina LED devreleri baglanmistir.
  • PC tarafinda Seri iletisim icin gerekli programlar vardir.
    • PC tarafinda gonderme: Seri porta istenilen karakterleri yazan bir program vardir. Benim ornegimde seri porta her iki saniyede bir A ve daha sonra baska bir karakteri yazan ve boylece sonsuza kadar devam eden bir basit program vardir.
    • PC tarafinda dinleme: PIC'in gonderdigi karakterleri algilayacak bir program vardir. Windows ortamlari icin windows ile birlikte gelen hyperterminal kullanilabilir. Linux icinse putty kullanilabilir. Hyperterminal icin COM baglantisinin ozellikleri asagidaki gibidir:


Gereken Malzemele:
Adet Eleman Aciklama
1 Max232N Diger Max232 entegreleri de olabilir. Ancak bu durumda kullanilan kapasitor degerleri degisebilir. Bu yuzden uretici firmanin sagladigi datasheet'ten baglanti semasini kotrol etmek gerekir
2 4N35 Optoisolator
1 L7805 voltaj Regulatoru
5 1uF kapasitor
2 Kirmizi LED
2 330 Ohm direnc
4 AA pil LEDler icin kullanilacak
1 9V pil PIC16F877A icin kullanilacak
1 Seri iletisim kablosu 9 pinli. Bilgisayarinizin seri portuna uyumlu olmasi gerekiyor

Neden Max232?
Seri iletisimde +/- 15V degerleri kullaniliyor. Bu, TTL devrelerinin anladigi 5V diliminin uzerinde oldugu icin Max232 adli cevriciye ihitiyac duyulur. Bu devre elemani, TTL dunyasindaki digital sinyalleri seri iletisim dunyasindaki digital sinyallere cevirir.


Max232 baglantilari asagidaki sekildeki gibi yapilir:



Burada dikkat edilmesi gerekenleri soyle siralayabilirim:
  • kapasitor degerleri ve polarizasyonlari onemli. Eger kullandiginiz MAX-232 turevi, benim kullandigim Texas Instruments tarafindan uretilen MAX-232N'den farkli ise, ureticinin yayinladigi data sheet'e basvurun.
  • Sekildeki baglanti bacaklari numaralarla verilmistir. Bu namaralar, bacaklarin fiziksel yerlesiminden farklidir. Yaniltici olmamasi icin farkinda olunmalidir
  • Sekilde verilen 9 pinli seri baglanti elemani semasi, bilgisayarinizdaki seri port icindir. Eger siz de benim gibi bir seri port baglanti kablosu kullanacaksaniz, kablonun pin eslestirmesini degistirdigini unutmayin. Buyuk bir olasilikla cross cable denen kablo alacaksiniz. Bu durumda 5 ayni kalacak, ama 2 ve 3 nolu pinler yer degistirmis olacaktir. Test edin, ve ona gore kullanin.
Ayrica buna ek olarak, PORTB:7 ve PORTB:2 bacaklarina LED devreleri baglanir. Bu devrelerin kurulum sekli icin suraya bakiniz .


Baglantilar yapildikan sonra PIC16F877A'da calistirilacak olan program asagidaki gibidir:


    list    p=16F877A      
    include P16F877A.inc
    __config     _XT_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_OFF & _CP_OFF

; SimpleRs232ReaderWriter.asm
; Alp Tunc - 2011. Tum Haklari saklidir.
; Bu program, kesme (interrupt) kullanmadan RS232 iletisimi yapar.
;    Yazma: Rs232'ye A karakteri gonderir.
;          Test icin hyperterminal'den ilgili COM portunda 9600, no Parity, 1 stop secilmelidir.
;    Okuma: RS232'den gelen verileri okur.
;          Eger gonderilen A karakteri ise PORTB:7'ye bagli LEDi yakar. Baska bir karakter ise
;          PORTB:2'ye bagli LEDi yakar
;


    #define CharA    0x41

    buffer    equ    0x20            ; Okunan verinin saklandigi gecici alan

        org    0x0000

        banksel TRISB
        clrf    TRISB            ; PORTB'yi cikis olarak tanimla

Initialize  
        clrf    PORTB  
        call    initSerialPort        ; Seriport baslangic ayarlarini yap
Loop  
        call    ReadCharFromSerial    ; Seri porttan okumak icin
        ;call    SendCharToSerial    ; Seri porta yazmak icin
        goto    Loop


initSerialPort
        banksel SPBRG
        movlw   d'25'            ; 9600 baud @ 4 Mhz Fosc +0.17 err
        movwf   SPBRG
        movlw   b'00100100'        ;
        movwf   TXSTA            ; brgh =1 ve Async Transmission
        banksel RCSTA
        movlw   b'10010000'
        movwf   RCSTA            ; Async iletisimi ac
        return

SendCharToSerial    
        btfss   PIR1,    TXIF        ; Gonderme tamponu bos mu?
        goto    SendCharToSerial    ; degilse, bosalana kadar bekle
        movlw    CharA            
        movwf   TXREG                ; 'A' karakterini gonder
        return

ReadCharFromSerial 
        btfss   PIR1,    RCIF        ; Alma tamponu bos mu ?
        goto    ReadCharFromSerial    ; degilse, bosalana kadar bekle
        movf    RCREG,    W        
        movwf    buffer            ; Okunan karakteri buffer alanina yaz
        call     process            ; gelen karakteri isle
        return


process      
        movlw    CharA          
        subwf    buffer, W        ; Gelen Karakter 'A' mi?
        btfsc    STATUS, C
        btfss    STATUS, Z
        goto     notEqual        ; 'A' Degil
        goto    equal            ; 'A' karakteri
returnPoint
        return


notEqual
        movlw    b'00000010'        ; set PORTB:2
        movwf     PORTB            ; PORTB:2 ye bagli LEDi yak digerlerini sondur
        goto    returnPoint
equal      
        movlw    b'10000000'        ; set PORTB:7
        movwf    PORTB            ; PORTB:7'e bagli LEDi yak digerlerini sondur
        goto     returnPoint
          
        end

Bu Program herhangi bir kesme (Interrupt) kullanmamaktadir. Yukaridaki haliyle sadece alici durumundadir.
        call    ReadCharFromSerial    ; Seri porttan okumak icin
satiri yorum satiri yapilip, asagidaki  satir aktif hale getirilirse sadece gonderici moduna gecer.
        ;call    SendCharToSerial    ; Seri porta yazmak icin


Eger Tum baglantilar dogru olarak yapildiysa:

Alici modu: Devre asagidaki videoda oldugu gibi calisir:

Videoda baslangicinda arkadaki monitorden de gorulebilecegi gibi, PC tarafinda seri porta 2 sn araliklarla A ve ( karakterini yazan program calistirilir. PIC, A karakterini aldiginda PORTB:2'deki LEDi sondurup PORTB:7 deki LEDi yakar. A disinda bir karakter gordugunde, bu ornekte ( karakteridir, PORTB:7 yi sondurup, PORTB:2'deki LEDi yakar.


Gonderici modu:  Hyperterminal (ya da benzeri) bir program kullandiginda, asagidaki gibi bir davranis gozlemlenecektir:

17 Aralık 2010 Cuma

Optoisolator kullanimi

Ozet

Bu yazida 4NXX optoisolator kullanarak LED yakabilen bir devre tasarlanacaktir.

On Gereksinim
Basit bir LED devresi icin buraya bakiniz.
L78XX serisi kullanimi icin buraya bakiniz

Gereken Mazlemeler
4N35 optoisolator x 1
L7805 voltaj regulatoru x 1
Normal Kirmizi LED x1
330 Ohm Direnc x 1
AA (1.5V) pil x 4 (6 volt'luk pil sistemi icin)

6F22BE (9V) pil x 1


Optoisolator Hakkinda Bilgi

Optoisolatorler, birbirinden tamami ile ayri iki devreyi, optik olarak baglayip calistiran devre elemanlaridir. 1.devre, isolatorun 1 ve 2 numarali bacaklarina baglanir. 2. devre ise isloatorun 4 ve 5. bacaklarina baglanir. 1. devre calistirildiginda (1. bacaktan +5 volt verilildiginde), optoisolator icindeki LED yanar, bunu algilayan transistor 4. ve 5. bacaklar arasindaki baglantiya izin vererek 2. devrenin calismasina neden olur.

4NXX serisi optoisolatorler oldukca basit bir kullanima sahiptir. Elinizdeki optoisolatorun cinsini bu katalogdan bulup, bacaklarini, giris, cikis voltaj araliklari vs hakkinda detayli bilgi alabilirsiniz.


Devrenin kurulmasi

NOT: Tum devre tamamlanincaya kadar pilleri baglamayiniz.

Oncelikle, asagidaki resimde, 1.Devre olarak gosterilen bolum kurulur. Bu devrenin kurulmasi buraya bakiniz.


Bu devre tamamlaninca, +5V, optoisolator'un 1. bacagina, 9V'luk pilin - ucu da, optoisolatorun 2. bacagina resimdeki gibi baglanir. 


Daha sonra resimde 2.Devre olarak verilen duzenek kurulur. Bu devrenin kurulmasi icin ise buraya bakiniz.LEDi yakmak icin kullanilacak olan 6V, optoisolatorun 5 numarali bacagina, baglanir. 2.Devre ise (direnc ve LED'den olusan duzenek), optoisolator'un 4. bacagina baglanir.


Eger tum baglantilar dogru yapildiysa, anahtar kapatildiginda, optoisolator icinde bulunan LED yanar ve buna duyarli olan transistor 4 ve 5. bacak arasindaki baglantiyi kapatirir. Boylece optoisolatorun 4 ve 5. bacaklarina bagli bulunan 2. Devredeki LED yanar.

L78XX serisi ile Pozitif voltaj duzenleme

Ozet
Bu yazida L78XX serisi pozitif voltaj regulatoru kullanimi anlatilacaktir.

Gereken Malzemeler
L7805 x 1
9v pil x 1
Avometre

Devrenin Kurulmasi
Aslinda L7800 serisinin kullanimi oldukca basittir. Bu seri farkli sekillerde de uretilseler, toplamda 3 tane bacaklari vardir. Bu katalogdan yararlanarak elinizdeki regulatorun cinsini, bacaklarinin yerlesimini ogrenebilirsiniz, giris ve cikis voltaj degerlerini vs ogrenebilirsiniz.

Ben bu ornekte L7805 regulatoru kullanacagim. Devre elemanini karsima aldigimda, en soldaki bacaga giris kaynaginin + ucu, oratadakine giris voltajin - ucu baglanirsa en sagdaki bacaktan +5V cikti elde edilir.

Asagidaki devrede:
  • Kirmizi kablo, 9V'luk pilin + ucuna baglidir. 
  • Siyah kablo ayni pilin - ucuna baglidir. Siyah kablo ayni zamanda breadboard uzerinde - (ya da toprak) hattina  baglanmistir.
  • +9V baglantisi bir anahtar uzerinden gecirilerek L7807'in soldaki bacagina baglanmistir.
  • L7805'in orta bacagi (toprak), beyaz baglanti ile 9V pilin topragina (- ucuna) baglanmistir.
  • L7805'in sagdaki bacagi,yesil baglanti kablosu ile breadboard'un + hattina verilmistir. Buradan +5V cikar.


Devrenin calistigini anlamak icin tum baglantilari yaptiktan sonra avometre ile breadboard'un + (kirmizi) hatti ile - (mavi) hatti olculur. +5V cikmasi gerekir.

16 Aralık 2010 Perşembe

Basit LED devresi

Ozet
Bu yazida LED'ler hakkinda pratik bilgiler verilecek ve LED'in kullanilacagi en basit devre ornek olarak tasarlanacaktir.

Gereken malzemeler
Kirmizi LED x 1
Direnc 330 Ohm x 1
AA pil x 4


LED (Light emitting diode) farkli renklerde karsimiza cikan, uygun elektrik saglandiginda isik sacan elektronik devre elemanlaridir.

Genel LED Ozellikleri
LED'ler isimlerinden de anlasilacagi gibi diot karaktersitiginde olup, akimi sadece bir yonde gecirirler. LED'lerin icinde akim kontrolu olmadigi icin, ya da kendi baslarina direnc olusturmadiklari icin, eger akim kontrolu LED'in yaninda bir direnc kullanilarak yapilmazsa buyuk bir ihtimalle LED fazla akim cekeceginden yanacaktir. Bu yuzden devrede dirence ihtiyacimiz olacak.

Her ne kadar LED direnc gostermese de voltajda bir dususe neden olur. Bu kullanilan LED'in rengine gore degisir. Ayrica her LEDi calistirabilmek icin gerekli akim siddeti de LED cinsine gore degisir. Asagidaki tabloda bunu ozetmeye calistim:

RENK LED'in voltaj durume degeri(volt) En az Destek Voltaji(volt) Akim siddeti (miliAmper)
Parlak Kirmizi 1.9 3 15
Parlak Olmayan Kirmizi 1.7 3 15
Turuncu/Sari 2 3 15
Yesil 2.1 3 15
Parlak Beyaz, parlak sarimsi olmayan yesil ya da mavi LED'lerin cogunlugu 3.4 4.5 12
Parlak Mavi (430 nM bright Blue, everbright vs) 4.6 6 10


Devrede kullanacagimiz direncin degerini asagidaki formulle hesapliyoruz:

R~= ( 1000 * (Kaynak voltaj - LED'in voltaj dusurme degeri) ) / akim siddeti

Ornek
9 voltluk bir pil ile parlak kirmizi bir LEDi calistirmak istersek

R~= (1000 * (9 - 1.9))/15 = 473 Ohm'luk bir dirence ihtiyacimiz var demektir

Ornek 2

6 Voltluk bir pil sistemi ile normal bir kirmizi LED'i yakmak icin gerek duyacagimiz direnc ise

R ~= (1000* (6 - 1.7))/15 = 286 Ohm'dur

Bu benim kuracagim devredeki direncin ideal degeridir. Ancak elimde bu degere en yakin direnc olarak 330 Ohm'luk bir direnc vardi ve onu kullandim. Bu direnc, Ohm kanuna gore akim siddetini biraz daha dusurecegi icin LED olmasi gerekenden cok az daha parlak yanacaktir. Ama isimizi gorur.

Not: Ingilizcesi olan arkadaslar icin su sitedeki hesaplayici isinizi kolaylastirabilir:
LED hesaplayicisi

Devrenin Kurulmasi
Devreyi kurarken LED'in nasil baglanacagina dikkat etmek gerekiyor. LED'in uzun bacagi +'ya baglanir. Eger LED'in bacaklari bir nedenle orjinal degillerse (kesilmislerse vs), LED'in bacaklari yukarida olacak sekilde LED'e tepeden dik olarak bakin. Bacaklarinin bir tanesine yakin bir yerde LED'in saydam tarafi duz bir hat olarak gorulur. Bu kisa bacagi ya da -'ye baglanmasi gereken bacagi gosterir.

Direncin devreye baglanirken yon sorunu yoktur. O yuzden direncin ters takilmasi gibi bir durum soz konusu degildir.

Her ne kadar bu ornek icin anlamli olmasa da direnci, LED'in +'bacagindan once devreye baglamak yararlidir. Boylece LED'e gelen akimi kontrol altina almis, LED'i korumus oluruz. Bu devrede cok anlamli degil, cunku sadece 2 devre elemani var ve akim oyle ya da boyle kontrol altinda. Ancak daha karisik devrelere gecmeden bu aliskanligi kazanmak icin burada oyle yaptim.

Asagidaki fotografta hazirladigim devre gorunuyor.+6V yazilan yere 4 AA pilin seri baglanmasindan olusan sistemin+ tarafini, toprak olarak gosterilen noktaya da ayni sistemin - tarafini baglarsaniz LED yanar.