Elektronik Devreler Projeler Elektronik ve biraz daha fazlası İletişim - Araçlar - Dikkat - Topluluk
Elektronik / Mikrodenetleyici Projeleri/

PIC16F84 alıcı verici devresi sharp shf480 gp1u52

Sponsorlu Bağlantılar

Çok detaylı bir alıcı verici devre projesi pic16f84 ve mikro denetleyiciler hakkında bilgilerin yanı sıra Sharp SHF 480, GP 1U52 kullanımı için iyi bir örnek ayrıca assembly kullanımı kod bilgileri ve daha bir çok bilgi bulunuyor. Hazırlayan emeği geçen kişilere teşekkürler.

PIC iLE YAPILAN UZAKTAN GARAJ KAPISI KONTROLÜ

Bu devre Pıc ile yaptığımız IR uzaktan kumanda devresidir. Radyo kontrollü uzaktan kumanda devrelerinden daha avantajlıdır. Radyo kontrollü sistem her türlü radyo vericiden etkilenirken, PIC ile yapılan devrede bu tür sorunla karşılaşılmaz. Çünkü alıcı sadece kendi vericisinin verdiği komutları uygular.

Yaptığımız bu uygulama PIC ile yapılmış, 8 kanallı bir uzaktan kumanda sistemidir. Infrared (IR) uzaktan kumanda sistemleri ışık kaynağı olarak bir IR diyottan, alıcı olarakta bir adet IR fotodiyot veya transistörden yararlanılır. IR uzaktan kumanda sistemimiz bir adet verici ve bir adet alıcı devresinden oluşuri

IR verici devresinde bir adet IR ile IR spektrumunda ışıma sağlanır. IR ledin bağlı olduğu LM 555 entegresi 38-40KHz aralığında bir osilatördür. Bu osilatör vericideki PIC 16F84 tarafından modüle edilerek 38KHz modüleli kontrol sinyali elde edilir. Alımıza neden PIC ile direk sürmüyoruz 38KHz, ne gerek var gibi düşünce gelebilir. Bunun en basit açıklaması etraftaki kızıl ötesi parazit kaynaklarının karışmasını önlemek için olacaktır. Evlerde kullandığımız standart enkandesan ampuller 50KHz lik IR kaynakları olarak çalışır. Eğer biz 38KHz’lik taşıyıcı kullanmasaydik, 50KHz’lik sürekli ve güçlü bir bastırma bizim alıcımıza sinyal yollamamızı engellerdi.

Verici devresinin RB0-RB bacakları kontrol uçlarıdır. Bu uçları anahtarlar yardımıyla şase ile irtibatlarsak alıcıda irtibatladığımız bacak örneğin, vericide RB0 ise alıcıda da RB0 iletime geçer. Bıraktığımız anda alıcıya yeni bir kumanda sinyali gelene kadar ilgili bacak iletimde kalır. Kumanda sinyali giderken RA1 bacağına bağlı led yanar.

Alıcı devredeki transistörler motor sürmek için kullanılmıştır. Transistörün kollektör ucunaki diyotlar, motordan gelecek gerilim ve akımları engeller. RB&6 çıkışındaki led aracın durduğu andaki stop lambalarını oluşturur. Alıcı devresindeki LM 555 bir flip flop devresidir.

Motorun her iki yönde de hareket edebilmesi için transistörün + voltaj verdiği koldaki şasesi anahtarla iletimden kesilir.Bu devre motor üzerine yapılmalıdır.

InfraRed (IR) uzaktan kumanda sistemleri ışık kaynağı olarak bir IR Led diyottan,alıcı olarak da bir adet IR fotodiyot veya transistorden faydalanırlar. Aşağıda şemadan da görüleceği gibi IR uzaktan kumanda sistemimiz bir adet verici ve bir adet alıcı devresinden oluşur.IR verici devresinde bir adet IR Led ile IR spektrumun da ışıma sağlanır. IR led’in bağlı olduğu LM555 entegresi 38…40 Khz aralığında bir osilatördür.

