avatar_mustafa

endüktif sensör ile hız ölçümü

Başlatan mustafa, 07 Ağustos 2012, 19:51:26

mustafa

Merhaba arkadaşlar ;
İndüktif sensör ile hız ölçümü yapmaya çalışıyorum.Bir dairede 3 adet metal var ve ben bu metalleri sensöre algılatıyorum oradan da X=VxT =>2 x pi x  r=VxT gibi bir bağıntı kullanarak hızı ölçmeye çalışıyorum. Ancak yazılımda mantığı sanırım biraz ters kurdum işin içinden çıkamıyorum. timer 0 ı 10 ms de bir kesme oluşturacak şekilde kurdum ve ilk metal algılandıktan sonra timer0 ı çalıştırıp buradan 3 metal algılanıncaya kadar olan kesmeleri sayıp oradan da zaman ı bulmaya çalışıyorum.dairenin de çevresi belli olduğunda buradan hıza ulaşabileceğimi düşündüm ama işin içinden çıkamadım.Programı ve deneme amacıyla isiste kurduğum devreyi ekte veriyorum arkadaşlar. Yardımcı olursanız sevinirim.İyi akşamlar.

Mucit23

#1
mantığın kısmende  olsa yanlış. Yapman gereken şöyle
Timer 1 sayicisini aktif et,daha sonra timer1 in harici clock girişine kapasitif  sensoru  bağla. kapasitif  sensorden  her sinyal geldiğinde timer1 değeri 1 artsın
Son olarak timer0 kesmesini kur ve her 1 saniyede veya her 0.5sn de kesme oluşsun. her kesme olustugundada kesme alt programında timer1 değerini oku ve kesmeden çıkarken timer1 sayicisini sifirla. Daha sonra okudugun timer1 timer1 degerine göre hızı hesaplarsin .

sende bu şekilde yaparsan daha verim alırsın.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Ben olsam şöyle düşünürdüm. 3 adet sensörüm var. Tur başına 3 puls verirler.
TMR0 veya TMR0 sayaçlarını dışarından giriş pinlerine sensörlerin çıkışlarını bağlardım. 3 sensör çıkışını 1N4148 den geçirerek işlemcinin TMR giriş pinine girerim. Böylece her sensör bir adet puls saydırır. Sonra 1000 ms zaman tutarım tutmadan önce sayacı sıfırlarım ve zaman tuttuktan sonra sayaçtan gelen puls sayısını 3e  bölerek tur sayısını bulurum. Bu 1 sn deki tur sayısı olacaktır. Tuttuğumuz zaman 1000 ms=1sn idi. Sonradan ne istersen artık hesaplayabilirsin.
Bu yöntemle tabiiki dönüş hızını bulabilirsin. Başka ne tür bir hız hesaplamak istiyor isen onuda belirt ona göre fikir yürütelim.

Ete

mustafa

Erol bey söylediğiniz çok mantıklı .Zaten benim yukarıda için içinden çıkamamamın sebebi timer ı 10 ms de bir tetikleyince , 2 rb0 kesmesi arasında geçen süreyi anlamlı bir şekilde bulamamam. Anlamlı bir şekilde olmadığı için örneğin 1 sn şeklinde , hıza ulaşamıyordum.Sizin söylediğiniz sistemde şöyle bir sorunum var o da timerlar konusundaki eksikliğimden kaynaklanıyor. yani timer 0 ı aynı anda hem bir sn süre tutacak şekilde hemde dışarıdan gelen pulsleri sayacak şekilde nasıl ayarlarım bunu bilmiyorum.Bunları ayrı ayrı yaparım ama 2 sini nasıl birleştiririm bilmiyorum. Onun dışında benim ölçüm alacağım dairenin üzerine 3 tane metal vida yerleştirmişler aralıkları eşit olacak şekilde yani her 360 derecelik dönüşte 3 puls alıyorum. Eğer pulslar arasındaki süreyi ölçmeden , bir saniyedeki pulsı sayarsam sistem çok hassas olmayacak kanımca. Yani örneğin çevre 60 cm diyelim. atıyorum ben 1 sn zaman tuttum ve bu arada çember 3,75 tur döndü diyelim. Bu durumda benim sistem onu 3 tur döndü olarak algılayacak yani daire toplam 75 cm dönmüş olacak ama ben tam o an bilgisayardan seri port ile ölçüm sonucunu istesem devre bana 60 cm döndü olarak gösterecek. Ama aslında 75 cm döndü. Bu durumda tam hassasşyetş sağlamak için 3 tane puls ın kaç sn de yada ms de geldiğini bilirsek eğer buradan kesin hız a ulaşmış oluruz. Yada  sadece 2 puls arası zamanı ölçsek bu durumda da 20 cm yi kaç sn de gittiğini bulmuş oluruz oradan da hıza gidebiliriz. Ancak işte o ms yi tam olarak hesaplayamıyorum :) aslında ne yapılması gerektiğini biliyorum ama timerlar konusundaki eksikliğim nedeni ile nasıl yapacağım konusunu tam şekillendiremiyorum. Timerlara da baya çalıştım ama çıkamadım işin içinden malesef.

ete

Zamanı pause 1000 diyerek kolaylıkla tutabilirsin. Pause komutu programı 1000 ms bekletirken harici timer giriside gelen pulslari sayar.
Aslinda isinize yarayacak bir projem var sitede.
Frekansmetre projesini yukleyin program tamda istediginiz isleri yapiyor. Tmr1 harici giristen puls sayarken program hassas zaman tutuyor
Ete

KAZIMUGUR

Alıntı yapılan: mustafa - 08 Ağustos 2012, 00:11:49
...puls arası zaman...  ms yi tam olarak ...

Capture modülünü işini daha kolay çözer.

Dairenin tam pozisyonu hassas ve önemli ise , 3 tane çivi ve "zaman" ile olmaz , istediğin kadar derecede puls üretebilen bir encoder kullanmalısın.

mustafa

Merhaba arkadaşlar ;
Daha önce hız bilgisini encoder ile alıyordum .Aslında gayet de iyi iş görüyordu. Ancak şu an bu cihazı koyacağım yerde encoder kullanılması cok zoryani mekanik olarak çok işçilik gerektiriyor.Bu da zaman kaybı. O yüzden endüktif sensör kullanmayı tercih ettim. Bu arada hız bilgisini elde etmek için count komutu ile pulse saydırıyorum o şekilde hız ölçmeye karar verdim. Bunun yanında size bir sorum olacak. Bu basic de float veya long olarak işlem yapamamak özellikle analog dijital işlemlerdeki hassasiyeti bence düşürüyor. Çünkü virgülden sonra bütün basamakları kullanıp işlem yapamıyoruz. Bu  yüzden yavaş yavaş proton a geçmeye karar verdim. Siz ne dersiniz bu konuda.

ete


Powered by EzPortal