Devir sayısını sağlıklı ölçemiyorum?

Başlatan futureng, 31 Ocak 2009, 17:58:52

futureng

Elimdeki motora bağlı tekerleğin yüzüne ince bir beyaz kağıt yerleştirdim. CNY70 i de tam beyaz kağıdı görecek şekilde yerleştirdim. Amacım devir sayısını ölçüp, canlı olarak LCD ekranda yazdırmak. CNY70 i LM324N ile sürüyorum ve direk PIC e veriyorum.

LM324 den gelen çıkış bacağı pic in portuna girdim. Ve PIC e bacak High olduğu sürece değişkeni bir arttır dedim. Ve LCD ekrandan gözlemeye başladım. Devir sayısı düzgün olarak değişmiyor. Acaba neden kaynaklanır? Motor PIC in sayamayacağı kadar hızlı mı dönüyor?



GimpTR.COM: Hayal Gücünüzün Gerçek Dünyadaki Görünüşü  http://www.gimptr.com

agora_meyhanesi42

Devir var byte

count pin,1000,Devir

Bu komutu denedin mi bu komut bildiğin gibi pic pinine 1 saniye içerisinde gelen sinyali sayar (PicBasic Pro)?
Yüksel Türk ! Senin için yükselmenin hududu yoktur...

mustafa_cmbz

hassas bişey ölçmek istersen timerleri kullan...iyi çalışmalar..

futureng

kullandığım motorlar dakikada 1200 devir civarı.
Devir ölçmede Timer ın çalışma mantığı nasıldır?
dil olarak JAL kullanıyorum
GimpTR.COM: Hayal Gücünüzün Gerçek Dünyadaki Görünüşü  http://www.gimptr.com

mustafa_cmbz

jal bilmiyorum daha önce sitede bu tarz işler yapacan arkadaşlar vardı onların yazılarını araştır...

mantığına gelince ben kendim böyle bir uygulama yapmadığım için tam olarak bilmiyorum...

ama mantığını kısaca bildiğim kadarı ile açıklamak gerekirse pic'in dışarıdan kesme alan picleri varya onları okuyarak ve gelen tetiklere göre sayacı bir arttırarak yapabilirsin diye düşünüyorum...iyi çalışmalar...

timpati

Alıntı yapılan: "futureng"...Motor PIC in sayamayacağı kadar hızlı mı dönüyor?...

motoun dönüş hızı 1200d/d olsa, bu saniyede 20 tura karşılık gelir. tek noktaya beyaz kağıt yerleştirdiğine göre hız ancak 20Hz demektir. sence bu hız PIC veya CNY70 için çok mu yüksektir?

motorun yaydığı parazitlerden devreni korumanını öneririm. bir de PIC'e girmeden önce sensörden gelen darbeleri başka bir aletle ölçersen, sorunun analog mu yoksa sayısal katta mı olduğunu belirleyebilirsin.
why mr. anderson, why ?

serdararikan

cny70 bu tür uygulamalar için sağlıklı bir sensor değil.Gerçi senin kullandığın motorun hızıda düşük ama pic in normal bir I/O sunu kullanarak bu işi yaparsan sağlıklı ölçüm yapamazsın.Bu iş için Timer kullanman lazım.Timer ı counter modunda çalıştırmalısın.8 bit çözünürlük sana yeterse ki yetmez timer0  16 bit yeterse ki yeter:) timer1 i kullanabilirsin.iyi çalışmalar....

elmaalma

Alıntı yapılan: "serdararikan"8 bit çözünürlük sana yeterse ki yetmez timer0  ....

TMR0, TMR1, RB0 bunlardan herhangi birini kullanarak yapabilirsin.

sezgin05

Eğer hazır yapılmışını isterseniz aşağıdaki linkte bulabilirsiniz.Yok kendim yapayım derseniz JAL da TMR1 kesmesiyle 1 sn lik aralıklarda pulse okutun.Tabii motordan gelen gürültüleri iyi söndürmelisiniz..
http://homepages.paradise.net.nz/bhabbott/tacho.html

futureng