Bu osilatör vericideki pic 16f 84 tarafından modüle edilerek 38 khz modüleli kontrol sinyali elde edilir. Aklınıza neden pic ile led’i direkt sürmüyoruz 38 khz,ye ne gerek var gibi bir düşünce gelebilir. Bunun en basit açıklaması etraftaki kızılötesi parazit kaynaklarının karışmasını önlemek için olacaktır. Evlerde kullandığımız standard enkandesan ampuller 50 Hzlik IR kaynakları olarak çalışırlar…Eğer biz 38 Khzlik taşıyıcıyı kullanmasaydık 50 Hzlik sürekli ve güçlü bir bastırma bizim alıcıya sinyal yollamamızı engellerdi.

IR alıcı devresinde kullandığımız SHARP firmasının GP1U52X IR alıcı modülü, tv lerin üzerinde bulunan ve IR el kumandasından gelen sinyalleri algılayıp bunları 38khzlik taşıyıcıdan süzerek saf kontrol datasını bırakan bir ünitedir. Kısaca tek bir fototransistörden ibaraet değildir. Modül içinde bir adet IR fototransistör,38khz lik bir band-geçiren filtre, kuvvetlendirici, sinyal şekillendirici bulunur. Çıkışı TTL seviyesinde kontrol sinyalidir.

Verici Devresi (pic16f84, shf480, lm555)

verici devresi

Alıcı Devresi (pic16f84, gp1u52)

Bu modül sizi korkutmasın, bulmak zor değil çünkü her IR kumandalı tv üzerinde böyle bir modül bulunmak zorundadır.Belki aynı marka veya tip bulamazsınız ama bacak bağlantılarını öğrenebildiğiniz sürece herhangi birini kullanabilirsiniz. Telefunken firmasının TK19 modülü bir ara SHARP’la birlikte piyasada sıkça bulunuyordu.Verici devresinin RB0..RB7 bacakları kontrol uçlarıdır. Bu uçları anahtarlar yardımıyla şase ile irtibatlarsanız alıcıda irtibatladığınız bacak örneğin vericide RB0 ise alıcıdada RB0 iletime geçer. Bıraktığınız anda alıcıya yeni bir kumanda sinyali gelene kadar ilgili bacak iletimde kalır. Kumanda sinyali giderken RA1 bacağına bağlı led yanar.

Devrenin kontrolu öncelikle verici ile başlanarak yapılmalıdır. Veircide pic’i yerine takmayın ve LM555 entegresinin 4 nolu bacağını +5 volt ile birleştirin. Bu durumda osilatör sürekli 38 khz civarında bir sinyal üretir. Alıcıya da pic’i takmadan +5v verin.bir voltmetre ile alıcı üzerindeki sharp modülünün 1 nolu bacağı ile şase arasını okuyun. Alıcı ve verici birbirini gördüğü konumdayken vericiye voltaj verdiğiniz de alıcıdaki voltmetre ile 0 yani şase , vericiye voltaj verilmediği zaman ise +5 volt okumanız gerekir.

Eğer bu şekilde bir kontrol sonucu voltmetrede bir değişiklik olmuyor ve voltmetre hep +5voltta kalıyorsa vericiye voltaj verip P1 potansiyometresiyle oynayarak alıcıdaki voltmetrede 0 volt yani şase görmeye çalışın. Şaseyi gördüğünüz anda sistem karşılıklı haberleşebiliyor demektir. Şimdi devrelerden voltajı kesin ve picleri yerine takın.Uzaktan kumanda sisteminiz hazır. LM555 entegresi üzerinde yaptığımız 4 nolu bacak ile +5 volt arası kısa devreyi kaldırmayı unutmayın.

Pic rahatlıkla 38 KHz’lik sinyali üretir ama o zaman tek tip alıcı modülü hatta daha iyisi elimizdeki alıcı modülü için yazılım da frekans optimizasyonu yapmak gerekir.Piyasadaki modüller az da olsa 38 khz civarında dolaşan farklı osilasyonlara tepki gösteriyorlar.
Dışarıdan ayarlanabilir bir 38 khz osilatörü kullanmak çok daha esnek bir yapı ortaya koyuyor.. Böylece 38khz. 40 Khz arası çalışan tüm IR modüllerini kullanabilirsiniz.Pic bir cmos entegre olduğundan vericideki RB0…RB7 kontrol bacaklarını boşta bırakırsak hiçbirşeyi kontrol edemeyiz.

