1000 kişiden bir kişi için ! devam.... 320volt blog

Elektronik Devreler Projeler » Microchip PIC devreleri bilgiler, Yazar Projeleri Makaleler Elektronik Genel »

PIC16F84 ile Havada Yazı

PIC16F84 ile Havada Yazı

Tübitak Bilim ve Teknik dergisinde Kendimiz Yapalım köşesinde yayınlanan LED’lerle Havaya Yazı Yazma devresinin gerçekleştirilmesi. Aşağıda projenin sitesinden alıntı yapılmıştır kaynak yazı http://www.biltek.tubitak.gov.tr/gelisim/elektronik/9.htm

pic16f84_havada_yazi_2 pic16f84_havada_yazi

LED’lerle Havaya Yazı Yazma

Günümüzde karmaşık işlevlere sahip elektronik sistemlerin çoğu, mikro denetleyiciler kullanılarak tasarlanıyor. Kolayca programlanabilmeleri, fiyatlarının ucuz olması ve harici donanım gereksinimlerinin az olması nedeniyle mikro denetleyiciler elektronik alanında önemli bir yere sahipler. Örneğin, Microchip firması tarafından üretilen PIC serisi mikro denetleyiciler, piyasada en çok tercih edilen programlanabilir entegrelerin başında geliyor. Bu entegreler 8, 18, 28 veya 40 bacaklı olarak pek çok tipte üretiliyor.

Bunlardan 16F8X serisi PIC mikro denetleyiciler, 18 bacaklı olup flash bellek teknolojisine sahip. Bu teknoloji sayesinde entegreye yüklenen program istendiği zaman kolaylıkla silinebiliyor ve entegre yeniden programlanabiliyor. 13 adet giriş-çıkış portu (Port A ve Port B) çoğu uygulama için yeterli sayıda. Entegreyi programlamak için assembly dilinin yanı sıra BASIC veya C gibi yüksek seviye diller de kullanılabiliyor. Piyasada PIC mikro denetleyiciler ile ilgili pek çok kitap bulunuyor. Ayrıntılı bilgiler bu kitaplardan öğrenilebilir [1].

Bu yazıda, PIC16F84A adlı mikro denetleyici ve 8 adet LED kullanarak havaya yazı yazan bir elektronik devrenin yapımı anlatılıyor. Bu devre sayesinde 8-10 karakterden oluşan herhangi bir metin havada oluşturulabiliyor.

Devre Şeması

Şekil 1’deki devre şemasından görüldüğü gibi PIC16F84A mikro denetleyicisinin Port B çıkışlarına 8 adet LED ve dirençler bağlı. 4MHz’lik kristal ve 22pF’lık iki kondansatörden oluşan osilatör devresi PIC’in çalışması için gerekli saat darbelerini üretiyor. Devrenin beslemesi ise 9V’luk bir pil ve 5V’luk bir regülatör devresi ile sağlanıyor.

Gerekli malzemeler

  • 1 adet PIC16F84A mikro denetleyici
  • 1 adet LM7805 gerilim regülatörü
  • 1 adet 4MHz kristal
  • 1 adet buton
  • 1 adet anahtar
  • 1 adet 100nF kondansatör
  • 2 adet 22pF kondansatör
  • 1 adet 4.7k direnç
  • 1 adet 1N4148 diyot
  • 8 adet parlak mavi LED
  • 8 adet 100 ohm direnç
  • 1 adet 9V pil ve pil başlığı
  • Bakır plaket veya delikli pertinaks

Çalışma mantığı

Devrenin çalışması göz yanılması prensibine dayanıyor. Bilindiği gibi göz, periyodik olarak tekrarlanan olayları durağanmış gibi algılar ve tekrarlar arasındaki süre yeteri kadar kısa ise kırpışma etkisini fark edemez. Örneğin 1 saniyede 50 kez yanıp sönen bir lamba sürekli yanıyormuş izlenimi verir. Aynı şekilde televizyon sistemlerinde resim tekrarlama frekansı yeteri kadar yüksek seçildiğinden resmin hareketi sürekli olarak algılanır. Gözün bu yanılma özelliği, birkaç adet LED ile havaya yazı yazma imkanı da sağlar.

