Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

frekansmetre

Başlatan everest12, 29 Kasım 2007, 15:11:38

everest12

selam arkadaşlar

pic18f452 kullanarak bir sayıcı yapmayı planlıyorum.2 girişten gelen sinyallerin ayrı ayrı frekansını sayacak bir yazılım yapacağım.sinyal girişlerini picin ccp1 ve ccp2 uçlarına verdim.hangi frekansı sayacağı menüden seçilebilir olacak.örneğin 25 hz seçildi ise 1khz lik sinyal sayılmayacak.
25hz,50hz ,1khz ve 2khz lik sinyalleri saymak istiyorum.
2 girişteki sinyaller sayıldıktan sonra ya bunlar toplanacak yada arasındaki
fark alınacak.bunu test etmek için başka bir picden kare dalga veriyorum

//25hz test için
for(i = 0; i < 100; ++i){
 out1 = 1;
 delay_ms(20);
 out1 = 0;
 delay_ms(20);
}
bu işlemden sonra displayde 100 görmem lazım.

Önerilerinizi bekliyorum.Bu işi kaçırma olmadan nasıl yapabilirm?

rree

Şimdiye kadar hiç frekans sayıldığını duymadım. Çeşitli sinyallerin frekansını ölçme ölçeriz  ama frakansı saymak anlamadım. Konuyu tekrar açıklık getiriseniz yardımcı olmaya çalışırız.

everest12

http://en.wikipedia.org/wiki/Frequency_counter

burda frekans saymak açıklanıyor.
neresi anlaşılmadı acaba onu söylerseniz açıklıyım.

http://www.enda.com.tr/tr/index.php?p=urun&gid=4&uid=1

kısacası bu cihazın yaptığı işi yapacak.

MICROCEBEL

PIC18F452 deki RB0/INT0,RB1/INT1 veya RB2/INT2 deki interrupt özelliğini kullanarak sayıcı yapabilirsin.Yalnız interrupt alt porgramını kısa tutmalısın çok hızlı sayma işlemlerinde.2kHz'i hayli hayli saydırırsın.

bigbey

Bu cihaz zamana bağlı olmadan pals sayma işlemi yapıyor.
Bu tip bir işi görecek devreyi 16f84 ile de yapabilirsiniz.
Bunun için forumda bir sürü sayıcı örnekleri var 0-999 sayıcı var onu kendi işinize uyarlayabilirsiniz.
TA6R

everest12

bu cihaz zamana şöyle bağlı.
dediğim gibi giriş frekansı 25hz seçilirse daha hızlı pulsleri saymayacak.Bir nevi filitre özelliği var.
Ben şöyle yaptım.pulsleri ccp1 ve ccp2 ye verdim.ve 100us lik bir timer interruptı kurdum.düşen kenarı algılayıp timer counter'ı sıfırladım.ve ccpyi yükselen kenarda interrupt verecek şekilde tekrar ayarladım.yükselen kenar  geldiğinde interrupta girince timer counterı okudum.istenilen değerler arasında ise sayıcıyı 1 arttırdım.bu şekilde çalışıyor ama bazen 1 - 2 puls kaçıyor.bunun nedenini tam çözemedim.başka işler içinde bi kaç interrupt var belki bu interruptlara giriş çıkış sırasında bazı darbeler kaçıyo olabilir.
Başka yöntem önerebilecek olan veya bu yöntemin stabil çalışması için tavsiyesi olan varsa dinlerim.

bigbey

Alıntı yapılan: "everest12"bu cihaz zamana şöyle bağlı.
dediğim gibi giriş frekansı 25hz seçilirse daha hızlı pulsleri saymayacak.Bir nevi filitre özelliği var.
Ben şöyle yaptım.pulsleri ccp1 ve ccp2 ye verdim.ve 100us lik bir timer interruptı kurdum.düşen kenarı algılayıp timer counter'ı sıfırladım.ve ccpyi yükselen kenarda interrupt verecek şekilde tekrar ayarladım.yükselen kenar  geldiğinde interrupta girince timer counterı okudum.istenilen değerler arasında ise sayıcıyı 1 arttırdım.bu şekilde çalışıyor ama bazen 1 - 2 puls kaçıyor.bunun nedenini tam çözemedim.başka işler içinde bi kaç interrupt var belki bu interruptlara giriş çıkış sırasında bazı darbeler kaçıyo olabilir.
Başka yöntem önerebilecek olan veya bu yöntemin stabil çalışması için tavsiyesi olan varsa dinlerim.
yaptığın denetimde 100uS konrol ederken tolerans versen nasıl olur. mesela 99 ile 101 uS arasında ise 100 kabulet gibi bir yöntem pulse kaçırmanı önleyebilirmi.
TA6R

everest12

tolerans işin sabun kısmı gibi geliyor.son çare olarak onu düşünecem:)