PROGRAMLAMA

1- #define : Uygulamalarımızda #define komutunu dahaçok port bitlerine değişken isimler atamada kullanacağız. Bu şekilde yazdığımız programlar da anlaşılır bir hal alacaktır.

Örnek:


#define buton    porta,3    ; Bu komutla -PortA,3- yazacağımız yerlerde -buton- yazmamızda aynı işi görecektir

Böylelikle programımızı kontrol ederken -PortA,3- ün ne olduğunu araştırmamıza gerek kalmayacak ve bunun -buton- olduğunu anlayacağız.

2- clrf : Sonrasına yazılan portu tamamen sıfırlar.

Örnek:


clrf    Porta    ; A Portunu sıfırlar. Genellikle programın başına yazılmasında  ;fayda vardır.

3- bsf : Portların çıkışına mantık 1 çıkışı vermeyi sağlar.

Örnek:


 bsf    Porta,3    ; A portunun 3. bitini mantık 1 yükler.

4- bcf : Portların çıkışlarını mantık 0 (sıfır) yapar.

Örnek:


bcf    Portb,5     ; B portunun 5. bitini 0 (sıfır) yapar.

5- btfss : Program akışında portun belirtilen bitinin mantık 1 olup olmadığını kontrol etmekte kullanılır.

Örnek:

 

main    btfss     Porta,2    ; A portunun 2. biti mantık '1' ise sonraki komutu ;atla.

goto     main        ; Porta,2 mantık '0' ise -main- etiketli bölüme geri  ;dön.

bsf       Portb,6     ; B portunun 6. bitini çıkış mantık 1 yap.

.....      ........

Bu komut setinde A portu mantık 1 olana kadar sürekli 1. ve 2. satır arasında döngüye girer. A portunun 2. biti mantık 1 olduğunda, program 2. satırı uygulamayıp daha sonraki satırı işlemeye başlayacaktır.

6- btfsc : btfss (5. komut) ile aynı özellikte, ancak mantık 0 (sıfır) seviyesini kontrol eder.

7- goto : Programda istenen yere gidilip işlemlerin oradan itibaren yürütülmesini sağlar.

Örnek :


main   bsf     Portb,4   ; B portunun 4. bitini 1 yap.

.....    ......      ; Buraya bir geciktirme rutini (Bkz. 10. madde)                                              ;yerleştirilebilir.

bcf     Portb,4  ; B portunun 4. bitini 0 (sıfır) yap

goto   main      ; -main- etiketli satıra gider ve işlem oradan sonra ;tekrar devam eder.

8- equ : Bu komut PortA, PortB, ve yazmaçların adreslerinin atanmasını sağlar.

Örnek : PortA nın PIC16F84 teki adresi 05 tir.


              porta   equ    05   ;Bu komutla PortA nın PIC içerisinde bulunduğu adresin                                                  ;05 olduğunu tanımlamış olduk.

               portb   equ    06   ; Bu komutlada PortB nin adresini tanımlamış olduk.

                     .......     ....     ...

9- movlw-monwf : Bu komutlarla PIC içerisinde bulunan -W- yazmacına (Değişkenine) değer atanır. Programın ilerleyen aşamalarında bu değer okunup portlara atanabilir. Gerekli görüldüğü yerlerde bu -W- yazmacının değeri arttırılıp-eksiltilerek değişik değerlerin portlara atanmasınıda sağlarlar.

Örnek:


             movlw    80H   ; W yazmacına 80H değeri yüklenir.

             movwf    trisb  ; W yazmacındaki 80H değeri PortB ye yüklenmiş oldu.



10- Geciktirme rutinleri : Geciktirme rutinleri; programın işleyişi esnasında, herhang ibir işlemden sonra belli bir süre beklemesini istediğimiz zamanlarda kullanmamız gereken zamanlayıcı alt programlarıdır.