Şekil 1’de görülen elektronik devre oldukça basit bir donanıma sahip olmasına rağmen devrenin çalışabilmesi için PIC mikro denetleyiciye bir program yüklenmesi gerekiyor. Yüklenen programın yaptığı iş, havada yazdırılacak karakterlere göre 8 adet LED’i yakıp söndürmek ve zamanlamayı ayarlamaktan ibaret. Program doğru olarak PIC’e yüklendikten sonra LED’ler hızlı bir şekilde sağa-sola hareket ettirildiğinde yazının havada oluşması sağlanıyor. Kısaca, sistemin çalışma mantığı, PIC’den gönderilen 8 bitlik sütun bilgisi ile hangi anda hangi LED’lerin yanacağını ayarlamak şeklinde özetlenebilir.

Program yazmaya geçmeden önce havada yazılacak harflere (veya karakterlere) göre sütun bilgilerinin elde edilmesi gerekiyor. Bunun için kağıt üstünde birkaç çizim yapmak lazım. Örneğin şekil 2’de, A, B, C harflerini oluşturmak için 8 LED’den hangilerinin yanması gerektiği zaman adımına bağlı olarak gösteriliyor.

abc led display

Şekilden görüldüğü gibi her bir harf, 8 satır ve 5 sütundan oluşuyor. Harfler arasında da 1 boş sütun bulunuyor. Bu mantığa göre havaya 8 harften oluşan bir yazı yazmak için toplam 48 adet sütun bilgisi gerekli. Yani PIC mikro denetleyicinin 48 adet sütun bilgisini uygun zaman

havasa yazi isis devre semasi

aralıklarıyla porttan gönderecek şekilde programlanması gerekiyor.

Sütun bilgilerinin nasıl elde edildiği şekil 3’de ayrıntılı olarak görülüyor. Örneğin A harfine ait sütun bilgilerini elde etmek için yapılması gereken işlem, sönük haldeki LED’lerin yerine 0 rakamını, yanan LED’lerin yerine de 1 rakamını yazmaktan ibaret. Bu durumda her bir sütun için 0 ve 1’lerden oluşan 8 bitlik bir sayı elde edilir.

Bu sayı 16’lık (hexadesimal) tabanda yazıldığında sütun bilgileri elde edilmiş olur. Örneğin A harfi için ilk sütundaki 8 bitlik 11111100 sayısının 16’lık taban karşılığı 0xFC’dir. Aynı şekilde son sütundaki 00000000 sayısının 16’lık taban karşılığı da 0×00’dır. Burada 0x sembolü sayının 16’lık tabanda olduğunu gösterir. Bu şekilde bütün harfler için sütun bilgileri kolaylıkla elde edilebilir.

0x00 led harf

Yapım aşamaları

Havaya yazı yazma devresi her ne kadar basit olsa da, devrede PIC mikro denetleyici bulunması işlem sayısını arttırıyor. Devrenin yapım aşamaları sırasıyla aşağıdaki gibidir.

  • 1- PIC’e yüklenecek programı yazma (PIC C ile)
  • 2- Hex uzantılı dosyayı oluşturma
  • 3- Programlama kartı yardımıyla hex dosyayı PIC’e yükleme
  • 4- Devre şemasına göre baskı devre kartını yapma
  • 5- PIC’i karta yerleştirip devreyi çalıştırma

PIC C Programı

C dilini kullanarak program yazmak assembly diline göre oldukça basit olduğundan C dili daha çok tercih ediliyor. Günümüzde PIC mikro denetleyiciler için yazılmış pek çok C derleyicisi bulunuyor. Bunlardan Hi-Tech firmasının ürettiği “PIC C Lite” adlı derleyici http://www.htsoft.com internet sayfasından ücretsiz olarak indirilebiliyor. Demo sürümünün bazı kısıtlamaları olsa da üst düzey programlar yazmak için bile yeterli özelliklere sahip. PIC C derleyicisinin kullanımı hakkında ayrıntılı bilgiler konuyla ilgili kitaplardan edinilebilir.

#include

#include 

