pulsin döngü süresi sorunu-takometre

Başlatan trilian, 25 Nisan 2018, 10:49:29

trilian

basla:
PULSIN portC.1,1,W0
PULSIN portC.1,0,DUS
if w0>0 then
pulstot=w0+dus
pulstot=pulstot/100
olcum=30000/pulstot
olcum=olcum/3
olcum=olcum*12

HSEROUT ["DEGER ",dec olcum ,10,13]
goto basla
end

bu şekilde istediğim sonucu aldım fakat 3 saniyede bir döngü tamamlanıyor
bana anlık lazım 4mhz kristal kullanıyorum 20mhz kristal kullandıgımda düşük frekansları ölçmüyor

magic_gun

hayal etemeden basaramazsınız
u cnt achieve w/out dreamin

ete

Frekans ölçmenin iki yolu vardır. Birisi 1 sn içinde gelen puls adedini sayıp direk frekans bilgisi olarak bu bilgiyi vermek yada 100 ms lik peryot içinde gelen pulsları sayıp enterpolasyonla onu 10 ile çarpıp (1000 ms için) frekans bilgisi olarak vermek veya özellikle düşük frekanslar için frekansın peryodunu ölçerek frekansı hesaplamak. Frekans=1.000.000/peryot (us) formülü ile bulup kullanmaktır.
Anlık bilgi gerekiyor ise peryot (HIGH + LOW süresini) ölçmek en doğrusu olacaktır. Peryot ölçmek için ya timer yada Picin Capture özelliğini kullanmak akıllıca olacaktır. Siteyi araştırın örnekler olması gerekir.

Ete

trilian

nasıl yapacagım konusunda bir örnek varmı araçta rpm ölçeceğim

trilian


İlyas KAYA

Pulsin normalde 65535 count sayar.
siz 10 bile alsanız o 65535 'e kadar sayar ve sonra size sonucu verir.
Eğer siz 500 puls den fazla almayacak iseniz sınırlandırma getirebilirsiniz.

define pulsin_max 500

500 yerine 10 , 200 artık ne lazım ise onu yazabilirsiniz.

Ayrıca pulsin komutu TMR0 modülünü kullanıyor. Kendiniz ayrıca TIMER modülleri ile çalışırsanız mesela TIMER1 TIMER2 gibi, farklı peryotlarda aynı anda sayımlar da yapabilirsiniz.

Araştırma konunuz TIMER modülleri ve TIMER kesmeleri.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

trilian

Alıntı yapılan: İlyas KAYA - 28 Nisan 2018, 12:24:20
Pulsin normalde 65535 count sayar.
siz 10 bile alsanız o 65535 'e kadar sayar ve sonra size sonucu verir.
Eğer siz 500 puls den fazla almayacak iseniz sınırlandırma getirebilirsiniz.

define pulsin_max 500

500 yerine 10 , 200 artık ne lazım ise onu yazabilirsiniz.

Ayrıca pulsin komutu TMR0 modülünü kullanıyor. Kendiniz ayrıca TIMER modülleri ile çalışırsanız mesela TIMER1 TIMER2 gibi, farklı peryotlarda aynı anda sayımlar da yapabilirsiniz.

Araştırma konunuz TIMER modülleri ve TIMER kesmeleri.
teşekkürler deneyeceğim

trilian

define pulsin_max 1 bile denedim değişen birşey olmadı

İlyas KAYA

Osilatör ayarlarınız da bir hata olabilir. Simülasyon da deneyip söylemiyorsunuz dur umarım. 3 saniye sürmesi mantık dışı. Bence başka bir noktada hata var. Programın tamamını görmek gerekir.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Maxim

pulsin komutu ile devir çok kaba bir şekilde okunabilir, araç devri olmaz.
hem yavaştır hem hassas değildir.

1000 devirde 4 silindir bir aracın saniyedeki frekansı 16.666 hz
1100 devirde 18.333 hz
2000 devirde 33.333 hz

trilian

Alıntı yapılan: Maxim - 04 Mayıs 2018, 12:18:01
pulsin komutu ile devir çok kaba bir şekilde okunabilir, araç devri olmaz.
hem yavaştır hem hassas değildir.

1000 devirde 4 silindir bir aracın saniyedeki frekansı 16.666 hz
1100 devirde 18.333 hz
2000 devirde 33.333 hz

paki nasıl hızlı okuruz

trilian

sorun hserout kullanmamdanmış serout2 kullandım döngü hızlandı

İlyas KAYA

Hserout daha yavaş olma ihtimali yok. Tam aksine serout daha yavaş çalışır çünkü yazılmasıdır.

Halen mantık dışı. Soruma cevap vermediniz ; simülasyon da test etmiyorsunuz dur umarım dedim. Çünkü simülasyon da ancak bu tip süre sorunları oluşur.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

mehmet

Birim zamanda çok örnek almalısınız. Bir
turda bir örnek yerine, 10, 20, 100 örnek
almalısınız. O zaman örnekleme zamanını
düşürüp daha hızlı kontrol sağlarsınız.

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

trilian

#14
Alıntı yapılan: İlyas KAYA - 07 Mayıs 2018, 22:03:33
Hserout daha yavaş olma ihtimali yok. Tam aksine serout daha yavaş çalışır çünkü yazılmasıdır.

Halen mantık dışı. Soruma cevap vermediniz ; simülasyon da test etmiyorsunuz dur umarım dedim. Çünkü simülasyon da ancak bu tip süre sorunları oluşur.
hayır devrede test ediyorum
simlatördede devredede test edin göreceksiniz.

Powered by EzPortal