Frekansmetre ile ilgili bütün konularda frekansın tanımını esas almak gerekmektedir. Aynı şekilde sayısal (dijital) Frekansmetre yapmak için de frekansın tanımını devre olarak aynen uygulamak gerekmektedir.
Frekans : 1 saniyedeki peryot sayısına frekans denir.
Peryod : Tam devir yapmış dalga bir peryotluktur (devirliktir). Devrini tamamlayan dalgaya peryot denir.
Pulse: Yarım peryota pals denir. 1 peryotta birisi pozitif, diğeri negatif olmak üzere iki adet pals vardır.
Frekans Birimi: HERTZ veya SAYKIL olarak belirtilir. Değerinin askatları yoktur, fakat üs katları vardır.
1 Hz ( Hertz )
1 000 Hz = 1 KHz ( Kilohertz )
1 000 000 Hz = 1 000 KHz = 1 MHz ( Megahertz )
1 000 000 000 Hz = 1 000 000 KHz = 1 000 MHz = 1 GHz ( Gigahertz )
( Yukarıya devam eder. Terahertz gibi )
Yukarıdaki temel tanımlar bir frekansmetre yapmak için yeterlidir. Şimdi frekansmetreyi açıklayabiliriz Frekansmetre 1 saniyedeki peryot sayısını ölçen ölçü aletlerine frekansmetre denir
Piyasada çeşitli yöntemler kullanarak yapılmış değişik tiplerde frekansmetreler satılmaktadır. Analog ibreli, titreşimli, sayısal, programlarla yapılmış olanlar bunlardan bazısıdır. Biz bu tiplerden sadece sayısal (dijital) entegrelerle gerçekleştirilen sayısal göstergeli tür üzerinde duracağız.
Frekanmetre Nasıl Yapılır ?
Frekansmetre yapmak için 2 saniyelik, eşit palslı ve kare dalga bir peryot kullanılması yeterlidir. Bu peryotun pozitif ve negatif palsları birbirine eşit olmalıdır. Bu 2 saniyelik peryotun 1’er saniyelik iki adet palsından istediğimizi kullanarak bir frekans metre tasarımı yapabiliriz. Ayrıca yardımcı palslara da ihtiyacımız vardır. Bu yardımcı palslar, göstergeleri sayma esnasında tutma ve sayma işlemi bittiğinde sayacıları resetlemek (sıfırlamak) olmak üzere iki adet olması gerekmektedir. Biz burada temel ölçüm devresini esas alıyoruz. Değişik aksesuar ve görüntü düzenleri için daha fazla palslar kullanılabilir. 2 saniyelik peryotta kullanacağımız pals değerini, öğrenmek istediğimiz sayıcılara girecek olan frekans için anahtar görevi gören devreyi çalıştıracaktır.
Peryodalrın Sayılması
Salınımın olduğu bir teli bir anahtar kullanarak 1 saniye için açıp kapatırsak ve telden bu saniyede geçen salınım miktarını sayarsak o telden o anda geçen peryot miktarını öğrenmiş oluruz. Böylece frekansı öğrenmiş oluruz.
Referans Freaknsı ve Özellikleri: Öncelikle referans frekansını elde etmek gerekmektedir. Bu, 2 saniyelik, eşit palslı ve kare dalga bir peryottur. Frekansı 1/2 hertzdir.
Bu referans frekansını ne şekilde elde ettiğimiz önemli değildir. Temel şart, kararlı ve kullanacağımız palsın 1 saniyesinin kesin olması gerekmektedir. Bu temel şart yerine getirilemezse ölçüm hatalı ve karasız olur. Bu istenen bir durum değildir. Bu frekansta kararlılığı sağlamak için kristal kontrollu osilatör devresi hazırlamak gerekmektedir. Bu tür devreler, TTL veya CMOS entegrelerle yapılabilir.
Referans frekansı
Referans frekansı ile saydırma palsı, ekrana aktarma palsı ve sayıcıları resetleme palsı elde edilmesi gerekmektedir.
Referans frekansı ile elde edilmesi gereken palslar.
Saydırma palsı
Ekrana Aktarma Palsı
Sayıcıları Resetleme Palsi
Peryotları Kontrol Altına Alarak Geçirmek :Bunun için her bir palsı 1 saniye olan referans frekansı elde edildikten sonra, bu referans frekansı ile peryotların geçişi kontrollu olarak yapılır. Böylece frekans sayılmaya hazır hale getirilir. Yani 1 saniye geçirilen frekans 1 saniye bekletilir. Frekansın geçişi sırasında sayma işlemi yapılır, bekleme sırasında göstergelere aktarılır ve sayıcılar sıfırlanarak tekrar sayıma hazır hale getirilir. Düzenek böyle çalışır. Bu düzeneğin çalışması için referans frekansına ihtiyaç vardır. Bu referans frekansı ile ölçeceğimiz frekansı kıyaslayarak sonuca varırız. Bu türlü bir işlem için bir AND kapısı kullanılabilir. Bu devrede 4518 entegresi kullanıyoruz ve clock girişi kontrol edilir.
Frekans Saydırmak :Bu devrede sayılacak frekans 4518’un ENABLE girişine bağlanıyor. RESET uçları birleştirilerek referans devresinden gelen resetleme ucuna bağlanıyor. Sayma palsı ucu ise, CLOCK ucuna bağlanıyor. İlk entegrenin Q3 çıkışı sonraki entegrenin ENABLE ucuna bağlanıyor. Q1, Q2, Q3, Q4 çıkışları ise gösterge sürücü entegrelere gidiyor.
4518 Entegresi İle Yapılan Temel Frekans Sayma Devresi
2 x 4518 entegre
1 x 4017 entegre
1 x LCD ( 2×16 char ) +LCD soketi ve girişi
1 x 89c51rc2 ve soketi
1 x 12Mhz kristal
1 x 10x10luk plaket
2 x 2lik Klemens
1x 1k direnç
1x 10k direnç
LCD’de kullanılan komutların tanımlanması
#define Sil 1 // Ekranı temizler #define BasaDon 2 // İmleci sol üst köşeye getirir #define SolaYaz 4 // İmlecin belirttiği adres azalarak gider #define SagaYaz 6 // İmlecin belirttiği adres artarak gider #define ImlecGizle 12 // Göstergeyi aç, kursör görünmesin #define ImlecYanSon 15 // Yanıp sönen blok kursör #define ImlecGeri 16 // Kursörü bir karakter geri kaydır #define KaydirSaga 24 // Göstergeyi bir karakter sağa kaydır #define KaydirSola 28 // Göstergeyi bir karakter sola kaydır #define EkraniKapat 8 // Göstergeyi kapat (veriler silinmez) #define BirinciSatir 128 // LCD'nin ilk satir başlangıç adresi #define IkinciSatir 192 // İkinci satırın başlangıç adresi
LCD’de Kullanılan Fonksiyon Seçimi
#define CiftSatir8Bit 56 // 8 bit ara birim, 2 satır, 5*7 piksel #define CiftSatir4Bit 48 // 8 bit ara birim, 1 satır, 5*7 piksel #define TekSatir8Bit 40 // 4 bit ara birim, 2 satır, 5*7 piksel #define TekSatir4Bit 32 // 4 bit ara birim, 1 satır, 5*7 piksel
LCD Girişlerinin Tanımlanması
#define Data P1 // LCD Data girişleri için port ata #define RS P3_2 // Saklayıcı seçme girişi RS=0 komut, RS=1 veri #define RW P3_1 // Oku/Yaz girişi RW=0 yaz, RW=1 oku #define EN P3_0 // Yetki girişi
LCD Gecikme Fonksiyonu
void Gecikme ( long int sure ) { long int i; for ( i=1; i<=sure ; i++ ) {;} }
LCD Hazır Olana Kadar Bekle Fonksiyonu
void LcdHazir () { Data=0xFF; // LCD den veri almaya hazirlan RS = 0; // Komut modu RW = 1; // LCD den okuma EN = 1; // Yetki için düşen kenar ayarı Gecikme(200); // Kısa bir bekleme süresi While ( Data & 0x7F == 0x80 ) ; // Meşgul bitini kontrol et. }
LCD'ye Komut Yazdırma Fonksiyonu
void Komut (int komut) { LcdHazir(); // LCD hazır olana kadar bekle RS=0; // RS komut modunda RW=0; // RW yaz modunda EN=1; // İşlemin yetkilendirilmesi için düşen kenar ayarı Data=komut; // LCD veri girişlerine komut bilgisini aktar EN=0; // Yetki için düşen kenar sağlandı Gecikme(1000); // Gecikme
LCD'ye Tek Bir Karakter Yazdırma Fonksiyonu
void Veri ( char veri, long int hız ) { LcdHazir(); // LCD hazır olana kadar bekle RS=1; // RS komut modunda RW=0; // RW yaz modunda EN=1; // Yetki için düsen kenar ayar işlemi Data=veri; // LCD data girişlerine veri bilgisini aktar EN=0; // Yetki için düşen kenar sağlandı Gecikme(hız); // Ekranda karakterlerin görünmesi arasındaki süre }
LCD'ye Karakter Dizisi (String) Yazdırma Fonksiyonu
void VeriDizi ( char veri[], long int hız ) { int i=0; While (veri[i]!=0 ) { LcdHazir(); // LCD hazır olana kadar bekle RS=1; // RS komut modunda RW=0; // RW yaz modunda EN=1; // Yetki için düsen kenar ayar işlemi Data=veri[i]; // LCD data girişlerine veri bilgisini aktar EN=0; // Yetki için düşen kenar sağlandı i++; // Bir sonraki veri bitini almak için dizi'yi 1 arttır Gecikme(hız); // Karakterlerin görünmesi arasındaki süre
LCD Başlangıç Ayarlarını Yapan Fonksiyon
void LcdAc ( void ) { Komut( ImlecGizle ); Komut( CiftSatir8Bit ); Komut( SagaYaz ); }
Hazırlayan: Abdülbaki Şahin
Emeği geçen Kişilere Teşekkürler
Şifre-Pass: 320volt.com
Yayım tarihi: 2008/10/03 Etiketler: 2X16 LCD, at89c51rc2, atmel avr projeleri, Frekansmetre
kodlamayı nereye yazıcağız.
Bu proje paylaşımı için teşekkürler ve mümkünse paylaşımı yapan arkadaş ısıs ve ares dosyalarını bir şekilde paylaşa bilirse memnun olurum
isis dosyası verilmiş pcb çizimide rapor dosyasında resim olarak verilmiş bir zahmet resime bakarak aresde çizersiniz yada resim dosyasını boyutlandırıp yazdırırsınız
Sayın Gevv’i burada takdir etmemek mümkün değil Biraz kafa patlatmak gerekiyor . Çalışmaların sizin olabilmesi için bir çok noktada değişiklikler yapıp bu komut nasıl çalışıyor bunu nasıl daha değişik çalıstırabiliriz diye beyin patlatırdık . Şimdi öğretim görevlisiyim ama öğrenmek her şeyide hazır olarak almak olmamalı bunu birazda sizin geliştirmeniz gerekiyor inanıyorum ki aramızda çok akıllık değerler mevcut Öğretim gorevlileri olarak bunu amaçlıyoruz .Büyük bilim adamları sizler neden olmayasanız eksiğiniz nedir ? ama hazır olarak değil kendinizi zorlayarak bir şeyler bulabilirsiniz
programı işlemcinin içine atmak için ek bi devre kurmak gerekiyor mu ?
Emeğinize sağlık Teşekkürler