pc ile encoder okuma nasıl yapılır

Başlatan klax, 27 Aralık 2008, 21:13:51

klax

LPT portonu rotary encoder baglayarak posizyon okumak istiyorum.vb ,c veya dephi herhangi bir dilde yazılmıs kaynak kod arıyorum.
TB2EOS

ete

Aslında bekledim biri leri buraya hazır bir kod koysun belki işine daha fazla yarayabilir diye. Ancak beklediğim gelmeyince sana açıklama tarzında bir şeyler vereyim istedim. Forumda daha önce bu açıklamaları başka birileri içinde vermiştim. Linki şu anda bilmiyorum.

Önce encoder hakkında basit bir iki bilgi verdikten sonra bu işin nasıl yapılacağını açıklayayım.

Encoder tur başına pals üreten bir alet. Aynı zamanda dönüş yönünüde tespit edebilmek için A ve B gibi bir birinden 90 derece faz farklı çıkışları bulunmaktadır.  Bu çıkışlar izlenerek dönüş yönü tespit edilir ve A veya B kullanılarakda pals artırımı yada eksiltmesi (dönüş yönüne göre) yapılır.

Encoder bir yöne çevrildiği zaman şu çıkışları vermektedir.
00 01 11 10 00 01 11 10 00 , Ters yöne döndürüldüğü zaman ise bu veriler tersten gelir. Yani
00 10 11 01 00 10 11 01 00 şeklinde.
Şimdi gelelim okuma ve değerlendirme işinin nasıl yapıldığına.

Öncelikle A ve B çıkışı LPT portunda giriş olarak çalışan iki adet pine bağlanacaktır.
Sonra uygun şekilde bu pinleri okuyup ESKI isimli değişkene aktaracaksın.
Hemen ardından encoderin dönüp dönmediğini anlamak için yeni bir okuma daha yapıp bunuda YENI isimli değişkene vereceksin.
ESKI=YENI ise encoder henüz dönmemiş demektir.
Bu nedenle yeniden bir YENI değeri okunması gerekir taaki YENI ESKI ile farklı oluncaya kadar.
Tabiiki encoderin hiç dönmeme ihtimalini de düşünerek bu okumalar arasında belirli bir sayac çalıştırıp sayacın ulaştığı belirli bir rakamda encoder okuma alt programından çıkmak gerekir.
Diyelimki ESKI ile YENI bir birinden farklı hale geldi. Örnekle açıklamak gerekir ise;
ESKI=00 idi YENI=01 oldu.
Şimdi yön tayini yapmamız gerek. Bu iş için ESKI nin 1. biti ile YENI nin 2. biti XOR yapılır. YON=0 XOR 1=1 dir Bitler farklı olursa yani birisi 0 diğeri 1 olursa sonuç daima 1 dir. Bitler bir virinin aynısı ise sonuç daima sıfır olur.
Bu durumda encoder saat yönünde dönüyor diyebiliriz.
Encoder ters yöne dönmüş olsa idi YENI =10 olacak idi. O zaman YON=0 XOR 0=0 olacak idi.
İşte YON ile elde edilen bit değerine bağlı olarak encoderin saat yönünde veya tersi yönde döndüğünü kolaylıkla anlayabiliyoruz.

Şayet saat yönünde dönüyor ise Sayı=sayı+1
Şayet tersi yönde dönüyor ise Sayı=Sayı-1
şeklinde de gelen palslar saydırılır.

Bu açıkladıklarıma ait kodları yazmak sana düşüyor artık.
Kolay Gelsin
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

KAZIMUGUR

Alıntı yapılan: "ete"... birileri içinde vermiştim. Linki şu anda bilmiyorum.
Ete

Birileri ben olabilirmiyim dedim...
Aslında pic değilde pc denildiği için başka şeylerde konu olurmu diye beklemiştim.

https://www.picproje.org/index.php/topic,18878

ete

Sanal tabir kullandığım için kusura bakma. Gerçekten bilgi verdiğimi hatırlıyordum ancak kimin için verdiğimi hatırlamıyordum.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

forsa1975


forsa1975

afedersiniz bende LPT yi sonradan gördüm! win2000 de bir uygulama yapmıştım port okumayla ilgili. winxp de çalışmadı. portio diye bir dll yukledikten sonra vb de yazılıyordu.

klax

ete encoder calısma seklını bende bılıyorum teşekkür ederim ilgin icin.aradım taradım bulamayınca forumdakı arkadaslarıma bır soram dedım yardımcı olabılırler neticede forum sayfası bılgı paylasma platformudur.
saatler gunler suren aramalarımda nıhayet bır bir link buldum acık kaynak kodlu. bu bılgıyı arkadaslarımla paylasıyorum
buyrun link:
http://bellsouthpwp.net/A/r/Arts%5Fhome%5Fpage/DRO/
TB2EOS