avatar_mustafa

encoder kullanımı

Başlatan mustafa, 26 Mayıs 2012, 11:21:42

ete

Önerebileceğim bir encoder yok bence hepsi aynı.
Ete

elektro77

Merhabalar
rotary encoder larda dönüş yönünü belirleyen 90 derecelik faz farkı olayını mantığımda bir türlü kavrayamıyorum.
Yardımcı olurmusunuz acaba. Nasıl bir yerleştirmeyle veya yazılımla veya opampla, dönüş yönünü lojik olarak anlayabilirim.
Zaten gerçek hayattada yön bulma özürlüyümdür. İlgisi olsa gerek. :(
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Tek yolu üst üste iki farklı okuma almanız gerek. Bunlardan ilkine eski ikinciye yeni derseniz.
Eskinin A biti ile Yeninin B bitini XOR yaptığınız zaman size yönü 1 veya sıfır olarak verir. 1 ise saat yönünde (mesela) sıfır ise saatin tersi yönde döndüğünü düşünebilirsiniz.
Okuma değerlerine bakacak olursanız Saat yönünde  %00 %01 %11  %10 , saatin tersi yönünde ise %00 %10 %11 %01 şeklinde değer verir. Saat yönünde deneme yaparsak;
- ilk okuma     %00 olsun
İkinci okuma   %01 olsun
Yön= 0 XOR 0 şeklinde olacaktır . Dikkat edilirse bu yönde belirtilen bitler daima 1 xor 1 veya 0 xor 0 şeklinde olmakta olup sonuç sıfırdır.
Saatin tersi yönünde ise 0 xor 1 veya 1 xor 0 şeklinde olur ve sonuç daima 1 dir.

Ete

elektro77

#18
pic basic örnek bir uygulama gösterebilirmisiniz hocam. (255 e kadar sayacak şekilde. yani 8 bit) parantezz içinde yazdığımın anlamınıda pek bildiğimi söyleyemem ama aydınlatırsınız diye düşündüm.
Yani birinci sayfadaki yazınızı biraz daha ayrıntılayabilir misiniz.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Diyelimki encoder A ve B çıkışlaro PORTB.0 ve B.1 pinlerine bağlı,
Yapılması gereken şeyler sırası ile şöyle;
- Önce A ve B encoder pinlerini oku. Buna Eski de
- Sonra aynı pinleri yeniden oku ve ESKI den farklı bir konum yakalayıncaya kadar devam et.
- Farklı konum yakalayınca eskinin bit 0 ve yeninin bit 1 bitlerini XOR yap yön bitini bul.
- Yön=0 ise sayac değerini bir artır
- Yön=1 ise sayac değerini bir eksilt.
Artırma ve eksiltme işlemlerinde tercihi değiştirebilirsiniz. Yön=1 olunca artır ve Yön=0 olunca eksiltme yapılabilir.
Aşağıda örnek kod veriyorum. Bu bir alt program gibi düşünüldü. Gosub Encoder ile buraya gelinecek ve sonuçta Return ile dönülecektir.

Encoder:
ESKI=PORTB & %00000011
ZAMAN=0
DEVAM:
YENI=PORTB & %00000011 'burada aynı okumayı yeniden yapıyoruz ve ESKI den farklı bir durum elde etmeye çalışıyoruz.
IF YENI=ESKI THEN
   ZAMAN=ZAMAN+1
    IF ZAMAN=100 Then RETURN  '100 defa yapmasına rağmen konum değişmemiş ise encoder dönmüyordur geri git.
    GOTO DEVAM
ENDIF

YON=Eski.0 ^ Yeni.1  'eski nin sıfır nolu biti ile yeninin 1 nolu bitini XOR yapıyoruz.
IF YON=0 then  'sonuç sıfır ise
  SAYI=SAYI+1
  IF SAYI=0 THEN SAYI=255
ELSE  'sonuç 1 ise
  SAYI=SAYI-1
  IF SAYI=255 THEN SAYI=0
ENDIF
RETURN


Ete

elektro77

#20
Teşekkür ederim

alt program kısmını biraz karıştırdım ama
Alt program deyimiyle şunumu kastettiniz:
Bir motorumuz ve bu  motoru hareketlendirmek için Anahtarlama elemanlarımız var ve her enkoder sinyalinde lojik bilgisi alıp bir çıkış ucundan pals gönderip konum mu değiştiriyor gibi.

Veya sizin güç kaynağındaki ayar kısmına sinyal gönderip voltajımı değiştiriyor gibi.

Veyahut ta
GOSUB ENCODER
IF SAYI=100 THEN
HİGH PORTB.1 GİBİMİ
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Program yazarken bazen aynı şeyleri sık sık yapmak gerekir. Encoder okuma gibi.
Her seferinde aynı kodu yeniden yazmak yerine programın altına bir kere yazıp başına bir etiket ismi koyar ve en altınada bir RETURN koyarız. Böylece ana programın neresinde olursak olalum GOSUB Etiketadı dedikmi program o altprograma gider işini yapar ve RETURN görünce ilk ayrıldığı noktaya geri döner. Çünki GOSUB görünce bulunduğu adresi STACK'a yazar. O adrese gider ve RETURN görünce stack 'a yazdığı adresi geri alıp aynı adrese geri döner.
Bu sisteme alt program sistemi denir.
Senin açıklamanda GOSUB ENCODER ile başlayan kısım buna uyuyor işte.

Ete

elektro77

#22
bir robot kol düşünelim: bu robol kolu manuel olarak istediğimiz bir işi yapacak şekilde beş veya 10 konumda encoderden gelen bilgiyi bir hafızaya kaydedip bu hafıza için bir buton belirleyip bu butona basıncada önceden konumlandırdığımız yerlere gitmesini örneğin sabitlenmiş bir bardağı tutma işlemi gibi.
sağlayabilirmiyiz . x ve y gibi iki ayrı kordinatta sabitlenmiş encoderlerden gelen bilgileri bir hafızaya kaydetme işlemi mantıken nasıl yapılır.
                  Bunun en güzel örneği gösteri sektöründe kullanılan Movinghead robotlar olabilir mesela.
bir ışık kontrol mixeri var ve bu ışık kontrol mixerinin türüne göre 12 ila 48 step eklenebiliyor ve bir hafızada tutulup istenildiğinde bu ışıkları önceden belirlenmiş bu steplere getirebiliyor.Robota bir cismin çarpması gibi dışardan bir etki olduğundada o an hangi konumdaysa geri yerine geliyor
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Hareketin tek bir encodere bağlı olacağını sanmıyorum. Genelde birden fazla motor ve encoder olmalı devrede, bu tür işleri zamana bağlı olarak yapmak lazım . Bir hareketin kayıt edilmesinde hareketin hızı, yönü ve nekadr süre o hız ve yönde hareket ettiği kayda alınmalıdır. Olayı basite indirgeyerek düşünmeyide basitleştirebilirsin. İnsan kolundan örnek verecek olursak, omuz msfsalını hareket ettirecek bir motor, dirseği açıp kapayan bir motor ve bileği hareket ettiren başka bir motor şeklinde düşünebiliriz. Kolun bir hareketinde bu üç motor etkili olacaktır. Bu işe parmakları katmadık henüz.
Sonuçta bu üç motorun hız, yön ve süre bilgilerini kayıt ederek aynı hareketi defalarca yaptırmak mümkün olabilir. Yön denilen şey aslında üç motorun pozisyon bilgisi şeklinde de değerlendirilebilir.
Sonuçta teorik olarak kolay ancak uygulaması zor olan bir iş gibi gözüküyor.

Ete

Powered by EzPortal