Motor Devir Sayacı

Başlatan barishlee, 30 Haziran 2005, 15:51:46

barishlee

Merhaba;

Toplu mouseları bilmeyen azdır. İçlerinde üzerinde yarıklar açılmış yuvarlak bir tekerlek vadır. bu tekerlek infraled ile fototransistor arasında dönünce bir nevi clock darbesi elde edilir.
ben bu tekerleği söktüm ve bir motorun miline bağladım.ve motorun 1 saniye attığı devri bulmaya çalıştım.Mantık olarak şöyle düşündüm;
1 saniye içerisinde gelen clock sinyallerini bir değişkene atayıp 1 sn sonunda bu değişkeni LCD ye yazdırayım. Ama gelin görün ki sanırım komutlarında ms cinsinden bir zamanı olduğu için 1 snlik döngüyü sağlayamadım. yaptığım şey for..next döngüsü içerisinde portb.4 her 1 oldugunda t değişkenini 1 arttır, 1 sn sonunda yazdır ve t yi sıfırla.
Aslında bu bir nevi frekans metre mantığıya çalışacak sanırım. ama bana max 7000 devir olsa yeterli.
eğer fikir verebilirseniz çok sevinirim.

asahin11

Selam barishlee,

Bence bir timer için ve bir de PORTA.4 için bir kesme alt pogramı oluştur.Bu alt programların çalışmasıda şöyle olsun : Timer 1sn lik gecikmeyi sağlasın ve PA4 ise ucunda 1 olduğu sürece kesme meydana gelsin ve bu kesme oluştukça da alt programında bir değişken 1 artsın. Böylece 1sn sonunda ne kadarlık devir sayısı elde ettiğin ortaya çıkar. Bol şanslar...

barishlee

asahin11

timer demek istediğin for...next mi?

teknisyen

yüksek devirde kullanacaksan enkoder kullan bunla ilgili sorularına en iyi cevap verecek kişiler plc sistemlerle ugraşan arkadaşlar olabilir
mesela aster hocaya bu işin üstadlarından ona sor

asahin11

Alıntı yapılan: "barishlee"
timer demek istediğin for...next mi?

PIC içinde sayıcı olarak kullanabileceğin timer yazmaçları bulunmaktadır (16F877 de 2 tane var). Bunları kullanarak istediğin kadar gecikme sağlayabilirsin bunun içinde makine dili bilmen gerekiyor. Pic Basic ,sanırım sen bunu kullanıyorsun, gibi programlama dillerinde for... next komutu ile bir zamanlayıcı yapabilirsin ama 1sn lik bir zamanı tam olarak ayarlanabilinirmi o kadarını bilmiyorum...

barishlee

Diyorum ki;
bir değişkene bir rakam atayayım, atıyorum 60.
ve 60 tan geriye doğru saydırayım her seferinde sonuç 0 mı değil mi diye karşılaştırayım.
0 ise devam et gibi sinden birşey yapayım.
bu geri sayış süresince ra4 e bağlı giriş 1 mi sıfırmı diye baktırayım, her bir olduğunda değişkenlerden birini arttırayım.
1 sn lik süre sonunda sonucu lcd ye yazdırayım.
nasıl? olur mu sizce?

asahin11

Evet düşündüğün mantık doğru ama for... next döngüsü için 60 değeri 1sn elde etmek için çok çok düşük bir sayı.

ftsahin

@barishlee,
PicBasic kullanıyorsan frekans ölçme komutlarıyla bu işi çok basit bir şekilde halledebilirsin. Bu komutun tek kısıtlayıcı tarafı ölçülecek zaman süresinin  önceden belirtilmesidir.  Sen zaten 1 sn'de ölçmek istediğine göre sorun yok demektir.

Örnek kod şu şekilde olabilir.

var frekans word

basla
count portb.0,1000,frekans ' 1000 ms boyunce portb.0 ucuna gelen 'darbeleri sayar ve frekans değişkenine atar.
lcdout $fe,2,"Frekans = ",#frekans," Hz   "
pause 10
goto basla