main(void)
{

unsigned int i;
unsigned char dizi[]={
0xFF,0x02,0x0C,0x02,0xFF,0x00, // M
0xFF,0x89,0x89,0x89,0x81,0x00, // E
0xFF,0x11,0x31,0x51,0x8E,0x00, // R
0xFF,0x10,0x10,0x10,0xFF,0x00, // H
0xFC,0x12,0x11,0x12,0xFC,0x00, // A
0xFF,0x89,0x89,0x89,0x76,0x00, // B
0xFC,0x12,0x11,0x12,0xFC,0x00, // A
0x00,0x00,0x00,0x00,0x00,0x00  // Bosluk
};

TRISB=0;

for(;;){
	for(i=0;i<48;i++){
	PORTB=dizi[i];
	DelayMs(1);  // 1ms bekle
	}
	DelayMs(48); // 48ms bekle
}
}

Yazılan C programından görüldüğü gibi programın başında 48 elemanlı bir dizi tanımlanıp gerekli sütun bilgileri yazılıyor. Örneğin bu programda MERHABA kelimesi için gerekli sütun bilgileri bulunuyor. Farklı bir kelime için bu bilgileri değiştirmek yeterli. Programın devamında bir for döngüsü içerisinde dizinin her bir elemanı sırayla Port B’ye gönderiliyor ve 1ms’lik bekleme süresinin ardından dizinin diğer elemanı Port B’ye iletiliyor. 48ms sonunda dizinin bütün elemanları sırayla porttan gönderildiğinden sonsuz döngü ile program başa dönüyor. Programın başa dönmesinden önce 48ms’lik bir bekleme süresi daha bulunuyor. Bu bekleme süresinin amacı kolun soldan sağa hareketinde LED’leri sönük halde tutmak, sağdan-sola harekette ise havada yazıyı oluşturmak.

Hex dosyayı oluşturma

Yazılan C programı uygun şekilde derlendiğinde hex uzantılı bir dosya oluşur. Derleme işleminin ayrıntıları yine PIC C ile ilgili kitaplardan öğrenilebilir. Oluşturulan hex dosyanın PIC’e yüklenmesi ile mikro denetleyicinin istenen şekilde çalışması sağlanır.

Programı PIC’e yükleme

Hex dosyayı PIC’e yüklemek için bir programlama kartı gerekli. Piyasada çok çeşitli tiplerde programlama kartları mevcut [3]. Bu kartların bazıları bilgisayarın seri veya paralel portunu kullanırken bazıları da USB portunu kullanıyor. ICPROG adlı yazılım ise programlayıcı kartın bilgisayarla iletişimini sağlıyor. ICPROG yazılımı http://www.ic-prog.com internet adresinden ücretsiz indirilebilir. Bu programın kullanımı hakkında ayrıntılı bilgiler PIC ile ilgili kitaplardan öğrenilebilir.

havada yazi ares baski devre

Baskı devre yapımı

Devre az sayıda eleman içerdiğinden baskı devre kartı kolayca yapılabilir. Devre elemanları
delikli pertinaks üzerine dizilerek montaj yapılabileceği gibi, baskı devre yapım tekniklerinden biri kullanılarak daha profesyonel bir kart oluşturmak da mümkün. Şekil 5’de baskı devre kartı görülüyor. Kartın eni 3.5cm, boyu ise 20cm civarında. PIC16F84A entegresini baskı devre kartına lehimlemek yerine 18 bacaklı bir entegre soketi kullanmak gerekiyor. Bu sayede PIC’i yeniden programlamak gerektiğinde entegre kolayca yerinden sökülebilir.

Devreyi çalıştırma

Programlanan PIC mikro denetleyici, 18 bacaklı entegre soketi üzerine yerleştirildikten sonra devre üzerindeki anahtar kapatılarak devre çalıştırılır. Bu esnada 8 adet LED’in kısa aralıklarla yanıp söndüğü görülür. Havada yazının oluşabilmesi için devrenin şekil 6’daki gibi sağa sola sallanması gerekiyor. Okunabilir bir yazı elde etmek için devrenin hangi hızda sallandığı çok önemli. Eğer devre uygun hızda sallanmazsa düzgün bir yazı elde etmek mümkün olmaz.

