Hazırlayan: Birkan GÖÇERLER
Sinyal Generatörü
Sinyal Generatörü genellikle alıcıların testinde amplifikatörlerin testinde ve bu cihazların onarımında kullanılır. Sinyal kaynağı olarak ta kullanılır. Dalga dedektörü, radyo frekans köprüleri gibi yerlerde kullanılır.
Sinyal Generatörünün Yapısı:
Sinyal Generatörünün Çalışma Prensibi:
Tipik sinyal Generatörü beş bölümden meydana gelmektedir.
1. Osilatör katı
2. Birleştirilmiş modüleli sinyal katı
3. Zayıflatma katı
4. Sabitlenmiş ve güç seviye katı
5. Çıkış sinyalleri ve zayıflatma katı
Sinyal Generatörü laboratuar uygulamalarında sinyal kaynağı olarak kullanılmaktadır. Devrede kullanılan osilatör kararlı bir osilatördür. Zayıflatıcı çıkışındaki,genlik modülasyonudur. Bu katın çıkışında kazancı arttırılmış modüleli sinyal elde edilir
8051 İle Sinyal Generatörü Yapımı
Giriş: Entegreli sinyal Generatörü, karalı çalışması, maliyetinin düşük olması ve karışık olmaması nedeniyle tercih edilir. Yapılacak sinyal generatörü deneylerde kullanılan 1Hz – 10Hz ve 100Hz frekanslarını üretecektir. İstendiğinde kullanılan program değiştirilerek maksimum 500MHz kare dalga sinyal elde edilebilir.
Kullanılan Araç Ve Gereçler:
AT89C51RC2 Tabanlı Geliştirme Kartı
7 segment ortak anot display (3 adet)
Buton (3 Adet)
Pin (30 Adet)
Delikli baskı devre plaketi
İletken tel
Havya ve Lehim teli
Bilgisayar
Güç kaynağı
İşlem Basamakları:
1. 7 Segment display in avometre ile bacak bağlantıları tespit edildi.
2. Devre şeması simülasyon programı olan ISIS te çizildi.
3. Otomatik olarak ARES te baskı devresi çıkarıldı.
4.7 segment display plaket üzerine lehimlendi.
5. Pinler 10lu gruplar halinde plakete lehimlendi.
6. Displayların bacakları ile pin uçları ileken tel ile birleştirildi.
7. Devrenin çalışması için akış diyagramı oluşturuldu.
8.Akış Diyagramına uygun olarak bilgisayar yardımıyla Keil programı kullanılarak C dili ile devrenin programı yazıldı. Derlendi. Hataları düzeltildi.HEX file oluşturuldu.
9. Oluşturulan HEX file ISIS programında oluşturulan similasyonda test edildi.
10. Bilgisayar ile AT89C51RC2 Tabanlı Geliştirme Kartı arasında seri arabirim kullanılarak haberleştirildi. Keil da yazılmış program derlenerek oluşturulan HEX file kartın üzerindeki mikrodenetleyiciye Atmel Firmasının FLİP isimli programı ile aktarıldı.
11. Devreye Enerji verildi ve çalışması osiloskopta ölçülerek gözlendi.
Devre Hesaplamaları:
Burada bulunan 1 komutun işletim süresidir.
Not: Uygulamada kullanılan geliştirme kartının üzerinde 11.0592MHz kristal bulunmaktadır. Fakat hesaplamalarda kolaylık olması bakımından 12MHz alınmıştır.
Yukarıdaki formüllerden elde edilen değerleride kullanarak sayıcılara yüklenecek değerleri hesaplayabiliriz.
Örneğin 1Hz kare dalga için yükleme değeri
Yani kare dalganın periyodunu tamamlaması için timer imizin 1 milyon a kadar sayması gerekiyor.
Üstteki resimdende görüldü gibi timer 1 milyon saydığında 1 periyot gecmektedir.
Fakat kullandığımız 8051 de 1 milyon sayabilecek Timer bulunmamaktadır. Mod 1 maksimum 65536 sayabilmektedir.
Bu soruna söyle bir çözüm üretebiliriz. Timer ı 50000 saydırıp bunu 10 defa yaparsak 500000 elde ederiz. Periyodumuzun %50 si 1, %50 si 0 olduğuna göre 2 defa yani bir 1 durumu birde 0 durumu için saydığında 1 milyon saydırmış olacağız.
Yukarıda anlatılan durum Keil de yazılan mikroişlemci kodunda OSC1 isimli fonksiyonda uygulanmıştır.
Diğer 2 aşamadada benzer durum kullanılmıştır. 10Hz için timer in 50000 sayması yeterlidir. 100Hz içinse 5000 sayması gerekmektedir. Bu durumlarda programda OSC10 ve OSC100 isimli fonksiyonlarda uygulanmıştır.
Timer Değerlerinin Belirlenmesi
Buradaki sorunumuz Timer lara değerler nasıl yüklenecek? Bu sorunu bölüm 1 de anlatılanlardan da yardım alarak çözmeye çalışacağız. Örneğin 1 Hz değerini ele alırsak timer imiz in 500000 saymasını istemistik. Bunun içinde timer imizi 50000 saydırıp 10 defa dönmesini istemiştik. Peki timer imiz a 50000 değerini nasıl göstereceğiz. Bunun için Hexadecimal sayı sistemi devreye girer.
Elde ettiğimiz bu 3CAF Hecadecimal sayısı Timer a bölünerek yüklenir.
7 segment display bacak bağlantıları
Rakamlar için display lere verilmesi gereken değerler aşağıdaki tabloda gösterilmiştir.
Not: Burada her display için 8 çıkış ucu gereklidir yani bir display için bir port kullanılması gerekmektedir. Bunu istenmezse 7447 entegresi kullanılarak 4 çıkış kullanılarakta halledilebilir. Böylelikle 3 display için 3×8=24 çıkış yerine 3×4=12 çıkış ucu kullanarak portlardan tasarruf edilmiş olunur. Fakat devremiz başka bir iş gerçekleştirmeyeceği için bu işlem gerekli görülmemiştir.
7411 Entegresi Bacak Bağlantıları
Kullandığımız mikrodenetleyicide 3 adet harici kesme olmadığı için böyle bir çözüm üretildi.
Entegre içerisinde yalnızca 1 adet kapı kullanıldı. Bu kapının girişlerine buton girişleri, çıkışıda P1_3 pinine girildi.Bunun yapılmasındaki amaç buton değişikliklerinin algılatılabilmesi idi.
Keil da yazılan program dosyası
/*******************************************************************/ /*******************************************************************/ /* 8051 PROJESI */ /* */ /* 1Hz 10Hz 100Hz Kare Dalga Sinyal Jeneratörü */ /* */ /* Birkan GOCERLER 020304024 */ /*******************************************************************/ /*******************************************************************/ #include <REG51xD2.H> #include <stdio.h> /* butonlarin ve cikisin tanimlanmasi*/ #define buton1 P1_0 #define buton10 P1_1 #define buton100 P1_2 #define degistir P1_3 #define sinyal P1_7 #define disp1 P0 #define disp2 P2 #define disp3 P3 /* 1Hz lik sinyal üreten fonksiyon*/ void OSC1() { int i; //degisken tanimlamasi while(buton1==0); //buton1 birakilana kadar dön while(1) // sonsuz döngü (isletim sistemi) { for(i=0;i<10;i++) { TR0=0; TMOD=0x01; //timer0'in ilgili moda kurulmasi TL0=0xAF; //timer0'in 50.000 kez saymasi için gereken sayilar (3CAFH) TH0=0x3C; TF0=0; //TF bayragini 0'la TR0=1; while(TF0==0); //TF bayragi 1 olana kadar dön(50.000 kez say) TF0=0; //TF bayragini temizle } sinyal=!sinyal; //cikisi degille if(degistir==0)return; //P1_3 ucunu kontrol et.Degisiklik varsa ana programa git } } /* 10Hz lik sinyal üreten fonksiyon*/ void OSC10() { while(buton10==0); //buton10 birakilana kadar dön TMOD=0x01; TL0=0xBF; //timer0'in 50.000 kez saymasi için gereken sayilar (3CAFH) TH0=0x3C; TR0=1; //timer0'i calistir while(1) { while(TF0) //TF bayragi 1 olana kadar dön(50.000 kez say) { TR0=0; //timer0'i durdur TF0=0; //TF bayragini temizle sinyal=!sinyal; //cikisi degille TL0=0xBF; //timer'a gereken sayilari tekrar yukle TH0=0x3C; TR0=1; //timer0'i tekrar calistir } if(degistir==0)return; //P1_3 ucunu kontrol et.Degisiklik varsa ana programa git } } /* 100Hz lik sinyal üreten fonksiyon*/ void OSC100() { while(buton100==0); //buton10 birakilana kadar dön TMOD=0x01; TL0=0x77; //timer0'in 5.000 kez saymasi için gereken sayilar (EC77H) TH0=0xEC; TR0=1; //timer0'i calistir while(1) { while(TF0) //TF bayragi 1 olana kadar dön { TR0=0; //timer0'i durdur TF0=0; //TF bayragini temizle sinyal=!sinyal; //cikisi degille TL0=0x77; //timer0'a gereken sayilari tekrar yukle TH0=0xEC; TR0=1; //timer0'i calistir } if(degistir==0)return; //P1_3 ucunu kontrol et.Degisiklik varsa ana programa git } } void bekle (void) // Yaklaik 1 sn lik gecikme { unsigned int i; for (i=0;i<33000;i++); } /* ANA PROGRAM BASLANGICI */ void main(void) { /*butonlarin ve cikisin ilk durumlari*/ sinyal=0; buton1=1; buton10=1; buton100=1; degistir=1; disp1 = 0x00; // Display Test disp2 = 0x00; disp3 = 0x00; bekle(); disp1 = 0x09; // KOU yazisi disp2 = 0x40; disp3 = 0x41; bekle(); disp1 = 0x07; // TEF yazisi disp2 = 0x06; disp3 = 0x0e; while(1) //sonsuz döngü { if(buton1==0) { disp1 = 0x40; disp2 = 0x40; disp3 = 0xF9; OSC1(); //buton1'e basildiysa OSC1 fonksiyonuna git } if(buton10==0) { disp1 = 0x40; disp2 = 0xF9; disp3 = 0x40; OSC10(); //buton10'ye basildiysa OSC10 fonksiyonuna git } if(buton100==0) { disp1 = 0xF9; disp2 = 0x40; disp3 = 0x40; OSC100(); //buton100'e basildiysa OSC100 fonksiyonuna git } } }
Projenin proteus isis simülasyon ve keil kod;
Şifre-Pass: 320volt.com
Yayım tarihi: 2008/06/07 Etiketler: 7411, 8051, at89c51rc2, atmel avr projeleri, frekans, kare dalga, proje, sinyal jenaratörü
heytt bee. üniversite son sınıfta yaptığım mikrodenetleyiciler ödevim. Birden karşıma çıkınca duygulandım yaw. ne günlerdi o günler :))
at89c51rc2 geliştirme kartını nereden temin edebiliriz?? veya elinizde PCB şeması var mı kendimizin yapabileceği??bu konuda yardımcı olabilir misiniz lütfen…
Selam at89c51rc2 geliştirme kartını nereden temin edebiliriz? bir bilginiz varmı?
Geliştirme kartını bildiğim kadarıyla sakarya üniversitesi teknik eğitim fakültesi hocaları yapmış. Öğrencilerine bu kartlardan yaptırıyorlar. Oradan temin edebilirsiniz.
Merhaba resimde görünen geliştirme kartını nasıl temin edebilirim. açık şema ve baskı devre şemasını sağ olun