devir ölçücü pic devresi, motordan bağımsız, parazitin etkiliyeceğine ihtimal vermiyorum. Tavsiyeler doğrultusunda timer0 ile ölçmeyi deneyeceğim. o da olmazssa sorun sanırım CNY70 in sağlıklı olmamasından kaynaklanacaktır.

Eveet timer0 ile denedim. gayet sağlıklı görülüyor. timer ile işimi çözdüm. Örnek programımı aşağıya yazıyorum. Yalnız elimde 2 motor var. yani 2 adet timer0 kullanacam. Sanıyorum bu durumda 2 adet pic'i sırf devir ölçme için kullanacam değil mi?  bir pic de aynı anda  timer0 ve timer1 i kullanabilirmimyim acaba?

include 16f877_4
include jlib
include hd447804

disable_a_d_functions
option = 0b00100000 -- 1:2 oranında sayma yapacak yani 2 kere high olunca 1 sayılacak
tmr0 = 0

var byte m1
m1 = 0

forever loop

 m1 = tmr0 -- sayımdeğeri m1 değişkenine aktarılacak
 hd44780_line1
 print_decimal_3 ( hd44780, m1 , "0" ) -- LCD ekranın 1.satırına yazacak
 
end loop
GimpTR.COM: Hayal Gücünüzün Gerçek Dünyadaki Görünüşü  http://www.gimptr.com

agora_meyhanesi42

Arkadaşlar count komutu neden kullanılamıyor anlamıyorum. Ben count komutu ile frekans ölçebiliyorum şebekede oluşan 50 hzi yani saniyede 50 kere titreşen bir sinyali birebir ölçüyorum yeterince hassas değilmi ?
Yüksel Türk ! Senin için yükselmenin hududu yoktur...

alayli

Alıntı yapılan: "futureng"...........Yalnız elimde 2 motor var. yani 2 adet timer0 kullanacam. Sanıyorum bu durumda 2 adet pic'i sırf devir ölçme için kullanacam değil mi?  bir pic de aynı anda  timer0 ve timer1 i kullanabilirmimyim acaba?

Aynı anda tmr0 ve tmr1'i kullanabilirsin ama her ikisine de aynı anda interrupt kullanamazsın. (En azından 12 ve 16 serisi PIC'ler için) Benim farklı bir tavsiyem olacak. Tek tmr kullanıp motorlardan gelen pals bilgisini anahtarlaman... CD4066 gibi bir elektronik switc ile veya transistörlü "ve kapısı" oluşturarak birim zamanın yarısında bir motoru, diğer yarısında diğer motoru oku. Mesela şu an 1 sn ölçüm yapıp 1 motorun devrini okuduğunu varsayalım. Okuma süreni yarıya düşürüp 500ms bir motoru, diğer 500ms'de de diğer motoru oku. Örnekleme süresi olarak 500ms çok bile... Yalnız çözünürlüğü artırmak için bahsettiğin tekerleğin üzerine uygun açıyla daha fazla beyaz kağıt yapıştır. Örneğin 90 derece açıyla dört adet kağıt yerleştirirsen çeyrek turu sayma imkanın olur...
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

futureng

hmm. mantıklı evet.
tmr0 için pic' in A4 portu kullanılıyor du. 2 motordan gelen devir sinyalini aynı portta senkronize biçimde nasıl anahtarlayabilirim? Yani pic'e Gelen sinyalin Motor1 e mi Yoksa Motor2 ye mi ait olduğunu nasıl ayırt ettirecez.
GimpTR.COM: Hayal Gücünüzün Gerçek Dünyadaki Görünüşü  http://www.gimptr.com

alayli

Opamp çıkışında motor palslerin "1" olarak mı, "0" olarak mı geliyor belirtirsen basit bir devre çözümü sunabilirim...
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

alayli

Aşağıdaki basit yapı işini görür. 3 transistörlü bu basit yapı ile PIC'te çıkış olarak ayarlı bir pin kullanırsan pinin lojik durumuna göre gelen palsleri okuma girişine yönlendirebilirsin. Aşağıdaki hali ile pozitif palsleri okursun. Negatif pals okumak için D1 ve D2 diyotlarının katot ve anotlarını ters çevirip, R6 direncini +5V'a bağlaman yeterli...

Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)