Zamanlama sorunlarını gidermek için devre üzerindeki reset butonuna bir kez basmak ve o anda devreyi sallamaya başlamak iyi sonuç verir. Daha uygun bir çözüm ise kart üzerine bir eğim sensörü (tilt sensor) yerleştirerek kolun hareketini önceden algılamak ve sütun bilgilerini o anda başlatmak olabilir.Şekil 7’de devrenin uygun bir hızda (örneğin saniyede 8-10 kez) sağa-sola sallanması durumunda havada oluşan yazı görülüyor. LED’ler parlak olduğu halde gün ışığında yazıyı fark etmek

led saga hareket

zor olabilir. Bu nedenle devreyi çok fazla aydınlık olmayan bir ortamda çalıştırmak daha iyi sonuç verir.

merhaba havada led

Devre, elle sallanarak çalıştırabileceği gibi bir DC motorun miline bağlanarak sürekli döndürülebilir de. Bu durumda yazının havada hep aynı yerde oluşması için motorun devir sayısını uygun şekilde ayarlamak gerekir. Bunun yerine, mıknatıs ve reed anahtardan oluşan konum algılama sistemi kullanmak daha iyi sonuç verir (Reed anahtar: Harici manyetik alandan etkilenerek kontağı kapanan bir anahtar türü).

Buna göre, devre üzerine yerleştirilen reed anahtar, mıknatısın önünden geçtiği anda PIC programı bu geçişi algılar ve sütun bilgilerini göndermeye başlar. Böylece havada sabit bir görüntü elde edilir. Şekil 8’de devrenin motor miline bağlanarak çalıştırılması durumunda oluşan yazı görülüyor.

bilim ve teknik

15 harften oluşan (2’si boşluk) Bilim ve Teknik yazısını elde etmek için gerekli 90 adet sütun bilgisi şekil 9’da dizi olarak görülüyor. Yazıyı havada oluşturmak için bu yeni dizinin PIC C programında tanımlanarak mikro denetleyicinin yeniden programlanması gerekiyor.

*Fırat Üniv. Elek-Elektronik Müh. Bölümü

Projenin kaynak kod dosyaları ve proteus ares pcb çizimi: pic16f84-havada-yazi.rar

sakla feedmail facebook twit  

Etiketler: , ,

Yazar: recep

Yazarımızın 320volt.com Blog üzerinde şu an okuduğunuz yazı dahil 1 yazısı bulunmaktadır. Yazarımız hakkında bilgileri ve diğer yazılarını görmek için bakınız;

