4 Mhz Harici Kristal 16F628 İle 20Mhz frekans nasıl ölçülebilir ?

Başlatan tolganor, 28 Aralık 2023, 18:13:26

tolganor

Her üyeye selamlar . Elimde küçük bir devre var internetten almıştım . Frekansmetre .

Bu frekansmetre 16F628 işlemcisi 4 Mhz harici kristalli osilatöre sahip .

Bu frekansmetre 20Mhz frekansı rahatlıkla okuyabiliyor . Bu nasıl olabilir ? 1 Hz 'den 20Mhz 'ye kadar olan frekansları çok büyük doğrulukla okuyabiliyor .

BU NASIL OLABİLİR ?

ete

Frekans iki şekilde ölçülebilir ve bu ölçümler işlemci frekansı ile çokda alakalı değildir.
Birinci metod da, 10-100-1000 ms lik peryodlarda zamanlar tutulur ve bu tutulan zaman içinde ne kadar pals geldiği hesaplanır. Malum frekans demek 1 sn yada 1000 ms lik süre içindeki puls sayısıdır.
Şayet 1000 ms içinde 1 puls almış isen frekans 1 Hz dir. 100 puls almış isen frekans 100 hz dir.
Tabiiki 10.000 puls almış isen frekansın 10 Khz dir. Buradan da anlaşılacağı üzere word tipi değişken kullanarak topladığın puls sayısı 65535 adedi geçemez. Buda frekans ölçümünde önündeki engeldir. Amaaa frekans bölme denilen bir teknik var. Şayet ben 20 Mhz yada 20.000.000 Hz lik sinyali 1000 e bölersem ne olur. Frekans (puls) sayıcım 1000 ms içinde yalnızca 20.000 puls sayar ve buda sınırlar dahilindedir. Geriye bunu bir şekilde 1000 ile çarpıp frekansın 20Mhz olduğunu söylemek kalır. Tabiiki Long tipi değişken kullanarak çarpma işide kolaylaştırılabilir.
Yada zaten 1000 e böldüğün için kısaca hesapladığın frekansa 20Mhz de diyebilirsin artık.

Diğer metod ise peryot ölçmeye dayanır. Hassas bir zaman ölçümü gerektiğinden genellikle kesme kullanılarak yapılır. Gelen puls'in yükselen kenarı yakalandığında sayaç çalıştırılır ve düşen kenarda saayc değeri bir değişkene verilir. Bu seferde düşen kenarda sayaç çalıştırılır ve kenar yükseldiğinde sayac değeri bir önceki sayac değerine eklenir. Elimizde HIGH+LOW peryotlarının toplam süresi vardır artık. Buradan frekans 1.000.000/toplam_Peryot formülü ile hesaplanabilir.

Görüldüğü gibi işlemci frekansının bu işde direk etkisi görülmüyor ancak yüksek OSC frekanslarında ölçüm hassasiyetide artacağı için genelde yüksek frekanslar tercih edilmelidir.
Özellikle bu ikinci metod da yüksek frekans ölçebilmek için gerçekten OSC frekansının yüksek olması tercih edilmelidir. Düşünsenize 20 Mhz lik bir sinyalin peryodu 1.000.000/20.000.000=0,05us çıkar ki bunu ölçmek için işlemci komut çevrimi en azından 0,01us olmalıdır. Bu ise 100Mhz lik bir OSC frekansına eşdeğerdir.
Bu nedenle ilk metodumuz bize daha stabil ve doğru ölçümler verecektir.
Şunu unutmayın bütün frekansmetrelerde mutlaka bir frekans bölücü kullanılır ve kullanılması bir yerde zorunluluktur. Aksi halde yalnızca 65Khz lik sinyalleri ölçebilirsiniz. Ama frekans bölücü ile 1Ghz lik sinyalleri bile ölçmeniz mümkün olacaktır.

Ete

tolganor

Hocam cevabınız için teşekkür ederim. Bu devrede frekans bölücü her hangi bir entegre yada malzeme kullanılmamış. Ayrıca kırmızı 7 segment Display tarama yöntemiyle direkt 16f628 4Mhz çipe bağlanmış olmasına rağmen 1hz den 20Mhz frekansa kadar değerleri aralıklarıyla net bir şekilde olarak doğru ölçebilmektedir.

Ama şu an şunu anladık ki bu entegre assampler dili ile yazılmış olduğunu düşünüyoruz. Direkt 7 segment Display işlemleri ile çip işlemleri doğrudan müdahale ile basic diline göre daha pratik kullanılmış ve entegre en iyi verimlilikle çalıştırılmış. Biz böyle düşündük.

 Şu an 16f628 ile 4 Mhz işlemci harici osilatör ile 40khz frekans ölçebilmekteyiz. Ve daha çok yükseltemiyoruz.

ete

Ne dili ile yazılırsa yazılsın farketmez. Zaten konuşurken hep ASM ye göre konuşuyorum. 20 Mhz sinyalin peryodu 0,05us dir. 4 mhz işlemcinin bir komut çevrim süresi ise 1us dir. Arada epeyce fark var. İşlemci int girişi 0,05us lik pulsleri sayabiliyor ise sonuçta toplam süredeki puls adedi önemli olacağı için saymada sorun olmayabilir.
Benim frekansmetre sistemim 10 mhz kristal ile hatırladığım 40-50 mhz leri ölçebiliyor idi.
Ete

tolganor

Hocam 10Mhz kristal mikroişlemci ile 40Mhz okumanın tekniği nedir ? Biz ancak khz lere çıkabiliyoruz .

ete

TMR1 sayacını dışarıdan puls sayacak şekilde kurun.1000us yani 1 ms lik bir zaman tutun. Bu süre içinde TMR1 sayacının ne saydığına bakın. T1CON registerini 1/1 bölme oranı ile sayım yapacak şekilde ayarlayın.
Şimdi sinyalinize bakalım. 40Mhz sinyalin peryodu 1/40=0,025us dir. 1000/0,025=40.000 puls demek tir.
Sayacınız 1000us içinde 40.000 civarı bir rakam sayması gerekir. Bu teknik ile aslında 65Mhz'e kadar sinyalleri sayabilirsiniz.
SOnuç olarak toparlarsak TMR1 sayacı harici pinden sayacak şekilde ve 1/1 bölme oranı ile sayım yapacak şekilde kurulur ve 1000us zaman tutularak bu zaman içinde ne kadar puls aldığınıza bakarsınız.
Aldığınız puls sayısı/1000 size direk Mhz cinsinden frekansınızı verir.

Bu sitede yaptığım Frekansmetre projesini inceleyin. Bu frekansmetrenin otomatik kademe bulma özelliği var ve tamamen bu mantık ile çlışıyor. Sinyalin kabaca frekansını bulup ona göre kademe ayarlayarak daha hassas sayım yaparak frekansı hesaplıyor.
Sistemi fiziki olarak yaptım bir çok kişide yaptı çalışıyor anlayacağınız.

Ete

Powered by EzPortal