16bit timer1 ölçüm hatası nedir?

Başlatan Maxim, 30 Kasım 2011, 15:05:46

Maxim

nasıl hesaplanır ?

mesela 300hz bir pwm girişimiz var
(300.000 hz)

bunu 16bit timer kullanarak ölçtüğümüz zaman % kaç hatalı ölçebiliriz ?
böyle bir hesaplama yapılabilirmi ?

prescale değerimiz 1:8 olacak



iyildirim

Kaç  bitlik çözünürlükte ölçülebildiği hesaplanabilir.

Hata da 1/(2^çözünürlük_bitsayısı) gibi birşey olur..

İşlemci frekansı nedir. ?

Kabil ATICI

ölçmeye çalıştığımız darbe süresi mi, boşluk süresi mi yoksa periyodu mu?

hatası işlemcinin frekansına ve de timer girişine uygulanan sinyalin frekansına bağlı.

her halikarda en az bir referan darbesi kadar hata vardır.
ambar7

Maxim

hocam işlemci frekansı 16mhz
periyod ölçümü yapılacak

iyildirim

#4
1/8 prescaler ile kullnılırsa 12.5 bit gibi bir çözünürlük çıkar.
TMR değeri 6667  kullanılırsa hata  %0.005 olur.


Edit:
Eğer timer clock frekansı 4mHz ise 1667  değeri ile %0.02 hata olur. 16Mhz ye göre 4 kat fazla. Çözünürlük de 10.5 bit.

Kabil ATICI



(referas sinyali periyodu/ölçülen sinyalin periyodu) *100

ama bu sadece timer1'in ölçüm yapısından kaynaklanan hatadır. Bundan sonra  işin içine timer1 kontrolu için kullanılan program gecikmeleri, sinyal ölçüm için kullanılan giriş ucunun gecikmesi gibi hatalarında işin içine sokulması gerekir.

Aslında ölçülen sinyalin frekansına bağlı olarak yerine göre periyot yerine frekans ölçümü daha verimli olur.

ambar7

Maxim

hımm osc frekansı arttıkça hata oranıda artıyor demek

@ambar7 hocam
siz bir ref sinyalinden bahsediyorsunuz

bu istediğin frekansı gir , ölçüğün frekansı onunla karşılaştırmı demek ?


Kabil ATICI

referans sinyal işlemciden  timer1'e uygulanan sinyal.
Ölçülen  sinyalde işlemcide dışarıdan periyodunu ölçmek istediğimiz sinyal.

Sonuçta periyot ölçümü; bir sinyalin bir periyodu boyunca  frekansı daha yüksek olan başka bir sinyalin sayılmasıdır.

Projede ölçülen sinyalini inen (veya çıkan) ucunda timer1 aktifleşiyor (işlemci tarafından varsa ön bölücüden geçerek timer1 sayıyor.) ölçülen sinyalin sonraki inen ( veya çıkan) kenarında timer1 duruyor. Timer1 'deki değer ölçülen sinyalin  referans sinyaline göre değeri oluyor
ambar7

iyildirim

Alıntı yapılan: Maxim - 30 Kasım 2011, 17:28:30
hımm osc frekansı arttıkça hata oranıda artıyor demek

Yanlış anlaşılma var sanırım..

timer clock freaknsı 16MHz de yüzbinde 5, 4 mhz de yüzbinde  20

16e6 / 8 / 300 = 6666.66666667
6667  alınırsa 0.3333333... hata olacak.. 
.3333333.. * 300 *8 / 16e-6 = 5e-5

Aslında bu 300 Hz lik sinyal oluştursam ne kadar hata olurun cevabı gibi.. Ve bu duruma özel olarak olması gereken ile set edebildiğimiz veya okuyabildiğimiz tamsayı arasındaki fark üzerinden hesaplanmış oluyor. Ve genel hata oranından daha düşük çıkıyor.

Genel olarak 16mhz için 6666 gibi bir değer çiktığına göre yaklaşık olarak  12.5 bit gibi bir çözünürlüğümüz olur. Ve hata da 2^-12.5 olur. Yani %0.017 gibi bir değer çıkar..