online elektronik komponent satışı

 
  1. cabir diyor ki:

    cabir_sonmez_241@windowlive.com

  2. vahap diyor ki:

    merhaba proje güzel ama çalıştıramadım baskı devre de sorun mu var resim de görülen gibi değil 3 gündür uğraşıyorum …

  3. amin diyor ki:

    hi
    i make this proje and copy hex to ic ….
    no work is problem hex and c file
    please help me

  4. gevv diyor ki:

    alternative codes;

    http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/9/HAVA.C

    http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/9/HAVA.HEX

  5. Flatron diyor ki:

    Amin
    if your problem is same error in page 3′s last comment screen view .You must copy Delay.c and Delay.h files (under the samples/Delay directory) than past to “include” directory this 2 file
    Regards

    Flatron

  6. amin diyor ki:

    hi
    thank you for answer
    my problem is hardware
    when touch pin 16 ic (cryxtal pin) circuit work
    when no tuoch pin 16 not work circuit?!!!!!!!!!!
    and
    .
    .
    my compiler is ccs for pic .C file not work in CCS compiler
    please help
    error TRISB and PORTB!!??

  7. amin diyor ki:

    i Replacement cryxtal and microcontroler and cap not work???

    work only touch pin 16 (pic16f84a) ?

  8. amin diyor ki:

    hi
    im very very happy
    im find problem

    me program with rc mod change to xt mod my circuit is work

    thank
    just my problem is
    my compiler is ccs for pic .C file not work in CCS compiler
    please help
    error TRISB and PORTB!!??

  9. gevv diyor ki:

    hi

    projects were “PIC C Lite” ccs c not work

  10. gevv diyor ki:

    try the ccs c version;

    http://320volt.com/wp-content/uploads/2010/08/led-pow-ccsc.zip

  11. amin diyor ki:

    thank you very much gevv

    your web site is the best best best of the world.

    thanks

  12. amin diyor ki:

    hi

    How much RPM Motor for the best work ?

  13. gevv diyor ki:

    I do not know. toy car might be motor

    sample ;

    http://hotfile.com/dl/61387367/52689a2/circuit-images.rar.html

  14. kemal diyor ki:

    Selam ben Kemal

    Havaya Kemal ismini yazmak istiyorum

    #include <pic.h>
    #include <delay.c>
    
    main(void)
    {
    
    unsigned int i;
    unsigned char dizi[]={
    0xFF,0x02,0x0C,0x02,0xFF,0x00, // K
    0xFF,0x89,0x89,0x89,0x81,0x00, // E
    0xFF,0x11,0x31,0x51,0x8E,0x00, // M
    0xFF,0x10,0x10,0x10,0xFF,0x00, // A
    0xFC,0x12,0x11,0x12,0xFC,0x00, // L
    0xFF,0x89,0x89,0x89,0x76,0x00, // Bosluk
    0xFC,0x12,0x11,0x12,0xFC,0x00, // Bosluk
    0x00,0x00,0x00,0x00,0x00,0x00  // Bosluk
    };
    
    TRISB=0;
    
    for(;;){
    	for(i=0;i<48;i++){
    	PORTB=dizi[i];
    	DelayMs(1);  // 1ms bekle
    	}
    	DelayMs(48); // 48ms bekle
    }
    }
    

    bu kod doğrumu acaba ?

  15. samet diyor ki:

    Selamün Aleyküm Arkadşlar. Benm bir sorum olacak bu devrede tek buton var ve tek yazı yazıyor ben buna 2. butonu bağlarsam 2 sefer yazı göstersin bu devrenin baskı devresi nasıl olacak yardımcı olabilirmisiniz.

  16. kaan diyor ki:

    Selamün Aleyküm arkadaşlar devreyi çevirmek için kullanılan motor hakkında bilgi verebilirseniz sevinirim. Şimdiden sağ olun.

  17. sercan diyor ki:

    arkadaşlar bunu hex koduna çevirebileniz varmı ? bende cannot open include file ”delay.c” hatası veriyor yapmamız gereken ne ?

  18. osman diyor ki:

    Sercan;
    Samples klasörünün içinde Delay klasörü var. burda delay.c ve delay.h isimli 2 dosya var bunlar kopyalayıp İnclude klasörüne yapıştırıyosun. bu kadar..delay c hatasını görmiyeceksin. kolay gelsin..

  19. tokat teknik muti diyor ki:

    hocam elinizde bu devrenin pic basic ile yazılmış bir örneği mevcutsa yayınlarsanız çok memnun oluruz. bu projemizi 3 mayıs ta düzenleyeceğimiz fuarımıza koymayı düşünüyoruz fakat c dilinde çeviri yapamıyoruz asm veya pic basic varsa elinizde..

  20. samet özkan diyor ki:

    devreyi kullanacağımız motorun devir sayısı ne kadar olmalı acaba !!!

  21. çağdaş diyor ki:

    merhabalar herkese.ben 16f84 ile havaya yazı yazmak istiyorum fakat assembly diliyle yazmam lazım.bulamadım bana yardımcı olurmusunuz cumaya teslım etmem gerekıyor

  22. hafız diyor ki:

    happyday_55@msn.com derleyeci hex dosyasını kayıt edmiyor yardım ederseniz çok sevenirim

  23. theturk007 diyor ki:

    arakadşlar dc motorla hep aynı yönde hızlı bir şekilde döndürsek yazı çıkarmı

  24. semih diyor ki:

    bunlarda benden size örnekler..

    :02000000B02B23
    :100746008312B2000430B3005330B400B40BA92BAB
    :10075600B30BA72BB20BA52B0800463083128E00D5
    :1007660089308F0090009100723092009301FF3023
    :100776009400893095009600970081309800990181
    :10078600FF309A0002309B000C309C0002309D0026
    :10079600FF309E009F01A0018430A100FD30A20021
    :1007A6008430A300A401A501FF30A6001030A700E5
    :1007B600A800A900FF30AA00AB01AC01AD01AE0153
    :1007C600AF01B001B1018316860183128C018D0140
    :1007D6000C080E3E84000008860001308312A32315
    :1007E6008C0A03198D0A00300D021E3003190C0203
    :0A07F600031CEB2B1E30A323E82B9D
    :00000001FF

    buda benim ismim ..xD

    :02000000672B6C
    :1006B4008312CD000430CE005330CF00CF0B602B1B
    :1006C400CE0B5E2BCD0B5C2B08007F3083128E008B
    :1006D400BF308F00DF309000EF309100F730920090
    :1006E400FB309300FD309400FE3095007F3096007F
    :1006F400BF309700DF309800EF309900F7309A0050
    :10070400FB309B00FD309C00FE309D007F309E003E
    :10071400BF309F00DF30A000EF30A100F730A2000F
    :10072400FB30A300FD30A400FE30A5007F30A600FE
    :10073400BF30A700DF30A800EF30A900F730AA00CF
    :10074400FB30AB00FD30AC00FE30AD007F30AE00BE
    :10075400BF30AF00DF30B000EF30B100F730B2008F
    :10076400FB30B300FD30B400FE30B5007F30B6007E
    :10077400BF30B700DF30B800EF30B900F730BA004F
    :10078400FB30BB00FD30BC00FE30BD007F30BE003E
    :10079400BF30BF00DF30C000EF30C100F730C2000F
    :1007A400FB30C300FD30C400FE30C5007F30C600FE
    :1007B400BF30C700DF30C800EF30C900F730CA00CF
    :1007C400FB30CB00FD30CC008316860183128C01F4
    :1007D4008D010C080E3E840000088600013083124F
    :1007E4005A238C0A03198D0A00300D024030031974
    :0C07F4000C02031CEB2B40305A23E82BB6
    :00000001FF

    :02000000672B6C
    :1006B4008312CD000430CE005330CF00CF0B602B1B
    :1006C400CE0B5E2BCD0B5C2B080083128E018E0AA1
    :1006D40002308F00043090000830910010309200F6
    :1006E4002030930040309400803095009601960AA3
    :1006F40002309700043098000830990010309A00B6
    :1007040020309B0040309C0080309D009E019E0A5A
    :1007140002309F000430A0000830A1001030A20075
    :100724002030A3004030A4008030A500A601A60A12
    :100734000230A7000430A8000830A9001030AA0035
    :100744002030AB004030AC008030AD00AE01AE0ACA
    :100754000230AF000430B0000830B1001030B200F5
    :100764002030B3004030B4008030B500B601B60A82
    :100774000230B7000430B8000830B9001030BA00B5
    :100784002030BB004030BC008030BD00BE01BE0A3A
    :100794000230BF000430C0000830C1001030C20075
    :1007A4002030C3004030C4008030C500C601C60AF2
    :1007B4000230C7000430C8000830C9001030CA0035
    :1007C4002030CB004030CC008316860183128C018C
    :1007D4008D010C080E3E840000088600013083124F
    :1007E4005A238C0A03198D0A00300D024030031974
    :0C07F4000C02031CEB2B40305A23E82BB6
    :00000001FF

  25. Bekir diyor ki:

    harfleri değiştirip attığımda olmuyor hex dosyası istiyor hex dosyasını oluşuramıyorum yardımcı olabilicek var mı ?

Yorum Sayfaları

Yorum yapın

Doğrulama: (kutuyu işaretleyiniz)


  • Lütfen Türkçe imla kurallarına dikkat etmeye özen gösteriniz.
  • Yorumunuz yönetici tarafından kontrol edilmeden yayımlanmaz.
  • Paylaşılan devrelerin malzeme listesini istemeyiniz. Olsa zaten paylaşılırdı şema üzerinden listeyi çıkartabilirsiniz
  • Gavatar sitesine avatarınızı yükleyebilirsiniz.
sponsor

sponsor

diptrace

diptrace

sponsor

sponsor

embeddedtrading

embeddedtrading

sponsor

sponsor

seo

Seo Danışmanlığı

feed save face twit  
Translate: TürkçeEnglish

Forum Son İletiler