Frekans okuma

Başlatan Oracle1, 21 Mart 2016, 23:39:02

Oracle1


Oracle1

bir sorum olacaktı bu 53hz nasıl 9425 hesapladınız

MB_77

#32
bu mesaj tarafımdan silinmiştir.

MB_77

#33
bu mesaj tarafımdan silinmiştir.

Oracle1

#34
 :)

MB_77

#35
bu mesaj tarafımdan silinmiştir.

MB_77

#36
bu mesaj tarafımdan silinmiştir.

Oracle1

#37
frekans seçimini artırabilirz değil mi kanal sayısını yani 53 hz de örneğin bide 26 hz ekleyebilir miyiz aşşağıda verdiğim kodda bir hata yok değil mi


osccon=%01110000       '8 mhz dahili osilatör ayarlandı
ansela=%00000000
anselb=%00000000
trisa=%11111111
trisb=%11111111
porta=0
portb=0

pause 400

ansela=%00000001      'ra0 analog seçildi, komparatörün giriş kanalı
anselb=%00000000
trisa=%11110011      'ra2 ve ra3 çıkış seçildi led için. diğerleri giriş
trisb=%11111111       

'değişkenler tanimlanır

tm var word
bay var byte


'modüller ayarlanır. burada komparatör modülünü ayarlayacağız.
'komparatör, giriş kanalındaki voltaj referans kanalındaki voltajı
'geçtiğinde dijital olarak 1 değeri verir. ve kesme yaptırır.
'biz kesme yapmasıyla ilgileniyoruz.
'önce referans voltaj kaynağını ayarlarız

fvrcon=%11000100    'sabit voltaj kaynağını 1,024v olarak ayarladık. datasheet

cm1con0=%11000100    'komparatör registerinı ayarladık.datasheete bakman gerek
cm1con1=%10100000    'komparatör kesme ve kanal ayarları. bkz datasheet.

t1con=%00100001       'Fosc/4 ve 1/4 prescaler ile timer1 ayarladık. datasheet.
                      'bu ayarlara göre 53hzde timer1 değeri=9434 olur.
                      'komut gecikmeleri biraz değiştirir.

tm=0
bay=0

on interrupt goto kesme    'kesme gerçekleşince "kesme" etiketine gidecek.

pie2.5=1   'komparatör kesmesi aktif edildi.
intcon=%11000000    'global kesmeler aktif edildi.


ana:
if bay=1 then      'okuma yapıldı yani timer1 kesmede kaydedildi ise
bay=0



                 
if tm>9425 then   '53hz'e simülasyonla 9455 bulduk 30 tolerans verdik.
if tm<9485 then
porta.2=1         'sinyal tlerans içinde. yeşil led yakıldı
porta.3=0         'sinyal ok. kırmızı led kapatıldı.
else
porta.2=0         'sinyal tolerans dışında. yeşil led kapatıldı.
porta.3=1         'kırmızı led yakıldı
endif
else
porta.2=0         'diğer koşul için de aynı durum.
porta.3=1
endif
if tm>9200 then   '26hz'e simülasyonla 9230 bulduk 30 tolerans verdik.
if tm<9260 then
porta.4=1         'sinyal tlerans içinde. yeşil led 2yakıldı
porta.5=0         'sinyal ok. kırmızı led 2 kapatıldı.
else
porta.4=0         'sinyal tolerans dışında. yeşil led 2 kapatıldı.
porta.5=1         'kırmızı led 2yakıldı
endif
else
porta.4=0         'diğer koşul için de aynı durum.
porta.5=1
endif
endif

goto ana


kesme:
disable
intcon=0
if pir2.5=1 then         'kesme bayrağı işaretli ise
    tm.byte0=tmr1l     'timer1 sayacını tm değişkenine yüklüyoruz
    tm.byte1=tmr1h
    tmr1l=0                  'sonra timer1 sayacını yeni frekans için sıfırlıyoruz
    tmr1h=0
    bay=1                   'ana programda değerlendirmek üzere bayrak işaretledik.
pir2.5=0                   ' tekarar kesmeye girebilsin diye kesme bayrağını sildik.
endif
intcon=%11000000
enable
return

MB_77

#38
bu mesaj tarafımdan silinmiştir.

Oracle1

hocam gerçekten benim için çok değerli bilgiler verdin. Aklıma takılan bir iki soru daha var bu sinus değilde kare dalga ise neyi değiştirmeliyiz kodda

MB_77

#40
bu mesaj tarafımdan silinmiştir.

Oracle1

#41
eğer ref voltaj 600mV ise bu kısımı mı değiştirmeliyiz
yani örneğin komparator den giren sinyal 600mV sinus dalga ise hangi kısımda bir değişikliğe gidilmeli

fvrcon=%11000100    'sabit voltaj kaynağını 1,024v olarak ayarladık. datasheet

MB_77

#42
bu mesaj tarafımdan silinmiştir.

MB_77

#43
bu mesaj tarafımdan silinmiştir.

Oracle1

bu 16f1827 yerine başka hangi işlemciyi kullanabiliriz.

Powered by EzPortal