Örnek: Bir yürüyen ışık devresinde, her ledin yanmasından sonraki satıra geciktirme rutini yerleştirmezsek ledlerin hepsini aynı anda yanıyormuş gibi görürüz. Bunu önlemek için ledleri yakan her program satırından sonra bir geciktirme rutini eklememiz gerekir. Aşağıda basit bir örnek göreceksiniz. Butür alt rutinler genellikle programın sonuna yazılır.


   ........        ......

   ........       ...... 

   delay0     equ       0DH ; delay1 yazmacını 0DH adresinde tanımladık.

   delay1      equ      0EH  ; delay2 yazmacı 0EH adresinde.

   delay2     equ       0FH  ; delay3 yazmacı 0FH adresinde.

   .........     .....        .....

   .........     .....        .....  ; Ana programın işlediği program satırları.

   bsf        portb,1  ; Portb nin 1. bitini mantık '1' yap.

   call        DELAY    ; DELAY etiketli alt rutini çağır.

   bcf        portb,1   ; Portb nin 1. bitini mantık '0' yap.

   bsf        portb,2   ; Portb nin 2. bitini '1' yap.

   call        DELAY     ; DELAY etiketli alt rutini çağır.

   bcf        portb,2   ; portb nin 2. bitini '0' yap.

   .....       .........     ; Program bu şekilde devam edebilir.

   DELAY     movlw    .4          ; W yazmacına .4 değeri atandı.

   movwf    delay0   ; W yazmacındaki .4 değeri delay0     ;yazmacına atandı.



   D0          movlw    .200       ; W yazmacına .200 değeri atandı.

   movwf    delay1  ; W yazmacındaki .200 değeri delay1    ;yazmacına atandı.

   D1          movlw    .200      ; W yazmacına .200 değeri atandı.

   movwf    delay2  ; W yazmacındaki .200 değeri delay2  ;yazmacına atandı.

   D2          decfsz     delay2,F  ; delay2 değerini azalt. '0' olduysa sonraki ;komutu atla.

   goto        D2           ; D2 etiketli satıra geri dön.

   decfsz     delay1,F  ; delay1 değerini  azalt '0' olduysa  ;sonraki komutu atla.

   goto        D1           ; D1 etiketli satıra git.

   decfsz     delay0     ; delay0 değerini azalt '0' olduysa sonraki  ;komutu atla.

   goto        D0           ; D0 etiketli satıra git.

   retlw       00            ; rutinin çağrıldığı satırın alt satırına  ;dön. 

Bu program grubunda önce portb nin 2. biti çıkışı ‘1’ oluyor, ardından -call DELAY- komutuyla geciktirme rutini çağrılıp çalıştırılıyor. DELAY rutininde 3 ayrı döngü kurulmuştur. Her döngüde -delayX- değerleri azaltılıp ‘0’ değerine kadar düşmesi sağlanmaktadır. -delayX- değerlerinin hepsi ‘0’ değerine ulaştığında program -retlw 00- komutuyla -call DELAY- komutunun altındaki satıra geri dönüp işlemlerin o satırdan itibaren işlemesini sağlamaktadır.

7805 İLE YAPILMIŞ BESLEME DEVRESİ
XT (KRİSTAL-KONDANSATÖR) OSİLATÖR DEVRESİ
YÜKSEK GÜÇLERİN PIC’ TEN YALITILMASI
PIC MİKROKONTROLÖRLERİNİN ÖZELLİKLERİ
PIC16C84/PIC16F84 ÜZERİNE BİR TEZ ÇALIŞMASI
PIC’İN KULLANILMA NEDENİ

PORTLARIN BAĞLANTI ŞEKİLLERİ

Yukarıda özetler verildi projenin tamamı:pic16f84-shf480-gp1u52-alici-verici.rar alternatif link: pic16f84-alici-verici-devresi-sharp-shf480-gp1u52

  • Hasan

    Sonuç olarak kaç mhz üretiyor ?

  • umut

    hocam devrenin hex dosyası yok eğer sizde varsa onuda paylaşabilrmisiniz…..
    şimdiden teşekkürler